<?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>155055</bug_id>
          
          <creation_ts>2016-03-04 17:08:46 -0800</creation_ts>
          <short_desc>[JSC] Improve codegen of Compare and Test</short_desc>
          <delta_ts>2016-03-06 18:40:14 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1171118</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-03-04 17:08:46 -0800</bug_when>
    <thetext>[JSC] Improve codegen of Compare and Test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171171</commentid>
    <comment_count>1</comment_count>
      <attachid>273070</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-03-05 00:20:40 -0800</bug_when>
    <thetext>Created attachment 273070
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171172</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-05 00:23:19 -0800</bug_when>
    <thetext>Attachment 273070 did not pass style-queue:


ERROR: Source/JavaScriptCore/b3/testb3.cpp:12245:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12246:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12247:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12248:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12249:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12250:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12251:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12252:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12253:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12254:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12255:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 11 in 12 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>1171177</commentid>
    <comment_count>3</comment_count>
      <attachid>273071</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-03-05 00:53:08 -0800</bug_when>
    <thetext>Created attachment 273071
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171178</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-05 00:54:34 -0800</bug_when>
    <thetext>Attachment 273071 did not pass style-queue:


ERROR: Source/JavaScriptCore/b3/testb3.cpp:12245:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12246:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12247:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12248:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12249:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12250:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12251:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12252:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12253:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12254:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12255:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 11 in 14 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>1171179</commentid>
    <comment_count>5</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-03-05 01:02:40 -0800</bug_when>
    <thetext>x86:


                                                  Conf#1                    Conf#2                                      
SunSpider:
   3d-cube                                    4.9518+-0.4155            4.7860+-0.0528          might be 1.0346x faster
   3d-morph                                   5.3521+-0.0735     ?      5.3876+-0.1941        ?
   3d-raytrace                                6.0125+-0.4709            5.6209+-0.0285          might be 1.0697x faster
   access-binary-trees                        2.1999+-0.0816            2.1963+-0.0189        
   access-fannkuch                            6.0559+-0.0868            6.0529+-0.0145        
   access-nbody                               2.7230+-0.1068     ?      2.7435+-0.1645        ?
   access-nsieve                              3.0064+-0.0269     ?      3.0465+-0.0399        ? might be 1.0133x slower
   bitops-3bit-bits-in-byte                   1.1810+-0.0133     ?      1.2173+-0.0569        ? might be 1.0307x slower
   bitops-bits-in-byte                        3.3144+-0.0167     ?      3.3685+-0.0506        ? might be 1.0163x slower
   bitops-bitwise-and                         2.0472+-0.0338     ?      2.0872+-0.0519        ? might be 1.0195x slower
   bitops-nsieve-bits                         3.1018+-0.0758            3.0348+-0.0252          might be 1.0221x faster
   controlflow-recursive                      2.4260+-0.0873            2.3800+-0.0226          might be 1.0193x faster
   crypto-aes                                 4.0973+-0.1232     ?      4.2310+-0.3702        ? might be 1.0326x slower
   crypto-md5                                 2.6005+-0.0378     ?      2.6380+-0.0624        ? might be 1.0144x slower
   crypto-sha1                                2.3734+-0.0480            2.3460+-0.0227          might be 1.0117x faster
   date-format-tofte                          6.9090+-0.0555     ?      6.9279+-0.2651        ?
   date-format-xparb                          4.8919+-0.1997     ?      4.9892+-0.1943        ? might be 1.0199x slower
   math-cordic                                2.9521+-0.0302     ?      2.9824+-0.0627        ? might be 1.0103x slower
   math-partial-sums                          4.9571+-0.1167            4.8466+-0.0273          might be 1.0228x faster
   math-spectral-norm                         2.0627+-0.0833            2.0464+-0.0209        
   regexp-dna                                 6.1785+-0.2961     ?      6.2439+-0.3236        ? might be 1.0106x slower
   string-base64                              4.5036+-0.0657            4.4685+-0.0554        
   string-fasta                               6.0087+-0.1265            5.9536+-0.0913        
   string-tagcloud                            8.1602+-0.0584            8.1128+-0.0405        
   string-unpack-code                        19.0600+-0.4252           18.9983+-0.4531        
   string-validate-input                      4.2969+-0.0817     ?      4.3487+-0.1307        ? might be 1.0120x slower

   &lt;arithmetic&gt;                               4.6701+-0.0344            4.6559+-0.0273          might be 1.0031x faster

                                                  Conf#1                    Conf#2                                      
Octane:
   encrypt                                   0.15836+-0.00175    ?     0.16074+-0.00112       ? might be 1.0150x slower
   decrypt                                   2.84958+-0.01036    !     2.89505+-0.02112       ! definitely 1.0160x slower
   deltablue                        x2       0.14076+-0.00447          0.13712+-0.00129         might be 1.0266x faster
   earley                                    0.28378+-0.00133    ?     0.28543+-0.00253       ?
   boyer                                     4.72956+-0.09435    ?     4.79880+-0.05750       ? might be 1.0146x slower
   navier-stokes                    x2       4.93910+-0.00843    ?     4.96180+-0.01523       ?
   raytrace                         x2       0.89213+-0.00267    ?     0.89387+-0.00362       ?
   richards                         x2       0.08272+-0.00077          0.08262+-0.00085       
   splay                            x2       0.34917+-0.00153          0.34916+-0.00151       
   regexp                           x2      22.58500+-0.15579    ^    21.39319+-0.14520       ^ definitely 1.0557x faster
   pdfjs                            x2      38.89915+-0.37815    ?    39.22654+-0.37765       ?
   mandreel                         x2      42.70744+-0.20596         42.61766+-0.14258       
   gbemu                            x2      24.87460+-0.11441    !    25.23538+-0.23868       ! definitely 1.0145x slower
   closure                                   0.56781+-0.00150          0.56473+-0.00253       
   jquery                                    7.42776+-0.04502          7.42551+-0.04437       
   box2d                            x2       9.38607+-0.03564    ?     9.40558+-0.03076       ?
   zlib                             x2     386.17556+-1.95739    ?   390.07341+-3.43982       ? might be 1.0101x slower
   typescript                       x2     662.63595+-7.64406    ?   666.15288+-5.71330       ?

   &lt;geometric&gt;                               5.25325+-0.01343          5.24862+-0.00740         might be 1.0009x faster

                                                  Conf#1                    Conf#2                                      
Kraken:
   ai-astar                                   97.873+-2.138             94.820+-1.510           might be 1.0322x faster
   audio-beat-detection                       47.509+-0.421      ?      47.670+-0.128         ?
   audio-dft                                  96.878+-0.849      ?      97.349+-0.945         ?
   audio-fft                                  36.337+-0.691             35.799+-0.084           might be 1.0150x faster
   audio-oscillator                           49.379+-1.095             48.263+-0.108           might be 1.0231x faster
   imaging-darkroom                           60.687+-0.942      ?      61.631+-1.600         ? might be 1.0156x slower
   imaging-desaturate                         44.290+-0.121      ?      44.381+-0.155         ?
   imaging-gaussian-blur                      67.730+-1.533      ?      68.986+-1.741         ? might be 1.0185x slower
   json-parse-financial                       37.516+-0.108      ?      37.803+-0.574         ?
   json-stringify-tinderbox                   25.154+-0.299      ^      23.566+-1.125         ^ definitely 1.0674x faster
   stanford-crypto-aes                        39.878+-0.456      ?      40.252+-0.138         ?
   stanford-crypto-ccm                        36.839+-0.960      ?      37.160+-0.867         ?
   stanford-crypto-pbkdf2                    101.213+-0.570            100.777+-0.435         
   stanford-crypto-sha256-iterative           39.004+-0.301             38.719+-0.186         

   &lt;arithmetic&gt;                               55.735+-0.190             55.513+-0.247           might be 1.0040x faster

                                                  Conf#1                    Conf#2                                      
AsmBench:
   bigfib.cpp                               435.2185+-5.8724          432.6396+-2.7153        
   cray.c                                   366.6495+-2.3552          364.4775+-0.9322        
   dry.c                                    466.5560+-39.1096         454.9115+-29.1868         might be 1.0256x faster
   FloatMM.c                                711.5276+-4.7815     ?    718.1357+-2.2435        ?
   gcc-loops.cpp                           3669.7504+-7.4500     ?   3690.3642+-14.9276       ?
   n-body.c                                 813.5631+-3.7418          812.8051+-6.1921        
   Quicksort.c                              396.7163+-3.1319          395.0087+-1.4178        
   stepanov_container.cpp                  3336.1117+-67.9640        3297.1206+-14.4521         might be 1.0118x faster
   Towers.c                                 268.9032+-1.2291     ?    269.7010+-2.1627        ?

   &lt;geometric&gt;                              725.6193+-7.1426          723.0271+-4.6005          might be 1.0036x faster

                                                  Conf#1                    Conf#2                                      
Geomean of preferred means:
   &lt;scaled-result&gt;                           31.5596+-0.1203           31.4694+-0.0740          might be 1.0029x faster</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171180</commentid>
    <comment_count>6</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-03-05 01:04:11 -0800</bug_when>
    <thetext>And here is ARM64. We save a few registers but visibly register pressure was not a huge problem :) 

                                                  Conf#1                    Conf#2                                      
SunSpider:
   3d-cube                                   10.3243+-0.0257           10.2635+-0.0694        
   3d-morph                                   8.4085+-0.1092            8.3218+-0.1203          might be 1.0104x faster
   3d-raytrace                                9.5002+-1.1013     ?      9.5916+-0.7864        ?
   access-binary-trees                        4.2527+-0.2049     ?      4.3150+-0.1448        ? might be 1.0146x slower
   access-fannkuch                           11.4689+-1.0740     ?     12.1995+-1.0038        ? might be 1.0637x slower
   access-nbody                               4.7256+-0.0270     ?      4.7337+-0.0437        ?
   access-nsieve                              3.3900+-0.0972            3.3627+-0.2015        
   bitops-3bit-bits-in-byte                   1.7097+-0.0753     ?      1.7242+-0.0867        ?
   bitops-bits-in-byte                        4.1575+-0.0512     ?      4.1585+-0.0345        ?
   bitops-bitwise-and                         3.2239+-0.1042     ?      3.2352+-0.0187        ?
   bitops-nsieve-bits                         5.8837+-0.0666     ?      5.9077+-0.0390        ?
   controlflow-recursive                      3.3940+-0.0998     ?      3.6182+-0.7075        ? might be 1.0661x slower
   crypto-aes                                 6.4380+-0.2254            6.4365+-0.1517        
   crypto-md5                                 3.9030+-0.0983     ?      3.9640+-0.1467        ? might be 1.0156x slower
   crypto-sha1                                3.7327+-0.1299     ?      3.8057+-0.1504        ? might be 1.0196x slower
   date-format-tofte                         11.3157+-0.0916     ?     11.5099+-0.2129        ? might be 1.0172x slower
   date-format-xparb                          7.3159+-0.0638     ?      7.3850+-0.0515        ?
   math-cordic                                5.4598+-0.0644            5.4094+-0.2284        
   math-partial-sums                         12.0386+-1.2024           11.6752+-0.1541          might be 1.0311x faster
   math-spectral-norm                         3.4418+-0.5164            3.3469+-0.6529          might be 1.0284x faster
   regexp-dna                                 9.7556+-0.1859            9.7205+-0.1759        
   string-base64                              6.4913+-0.0072            6.4834+-0.0277        
   string-fasta                               9.7759+-0.1713     ?      9.8637+-0.5916        ?
   string-tagcloud                           10.8035+-0.0866           10.7655+-0.0469        
   string-unpack-code                        23.1396+-0.0555     ?     23.1617+-0.2357        ?
   string-validate-input                      6.6161+-0.2344            6.4968+-0.2255          might be 1.0184x faster

   &lt;arithmetic&gt;                               7.3333+-0.0453     ?      7.3637+-0.0463        ? might be 1.0041x slower

                                                  Conf#1                    Conf#2                                      
Octane:
   encrypt                                   0.19236+-0.00365          0.18600+-0.00579         might be 1.0342x faster
   decrypt                                   3.66137+-0.00885    ^     3.60235+-0.00692       ^ definitely 1.0164x faster
   deltablue                        x2       0.17275+-0.01057          0.16915+-0.00913         might be 1.0213x faster
   earley                                    0.44862+-0.05620          0.43461+-0.04565         might be 1.0322x faster
   boyer                                    10.05291+-2.77533          9.16307+-2.24909         might be 1.0971x faster
   navier-stokes                    x2       7.16546+-0.01219    ?     7.17074+-0.01713       ?
   raytrace                         x2       1.28420+-0.01694          1.27991+-0.03197       
   richards                         x2       0.11193+-0.00659    ?     0.11460+-0.00094       ? might be 1.0238x slower
   splay                            x2       0.75281+-0.04144          0.75026+-0.04435       
   regexp                           x2      32.72377+-0.78530         32.45107+-0.52304       
   pdfjs                            x2      57.14911+-0.64156    ?    59.04761+-4.98161       ? might be 1.0332x slower
   mandreel                         x2      68.73824+-0.85912         68.45163+-0.87099       
   gbemu                            x2      44.04685+-0.40260    ?    47.41480+-14.53067      ? might be 1.0765x slower
   closure                                   0.64761+-0.02159          0.64240+-0.00639       
   jquery                                    9.53881+-0.03091    ?     9.55679+-0.08651       ?
   box2d                            x2      16.09129+-0.19371         15.93278+-0.26619       
   zlib                             x2     684.53776+-7.48863        678.71967+-20.41057      
   typescript                       x2    1137.11212+-6.00707       1136.12775+-17.69377      

   &lt;geometric&gt;                               8.09176+-0.10935          8.07538+-0.16551         might be 1.0020x faster

                                                  Conf#1                    Conf#2                                      
Kraken:
   ai-astar                                  156.594+-7.098            153.817+-1.086           might be 1.0181x faster
   audio-beat-detection                       58.141+-0.614      ?      58.395+-0.649         ?
   audio-dft                                 139.736+-10.273           134.563+-1.019           might be 1.0384x faster
   audio-fft                                  42.161+-0.707             41.685+-0.057           might be 1.0114x faster
   audio-oscillator                           52.818+-0.481      ?      53.806+-1.285         ? might be 1.0187x slower
   imaging-darkroom                           68.952+-0.042      ?      69.433+-0.934         ?
   imaging-desaturate                         77.510+-0.146      ^      76.866+-0.195         ^ definitely 1.0084x faster
   imaging-gaussian-blur                      96.864+-4.834      ?      98.024+-0.162         ? might be 1.0120x slower
   json-parse-financial                       47.373+-1.127             46.895+-0.065           might be 1.0102x faster
   json-stringify-tinderbox                   27.189+-0.556      ?      27.233+-0.505         ?
   stanford-crypto-aes                        58.289+-0.491             58.042+-2.172         
   stanford-crypto-ccm                        45.964+-1.015      ?      46.307+-2.623         ?
   stanford-crypto-pbkdf2                    141.766+-0.804            140.435+-1.247         
   stanford-crypto-sha256-iterative           51.085+-0.072      !      51.303+-0.131         ! definitely 1.0043x slower

   &lt;arithmetic&gt;                               76.031+-0.989             75.486+-0.254           might be 1.0072x faster

                                                  Conf#1                    Conf#2                                      
AsmBench:
   bigfib.cpp                               688.7177+-41.6818         646.4770+-80.6129         might be 1.0653x faster
   cray.c                                   554.7190+-3.2135          551.2500+-1.4206        
   dry.c                                    465.2328+-13.9236    ?    468.8533+-12.5562       ?
   FloatMM.c                                794.2280+-19.3555    ?    804.7562+-22.0298       ? might be 1.0133x slower
   gcc-loops.cpp                           4660.3900+-8.9334     ^   4625.8010+-7.9105        ^ definitely 1.0075x faster
   n-body.c                                1756.4335+-2.9581     ?   1756.5724+-3.2973        ?
   Quicksort.c                              561.9343+-4.7473          556.9090+-9.0781        
   stepanov_container.cpp                  5519.6120+-10.1877        5504.3962+-18.4030       
   Towers.c                                 277.8829+-3.8248          276.6393+-4.2085        

   &lt;geometric&gt;                              999.4611+-1.0159          991.2871+-10.3108         might be 1.0082x faster

                                                  Conf#1                    Conf#2                                      
Geomean of preferred means:
   &lt;scaled-result&gt;                           46.0809+-0.2310           45.9278+-0.3323          might be 1.0033x faster</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171183</commentid>
    <comment_count>7</comment_count>
      <attachid>273074</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-03-05 01:10:31 -0800</bug_when>
    <thetext>Created attachment 273074
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171185</commentid>
    <comment_count>8</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-03-05 01:11:07 -0800</bug_when>
    <thetext>*** Bug 148536 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171187</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-05 01:12:29 -0800</bug_when>
    <thetext>Attachment 273074 did not pass style-queue:


ERROR: Source/JavaScriptCore/b3/testb3.cpp:12245:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12246:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12247:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12248:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12249:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12250:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12251:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12252:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12253:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12254:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12255:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 11 in 14 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>1171258</commentid>
    <comment_count>10</comment_count>
      <attachid>273074</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-03-05 13:51:49 -0800</bug_when>
    <thetext>Comment on attachment 273074
Patch

Nice!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171495</commentid>
    <comment_count>11</comment_count>
      <attachid>273074</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-06 18:40:10 -0800</bug_when>
    <thetext>Comment on attachment 273074
Patch

Clearing flags on attachment: 273074

Committed r197652: &lt;http://trac.webkit.org/changeset/197652&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171496</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-06 18:40:14 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273070</attachid>
            <date>2016-03-05 00:20:40 -0800</date>
            <delta_ts>2016-03-05 00:53:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155055-20160305002025.patch</filename>
            <type>text/plain</type>
            <size>47852</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk3NjA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
OTdiN2NhODRhZmE4NjI0NGE0YzA5NDM2MTdlNGIzNDM3N2Q2MmFkLi4yMTY3MWVlNTliNjBmZjU4
YjgyOTQyYjhmMjZmNzVmYzc5MTk5MTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5NSBAQAorMjAxNi0wMy0wNCAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KKworICAgICAgICBbSlNDXSBJbXByb3ZlIGNvZGVnZW4gb2YgQ29tcGFyZSBhbmQgVGVz
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MDU1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBpbnRyb2R1Y2VzIGEgZmV3IGltcHJvdmVtZW50cyBvbiBob3cgd2UgbG93ZXIKKyAgICAg
ICAgQ29tcGFyZSBhbmQgVGVzdCB3aXRoIGltbWVkaWF0ZXM6CisgICAgICAgICAgICAtQWRkIGNl
cnRhaW4gSW1tZWRpYXRlIGZvcm1zIG9mIEFSTTY0LgorICAgICAgICAgICAgLVVzZSBDQlovQ0JO
WiB3aGVuIHBvc3NpYmxlIG9uIEFSTTY0LgorICAgICAgICAgICAgLVdoZW4gcG9zc2libGUsIGNv
bnZlcnQgYSBDTVAgaW50byBhIFRTVAorICAgICAgICAgICAgIE9uIHNvbWUgaGFyZHdhcmUsIHdl
IGNhbiBpc3N1ZSBtb3JlIFRTVCBzaW11bHRhbmVvdXNseS4KKworICAgICAgICAgICAgIE9uIHg4
NiwgYW55IFRTVCtKdW1wIGlzIGNhbmRpZGF0ZSBmb3IgbWFjcm8tZnVzaW9uLgorICAgICAgICAg
ICAgIFRoZXkgYXJlIGFsc28gc21hbGxlci4KKyAgICAgICAgICAgICAoc2VjdGlvbnMgMy40LjIu
MiBhbmQgMy41LjEuOSkKKyAgICAgICAgICAgIC1EbyBub3QgbG9hZCB0aGUgbWFzayBpbW1lZGlh
dGUgb2YgYSBUU1QKKyAgICAgICAgICAgICBpZiBpdCBvbmx5IGNvbnRhaW5zIG9uZXMgKG1vc3Rs
eSB1c2VmdWwgZm9yIEFSTTY0CisgICAgICAgICAgICAgc2luY2UgdGhhdCB3b3VsZCBub3QgaGF2
ZSBiZWVuIGEgdmFsaWQgaW1tZWRpYXRlKS4KKworICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlci5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6Y29tcGFyZTMyKToKKyAg
ICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlckFSTTY0Ojptb3ZlQ29uZGl0aW9uYWxseUFmdGVyRmxvYXRpbmdQb2ludENv
bXBhcmUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojptb3ZlRG91YmxlQ29u
ZGl0aW9uYWxseUFmdGVyRmxvYXRpbmdQb2ludENvbXBhcmUpOgorICAgICAgICBUaGlzIGlzIHNv
bWV3aGF0IHVucmVsYXRlZCBidXQgSSBmb3VuZCB0aGF0IG91dCB3aGlsZSB3b3JraW5nCisgICAg
ICAgIG9uIG1vdmVEb3VibGVDb25kaXRpb25hbGx5VGVzdDMyOgorICAgICAgICAgICAgSWYgInRo
ZW5DYXNlIiBhbmQgImRlc3QiIGFyZSBhc3NpZ25lZCB0aGUgc2FtZSByZWdpc3RlcgorICAgICAg
ICAgICAgYnkgdGhlIGFsbG9jYXRvciwgdGhlbiB0aGUgZmlyc3QgKGYpZmNzZWwgd291bGQgb3Zl
cnJpZGUKKyAgICAgICAgICAgIHRoZSAidGhlbkNhc2UiIGFuZCB0aGUgc2Vjb25kIGZjc2VsIHdv
dWxkIGFsd2F5cyBiZSAiZWxzZUNhc2UiLgorCisgICAgICAgIFRoaXMgaXMgY292ZXJlZCBieSB0
ZXN0YjMgYnV0IHdhcyBvbmx5IHVuY292ZXJlZAorICAgICAgICBhZnRlciByZWNlbnQgIk1vdmUi
IHJlbW92YWxzIGluIGxvd2VyaW5nLgorCisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
NjQ6Om1vdmVDb25kaXRpb25hbGx5MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFS
TTY0Ojptb3ZlQ29uZGl0aW9uYWxseTY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJB
Uk02NDo6bW92ZUNvbmRpdGlvbmFsbHlUZXN0MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
YmxlckFSTTY0Ojptb3ZlRG91YmxlQ29uZGl0aW9uYWxseTMyKToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJBUk02NDo6bW92ZURvdWJsZUNvbmRpdGlvbmFsbHk2NCk6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6Om1vdmVEb3VibGVDb25kaXRpb25hbGx5VGVzdDMyKToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6YnJhbmNoMzIpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpicmFuY2g2NCk6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyQVJNNjQ6OmJyYW5jaFRlc3QzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyQVJNNjQ6OnRlc3QzMik6CisgICAgICAgIFRoZSB2ZXJzaW9uIHRha2luZyBhbiBpbW1lZGlh
dGUgd2FzIGd1YXJkZWQgYnkKKyAgICAgICAgKGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9u
WmVybykuIFRoYXQgaXMgb3ZlcnplYWxvdXMsCisgICAgICAgIGFuZCBvbmx5IG5lZWRlZCBmb3Ig
Q0JaL0NCTlouCisKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6YnJhbmNoVGVz
dDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6Y29tcGFyZTMyKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6Y29tcGFyZTY0KToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6Y29tbXV0ZUNvbXBhcmVUb1plcm9JbnRvVGVzdCk6Cisg
ICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmg6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjptb3ZlQ29uZGl0aW9uYWxseTMyKToKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246Om1vdmVDb25kaXRpb25hbGx5VGVzdDMy
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaDMyKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnRlc3QzMik6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpicmFuY2hUZXN0MzIpOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6Y29tcGFyZTMyKToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJYODZDb21tb246OmNvbW11dGVDb21wYXJlVG9aZXJvSW50b1Rlc3QpOgorICAg
ICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlclg4Nl82NDo6Y29tcGFyZTY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJYODZfNjQ6OmJyYW5jaDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZf
NjQ6Om1vdmVDb25kaXRpb25hbGx5NjQpOgorICAgICAgICAqIGIzL0IzTG93ZXJUb0Fpci5jcHA6
CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmNyZWF0ZUdlbmVyaWNDb21wYXJl
KToKKyAgICAgICAgVW5mb3J0dW5hdGVseSB0aGlzIGNhbm5vdCBiZSBhYnN0cmFjdGVkIGJ5IHRo
ZSBNYWNyb0Fzc2VtYmxlci4KKyAgICAgICAgVGhvc2UgaW1tZWRpYXRlcyBhcmUgbm90IHZhbGlk
LCB3ZSBoYXZlIHRvIHBpY2sgdGhlIGJldHRlcgorICAgICAgICBmb3IgcmlnaHQgYXdheS4KKwor
ICAgICAgICAqIGIzL2Fpci9BaXJPcGNvZGUub3Bjb2RlczoKKyAgICAgICAgKiBiMy90ZXN0YjMu
Y3BwOgorICAgICAgICAoSlNDOjpCMzo6aW50NjRPcGVyYW5kcyk6CisgICAgICAgIChKU0M6OkIz
Ojptb2RlbENvbXBhcmUpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdENvbXBhcmVJbXBsKToKKyAg
ICAgICAgKEpTQzo6QjM6OnRlc3RDb21wYXJlKToKKyAgICAgICAgKEpTQzo6QjM6OmIzUG93KToK
KyAgICAgICAgKEpTQzo6QjM6OnRlc3RQb3dEb3VibGVCeUludGVnZXJMb29wKToKKyAgICAgICAg
U29tZSB2ZXJzaW9ucyBvZiBwb3coZG91YmxlLCBpbnQpIGRvIG5vdCByZXR1cm4KKyAgICAgICAg
dGhlIGV4YWN0IHNhbWUgYml0cyBhcyBvdXIgaW50ZWdlciBsb29wLgorICAgICAgICBBZGRlZCBh
IG5ldyB2ZXJzaW9uIHRvIGhhdmUgdGhlIHNhbWUgYmVoYXZpb3IKKyAgICAgICAgYXMgdGhlIEIz
IGxvb3AuCisKKyAgICAgICAgKEpTQzo6QjM6OnJ1bik6CisgICAgICAgICogZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZVBlZXBIb2xlQm9vbGVhbkJyYW5jaCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlSW50MzJD
b21wYXJlKToKKyAgICAgICAgQ29tcGFyaW5nIHRvIGFuIGltbWVkaWF0ZSBpcyBzdXBlciBjb21t
b24uIERvIG5vdCB3YXN0ZQorICAgICAgICBhIHJlZ2lzdGVyIGZvciB0aGF0IQorCiAyMDE2LTAz
LTA0ICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBU
aHJvdyBhd2F5IGNvbXBpbGVkIFJlZ0V4cCBjb2RlIHdoZW4gbmF2aWdhdGluZyB0byBhIG5ldyBw
YWdlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDlmMDBkNDU3ZTUzOGZiNzUwMjE4M2U3MzQ3NjFmM2M3MTFkYzEz
MzUuLjU4OGYxODViODgyOTJlNDE1ODUxYWU5ZTI1NjFlNTY3N2QzNDY4YzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMyBAQAorMjAxNi0wMy0wNCAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWlu
QGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBJbXByb3ZlIGNvZGVnZW4gb2YgQ29tcGFyZSBh
bmQgVGVzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU1MDU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBjc3NqaXQvRnVuY3Rpb25DYWxsLmg6CisgICAgICAgIChXZWJDb3JlOjpGdW5jdGlvbkNhbGw6
OmNhbGxBbmRCcmFuY2hPbkNvbmRpdGlvbik6CisKIDIwMTYtMDMtMDQgIENhcmxvcyBHYXJjaWEg
Q2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFNjcm9sbGJhcnMg
YXJlIGJyb2tlbiBhZ2FpbiB3aXRoIEdUSysgPj0gMy4xOS4xMQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCmluZGV4IDBiMWNjYjdlNzEwMTQ5
NWI1YjZlY2NkOGZmMGM4NDMzZDg4NmUxZGYuLmVmOGI3MWY1MjI2MDNjM2JmZTg5MmVkNjA5OTA1
YzJmNzRkZDFlMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyLmgKQEAgLTExMiw2ICsxMTIsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgTWFj
cm9Bc3NlbWJsZXJCYXNlOjpwb3A7CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJCYXNlOjpqdW1w
OwogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6YnJhbmNoMzI7CisgICAgdXNpbmcgTWFj
cm9Bc3NlbWJsZXJCYXNlOjpjb21wYXJlMzI7CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJCYXNl
Ojptb3ZlOwogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6YWRkMzI7CiAgICAgdXNpbmcg
TWFjcm9Bc3NlbWJsZXJCYXNlOjphbmQzMjsKQEAgLTQwMCw2ICs0MDEsMTEgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29tbXV0ZShjb25kKSwgcmlnaHQsIGxlZnQpOwogICAg
IH0KIAorICAgIHZvaWQgY29tcGFyZTMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgSW1tMzIg
bGVmdCwgUmVnaXN0ZXJJRCByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAg
Y29tcGFyZTMyKGNvbW11dGUoY29uZCksIHJpZ2h0LCBsZWZ0LCBkZXN0KTsKKyAgICB9CisKICAg
ICB2b2lkIGJyYW5jaFRlc3RQdHIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgcmVn
LCBMYWJlbCB0YXJnZXQpCiAgICAgewogICAgICAgICBicmFuY2hUZXN0UHRyKGNvbmQsIHJlZyku
bGlua1RvKHRhcmdldCwgdGhpcyk7CkBAIC0xNjIxLDYgKzE2MjcsMjkgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgbGVmdCwgcmlnaHQuYXNUcnVzdGVkSW1tMzIoKSk7
CiAgICAgfQogCisgICAgdm9pZCBjb21wYXJlMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBS
ZWdpc3RlcklEIGxlZnQsIEltbTMyIHJpZ2h0LCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAg
ICAgICBpZiAoc2hvdWxkQmxpbmQocmlnaHQpKSB7CisgICAgICAgICAgICBpZiAobGVmdCAhPSBk
ZXN0IHx8IGhhdmVTY3JhdGNoUmVnaXN0ZXJGb3JCbGluZGluZygpKSB7CisgICAgICAgICAgICAg
ICAgUmVnaXN0ZXJJRCBibGluZGVkQ29uc3RhbnRSZWcgPSBkZXN0OworICAgICAgICAgICAgICAg
IGlmIChsZWZ0ID09IGRlc3QpCisgICAgICAgICAgICAgICAgICAgIGJsaW5kZWRDb25zdGFudFJl
ZyA9IHNjcmF0Y2hSZWdpc3RlckZvckJsaW5kaW5nKCk7CisgICAgICAgICAgICAgICAgbG9hZFhv
ckJsaW5kZWRDb25zdGFudCh4b3JCbGluZENvbnN0YW50KHJpZ2h0KSwgYmxpbmRlZENvbnN0YW50
UmVnKTsKKyAgICAgICAgICAgICAgICBjb21wYXJlMzIoY29uZCwgbGVmdCwgYmxpbmRlZENvbnN0
YW50UmVnLCBkZXN0KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAvLyBJZiB3ZSBkb24ndCBoYXZlIGEgc2NyYXRjaCByZWdpc3RlciBhdmFpbGFi
bGUgZm9yIHVzZSwgd2UnbGwganVzdAorICAgICAgICAgICAgLy8gcGxhY2UgYSByYW5kb20gbnVt
YmVyIG9mIG5vcHMuCisgICAgICAgICAgICB1aW50MzJfdCBub3BDb3VudCA9IHJhbmRvbSgpICYg
MzsKKyAgICAgICAgICAgIHdoaWxlIChub3BDb3VudC0tKQorICAgICAgICAgICAgICAgIG5vcCgp
OworICAgICAgICAgICAgY29tcGFyZTMyKGNvbmQsIGxlZnQsIHJpZ2h0LmFzVHJ1c3RlZEltbTMy
KCksIGRlc3QpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgY29t
cGFyZTMyKGNvbmQsIGxlZnQsIHJpZ2h0LmFzVHJ1c3RlZEltbTMyKCksIGRlc3QpOworICAgIH0K
KwogICAgIEp1bXAgYnJhbmNoQWRkMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQg
c3JjLCBJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIGlmIChzcmMg
PT0gZGVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJBUk02NC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckFSTTY0LmgKaW5kZXggZjRhYTVjNTNkNDI2ODNmMDkyYTA1NWIyZGM4MzQzN2E5
NGJmNmJmOS4uNDJhYzQwMGZjNjZjZDFkMTM4OGVmNzZhNDg0YTUyM2Y3NzkzNTFmMiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFS
TTY0LmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJBUk02NEFzc2VtYmxlci5oIgogI2lu
Y2x1ZGUgIkFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJh
cy5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAt
MTY4NSwxMiArMTY4NiwxMiBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KICAgICAgICAgaWYgKGNvbmQgPT0gRG91YmxlRXF1YWxPclVub3JkZXJlZCkgewotICAgICAg
ICAgICAgLy8gSWYgdGhlIGNvbXBhcmUgaXMgdW5vcmRlcmVkLCB0aGVuQ2FzZSBpcyBjb3BpZWQg
dG8gZGVzdCBhbmQgdGhlCisgICAgICAgICAgICAvLyBJZiB0aGUgY29tcGFyZSBpcyB1bm9yZGVy
ZWQsIHRoZW5DYXNlIGlzIGNvcGllZCB0byBlbHNlQ2FzZSBhbmQgdGhlCiAgICAgICAgICAgICAv
LyBuZXh0IGNzZWwgaGFzIGFsbCBhcmd1bWVudHMgZXF1YWwgdG8gdGhlbkNhc2UuCiAgICAgICAg
ICAgICAvLyBJZiB0aGUgY29tcGFyZSBpcyBvcmRlcmVkLCBkZXN0IGlzIHVuY2hhbmdlZCBhbmQg
RVEgZGVjaWRlcwogICAgICAgICAgICAgLy8gd2hhdCB2YWx1ZSB0byBzZXQuCi0gICAgICAgICAg
ICBtX2Fzc2VtYmxlci5jc2VsPGRhdGFzaXplPihkZXN0LCB0aGVuQ2FzZSwgZWxzZUNhc2UsIEFS
TTY0QXNzZW1ibGVyOjpDb25kaXRpb25WUyk7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5jc2Vs
PGRhdGFzaXplPihkZXN0LCB0aGVuQ2FzZSwgZGVzdCwgQVJNNjRBc3NlbWJsZXI6OkNvbmRpdGlv
bkVRKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNzZWw8ZGF0YXNpemU+KGVsc2VDYXNlLCB0
aGVuQ2FzZSwgZWxzZUNhc2UsIEFSTTY0QXNzZW1ibGVyOjpDb25kaXRpb25WUyk7CisgICAgICAg
ICAgICBtX2Fzc2VtYmxlci5jc2VsPGRhdGFzaXplPihkZXN0LCB0aGVuQ2FzZSwgZWxzZUNhc2Us
IEFSTTY0QXNzZW1ibGVyOjpDb25kaXRpb25FUSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KICAgICAgICAgbV9hc3NlbWJsZXIuY3NlbDxkYXRhc2l6ZT4oZGVzdCwgdGhlbkNhc2Us
IGVsc2VDYXNlLCBBUk02NENvbmRpdGlvbihjb25kKSk7CkBAIC0xNzA2LDEyICsxNzA3LDEyIEBA
IHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBpZiAoY29u
ZCA9PSBEb3VibGVFcXVhbE9yVW5vcmRlcmVkKSB7Ci0gICAgICAgICAgICAvLyBJZiB0aGUgY29t
cGFyZSBpcyB1bm9yZGVyZWQsIHRoZW5DYXNlIGlzIGNvcGllZCB0byBkZXN0IGFuZCB0aGUKKyAg
ICAgICAgICAgIC8vIElmIHRoZSBjb21wYXJlIGlzIHVub3JkZXJlZCwgdGhlbkNhc2UgaXMgY29w
aWVkIHRvIGVsc2VDYXNlIGFuZCB0aGUKICAgICAgICAgICAgIC8vIG5leHQgY3NlbCBoYXMgYWxs
IGFyZ3VtZW50cyBlcXVhbCB0byB0aGVuQ2FzZS4KICAgICAgICAgICAgIC8vIElmIHRoZSBjb21w
YXJlIGlzIG9yZGVyZWQsIGRlc3QgaXMgdW5jaGFuZ2VkIGFuZCBFUSBkZWNpZGVzCiAgICAgICAg
ICAgICAvLyB3aGF0IHZhbHVlIHRvIHNldC4KLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmZjc2Vs
PGRhdGFzaXplPihkZXN0LCB0aGVuQ2FzZSwgZWxzZUNhc2UsIEFSTTY0QXNzZW1ibGVyOjpDb25k
aXRpb25WUyk7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5mY3NlbDxkYXRhc2l6ZT4oZGVzdCwg
dGhlbkNhc2UsIGRlc3QsIEFSTTY0QXNzZW1ibGVyOjpDb25kaXRpb25FUSk7CisgICAgICAgICAg
ICBtX2Fzc2VtYmxlci5mY3NlbDxkYXRhc2l6ZT4oZWxzZUNhc2UsIHRoZW5DYXNlLCBlbHNlQ2Fz
ZSwgQVJNNjRBc3NlbWJsZXI6OkNvbmRpdGlvblZTKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVy
LmZjc2VsPGRhdGFzaXplPihkZXN0LCB0aGVuQ2FzZSwgZWxzZUNhc2UsIEFSTTY0QXNzZW1ibGVy
OjpDb25kaXRpb25FUSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAg
bV9hc3NlbWJsZXIuZmNzZWw8ZGF0YXNpemU+KGRlc3QsIHRoZW5DYXNlLCBlbHNlQ2FzZSwgQVJN
NjRDb25kaXRpb24oY29uZCkpOwpAQCAtMjAwMyw2ICsyMDA0LDEzIEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgbW92ZUNvbmRpdGlvbmFsbHkzMihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lz
dGVySUQgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0LCBSZWdpc3RlcklEIHRoZW5DYXNlLCBSZWdp
c3RlcklEIGVsc2VDYXNlLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgeworICAgICAgICBpZiAoIXJp
Z2h0Lm1fdmFsdWUpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIHJlc3VsdENvbmRpdGlvbiA9IGNv
bW11dGVDb21wYXJlVG9aZXJvSW50b1Rlc3QoY29uZCkpIHsKKyAgICAgICAgICAgICAgICBtb3Zl
Q29uZGl0aW9uYWxseVRlc3QzMigqcmVzdWx0Q29uZGl0aW9uLCBsZWZ0LCBsZWZ0LCB0aGVuQ2Fz
ZSwgZWxzZUNhc2UsIGRlc3QpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorCiAgICAgICAgIGlmIChpc1VJbnQxMihyaWdodC5tX3ZhbHVlKSkKICAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLmNtcDwzMj4obGVmdCwgVUludDEyKHJpZ2h0Lm1fdmFsdWUp
KTsKICAgICAgICAgZWxzZSBpZiAoaXNVSW50MTIoLXJpZ2h0Lm1fdmFsdWUpKQpAQCAtMjAyNiw2
ICsyMDM0LDI2IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuY3NlbDw2ND4oZGVzdCwg
dGhlbkNhc2UsIGVsc2VDYXNlLCBBUk02NENvbmRpdGlvbihjb25kKSk7CiAgICAgfQogCisgICAg
dm9pZCBtb3ZlQ29uZGl0aW9uYWxseTY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0
ZXJJRCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQsIFJlZ2lzdGVySUQgdGhlbkNhc2UsIFJlZ2lz
dGVySUQgZWxzZUNhc2UsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGlmICghcmln
aHQubV92YWx1ZSkgeworICAgICAgICAgICAgaWYgKGF1dG8gcmVzdWx0Q29uZGl0aW9uID0gY29t
bXV0ZUNvbXBhcmVUb1plcm9JbnRvVGVzdChjb25kKSkgeworICAgICAgICAgICAgICAgIG1vdmVD
b25kaXRpb25hbGx5VGVzdDY0KCpyZXN1bHRDb25kaXRpb24sIGxlZnQsIGxlZnQsIHRoZW5DYXNl
LCBlbHNlQ2FzZSwgZGVzdCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
fQorICAgICAgICB9CisKKyAgICAgICAgaWYgKGlzVUludDEyKHJpZ2h0Lm1fdmFsdWUpKQorICAg
ICAgICAgICAgbV9hc3NlbWJsZXIuY21wPDY0PihsZWZ0LCBVSW50MTIocmlnaHQubV92YWx1ZSkp
OworICAgICAgICBlbHNlIGlmIChpc1VJbnQxMigtcmlnaHQubV92YWx1ZSkpCisgICAgICAgICAg
ICBtX2Fzc2VtYmxlci5jbW48NjQ+KGxlZnQsIFVJbnQxMigtcmlnaHQubV92YWx1ZSkpOworICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1vdmVUb0NhY2hlZFJlZyhyaWdodCwgZGF0YU1lbW9y
eVRlbXBSZWdpc3RlcigpKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNtcDw2ND4obGVmdCwg
ZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgIH0KKyAgICAgICAgbV9hc3NlbWJsZXIuY3NlbDw2
ND4oZGVzdCwgdGhlbkNhc2UsIGVsc2VDYXNlLCBBUk02NENvbmRpdGlvbihjb25kKSk7CisgICAg
fQorCiAgICAgdm9pZCBtb3ZlQ29uZGl0aW9uYWxseVRlc3QzMihSZXN1bHRDb25kaXRpb24gY29u
ZCwgUmVnaXN0ZXJJRCB0ZXN0UmVnLCBSZWdpc3RlcklEIG1hc2ssIFJlZ2lzdGVySUQgc3JjLCBS
ZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci50c3Q8MzI+KHRlc3RS
ZWcsIG1hc2spOwpAQCAtMjAzOCw2ICsyMDY2LDEyIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3Nl
bWJsZXIuY3NlbDwzMj4oZGVzdCwgdGhlbkNhc2UsIGVsc2VDYXNlLCBBUk02NENvbmRpdGlvbihj
b25kKSk7CiAgICAgfQogCisgICAgdm9pZCBtb3ZlQ29uZGl0aW9uYWxseVRlc3QzMihSZXN1bHRD
b25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQsIFJlZ2lz
dGVySUQgdGhlbkNhc2UsIFJlZ2lzdGVySUQgZWxzZUNhc2UsIFJlZ2lzdGVySUQgZGVzdCkKKyAg
ICB7CisgICAgICAgIHRlc3QzMihsZWZ0LCByaWdodCk7CisgICAgICAgIG1fYXNzZW1ibGVyLmNz
ZWw8MzI+KGRlc3QsIHRoZW5DYXNlLCBlbHNlQ2FzZSwgQVJNNjRDb25kaXRpb24oY29uZCkpOwor
ICAgIH0KKwogICAgIHZvaWQgbW92ZUNvbmRpdGlvbmFsbHlUZXN0NjQoUmVzdWx0Q29uZGl0aW9u
IGNvbmQsIFJlZ2lzdGVySUQgdGVzdFJlZywgUmVnaXN0ZXJJRCBtYXNrLCBSZWdpc3RlcklEIHNy
YywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIudHN0PDY0Pih0
ZXN0UmVnLCBtYXNrKTsKQEAgLTIwNTgsNiArMjA5MiwxMyBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IG1vdmVEb3VibGVDb25kaXRpb25hbGx5MzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdp
c3RlcklEIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCwgRlBSZWdpc3RlcklEIHRoZW5DYXNlLCBG
UFJlZ2lzdGVySUQgZWxzZUNhc2UsIEZQUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKKyAgICAgICAg
aWYgKCFyaWdodC5tX3ZhbHVlKSB7CisgICAgICAgICAgICBpZiAoYXV0byByZXN1bHRDb25kaXRp
b24gPSBjb21tdXRlQ29tcGFyZVRvWmVyb0ludG9UZXN0KGNvbmQpKSB7CisgICAgICAgICAgICAg
ICAgbW92ZURvdWJsZUNvbmRpdGlvbmFsbHlUZXN0MzIoKnJlc3VsdENvbmRpdGlvbiwgbGVmdCwg
bGVmdCwgdGhlbkNhc2UsIGVsc2VDYXNlLCBkZXN0KTsKKyAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwogICAgICAgICBpZiAoaXNVSW50MTIocmlnaHQu
bV92YWx1ZSkpCiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5jbXA8MzI+KGxlZnQsIFVJbnQxMihy
aWdodC5tX3ZhbHVlKSk7CiAgICAgICAgIGVsc2UgaWYgKGlzVUludDEyKC1yaWdodC5tX3ZhbHVl
KSkKQEAgLTIwNzcsNiArMjExOCwxMyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIG1vdmVEb3VibGVD
b25kaXRpb25hbGx5NjQoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQs
IFRydXN0ZWRJbW0zMiByaWdodCwgRlBSZWdpc3RlcklEIHRoZW5DYXNlLCBGUFJlZ2lzdGVySUQg
ZWxzZUNhc2UsIEZQUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKKyAgICAgICAgaWYgKCFyaWdodC5t
X3ZhbHVlKSB7CisgICAgICAgICAgICBpZiAoYXV0byByZXN1bHRDb25kaXRpb24gPSBjb21tdXRl
Q29tcGFyZVRvWmVyb0ludG9UZXN0KGNvbmQpKSB7CisgICAgICAgICAgICAgICAgbW92ZURvdWJs
ZUNvbmRpdGlvbmFsbHlUZXN0NjQoKnJlc3VsdENvbmRpdGlvbiwgbGVmdCwgbGVmdCwgdGhlbkNh
c2UsIGVsc2VDYXNlLCBkZXN0KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKwogICAgICAgICBpZiAoaXNVSW50MTIocmlnaHQubV92YWx1ZSkpCiAg
ICAgICAgICAgICBtX2Fzc2VtYmxlci5jbXA8NjQ+KGxlZnQsIFVJbnQxMihyaWdodC5tX3ZhbHVl
KSk7CiAgICAgICAgIGVsc2UgaWYgKGlzVUludDEyKC1yaWdodC5tX3ZhbHVlKSkKQEAgLTIwOTQs
NiArMjE0MiwxMiBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLmZjc2VsPDY0PihkZXN0
LCB0aGVuQ2FzZSwgZWxzZUNhc2UsIEFSTTY0Q29uZGl0aW9uKGNvbmQpKTsKICAgICB9CiAKKyAg
ICB2b2lkIG1vdmVEb3VibGVDb25kaXRpb25hbGx5VGVzdDMyKFJlc3VsdENvbmRpdGlvbiBjb25k
LCBSZWdpc3RlcklEIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCwgRlBSZWdpc3RlcklEIHRoZW5D
YXNlLCBGUFJlZ2lzdGVySUQgZWxzZUNhc2UsIEZQUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAg
ICAgICAgdGVzdDMyKGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgbV9hc3NlbWJsZXIuZmNzZWw8NjQ+
KGRlc3QsIHRoZW5DYXNlLCBlbHNlQ2FzZSwgQVJNNjRDb25kaXRpb24oY29uZCkpOworICAgIH0K
KwogICAgIHZvaWQgbW92ZURvdWJsZUNvbmRpdGlvbmFsbHlUZXN0NjQoUmVzdWx0Q29uZGl0aW9u
IGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgUmVnaXN0ZXJJRCByaWdodCwgRlBSZWdpc3RlcklEIHRo
ZW5DYXNlLCBGUFJlZ2lzdGVySUQgZWxzZUNhc2UsIEZQUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsK
ICAgICAgICAgbV9hc3NlbWJsZXIudHN0PDY0PihsZWZ0LCByaWdodCk7CkBAIC0yMTI2LDYgKzIx
ODAsMTEgQEAgcHVibGljOgogCiAgICAgSnVtcCBicmFuY2gzMihSZWxhdGlvbmFsQ29uZGl0aW9u
IGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0KQogICAgIHsKKyAgICAg
ICAgaWYgKCFyaWdodC5tX3ZhbHVlKSB7CisgICAgICAgICAgICBpZiAoYXV0byByZXN1bHRDb25k
aXRpb24gPSBjb21tdXRlQ29tcGFyZVRvWmVyb0ludG9UZXN0KGNvbmQpKQorICAgICAgICAgICAg
ICAgIHJldHVybiBicmFuY2hUZXN0MzIoKnJlc3VsdENvbmRpdGlvbiwgbGVmdCwgbGVmdCk7Cisg
ICAgICAgIH0KKwogICAgICAgICBpZiAoaXNVSW50MTIocmlnaHQubV92YWx1ZSkpCiAgICAgICAg
ICAgICBtX2Fzc2VtYmxlci5jbXA8MzI+KGxlZnQsIFVJbnQxMihyaWdodC5tX3ZhbHVlKSk7CiAg
ICAgICAgIGVsc2UgaWYgKGlzVUludDEyKC1yaWdodC5tX3ZhbHVlKSkKQEAgLTIxOTEsNiArMjI1
MCwxMSBAQCBwdWJsaWM6CiAKICAgICBKdW1wIGJyYW5jaDY0KFJlbGF0aW9uYWxDb25kaXRpb24g
Y29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQpCiAgICAgeworICAgICAg
ICBpZiAoIXJpZ2h0Lm1fdmFsdWUpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIHJlc3VsdENvbmRp
dGlvbiA9IGNvbW11dGVDb21wYXJlVG9aZXJvSW50b1Rlc3QoY29uZCkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGJyYW5jaFRlc3Q2NCgqcmVzdWx0Q29uZGl0aW9uLCBsZWZ0LCBsZWZ0KTsKKyAg
ICAgICAgfQorCiAgICAgICAgIGlmIChpc1VJbnQxMihyaWdodC5tX3ZhbHVlKSkKICAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLmNtcDw2ND4obGVmdCwgVUludDEyKHJpZ2h0Lm1fdmFsdWUpKTsKICAg
ICAgICAgZWxzZSBpZiAoaXNVSW50MTIoLXJpZ2h0Lm1fdmFsdWUpKQpAQCAtMjIwNSw2ICsyMjY5
LDExIEBAIHB1YmxpYzoKICAgICBKdW1wIGJyYW5jaDY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29u
ZCwgUmVnaXN0ZXJJRCBsZWZ0LCBUcnVzdGVkSW1tNjQgcmlnaHQpCiAgICAgewogICAgICAgICBp
bnRwdHJfdCBpbW1lZGlhdGUgPSByaWdodC5tX3ZhbHVlOworICAgICAgICBpZiAoIWltbWVkaWF0
ZSkgeworICAgICAgICAgICAgaWYgKGF1dG8gcmVzdWx0Q29uZGl0aW9uID0gY29tbXV0ZUNvbXBh
cmVUb1plcm9JbnRvVGVzdChjb25kKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gYnJhbmNoVGVz
dDY0KCpyZXN1bHRDb25kaXRpb24sIGxlZnQsIGxlZnQpOworICAgICAgICB9CisKICAgICAgICAg
aWYgKGlzVUludDEyKGltbWVkaWF0ZSkpCiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5jbXA8NjQ+
KGxlZnQsIFVJbnQxMihzdGF0aWNfY2FzdDxpbnQzMl90PihpbW1lZGlhdGUpKSk7CiAgICAgICAg
IGVsc2UgaWYgKGlzVUludDEyKC1pbW1lZGlhdGUpKQpAQCAtMjI2OSwyNSArMjMzOCwyMiBAQCBw
dWJsaWM6CiAgICAgCiAgICAgSnVtcCBicmFuY2hUZXN0MzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQs
IFJlZ2lzdGVySUQgcmVnLCBSZWdpc3RlcklEIG1hc2spCiAgICAgeworICAgICAgICBpZiAocmVn
ID09IG1hc2sgJiYgKGNvbmQgPT0gWmVybyB8fCBjb25kID09IE5vblplcm8pKQorICAgICAgICAg
ICAgcmV0dXJuIEp1bXAobWFrZUNvbXBhcmVBbmRCcmFuY2g8MzI+KHN0YXRpY19jYXN0PFplcm9D
b25kaXRpb24+KGNvbmQpLCByZWcpKTsKICAgICAgICAgbV9hc3NlbWJsZXIudHN0PDMyPihyZWcs
IG1hc2spOwogICAgICAgICByZXR1cm4gSnVtcChtYWtlQnJhbmNoKGNvbmQpKTsKICAgICB9CiAK
LSAgICB2b2lkIHRlc3QzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCByZWcsIFRy
dXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKKyAgICB2b2lkIHRlc3QzMihSZWdp
c3RlcklEIHJlZywgVHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQogICAgIHsK
ICAgICAgICAgaWYgKG1hc2subV92YWx1ZSA9PSAtMSkKICAgICAgICAgICAgIG1fYXNzZW1ibGVy
LnRzdDwzMj4ocmVnLCByZWcpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGJvb2wgdGVz
dGVkV2l0aEltbWVkaWF0ZSA9IGZhbHNlOwotICAgICAgICAgICAgaWYgKChjb25kID09IFplcm8p
IHx8IChjb25kID09IE5vblplcm8pKSB7Ci0gICAgICAgICAgICAgICAgTG9naWNhbEltbWVkaWF0
ZSBsb2dpY2FsSW1tID0gTG9naWNhbEltbWVkaWF0ZTo6Y3JlYXRlMzIobWFzay5tX3ZhbHVlKTsK
KyAgICAgICAgICAgIExvZ2ljYWxJbW1lZGlhdGUgbG9naWNhbEltbSA9IExvZ2ljYWxJbW1lZGlh
dGU6OmNyZWF0ZTMyKG1hc2subV92YWx1ZSk7CiAKLSAgICAgICAgICAgICAgICBpZiAobG9naWNh
bEltbS5pc1ZhbGlkKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIudHN0PDMy
PihyZWcsIGxvZ2ljYWxJbW0pOwotICAgICAgICAgICAgICAgICAgICB0ZXN0ZWRXaXRoSW1tZWRp
YXRlID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBpZiAoIXRlc3RlZFdpdGhJbW1lZGlhdGUpIHsKKyAgICAgICAgICAgIGlmIChsb2dpY2FsSW1t
LmlzVmFsaWQoKSkKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci50c3Q8MzI+KHJlZywgbG9n
aWNhbEltbSk7CisgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBtb3ZlKG1hc2ss
IGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CiAgICAgICAgICAg
ICAgICAgbV9hc3NlbWJsZXIudHN0PDMyPihyZWcsIGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgICAg
ICAgICAgfQpAQCAtMjMwOCwxMyArMjM3NCwxMCBAQCBwdWJsaWM6CiAgICAgICAgIH0gZWxzZSBp
ZiAoaGFzT25lQml0U2V0KG1hc2subV92YWx1ZSkgJiYgKChjb25kID09IFplcm8pIHx8IChjb25k
ID09IE5vblplcm8pKSkKICAgICAgICAgICAgIHJldHVybiBKdW1wKG1ha2VUZXN0Qml0QW5kQnJh
bmNoKHJlZywgZ2V0TFNCU2V0KG1hc2subV92YWx1ZSksIHN0YXRpY19jYXN0PFplcm9Db25kaXRp
b24+KGNvbmQpKSk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgaWYgKChjb25kID09IFpl
cm8pIHx8IChjb25kID09IE5vblplcm8pKSB7Ci0gICAgICAgICAgICAgICAgTG9naWNhbEltbWVk
aWF0ZSBsb2dpY2FsSW1tID0gTG9naWNhbEltbWVkaWF0ZTo6Y3JlYXRlMzIobWFzay5tX3ZhbHVl
KTsKLQotICAgICAgICAgICAgICAgIGlmIChsb2dpY2FsSW1tLmlzVmFsaWQoKSkgewotICAgICAg
ICAgICAgICAgICAgICBtX2Fzc2VtYmxlci50c3Q8MzI+KHJlZywgbG9naWNhbEltbSk7Ci0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiBKdW1wKG1ha2VCcmFuY2goY29uZCkpOwotICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIExvZ2ljYWxJbW1lZGlhdGUgbG9naWNhbEltbSA9IExvZ2lj
YWxJbW1lZGlhdGU6OmNyZWF0ZTMyKG1hc2subV92YWx1ZSk7CisgICAgICAgICAgICBpZiAobG9n
aWNhbEltbS5pc1ZhbGlkKCkpIHsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci50c3Q8MzI+
KHJlZywgbG9naWNhbEltbSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIEp1bXAobWFrZUJyYW5j
aChjb25kKSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIG1vdmUobWFzaywgZ2V0Q2Fj
aGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKQEAgLTIzMzcsNiArMjQwMCw4
IEBAIHB1YmxpYzoKIAogICAgIEp1bXAgYnJhbmNoVGVzdDY0KFJlc3VsdENvbmRpdGlvbiBjb25k
LCBSZWdpc3RlcklEIHJlZywgUmVnaXN0ZXJJRCBtYXNrKQogICAgIHsKKyAgICAgICAgaWYgKHJl
ZyA9PSBtYXNrICYmIChjb25kID09IFplcm8gfHwgY29uZCA9PSBOb25aZXJvKSkKKyAgICAgICAg
ICAgIHJldHVybiBKdW1wKG1ha2VDb21wYXJlQW5kQnJhbmNoPDY0PihzdGF0aWNfY2FzdDxaZXJv
Q29uZGl0aW9uPihjb25kKSwgcmVnKSk7CiAgICAgICAgIG1fYXNzZW1ibGVyLnRzdDw2ND4ocmVn
LCBtYXNrKTsKICAgICAgICAgcmV0dXJuIEp1bXAobWFrZUJyYW5jaChjb25kKSk7CiAgICAgfQpA
QCAtMjM1MCwxMyArMjQxNSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIH0gZWxzZSBpZiAoaGFzT25l
Qml0U2V0KG1hc2subV92YWx1ZSkgJiYgKChjb25kID09IFplcm8pIHx8IChjb25kID09IE5vblpl
cm8pKSkKICAgICAgICAgICAgIHJldHVybiBKdW1wKG1ha2VUZXN0Qml0QW5kQnJhbmNoKHJlZywg
Z2V0TFNCU2V0KG1hc2subV92YWx1ZSksIHN0YXRpY19jYXN0PFplcm9Db25kaXRpb24+KGNvbmQp
KSk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgaWYgKChjb25kID09IFplcm8pIHx8IChj
b25kID09IE5vblplcm8pKSB7Ci0gICAgICAgICAgICAgICAgTG9naWNhbEltbWVkaWF0ZSBsb2dp
Y2FsSW1tID0gTG9naWNhbEltbWVkaWF0ZTo6Y3JlYXRlNjQobWFzay5tX3ZhbHVlKTsKKyAgICAg
ICAgICAgIExvZ2ljYWxJbW1lZGlhdGUgbG9naWNhbEltbSA9IExvZ2ljYWxJbW1lZGlhdGU6OmNy
ZWF0ZTY0KG1hc2subV92YWx1ZSk7CiAKLSAgICAgICAgICAgICAgICBpZiAobG9naWNhbEltbS5p
c1ZhbGlkKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIudHN0PDY0PihyZWcs
IGxvZ2ljYWxJbW0pOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gSnVtcChtYWtlQnJhbmNo
KGNvbmQpKTsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobG9naWNhbEltbS5p
c1ZhbGlkKCkpIHsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci50c3Q8NjQ+KHJlZywgbG9n
aWNhbEltbSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIEp1bXAobWFrZUJyYW5jaChjb25kKSk7
CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHNpZ25FeHRlbmQzMlRvUHRyKG1hc2ssIGdl
dENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CkBAIC0yNzczLDggKzI4
MzYsMjEgQEAgcHVibGljOgogCiAgICAgdm9pZCBjb21wYXJlMzIoUmVsYXRpb25hbENvbmRpdGlv
biBjb25kLCBSZWdpc3RlcklEIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCwgUmVnaXN0ZXJJRCBk
ZXN0KQogICAgIHsKLSAgICAgICAgbW92ZShyaWdodCwgZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3Rl
cklEQW5kSW52YWxpZGF0ZSgpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuY21wPDMyPihsZWZ0LCBk
YXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgaWYgKCFyaWdodC5tX3ZhbHVlKSB7CisgICAgICAg
ICAgICBpZiAoYXV0byByZXN1bHRDb25kaXRpb24gPSBjb21tdXRlQ29tcGFyZVRvWmVyb0ludG9U
ZXN0KGNvbmQpKSB7CisgICAgICAgICAgICAgICAgdGVzdDMyKCpyZXN1bHRDb25kaXRpb24sIGxl
ZnQsIGxlZnQsIGRlc3QpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorCisgICAgICAgIGlmIChpc1VJbnQxMihyaWdodC5tX3ZhbHVlKSkKKyAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLmNtcDwzMj4obGVmdCwgVUludDEyKHJpZ2h0Lm1fdmFsdWUpKTsK
KyAgICAgICAgZWxzZSBpZiAoaXNVSW50MTIoLXJpZ2h0Lm1fdmFsdWUpKQorICAgICAgICAgICAg
bV9hc3NlbWJsZXIuY21uPDMyPihsZWZ0LCBVSW50MTIoLXJpZ2h0Lm1fdmFsdWUpKTsKKyAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICBtb3ZlKHJpZ2h0LCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lz
dGVySURBbmRJbnZhbGlkYXRlKCkpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuY21wPDMyPihs
ZWZ0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgfQogICAgICAgICBtX2Fzc2VtYmxlci5j
c2V0PDMyPihkZXN0LCBBUk02NENvbmRpdGlvbihjb25kKSk7CiAgICAgfQogCkBAIC0yNzg2LDYg
KzI4NjIsMTMgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgY29tcGFyZTY0KFJlbGF0aW9uYWxD
b25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQsIFJlZ2lz
dGVySUQgZGVzdCkKICAgICB7CisgICAgICAgIGlmICghcmlnaHQubV92YWx1ZSkgeworICAgICAg
ICAgICAgaWYgKGF1dG8gcmVzdWx0Q29uZGl0aW9uID0gY29tbXV0ZUNvbXBhcmVUb1plcm9JbnRv
VGVzdChjb25kKSkgeworICAgICAgICAgICAgICAgIHRlc3Q2NCgqcmVzdWx0Q29uZGl0aW9uLCBs
ZWZ0LCBsZWZ0LCBkZXN0KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKwogICAgICAgICBzaWduRXh0ZW5kMzJUb1B0cihyaWdodCwgZ2V0Q2FjaGVk
RGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKICAgICAgICAgbV9hc3NlbWJsZXIu
Y21wPDY0PihsZWZ0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgbV9hc3NlbWJsZXIuY3Nl
dDwzMj4oZGVzdCwgQVJNNjRDb25kaXRpb24oY29uZCkpOwpAQCAtMjgwNiwxMiArMjg4OSw3IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgdGVzdDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3Rl
cklEIHNyYywgVHJ1c3RlZEltbTMyIG1hc2ssIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAg
ICAgIGlmIChtYXNrLm1fdmFsdWUgPT0gLTEpCi0gICAgICAgICAgICBtX2Fzc2VtYmxlci50c3Q8
MzI+KHNyYywgc3JjKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBzaWduRXh0ZW5kMzJU
b1B0cihtYXNrLCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOwot
ICAgICAgICAgICAgbV9hc3NlbWJsZXIudHN0PDMyPihzcmMsIGRhdGFUZW1wUmVnaXN0ZXIpOwot
ICAgICAgICB9CisgICAgICAgIHRlc3QzMihzcmMsIG1hc2spOwogICAgICAgICBtX2Fzc2VtYmxl
ci5jc2V0PDMyPihkZXN0LCBBUk02NENvbmRpdGlvbihjb25kKSk7CiAgICAgfQogCkBAIC0yOTk0
LDYgKzMwNzIsMjMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UmVsYXRp
b25hbENvbmRpdGlvbj4oQVJNNjRBc3NlbWJsZXI6OmludmVydChzdGF0aWNfY2FzdDxBUk02NEFz
c2VtYmxlcjo6Q29uZGl0aW9uPihjb25kKSkpOwogICAgIH0KIAorICAgIHN0YXRpYyBPcHRpb25h
bDxSZXN1bHRDb25kaXRpb24+IGNvbW11dGVDb21wYXJlVG9aZXJvSW50b1Rlc3QoUmVsYXRpb25h
bENvbmRpdGlvbiBjb25kKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChjb25kKSB7CisgICAgICAg
IGNhc2UgRXF1YWw6CisgICAgICAgICAgICByZXR1cm4gWmVybzsKKyAgICAgICAgY2FzZSBOb3RF
cXVhbDoKKyAgICAgICAgICAgIHJldHVybiBOb25aZXJvOworICAgICAgICBjYXNlIExlc3NUaGFu
OgorICAgICAgICAgICAgcmV0dXJuIFNpZ25lZDsKKyAgICAgICAgY2FzZSBHcmVhdGVyVGhhbk9y
RXF1YWw6CisgICAgICAgICAgICByZXR1cm4gUG9zaXRpdmVPclplcm87CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAg
ICAgICB9CisgICAgfQorCiAgICAgc3RhdGljIEZ1bmN0aW9uUHRyIHJlYWRDYWxsVGFyZ2V0KENv
ZGVMb2NhdGlvbkNhbGwgY2FsbCkKICAgICB7CiAgICAgICAgIHJldHVybiBGdW5jdGlvblB0cihy
ZWludGVycHJldF9jYXN0PHZvaWQoKikoKT4oQVJNNjRBc3NlbWJsZXI6OnJlYWRDYWxsVGFyZ2V0
KGNhbGwuZGF0YUxvY2F0aW9uKCkpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKaW5kZXggM2IwY2U3Nzlk
Nzc0ZGM0NDU3MTdmZjgzYTVkM2U4MTkzNjYzMGQxYS4uNDBlNDhkMDEzMjVlZTUzOWZmNjk3Y2Qz
Yzk3ZGI5MmUzY2EwYjAwZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaApAQCAtMzAsNiArMzAsNyBAQAog
CiAjaW5jbHVkZSAiWDg2QXNzZW1ibGVyLmgiCiAjaW5jbHVkZSAiQWJzdHJhY3RNYWNyb0Fzc2Vt
Ymxlci5oIgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApA
QCAtMTc3OSwxMCArMTc4MCwxNCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIG1vdmVDb25kaXRpb25h
bGx5MzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIFRydXN0ZWRJ
bW0zMiByaWdodCwgUmVnaXN0ZXJJRCB0aGVuQ2FzZSwgUmVnaXN0ZXJJRCBlbHNlQ2FzZSwgUmVn
aXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgaWYgKCgoY29uZCA9PSBFcXVhbCkgfHwgKGNv
bmQgPT0gTm90RXF1YWwpKSAmJiAhcmlnaHQubV92YWx1ZSkKLSAgICAgICAgICAgIG1fYXNzZW1i
bGVyLnRlc3RsX3JyKGxlZnQsIGxlZnQpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2Fz
c2VtYmxlci5jbXBsX2lyKHJpZ2h0Lm1fdmFsdWUsIGxlZnQpOworICAgICAgICBpZiAoIXJpZ2h0
Lm1fdmFsdWUpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIHJlc3VsdENvbmRpdGlvbiA9IGNvbW11
dGVDb21wYXJlVG9aZXJvSW50b1Rlc3QoY29uZCkpIHsKKyAgICAgICAgICAgICAgICBtb3ZlQ29u
ZGl0aW9uYWxseVRlc3QzMigqcmVzdWx0Q29uZGl0aW9uLCBsZWZ0LCBsZWZ0LCB0aGVuQ2FzZSwg
ZWxzZUNhc2UsIGRlc3QpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorCisgICAgICAgIG1fYXNzZW1ibGVyLmNtcGxfaXIocmlnaHQubV92YWx1ZSwg
bGVmdCk7CiAKICAgICAgICAgaWYgKHRoZW5DYXNlICE9IGRlc3QgJiYgZWxzZUNhc2UgIT0gZGVz
dCkgewogICAgICAgICAgICAgbW92ZShlbHNlQ2FzZSwgZGVzdCk7CkBAIC0xODIxLDcgKzE4MjYs
NyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIG1vdmVDb25kaXRpb25hbGx5VGVzdDMyKFJlc3VsdENv
bmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHRlc3RSZWcsIFRydXN0ZWRJbW0zMiBtYXNrLCBSZWdp
c3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgdGVzdDMyKGNvbmQs
IHRlc3RSZWcsIG1hc2spOworICAgICAgICB0ZXN0MzIodGVzdFJlZywgbWFzayk7CiAgICAgICAg
IGNtb3YoeDg2Q29uZGl0aW9uKGNvbmQpLCBzcmMsIGRlc3QpOwogICAgIH0KIApAQCAtMTgzMCw3
ICsxODM1LDcgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQoaXNJbnZlcnRpYmxlKGNvbmQpKTsK
ICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShjb25kICE9IE92ZXJmbG93LCAiVEVTVCBkb2Vz
IG5vdCBzZXQgdGhlIE92ZXJmbG93IEZsYWcuIik7CiAKLSAgICAgICAgdGVzdDMyKGNvbmQsIHRl
c3RSZWcsIG1hc2spOworICAgICAgICB0ZXN0MzIodGVzdFJlZywgbWFzayk7CiAKICAgICAgICAg
aWYgKHRoZW5DYXNlICE9IGRlc3QgJiYgZWxzZUNhc2UgIT0gZGVzdCkgewogICAgICAgICAgICAg
bW92ZShlbHNlQ2FzZSwgZGVzdCk7CkBAIC0xOTYwLDEwICsxOTY1LDEyIEBAIHB1YmxpYzoKIAog
ICAgIEp1bXAgYnJhbmNoMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxl
ZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKICAgICB7Ci0gICAgICAgIGlmICgoKGNvbmQgPT0gRXF1
YWwpIHx8IChjb25kID09IE5vdEVxdWFsKSkgJiYgIXJpZ2h0Lm1fdmFsdWUpCi0gICAgICAgICAg
ICBtX2Fzc2VtYmxlci50ZXN0bF9ycihsZWZ0LCBsZWZ0KTsKLSAgICAgICAgZWxzZQotICAgICAg
ICAgICAgbV9hc3NlbWJsZXIuY21wbF9pcihyaWdodC5tX3ZhbHVlLCBsZWZ0KTsKKyAgICAgICAg
aWYgKCFyaWdodC5tX3ZhbHVlKSB7CisgICAgICAgICAgICBpZiAoYXV0byByZXN1bHRDb25kaXRp
b24gPSBjb21tdXRlQ29tcGFyZVRvWmVyb0ludG9UZXN0KGNvbmQpKQorICAgICAgICAgICAgICAg
IHJldHVybiBicmFuY2hUZXN0MzIoKnJlc3VsdENvbmRpdGlvbiwgbGVmdCwgbGVmdCk7CisgICAg
ICAgIH0KKworICAgICAgICBtX2Fzc2VtYmxlci5jbXBsX2lyKHJpZ2h0Lm1fdmFsdWUsIGxlZnQp
OwogICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qQ0MoeDg2Q29uZGl0aW9uKGNvbmQp
KSk7CiAgICAgfQogICAgIApAQCAtMjAwMiw3ICsyMDA5LDcgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qQ0MoeDg2Q29uZGl0aW9uKGNvbmQpKSk7CiAgICAgfQog
Ci0gICAgdm9pZCB0ZXN0MzIoUmVzdWx0Q29uZGl0aW9uLCBSZWdpc3RlcklEIHJlZywgVHJ1c3Rl
ZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQorICAgIHZvaWQgdGVzdDMyKFJlZ2lzdGVy
SUQgcmVnLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigtMSkpCiAgICAgewogICAg
ICAgICBpZiAobWFzay5tX3ZhbHVlID09IC0xKQogICAgICAgICAgICAgbV9hc3NlbWJsZXIudGVz
dGxfcnIocmVnLCByZWcpOwpAQCAtMjAyMiw3ICsyMDI5LDcgQEAgcHVibGljOgogCiAgICAgSnVt
cCBicmFuY2hUZXN0MzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgcmVnLCBUcnVz
dGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigtMSkpCiAgICAgewotICAgICAgICB0ZXN0MzIo
Y29uZCwgcmVnLCBtYXNrKTsKKyAgICAgICAgdGVzdDMyKHJlZywgbWFzayk7CiAgICAgICAgIHJl
dHVybiBicmFuY2goY29uZCk7CiAgICAgfQogCkBAIC0yMjkwLDEwICsyMjk3LDE0IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgY29tcGFyZTMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0
ZXJJRCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0g
ICAgICAgIGlmICgoKGNvbmQgPT0gRXF1YWwpIHx8IChjb25kID09IE5vdEVxdWFsKSkgJiYgIXJp
Z2h0Lm1fdmFsdWUpCi0gICAgICAgICAgICBtX2Fzc2VtYmxlci50ZXN0bF9ycihsZWZ0LCBsZWZ0
KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9hc3NlbWJsZXIuY21wbF9pcihyaWdodC5t
X3ZhbHVlLCBsZWZ0KTsKKyAgICAgICAgaWYgKCFyaWdodC5tX3ZhbHVlKSB7CisgICAgICAgICAg
ICBpZiAoYXV0byByZXN1bHRDb25kaXRpb24gPSBjb21tdXRlQ29tcGFyZVRvWmVyb0ludG9UZXN0
KGNvbmQpKSB7CisgICAgICAgICAgICAgICAgdGVzdDMyKCpyZXN1bHRDb25kaXRpb24sIGxlZnQs
IGxlZnQsIGRlc3QpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorCisgICAgICAgIG1fYXNzZW1ibGVyLmNtcGxfaXIocmlnaHQubV92YWx1ZSwgbGVm
dCk7CiAgICAgICAgIHNldDMyKHg4NkNvbmRpdGlvbihjb25kKSwgZGVzdCk7CiAgICAgfQogCkBA
IC0yMzIzLDYgKzIzMzQsMTIgQEAgcHVibGljOgogICAgICAgICBzZXQzMih4ODZDb25kaXRpb24o
Y29uZCksIGRlc3QpOwogICAgIH0KIAorICAgIHZvaWQgdGVzdDMyKFJlc3VsdENvbmRpdGlvbiBj
b25kLCBSZWdpc3RlcklEIHJlZywgVHJ1c3RlZEltbTMyIG1hc2ssIFJlZ2lzdGVySUQgZGVzdCkK
KyAgICB7CisgICAgICAgIHRlc3QzMihyZWcsIG1hc2spOworICAgICAgICBzZXQzMih4ODZDb25k
aXRpb24oY29uZCksIGRlc3QpOworICAgIH0KKwogICAgIHZvaWQgc2V0Q2FycnkoUmVnaXN0ZXJJ
RCBkZXN0KQogICAgIHsKICAgICAgICAgc2V0MzIoWDg2QXNzZW1ibGVyOjpDb25kaXRpb25DLCBk
ZXN0KTsKQEAgLTIzOTYsNiArMjQxMywyMyBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAK
KyAgICBzdGF0aWMgT3B0aW9uYWw8UmVzdWx0Q29uZGl0aW9uPiBjb21tdXRlQ29tcGFyZVRvWmVy
b0ludG9UZXN0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCkKKyAgICB7CisgICAgICAgIHN3aXRj
aCAoY29uZCkgeworICAgICAgICBjYXNlIEVxdWFsOgorICAgICAgICAgICAgcmV0dXJuIFplcm87
CisgICAgICAgIGNhc2UgTm90RXF1YWw6CisgICAgICAgICAgICByZXR1cm4gTm9uWmVybzsKKyAg
ICAgICAgY2FzZSBMZXNzVGhhbjoKKyAgICAgICAgICAgIHJldHVybiBTaWduZWQ7CisgICAgICAg
IGNhc2UgR3JlYXRlclRoYW5PckVxdWFsOgorICAgICAgICAgICAgcmV0dXJuIFBvc2l0aXZlT3Ja
ZXJvOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBy
ZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHZvaWQgbm9wKCkKICAgICB7
CiAgICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCmluZGV4IGY3ZWIyYzlmNWVj
ZWJlZjA4M2Q2NjdmZTc1MDQxM2VmYjQ4M2UxYzAuLjJkYTRiOWExYTU1MWI5Mzk0ODQ3NmQ2ZjQ0
YTlkMDk0NjUzMzJlOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKQEAgLTcwMSwxOSArNzAxLDIxIEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgY29tcGFyZTY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0
ZXJJRCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0g
ICAgICAgIGlmICgoKGNvbmQgPT0gRXF1YWwpIHx8IChjb25kID09IE5vdEVxdWFsKSkgJiYgIXJp
Z2h0Lm1fdmFsdWUpCi0gICAgICAgICAgICBtX2Fzc2VtYmxlci50ZXN0cV9ycihsZWZ0LCBsZWZ0
KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9hc3NlbWJsZXIuY21wcV9pcihyaWdodC5t
X3ZhbHVlLCBsZWZ0KTsKLSAgICAgICAgbV9hc3NlbWJsZXIuc2V0Q0Nfcih4ODZDb25kaXRpb24o
Y29uZCksIGRlc3QpOwotICAgICAgICBtX2Fzc2VtYmxlci5tb3Z6YmxfcnIoZGVzdCwgZGVzdCk7
CisgICAgICAgIGlmICghcmlnaHQubV92YWx1ZSkgeworICAgICAgICAgICAgaWYgKGF1dG8gcmVz
dWx0Q29uZGl0aW9uID0gY29tbXV0ZUNvbXBhcmVUb1plcm9JbnRvVGVzdChjb25kKSkgeworICAg
ICAgICAgICAgICAgIHRlc3Q2NCgqcmVzdWx0Q29uZGl0aW9uLCBsZWZ0LCBsZWZ0LCBkZXN0KTsK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAg
ICAgICBtX2Fzc2VtYmxlci5jbXBxX2lyKHJpZ2h0Lm1fdmFsdWUsIGxlZnQpOworICAgICAgICBz
ZXQzMih4ODZDb25kaXRpb24oY29uZCksIGRlc3QpOwogICAgIH0KICAgICAKICAgICB2b2lkIGNv
bXBhcmU2NChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgUmVnaXN0
ZXJJRCByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIu
Y21wcV9ycihyaWdodCwgbGVmdCk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnNldENDX3IoeDg2Q29u
ZGl0aW9uKGNvbmQpLCBkZXN0KTsKLSAgICAgICAgbV9hc3NlbWJsZXIubW92emJsX3JyKGRlc3Qs
IGRlc3QpOworICAgICAgICBzZXQzMih4ODZDb25kaXRpb24oY29uZCksIGRlc3QpOwogICAgIH0K
IAogICAgIHZvaWQgY29tcGFyZURvdWJsZShEb3VibGVDb25kaXRpb24gY29uZCwgRlBSZWdpc3Rl
cklEIGxlZnQsIEZQUmVnaXN0ZXJJRCByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQpAQCAtNzU4LDkg
Kzc2MCw5IEBAIHB1YmxpYzoKIAogICAgIEp1bXAgYnJhbmNoNjQoUmVsYXRpb25hbENvbmRpdGlv
biBjb25kLCBSZWdpc3RlcklEIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKICAgICB7Ci0gICAg
ICAgIGlmICgoKGNvbmQgPT0gRXF1YWwpIHx8IChjb25kID09IE5vdEVxdWFsKSkgJiYgIXJpZ2h0
Lm1fdmFsdWUpIHsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLnRlc3RxX3JyKGxlZnQsIGxlZnQp
OwotICAgICAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuakNDKHg4NkNvbmRpdGlvbihj
b25kKSkpOworICAgICAgICBpZiAoIXJpZ2h0Lm1fdmFsdWUpIHsKKyAgICAgICAgICAgIGlmIChh
dXRvIHJlc3VsdENvbmRpdGlvbiA9IGNvbW11dGVDb21wYXJlVG9aZXJvSW50b1Rlc3QoY29uZCkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3Q2NCgqcmVzdWx0Q29uZGl0aW9uLCBs
ZWZ0LCBsZWZ0KTsKICAgICAgICAgfQogICAgICAgICBtX2Fzc2VtYmxlci5jbXBxX2lyKHJpZ2h0
Lm1fdmFsdWUsIGxlZnQpOwogICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qQ0MoeDg2
Q29uZGl0aW9uKGNvbmQpKSk7CkBAIC05OTQsNiArOTk2LDI4IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgIGNtb3YoeDg2Q29uZGl0aW9uKGludmVydChjb25kKSksIGVsc2VDYXNlLCBkZXN0KTsKICAg
ICB9CiAKKyAgICB2b2lkIG1vdmVDb25kaXRpb25hbGx5NjQoUmVsYXRpb25hbENvbmRpdGlvbiBj
b25kLCBSZWdpc3RlcklEIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCwgUmVnaXN0ZXJJRCB0aGVu
Q2FzZSwgUmVnaXN0ZXJJRCBlbHNlQ2FzZSwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAg
ICAgaWYgKCFyaWdodC5tX3ZhbHVlKSB7CisgICAgICAgICAgICBpZiAoYXV0byByZXN1bHRDb25k
aXRpb24gPSBjb21tdXRlQ29tcGFyZVRvWmVyb0ludG9UZXN0KGNvbmQpKSB7CisgICAgICAgICAg
ICAgICAgbW92ZUNvbmRpdGlvbmFsbHlUZXN0NjQoKnJlc3VsdENvbmRpdGlvbiwgbGVmdCwgbGVm
dCwgdGhlbkNhc2UsIGVsc2VDYXNlLCBkZXN0KTsKKyAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBtX2Fzc2VtYmxlci5jbXBxX2lyKHJp
Z2h0Lm1fdmFsdWUsIGxlZnQpOworCisgICAgICAgIGlmICh0aGVuQ2FzZSAhPSBkZXN0ICYmIGVs
c2VDYXNlICE9IGRlc3QpIHsKKyAgICAgICAgICAgIG1vdmUoZWxzZUNhc2UsIGRlc3QpOworICAg
ICAgICAgICAgZWxzZUNhc2UgPSBkZXN0OworICAgICAgICB9CisKKyAgICAgICAgaWYgKGVsc2VD
YXNlID09IGRlc3QpCisgICAgICAgICAgICBjbW92KHg4NkNvbmRpdGlvbihjb25kKSwgdGhlbkNh
c2UsIGRlc3QpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjbW92KHg4NkNvbmRpdGlvbihp
bnZlcnQoY29uZCkpLCBlbHNlQ2FzZSwgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCBtb3ZlQ29u
ZGl0aW9uYWxseVRlc3Q2NChSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCB0ZXN0UmVn
LCBSZWdpc3RlcklEIG1hc2ssIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAg
ewogICAgICAgICBtX2Fzc2VtYmxlci50ZXN0cV9ycih0ZXN0UmVnLCBtYXNrKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKaW5kZXggODNkZDc0MzVjNzNhODY0NDA2
OGZlZGY4YTZjZDBmYmE3N2FlMTkyOC4uYWUyNDcwMzYyMmUwMTVlNWU5ZmFlMGRmY2FiMDU5N2Iz
YTc1NWMzYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fp
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKQEAg
LTEzNzQsMTQgKzEzNzQsMzAgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgICAgIC8vIE5vdyBo
YW5kbGUgdGVzdCdzIHRoYXQgaW52b2x2ZSBhbiBpbW1lZGlhdGUgYW5kIGEgdG1wLgogCi0gICAg
ICAgICAgICAgICAgaWYgKGxlZnRJbW0gJiYgbGVmdEltbS5pc1JlcHJlc2VudGFibGVBczx1aW50
MzJfdD4oKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoSW5zdCByZXN1bHQgPSB0cnlUZXN0
KEFyZzo6V2lkdGgzMiwgbGVmdEltbSwgdG1wUHJvbWlzZShyaWdodCkpKQotICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgICAgICBpZiAobGVmdEltbSkg
eworICAgICAgICAgICAgICAgICAgICBpZiAoKHdpZHRoID09IEFyZzo6V2lkdGgzMiAmJiBsZWZ0
SW1tLnZhbHVlKCkgPT0gMHhmZmZmZmZmZikKKyAgICAgICAgICAgICAgICAgICAgICAgIHx8ICh3
aWR0aCA9PSBBcmc6OldpZHRoNjQgJiYgbGVmdEltbS52YWx1ZSgpID09IC0xKSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgQXJnUHJvbWlzZSBhcmdQcm9taXNlID0gdG1wUHJvbWlzZShyaWdo
dCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoSW5zdCByZXN1bHQgPSB0cnlUZXN0KHdp
ZHRoLCBhcmdQcm9taXNlLCBhcmdQcm9taXNlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgIGlmIChsZWZ0SW1tLmlzUmVwcmVzZW50YWJsZUFzPHVpbnQzMl90PigpKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoSW5zdCByZXN1bHQgPSB0cnlUZXN0KEFyZzo6V2lkdGgzMiwg
bGVmdEltbSwgdG1wUHJvbWlzZShyaWdodCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9
CiAKLSAgICAgICAgICAgICAgICBpZiAocmlnaHRJbW0gJiYgcmlnaHRJbW0uaXNSZXByZXNlbnRh
YmxlQXM8dWludDMyX3Q+KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKEluc3QgcmVzdWx0
ID0gdHJ5VGVzdChBcmc6OldpZHRoMzIsIHRtcFByb21pc2UobGVmdCksIHJpZ2h0SW1tKSkKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICAgICAgaWYg
KHJpZ2h0SW1tKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICgod2lkdGggPT0gQXJnOjpXaWR0
aDMyICYmIHJpZ2h0SW1tLnZhbHVlKCkgPT0gMHhmZmZmZmZmZikKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHx8ICh3aWR0aCA9PSBBcmc6OldpZHRoNjQgJiYgcmlnaHRJbW0udmFsdWUoKSA9PSAt
MSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIEFyZ1Byb21pc2UgYXJnUHJvbWlzZSA9IHRt
cFByb21pc2UobGVmdCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoSW5zdCByZXN1bHQg
PSB0cnlUZXN0KHdpZHRoLCBhcmdQcm9taXNlLCBhcmdQcm9taXNlKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgIGlmIChyaWdodEltbS5pc1JlcHJlc2VudGFibGVBczx1aW50MzJfdD4o
KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEluc3QgcmVzdWx0ID0gdHJ5VGVzdChB
cmc6OldpZHRoMzIsIHRtcFByb21pc2UobGVmdCksIHJpZ2h0SW1tKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgLy8gRmluYWxseSwganVzdCBkbyB0bXAn
cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9w
Y29kZXMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCmlu
ZGV4IGI2ZTE2YmU5MzJmN2E3ODE2MjQ5N2UxYjViMTY4ZWQ2NjdhMWIwZWMuLjQ2YTVjZjcxZjEx
ZTFjYzQ5ZDc3OWY1MzhjODcyYjQ3NjYwMDNiYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2RlcwpAQCAtNjEzLDcgKzYxMyw3IEBAIFN0b3JlMTYg
VTpHOjE2LCBEOkc6MTYKIAogQ29tcGFyZTMyIFU6RzozMiwgVTpHOjMyLCBVOkc6MzIsIFpEOkc6
MzIKICAgICBSZWxDb25kLCBUbXAsIFRtcCwgVG1wCi0gICAgeDg2OiBSZWxDb25kLCBUbXAsIElt
bSwgVG1wCisgICAgUmVsQ29uZCwgVG1wLCBJbW0sIFRtcAogCiA2NDogQ29tcGFyZTY0IFU6Rzoz
MiwgVTpHOjY0LCBVOkc6NjQsIFpEOkc6MzIKICAgICBSZWxDb25kLCBUbXAsIFRtcCwgVG1wCkBA
IC02MjIsNiArNjIyLDcgQEAgQ29tcGFyZTMyIFU6RzozMiwgVTpHOjMyLCBVOkc6MzIsIFpEOkc6
MzIKIFRlc3QzMiBVOkc6MzIsIFU6RzozMiwgVTpHOjMyLCBaRDpHOjMyCiAgICAgeDg2OiBSZXND
b25kLCBBZGRyLCBJbW0sIFRtcAogICAgIFJlc0NvbmQsIFRtcCwgVG1wLCBUbXAKKyAgICBSZXND
b25kLCBUbXAsIEJpdEltbSwgVG1wCiAKIDY0OiBUZXN0NjQgVTpHOjMyLCBVOkc6NjQsIFU6Rzo2
NCwgWkQ6RzozMgogICAgIHg4NjogUmVzQ29uZCwgVG1wLCBJbW0sIFRtcApAQCAtNjYyLDcgKzY2
Myw3IEBAIEJyYW5jaFRlc3Q4IFU6RzozMiwgVTpHOjgsIFU6Rzo4IC9icmFuY2gKIAogQnJhbmNo
VGVzdDMyIFU6RzozMiwgVTpHOjMyLCBVOkc6MzIgL2JyYW5jaAogICAgIFJlc0NvbmQsIFRtcCwg
VG1wCi0gICAgeDg2OiBSZXNDb25kLCBUbXAsIEltbQorICAgIFJlc0NvbmQsIFRtcCwgQml0SW1t
CiAgICAgeDg2OiBSZXNDb25kLCBBZGRyLCBJbW0KICAgICB4ODY6IFJlc0NvbmQsIEluZGV4LCBJ
bW0KIApAQCAtNjcwLDcgKzY3MSw3IEBAIEJyYW5jaFRlc3QzMiBVOkc6MzIsIFU6RzozMiwgVTpH
OjMyIC9icmFuY2gKICMgQnJhbmNoVGVzdDMyIGluIG1vc3QgY2FzZXMgd2hlcmUgeW91IHVzZSBh
biBpbW1lZGlhdGUuCiA2NDogQnJhbmNoVGVzdDY0IFU6RzozMiwgVTpHOjY0LCBVOkc6NjQgL2Jy
YW5jaAogICAgIFJlc0NvbmQsIFRtcCwgVG1wCi0gICAgeDg2OiBSZXNDb25kLCBUbXAsIEltbQor
ICAgIFJlc0NvbmQsIFRtcCwgQml0SW1tNjQKICAgICB4ODY6IFJlc0NvbmQsIEFkZHIsIEltbQog
ICAgIHg4NjogUmVzQ29uZCwgQWRkciwgVG1wCiAgICAgeDg2OiBSZXNDb25kLCBJbmRleCwgSW1t
CkBAIC03NDgsNiArNzQ5LDcgQEAgTW92ZUNvbmRpdGlvbmFsbHkzMiBVOkc6MzIsIFU6RzozMiwg
VTpHOjMyLCBVOkc6UHRyLCBVOkc6UHRyLCBEOkc6UHRyCiAKIDY0OiBNb3ZlQ29uZGl0aW9uYWxs
eTY0IFU6RzozMiwgVTpHOjY0LCBVOkc6NjQsIFU6RzpQdHIsIFU6RzpQdHIsIEQ6RzpQdHIKICAg
ICBSZWxDb25kLCBUbXAsIFRtcCwgVG1wLCBUbXAsIFRtcAorICAgIFJlbENvbmQsIFRtcCwgSW1t
LCBUbXAsIFRtcCwgVG1wCiAKIE1vdmVDb25kaXRpb25hbGx5VGVzdDMyIFU6RzozMiwgVTpHOjMy
LCBVOkc6MzIsIFU6RzpQdHIsIFVEOkc6UHRyCiAgICAgUmVzQ29uZCwgVG1wLCBUbXAsIFRtcCwg
VG1wCkBAIC03NTUsNyArNzU3LDcgQEAgTW92ZUNvbmRpdGlvbmFsbHlUZXN0MzIgVTpHOjMyLCBV
Okc6MzIsIFU6RzozMiwgVTpHOlB0ciwgVUQ6RzpQdHIKIAogTW92ZUNvbmRpdGlvbmFsbHlUZXN0
MzIgVTpHOjMyLCBVOkc6MzIsIFU6RzozMiwgVTpHOlB0ciwgVTpHOlB0ciwgRDpHOlB0cgogICAg
IFJlc0NvbmQsIFRtcCwgVG1wLCBUbXAsIFRtcCwgVG1wCi0gICAgeDg2OiBSZXNDb25kLCBUbXAs
IEltbSwgVG1wLCBUbXAsIFRtcAorICAgIFJlc0NvbmQsIFRtcCwgQml0SW1tLCBUbXAsIFRtcCwg
VG1wCiAKIDY0OiBNb3ZlQ29uZGl0aW9uYWxseVRlc3Q2NCBVOkc6MzIsIFU6Rzo2NCwgVTpHOjY0
LCBVOkc6UHRyLCBVRDpHOlB0cgogICAgIFJlc0NvbmQsIFRtcCwgVG1wLCBUbXAsIFRtcApAQCAt
Nzk1LDcgKzc5Nyw3IEBAIE1vdmVEb3VibGVDb25kaXRpb25hbGx5MzIgVTpHOjMyLCBVOkc6MzIs
IFU6RzozMiwgVTpGOjY0LCBVOkY6NjQsIEQ6Rjo2NAogCiBNb3ZlRG91YmxlQ29uZGl0aW9uYWxs
eVRlc3QzMiBVOkc6MzIsIFU6RzozMiwgVTpHOjMyLCBVOkY6NjQsIFU6Rjo2NCwgRDpGOjY0CiAg
ICAgUmVzQ29uZCwgVG1wLCBUbXAsIFRtcCwgVG1wLCBUbXAKLSAgICB4ODY6IFJlc0NvbmQsIFRt
cCwgSW1tLCBUbXAsIFRtcCwgVG1wCisgICAgUmVzQ29uZCwgVG1wLCBCaXRJbW0sIFRtcCwgVG1w
LCBUbXAKICAgICB4ODY6IFJlc0NvbmQsIEFkZHIsIEltbSwgVG1wLCBUbXAsIFRtcAogICAgIHg4
NjogUmVzQ29uZCwgSW5kZXgsIEltbSwgVG1wLCBUbXAsIFRtcAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My90ZXN0YjMuY3BwCmluZGV4IGQyMjE2YzgyMmE4ZjA4NmEwNTBiMjIwNjdhOTg0NmRhMjk1ZjE4
NzguLmM5MzEzY2IwMzBmNzczNWU0NTliZWZjYTc5ZDhlYmFjNTg2ZmU0MDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy90ZXN0YjMuY3BwCkBAIC0xNTAsMTAgKzE1MCwxMCBAQCBWZWN0b3I8T3BlcmFu
ZDxGbG9hdFR5cGU+PiBmbG9hdGluZ1BvaW50T3BlcmFuZHMoKQogc3RhdGljIFZlY3RvcjxJbnQ2
NE9wZXJhbmQ+IGludDY0T3BlcmFuZHMoKQogewogICAgIFZlY3RvcjxJbnQ2NE9wZXJhbmQ+IG9w
ZXJhbmRzOwotICAgIGZvciAoY29uc3QgYXV0byYgZG91YmxlT3BlcmFuZCA6IGZsb2F0aW5nUG9p
bnRPcGVyYW5kczxkb3VibGU+KCkpCi0gICAgICAgIG9wZXJhbmRzLmFwcGVuZCh7IGRvdWJsZU9w
ZXJhbmQubmFtZSwgYml0d2lzZV9jYXN0PGludDY0X3Q+KGRvdWJsZU9wZXJhbmQudmFsdWUpIH0p
OwogICAgIG9wZXJhbmRzLmFwcGVuZCh7ICIxIiwgMSB9KTsKICAgICBvcGVyYW5kcy5hcHBlbmQo
eyAiLTEiLCAtMSB9KTsKKyAgICBvcGVyYW5kcy5hcHBlbmQoeyAiNDIiLCA0MiB9KTsKKyAgICBv
cGVyYW5kcy5hcHBlbmQoeyAiLTQyIiwgLTQyIH0pOwogICAgIG9wZXJhbmRzLmFwcGVuZCh7ICJp
bnQ2NC1tYXgiLCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgoKSB9KTsKICAgICBv
cGVyYW5kcy5hcHBlbmQoeyAiaW50NjQtbWluIiwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90
Pjo6bWluKCkgfSk7CiAgICAgb3BlcmFuZHMuYXBwZW5kKHsgImludDMyLW1heCIsIHN0ZDo6bnVt
ZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpIH0pOwpAQCAtODgyMiw3ICs4ODIyLDggQEAgdm9p
ZCBnZW5lcmljVGVzdENvbXBhcmUoCiAgICAgfQogfQogCi1pbnQgbW9kZWxDb21wYXJlKEIzOjpP
cGNvZGUgb3Bjb2RlLCBpbnQgbGVmdCwgaW50IHJpZ2h0KQordGVtcGxhdGU8dHlwZW5hbWUgSW5w
dXRUeXBlPgorSW5wdXRUeXBlIG1vZGVsQ29tcGFyZShCMzo6T3Bjb2RlIG9wY29kZSwgSW5wdXRU
eXBlIGxlZnQsIElucHV0VHlwZSByaWdodCkKIHsKICAgICBzd2l0Y2ggKG9wY29kZSkgewogICAg
IGNhc2UgRXF1YWw6CkBAIC04ODM4LDEzICs4ODM5LDE3IEBAIGludCBtb2RlbENvbXBhcmUoQjM6
Ok9wY29kZSBvcGNvZGUsIGludCBsZWZ0LCBpbnQgcmlnaHQpCiAgICAgY2FzZSBHcmVhdGVyRXF1
YWw6CiAgICAgICAgIHJldHVybiBsZWZ0ID49IHJpZ2h0OwogICAgIGNhc2UgQWJvdmU6Ci0gICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obGVmdCkgPiBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4ocmlnaHQpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dHlwZW5hbWUgc3RkOjpt
YWtlX3Vuc2lnbmVkPElucHV0VHlwZT46OnR5cGU+KGxlZnQpID4KKyAgICAgICAgICAgIHN0YXRp
Y19jYXN0PHR5cGVuYW1lIHN0ZDo6bWFrZV91bnNpZ25lZDxJbnB1dFR5cGU+Ojp0eXBlPihyaWdo
dCk7CiAgICAgY2FzZSBCZWxvdzoKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihsZWZ0KSA8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihyaWdodCk7CisgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDx0eXBlbmFtZSBzdGQ6Om1ha2VfdW5zaWduZWQ8SW5wdXRUeXBlPjo6dHlwZT4o
bGVmdCkgPAorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dHlwZW5hbWUgc3RkOjptYWtlX3Vuc2ln
bmVkPElucHV0VHlwZT46OnR5cGU+KHJpZ2h0KTsKICAgICBjYXNlIEFib3ZlRXF1YWw6Ci0gICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obGVmdCkgPj0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHJpZ2h0KTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHR5cGVuYW1lIHN0ZDo6
bWFrZV91bnNpZ25lZDxJbnB1dFR5cGU+Ojp0eXBlPihsZWZ0KSA+PQorICAgICAgICAgICAgc3Rh
dGljX2Nhc3Q8dHlwZW5hbWUgc3RkOjptYWtlX3Vuc2lnbmVkPElucHV0VHlwZT46OnR5cGU+KHJp
Z2h0KTsKICAgICBjYXNlIEJlbG93RXF1YWw6Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4obGVmdCkgPD0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJpZ2h0KTsKKyAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PHR5cGVuYW1lIHN0ZDo6bWFrZV91bnNpZ25lZDxJbnB1dFR5cGU+
Ojp0eXBlPihsZWZ0KSA8PQorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dHlwZW5hbWUgc3RkOjpt
YWtlX3Vuc2lnbmVkPElucHV0VHlwZT46OnR5cGU+KHJpZ2h0KTsKICAgICBjYXNlIEJpdEFuZDoK
ICAgICAgICAgcmV0dXJuICEhKGxlZnQgJiByaWdodCk7CiAgICAgZGVmYXVsdDoKQEAgLTg5Mzks
NyArODk0NCw4IEBAIHZvaWQgdGVzdENvbXBhcmVMb2FkKEIzOjpPcGNvZGUgb3Bjb2RlLCBCMzo6
T3Bjb2RlIGxvYWRPcGNvZGUsIGludCBsZWZ0LCBpbnQgcmlnCiAKIHZvaWQgdGVzdENvbXBhcmVJ
bXBsKEIzOjpPcGNvZGUgb3Bjb2RlLCBpbnQ2NF90IGxlZnQsIGludDY0X3QgcmlnaHQpCiB7Ci0g
ICAgaW50IHJlc3VsdCA9IG1vZGVsQ29tcGFyZShvcGNvZGUsIGxlZnQsIHJpZ2h0KTsKKyAgICBp
bnQ2NF90IHJlc3VsdCA9IG1vZGVsQ29tcGFyZShvcGNvZGUsIGxlZnQsIHJpZ2h0KTsKKyAgICBp
bnQzMl90IGludDMyUmVzdWx0ID0gbW9kZWxDb21wYXJlKG9wY29kZSwgc3RhdGljX2Nhc3Q8aW50
MzJfdD4obGVmdCksIHN0YXRpY19jYXN0PGludDMyX3Q+KHJpZ2h0KSk7CiAgICAgCiAgICAgLy8g
VGVzdCB0bXAtdG8tdG1wLgogICAgIGdlbmVyaWNUZXN0Q29tcGFyZSgKQEAgLTg5NjMsNyArODk2
OSw3IEBAIHZvaWQgdGVzdENvbXBhcmVJbXBsKEIzOjpPcGNvZGUgb3Bjb2RlLCBpbnQ2NF90IGxl
ZnQsIGludDY0X3QgcmlnaHQpCiAgICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigp
LAogICAgICAgICAgICAgICAgIGJsb2NrLT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOwogICAgICAgICB9LAotICAgICAg
ICBsZWZ0LCByaWdodCwgcmVzdWx0KTsKKyAgICAgICAgbGVmdCwgcmlnaHQsIGludDMyUmVzdWx0
KTsKIAogICAgIC8vIFRlc3QgaW1tLXRvLXRtcC4KICAgICBnZW5lcmljVGVzdENvbXBhcmUoCkBA
IC04OTg1LDcgKzg5OTEsNyBAQCB2b2lkIHRlc3RDb21wYXJlSW1wbChCMzo6T3Bjb2RlIG9wY29k
ZSwgaW50NjRfdCBsZWZ0LCBpbnQ2NF90IHJpZ2h0KQogICAgICAgICAgICAgICAgIHByb2MsIFRy
dW5jLCBPcmlnaW4oKSwKICAgICAgICAgICAgICAgICBibG9jay0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKICAgICAg
ICAgfSwKLSAgICAgICAgbGVmdCwgcmlnaHQsIHJlc3VsdCk7CisgICAgICAgIGxlZnQsIHJpZ2h0
LCBpbnQzMlJlc3VsdCk7CiAKICAgICAvLyBUZXN0IHRtcC10by1pbW0uCiAgICAgZ2VuZXJpY1Rl
c3RDb21wYXJlKApAQCAtOTAwNyw3ICs5MDEzLDcgQEAgdm9pZCB0ZXN0Q29tcGFyZUltcGwoQjM6
Ok9wY29kZSBvcGNvZGUsIGludDY0X3QgbGVmdCwgaW50NjRfdCByaWdodCkKICAgICAgICAgWyZd
IChCYXNpY0Jsb2NrKiBibG9jaywgUHJvY2VkdXJlJiBwcm9jKSB7CiAgICAgICAgICAgICByZXR1
cm4gYmxvY2stPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCByaWdodCk7
CiAgICAgICAgIH0sCi0gICAgICAgIGxlZnQsIHJpZ2h0LCByZXN1bHQpOworICAgICAgICBsZWZ0
LCByaWdodCwgaW50MzJSZXN1bHQpOwogCiAgICAgLy8gVGVzdCBpbW0tdG8taW1tLgogICAgIGdl
bmVyaWNUZXN0Q29tcGFyZSgKQEAgLTkwMjcsNyArOTAzMyw3IEBAIHZvaWQgdGVzdENvbXBhcmVJ
bXBsKEIzOjpPcGNvZGUgb3Bjb2RlLCBpbnQ2NF90IGxlZnQsIGludDY0X3QgcmlnaHQpCiAgICAg
ICAgIFsmXSAoQmFzaWNCbG9jayogYmxvY2ssIFByb2NlZHVyZSYgcHJvYykgewogICAgICAgICAg
ICAgcmV0dXJuIGJsb2NrLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
cmlnaHQpOwogICAgICAgICB9LAotICAgICAgICBsZWZ0LCByaWdodCwgcmVzdWx0KTsKKyAgICAg
ICAgbGVmdCwgcmlnaHQsIGludDMyUmVzdWx0KTsKIAogICAgIHRlc3RDb21wYXJlTG9hZDxpbnQz
Ml90PihvcGNvZGUsIExvYWQsIGxlZnQsIHJpZ2h0KTsKICAgICB0ZXN0Q29tcGFyZUxvYWQ8aW50
OF90PihvcGNvZGUsIExvYWQ4UywgbGVmdCwgcmlnaHQpOwpAQCAtOTAzNiwzNyArOTA0MiwxMSBA
QCB2b2lkIHRlc3RDb21wYXJlSW1wbChCMzo6T3Bjb2RlIG9wY29kZSwgaW50NjRfdCBsZWZ0LCBp
bnQ2NF90IHJpZ2h0KQogICAgIHRlc3RDb21wYXJlTG9hZDx1aW50MTZfdD4ob3Bjb2RlLCBMb2Fk
MTZaLCBsZWZ0LCByaWdodCk7CiB9CiAKLXZvaWQgdGVzdENvbXBhcmUoQjM6Ok9wY29kZSBvcGNv
ZGUsIGludCBsZWZ0LCBpbnQgcmlnaHQpCit2b2lkIHRlc3RDb21wYXJlKEIzOjpPcGNvZGUgb3Bj
b2RlLCBpbnQ2NF90IGxlZnQsIGludDY0X3QgcmlnaHQpCiB7Ci0gICAgYXV0byB2YXJpYW50cyA9
IFsmXSAoaW50IGxlZnQsIGludCByaWdodCkgewotICAgICAgICB0ZXN0Q29tcGFyZUltcGwob3Bj
b2RlLCBsZWZ0LCByaWdodCk7Ci0gICAgICAgIHRlc3RDb21wYXJlSW1wbChvcGNvZGUsIGxlZnQs
IHJpZ2h0ICsgMSk7Ci0gICAgICAgIHRlc3RDb21wYXJlSW1wbChvcGNvZGUsIGxlZnQsIHJpZ2h0
IC0gMSk7Ci0KLSAgICAgICAgYXV0byBtdWx0aXBsaWVkVGVzdHMgPSBbJl0gKGludCBmYWN0b3Ip
IHsKLSAgICAgICAgICAgIHRlc3RDb21wYXJlSW1wbChvcGNvZGUsIGxlZnQgKiBmYWN0b3IsIHJp
Z2h0KTsKLSAgICAgICAgICAgIHRlc3RDb21wYXJlSW1wbChvcGNvZGUsIGxlZnQgKiBmYWN0b3Is
IHJpZ2h0ICsgMSk7Ci0gICAgICAgICAgICB0ZXN0Q29tcGFyZUltcGwob3Bjb2RlLCBsZWZ0ICog
ZmFjdG9yLCByaWdodCAtIDEpOwotICAgICAgICAKLSAgICAgICAgICAgIHRlc3RDb21wYXJlSW1w
bChvcGNvZGUsIGxlZnQsIHJpZ2h0ICogZmFjdG9yKTsKLSAgICAgICAgICAgIHRlc3RDb21wYXJl
SW1wbChvcGNvZGUsIGxlZnQsIChyaWdodCArIDEpICogZmFjdG9yKTsKLSAgICAgICAgICAgIHRl
c3RDb21wYXJlSW1wbChvcGNvZGUsIGxlZnQsIChyaWdodCAtIDEpICogZmFjdG9yKTsKLSAgICAg
ICAgCi0gICAgICAgICAgICB0ZXN0Q29tcGFyZUltcGwob3Bjb2RlLCBsZWZ0ICogZmFjdG9yLCBy
aWdodCAqIGZhY3Rvcik7Ci0gICAgICAgICAgICB0ZXN0Q29tcGFyZUltcGwob3Bjb2RlLCBsZWZ0
ICogZmFjdG9yLCAocmlnaHQgKyAxKSAqIGZhY3Rvcik7Ci0gICAgICAgICAgICB0ZXN0Q29tcGFy
ZUltcGwob3Bjb2RlLCBsZWZ0ICogZmFjdG9yLCAocmlnaHQgLSAxKSAqIGZhY3Rvcik7Ci0gICAg
ICAgIH07Ci0KLSAgICAgICAgbXVsdGlwbGllZFRlc3RzKDEwKTsKLSAgICAgICAgbXVsdGlwbGll
ZFRlc3RzKDEwMCk7Ci0gICAgICAgIG11bHRpcGxpZWRUZXN0cygxMDAwKTsKLSAgICAgICAgbXVs
dGlwbGllZFRlc3RzKDEwMDAwMCk7Ci0gICAgfTsKLQotICAgIHZhcmlhbnRzKGxlZnQsIHJpZ2h0
KTsKLSAgICB2YXJpYW50cygtbGVmdCwgcmlnaHQpOwotICAgIHZhcmlhbnRzKGxlZnQsIC1yaWdo
dCk7Ci0gICAgdmFyaWFudHMoLWxlZnQsIC1yaWdodCk7CisgICAgdGVzdENvbXBhcmVJbXBsKG9w
Y29kZSwgbGVmdCwgcmlnaHQpOworICAgIHRlc3RDb21wYXJlSW1wbChvcGNvZGUsIGxlZnQsIHJp
Z2h0ICsgMSk7CisgICAgdGVzdENvbXBhcmVJbXBsKG9wY29kZSwgbGVmdCwgcmlnaHQgLSAxKTsK
IH0KIAogdm9pZCB0ZXN0RXF1YWxEb3VibGUoZG91YmxlIGxlZnQsIGRvdWJsZSByaWdodCwgYm9v
bCByZXN1bHQpCkBAIC0xMDg5OSw2ICsxMDg3OSwyMCBAQCB2b2lkIHRlc3RDaGVja1NlbGVjdENo
ZWNrU2VsZWN0KCkKICAgICBDSEVDSyhpbnZva2U8aW50PigqY29kZSwgdHJ1ZSwgZmFsc2UpID09
IDY2Nyk7CiB9CiAKK2RvdWJsZSBiM1Bvdyhkb3VibGUgeCwgaW50IHkpCit7CisgICAgaWYgKHkg
PCAwIHx8IHkgPiAxMDAwKQorICAgICAgICByZXR1cm4gcG93KHgsIHkpOworICAgIGRvdWJsZSBy
ZXN1bHQgPSAxOworICAgIHdoaWxlICh5KSB7CisgICAgICAgIGlmICh5ICYgMSkKKyAgICAgICAg
ICAgIHJlc3VsdCAqPSB4OworICAgICAgICB4ICo9IHg7CisgICAgICAgIHkgPj49IDE7CisgICAg
fQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKIHZvaWQgdGVzdFBvd0RvdWJsZUJ5SW50ZWdlckxv
b3AoZG91YmxlIHhPcGVyYW5kLCBpbnQzMl90IHlPcGVyYW5kKQogewogICAgIFByb2NlZHVyZSBw
cm9jOwpAQCAtMTA5MTEsNyArMTA5MDUsNyBAQCB2b2lkIHRlc3RQb3dEb3VibGVCeUludGVnZXJM
b29wKGRvdWJsZSB4T3BlcmFuZCwgaW50MzJfdCB5T3BlcmFuZCkKICAgICBCYXNpY0Jsb2NrKiBj
b250aW51YXRpb24gPSByZXN1bHQuZmlyc3Q7CiAgICAgY29udGludWF0aW9uLT5hcHBlbmROZXc8
Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQuc2Vjb25kKTsKIAot
ICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCB4T3BlcmFu
ZCwgeU9wZXJhbmQpLCBwb3coeE9wZXJhbmQsIHlPcGVyYW5kKSkpOworICAgIENIRUNLKGlzSWRl
bnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCB4T3BlcmFuZCwgeU9wZXJhbmQpLCBi
M1Bvdyh4T3BlcmFuZCwgeU9wZXJhbmQpKSk7CiB9CiAKIHZvaWQgdGVzdFRydW5jT3JIaWdoKCkK
QEAgLTEyMjQ4LDE5ICsxMjI0MiwxNyBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAg
ICAgUlVOKHRlc3RDaGVja011bEFyZ3VtZW50QWxpYXNpbmc2NCgpKTsKICAgICBSVU4odGVzdENo
ZWNrTXVsQXJndW1lbnRBbGlhc2luZzMyKCkpOwogCi0gICAgUlVOKHRlc3RDb21wYXJlKEVxdWFs
LCA0MiwgNDIpKTsKLSAgICBSVU4odGVzdENvbXBhcmUoTm90RXF1YWwsIDQyLCA0MikpOwotICAg
IFJVTih0ZXN0Q29tcGFyZShMZXNzVGhhbiwgNDIsIDQyKSk7Ci0gICAgUlVOKHRlc3RDb21wYXJl
KEdyZWF0ZXJUaGFuLCA0MiwgNDIpKTsKLSAgICBSVU4odGVzdENvbXBhcmUoTGVzc0VxdWFsLCA0
MiwgNDIpKTsKLSAgICBSVU4odGVzdENvbXBhcmUoR3JlYXRlckVxdWFsLCA0MiwgNDIpKTsKLSAg
ICBSVU4odGVzdENvbXBhcmUoQmVsb3csIDQyLCA0MikpOwotICAgIFJVTih0ZXN0Q29tcGFyZShB
Ym92ZSwgNDIsIDQyKSk7Ci0gICAgUlVOKHRlc3RDb21wYXJlKEJlbG93RXF1YWwsIDQyLCA0Mikp
OwotICAgIFJVTih0ZXN0Q29tcGFyZShBYm92ZUVxdWFsLCA0MiwgNDIpKTsKLQotICAgIFJVTih0
ZXN0Q29tcGFyZShCaXRBbmQsIDQyLCA0MikpOwotICAgIFJVTih0ZXN0Q29tcGFyZShCaXRBbmQs
IDQyLCAwKSk7CisgICAgUlVOX0JJTkFSWShbXShpbnQzMl90IGEsIGludDMyX3QgYikgeyB0ZXN0
Q29tcGFyZShFcXVhbCwgYSwgYik7IH0sIGludDY0T3BlcmFuZHMoKSwgaW50NjRPcGVyYW5kcygp
KTsKKyAgICBSVU5fQklOQVJZKFtdKGludDMyX3QgYSwgaW50MzJfdCBiKSB7IHRlc3RDb21wYXJl
KE5vdEVxdWFsLCBhLCBiKTsgfSwgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOwor
ICAgIFJVTl9CSU5BUlkoW10oaW50MzJfdCBhLCBpbnQzMl90IGIpIHsgdGVzdENvbXBhcmUoTGVz
c1RoYW4sIGEsIGIpOyB9LCBpbnQ2NE9wZXJhbmRzKCksIGludDY0T3BlcmFuZHMoKSk7CisgICAg
UlVOX0JJTkFSWShbXShpbnQzMl90IGEsIGludDMyX3QgYikgeyB0ZXN0Q29tcGFyZShHcmVhdGVy
VGhhbiwgYSwgYik7IH0sIGludDY0T3BlcmFuZHMoKSwgaW50NjRPcGVyYW5kcygpKTsKKyAgICBS
VU5fQklOQVJZKFtdKGludDMyX3QgYSwgaW50MzJfdCBiKSB7IHRlc3RDb21wYXJlKExlc3NFcXVh
bCwgYSwgYik7IH0sIGludDY0T3BlcmFuZHMoKSwgaW50NjRPcGVyYW5kcygpKTsKKyAgICBSVU5f
QklOQVJZKFtdKGludDMyX3QgYSwgaW50MzJfdCBiKSB7IHRlc3RDb21wYXJlKEdyZWF0ZXJFcXVh
bCwgYSwgYik7IH0sIGludDY0T3BlcmFuZHMoKSwgaW50NjRPcGVyYW5kcygpKTsKKyAgICBSVU5f
QklOQVJZKFtdKGludDMyX3QgYSwgaW50MzJfdCBiKSB7IHRlc3RDb21wYXJlKEJlbG93LCBhLCBi
KTsgfSwgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOworICAgIFJVTl9CSU5BUlko
W10oaW50MzJfdCBhLCBpbnQzMl90IGIpIHsgdGVzdENvbXBhcmUoQWJvdmUsIGEsIGIpOyB9LCBp
bnQ2NE9wZXJhbmRzKCksIGludDY0T3BlcmFuZHMoKSk7CisgICAgUlVOX0JJTkFSWShbXShpbnQz
Ml90IGEsIGludDMyX3QgYikgeyB0ZXN0Q29tcGFyZShCZWxvd0VxdWFsLCBhLCBiKTsgfSwgaW50
NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOworICAgIFJVTl9CSU5BUlkoW10oaW50MzJf
dCBhLCBpbnQzMl90IGIpIHsgdGVzdENvbXBhcmUoQWJvdmVFcXVhbCwgYSwgYik7IH0sIGludDY0
T3BlcmFuZHMoKSwgaW50NjRPcGVyYW5kcygpKTsKKyAgICBSVU5fQklOQVJZKFtdKGludDMyX3Qg
YSwgaW50MzJfdCBiKSB7IHRlc3RDb21wYXJlKEJpdEFuZCwgYSwgYik7IH0sIGludDY0T3BlcmFu
ZHMoKSwgaW50NjRPcGVyYW5kcygpKTsKIAogICAgIFJVTih0ZXN0RXF1YWxEb3VibGUoNDIsIDQy
LCB0cnVlKSk7CiAgICAgUlVOKHRlc3RFcXVhbERvdWJsZSgwLCAtMCwgdHJ1ZSkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCA2YzI0
OTQyZjAzZTFkODEwODVkYjIzMTQzOTlhNjIwNDVhNWJhYmU3Li44YTdkMzllMDViNmViZjRlNWYw
NTdiYmM0ZjQ4Y2ZmNGEzNjM2ZTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMTI5MywxNCArMTI5MywxNCBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVCb29sZWFuQnJhbmNoKE5vZGUqIG5vZGUsIE5vZGUq
IGJyYW5jaE5vZGUsCiAgICAgICAgIG5vdFRha2VuID0gdG1wOwogICAgIH0KIAotICAgIGlmIChu
b2RlLT5jaGlsZDEoKS0+aXNCb29sZWFuQ29uc3RhbnQoKSkgewotICAgICAgICBib29sIGltbSA9
IG5vZGUtPmNoaWxkMSgpLT5hc0Jvb2xlYW4oKTsKKyAgICBpZiAobm9kZS0+Y2hpbGQxKCktPmlz
SW50MzJDb25zdGFudCgpKSB7CisgICAgICAgIGludDMyX3QgaW1tID0gbm9kZS0+Y2hpbGQxKCkt
PmFzSW50MzIoKTsKICAgICAgICAgU3BlY3VsYXRlQm9vbGVhbk9wZXJhbmQgb3AyKHRoaXMsIG5v
ZGUtPmNoaWxkMigpKTsKLSAgICAgICAgYnJhbmNoMzIoY29uZGl0aW9uLCBKSVRDb21waWxlcjo6
SW1tMzIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihpbW0p
KSkpLCBvcDIuZ3ByKCksIHRha2VuKTsKLSAgICB9IGVsc2UgaWYgKG5vZGUtPmNoaWxkMigpLT5p
c0Jvb2xlYW5Db25zdGFudCgpKSB7CisgICAgICAgIGJyYW5jaDMyKGNvbmRpdGlvbiwgSklUQ29t
cGlsZXI6OkltbTMyKGltbSksIG9wMi5ncHIoKSwgdGFrZW4pOworICAgIH0gZWxzZSBpZiAobm9k
ZS0+Y2hpbGQyKCktPmlzSW50MzJDb25zdGFudCgpKSB7CiAgICAgICAgIFNwZWN1bGF0ZUJvb2xl
YW5PcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIGJvb2wgaW1tID0g
bm9kZS0+Y2hpbGQyKCktPmFzQm9vbGVhbigpOwotICAgICAgICBicmFuY2gzMihjb25kaXRpb24s
IG9wMS5ncHIoKSwgSklUQ29tcGlsZXI6OkltbTMyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTVmFs
dWU6OmVuY29kZShqc0Jvb2xlYW4oaW1tKSkpKSwgdGFrZW4pOworICAgICAgICBpbnQzMl90IGlt
bSA9IG5vZGUtPmNoaWxkMigpLT5hc0ludDMyKCk7CisgICAgICAgIGJyYW5jaDMyKGNvbmRpdGlv
biwgb3AxLmdwcigpLCBKSVRDb21waWxlcjo6SW1tMzIoaW1tKSwgdGFrZW4pOwogICAgIH0gZWxz
ZSB7CiAgICAgICAgIFNwZWN1bGF0ZUJvb2xlYW5PcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGls
ZDEoKSk7CiAgICAgICAgIFNwZWN1bGF0ZUJvb2xlYW5PcGVyYW5kIG9wMih0aGlzLCBub2RlLT5j
aGlsZDIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcAppbmRleCA5N2U3MjE3MjE2YTI1MTc3MWE5ZDUwMzVhYTQyZTQzYzkwYzZhOGQ1
Li41ZmE5Y2E1ZTJlNzg2MDc0YmU4YTIwNjIxNzc0M2IxY2EzMDAzNTU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTE1NjYs
MTUgKzE1NjYsMzQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlT2JqZWN0
VG9PYmplY3RPck90aGVyRXF1YWxpdHkoRWRnZSBsZWZ0Q2hpbGQKIAogdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUludDMyQ29tcGFyZShOb2RlKiBub2RlLCBNYWNyb0Fzc2VtYmxlcjo6UmVs
YXRpb25hbENvbmRpdGlvbiBjb25kaXRpb24pCiB7Ci0gICAgU3BlY3VsYXRlSW50MzJPcGVyYW5k
IG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgU3BlY3VsYXRlSW50MzJPcGVyYW5kIG9w
Mih0aGlzLCBub2RlLT5jaGlsZDIoKSk7Ci0gICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBS
ZXVzZSwgb3AxLCBvcDIpOwotICAgIAotICAgIG1faml0LmNvbXBhcmUzMihjb25kaXRpb24sIG9w
MS5ncHIoKSwgb3AyLmdwcigpLCByZXN1bHQuZ3ByKCkpOwotICAgIAotICAgIC8vIElmIHdlIGFk
ZCBhIERhdGFGb3JtYXRCb29sLCB3ZSBzaG91bGQgdXNlIGl0IGhlcmUuCi0gICAgbV9qaXQub3Iz
MihUcnVzdGVkSW1tMzIoVmFsdWVGYWxzZSksIHJlc3VsdC5ncHIoKSk7Ci0gICAganNWYWx1ZVJl
c3VsdChyZXN1bHQuZ3ByKCksIG1fY3VycmVudE5vZGUsIERhdGFGb3JtYXRKU0Jvb2xlYW4pOwor
ICAgIGlmIChub2RlLT5jaGlsZDEoKS0+aXNJbnQzMkNvbnN0YW50KCkpIHsKKyAgICAgICAgU3Bl
Y3VsYXRlSW50MzJPcGVyYW5kIG9wMih0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIEdQ
UlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIG9wMik7CisgICAgICAgIGludDMyX3QgaW1t
ID0gbm9kZS0+Y2hpbGQxKCktPmFzSW50MzIoKTsKKyAgICAgICAgbV9qaXQuY29tcGFyZTMyKGNv
bmRpdGlvbiwgSklUQ29tcGlsZXI6OkltbTMyKGltbSksIG9wMi5ncHIoKSwgcmVzdWx0Lmdwcigp
KTsKKworICAgICAgICAvLyBJZiB3ZSBhZGQgYSBEYXRhRm9ybWF0Qm9vbCwgd2Ugc2hvdWxkIHVz
ZSBpdCBoZXJlLgorICAgICAgICBtX2ppdC5vcjMyKFRydXN0ZWRJbW0zMihWYWx1ZUZhbHNlKSwg
cmVzdWx0LmdwcigpKTsKKyAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHQuZ3ByKCksIG1fY3Vy
cmVudE5vZGUsIERhdGFGb3JtYXRKU0Jvb2xlYW4pOworICAgIH0gZWxzZSBpZiAobm9kZS0+Y2hp
bGQyKCktPmlzSW50MzJDb25zdGFudCgpKSB7CisgICAgICAgIFNwZWN1bGF0ZUludDMyT3BlcmFu
ZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0
KHRoaXMsIFJldXNlLCBvcDEpOworICAgICAgICBpbnQzMl90IGltbSA9IG5vZGUtPmNoaWxkMigp
LT5hc0ludDMyKCk7CisgICAgICAgIG1faml0LmNvbXBhcmUzMihjb25kaXRpb24sIG9wMS5ncHIo
KSwgSklUQ29tcGlsZXI6OkltbTMyKGltbSksIHJlc3VsdC5ncHIoKSk7CisKKyAgICAgICAgLy8g
SWYgd2UgYWRkIGEgRGF0YUZvcm1hdEJvb2wsIHdlIHNob3VsZCB1c2UgaXQgaGVyZS4KKyAgICAg
ICAgbV9qaXQub3IzMihUcnVzdGVkSW1tMzIoVmFsdWVGYWxzZSksIHJlc3VsdC5ncHIoKSk7Cisg
ICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0LmdwcigpLCBtX2N1cnJlbnROb2RlLCBEYXRhRm9y
bWF0SlNCb29sZWFuKTsKKyAgICB9IGVsc2UgeworICAgICAgICBTcGVjdWxhdGVJbnQzMk9wZXJh
bmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgU3BlY3VsYXRlSW50MzJPcGVy
YW5kIG9wMih0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1
bHQodGhpcywgUmV1c2UsIG9wMSwgb3AyKTsKKyAgICAgICAgbV9qaXQuY29tcGFyZTMyKGNvbmRp
dGlvbiwgb3AxLmdwcigpLCBvcDIuZ3ByKCksIHJlc3VsdC5ncHIoKSk7CisKKyAgICAgICAgLy8g
SWYgd2UgYWRkIGEgRGF0YUZvcm1hdEJvb2wsIHdlIHNob3VsZCB1c2UgaXQgaGVyZS4KKyAgICAg
ICAgbV9qaXQub3IzMihUcnVzdGVkSW1tMzIoVmFsdWVGYWxzZSksIHJlc3VsdC5ncHIoKSk7Cisg
ICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0LmdwcigpLCBtX2N1cnJlbnROb2RlLCBEYXRhRm9y
bWF0SlNCb29sZWFuKTsKKyAgICB9CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJ
bnQ1MkNvbXBhcmUoTm9kZSogbm9kZSwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRp
b24gY29uZGl0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nzaml0L0Z1bmN0aW9u
Q2FsbC5oIGIvU291cmNlL1dlYkNvcmUvY3Nzaml0L0Z1bmN0aW9uQ2FsbC5oCmluZGV4IDRhNDE0
YTg0MGZmYWJmMTg2Nzc4YjM3YmEwNjdlNzA1ZDUxODViMWYuLjZmZWM3ODBlYmZlM2IyMjFjMGMx
YmQ3MWM0ZTUwMDRhMWVmNjI5ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzc2ppdC9G
dW5jdGlvbkNhbGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3NqaXQvRnVuY3Rpb25DYWxsLmgK
QEAgLTg3LDcgKzg3LDcgQEAgcHJpdmF0ZToKICAgICBKU0M6Ok1hY3JvQXNzZW1ibGVyOjpKdW1w
IGNhbGxBbmRCcmFuY2hPbkNvbmRpdGlvbihKU0M6Ok1hY3JvQXNzZW1ibGVyOjpSZXN1bHRDb25k
aXRpb24gY29uZGl0aW9uLCBKU0M6Ok1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIgbWFzaykK
ICAgICB7CiAgICAgICAgIHByZXBhcmVBbmRDYWxsKCk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnRl
c3QzMihjb25kaXRpb24sIEpTQzo6R1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIG1hc2spOworICAg
ICAgICBtX2Fzc2VtYmxlci50ZXN0MzIoSlNDOjpHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgbWFz
ayk7CiAgICAgICAgIGNsZWFudXBQb3N0Q2FsbCgpOwogICAgICAgICByZXR1cm4gbV9hc3NlbWJs
ZXIuYnJhbmNoKGNvbmRpdGlvbik7CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273071</attachid>
            <date>2016-03-05 00:53:08 -0800</date>
            <delta_ts>2016-03-05 01:10:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155055-20160305005253.patch</filename>
            <type>text/plain</type>
            <size>49386</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk3NjA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
OTdiN2NhODRhZmE4NjI0NGE0YzA5NDM2MTdlNGIzNDM3N2Q2MmFkLi4yMTY3MWVlNTliNjBmZjU4
YjgyOTQyYjhmMjZmNzVmYzc5MTk5MTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5NSBAQAorMjAxNi0wMy0wNCAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KKworICAgICAgICBbSlNDXSBJbXByb3ZlIGNvZGVnZW4gb2YgQ29tcGFyZSBhbmQgVGVz
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MDU1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBpbnRyb2R1Y2VzIGEgZmV3IGltcHJvdmVtZW50cyBvbiBob3cgd2UgbG93ZXIKKyAgICAg
ICAgQ29tcGFyZSBhbmQgVGVzdCB3aXRoIGltbWVkaWF0ZXM6CisgICAgICAgICAgICAtQWRkIGNl
cnRhaW4gSW1tZWRpYXRlIGZvcm1zIG9mIEFSTTY0LgorICAgICAgICAgICAgLVVzZSBDQlovQ0JO
WiB3aGVuIHBvc3NpYmxlIG9uIEFSTTY0LgorICAgICAgICAgICAgLVdoZW4gcG9zc2libGUsIGNv
bnZlcnQgYSBDTVAgaW50byBhIFRTVAorICAgICAgICAgICAgIE9uIHNvbWUgaGFyZHdhcmUsIHdl
IGNhbiBpc3N1ZSBtb3JlIFRTVCBzaW11bHRhbmVvdXNseS4KKworICAgICAgICAgICAgIE9uIHg4
NiwgYW55IFRTVCtKdW1wIGlzIGNhbmRpZGF0ZSBmb3IgbWFjcm8tZnVzaW9uLgorICAgICAgICAg
ICAgIFRoZXkgYXJlIGFsc28gc21hbGxlci4KKyAgICAgICAgICAgICAoc2VjdGlvbnMgMy40LjIu
MiBhbmQgMy41LjEuOSkKKyAgICAgICAgICAgIC1EbyBub3QgbG9hZCB0aGUgbWFzayBpbW1lZGlh
dGUgb2YgYSBUU1QKKyAgICAgICAgICAgICBpZiBpdCBvbmx5IGNvbnRhaW5zIG9uZXMgKG1vc3Rs
eSB1c2VmdWwgZm9yIEFSTTY0CisgICAgICAgICAgICAgc2luY2UgdGhhdCB3b3VsZCBub3QgaGF2
ZSBiZWVuIGEgdmFsaWQgaW1tZWRpYXRlKS4KKworICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlci5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6Y29tcGFyZTMyKToKKyAg
ICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlckFSTTY0Ojptb3ZlQ29uZGl0aW9uYWxseUFmdGVyRmxvYXRpbmdQb2ludENv
bXBhcmUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojptb3ZlRG91YmxlQ29u
ZGl0aW9uYWxseUFmdGVyRmxvYXRpbmdQb2ludENvbXBhcmUpOgorICAgICAgICBUaGlzIGlzIHNv
bWV3aGF0IHVucmVsYXRlZCBidXQgSSBmb3VuZCB0aGF0IG91dCB3aGlsZSB3b3JraW5nCisgICAg
ICAgIG9uIG1vdmVEb3VibGVDb25kaXRpb25hbGx5VGVzdDMyOgorICAgICAgICAgICAgSWYgInRo
ZW5DYXNlIiBhbmQgImRlc3QiIGFyZSBhc3NpZ25lZCB0aGUgc2FtZSByZWdpc3RlcgorICAgICAg
ICAgICAgYnkgdGhlIGFsbG9jYXRvciwgdGhlbiB0aGUgZmlyc3QgKGYpZmNzZWwgd291bGQgb3Zl
cnJpZGUKKyAgICAgICAgICAgIHRoZSAidGhlbkNhc2UiIGFuZCB0aGUgc2Vjb25kIGZjc2VsIHdv
dWxkIGFsd2F5cyBiZSAiZWxzZUNhc2UiLgorCisgICAgICAgIFRoaXMgaXMgY292ZXJlZCBieSB0
ZXN0YjMgYnV0IHdhcyBvbmx5IHVuY292ZXJlZAorICAgICAgICBhZnRlciByZWNlbnQgIk1vdmUi
IHJlbW92YWxzIGluIGxvd2VyaW5nLgorCisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
NjQ6Om1vdmVDb25kaXRpb25hbGx5MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFS
TTY0Ojptb3ZlQ29uZGl0aW9uYWxseTY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJB
Uk02NDo6bW92ZUNvbmRpdGlvbmFsbHlUZXN0MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
YmxlckFSTTY0Ojptb3ZlRG91YmxlQ29uZGl0aW9uYWxseTMyKToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJBUk02NDo6bW92ZURvdWJsZUNvbmRpdGlvbmFsbHk2NCk6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6Om1vdmVEb3VibGVDb25kaXRpb25hbGx5VGVzdDMyKToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6YnJhbmNoMzIpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpicmFuY2g2NCk6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyQVJNNjQ6OmJyYW5jaFRlc3QzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyQVJNNjQ6OnRlc3QzMik6CisgICAgICAgIFRoZSB2ZXJzaW9uIHRha2luZyBhbiBpbW1lZGlh
dGUgd2FzIGd1YXJkZWQgYnkKKyAgICAgICAgKGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9u
WmVybykuIFRoYXQgaXMgb3ZlcnplYWxvdXMsCisgICAgICAgIGFuZCBvbmx5IG5lZWRlZCBmb3Ig
Q0JaL0NCTlouCisKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6YnJhbmNoVGVz
dDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6Y29tcGFyZTMyKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6Y29tcGFyZTY0KToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6Y29tbXV0ZUNvbXBhcmVUb1plcm9JbnRvVGVzdCk6Cisg
ICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmg6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjptb3ZlQ29uZGl0aW9uYWxseTMyKToKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246Om1vdmVDb25kaXRpb25hbGx5VGVzdDMy
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaDMyKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnRlc3QzMik6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpicmFuY2hUZXN0MzIpOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6Y29tcGFyZTMyKToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJYODZDb21tb246OmNvbW11dGVDb21wYXJlVG9aZXJvSW50b1Rlc3QpOgorICAg
ICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlclg4Nl82NDo6Y29tcGFyZTY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJYODZfNjQ6OmJyYW5jaDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZf
NjQ6Om1vdmVDb25kaXRpb25hbGx5NjQpOgorICAgICAgICAqIGIzL0IzTG93ZXJUb0Fpci5jcHA6
CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmNyZWF0ZUdlbmVyaWNDb21wYXJl
KToKKyAgICAgICAgVW5mb3J0dW5hdGVseSB0aGlzIGNhbm5vdCBiZSBhYnN0cmFjdGVkIGJ5IHRo
ZSBNYWNyb0Fzc2VtYmxlci4KKyAgICAgICAgVGhvc2UgaW1tZWRpYXRlcyBhcmUgbm90IHZhbGlk
LCB3ZSBoYXZlIHRvIHBpY2sgdGhlIGJldHRlcgorICAgICAgICBmb3IgcmlnaHQgYXdheS4KKwor
ICAgICAgICAqIGIzL2Fpci9BaXJPcGNvZGUub3Bjb2RlczoKKyAgICAgICAgKiBiMy90ZXN0YjMu
Y3BwOgorICAgICAgICAoSlNDOjpCMzo6aW50NjRPcGVyYW5kcyk6CisgICAgICAgIChKU0M6OkIz
Ojptb2RlbENvbXBhcmUpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdENvbXBhcmVJbXBsKToKKyAg
ICAgICAgKEpTQzo6QjM6OnRlc3RDb21wYXJlKToKKyAgICAgICAgKEpTQzo6QjM6OmIzUG93KToK
KyAgICAgICAgKEpTQzo6QjM6OnRlc3RQb3dEb3VibGVCeUludGVnZXJMb29wKToKKyAgICAgICAg
U29tZSB2ZXJzaW9ucyBvZiBwb3coZG91YmxlLCBpbnQpIGRvIG5vdCByZXR1cm4KKyAgICAgICAg
dGhlIGV4YWN0IHNhbWUgYml0cyBhcyBvdXIgaW50ZWdlciBsb29wLgorICAgICAgICBBZGRlZCBh
IG5ldyB2ZXJzaW9uIHRvIGhhdmUgdGhlIHNhbWUgYmVoYXZpb3IKKyAgICAgICAgYXMgdGhlIEIz
IGxvb3AuCisKKyAgICAgICAgKEpTQzo6QjM6OnJ1bik6CisgICAgICAgICogZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZVBlZXBIb2xlQm9vbGVhbkJyYW5jaCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlSW50MzJD
b21wYXJlKToKKyAgICAgICAgQ29tcGFyaW5nIHRvIGFuIGltbWVkaWF0ZSBpcyBzdXBlciBjb21t
b24uIERvIG5vdCB3YXN0ZQorICAgICAgICBhIHJlZ2lzdGVyIGZvciB0aGF0IQorCiAyMDE2LTAz
LTA0ICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBU
aHJvdyBhd2F5IGNvbXBpbGVkIFJlZ0V4cCBjb2RlIHdoZW4gbmF2aWdhdGluZyB0byBhIG5ldyBw
YWdlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDlmMDBkNDU3ZTUzOGZiNzUwMjE4M2U3MzQ3NjFmM2M3MTFkYzEz
MzUuLjU4OGYxODViODgyOTJlNDE1ODUxYWU5ZTI1NjFlNTY3N2QzNDY4YzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMyBAQAorMjAxNi0wMy0wNCAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWlu
QGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBJbXByb3ZlIGNvZGVnZW4gb2YgQ29tcGFyZSBh
bmQgVGVzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU1MDU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBjc3NqaXQvRnVuY3Rpb25DYWxsLmg6CisgICAgICAgIChXZWJDb3JlOjpGdW5jdGlvbkNhbGw6
OmNhbGxBbmRCcmFuY2hPbkNvbmRpdGlvbik6CisKIDIwMTYtMDMtMDQgIENhcmxvcyBHYXJjaWEg
Q2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFNjcm9sbGJhcnMg
YXJlIGJyb2tlbiBhZ2FpbiB3aXRoIEdUSysgPj0gMy4xOS4xMQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCmluZGV4IDBiMWNjYjdlNzEwMTQ5
NWI1YjZlY2NkOGZmMGM4NDMzZDg4NmUxZGYuLmVmOGI3MWY1MjI2MDNjM2JmZTg5MmVkNjA5OTA1
YzJmNzRkZDFlMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyLmgKQEAgLTExMiw2ICsxMTIsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgTWFj
cm9Bc3NlbWJsZXJCYXNlOjpwb3A7CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJCYXNlOjpqdW1w
OwogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6YnJhbmNoMzI7CisgICAgdXNpbmcgTWFj
cm9Bc3NlbWJsZXJCYXNlOjpjb21wYXJlMzI7CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJCYXNl
Ojptb3ZlOwogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6YWRkMzI7CiAgICAgdXNpbmcg
TWFjcm9Bc3NlbWJsZXJCYXNlOjphbmQzMjsKQEAgLTQwMCw2ICs0MDEsMTEgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29tbXV0ZShjb25kKSwgcmlnaHQsIGxlZnQpOwogICAg
IH0KIAorICAgIHZvaWQgY29tcGFyZTMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgSW1tMzIg
bGVmdCwgUmVnaXN0ZXJJRCByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAg
Y29tcGFyZTMyKGNvbW11dGUoY29uZCksIHJpZ2h0LCBsZWZ0LCBkZXN0KTsKKyAgICB9CisKICAg
ICB2b2lkIGJyYW5jaFRlc3RQdHIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgcmVn
LCBMYWJlbCB0YXJnZXQpCiAgICAgewogICAgICAgICBicmFuY2hUZXN0UHRyKGNvbmQsIHJlZyku
bGlua1RvKHRhcmdldCwgdGhpcyk7CkBAIC0xNjIxLDYgKzE2MjcsMjkgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgbGVmdCwgcmlnaHQuYXNUcnVzdGVkSW1tMzIoKSk7
CiAgICAgfQogCisgICAgdm9pZCBjb21wYXJlMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBS
ZWdpc3RlcklEIGxlZnQsIEltbTMyIHJpZ2h0LCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAg
ICAgICBpZiAoc2hvdWxkQmxpbmQocmlnaHQpKSB7CisgICAgICAgICAgICBpZiAobGVmdCAhPSBk
ZXN0IHx8IGhhdmVTY3JhdGNoUmVnaXN0ZXJGb3JCbGluZGluZygpKSB7CisgICAgICAgICAgICAg
ICAgUmVnaXN0ZXJJRCBibGluZGVkQ29uc3RhbnRSZWcgPSBkZXN0OworICAgICAgICAgICAgICAg
IGlmIChsZWZ0ID09IGRlc3QpCisgICAgICAgICAgICAgICAgICAgIGJsaW5kZWRDb25zdGFudFJl
ZyA9IHNjcmF0Y2hSZWdpc3RlckZvckJsaW5kaW5nKCk7CisgICAgICAgICAgICAgICAgbG9hZFhv
ckJsaW5kZWRDb25zdGFudCh4b3JCbGluZENvbnN0YW50KHJpZ2h0KSwgYmxpbmRlZENvbnN0YW50
UmVnKTsKKyAgICAgICAgICAgICAgICBjb21wYXJlMzIoY29uZCwgbGVmdCwgYmxpbmRlZENvbnN0
YW50UmVnLCBkZXN0KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAvLyBJZiB3ZSBkb24ndCBoYXZlIGEgc2NyYXRjaCByZWdpc3RlciBhdmFpbGFi
bGUgZm9yIHVzZSwgd2UnbGwganVzdAorICAgICAgICAgICAgLy8gcGxhY2UgYSByYW5kb20gbnVt
YmVyIG9mIG5vcHMuCisgICAgICAgICAgICB1aW50MzJfdCBub3BDb3VudCA9IHJhbmRvbSgpICYg
MzsKKyAgICAgICAgICAgIHdoaWxlIChub3BDb3VudC0tKQorICAgICAgICAgICAgICAgIG5vcCgp
OworICAgICAgICAgICAgY29tcGFyZTMyKGNvbmQsIGxlZnQsIHJpZ2h0LmFzVHJ1c3RlZEltbTMy
KCksIGRlc3QpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgY29t
cGFyZTMyKGNvbmQsIGxlZnQsIHJpZ2h0LmFzVHJ1c3RlZEltbTMyKCksIGRlc3QpOworICAgIH0K
KwogICAgIEp1bXAgYnJhbmNoQWRkMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQg
c3JjLCBJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIGlmIChzcmMg
PT0gZGVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJBUk02NC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckFSTTY0LmgKaW5kZXggZjRhYTVjNTNkNDI2ODNmMDkyYTA1NWIyZGM4MzQzN2E5
NGJmNmJmOS4uNDJhYzQwMGZjNjZjZDFkMTM4OGVmNzZhNDg0YTUyM2Y3NzkzNTFmMiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFS
TTY0LmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJBUk02NEFzc2VtYmxlci5oIgogI2lu
Y2x1ZGUgIkFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJh
cy5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAt
MTY4NSwxMiArMTY4NiwxMiBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KICAgICAgICAgaWYgKGNvbmQgPT0gRG91YmxlRXF1YWxPclVub3JkZXJlZCkgewotICAgICAg
ICAgICAgLy8gSWYgdGhlIGNvbXBhcmUgaXMgdW5vcmRlcmVkLCB0aGVuQ2FzZSBpcyBjb3BpZWQg
dG8gZGVzdCBhbmQgdGhlCisgICAgICAgICAgICAvLyBJZiB0aGUgY29tcGFyZSBpcyB1bm9yZGVy
ZWQsIHRoZW5DYXNlIGlzIGNvcGllZCB0byBlbHNlQ2FzZSBhbmQgdGhlCiAgICAgICAgICAgICAv
LyBuZXh0IGNzZWwgaGFzIGFsbCBhcmd1bWVudHMgZXF1YWwgdG8gdGhlbkNhc2UuCiAgICAgICAg
ICAgICAvLyBJZiB0aGUgY29tcGFyZSBpcyBvcmRlcmVkLCBkZXN0IGlzIHVuY2hhbmdlZCBhbmQg
RVEgZGVjaWRlcwogICAgICAgICAgICAgLy8gd2hhdCB2YWx1ZSB0byBzZXQuCi0gICAgICAgICAg
ICBtX2Fzc2VtYmxlci5jc2VsPGRhdGFzaXplPihkZXN0LCB0aGVuQ2FzZSwgZWxzZUNhc2UsIEFS
TTY0QXNzZW1ibGVyOjpDb25kaXRpb25WUyk7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5jc2Vs
PGRhdGFzaXplPihkZXN0LCB0aGVuQ2FzZSwgZGVzdCwgQVJNNjRBc3NlbWJsZXI6OkNvbmRpdGlv
bkVRKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNzZWw8ZGF0YXNpemU+KGVsc2VDYXNlLCB0
aGVuQ2FzZSwgZWxzZUNhc2UsIEFSTTY0QXNzZW1ibGVyOjpDb25kaXRpb25WUyk7CisgICAgICAg
ICAgICBtX2Fzc2VtYmxlci5jc2VsPGRhdGFzaXplPihkZXN0LCB0aGVuQ2FzZSwgZWxzZUNhc2Us
IEFSTTY0QXNzZW1ibGVyOjpDb25kaXRpb25FUSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KICAgICAgICAgbV9hc3NlbWJsZXIuY3NlbDxkYXRhc2l6ZT4oZGVzdCwgdGhlbkNhc2Us
IGVsc2VDYXNlLCBBUk02NENvbmRpdGlvbihjb25kKSk7CkBAIC0xNzA2LDEyICsxNzA3LDEyIEBA
IHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBpZiAoY29u
ZCA9PSBEb3VibGVFcXVhbE9yVW5vcmRlcmVkKSB7Ci0gICAgICAgICAgICAvLyBJZiB0aGUgY29t
cGFyZSBpcyB1bm9yZGVyZWQsIHRoZW5DYXNlIGlzIGNvcGllZCB0byBkZXN0IGFuZCB0aGUKKyAg
ICAgICAgICAgIC8vIElmIHRoZSBjb21wYXJlIGlzIHVub3JkZXJlZCwgdGhlbkNhc2UgaXMgY29w
aWVkIHRvIGVsc2VDYXNlIGFuZCB0aGUKICAgICAgICAgICAgIC8vIG5leHQgY3NlbCBoYXMgYWxs
IGFyZ3VtZW50cyBlcXVhbCB0byB0aGVuQ2FzZS4KICAgICAgICAgICAgIC8vIElmIHRoZSBjb21w
YXJlIGlzIG9yZGVyZWQsIGRlc3QgaXMgdW5jaGFuZ2VkIGFuZCBFUSBkZWNpZGVzCiAgICAgICAg
ICAgICAvLyB3aGF0IHZhbHVlIHRvIHNldC4KLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmZjc2Vs
PGRhdGFzaXplPihkZXN0LCB0aGVuQ2FzZSwgZWxzZUNhc2UsIEFSTTY0QXNzZW1ibGVyOjpDb25k
aXRpb25WUyk7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5mY3NlbDxkYXRhc2l6ZT4oZGVzdCwg
dGhlbkNhc2UsIGRlc3QsIEFSTTY0QXNzZW1ibGVyOjpDb25kaXRpb25FUSk7CisgICAgICAgICAg
ICBtX2Fzc2VtYmxlci5mY3NlbDxkYXRhc2l6ZT4oZWxzZUNhc2UsIHRoZW5DYXNlLCBlbHNlQ2Fz
ZSwgQVJNNjRBc3NlbWJsZXI6OkNvbmRpdGlvblZTKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVy
LmZjc2VsPGRhdGFzaXplPihkZXN0LCB0aGVuQ2FzZSwgZWxzZUNhc2UsIEFSTTY0QXNzZW1ibGVy
OjpDb25kaXRpb25FUSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAg
bV9hc3NlbWJsZXIuZmNzZWw8ZGF0YXNpemU+KGRlc3QsIHRoZW5DYXNlLCBlbHNlQ2FzZSwgQVJN
NjRDb25kaXRpb24oY29uZCkpOwpAQCAtMjAwMyw2ICsyMDA0LDEzIEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgbW92ZUNvbmRpdGlvbmFsbHkzMihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lz
dGVySUQgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0LCBSZWdpc3RlcklEIHRoZW5DYXNlLCBSZWdp
c3RlcklEIGVsc2VDYXNlLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgeworICAgICAgICBpZiAoIXJp
Z2h0Lm1fdmFsdWUpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIHJlc3VsdENvbmRpdGlvbiA9IGNv
bW11dGVDb21wYXJlVG9aZXJvSW50b1Rlc3QoY29uZCkpIHsKKyAgICAgICAgICAgICAgICBtb3Zl
Q29uZGl0aW9uYWxseVRlc3QzMigqcmVzdWx0Q29uZGl0aW9uLCBsZWZ0LCBsZWZ0LCB0aGVuQ2Fz
ZSwgZWxzZUNhc2UsIGRlc3QpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorCiAgICAgICAgIGlmIChpc1VJbnQxMihyaWdodC5tX3ZhbHVlKSkKICAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLmNtcDwzMj4obGVmdCwgVUludDEyKHJpZ2h0Lm1fdmFsdWUp
KTsKICAgICAgICAgZWxzZSBpZiAoaXNVSW50MTIoLXJpZ2h0Lm1fdmFsdWUpKQpAQCAtMjAyNiw2
ICsyMDM0LDI2IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuY3NlbDw2ND4oZGVzdCwg
dGhlbkNhc2UsIGVsc2VDYXNlLCBBUk02NENvbmRpdGlvbihjb25kKSk7CiAgICAgfQogCisgICAg
dm9pZCBtb3ZlQ29uZGl0aW9uYWxseTY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0
ZXJJRCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQsIFJlZ2lzdGVySUQgdGhlbkNhc2UsIFJlZ2lz
dGVySUQgZWxzZUNhc2UsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGlmICghcmln
aHQubV92YWx1ZSkgeworICAgICAgICAgICAgaWYgKGF1dG8gcmVzdWx0Q29uZGl0aW9uID0gY29t
bXV0ZUNvbXBhcmVUb1plcm9JbnRvVGVzdChjb25kKSkgeworICAgICAgICAgICAgICAgIG1vdmVD
b25kaXRpb25hbGx5VGVzdDY0KCpyZXN1bHRDb25kaXRpb24sIGxlZnQsIGxlZnQsIHRoZW5DYXNl
LCBlbHNlQ2FzZSwgZGVzdCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
fQorICAgICAgICB9CisKKyAgICAgICAgaWYgKGlzVUludDEyKHJpZ2h0Lm1fdmFsdWUpKQorICAg
ICAgICAgICAgbV9hc3NlbWJsZXIuY21wPDY0PihsZWZ0LCBVSW50MTIocmlnaHQubV92YWx1ZSkp
OworICAgICAgICBlbHNlIGlmIChpc1VJbnQxMigtcmlnaHQubV92YWx1ZSkpCisgICAgICAgICAg
ICBtX2Fzc2VtYmxlci5jbW48NjQ+KGxlZnQsIFVJbnQxMigtcmlnaHQubV92YWx1ZSkpOworICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1vdmVUb0NhY2hlZFJlZyhyaWdodCwgZGF0YU1lbW9y
eVRlbXBSZWdpc3RlcigpKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNtcDw2ND4obGVmdCwg
ZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgIH0KKyAgICAgICAgbV9hc3NlbWJsZXIuY3NlbDw2
ND4oZGVzdCwgdGhlbkNhc2UsIGVsc2VDYXNlLCBBUk02NENvbmRpdGlvbihjb25kKSk7CisgICAg
fQorCiAgICAgdm9pZCBtb3ZlQ29uZGl0aW9uYWxseVRlc3QzMihSZXN1bHRDb25kaXRpb24gY29u
ZCwgUmVnaXN0ZXJJRCB0ZXN0UmVnLCBSZWdpc3RlcklEIG1hc2ssIFJlZ2lzdGVySUQgc3JjLCBS
ZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci50c3Q8MzI+KHRlc3RS
ZWcsIG1hc2spOwpAQCAtMjAzOCw2ICsyMDY2LDEyIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3Nl
bWJsZXIuY3NlbDwzMj4oZGVzdCwgdGhlbkNhc2UsIGVsc2VDYXNlLCBBUk02NENvbmRpdGlvbihj
b25kKSk7CiAgICAgfQogCisgICAgdm9pZCBtb3ZlQ29uZGl0aW9uYWxseVRlc3QzMihSZXN1bHRD
b25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQsIFJlZ2lz
dGVySUQgdGhlbkNhc2UsIFJlZ2lzdGVySUQgZWxzZUNhc2UsIFJlZ2lzdGVySUQgZGVzdCkKKyAg
ICB7CisgICAgICAgIHRlc3QzMihsZWZ0LCByaWdodCk7CisgICAgICAgIG1fYXNzZW1ibGVyLmNz
ZWw8MzI+KGRlc3QsIHRoZW5DYXNlLCBlbHNlQ2FzZSwgQVJNNjRDb25kaXRpb24oY29uZCkpOwor
ICAgIH0KKwogICAgIHZvaWQgbW92ZUNvbmRpdGlvbmFsbHlUZXN0NjQoUmVzdWx0Q29uZGl0aW9u
IGNvbmQsIFJlZ2lzdGVySUQgdGVzdFJlZywgUmVnaXN0ZXJJRCBtYXNrLCBSZWdpc3RlcklEIHNy
YywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIudHN0PDY0Pih0
ZXN0UmVnLCBtYXNrKTsKQEAgLTIwNTgsNiArMjA5MiwxMyBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IG1vdmVEb3VibGVDb25kaXRpb25hbGx5MzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdp
c3RlcklEIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCwgRlBSZWdpc3RlcklEIHRoZW5DYXNlLCBG
UFJlZ2lzdGVySUQgZWxzZUNhc2UsIEZQUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKKyAgICAgICAg
aWYgKCFyaWdodC5tX3ZhbHVlKSB7CisgICAgICAgICAgICBpZiAoYXV0byByZXN1bHRDb25kaXRp
b24gPSBjb21tdXRlQ29tcGFyZVRvWmVyb0ludG9UZXN0KGNvbmQpKSB7CisgICAgICAgICAgICAg
ICAgbW92ZURvdWJsZUNvbmRpdGlvbmFsbHlUZXN0MzIoKnJlc3VsdENvbmRpdGlvbiwgbGVmdCwg
bGVmdCwgdGhlbkNhc2UsIGVsc2VDYXNlLCBkZXN0KTsKKyAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwogICAgICAgICBpZiAoaXNVSW50MTIocmlnaHQu
bV92YWx1ZSkpCiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5jbXA8MzI+KGxlZnQsIFVJbnQxMihy
aWdodC5tX3ZhbHVlKSk7CiAgICAgICAgIGVsc2UgaWYgKGlzVUludDEyKC1yaWdodC5tX3ZhbHVl
KSkKQEAgLTIwNzcsNiArMjExOCwxMyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIG1vdmVEb3VibGVD
b25kaXRpb25hbGx5NjQoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQs
IFRydXN0ZWRJbW0zMiByaWdodCwgRlBSZWdpc3RlcklEIHRoZW5DYXNlLCBGUFJlZ2lzdGVySUQg
ZWxzZUNhc2UsIEZQUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKKyAgICAgICAgaWYgKCFyaWdodC5t
X3ZhbHVlKSB7CisgICAgICAgICAgICBpZiAoYXV0byByZXN1bHRDb25kaXRpb24gPSBjb21tdXRl
Q29tcGFyZVRvWmVyb0ludG9UZXN0KGNvbmQpKSB7CisgICAgICAgICAgICAgICAgbW92ZURvdWJs
ZUNvbmRpdGlvbmFsbHlUZXN0NjQoKnJlc3VsdENvbmRpdGlvbiwgbGVmdCwgbGVmdCwgdGhlbkNh
c2UsIGVsc2VDYXNlLCBkZXN0KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKwogICAgICAgICBpZiAoaXNVSW50MTIocmlnaHQubV92YWx1ZSkpCiAg
ICAgICAgICAgICBtX2Fzc2VtYmxlci5jbXA8NjQ+KGxlZnQsIFVJbnQxMihyaWdodC5tX3ZhbHVl
KSk7CiAgICAgICAgIGVsc2UgaWYgKGlzVUludDEyKC1yaWdodC5tX3ZhbHVlKSkKQEAgLTIwOTQs
NiArMjE0MiwxMiBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLmZjc2VsPDY0PihkZXN0
LCB0aGVuQ2FzZSwgZWxzZUNhc2UsIEFSTTY0Q29uZGl0aW9uKGNvbmQpKTsKICAgICB9CiAKKyAg
ICB2b2lkIG1vdmVEb3VibGVDb25kaXRpb25hbGx5VGVzdDMyKFJlc3VsdENvbmRpdGlvbiBjb25k
LCBSZWdpc3RlcklEIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCwgRlBSZWdpc3RlcklEIHRoZW5D
YXNlLCBGUFJlZ2lzdGVySUQgZWxzZUNhc2UsIEZQUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAg
ICAgICAgdGVzdDMyKGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgbV9hc3NlbWJsZXIuZmNzZWw8NjQ+
KGRlc3QsIHRoZW5DYXNlLCBlbHNlQ2FzZSwgQVJNNjRDb25kaXRpb24oY29uZCkpOworICAgIH0K
KwogICAgIHZvaWQgbW92ZURvdWJsZUNvbmRpdGlvbmFsbHlUZXN0NjQoUmVzdWx0Q29uZGl0aW9u
IGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgUmVnaXN0ZXJJRCByaWdodCwgRlBSZWdpc3RlcklEIHRo
ZW5DYXNlLCBGUFJlZ2lzdGVySUQgZWxzZUNhc2UsIEZQUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsK
ICAgICAgICAgbV9hc3NlbWJsZXIudHN0PDY0PihsZWZ0LCByaWdodCk7CkBAIC0yMTI2LDYgKzIx
ODAsMTEgQEAgcHVibGljOgogCiAgICAgSnVtcCBicmFuY2gzMihSZWxhdGlvbmFsQ29uZGl0aW9u
IGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0KQogICAgIHsKKyAgICAg
ICAgaWYgKCFyaWdodC5tX3ZhbHVlKSB7CisgICAgICAgICAgICBpZiAoYXV0byByZXN1bHRDb25k
aXRpb24gPSBjb21tdXRlQ29tcGFyZVRvWmVyb0ludG9UZXN0KGNvbmQpKQorICAgICAgICAgICAg
ICAgIHJldHVybiBicmFuY2hUZXN0MzIoKnJlc3VsdENvbmRpdGlvbiwgbGVmdCwgbGVmdCk7Cisg
ICAgICAgIH0KKwogICAgICAgICBpZiAoaXNVSW50MTIocmlnaHQubV92YWx1ZSkpCiAgICAgICAg
ICAgICBtX2Fzc2VtYmxlci5jbXA8MzI+KGxlZnQsIFVJbnQxMihyaWdodC5tX3ZhbHVlKSk7CiAg
ICAgICAgIGVsc2UgaWYgKGlzVUludDEyKC1yaWdodC5tX3ZhbHVlKSkKQEAgLTIxOTEsNiArMjI1
MCwxMSBAQCBwdWJsaWM6CiAKICAgICBKdW1wIGJyYW5jaDY0KFJlbGF0aW9uYWxDb25kaXRpb24g
Y29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQpCiAgICAgeworICAgICAg
ICBpZiAoIXJpZ2h0Lm1fdmFsdWUpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIHJlc3VsdENvbmRp
dGlvbiA9IGNvbW11dGVDb21wYXJlVG9aZXJvSW50b1Rlc3QoY29uZCkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGJyYW5jaFRlc3Q2NCgqcmVzdWx0Q29uZGl0aW9uLCBsZWZ0LCBsZWZ0KTsKKyAg
ICAgICAgfQorCiAgICAgICAgIGlmIChpc1VJbnQxMihyaWdodC5tX3ZhbHVlKSkKICAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLmNtcDw2ND4obGVmdCwgVUludDEyKHJpZ2h0Lm1fdmFsdWUpKTsKICAg
ICAgICAgZWxzZSBpZiAoaXNVSW50MTIoLXJpZ2h0Lm1fdmFsdWUpKQpAQCAtMjIwNSw2ICsyMjY5
LDExIEBAIHB1YmxpYzoKICAgICBKdW1wIGJyYW5jaDY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29u
ZCwgUmVnaXN0ZXJJRCBsZWZ0LCBUcnVzdGVkSW1tNjQgcmlnaHQpCiAgICAgewogICAgICAgICBp
bnRwdHJfdCBpbW1lZGlhdGUgPSByaWdodC5tX3ZhbHVlOworICAgICAgICBpZiAoIWltbWVkaWF0
ZSkgeworICAgICAgICAgICAgaWYgKGF1dG8gcmVzdWx0Q29uZGl0aW9uID0gY29tbXV0ZUNvbXBh
cmVUb1plcm9JbnRvVGVzdChjb25kKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gYnJhbmNoVGVz
dDY0KCpyZXN1bHRDb25kaXRpb24sIGxlZnQsIGxlZnQpOworICAgICAgICB9CisKICAgICAgICAg
aWYgKGlzVUludDEyKGltbWVkaWF0ZSkpCiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5jbXA8NjQ+
KGxlZnQsIFVJbnQxMihzdGF0aWNfY2FzdDxpbnQzMl90PihpbW1lZGlhdGUpKSk7CiAgICAgICAg
IGVsc2UgaWYgKGlzVUludDEyKC1pbW1lZGlhdGUpKQpAQCAtMjI2OSwyNSArMjMzOCwyMiBAQCBw
dWJsaWM6CiAgICAgCiAgICAgSnVtcCBicmFuY2hUZXN0MzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQs
IFJlZ2lzdGVySUQgcmVnLCBSZWdpc3RlcklEIG1hc2spCiAgICAgeworICAgICAgICBpZiAocmVn
ID09IG1hc2sgJiYgKGNvbmQgPT0gWmVybyB8fCBjb25kID09IE5vblplcm8pKQorICAgICAgICAg
ICAgcmV0dXJuIEp1bXAobWFrZUNvbXBhcmVBbmRCcmFuY2g8MzI+KHN0YXRpY19jYXN0PFplcm9D
b25kaXRpb24+KGNvbmQpLCByZWcpKTsKICAgICAgICAgbV9hc3NlbWJsZXIudHN0PDMyPihyZWcs
IG1hc2spOwogICAgICAgICByZXR1cm4gSnVtcChtYWtlQnJhbmNoKGNvbmQpKTsKICAgICB9CiAK
LSAgICB2b2lkIHRlc3QzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCByZWcsIFRy
dXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKKyAgICB2b2lkIHRlc3QzMihSZWdp
c3RlcklEIHJlZywgVHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQogICAgIHsK
ICAgICAgICAgaWYgKG1hc2subV92YWx1ZSA9PSAtMSkKICAgICAgICAgICAgIG1fYXNzZW1ibGVy
LnRzdDwzMj4ocmVnLCByZWcpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGJvb2wgdGVz
dGVkV2l0aEltbWVkaWF0ZSA9IGZhbHNlOwotICAgICAgICAgICAgaWYgKChjb25kID09IFplcm8p
IHx8IChjb25kID09IE5vblplcm8pKSB7Ci0gICAgICAgICAgICAgICAgTG9naWNhbEltbWVkaWF0
ZSBsb2dpY2FsSW1tID0gTG9naWNhbEltbWVkaWF0ZTo6Y3JlYXRlMzIobWFzay5tX3ZhbHVlKTsK
KyAgICAgICAgICAgIExvZ2ljYWxJbW1lZGlhdGUgbG9naWNhbEltbSA9IExvZ2ljYWxJbW1lZGlh
dGU6OmNyZWF0ZTMyKG1hc2subV92YWx1ZSk7CiAKLSAgICAgICAgICAgICAgICBpZiAobG9naWNh
bEltbS5pc1ZhbGlkKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIudHN0PDMy
PihyZWcsIGxvZ2ljYWxJbW0pOwotICAgICAgICAgICAgICAgICAgICB0ZXN0ZWRXaXRoSW1tZWRp
YXRlID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBpZiAoIXRlc3RlZFdpdGhJbW1lZGlhdGUpIHsKKyAgICAgICAgICAgIGlmIChsb2dpY2FsSW1t
LmlzVmFsaWQoKSkKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci50c3Q8MzI+KHJlZywgbG9n
aWNhbEltbSk7CisgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBtb3ZlKG1hc2ss
IGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CiAgICAgICAgICAg
ICAgICAgbV9hc3NlbWJsZXIudHN0PDMyPihyZWcsIGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgICAg
ICAgICAgfQpAQCAtMjMwOCwxMyArMjM3NCwxMCBAQCBwdWJsaWM6CiAgICAgICAgIH0gZWxzZSBp
ZiAoaGFzT25lQml0U2V0KG1hc2subV92YWx1ZSkgJiYgKChjb25kID09IFplcm8pIHx8IChjb25k
ID09IE5vblplcm8pKSkKICAgICAgICAgICAgIHJldHVybiBKdW1wKG1ha2VUZXN0Qml0QW5kQnJh
bmNoKHJlZywgZ2V0TFNCU2V0KG1hc2subV92YWx1ZSksIHN0YXRpY19jYXN0PFplcm9Db25kaXRp
b24+KGNvbmQpKSk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgaWYgKChjb25kID09IFpl
cm8pIHx8IChjb25kID09IE5vblplcm8pKSB7Ci0gICAgICAgICAgICAgICAgTG9naWNhbEltbWVk
aWF0ZSBsb2dpY2FsSW1tID0gTG9naWNhbEltbWVkaWF0ZTo6Y3JlYXRlMzIobWFzay5tX3ZhbHVl
KTsKLQotICAgICAgICAgICAgICAgIGlmIChsb2dpY2FsSW1tLmlzVmFsaWQoKSkgewotICAgICAg
ICAgICAgICAgICAgICBtX2Fzc2VtYmxlci50c3Q8MzI+KHJlZywgbG9naWNhbEltbSk7Ci0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiBKdW1wKG1ha2VCcmFuY2goY29uZCkpOwotICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIExvZ2ljYWxJbW1lZGlhdGUgbG9naWNhbEltbSA9IExvZ2lj
YWxJbW1lZGlhdGU6OmNyZWF0ZTMyKG1hc2subV92YWx1ZSk7CisgICAgICAgICAgICBpZiAobG9n
aWNhbEltbS5pc1ZhbGlkKCkpIHsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci50c3Q8MzI+
KHJlZywgbG9naWNhbEltbSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIEp1bXAobWFrZUJyYW5j
aChjb25kKSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIG1vdmUobWFzaywgZ2V0Q2Fj
aGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKQEAgLTIzMzcsNiArMjQwMCw4
IEBAIHB1YmxpYzoKIAogICAgIEp1bXAgYnJhbmNoVGVzdDY0KFJlc3VsdENvbmRpdGlvbiBjb25k
LCBSZWdpc3RlcklEIHJlZywgUmVnaXN0ZXJJRCBtYXNrKQogICAgIHsKKyAgICAgICAgaWYgKHJl
ZyA9PSBtYXNrICYmIChjb25kID09IFplcm8gfHwgY29uZCA9PSBOb25aZXJvKSkKKyAgICAgICAg
ICAgIHJldHVybiBKdW1wKG1ha2VDb21wYXJlQW5kQnJhbmNoPDY0PihzdGF0aWNfY2FzdDxaZXJv
Q29uZGl0aW9uPihjb25kKSwgcmVnKSk7CiAgICAgICAgIG1fYXNzZW1ibGVyLnRzdDw2ND4ocmVn
LCBtYXNrKTsKICAgICAgICAgcmV0dXJuIEp1bXAobWFrZUJyYW5jaChjb25kKSk7CiAgICAgfQpA
QCAtMjM1MCwxMyArMjQxNSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIH0gZWxzZSBpZiAoaGFzT25l
Qml0U2V0KG1hc2subV92YWx1ZSkgJiYgKChjb25kID09IFplcm8pIHx8IChjb25kID09IE5vblpl
cm8pKSkKICAgICAgICAgICAgIHJldHVybiBKdW1wKG1ha2VUZXN0Qml0QW5kQnJhbmNoKHJlZywg
Z2V0TFNCU2V0KG1hc2subV92YWx1ZSksIHN0YXRpY19jYXN0PFplcm9Db25kaXRpb24+KGNvbmQp
KSk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgaWYgKChjb25kID09IFplcm8pIHx8IChj
b25kID09IE5vblplcm8pKSB7Ci0gICAgICAgICAgICAgICAgTG9naWNhbEltbWVkaWF0ZSBsb2dp
Y2FsSW1tID0gTG9naWNhbEltbWVkaWF0ZTo6Y3JlYXRlNjQobWFzay5tX3ZhbHVlKTsKKyAgICAg
ICAgICAgIExvZ2ljYWxJbW1lZGlhdGUgbG9naWNhbEltbSA9IExvZ2ljYWxJbW1lZGlhdGU6OmNy
ZWF0ZTY0KG1hc2subV92YWx1ZSk7CiAKLSAgICAgICAgICAgICAgICBpZiAobG9naWNhbEltbS5p
c1ZhbGlkKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIudHN0PDY0PihyZWcs
IGxvZ2ljYWxJbW0pOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gSnVtcChtYWtlQnJhbmNo
KGNvbmQpKTsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobG9naWNhbEltbS5p
c1ZhbGlkKCkpIHsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci50c3Q8NjQ+KHJlZywgbG9n
aWNhbEltbSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIEp1bXAobWFrZUJyYW5jaChjb25kKSk7
CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHNpZ25FeHRlbmQzMlRvUHRyKG1hc2ssIGdl
dENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CkBAIC0yNzczLDggKzI4
MzYsMjEgQEAgcHVibGljOgogCiAgICAgdm9pZCBjb21wYXJlMzIoUmVsYXRpb25hbENvbmRpdGlv
biBjb25kLCBSZWdpc3RlcklEIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCwgUmVnaXN0ZXJJRCBk
ZXN0KQogICAgIHsKLSAgICAgICAgbW92ZShyaWdodCwgZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3Rl
cklEQW5kSW52YWxpZGF0ZSgpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuY21wPDMyPihsZWZ0LCBk
YXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgaWYgKCFyaWdodC5tX3ZhbHVlKSB7CisgICAgICAg
ICAgICBpZiAoYXV0byByZXN1bHRDb25kaXRpb24gPSBjb21tdXRlQ29tcGFyZVRvWmVyb0ludG9U
ZXN0KGNvbmQpKSB7CisgICAgICAgICAgICAgICAgdGVzdDMyKCpyZXN1bHRDb25kaXRpb24sIGxl
ZnQsIGxlZnQsIGRlc3QpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorCisgICAgICAgIGlmIChpc1VJbnQxMihyaWdodC5tX3ZhbHVlKSkKKyAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLmNtcDwzMj4obGVmdCwgVUludDEyKHJpZ2h0Lm1fdmFsdWUpKTsK
KyAgICAgICAgZWxzZSBpZiAoaXNVSW50MTIoLXJpZ2h0Lm1fdmFsdWUpKQorICAgICAgICAgICAg
bV9hc3NlbWJsZXIuY21uPDMyPihsZWZ0LCBVSW50MTIoLXJpZ2h0Lm1fdmFsdWUpKTsKKyAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICBtb3ZlKHJpZ2h0LCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lz
dGVySURBbmRJbnZhbGlkYXRlKCkpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuY21wPDMyPihs
ZWZ0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgfQogICAgICAgICBtX2Fzc2VtYmxlci5j
c2V0PDMyPihkZXN0LCBBUk02NENvbmRpdGlvbihjb25kKSk7CiAgICAgfQogCkBAIC0yNzg2LDYg
KzI4NjIsMTMgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgY29tcGFyZTY0KFJlbGF0aW9uYWxD
b25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQsIFJlZ2lz
dGVySUQgZGVzdCkKICAgICB7CisgICAgICAgIGlmICghcmlnaHQubV92YWx1ZSkgeworICAgICAg
ICAgICAgaWYgKGF1dG8gcmVzdWx0Q29uZGl0aW9uID0gY29tbXV0ZUNvbXBhcmVUb1plcm9JbnRv
VGVzdChjb25kKSkgeworICAgICAgICAgICAgICAgIHRlc3Q2NCgqcmVzdWx0Q29uZGl0aW9uLCBs
ZWZ0LCBsZWZ0LCBkZXN0KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKwogICAgICAgICBzaWduRXh0ZW5kMzJUb1B0cihyaWdodCwgZ2V0Q2FjaGVk
RGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKICAgICAgICAgbV9hc3NlbWJsZXIu
Y21wPDY0PihsZWZ0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgbV9hc3NlbWJsZXIuY3Nl
dDwzMj4oZGVzdCwgQVJNNjRDb25kaXRpb24oY29uZCkpOwpAQCAtMjgwNiwxMiArMjg4OSw3IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgdGVzdDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3Rl
cklEIHNyYywgVHJ1c3RlZEltbTMyIG1hc2ssIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAg
ICAgIGlmIChtYXNrLm1fdmFsdWUgPT0gLTEpCi0gICAgICAgICAgICBtX2Fzc2VtYmxlci50c3Q8
MzI+KHNyYywgc3JjKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBzaWduRXh0ZW5kMzJU
b1B0cihtYXNrLCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOwot
ICAgICAgICAgICAgbV9hc3NlbWJsZXIudHN0PDMyPihzcmMsIGRhdGFUZW1wUmVnaXN0ZXIpOwot
ICAgICAgICB9CisgICAgICAgIHRlc3QzMihzcmMsIG1hc2spOwogICAgICAgICBtX2Fzc2VtYmxl
ci5jc2V0PDMyPihkZXN0LCBBUk02NENvbmRpdGlvbihjb25kKSk7CiAgICAgfQogCkBAIC0yOTk0
LDYgKzMwNzIsMjMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UmVsYXRp
b25hbENvbmRpdGlvbj4oQVJNNjRBc3NlbWJsZXI6OmludmVydChzdGF0aWNfY2FzdDxBUk02NEFz
c2VtYmxlcjo6Q29uZGl0aW9uPihjb25kKSkpOwogICAgIH0KIAorICAgIHN0YXRpYyBPcHRpb25h
bDxSZXN1bHRDb25kaXRpb24+IGNvbW11dGVDb21wYXJlVG9aZXJvSW50b1Rlc3QoUmVsYXRpb25h
bENvbmRpdGlvbiBjb25kKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChjb25kKSB7CisgICAgICAg
IGNhc2UgRXF1YWw6CisgICAgICAgICAgICByZXR1cm4gWmVybzsKKyAgICAgICAgY2FzZSBOb3RF
cXVhbDoKKyAgICAgICAgICAgIHJldHVybiBOb25aZXJvOworICAgICAgICBjYXNlIExlc3NUaGFu
OgorICAgICAgICAgICAgcmV0dXJuIFNpZ25lZDsKKyAgICAgICAgY2FzZSBHcmVhdGVyVGhhbk9y
RXF1YWw6CisgICAgICAgICAgICByZXR1cm4gUG9zaXRpdmVPclplcm87CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAg
ICAgICB9CisgICAgfQorCiAgICAgc3RhdGljIEZ1bmN0aW9uUHRyIHJlYWRDYWxsVGFyZ2V0KENv
ZGVMb2NhdGlvbkNhbGwgY2FsbCkKICAgICB7CiAgICAgICAgIHJldHVybiBGdW5jdGlvblB0cihy
ZWludGVycHJldF9jYXN0PHZvaWQoKikoKT4oQVJNNjRBc3NlbWJsZXI6OnJlYWRDYWxsVGFyZ2V0
KGNhbGwuZGF0YUxvY2F0aW9uKCkpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCmluZGV4IGZjOTRiODg4ZGUzNWU1OTc0
YmMwNWRiMTY1NjQ4MzEyNzk1YTc4MzcuLmE5OGIwMjcxOWMxMDZlZDhiMGU2ZTMwZWU3MjkwNDA4
YjU0YjQxNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJBUk12Ny5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJBUk12Ny5oCkBAIC0xMzU3LDcgKzEzNTcsOCBAQCBwcml2YXRlOgogICAg
ICAgICB9CiAgICAgfQogCi0gICAgdm9pZCB0ZXN0MzIoUmVnaXN0ZXJJRCByZWcsIFRydXN0ZWRJ
bW0zMiBtYXNrKQorcHVibGljOgorICAgIHZvaWQgdGVzdDMyKFJlZ2lzdGVySUQgcmVnLCBUcnVz
dGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigtMSkpCiAgICAgewogICAgICAgICBpbnQzMl90
IGltbSA9IG1hc2subV92YWx1ZTsKIApAQCAtMTM4MSwxMiArMTM4Miw2IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0KLXB1YmxpYzoKLSAgICB2b2lkIHRlc3Qz
MihSZXN1bHRDb25kaXRpb24sIFJlZ2lzdGVySUQgcmVnLCBUcnVzdGVkSW1tMzIgbWFzaykKLSAg
ICB7Ci0gICAgICAgIHRlc3QzMihyZWcsIG1hc2spOwotICAgIH0KICAgICAKICAgICBKdW1wIGJy
YW5jaChSZXN1bHRDb25kaXRpb24gY29uZCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKaW5kZXgg
M2IwY2U3NzlkNzc0ZGM0NDU3MTdmZjgzYTVkM2U4MTkzNjYzMGQxYS4uNDBlNDhkMDEzMjVlZTUz
OWZmNjk3Y2QzYzk3ZGI5MmUzY2EwYjAwZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaApAQCAtMzAsNiAr
MzAsNyBAQAogCiAjaW5jbHVkZSAiWDg2QXNzZW1ibGVyLmgiCiAjaW5jbHVkZSAiQWJzdHJhY3RN
YWNyb0Fzc2VtYmxlci5oIgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCiBuYW1lc3BhY2Ug
SlNDIHsKIApAQCAtMTc3OSwxMCArMTc4MCwxNCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIG1vdmVD
b25kaXRpb25hbGx5MzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQs
IFRydXN0ZWRJbW0zMiByaWdodCwgUmVnaXN0ZXJJRCB0aGVuQ2FzZSwgUmVnaXN0ZXJJRCBlbHNl
Q2FzZSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgaWYgKCgoY29uZCA9PSBFcXVh
bCkgfHwgKGNvbmQgPT0gTm90RXF1YWwpKSAmJiAhcmlnaHQubV92YWx1ZSkKLSAgICAgICAgICAg
IG1fYXNzZW1ibGVyLnRlc3RsX3JyKGxlZnQsIGxlZnQpOwotICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBtX2Fzc2VtYmxlci5jbXBsX2lyKHJpZ2h0Lm1fdmFsdWUsIGxlZnQpOworICAgICAgICBp
ZiAoIXJpZ2h0Lm1fdmFsdWUpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIHJlc3VsdENvbmRpdGlv
biA9IGNvbW11dGVDb21wYXJlVG9aZXJvSW50b1Rlc3QoY29uZCkpIHsKKyAgICAgICAgICAgICAg
ICBtb3ZlQ29uZGl0aW9uYWxseVRlc3QzMigqcmVzdWx0Q29uZGl0aW9uLCBsZWZ0LCBsZWZ0LCB0
aGVuQ2FzZSwgZWxzZUNhc2UsIGRlc3QpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIG1fYXNzZW1ibGVyLmNtcGxfaXIocmlnaHQu
bV92YWx1ZSwgbGVmdCk7CiAKICAgICAgICAgaWYgKHRoZW5DYXNlICE9IGRlc3QgJiYgZWxzZUNh
c2UgIT0gZGVzdCkgewogICAgICAgICAgICAgbW92ZShlbHNlQ2FzZSwgZGVzdCk7CkBAIC0xODIx
LDcgKzE4MjYsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIG1vdmVDb25kaXRpb25hbGx5VGVzdDMy
KFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHRlc3RSZWcsIFRydXN0ZWRJbW0zMiBt
YXNrLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgdGVz
dDMyKGNvbmQsIHRlc3RSZWcsIG1hc2spOworICAgICAgICB0ZXN0MzIodGVzdFJlZywgbWFzayk7
CiAgICAgICAgIGNtb3YoeDg2Q29uZGl0aW9uKGNvbmQpLCBzcmMsIGRlc3QpOwogICAgIH0KIApA
QCAtMTgzMCw3ICsxODM1LDcgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQoaXNJbnZlcnRpYmxl
KGNvbmQpKTsKICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShjb25kICE9IE92ZXJmbG93LCAi
VEVTVCBkb2VzIG5vdCBzZXQgdGhlIE92ZXJmbG93IEZsYWcuIik7CiAKLSAgICAgICAgdGVzdDMy
KGNvbmQsIHRlc3RSZWcsIG1hc2spOworICAgICAgICB0ZXN0MzIodGVzdFJlZywgbWFzayk7CiAK
ICAgICAgICAgaWYgKHRoZW5DYXNlICE9IGRlc3QgJiYgZWxzZUNhc2UgIT0gZGVzdCkgewogICAg
ICAgICAgICAgbW92ZShlbHNlQ2FzZSwgZGVzdCk7CkBAIC0xOTYwLDEwICsxOTY1LDEyIEBAIHB1
YmxpYzoKIAogICAgIEp1bXAgYnJhbmNoMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdp
c3RlcklEIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKICAgICB7Ci0gICAgICAgIGlmICgoKGNv
bmQgPT0gRXF1YWwpIHx8IChjb25kID09IE5vdEVxdWFsKSkgJiYgIXJpZ2h0Lm1fdmFsdWUpCi0g
ICAgICAgICAgICBtX2Fzc2VtYmxlci50ZXN0bF9ycihsZWZ0LCBsZWZ0KTsKLSAgICAgICAgZWxz
ZQotICAgICAgICAgICAgbV9hc3NlbWJsZXIuY21wbF9pcihyaWdodC5tX3ZhbHVlLCBsZWZ0KTsK
KyAgICAgICAgaWYgKCFyaWdodC5tX3ZhbHVlKSB7CisgICAgICAgICAgICBpZiAoYXV0byByZXN1
bHRDb25kaXRpb24gPSBjb21tdXRlQ29tcGFyZVRvWmVyb0ludG9UZXN0KGNvbmQpKQorICAgICAg
ICAgICAgICAgIHJldHVybiBicmFuY2hUZXN0MzIoKnJlc3VsdENvbmRpdGlvbiwgbGVmdCwgbGVm
dCk7CisgICAgICAgIH0KKworICAgICAgICBtX2Fzc2VtYmxlci5jbXBsX2lyKHJpZ2h0Lm1fdmFs
dWUsIGxlZnQpOwogICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qQ0MoeDg2Q29uZGl0
aW9uKGNvbmQpKSk7CiAgICAgfQogICAgIApAQCAtMjAwMiw3ICsyMDA5LDcgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qQ0MoeDg2Q29uZGl0aW9uKGNvbmQpKSk7
CiAgICAgfQogCi0gICAgdm9pZCB0ZXN0MzIoUmVzdWx0Q29uZGl0aW9uLCBSZWdpc3RlcklEIHJl
ZywgVHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQorICAgIHZvaWQgdGVzdDMy
KFJlZ2lzdGVySUQgcmVnLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigtMSkpCiAg
ICAgewogICAgICAgICBpZiAobWFzay5tX3ZhbHVlID09IC0xKQogICAgICAgICAgICAgbV9hc3Nl
bWJsZXIudGVzdGxfcnIocmVnLCByZWcpOwpAQCAtMjAyMiw3ICsyMDI5LDcgQEAgcHVibGljOgog
CiAgICAgSnVtcCBicmFuY2hUZXN0MzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQg
cmVnLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigtMSkpCiAgICAgewotICAgICAg
ICB0ZXN0MzIoY29uZCwgcmVnLCBtYXNrKTsKKyAgICAgICAgdGVzdDMyKHJlZywgbWFzayk7CiAg
ICAgICAgIHJldHVybiBicmFuY2goY29uZCk7CiAgICAgfQogCkBAIC0yMjkwLDEwICsyMjk3LDE0
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY29tcGFyZTMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29u
ZCwgUmVnaXN0ZXJJRCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkK
ICAgICB7Ci0gICAgICAgIGlmICgoKGNvbmQgPT0gRXF1YWwpIHx8IChjb25kID09IE5vdEVxdWFs
KSkgJiYgIXJpZ2h0Lm1fdmFsdWUpCi0gICAgICAgICAgICBtX2Fzc2VtYmxlci50ZXN0bF9ycihs
ZWZ0LCBsZWZ0KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9hc3NlbWJsZXIuY21wbF9p
cihyaWdodC5tX3ZhbHVlLCBsZWZ0KTsKKyAgICAgICAgaWYgKCFyaWdodC5tX3ZhbHVlKSB7Cisg
ICAgICAgICAgICBpZiAoYXV0byByZXN1bHRDb25kaXRpb24gPSBjb21tdXRlQ29tcGFyZVRvWmVy
b0ludG9UZXN0KGNvbmQpKSB7CisgICAgICAgICAgICAgICAgdGVzdDMyKCpyZXN1bHRDb25kaXRp
b24sIGxlZnQsIGxlZnQsIGRlc3QpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIG1fYXNzZW1ibGVyLmNtcGxfaXIocmlnaHQubV92
YWx1ZSwgbGVmdCk7CiAgICAgICAgIHNldDMyKHg4NkNvbmRpdGlvbihjb25kKSwgZGVzdCk7CiAg
ICAgfQogCkBAIC0yMzIzLDYgKzIzMzQsMTIgQEAgcHVibGljOgogICAgICAgICBzZXQzMih4ODZD
b25kaXRpb24oY29uZCksIGRlc3QpOwogICAgIH0KIAorICAgIHZvaWQgdGVzdDMyKFJlc3VsdENv
bmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHJlZywgVHJ1c3RlZEltbTMyIG1hc2ssIFJlZ2lzdGVy
SUQgZGVzdCkKKyAgICB7CisgICAgICAgIHRlc3QzMihyZWcsIG1hc2spOworICAgICAgICBzZXQz
Mih4ODZDb25kaXRpb24oY29uZCksIGRlc3QpOworICAgIH0KKwogICAgIHZvaWQgc2V0Q2Fycnko
UmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgc2V0MzIoWDg2QXNzZW1ibGVyOjpDb25k
aXRpb25DLCBkZXN0KTsKQEAgLTIzOTYsNiArMjQxMywyMyBAQCBwdWJsaWM6CiAgICAgICAgIH0K
ICAgICB9CiAKKyAgICBzdGF0aWMgT3B0aW9uYWw8UmVzdWx0Q29uZGl0aW9uPiBjb21tdXRlQ29t
cGFyZVRvWmVyb0ludG9UZXN0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCkKKyAgICB7CisgICAg
ICAgIHN3aXRjaCAoY29uZCkgeworICAgICAgICBjYXNlIEVxdWFsOgorICAgICAgICAgICAgcmV0
dXJuIFplcm87CisgICAgICAgIGNhc2UgTm90RXF1YWw6CisgICAgICAgICAgICByZXR1cm4gTm9u
WmVybzsKKyAgICAgICAgY2FzZSBMZXNzVGhhbjoKKyAgICAgICAgICAgIHJldHVybiBTaWduZWQ7
CisgICAgICAgIGNhc2UgR3JlYXRlclRoYW5PckVxdWFsOgorICAgICAgICAgICAgcmV0dXJuIFBv
c2l0aXZlT3JaZXJvOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHZvaWQgbm9w
KCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCmluZGV4IGY3
ZWIyYzlmNWVjZWJlZjA4M2Q2NjdmZTc1MDQxM2VmYjQ4M2UxYzAuLjJkYTRiOWExYTU1MWI5Mzk0
ODQ3NmQ2ZjQ0YTlkMDk0NjUzMzJlOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKQEAgLTcwMSwxOSArNzAxLDIx
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY29tcGFyZTY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29u
ZCwgUmVnaXN0ZXJJRCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkK
ICAgICB7Ci0gICAgICAgIGlmICgoKGNvbmQgPT0gRXF1YWwpIHx8IChjb25kID09IE5vdEVxdWFs
KSkgJiYgIXJpZ2h0Lm1fdmFsdWUpCi0gICAgICAgICAgICBtX2Fzc2VtYmxlci50ZXN0cV9ycihs
ZWZ0LCBsZWZ0KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9hc3NlbWJsZXIuY21wcV9p
cihyaWdodC5tX3ZhbHVlLCBsZWZ0KTsKLSAgICAgICAgbV9hc3NlbWJsZXIuc2V0Q0Nfcih4ODZD
b25kaXRpb24oY29uZCksIGRlc3QpOwotICAgICAgICBtX2Fzc2VtYmxlci5tb3Z6YmxfcnIoZGVz
dCwgZGVzdCk7CisgICAgICAgIGlmICghcmlnaHQubV92YWx1ZSkgeworICAgICAgICAgICAgaWYg
KGF1dG8gcmVzdWx0Q29uZGl0aW9uID0gY29tbXV0ZUNvbXBhcmVUb1plcm9JbnRvVGVzdChjb25k
KSkgeworICAgICAgICAgICAgICAgIHRlc3Q2NCgqcmVzdWx0Q29uZGl0aW9uLCBsZWZ0LCBsZWZ0
LCBkZXN0KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKworICAgICAgICBtX2Fzc2VtYmxlci5jbXBxX2lyKHJpZ2h0Lm1fdmFsdWUsIGxlZnQpOwor
ICAgICAgICBzZXQzMih4ODZDb25kaXRpb24oY29uZCksIGRlc3QpOwogICAgIH0KICAgICAKICAg
ICB2b2lkIGNvbXBhcmU2NChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVm
dCwgUmVnaXN0ZXJJRCByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9h
c3NlbWJsZXIuY21wcV9ycihyaWdodCwgbGVmdCk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnNldEND
X3IoeDg2Q29uZGl0aW9uKGNvbmQpLCBkZXN0KTsKLSAgICAgICAgbV9hc3NlbWJsZXIubW92emJs
X3JyKGRlc3QsIGRlc3QpOworICAgICAgICBzZXQzMih4ODZDb25kaXRpb24oY29uZCksIGRlc3Qp
OwogICAgIH0KIAogICAgIHZvaWQgY29tcGFyZURvdWJsZShEb3VibGVDb25kaXRpb24gY29uZCwg
RlBSZWdpc3RlcklEIGxlZnQsIEZQUmVnaXN0ZXJJRCByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQpA
QCAtNzU4LDkgKzc2MCw5IEBAIHB1YmxpYzoKIAogICAgIEp1bXAgYnJhbmNoNjQoUmVsYXRpb25h
bENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKICAg
ICB7Ci0gICAgICAgIGlmICgoKGNvbmQgPT0gRXF1YWwpIHx8IChjb25kID09IE5vdEVxdWFsKSkg
JiYgIXJpZ2h0Lm1fdmFsdWUpIHsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLnRlc3RxX3JyKGxl
ZnQsIGxlZnQpOwotICAgICAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuakNDKHg4NkNv
bmRpdGlvbihjb25kKSkpOworICAgICAgICBpZiAoIXJpZ2h0Lm1fdmFsdWUpIHsKKyAgICAgICAg
ICAgIGlmIChhdXRvIHJlc3VsdENvbmRpdGlvbiA9IGNvbW11dGVDb21wYXJlVG9aZXJvSW50b1Rl
c3QoY29uZCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3Q2NCgqcmVzdWx0Q29u
ZGl0aW9uLCBsZWZ0LCBsZWZ0KTsKICAgICAgICAgfQogICAgICAgICBtX2Fzc2VtYmxlci5jbXBx
X2lyKHJpZ2h0Lm1fdmFsdWUsIGxlZnQpOwogICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxl
ci5qQ0MoeDg2Q29uZGl0aW9uKGNvbmQpKSk7CkBAIC05OTQsNiArOTk2LDI4IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIGNtb3YoeDg2Q29uZGl0aW9uKGludmVydChjb25kKSksIGVsc2VDYXNlLCBk
ZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIG1vdmVDb25kaXRpb25hbGx5NjQoUmVsYXRpb25hbENv
bmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCwgUmVnaXN0
ZXJJRCB0aGVuQ2FzZSwgUmVnaXN0ZXJJRCBlbHNlQ2FzZSwgUmVnaXN0ZXJJRCBkZXN0KQorICAg
IHsKKyAgICAgICAgaWYgKCFyaWdodC5tX3ZhbHVlKSB7CisgICAgICAgICAgICBpZiAoYXV0byBy
ZXN1bHRDb25kaXRpb24gPSBjb21tdXRlQ29tcGFyZVRvWmVyb0ludG9UZXN0KGNvbmQpKSB7Cisg
ICAgICAgICAgICAgICAgbW92ZUNvbmRpdGlvbmFsbHlUZXN0NjQoKnJlc3VsdENvbmRpdGlvbiwg
bGVmdCwgbGVmdCwgdGhlbkNhc2UsIGVsc2VDYXNlLCBkZXN0KTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBtX2Fzc2VtYmxlci5j
bXBxX2lyKHJpZ2h0Lm1fdmFsdWUsIGxlZnQpOworCisgICAgICAgIGlmICh0aGVuQ2FzZSAhPSBk
ZXN0ICYmIGVsc2VDYXNlICE9IGRlc3QpIHsKKyAgICAgICAgICAgIG1vdmUoZWxzZUNhc2UsIGRl
c3QpOworICAgICAgICAgICAgZWxzZUNhc2UgPSBkZXN0OworICAgICAgICB9CisKKyAgICAgICAg
aWYgKGVsc2VDYXNlID09IGRlc3QpCisgICAgICAgICAgICBjbW92KHg4NkNvbmRpdGlvbihjb25k
KSwgdGhlbkNhc2UsIGRlc3QpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjbW92KHg4NkNv
bmRpdGlvbihpbnZlcnQoY29uZCkpLCBlbHNlQ2FzZSwgZGVzdCk7CisgICAgfQorCiAgICAgdm9p
ZCBtb3ZlQ29uZGl0aW9uYWxseVRlc3Q2NChSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJ
RCB0ZXN0UmVnLCBSZWdpc3RlcklEIG1hc2ssIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRl
c3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci50ZXN0cV9ycih0ZXN0UmVnLCBtYXNrKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKaW5kZXggODNkZDc0MzVj
NzNhODY0NDA2OGZlZGY4YTZjZDBmYmE3N2FlMTkyOC4uYWUyNDcwMzYyMmUwMTVlNWU5ZmFlMGRm
Y2FiMDU5N2IzYTc1NWMzYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
TG93ZXJUb0Fpci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fp
ci5jcHAKQEAgLTEzNzQsMTQgKzEzNzQsMzAgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgICAg
IC8vIE5vdyBoYW5kbGUgdGVzdCdzIHRoYXQgaW52b2x2ZSBhbiBpbW1lZGlhdGUgYW5kIGEgdG1w
LgogCi0gICAgICAgICAgICAgICAgaWYgKGxlZnRJbW0gJiYgbGVmdEltbS5pc1JlcHJlc2VudGFi
bGVBczx1aW50MzJfdD4oKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoSW5zdCByZXN1bHQg
PSB0cnlUZXN0KEFyZzo6V2lkdGgzMiwgbGVmdEltbSwgdG1wUHJvbWlzZShyaWdodCkpKQotICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgICAgICBpZiAo
bGVmdEltbSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoKHdpZHRoID09IEFyZzo6V2lkdGgz
MiAmJiBsZWZ0SW1tLnZhbHVlKCkgPT0gMHhmZmZmZmZmZikKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHx8ICh3aWR0aCA9PSBBcmc6OldpZHRoNjQgJiYgbGVmdEltbS52YWx1ZSgpID09IC0xKSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgQXJnUHJvbWlzZSBhcmdQcm9taXNlID0gdG1wUHJv
bWlzZShyaWdodCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoSW5zdCByZXN1bHQgPSB0
cnlUZXN0KHdpZHRoLCBhcmdQcm9taXNlLCBhcmdQcm9taXNlKSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgIGlmIChsZWZ0SW1tLmlzUmVwcmVzZW50YWJsZUFzPHVpbnQzMl90PigpKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoSW5zdCByZXN1bHQgPSB0cnlUZXN0KEFyZzo6
V2lkdGgzMiwgbGVmdEltbSwgdG1wUHJvbWlzZShyaWdodCkpKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBpZiAocmlnaHRJbW0gJiYgcmlnaHRJbW0uaXNS
ZXByZXNlbnRhYmxlQXM8dWludDMyX3Q+KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKElu
c3QgcmVzdWx0ID0gdHJ5VGVzdChBcmc6OldpZHRoMzIsIHRtcFByb21pc2UobGVmdCksIHJpZ2h0
SW1tKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAg
ICAgICAgaWYgKHJpZ2h0SW1tKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICgod2lkdGggPT0g
QXJnOjpXaWR0aDMyICYmIHJpZ2h0SW1tLnZhbHVlKCkgPT0gMHhmZmZmZmZmZikKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHx8ICh3aWR0aCA9PSBBcmc6OldpZHRoNjQgJiYgcmlnaHRJbW0udmFs
dWUoKSA9PSAtMSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIEFyZ1Byb21pc2UgYXJnUHJv
bWlzZSA9IHRtcFByb21pc2UobGVmdCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoSW5z
dCByZXN1bHQgPSB0cnlUZXN0KHdpZHRoLCBhcmdQcm9taXNlLCBhcmdQcm9taXNlKSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChyaWdodEltbS5pc1JlcHJlc2VudGFibGVBczx1
aW50MzJfdD4oKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEluc3QgcmVzdWx0ID0g
dHJ5VGVzdChBcmc6OldpZHRoMzIsIHRtcFByb21pc2UobGVmdCksIHJpZ2h0SW1tKSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgLy8gRmluYWxseSwganVz
dCBkbyB0bXAncy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
T3Bjb2RlLm9wY29kZXMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5v
cGNvZGVzCmluZGV4IGI2ZTE2YmU5MzJmN2E3ODE2MjQ5N2UxYjViMTY4ZWQ2NjdhMWIwZWMuLjQ2
YTVjZjcxZjExZTFjYzQ5ZDc3OWY1MzhjODcyYjQ3NjYwMDNiYWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2RlcwpAQCAtNjEzLDcgKzYxMyw3IEBA
IFN0b3JlMTYgVTpHOjE2LCBEOkc6MTYKIAogQ29tcGFyZTMyIFU6RzozMiwgVTpHOjMyLCBVOkc6
MzIsIFpEOkc6MzIKICAgICBSZWxDb25kLCBUbXAsIFRtcCwgVG1wCi0gICAgeDg2OiBSZWxDb25k
LCBUbXAsIEltbSwgVG1wCisgICAgUmVsQ29uZCwgVG1wLCBJbW0sIFRtcAogCiA2NDogQ29tcGFy
ZTY0IFU6RzozMiwgVTpHOjY0LCBVOkc6NjQsIFpEOkc6MzIKICAgICBSZWxDb25kLCBUbXAsIFRt
cCwgVG1wCkBAIC02MjIsNiArNjIyLDcgQEAgQ29tcGFyZTMyIFU6RzozMiwgVTpHOjMyLCBVOkc6
MzIsIFpEOkc6MzIKIFRlc3QzMiBVOkc6MzIsIFU6RzozMiwgVTpHOjMyLCBaRDpHOjMyCiAgICAg
eDg2OiBSZXNDb25kLCBBZGRyLCBJbW0sIFRtcAogICAgIFJlc0NvbmQsIFRtcCwgVG1wLCBUbXAK
KyAgICBSZXNDb25kLCBUbXAsIEJpdEltbSwgVG1wCiAKIDY0OiBUZXN0NjQgVTpHOjMyLCBVOkc6
NjQsIFU6Rzo2NCwgWkQ6RzozMgogICAgIHg4NjogUmVzQ29uZCwgVG1wLCBJbW0sIFRtcApAQCAt
NjYyLDcgKzY2Myw3IEBAIEJyYW5jaFRlc3Q4IFU6RzozMiwgVTpHOjgsIFU6Rzo4IC9icmFuY2gK
IAogQnJhbmNoVGVzdDMyIFU6RzozMiwgVTpHOjMyLCBVOkc6MzIgL2JyYW5jaAogICAgIFJlc0Nv
bmQsIFRtcCwgVG1wCi0gICAgeDg2OiBSZXNDb25kLCBUbXAsIEltbQorICAgIFJlc0NvbmQsIFRt
cCwgQml0SW1tCiAgICAgeDg2OiBSZXNDb25kLCBBZGRyLCBJbW0KICAgICB4ODY6IFJlc0NvbmQs
IEluZGV4LCBJbW0KIApAQCAtNjcwLDcgKzY3MSw3IEBAIEJyYW5jaFRlc3QzMiBVOkc6MzIsIFU6
RzozMiwgVTpHOjMyIC9icmFuY2gKICMgQnJhbmNoVGVzdDMyIGluIG1vc3QgY2FzZXMgd2hlcmUg
eW91IHVzZSBhbiBpbW1lZGlhdGUuCiA2NDogQnJhbmNoVGVzdDY0IFU6RzozMiwgVTpHOjY0LCBV
Okc6NjQgL2JyYW5jaAogICAgIFJlc0NvbmQsIFRtcCwgVG1wCi0gICAgeDg2OiBSZXNDb25kLCBU
bXAsIEltbQorICAgIFJlc0NvbmQsIFRtcCwgQml0SW1tNjQKICAgICB4ODY6IFJlc0NvbmQsIEFk
ZHIsIEltbQogICAgIHg4NjogUmVzQ29uZCwgQWRkciwgVG1wCiAgICAgeDg2OiBSZXNDb25kLCBJ
bmRleCwgSW1tCkBAIC03NDgsNiArNzQ5LDcgQEAgTW92ZUNvbmRpdGlvbmFsbHkzMiBVOkc6MzIs
IFU6RzozMiwgVTpHOjMyLCBVOkc6UHRyLCBVOkc6UHRyLCBEOkc6UHRyCiAKIDY0OiBNb3ZlQ29u
ZGl0aW9uYWxseTY0IFU6RzozMiwgVTpHOjY0LCBVOkc6NjQsIFU6RzpQdHIsIFU6RzpQdHIsIEQ6
RzpQdHIKICAgICBSZWxDb25kLCBUbXAsIFRtcCwgVG1wLCBUbXAsIFRtcAorICAgIFJlbENvbmQs
IFRtcCwgSW1tLCBUbXAsIFRtcCwgVG1wCiAKIE1vdmVDb25kaXRpb25hbGx5VGVzdDMyIFU6Rzoz
MiwgVTpHOjMyLCBVOkc6MzIsIFU6RzpQdHIsIFVEOkc6UHRyCiAgICAgUmVzQ29uZCwgVG1wLCBU
bXAsIFRtcCwgVG1wCkBAIC03NTUsNyArNzU3LDcgQEAgTW92ZUNvbmRpdGlvbmFsbHlUZXN0MzIg
VTpHOjMyLCBVOkc6MzIsIFU6RzozMiwgVTpHOlB0ciwgVUQ6RzpQdHIKIAogTW92ZUNvbmRpdGlv
bmFsbHlUZXN0MzIgVTpHOjMyLCBVOkc6MzIsIFU6RzozMiwgVTpHOlB0ciwgVTpHOlB0ciwgRDpH
OlB0cgogICAgIFJlc0NvbmQsIFRtcCwgVG1wLCBUbXAsIFRtcCwgVG1wCi0gICAgeDg2OiBSZXND
b25kLCBUbXAsIEltbSwgVG1wLCBUbXAsIFRtcAorICAgIFJlc0NvbmQsIFRtcCwgQml0SW1tLCBU
bXAsIFRtcCwgVG1wCiAKIDY0OiBNb3ZlQ29uZGl0aW9uYWxseVRlc3Q2NCBVOkc6MzIsIFU6Rzo2
NCwgVTpHOjY0LCBVOkc6UHRyLCBVRDpHOlB0cgogICAgIFJlc0NvbmQsIFRtcCwgVG1wLCBUbXAs
IFRtcApAQCAtNzk1LDcgKzc5Nyw3IEBAIE1vdmVEb3VibGVDb25kaXRpb25hbGx5MzIgVTpHOjMy
LCBVOkc6MzIsIFU6RzozMiwgVTpGOjY0LCBVOkY6NjQsIEQ6Rjo2NAogCiBNb3ZlRG91YmxlQ29u
ZGl0aW9uYWxseVRlc3QzMiBVOkc6MzIsIFU6RzozMiwgVTpHOjMyLCBVOkY6NjQsIFU6Rjo2NCwg
RDpGOjY0CiAgICAgUmVzQ29uZCwgVG1wLCBUbXAsIFRtcCwgVG1wLCBUbXAKLSAgICB4ODY6IFJl
c0NvbmQsIFRtcCwgSW1tLCBUbXAsIFRtcCwgVG1wCisgICAgUmVzQ29uZCwgVG1wLCBCaXRJbW0s
IFRtcCwgVG1wLCBUbXAKICAgICB4ODY6IFJlc0NvbmQsIEFkZHIsIEltbSwgVG1wLCBUbXAsIFRt
cAogICAgIHg4NjogUmVzQ29uZCwgSW5kZXgsIEltbSwgVG1wLCBUbXAsIFRtcAogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy90ZXN0YjMuY3BwCmluZGV4IGQyMjE2YzgyMmE4ZjA4NmEwNTBiMjIwNjdhOTg0
NmRhMjk1ZjE4NzguLmM5MzEzY2IwMzBmNzczNWU0NTliZWZjYTc5ZDhlYmFjNTg2ZmU0MDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCkBAIC0xNTAsMTAgKzE1MCwxMCBAQCBWZWN0
b3I8T3BlcmFuZDxGbG9hdFR5cGU+PiBmbG9hdGluZ1BvaW50T3BlcmFuZHMoKQogc3RhdGljIFZl
Y3RvcjxJbnQ2NE9wZXJhbmQ+IGludDY0T3BlcmFuZHMoKQogewogICAgIFZlY3RvcjxJbnQ2NE9w
ZXJhbmQ+IG9wZXJhbmRzOwotICAgIGZvciAoY29uc3QgYXV0byYgZG91YmxlT3BlcmFuZCA6IGZs
b2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpCi0gICAgICAgIG9wZXJhbmRzLmFwcGVuZCh7
IGRvdWJsZU9wZXJhbmQubmFtZSwgYml0d2lzZV9jYXN0PGludDY0X3Q+KGRvdWJsZU9wZXJhbmQu
dmFsdWUpIH0pOwogICAgIG9wZXJhbmRzLmFwcGVuZCh7ICIxIiwgMSB9KTsKICAgICBvcGVyYW5k
cy5hcHBlbmQoeyAiLTEiLCAtMSB9KTsKKyAgICBvcGVyYW5kcy5hcHBlbmQoeyAiNDIiLCA0MiB9
KTsKKyAgICBvcGVyYW5kcy5hcHBlbmQoeyAiLTQyIiwgLTQyIH0pOwogICAgIG9wZXJhbmRzLmFw
cGVuZCh7ICJpbnQ2NC1tYXgiLCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgoKSB9
KTsKICAgICBvcGVyYW5kcy5hcHBlbmQoeyAiaW50NjQtbWluIiwgc3RkOjpudW1lcmljX2xpbWl0
czxpbnQ2NF90Pjo6bWluKCkgfSk7CiAgICAgb3BlcmFuZHMuYXBwZW5kKHsgImludDMyLW1heCIs
IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpIH0pOwpAQCAtODgyMiw3ICs4ODIy
LDggQEAgdm9pZCBnZW5lcmljVGVzdENvbXBhcmUoCiAgICAgfQogfQogCi1pbnQgbW9kZWxDb21w
YXJlKEIzOjpPcGNvZGUgb3Bjb2RlLCBpbnQgbGVmdCwgaW50IHJpZ2h0KQordGVtcGxhdGU8dHlw
ZW5hbWUgSW5wdXRUeXBlPgorSW5wdXRUeXBlIG1vZGVsQ29tcGFyZShCMzo6T3Bjb2RlIG9wY29k
ZSwgSW5wdXRUeXBlIGxlZnQsIElucHV0VHlwZSByaWdodCkKIHsKICAgICBzd2l0Y2ggKG9wY29k
ZSkgewogICAgIGNhc2UgRXF1YWw6CkBAIC04ODM4LDEzICs4ODM5LDE3IEBAIGludCBtb2RlbENv
bXBhcmUoQjM6Ok9wY29kZSBvcGNvZGUsIGludCBsZWZ0LCBpbnQgcmlnaHQpCiAgICAgY2FzZSBH
cmVhdGVyRXF1YWw6CiAgICAgICAgIHJldHVybiBsZWZ0ID49IHJpZ2h0OwogICAgIGNhc2UgQWJv
dmU6Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obGVmdCkgPiBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4ocmlnaHQpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dHlwZW5h
bWUgc3RkOjptYWtlX3Vuc2lnbmVkPElucHV0VHlwZT46OnR5cGU+KGxlZnQpID4KKyAgICAgICAg
ICAgIHN0YXRpY19jYXN0PHR5cGVuYW1lIHN0ZDo6bWFrZV91bnNpZ25lZDxJbnB1dFR5cGU+Ojp0
eXBlPihyaWdodCk7CiAgICAgY2FzZSBCZWxvdzoKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihsZWZ0KSA8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihyaWdodCk7CisgICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDx0eXBlbmFtZSBzdGQ6Om1ha2VfdW5zaWduZWQ8SW5wdXRUeXBl
Pjo6dHlwZT4obGVmdCkgPAorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dHlwZW5hbWUgc3RkOjpt
YWtlX3Vuc2lnbmVkPElucHV0VHlwZT46OnR5cGU+KHJpZ2h0KTsKICAgICBjYXNlIEFib3ZlRXF1
YWw6Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obGVmdCkgPj0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KHJpZ2h0KTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHR5cGVu
YW1lIHN0ZDo6bWFrZV91bnNpZ25lZDxJbnB1dFR5cGU+Ojp0eXBlPihsZWZ0KSA+PQorICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8dHlwZW5hbWUgc3RkOjptYWtlX3Vuc2lnbmVkPElucHV0VHlwZT46
OnR5cGU+KHJpZ2h0KTsKICAgICBjYXNlIEJlbG93RXF1YWw6Ci0gICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4obGVmdCkgPD0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJpZ2h0KTsK
KyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHR5cGVuYW1lIHN0ZDo6bWFrZV91bnNpZ25lZDxJ
bnB1dFR5cGU+Ojp0eXBlPihsZWZ0KSA8PQorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dHlwZW5h
bWUgc3RkOjptYWtlX3Vuc2lnbmVkPElucHV0VHlwZT46OnR5cGU+KHJpZ2h0KTsKICAgICBjYXNl
IEJpdEFuZDoKICAgICAgICAgcmV0dXJuICEhKGxlZnQgJiByaWdodCk7CiAgICAgZGVmYXVsdDoK
QEAgLTg5MzksNyArODk0NCw4IEBAIHZvaWQgdGVzdENvbXBhcmVMb2FkKEIzOjpPcGNvZGUgb3Bj
b2RlLCBCMzo6T3Bjb2RlIGxvYWRPcGNvZGUsIGludCBsZWZ0LCBpbnQgcmlnCiAKIHZvaWQgdGVz
dENvbXBhcmVJbXBsKEIzOjpPcGNvZGUgb3Bjb2RlLCBpbnQ2NF90IGxlZnQsIGludDY0X3Qgcmln
aHQpCiB7Ci0gICAgaW50IHJlc3VsdCA9IG1vZGVsQ29tcGFyZShvcGNvZGUsIGxlZnQsIHJpZ2h0
KTsKKyAgICBpbnQ2NF90IHJlc3VsdCA9IG1vZGVsQ29tcGFyZShvcGNvZGUsIGxlZnQsIHJpZ2h0
KTsKKyAgICBpbnQzMl90IGludDMyUmVzdWx0ID0gbW9kZWxDb21wYXJlKG9wY29kZSwgc3RhdGlj
X2Nhc3Q8aW50MzJfdD4obGVmdCksIHN0YXRpY19jYXN0PGludDMyX3Q+KHJpZ2h0KSk7CiAgICAg
CiAgICAgLy8gVGVzdCB0bXAtdG8tdG1wLgogICAgIGdlbmVyaWNUZXN0Q29tcGFyZSgKQEAgLTg5
NjMsNyArODk2OSw3IEBAIHZvaWQgdGVzdENvbXBhcmVJbXBsKEIzOjpPcGNvZGUgb3Bjb2RlLCBp
bnQ2NF90IGxlZnQsIGludDY0X3QgcmlnaHQpCiAgICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMs
IE9yaWdpbigpLAogICAgICAgICAgICAgICAgIGJsb2NrLT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOwogICAgICAgICB9
LAotICAgICAgICBsZWZ0LCByaWdodCwgcmVzdWx0KTsKKyAgICAgICAgbGVmdCwgcmlnaHQsIGlu
dDMyUmVzdWx0KTsKIAogICAgIC8vIFRlc3QgaW1tLXRvLXRtcC4KICAgICBnZW5lcmljVGVzdENv
bXBhcmUoCkBAIC04OTg1LDcgKzg5OTEsNyBAQCB2b2lkIHRlc3RDb21wYXJlSW1wbChCMzo6T3Bj
b2RlIG9wY29kZSwgaW50NjRfdCBsZWZ0LCBpbnQ2NF90IHJpZ2h0KQogICAgICAgICAgICAgICAg
IHByb2MsIFRydW5jLCBPcmlnaW4oKSwKICAgICAgICAgICAgICAgICBibG9jay0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEp
KTsKICAgICAgICAgfSwKLSAgICAgICAgbGVmdCwgcmlnaHQsIHJlc3VsdCk7CisgICAgICAgIGxl
ZnQsIHJpZ2h0LCBpbnQzMlJlc3VsdCk7CiAKICAgICAvLyBUZXN0IHRtcC10by1pbW0uCiAgICAg
Z2VuZXJpY1Rlc3RDb21wYXJlKApAQCAtOTAwNyw3ICs5MDEzLDcgQEAgdm9pZCB0ZXN0Q29tcGFy
ZUltcGwoQjM6Ok9wY29kZSBvcGNvZGUsIGludDY0X3QgbGVmdCwgaW50NjRfdCByaWdodCkKICAg
ICAgICAgWyZdIChCYXNpY0Jsb2NrKiBibG9jaywgUHJvY2VkdXJlJiBwcm9jKSB7CiAgICAgICAg
ICAgICByZXR1cm4gYmxvY2stPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigp
LCByaWdodCk7CiAgICAgICAgIH0sCi0gICAgICAgIGxlZnQsIHJpZ2h0LCByZXN1bHQpOworICAg
ICAgICBsZWZ0LCByaWdodCwgaW50MzJSZXN1bHQpOwogCiAgICAgLy8gVGVzdCBpbW0tdG8taW1t
LgogICAgIGdlbmVyaWNUZXN0Q29tcGFyZSgKQEAgLTkwMjcsNyArOTAzMyw3IEBAIHZvaWQgdGVz
dENvbXBhcmVJbXBsKEIzOjpPcGNvZGUgb3Bjb2RlLCBpbnQ2NF90IGxlZnQsIGludDY0X3Qgcmln
aHQpCiAgICAgICAgIFsmXSAoQmFzaWNCbG9jayogYmxvY2ssIFByb2NlZHVyZSYgcHJvYykgewog
ICAgICAgICAgICAgcmV0dXJuIGJsb2NrLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgcmlnaHQpOwogICAgICAgICB9LAotICAgICAgICBsZWZ0LCByaWdodCwgcmVzdWx0
KTsKKyAgICAgICAgbGVmdCwgcmlnaHQsIGludDMyUmVzdWx0KTsKIAogICAgIHRlc3RDb21wYXJl
TG9hZDxpbnQzMl90PihvcGNvZGUsIExvYWQsIGxlZnQsIHJpZ2h0KTsKICAgICB0ZXN0Q29tcGFy
ZUxvYWQ8aW50OF90PihvcGNvZGUsIExvYWQ4UywgbGVmdCwgcmlnaHQpOwpAQCAtOTAzNiwzNyAr
OTA0MiwxMSBAQCB2b2lkIHRlc3RDb21wYXJlSW1wbChCMzo6T3Bjb2RlIG9wY29kZSwgaW50NjRf
dCBsZWZ0LCBpbnQ2NF90IHJpZ2h0KQogICAgIHRlc3RDb21wYXJlTG9hZDx1aW50MTZfdD4ob3Bj
b2RlLCBMb2FkMTZaLCBsZWZ0LCByaWdodCk7CiB9CiAKLXZvaWQgdGVzdENvbXBhcmUoQjM6Ok9w
Y29kZSBvcGNvZGUsIGludCBsZWZ0LCBpbnQgcmlnaHQpCit2b2lkIHRlc3RDb21wYXJlKEIzOjpP
cGNvZGUgb3Bjb2RlLCBpbnQ2NF90IGxlZnQsIGludDY0X3QgcmlnaHQpCiB7Ci0gICAgYXV0byB2
YXJpYW50cyA9IFsmXSAoaW50IGxlZnQsIGludCByaWdodCkgewotICAgICAgICB0ZXN0Q29tcGFy
ZUltcGwob3Bjb2RlLCBsZWZ0LCByaWdodCk7Ci0gICAgICAgIHRlc3RDb21wYXJlSW1wbChvcGNv
ZGUsIGxlZnQsIHJpZ2h0ICsgMSk7Ci0gICAgICAgIHRlc3RDb21wYXJlSW1wbChvcGNvZGUsIGxl
ZnQsIHJpZ2h0IC0gMSk7Ci0KLSAgICAgICAgYXV0byBtdWx0aXBsaWVkVGVzdHMgPSBbJl0gKGlu
dCBmYWN0b3IpIHsKLSAgICAgICAgICAgIHRlc3RDb21wYXJlSW1wbChvcGNvZGUsIGxlZnQgKiBm
YWN0b3IsIHJpZ2h0KTsKLSAgICAgICAgICAgIHRlc3RDb21wYXJlSW1wbChvcGNvZGUsIGxlZnQg
KiBmYWN0b3IsIHJpZ2h0ICsgMSk7Ci0gICAgICAgICAgICB0ZXN0Q29tcGFyZUltcGwob3Bjb2Rl
LCBsZWZ0ICogZmFjdG9yLCByaWdodCAtIDEpOwotICAgICAgICAKLSAgICAgICAgICAgIHRlc3RD
b21wYXJlSW1wbChvcGNvZGUsIGxlZnQsIHJpZ2h0ICogZmFjdG9yKTsKLSAgICAgICAgICAgIHRl
c3RDb21wYXJlSW1wbChvcGNvZGUsIGxlZnQsIChyaWdodCArIDEpICogZmFjdG9yKTsKLSAgICAg
ICAgICAgIHRlc3RDb21wYXJlSW1wbChvcGNvZGUsIGxlZnQsIChyaWdodCAtIDEpICogZmFjdG9y
KTsKLSAgICAgICAgCi0gICAgICAgICAgICB0ZXN0Q29tcGFyZUltcGwob3Bjb2RlLCBsZWZ0ICog
ZmFjdG9yLCByaWdodCAqIGZhY3Rvcik7Ci0gICAgICAgICAgICB0ZXN0Q29tcGFyZUltcGwob3Bj
b2RlLCBsZWZ0ICogZmFjdG9yLCAocmlnaHQgKyAxKSAqIGZhY3Rvcik7Ci0gICAgICAgICAgICB0
ZXN0Q29tcGFyZUltcGwob3Bjb2RlLCBsZWZ0ICogZmFjdG9yLCAocmlnaHQgLSAxKSAqIGZhY3Rv
cik7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgbXVsdGlwbGllZFRlc3RzKDEwKTsKLSAgICAgICAg
bXVsdGlwbGllZFRlc3RzKDEwMCk7Ci0gICAgICAgIG11bHRpcGxpZWRUZXN0cygxMDAwKTsKLSAg
ICAgICAgbXVsdGlwbGllZFRlc3RzKDEwMDAwMCk7Ci0gICAgfTsKLQotICAgIHZhcmlhbnRzKGxl
ZnQsIHJpZ2h0KTsKLSAgICB2YXJpYW50cygtbGVmdCwgcmlnaHQpOwotICAgIHZhcmlhbnRzKGxl
ZnQsIC1yaWdodCk7Ci0gICAgdmFyaWFudHMoLWxlZnQsIC1yaWdodCk7CisgICAgdGVzdENvbXBh
cmVJbXBsKG9wY29kZSwgbGVmdCwgcmlnaHQpOworICAgIHRlc3RDb21wYXJlSW1wbChvcGNvZGUs
IGxlZnQsIHJpZ2h0ICsgMSk7CisgICAgdGVzdENvbXBhcmVJbXBsKG9wY29kZSwgbGVmdCwgcmln
aHQgLSAxKTsKIH0KIAogdm9pZCB0ZXN0RXF1YWxEb3VibGUoZG91YmxlIGxlZnQsIGRvdWJsZSBy
aWdodCwgYm9vbCByZXN1bHQpCkBAIC0xMDg5OSw2ICsxMDg3OSwyMCBAQCB2b2lkIHRlc3RDaGVj
a1NlbGVjdENoZWNrU2VsZWN0KCkKICAgICBDSEVDSyhpbnZva2U8aW50PigqY29kZSwgdHJ1ZSwg
ZmFsc2UpID09IDY2Nyk7CiB9CiAKK2RvdWJsZSBiM1Bvdyhkb3VibGUgeCwgaW50IHkpCit7Cisg
ICAgaWYgKHkgPCAwIHx8IHkgPiAxMDAwKQorICAgICAgICByZXR1cm4gcG93KHgsIHkpOworICAg
IGRvdWJsZSByZXN1bHQgPSAxOworICAgIHdoaWxlICh5KSB7CisgICAgICAgIGlmICh5ICYgMSkK
KyAgICAgICAgICAgIHJlc3VsdCAqPSB4OworICAgICAgICB4ICo9IHg7CisgICAgICAgIHkgPj49
IDE7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKIHZvaWQgdGVzdFBvd0RvdWJsZUJ5
SW50ZWdlckxvb3AoZG91YmxlIHhPcGVyYW5kLCBpbnQzMl90IHlPcGVyYW5kKQogewogICAgIFBy
b2NlZHVyZSBwcm9jOwpAQCAtMTA5MTEsNyArMTA5MDUsNyBAQCB2b2lkIHRlc3RQb3dEb3VibGVC
eUludGVnZXJMb29wKGRvdWJsZSB4T3BlcmFuZCwgaW50MzJfdCB5T3BlcmFuZCkKICAgICBCYXNp
Y0Jsb2NrKiBjb250aW51YXRpb24gPSByZXN1bHQuZmlyc3Q7CiAgICAgY29udGludWF0aW9uLT5h
cHBlbmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQuc2Vj
b25kKTsKIAotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9j
LCB4T3BlcmFuZCwgeU9wZXJhbmQpLCBwb3coeE9wZXJhbmQsIHlPcGVyYW5kKSkpOworICAgIENI
RUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCB4T3BlcmFuZCwgeU9w
ZXJhbmQpLCBiM1Bvdyh4T3BlcmFuZCwgeU9wZXJhbmQpKSk7CiB9CiAKIHZvaWQgdGVzdFRydW5j
T3JIaWdoKCkKQEAgLTEyMjQ4LDE5ICsxMjI0MiwxNyBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBm
aWx0ZXIpCiAgICAgUlVOKHRlc3RDaGVja011bEFyZ3VtZW50QWxpYXNpbmc2NCgpKTsKICAgICBS
VU4odGVzdENoZWNrTXVsQXJndW1lbnRBbGlhc2luZzMyKCkpOwogCi0gICAgUlVOKHRlc3RDb21w
YXJlKEVxdWFsLCA0MiwgNDIpKTsKLSAgICBSVU4odGVzdENvbXBhcmUoTm90RXF1YWwsIDQyLCA0
MikpOwotICAgIFJVTih0ZXN0Q29tcGFyZShMZXNzVGhhbiwgNDIsIDQyKSk7Ci0gICAgUlVOKHRl
c3RDb21wYXJlKEdyZWF0ZXJUaGFuLCA0MiwgNDIpKTsKLSAgICBSVU4odGVzdENvbXBhcmUoTGVz
c0VxdWFsLCA0MiwgNDIpKTsKLSAgICBSVU4odGVzdENvbXBhcmUoR3JlYXRlckVxdWFsLCA0Miwg
NDIpKTsKLSAgICBSVU4odGVzdENvbXBhcmUoQmVsb3csIDQyLCA0MikpOwotICAgIFJVTih0ZXN0
Q29tcGFyZShBYm92ZSwgNDIsIDQyKSk7Ci0gICAgUlVOKHRlc3RDb21wYXJlKEJlbG93RXF1YWws
IDQyLCA0MikpOwotICAgIFJVTih0ZXN0Q29tcGFyZShBYm92ZUVxdWFsLCA0MiwgNDIpKTsKLQot
ICAgIFJVTih0ZXN0Q29tcGFyZShCaXRBbmQsIDQyLCA0MikpOwotICAgIFJVTih0ZXN0Q29tcGFy
ZShCaXRBbmQsIDQyLCAwKSk7CisgICAgUlVOX0JJTkFSWShbXShpbnQzMl90IGEsIGludDMyX3Qg
YikgeyB0ZXN0Q29tcGFyZShFcXVhbCwgYSwgYik7IH0sIGludDY0T3BlcmFuZHMoKSwgaW50NjRP
cGVyYW5kcygpKTsKKyAgICBSVU5fQklOQVJZKFtdKGludDMyX3QgYSwgaW50MzJfdCBiKSB7IHRl
c3RDb21wYXJlKE5vdEVxdWFsLCBhLCBiKTsgfSwgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJh
bmRzKCkpOworICAgIFJVTl9CSU5BUlkoW10oaW50MzJfdCBhLCBpbnQzMl90IGIpIHsgdGVzdENv
bXBhcmUoTGVzc1RoYW4sIGEsIGIpOyB9LCBpbnQ2NE9wZXJhbmRzKCksIGludDY0T3BlcmFuZHMo
KSk7CisgICAgUlVOX0JJTkFSWShbXShpbnQzMl90IGEsIGludDMyX3QgYikgeyB0ZXN0Q29tcGFy
ZShHcmVhdGVyVGhhbiwgYSwgYik7IH0sIGludDY0T3BlcmFuZHMoKSwgaW50NjRPcGVyYW5kcygp
KTsKKyAgICBSVU5fQklOQVJZKFtdKGludDMyX3QgYSwgaW50MzJfdCBiKSB7IHRlc3RDb21wYXJl
KExlc3NFcXVhbCwgYSwgYik7IH0sIGludDY0T3BlcmFuZHMoKSwgaW50NjRPcGVyYW5kcygpKTsK
KyAgICBSVU5fQklOQVJZKFtdKGludDMyX3QgYSwgaW50MzJfdCBiKSB7IHRlc3RDb21wYXJlKEdy
ZWF0ZXJFcXVhbCwgYSwgYik7IH0sIGludDY0T3BlcmFuZHMoKSwgaW50NjRPcGVyYW5kcygpKTsK
KyAgICBSVU5fQklOQVJZKFtdKGludDMyX3QgYSwgaW50MzJfdCBiKSB7IHRlc3RDb21wYXJlKEJl
bG93LCBhLCBiKTsgfSwgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOworICAgIFJV
Tl9CSU5BUlkoW10oaW50MzJfdCBhLCBpbnQzMl90IGIpIHsgdGVzdENvbXBhcmUoQWJvdmUsIGEs
IGIpOyB9LCBpbnQ2NE9wZXJhbmRzKCksIGludDY0T3BlcmFuZHMoKSk7CisgICAgUlVOX0JJTkFS
WShbXShpbnQzMl90IGEsIGludDMyX3QgYikgeyB0ZXN0Q29tcGFyZShCZWxvd0VxdWFsLCBhLCBi
KTsgfSwgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOworICAgIFJVTl9CSU5BUlko
W10oaW50MzJfdCBhLCBpbnQzMl90IGIpIHsgdGVzdENvbXBhcmUoQWJvdmVFcXVhbCwgYSwgYik7
IH0sIGludDY0T3BlcmFuZHMoKSwgaW50NjRPcGVyYW5kcygpKTsKKyAgICBSVU5fQklOQVJZKFtd
KGludDMyX3QgYSwgaW50MzJfdCBiKSB7IHRlc3RDb21wYXJlKEJpdEFuZCwgYSwgYik7IH0sIGlu
dDY0T3BlcmFuZHMoKSwgaW50NjRPcGVyYW5kcygpKTsKIAogICAgIFJVTih0ZXN0RXF1YWxEb3Vi
bGUoNDIsIDQyLCB0cnVlKSk7CiAgICAgUlVOKHRlc3RFcXVhbERvdWJsZSgwLCAtMCwgdHJ1ZSkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApp
bmRleCA2YzI0OTQyZjAzZTFkODEwODVkYjIzMTQzOTlhNjIwNDVhNWJhYmU3Li44YTdkMzllMDVi
NmViZjRlNWYwNTdiYmM0ZjQ4Y2ZmNGEzNjM2ZTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMTI5MywxNCArMTI5MywxNCBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVCb29sZWFuQnJhbmNoKE5vZGUqIG5v
ZGUsIE5vZGUqIGJyYW5jaE5vZGUsCiAgICAgICAgIG5vdFRha2VuID0gdG1wOwogICAgIH0KIAot
ICAgIGlmIChub2RlLT5jaGlsZDEoKS0+aXNCb29sZWFuQ29uc3RhbnQoKSkgewotICAgICAgICBi
b29sIGltbSA9IG5vZGUtPmNoaWxkMSgpLT5hc0Jvb2xlYW4oKTsKKyAgICBpZiAobm9kZS0+Y2hp
bGQxKCktPmlzSW50MzJDb25zdGFudCgpKSB7CisgICAgICAgIGludDMyX3QgaW1tID0gbm9kZS0+
Y2hpbGQxKCktPmFzSW50MzIoKTsKICAgICAgICAgU3BlY3VsYXRlQm9vbGVhbk9wZXJhbmQgb3Ay
KHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKLSAgICAgICAgYnJhbmNoMzIoY29uZGl0aW9uLCBKSVRD
b21waWxlcjo6SW1tMzIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNWYWx1ZTo6ZW5jb2RlKGpzQm9v
bGVhbihpbW0pKSkpLCBvcDIuZ3ByKCksIHRha2VuKTsKLSAgICB9IGVsc2UgaWYgKG5vZGUtPmNo
aWxkMigpLT5pc0Jvb2xlYW5Db25zdGFudCgpKSB7CisgICAgICAgIGJyYW5jaDMyKGNvbmRpdGlv
biwgSklUQ29tcGlsZXI6OkltbTMyKGltbSksIG9wMi5ncHIoKSwgdGFrZW4pOworICAgIH0gZWxz
ZSBpZiAobm9kZS0+Y2hpbGQyKCktPmlzSW50MzJDb25zdGFudCgpKSB7CiAgICAgICAgIFNwZWN1
bGF0ZUJvb2xlYW5PcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIGJv
b2wgaW1tID0gbm9kZS0+Y2hpbGQyKCktPmFzQm9vbGVhbigpOwotICAgICAgICBicmFuY2gzMihj
b25kaXRpb24sIG9wMS5ncHIoKSwgSklUQ29tcGlsZXI6OkltbTMyKHN0YXRpY19jYXN0PGludDMy
X3Q+KEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oaW1tKSkpKSwgdGFrZW4pOworICAgICAgICBp
bnQzMl90IGltbSA9IG5vZGUtPmNoaWxkMigpLT5hc0ludDMyKCk7CisgICAgICAgIGJyYW5jaDMy
KGNvbmRpdGlvbiwgb3AxLmdwcigpLCBKSVRDb21waWxlcjo6SW1tMzIoaW1tKSwgdGFrZW4pOwog
ICAgIH0gZWxzZSB7CiAgICAgICAgIFNwZWN1bGF0ZUJvb2xlYW5PcGVyYW5kIG9wMSh0aGlzLCBu
b2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIFNwZWN1bGF0ZUJvb2xlYW5PcGVyYW5kIG9wMih0aGlz
LCBub2RlLT5jaGlsZDIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCA5N2U3MjE3MjE2YTI1MTc3MWE5ZDUwMzVhYTQyZTQz
YzkwYzZhOGQ1Li41ZmE5Y2E1ZTJlNzg2MDc0YmU4YTIwNjIxNzc0M2IxY2EzMDAzNTU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAK
QEAgLTE1NjYsMTUgKzE1NjYsMzQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBI
b2xlT2JqZWN0VG9PYmplY3RPck90aGVyRXF1YWxpdHkoRWRnZSBsZWZ0Q2hpbGQKIAogdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUludDMyQ29tcGFyZShOb2RlKiBub2RlLCBNYWNyb0Fzc2Vt
Ymxlcjo6UmVsYXRpb25hbENvbmRpdGlvbiBjb25kaXRpb24pCiB7Ci0gICAgU3BlY3VsYXRlSW50
MzJPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgU3BlY3VsYXRlSW50MzJP
cGVyYW5kIG9wMih0aGlzLCBub2RlLT5jaGlsZDIoKSk7Ci0gICAgR1BSVGVtcG9yYXJ5IHJlc3Vs
dCh0aGlzLCBSZXVzZSwgb3AxLCBvcDIpOwotICAgIAotICAgIG1faml0LmNvbXBhcmUzMihjb25k
aXRpb24sIG9wMS5ncHIoKSwgb3AyLmdwcigpLCByZXN1bHQuZ3ByKCkpOwotICAgIAotICAgIC8v
IElmIHdlIGFkZCBhIERhdGFGb3JtYXRCb29sLCB3ZSBzaG91bGQgdXNlIGl0IGhlcmUuCi0gICAg
bV9qaXQub3IzMihUcnVzdGVkSW1tMzIoVmFsdWVGYWxzZSksIHJlc3VsdC5ncHIoKSk7Ci0gICAg
anNWYWx1ZVJlc3VsdChyZXN1bHQuZ3ByKCksIG1fY3VycmVudE5vZGUsIERhdGFGb3JtYXRKU0Jv
b2xlYW4pOworICAgIGlmIChub2RlLT5jaGlsZDEoKS0+aXNJbnQzMkNvbnN0YW50KCkpIHsKKyAg
ICAgICAgU3BlY3VsYXRlSW50MzJPcGVyYW5kIG9wMih0aGlzLCBub2RlLT5jaGlsZDIoKSk7Cisg
ICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIG9wMik7CisgICAgICAgIGlu
dDMyX3QgaW1tID0gbm9kZS0+Y2hpbGQxKCktPmFzSW50MzIoKTsKKyAgICAgICAgbV9qaXQuY29t
cGFyZTMyKGNvbmRpdGlvbiwgSklUQ29tcGlsZXI6OkltbTMyKGltbSksIG9wMi5ncHIoKSwgcmVz
dWx0LmdwcigpKTsKKworICAgICAgICAvLyBJZiB3ZSBhZGQgYSBEYXRhRm9ybWF0Qm9vbCwgd2Ug
c2hvdWxkIHVzZSBpdCBoZXJlLgorICAgICAgICBtX2ppdC5vcjMyKFRydXN0ZWRJbW0zMihWYWx1
ZUZhbHNlKSwgcmVzdWx0LmdwcigpKTsKKyAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHQuZ3By
KCksIG1fY3VycmVudE5vZGUsIERhdGFGb3JtYXRKU0Jvb2xlYW4pOworICAgIH0gZWxzZSBpZiAo
bm9kZS0+Y2hpbGQyKCktPmlzSW50MzJDb25zdGFudCgpKSB7CisgICAgICAgIFNwZWN1bGF0ZUlu
dDMyT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBHUFJUZW1wb3Jh
cnkgcmVzdWx0KHRoaXMsIFJldXNlLCBvcDEpOworICAgICAgICBpbnQzMl90IGltbSA9IG5vZGUt
PmNoaWxkMigpLT5hc0ludDMyKCk7CisgICAgICAgIG1faml0LmNvbXBhcmUzMihjb25kaXRpb24s
IG9wMS5ncHIoKSwgSklUQ29tcGlsZXI6OkltbTMyKGltbSksIHJlc3VsdC5ncHIoKSk7CisKKyAg
ICAgICAgLy8gSWYgd2UgYWRkIGEgRGF0YUZvcm1hdEJvb2wsIHdlIHNob3VsZCB1c2UgaXQgaGVy
ZS4KKyAgICAgICAgbV9qaXQub3IzMihUcnVzdGVkSW1tMzIoVmFsdWVGYWxzZSksIHJlc3VsdC5n
cHIoKSk7CisgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0LmdwcigpLCBtX2N1cnJlbnROb2Rl
LCBEYXRhRm9ybWF0SlNCb29sZWFuKTsKKyAgICB9IGVsc2UgeworICAgICAgICBTcGVjdWxhdGVJ
bnQzMk9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgU3BlY3VsYXRl
SW50MzJPcGVyYW5kIG9wMih0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIEdQUlRlbXBv
cmFyeSByZXN1bHQodGhpcywgUmV1c2UsIG9wMSwgb3AyKTsKKyAgICAgICAgbV9qaXQuY29tcGFy
ZTMyKGNvbmRpdGlvbiwgb3AxLmdwcigpLCBvcDIuZ3ByKCksIHJlc3VsdC5ncHIoKSk7CisKKyAg
ICAgICAgLy8gSWYgd2UgYWRkIGEgRGF0YUZvcm1hdEJvb2wsIHdlIHNob3VsZCB1c2UgaXQgaGVy
ZS4KKyAgICAgICAgbV9qaXQub3IzMihUcnVzdGVkSW1tMzIoVmFsdWVGYWxzZSksIHJlc3VsdC5n
cHIoKSk7CisgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0LmdwcigpLCBtX2N1cnJlbnROb2Rl
LCBEYXRhRm9ybWF0SlNCb29sZWFuKTsKKyAgICB9CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVJbnQ1MkNvbXBhcmUoTm9kZSogbm9kZSwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9u
YWxDb25kaXRpb24gY29uZGl0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nzaml0
L0Z1bmN0aW9uQ2FsbC5oIGIvU291cmNlL1dlYkNvcmUvY3Nzaml0L0Z1bmN0aW9uQ2FsbC5oCmlu
ZGV4IDRhNDE0YTg0MGZmYWJmMTg2Nzc4YjM3YmEwNjdlNzA1ZDUxODViMWYuLjZmZWM3ODBlYmZl
M2IyMjFjMGMxYmQ3MWM0ZTUwMDRhMWVmNjI5ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzc2ppdC9GdW5jdGlvbkNhbGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3NqaXQvRnVuY3Rp
b25DYWxsLmgKQEAgLTg3LDcgKzg3LDcgQEAgcHJpdmF0ZToKICAgICBKU0M6Ok1hY3JvQXNzZW1i
bGVyOjpKdW1wIGNhbGxBbmRCcmFuY2hPbkNvbmRpdGlvbihKU0M6Ok1hY3JvQXNzZW1ibGVyOjpS
ZXN1bHRDb25kaXRpb24gY29uZGl0aW9uLCBKU0M6Ok1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
MzIgbWFzaykKICAgICB7CiAgICAgICAgIHByZXBhcmVBbmRDYWxsKCk7Ci0gICAgICAgIG1fYXNz
ZW1ibGVyLnRlc3QzMihjb25kaXRpb24sIEpTQzo6R1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIG1h
c2spOworICAgICAgICBtX2Fzc2VtYmxlci50ZXN0MzIoSlNDOjpHUFJJbmZvOjpyZXR1cm5WYWx1
ZUdQUiwgbWFzayk7CiAgICAgICAgIGNsZWFudXBQb3N0Q2FsbCgpOwogICAgICAgICByZXR1cm4g
bV9hc3NlbWJsZXIuYnJhbmNoKGNvbmRpdGlvbik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
aml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwCmluZGV4IDE0NjQ5MGJjOWZhMmNmMDkwODkyNDkzMjhl
Y2M4ZWVmYTliNjVjMjQuLjcxMzlmNTJkNzRjZTdhMjI0ZmE3ZjdhYTBlMmJkMGIyZTZlNjkwY2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzc2ppdC9TZWxlY3RvckNvbXBpbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3NqaXQvU2VsZWN0b3JDb21waWxlci5jcHAKQEAgLTIzODks
NyArMjM4OSw3IEBAIEFzc2VtYmxlcjo6SnVtcCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6Om1vZHVs
byhBc3NlbWJsZXI6OlJlc3VsdENvbmRpdGlvbiBjb25kaXRpCiAgICAgICAgIExvY2FsUmVnaXN0
ZXIgZGl2aXNvclJlZ2lzdGVyKG1fcmVnaXN0ZXJBbGxvY2F0b3IpOwogICAgICAgICBtX2Fzc2Vt
Ymxlci5tb3ZlKEFzc2VtYmxlcjo6VHJ1c3RlZEltbTY0KGRpdmlzb3IpLCBkaXZpc29yUmVnaXN0
ZXIpOwogICAgICAgICBtX2Fzc2VtYmxlci5tX2Fzc2VtYmxlci5pZGl2bF9yKGRpdmlzb3JSZWdp
c3Rlcik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnRlc3QzMihjb25kaXRpb24sIHJlbWFpbmRlcik7
CisgICAgICAgIG1fYXNzZW1ibGVyLnRlc3QzMihyZW1haW5kZXIpOwogICAgIH0KIAogICAgIC8v
IDMpIFJldHVybiBSQVggYW5kIFJEWC4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273074</attachid>
            <date>2016-03-05 01:10:31 -0800</date>
            <delta_ts>2016-03-06 18:40:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155055-20160305011016.patch</filename>
            <type>text/plain</type>
            <size>50621</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk3NjA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
OTdiN2NhODRhZmE4NjI0NGE0YzA5NDM2MTdlNGIzNDM3N2Q2MmFkLi4yMTY3MWVlNTliNjBmZjU4
YjgyOTQyYjhmMjZmNzVmYzc5MTk5MTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5NSBAQAorMjAxNi0wMy0wNCAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KKworICAgICAgICBbSlNDXSBJbXByb3ZlIGNvZGVnZW4gb2YgQ29tcGFyZSBhbmQgVGVz
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MDU1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBpbnRyb2R1Y2VzIGEgZmV3IGltcHJvdmVtZW50cyBvbiBob3cgd2UgbG93ZXIKKyAgICAg
ICAgQ29tcGFyZSBhbmQgVGVzdCB3aXRoIGltbWVkaWF0ZXM6CisgICAgICAgICAgICAtQWRkIGNl
cnRhaW4gSW1tZWRpYXRlIGZvcm1zIG9mIEFSTTY0LgorICAgICAgICAgICAgLVVzZSBDQlovQ0JO
WiB3aGVuIHBvc3NpYmxlIG9uIEFSTTY0LgorICAgICAgICAgICAgLVdoZW4gcG9zc2libGUsIGNv
bnZlcnQgYSBDTVAgaW50byBhIFRTVAorICAgICAgICAgICAgIE9uIHNvbWUgaGFyZHdhcmUsIHdl
IGNhbiBpc3N1ZSBtb3JlIFRTVCBzaW11bHRhbmVvdXNseS4KKworICAgICAgICAgICAgIE9uIHg4
NiwgYW55IFRTVCtKdW1wIGlzIGNhbmRpZGF0ZSBmb3IgbWFjcm8tZnVzaW9uLgorICAgICAgICAg
ICAgIFRoZXkgYXJlIGFsc28gc21hbGxlci4KKyAgICAgICAgICAgICAoc2VjdGlvbnMgMy40LjIu
MiBhbmQgMy41LjEuOSkKKyAgICAgICAgICAgIC1EbyBub3QgbG9hZCB0aGUgbWFzayBpbW1lZGlh
dGUgb2YgYSBUU1QKKyAgICAgICAgICAgICBpZiBpdCBvbmx5IGNvbnRhaW5zIG9uZXMgKG1vc3Rs
eSB1c2VmdWwgZm9yIEFSTTY0CisgICAgICAgICAgICAgc2luY2UgdGhhdCB3b3VsZCBub3QgaGF2
ZSBiZWVuIGEgdmFsaWQgaW1tZWRpYXRlKS4KKworICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlci5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6Y29tcGFyZTMyKToKKyAg
ICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlckFSTTY0Ojptb3ZlQ29uZGl0aW9uYWxseUFmdGVyRmxvYXRpbmdQb2ludENv
bXBhcmUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojptb3ZlRG91YmxlQ29u
ZGl0aW9uYWxseUFmdGVyRmxvYXRpbmdQb2ludENvbXBhcmUpOgorICAgICAgICBUaGlzIGlzIHNv
bWV3aGF0IHVucmVsYXRlZCBidXQgSSBmb3VuZCB0aGF0IG91dCB3aGlsZSB3b3JraW5nCisgICAg
ICAgIG9uIG1vdmVEb3VibGVDb25kaXRpb25hbGx5VGVzdDMyOgorICAgICAgICAgICAgSWYgInRo
ZW5DYXNlIiBhbmQgImRlc3QiIGFyZSBhc3NpZ25lZCB0aGUgc2FtZSByZWdpc3RlcgorICAgICAg
ICAgICAgYnkgdGhlIGFsbG9jYXRvciwgdGhlbiB0aGUgZmlyc3QgKGYpZmNzZWwgd291bGQgb3Zl
cnJpZGUKKyAgICAgICAgICAgIHRoZSAidGhlbkNhc2UiIGFuZCB0aGUgc2Vjb25kIGZjc2VsIHdv
dWxkIGFsd2F5cyBiZSAiZWxzZUNhc2UiLgorCisgICAgICAgIFRoaXMgaXMgY292ZXJlZCBieSB0
ZXN0YjMgYnV0IHdhcyBvbmx5IHVuY292ZXJlZAorICAgICAgICBhZnRlciByZWNlbnQgIk1vdmUi
IHJlbW92YWxzIGluIGxvd2VyaW5nLgorCisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
NjQ6Om1vdmVDb25kaXRpb25hbGx5MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFS
TTY0Ojptb3ZlQ29uZGl0aW9uYWxseTY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJB
Uk02NDo6bW92ZUNvbmRpdGlvbmFsbHlUZXN0MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
YmxlckFSTTY0Ojptb3ZlRG91YmxlQ29uZGl0aW9uYWxseTMyKToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJBUk02NDo6bW92ZURvdWJsZUNvbmRpdGlvbmFsbHk2NCk6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6Om1vdmVEb3VibGVDb25kaXRpb25hbGx5VGVzdDMyKToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6YnJhbmNoMzIpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpicmFuY2g2NCk6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyQVJNNjQ6OmJyYW5jaFRlc3QzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyQVJNNjQ6OnRlc3QzMik6CisgICAgICAgIFRoZSB2ZXJzaW9uIHRha2luZyBhbiBpbW1lZGlh
dGUgd2FzIGd1YXJkZWQgYnkKKyAgICAgICAgKGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9u
WmVybykuIFRoYXQgaXMgb3ZlcnplYWxvdXMsCisgICAgICAgIGFuZCBvbmx5IG5lZWRlZCBmb3Ig
Q0JaL0NCTlouCisKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6YnJhbmNoVGVz
dDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6Y29tcGFyZTMyKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6Y29tcGFyZTY0KToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6Y29tbXV0ZUNvbXBhcmVUb1plcm9JbnRvVGVzdCk6Cisg
ICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmg6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjptb3ZlQ29uZGl0aW9uYWxseTMyKToKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246Om1vdmVDb25kaXRpb25hbGx5VGVzdDMy
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaDMyKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnRlc3QzMik6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpicmFuY2hUZXN0MzIpOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6Y29tcGFyZTMyKToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJYODZDb21tb246OmNvbW11dGVDb21wYXJlVG9aZXJvSW50b1Rlc3QpOgorICAg
ICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlclg4Nl82NDo6Y29tcGFyZTY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJYODZfNjQ6OmJyYW5jaDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZf
NjQ6Om1vdmVDb25kaXRpb25hbGx5NjQpOgorICAgICAgICAqIGIzL0IzTG93ZXJUb0Fpci5jcHA6
CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmNyZWF0ZUdlbmVyaWNDb21wYXJl
KToKKyAgICAgICAgVW5mb3J0dW5hdGVseSB0aGlzIGNhbm5vdCBiZSBhYnN0cmFjdGVkIGJ5IHRo
ZSBNYWNyb0Fzc2VtYmxlci4KKyAgICAgICAgVGhvc2UgaW1tZWRpYXRlcyBhcmUgbm90IHZhbGlk
LCB3ZSBoYXZlIHRvIHBpY2sgdGhlIGJldHRlcgorICAgICAgICBmb3IgcmlnaHQgYXdheS4KKwor
ICAgICAgICAqIGIzL2Fpci9BaXJPcGNvZGUub3Bjb2RlczoKKyAgICAgICAgKiBiMy90ZXN0YjMu
Y3BwOgorICAgICAgICAoSlNDOjpCMzo6aW50NjRPcGVyYW5kcyk6CisgICAgICAgIChKU0M6OkIz
Ojptb2RlbENvbXBhcmUpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdENvbXBhcmVJbXBsKToKKyAg
ICAgICAgKEpTQzo6QjM6OnRlc3RDb21wYXJlKToKKyAgICAgICAgKEpTQzo6QjM6OmIzUG93KToK
KyAgICAgICAgKEpTQzo6QjM6OnRlc3RQb3dEb3VibGVCeUludGVnZXJMb29wKToKKyAgICAgICAg
U29tZSB2ZXJzaW9ucyBvZiBwb3coZG91YmxlLCBpbnQpIGRvIG5vdCByZXR1cm4KKyAgICAgICAg
dGhlIGV4YWN0IHNhbWUgYml0cyBhcyBvdXIgaW50ZWdlciBsb29wLgorICAgICAgICBBZGRlZCBh
IG5ldyB2ZXJzaW9uIHRvIGhhdmUgdGhlIHNhbWUgYmVoYXZpb3IKKyAgICAgICAgYXMgdGhlIEIz
IGxvb3AuCisKKyAgICAgICAgKEpTQzo6QjM6OnJ1bik6CisgICAgICAgICogZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZVBlZXBIb2xlQm9vbGVhbkJyYW5jaCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlSW50MzJD
b21wYXJlKToKKyAgICAgICAgQ29tcGFyaW5nIHRvIGFuIGltbWVkaWF0ZSBpcyBzdXBlciBjb21t
b24uIERvIG5vdCB3YXN0ZQorICAgICAgICBhIHJlZ2lzdGVyIGZvciB0aGF0IQorCiAyMDE2LTAz
LTA0ICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBU
aHJvdyBhd2F5IGNvbXBpbGVkIFJlZ0V4cCBjb2RlIHdoZW4gbmF2aWdhdGluZyB0byBhIG5ldyBw
YWdlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDlmMDBkNDU3ZTUzOGZiNzUwMjE4M2U3MzQ3NjFmM2M3MTFkYzEz
MzUuLjU4OGYxODViODgyOTJlNDE1ODUxYWU5ZTI1NjFlNTY3N2QzNDY4YzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMyBAQAorMjAxNi0wMy0wNCAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWlu
QGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBJbXByb3ZlIGNvZGVnZW4gb2YgQ29tcGFyZSBh
bmQgVGVzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU1MDU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBjc3NqaXQvRnVuY3Rpb25DYWxsLmg6CisgICAgICAgIChXZWJDb3JlOjpGdW5jdGlvbkNhbGw6
OmNhbGxBbmRCcmFuY2hPbkNvbmRpdGlvbik6CisKIDIwMTYtMDMtMDQgIENhcmxvcyBHYXJjaWEg
Q2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFNjcm9sbGJhcnMg
YXJlIGJyb2tlbiBhZ2FpbiB3aXRoIEdUSysgPj0gMy4xOS4xMQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCmluZGV4IDBiMWNjYjdlNzEwMTQ5
NWI1YjZlY2NkOGZmMGM4NDMzZDg4NmUxZGYuLmVmOGI3MWY1MjI2MDNjM2JmZTg5MmVkNjA5OTA1
YzJmNzRkZDFlMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyLmgKQEAgLTExMiw2ICsxMTIsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgTWFj
cm9Bc3NlbWJsZXJCYXNlOjpwb3A7CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJCYXNlOjpqdW1w
OwogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6YnJhbmNoMzI7CisgICAgdXNpbmcgTWFj
cm9Bc3NlbWJsZXJCYXNlOjpjb21wYXJlMzI7CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJCYXNl
Ojptb3ZlOwogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6YWRkMzI7CiAgICAgdXNpbmcg
TWFjcm9Bc3NlbWJsZXJCYXNlOjphbmQzMjsKQEAgLTQwMCw2ICs0MDEsMTEgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29tbXV0ZShjb25kKSwgcmlnaHQsIGxlZnQpOwogICAg
IH0KIAorICAgIHZvaWQgY29tcGFyZTMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgSW1tMzIg
bGVmdCwgUmVnaXN0ZXJJRCByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAg
Y29tcGFyZTMyKGNvbW11dGUoY29uZCksIHJpZ2h0LCBsZWZ0LCBkZXN0KTsKKyAgICB9CisKICAg
ICB2b2lkIGJyYW5jaFRlc3RQdHIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgcmVn
LCBMYWJlbCB0YXJnZXQpCiAgICAgewogICAgICAgICBicmFuY2hUZXN0UHRyKGNvbmQsIHJlZyku
bGlua1RvKHRhcmdldCwgdGhpcyk7CkBAIC0xNjIxLDYgKzE2MjcsMjkgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgbGVmdCwgcmlnaHQuYXNUcnVzdGVkSW1tMzIoKSk7
CiAgICAgfQogCisgICAgdm9pZCBjb21wYXJlMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBS
ZWdpc3RlcklEIGxlZnQsIEltbTMyIHJpZ2h0LCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAg
ICAgICBpZiAoc2hvdWxkQmxpbmQocmlnaHQpKSB7CisgICAgICAgICAgICBpZiAobGVmdCAhPSBk
ZXN0IHx8IGhhdmVTY3JhdGNoUmVnaXN0ZXJGb3JCbGluZGluZygpKSB7CisgICAgICAgICAgICAg
ICAgUmVnaXN0ZXJJRCBibGluZGVkQ29uc3RhbnRSZWcgPSBkZXN0OworICAgICAgICAgICAgICAg
IGlmIChsZWZ0ID09IGRlc3QpCisgICAgICAgICAgICAgICAgICAgIGJsaW5kZWRDb25zdGFudFJl
ZyA9IHNjcmF0Y2hSZWdpc3RlckZvckJsaW5kaW5nKCk7CisgICAgICAgICAgICAgICAgbG9hZFhv
ckJsaW5kZWRDb25zdGFudCh4b3JCbGluZENvbnN0YW50KHJpZ2h0KSwgYmxpbmRlZENvbnN0YW50
UmVnKTsKKyAgICAgICAgICAgICAgICBjb21wYXJlMzIoY29uZCwgbGVmdCwgYmxpbmRlZENvbnN0
YW50UmVnLCBkZXN0KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAvLyBJZiB3ZSBkb24ndCBoYXZlIGEgc2NyYXRjaCByZWdpc3RlciBhdmFpbGFi
bGUgZm9yIHVzZSwgd2UnbGwganVzdAorICAgICAgICAgICAgLy8gcGxhY2UgYSByYW5kb20gbnVt
YmVyIG9mIG5vcHMuCisgICAgICAgICAgICB1aW50MzJfdCBub3BDb3VudCA9IHJhbmRvbSgpICYg
MzsKKyAgICAgICAgICAgIHdoaWxlIChub3BDb3VudC0tKQorICAgICAgICAgICAgICAgIG5vcCgp
OworICAgICAgICAgICAgY29tcGFyZTMyKGNvbmQsIGxlZnQsIHJpZ2h0LmFzVHJ1c3RlZEltbTMy
KCksIGRlc3QpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgY29t
cGFyZTMyKGNvbmQsIGxlZnQsIHJpZ2h0LmFzVHJ1c3RlZEltbTMyKCksIGRlc3QpOworICAgIH0K
KwogICAgIEp1bXAgYnJhbmNoQWRkMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQg
c3JjLCBJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIGlmIChzcmMg
PT0gZGVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJBUk02NC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckFSTTY0LmgKaW5kZXggZjRhYTVjNTNkNDI2ODNmMDkyYTA1NWIyZGM4MzQzN2E5
NGJmNmJmOS4uNDJhYzQwMGZjNjZjZDFkMTM4OGVmNzZhNDg0YTUyM2Y3NzkzNTFmMiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFS
TTY0LmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJBUk02NEFzc2VtYmxlci5oIgogI2lu
Y2x1ZGUgIkFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJh
cy5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAt
MTY4NSwxMiArMTY4NiwxMiBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KICAgICAgICAgaWYgKGNvbmQgPT0gRG91YmxlRXF1YWxPclVub3JkZXJlZCkgewotICAgICAg
ICAgICAgLy8gSWYgdGhlIGNvbXBhcmUgaXMgdW5vcmRlcmVkLCB0aGVuQ2FzZSBpcyBjb3BpZWQg
dG8gZGVzdCBhbmQgdGhlCisgICAgICAgICAgICAvLyBJZiB0aGUgY29tcGFyZSBpcyB1bm9yZGVy
ZWQsIHRoZW5DYXNlIGlzIGNvcGllZCB0byBlbHNlQ2FzZSBhbmQgdGhlCiAgICAgICAgICAgICAv
LyBuZXh0IGNzZWwgaGFzIGFsbCBhcmd1bWVudHMgZXF1YWwgdG8gdGhlbkNhc2UuCiAgICAgICAg
ICAgICAvLyBJZiB0aGUgY29tcGFyZSBpcyBvcmRlcmVkLCBkZXN0IGlzIHVuY2hhbmdlZCBhbmQg
RVEgZGVjaWRlcwogICAgICAgICAgICAgLy8gd2hhdCB2YWx1ZSB0byBzZXQuCi0gICAgICAgICAg
ICBtX2Fzc2VtYmxlci5jc2VsPGRhdGFzaXplPihkZXN0LCB0aGVuQ2FzZSwgZWxzZUNhc2UsIEFS
TTY0QXNzZW1ibGVyOjpDb25kaXRpb25WUyk7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5jc2Vs
PGRhdGFzaXplPihkZXN0LCB0aGVuQ2FzZSwgZGVzdCwgQVJNNjRBc3NlbWJsZXI6OkNvbmRpdGlv
bkVRKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNzZWw8ZGF0YXNpemU+KGVsc2VDYXNlLCB0
aGVuQ2FzZSwgZWxzZUNhc2UsIEFSTTY0QXNzZW1ibGVyOjpDb25kaXRpb25WUyk7CisgICAgICAg
ICAgICBtX2Fzc2VtYmxlci5jc2VsPGRhdGFzaXplPihkZXN0LCB0aGVuQ2FzZSwgZWxzZUNhc2Us
IEFSTTY0QXNzZW1ibGVyOjpDb25kaXRpb25FUSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KICAgICAgICAgbV9hc3NlbWJsZXIuY3NlbDxkYXRhc2l6ZT4oZGVzdCwgdGhlbkNhc2Us
IGVsc2VDYXNlLCBBUk02NENvbmRpdGlvbihjb25kKSk7CkBAIC0xNzA2LDEyICsxNzA3LDEyIEBA
IHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBpZiAoY29u
ZCA9PSBEb3VibGVFcXVhbE9yVW5vcmRlcmVkKSB7Ci0gICAgICAgICAgICAvLyBJZiB0aGUgY29t
cGFyZSBpcyB1bm9yZGVyZWQsIHRoZW5DYXNlIGlzIGNvcGllZCB0byBkZXN0IGFuZCB0aGUKKyAg
ICAgICAgICAgIC8vIElmIHRoZSBjb21wYXJlIGlzIHVub3JkZXJlZCwgdGhlbkNhc2UgaXMgY29w
aWVkIHRvIGVsc2VDYXNlIGFuZCB0aGUKICAgICAgICAgICAgIC8vIG5leHQgY3NlbCBoYXMgYWxs
IGFyZ3VtZW50cyBlcXVhbCB0byB0aGVuQ2FzZS4KICAgICAgICAgICAgIC8vIElmIHRoZSBjb21w
YXJlIGlzIG9yZGVyZWQsIGRlc3QgaXMgdW5jaGFuZ2VkIGFuZCBFUSBkZWNpZGVzCiAgICAgICAg
ICAgICAvLyB3aGF0IHZhbHVlIHRvIHNldC4KLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmZjc2Vs
PGRhdGFzaXplPihkZXN0LCB0aGVuQ2FzZSwgZWxzZUNhc2UsIEFSTTY0QXNzZW1ibGVyOjpDb25k
aXRpb25WUyk7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5mY3NlbDxkYXRhc2l6ZT4oZGVzdCwg
dGhlbkNhc2UsIGRlc3QsIEFSTTY0QXNzZW1ibGVyOjpDb25kaXRpb25FUSk7CisgICAgICAgICAg
ICBtX2Fzc2VtYmxlci5mY3NlbDxkYXRhc2l6ZT4oZWxzZUNhc2UsIHRoZW5DYXNlLCBlbHNlQ2Fz
ZSwgQVJNNjRBc3NlbWJsZXI6OkNvbmRpdGlvblZTKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVy
LmZjc2VsPGRhdGFzaXplPihkZXN0LCB0aGVuQ2FzZSwgZWxzZUNhc2UsIEFSTTY0QXNzZW1ibGVy
OjpDb25kaXRpb25FUSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAg
bV9hc3NlbWJsZXIuZmNzZWw8ZGF0YXNpemU+KGRlc3QsIHRoZW5DYXNlLCBlbHNlQ2FzZSwgQVJN
NjRDb25kaXRpb24oY29uZCkpOwpAQCAtMjAwMyw2ICsyMDA0LDEzIEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgbW92ZUNvbmRpdGlvbmFsbHkzMihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lz
dGVySUQgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0LCBSZWdpc3RlcklEIHRoZW5DYXNlLCBSZWdp
c3RlcklEIGVsc2VDYXNlLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgeworICAgICAgICBpZiAoIXJp
Z2h0Lm1fdmFsdWUpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIHJlc3VsdENvbmRpdGlvbiA9IGNv
bW11dGVDb21wYXJlVG9aZXJvSW50b1Rlc3QoY29uZCkpIHsKKyAgICAgICAgICAgICAgICBtb3Zl
Q29uZGl0aW9uYWxseVRlc3QzMigqcmVzdWx0Q29uZGl0aW9uLCBsZWZ0LCBsZWZ0LCB0aGVuQ2Fz
ZSwgZWxzZUNhc2UsIGRlc3QpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorCiAgICAgICAgIGlmIChpc1VJbnQxMihyaWdodC5tX3ZhbHVlKSkKICAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLmNtcDwzMj4obGVmdCwgVUludDEyKHJpZ2h0Lm1fdmFsdWUp
KTsKICAgICAgICAgZWxzZSBpZiAoaXNVSW50MTIoLXJpZ2h0Lm1fdmFsdWUpKQpAQCAtMjAyNiw2
ICsyMDM0LDI2IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuY3NlbDw2ND4oZGVzdCwg
dGhlbkNhc2UsIGVsc2VDYXNlLCBBUk02NENvbmRpdGlvbihjb25kKSk7CiAgICAgfQogCisgICAg
dm9pZCBtb3ZlQ29uZGl0aW9uYWxseTY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0
ZXJJRCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQsIFJlZ2lzdGVySUQgdGhlbkNhc2UsIFJlZ2lz
dGVySUQgZWxzZUNhc2UsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGlmICghcmln
aHQubV92YWx1ZSkgeworICAgICAgICAgICAgaWYgKGF1dG8gcmVzdWx0Q29uZGl0aW9uID0gY29t
bXV0ZUNvbXBhcmVUb1plcm9JbnRvVGVzdChjb25kKSkgeworICAgICAgICAgICAgICAgIG1vdmVD
b25kaXRpb25hbGx5VGVzdDY0KCpyZXN1bHRDb25kaXRpb24sIGxlZnQsIGxlZnQsIHRoZW5DYXNl
LCBlbHNlQ2FzZSwgZGVzdCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
fQorICAgICAgICB9CisKKyAgICAgICAgaWYgKGlzVUludDEyKHJpZ2h0Lm1fdmFsdWUpKQorICAg
ICAgICAgICAgbV9hc3NlbWJsZXIuY21wPDY0PihsZWZ0LCBVSW50MTIocmlnaHQubV92YWx1ZSkp
OworICAgICAgICBlbHNlIGlmIChpc1VJbnQxMigtcmlnaHQubV92YWx1ZSkpCisgICAgICAgICAg
ICBtX2Fzc2VtYmxlci5jbW48NjQ+KGxlZnQsIFVJbnQxMigtcmlnaHQubV92YWx1ZSkpOworICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1vdmVUb0NhY2hlZFJlZyhyaWdodCwgZGF0YU1lbW9y
eVRlbXBSZWdpc3RlcigpKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNtcDw2ND4obGVmdCwg
ZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgIH0KKyAgICAgICAgbV9hc3NlbWJsZXIuY3NlbDw2
ND4oZGVzdCwgdGhlbkNhc2UsIGVsc2VDYXNlLCBBUk02NENvbmRpdGlvbihjb25kKSk7CisgICAg
fQorCiAgICAgdm9pZCBtb3ZlQ29uZGl0aW9uYWxseVRlc3QzMihSZXN1bHRDb25kaXRpb24gY29u
ZCwgUmVnaXN0ZXJJRCB0ZXN0UmVnLCBSZWdpc3RlcklEIG1hc2ssIFJlZ2lzdGVySUQgc3JjLCBS
ZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci50c3Q8MzI+KHRlc3RS
ZWcsIG1hc2spOwpAQCAtMjAzOCw2ICsyMDY2LDEyIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3Nl
bWJsZXIuY3NlbDwzMj4oZGVzdCwgdGhlbkNhc2UsIGVsc2VDYXNlLCBBUk02NENvbmRpdGlvbihj
b25kKSk7CiAgICAgfQogCisgICAgdm9pZCBtb3ZlQ29uZGl0aW9uYWxseVRlc3QzMihSZXN1bHRD
b25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQsIFJlZ2lz
dGVySUQgdGhlbkNhc2UsIFJlZ2lzdGVySUQgZWxzZUNhc2UsIFJlZ2lzdGVySUQgZGVzdCkKKyAg
ICB7CisgICAgICAgIHRlc3QzMihsZWZ0LCByaWdodCk7CisgICAgICAgIG1fYXNzZW1ibGVyLmNz
ZWw8MzI+KGRlc3QsIHRoZW5DYXNlLCBlbHNlQ2FzZSwgQVJNNjRDb25kaXRpb24oY29uZCkpOwor
ICAgIH0KKwogICAgIHZvaWQgbW92ZUNvbmRpdGlvbmFsbHlUZXN0NjQoUmVzdWx0Q29uZGl0aW9u
IGNvbmQsIFJlZ2lzdGVySUQgdGVzdFJlZywgUmVnaXN0ZXJJRCBtYXNrLCBSZWdpc3RlcklEIHNy
YywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIudHN0PDY0Pih0
ZXN0UmVnLCBtYXNrKTsKQEAgLTIwNTgsNiArMjA5MiwxMyBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IG1vdmVEb3VibGVDb25kaXRpb25hbGx5MzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdp
c3RlcklEIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCwgRlBSZWdpc3RlcklEIHRoZW5DYXNlLCBG
UFJlZ2lzdGVySUQgZWxzZUNhc2UsIEZQUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKKyAgICAgICAg
aWYgKCFyaWdodC5tX3ZhbHVlKSB7CisgICAgICAgICAgICBpZiAoYXV0byByZXN1bHRDb25kaXRp
b24gPSBjb21tdXRlQ29tcGFyZVRvWmVyb0ludG9UZXN0KGNvbmQpKSB7CisgICAgICAgICAgICAg
ICAgbW92ZURvdWJsZUNvbmRpdGlvbmFsbHlUZXN0MzIoKnJlc3VsdENvbmRpdGlvbiwgbGVmdCwg
bGVmdCwgdGhlbkNhc2UsIGVsc2VDYXNlLCBkZXN0KTsKKyAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwogICAgICAgICBpZiAoaXNVSW50MTIocmlnaHQu
bV92YWx1ZSkpCiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5jbXA8MzI+KGxlZnQsIFVJbnQxMihy
aWdodC5tX3ZhbHVlKSk7CiAgICAgICAgIGVsc2UgaWYgKGlzVUludDEyKC1yaWdodC5tX3ZhbHVl
KSkKQEAgLTIwNzcsNiArMjExOCwxMyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIG1vdmVEb3VibGVD
b25kaXRpb25hbGx5NjQoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQs
IFRydXN0ZWRJbW0zMiByaWdodCwgRlBSZWdpc3RlcklEIHRoZW5DYXNlLCBGUFJlZ2lzdGVySUQg
ZWxzZUNhc2UsIEZQUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKKyAgICAgICAgaWYgKCFyaWdodC5t
X3ZhbHVlKSB7CisgICAgICAgICAgICBpZiAoYXV0byByZXN1bHRDb25kaXRpb24gPSBjb21tdXRl
Q29tcGFyZVRvWmVyb0ludG9UZXN0KGNvbmQpKSB7CisgICAgICAgICAgICAgICAgbW92ZURvdWJs
ZUNvbmRpdGlvbmFsbHlUZXN0NjQoKnJlc3VsdENvbmRpdGlvbiwgbGVmdCwgbGVmdCwgdGhlbkNh
c2UsIGVsc2VDYXNlLCBkZXN0KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKwogICAgICAgICBpZiAoaXNVSW50MTIocmlnaHQubV92YWx1ZSkpCiAg
ICAgICAgICAgICBtX2Fzc2VtYmxlci5jbXA8NjQ+KGxlZnQsIFVJbnQxMihyaWdodC5tX3ZhbHVl
KSk7CiAgICAgICAgIGVsc2UgaWYgKGlzVUludDEyKC1yaWdodC5tX3ZhbHVlKSkKQEAgLTIwOTQs
NiArMjE0MiwxMiBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLmZjc2VsPDY0PihkZXN0
LCB0aGVuQ2FzZSwgZWxzZUNhc2UsIEFSTTY0Q29uZGl0aW9uKGNvbmQpKTsKICAgICB9CiAKKyAg
ICB2b2lkIG1vdmVEb3VibGVDb25kaXRpb25hbGx5VGVzdDMyKFJlc3VsdENvbmRpdGlvbiBjb25k
LCBSZWdpc3RlcklEIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCwgRlBSZWdpc3RlcklEIHRoZW5D
YXNlLCBGUFJlZ2lzdGVySUQgZWxzZUNhc2UsIEZQUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAg
ICAgICAgdGVzdDMyKGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgbV9hc3NlbWJsZXIuZmNzZWw8NjQ+
KGRlc3QsIHRoZW5DYXNlLCBlbHNlQ2FzZSwgQVJNNjRDb25kaXRpb24oY29uZCkpOworICAgIH0K
KwogICAgIHZvaWQgbW92ZURvdWJsZUNvbmRpdGlvbmFsbHlUZXN0NjQoUmVzdWx0Q29uZGl0aW9u
IGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgUmVnaXN0ZXJJRCByaWdodCwgRlBSZWdpc3RlcklEIHRo
ZW5DYXNlLCBGUFJlZ2lzdGVySUQgZWxzZUNhc2UsIEZQUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsK
ICAgICAgICAgbV9hc3NlbWJsZXIudHN0PDY0PihsZWZ0LCByaWdodCk7CkBAIC0yMTI2LDYgKzIx
ODAsMTEgQEAgcHVibGljOgogCiAgICAgSnVtcCBicmFuY2gzMihSZWxhdGlvbmFsQ29uZGl0aW9u
IGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0KQogICAgIHsKKyAgICAg
ICAgaWYgKCFyaWdodC5tX3ZhbHVlKSB7CisgICAgICAgICAgICBpZiAoYXV0byByZXN1bHRDb25k
aXRpb24gPSBjb21tdXRlQ29tcGFyZVRvWmVyb0ludG9UZXN0KGNvbmQpKQorICAgICAgICAgICAg
ICAgIHJldHVybiBicmFuY2hUZXN0MzIoKnJlc3VsdENvbmRpdGlvbiwgbGVmdCwgbGVmdCk7Cisg
ICAgICAgIH0KKwogICAgICAgICBpZiAoaXNVSW50MTIocmlnaHQubV92YWx1ZSkpCiAgICAgICAg
ICAgICBtX2Fzc2VtYmxlci5jbXA8MzI+KGxlZnQsIFVJbnQxMihyaWdodC5tX3ZhbHVlKSk7CiAg
ICAgICAgIGVsc2UgaWYgKGlzVUludDEyKC1yaWdodC5tX3ZhbHVlKSkKQEAgLTIxOTEsNiArMjI1
MCwxMSBAQCBwdWJsaWM6CiAKICAgICBKdW1wIGJyYW5jaDY0KFJlbGF0aW9uYWxDb25kaXRpb24g
Y29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQpCiAgICAgeworICAgICAg
ICBpZiAoIXJpZ2h0Lm1fdmFsdWUpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIHJlc3VsdENvbmRp
dGlvbiA9IGNvbW11dGVDb21wYXJlVG9aZXJvSW50b1Rlc3QoY29uZCkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGJyYW5jaFRlc3Q2NCgqcmVzdWx0Q29uZGl0aW9uLCBsZWZ0LCBsZWZ0KTsKKyAg
ICAgICAgfQorCiAgICAgICAgIGlmIChpc1VJbnQxMihyaWdodC5tX3ZhbHVlKSkKICAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLmNtcDw2ND4obGVmdCwgVUludDEyKHJpZ2h0Lm1fdmFsdWUpKTsKICAg
ICAgICAgZWxzZSBpZiAoaXNVSW50MTIoLXJpZ2h0Lm1fdmFsdWUpKQpAQCAtMjIwNSw2ICsyMjY5
LDExIEBAIHB1YmxpYzoKICAgICBKdW1wIGJyYW5jaDY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29u
ZCwgUmVnaXN0ZXJJRCBsZWZ0LCBUcnVzdGVkSW1tNjQgcmlnaHQpCiAgICAgewogICAgICAgICBp
bnRwdHJfdCBpbW1lZGlhdGUgPSByaWdodC5tX3ZhbHVlOworICAgICAgICBpZiAoIWltbWVkaWF0
ZSkgeworICAgICAgICAgICAgaWYgKGF1dG8gcmVzdWx0Q29uZGl0aW9uID0gY29tbXV0ZUNvbXBh
cmVUb1plcm9JbnRvVGVzdChjb25kKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gYnJhbmNoVGVz
dDY0KCpyZXN1bHRDb25kaXRpb24sIGxlZnQsIGxlZnQpOworICAgICAgICB9CisKICAgICAgICAg
aWYgKGlzVUludDEyKGltbWVkaWF0ZSkpCiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5jbXA8NjQ+
KGxlZnQsIFVJbnQxMihzdGF0aWNfY2FzdDxpbnQzMl90PihpbW1lZGlhdGUpKSk7CiAgICAgICAg
IGVsc2UgaWYgKGlzVUludDEyKC1pbW1lZGlhdGUpKQpAQCAtMjI2OSwyNSArMjMzOCwyMiBAQCBw
dWJsaWM6CiAgICAgCiAgICAgSnVtcCBicmFuY2hUZXN0MzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQs
IFJlZ2lzdGVySUQgcmVnLCBSZWdpc3RlcklEIG1hc2spCiAgICAgeworICAgICAgICBpZiAocmVn
ID09IG1hc2sgJiYgKGNvbmQgPT0gWmVybyB8fCBjb25kID09IE5vblplcm8pKQorICAgICAgICAg
ICAgcmV0dXJuIEp1bXAobWFrZUNvbXBhcmVBbmRCcmFuY2g8MzI+KHN0YXRpY19jYXN0PFplcm9D
b25kaXRpb24+KGNvbmQpLCByZWcpKTsKICAgICAgICAgbV9hc3NlbWJsZXIudHN0PDMyPihyZWcs
IG1hc2spOwogICAgICAgICByZXR1cm4gSnVtcChtYWtlQnJhbmNoKGNvbmQpKTsKICAgICB9CiAK
LSAgICB2b2lkIHRlc3QzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCByZWcsIFRy
dXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKKyAgICB2b2lkIHRlc3QzMihSZWdp
c3RlcklEIHJlZywgVHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQogICAgIHsK
ICAgICAgICAgaWYgKG1hc2subV92YWx1ZSA9PSAtMSkKICAgICAgICAgICAgIG1fYXNzZW1ibGVy
LnRzdDwzMj4ocmVnLCByZWcpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGJvb2wgdGVz
dGVkV2l0aEltbWVkaWF0ZSA9IGZhbHNlOwotICAgICAgICAgICAgaWYgKChjb25kID09IFplcm8p
IHx8IChjb25kID09IE5vblplcm8pKSB7Ci0gICAgICAgICAgICAgICAgTG9naWNhbEltbWVkaWF0
ZSBsb2dpY2FsSW1tID0gTG9naWNhbEltbWVkaWF0ZTo6Y3JlYXRlMzIobWFzay5tX3ZhbHVlKTsK
KyAgICAgICAgICAgIExvZ2ljYWxJbW1lZGlhdGUgbG9naWNhbEltbSA9IExvZ2ljYWxJbW1lZGlh
dGU6OmNyZWF0ZTMyKG1hc2subV92YWx1ZSk7CiAKLSAgICAgICAgICAgICAgICBpZiAobG9naWNh
bEltbS5pc1ZhbGlkKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIudHN0PDMy
PihyZWcsIGxvZ2ljYWxJbW0pOwotICAgICAgICAgICAgICAgICAgICB0ZXN0ZWRXaXRoSW1tZWRp
YXRlID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBpZiAoIXRlc3RlZFdpdGhJbW1lZGlhdGUpIHsKKyAgICAgICAgICAgIGlmIChsb2dpY2FsSW1t
LmlzVmFsaWQoKSkKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci50c3Q8MzI+KHJlZywgbG9n
aWNhbEltbSk7CisgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBtb3ZlKG1hc2ss
IGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CiAgICAgICAgICAg
ICAgICAgbV9hc3NlbWJsZXIudHN0PDMyPihyZWcsIGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgICAg
ICAgICAgfQpAQCAtMjMwOCwxMyArMjM3NCwxMCBAQCBwdWJsaWM6CiAgICAgICAgIH0gZWxzZSBp
ZiAoaGFzT25lQml0U2V0KG1hc2subV92YWx1ZSkgJiYgKChjb25kID09IFplcm8pIHx8IChjb25k
ID09IE5vblplcm8pKSkKICAgICAgICAgICAgIHJldHVybiBKdW1wKG1ha2VUZXN0Qml0QW5kQnJh
bmNoKHJlZywgZ2V0TFNCU2V0KG1hc2subV92YWx1ZSksIHN0YXRpY19jYXN0PFplcm9Db25kaXRp
b24+KGNvbmQpKSk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgaWYgKChjb25kID09IFpl
cm8pIHx8IChjb25kID09IE5vblplcm8pKSB7Ci0gICAgICAgICAgICAgICAgTG9naWNhbEltbWVk
aWF0ZSBsb2dpY2FsSW1tID0gTG9naWNhbEltbWVkaWF0ZTo6Y3JlYXRlMzIobWFzay5tX3ZhbHVl
KTsKLQotICAgICAgICAgICAgICAgIGlmIChsb2dpY2FsSW1tLmlzVmFsaWQoKSkgewotICAgICAg
ICAgICAgICAgICAgICBtX2Fzc2VtYmxlci50c3Q8MzI+KHJlZywgbG9naWNhbEltbSk7Ci0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiBKdW1wKG1ha2VCcmFuY2goY29uZCkpOwotICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIExvZ2ljYWxJbW1lZGlhdGUgbG9naWNhbEltbSA9IExvZ2lj
YWxJbW1lZGlhdGU6OmNyZWF0ZTMyKG1hc2subV92YWx1ZSk7CisgICAgICAgICAgICBpZiAobG9n
aWNhbEltbS5pc1ZhbGlkKCkpIHsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci50c3Q8MzI+
KHJlZywgbG9naWNhbEltbSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIEp1bXAobWFrZUJyYW5j
aChjb25kKSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIG1vdmUobWFzaywgZ2V0Q2Fj
aGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKQEAgLTIzMzcsNiArMjQwMCw4
IEBAIHB1YmxpYzoKIAogICAgIEp1bXAgYnJhbmNoVGVzdDY0KFJlc3VsdENvbmRpdGlvbiBjb25k
LCBSZWdpc3RlcklEIHJlZywgUmVnaXN0ZXJJRCBtYXNrKQogICAgIHsKKyAgICAgICAgaWYgKHJl
ZyA9PSBtYXNrICYmIChjb25kID09IFplcm8gfHwgY29uZCA9PSBOb25aZXJvKSkKKyAgICAgICAg
ICAgIHJldHVybiBKdW1wKG1ha2VDb21wYXJlQW5kQnJhbmNoPDY0PihzdGF0aWNfY2FzdDxaZXJv
Q29uZGl0aW9uPihjb25kKSwgcmVnKSk7CiAgICAgICAgIG1fYXNzZW1ibGVyLnRzdDw2ND4ocmVn
LCBtYXNrKTsKICAgICAgICAgcmV0dXJuIEp1bXAobWFrZUJyYW5jaChjb25kKSk7CiAgICAgfQpA
QCAtMjM1MCwxMyArMjQxNSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIH0gZWxzZSBpZiAoaGFzT25l
Qml0U2V0KG1hc2subV92YWx1ZSkgJiYgKChjb25kID09IFplcm8pIHx8IChjb25kID09IE5vblpl
cm8pKSkKICAgICAgICAgICAgIHJldHVybiBKdW1wKG1ha2VUZXN0Qml0QW5kQnJhbmNoKHJlZywg
Z2V0TFNCU2V0KG1hc2subV92YWx1ZSksIHN0YXRpY19jYXN0PFplcm9Db25kaXRpb24+KGNvbmQp
KSk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgaWYgKChjb25kID09IFplcm8pIHx8IChj
b25kID09IE5vblplcm8pKSB7Ci0gICAgICAgICAgICAgICAgTG9naWNhbEltbWVkaWF0ZSBsb2dp
Y2FsSW1tID0gTG9naWNhbEltbWVkaWF0ZTo6Y3JlYXRlNjQobWFzay5tX3ZhbHVlKTsKKyAgICAg
ICAgICAgIExvZ2ljYWxJbW1lZGlhdGUgbG9naWNhbEltbSA9IExvZ2ljYWxJbW1lZGlhdGU6OmNy
ZWF0ZTY0KG1hc2subV92YWx1ZSk7CiAKLSAgICAgICAgICAgICAgICBpZiAobG9naWNhbEltbS5p
c1ZhbGlkKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIudHN0PDY0PihyZWcs
IGxvZ2ljYWxJbW0pOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gSnVtcChtYWtlQnJhbmNo
KGNvbmQpKTsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobG9naWNhbEltbS5p
c1ZhbGlkKCkpIHsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci50c3Q8NjQ+KHJlZywgbG9n
aWNhbEltbSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIEp1bXAobWFrZUJyYW5jaChjb25kKSk7
CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHNpZ25FeHRlbmQzMlRvUHRyKG1hc2ssIGdl
dENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CkBAIC0yNzczLDggKzI4
MzYsMjEgQEAgcHVibGljOgogCiAgICAgdm9pZCBjb21wYXJlMzIoUmVsYXRpb25hbENvbmRpdGlv
biBjb25kLCBSZWdpc3RlcklEIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCwgUmVnaXN0ZXJJRCBk
ZXN0KQogICAgIHsKLSAgICAgICAgbW92ZShyaWdodCwgZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3Rl
cklEQW5kSW52YWxpZGF0ZSgpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuY21wPDMyPihsZWZ0LCBk
YXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgaWYgKCFyaWdodC5tX3ZhbHVlKSB7CisgICAgICAg
ICAgICBpZiAoYXV0byByZXN1bHRDb25kaXRpb24gPSBjb21tdXRlQ29tcGFyZVRvWmVyb0ludG9U
ZXN0KGNvbmQpKSB7CisgICAgICAgICAgICAgICAgdGVzdDMyKCpyZXN1bHRDb25kaXRpb24sIGxl
ZnQsIGxlZnQsIGRlc3QpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorCisgICAgICAgIGlmIChpc1VJbnQxMihyaWdodC5tX3ZhbHVlKSkKKyAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLmNtcDwzMj4obGVmdCwgVUludDEyKHJpZ2h0Lm1fdmFsdWUpKTsK
KyAgICAgICAgZWxzZSBpZiAoaXNVSW50MTIoLXJpZ2h0Lm1fdmFsdWUpKQorICAgICAgICAgICAg
bV9hc3NlbWJsZXIuY21uPDMyPihsZWZ0LCBVSW50MTIoLXJpZ2h0Lm1fdmFsdWUpKTsKKyAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICBtb3ZlKHJpZ2h0LCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lz
dGVySURBbmRJbnZhbGlkYXRlKCkpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuY21wPDMyPihs
ZWZ0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgfQogICAgICAgICBtX2Fzc2VtYmxlci5j
c2V0PDMyPihkZXN0LCBBUk02NENvbmRpdGlvbihjb25kKSk7CiAgICAgfQogCkBAIC0yNzg2LDYg
KzI4NjIsMTMgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgY29tcGFyZTY0KFJlbGF0aW9uYWxD
b25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQsIFJlZ2lz
dGVySUQgZGVzdCkKICAgICB7CisgICAgICAgIGlmICghcmlnaHQubV92YWx1ZSkgeworICAgICAg
ICAgICAgaWYgKGF1dG8gcmVzdWx0Q29uZGl0aW9uID0gY29tbXV0ZUNvbXBhcmVUb1plcm9JbnRv
VGVzdChjb25kKSkgeworICAgICAgICAgICAgICAgIHRlc3Q2NCgqcmVzdWx0Q29uZGl0aW9uLCBs
ZWZ0LCBsZWZ0LCBkZXN0KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKwogICAgICAgICBzaWduRXh0ZW5kMzJUb1B0cihyaWdodCwgZ2V0Q2FjaGVk
RGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKICAgICAgICAgbV9hc3NlbWJsZXIu
Y21wPDY0PihsZWZ0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgbV9hc3NlbWJsZXIuY3Nl
dDwzMj4oZGVzdCwgQVJNNjRDb25kaXRpb24oY29uZCkpOwpAQCAtMjgwNiwxMiArMjg4OSw3IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgdGVzdDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3Rl
cklEIHNyYywgVHJ1c3RlZEltbTMyIG1hc2ssIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAg
ICAgIGlmIChtYXNrLm1fdmFsdWUgPT0gLTEpCi0gICAgICAgICAgICBtX2Fzc2VtYmxlci50c3Q8
MzI+KHNyYywgc3JjKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBzaWduRXh0ZW5kMzJU
b1B0cihtYXNrLCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOwot
ICAgICAgICAgICAgbV9hc3NlbWJsZXIudHN0PDMyPihzcmMsIGRhdGFUZW1wUmVnaXN0ZXIpOwot
ICAgICAgICB9CisgICAgICAgIHRlc3QzMihzcmMsIG1hc2spOwogICAgICAgICBtX2Fzc2VtYmxl
ci5jc2V0PDMyPihkZXN0LCBBUk02NENvbmRpdGlvbihjb25kKSk7CiAgICAgfQogCkBAIC0yOTk0
LDYgKzMwNzIsMjMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UmVsYXRp
b25hbENvbmRpdGlvbj4oQVJNNjRBc3NlbWJsZXI6OmludmVydChzdGF0aWNfY2FzdDxBUk02NEFz
c2VtYmxlcjo6Q29uZGl0aW9uPihjb25kKSkpOwogICAgIH0KIAorICAgIHN0YXRpYyBPcHRpb25h
bDxSZXN1bHRDb25kaXRpb24+IGNvbW11dGVDb21wYXJlVG9aZXJvSW50b1Rlc3QoUmVsYXRpb25h
bENvbmRpdGlvbiBjb25kKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChjb25kKSB7CisgICAgICAg
IGNhc2UgRXF1YWw6CisgICAgICAgICAgICByZXR1cm4gWmVybzsKKyAgICAgICAgY2FzZSBOb3RF
cXVhbDoKKyAgICAgICAgICAgIHJldHVybiBOb25aZXJvOworICAgICAgICBjYXNlIExlc3NUaGFu
OgorICAgICAgICAgICAgcmV0dXJuIFNpZ25lZDsKKyAgICAgICAgY2FzZSBHcmVhdGVyVGhhbk9y
RXF1YWw6CisgICAgICAgICAgICByZXR1cm4gUG9zaXRpdmVPclplcm87CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAg
ICAgICB9CisgICAgfQorCiAgICAgc3RhdGljIEZ1bmN0aW9uUHRyIHJlYWRDYWxsVGFyZ2V0KENv
ZGVMb2NhdGlvbkNhbGwgY2FsbCkKICAgICB7CiAgICAgICAgIHJldHVybiBGdW5jdGlvblB0cihy
ZWludGVycHJldF9jYXN0PHZvaWQoKikoKT4oQVJNNjRBc3NlbWJsZXI6OnJlYWRDYWxsVGFyZ2V0
KGNhbGwuZGF0YUxvY2F0aW9uKCkpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCmluZGV4IGZjOTRiODg4ZGUzNWU1OTc0
YmMwNWRiMTY1NjQ4MzEyNzk1YTc4MzcuLjJiYjY2MzQ5NWU5MmI2NmZmYzI0MjAxMjU2MmMwNTM3
NTZjYjc3YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJBUk12Ny5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJBUk12Ny5oCkBAIC0xMzQzLDcgKzEzNDMsNyBAQCBwdWJsaWM6CiBwcml2
YXRlOgogCiAgICAgLy8gU2hvdWxkIHdlIGJlIHVzaW5nIFRFUSBmb3IgZXF1YWwvbm90LWVxdWFs
PwotICAgIHZvaWQgY29tcGFyZTMyKFJlZ2lzdGVySUQgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0
KQorICAgIHZvaWQgY29tcGFyZTMyQW5kU2V0RmxhZ3MoUmVnaXN0ZXJJRCBsZWZ0LCBUcnVzdGVk
SW1tMzIgcmlnaHQpCiAgICAgewogICAgICAgICBpbnQzMl90IGltbSA9IHJpZ2h0Lm1fdmFsdWU7
CiAgICAgICAgIEFSTVRodW1iSW1tZWRpYXRlIGFybUltbSA9IEFSTVRodW1iSW1tZWRpYXRlOjpt
YWtlRW5jb2RlZEltbShpbW0pOwpAQCAtMTM1Nyw3ICsxMzU3LDggQEAgcHJpdmF0ZToKICAgICAg
ICAgfQogICAgIH0KIAotICAgIHZvaWQgdGVzdDMyKFJlZ2lzdGVySUQgcmVnLCBUcnVzdGVkSW1t
MzIgbWFzaykKK3B1YmxpYzoKKyAgICB2b2lkIHRlc3QzMihSZWdpc3RlcklEIHJlZywgVHJ1c3Rl
ZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQogICAgIHsKICAgICAgICAgaW50MzJfdCBp
bW0gPSBtYXNrLm1fdmFsdWU7CiAKQEAgLTEzODEsMTIgKzEzODIsNiBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQotCi1wdWJsaWM6Ci0gICAgdm9pZCB0ZXN0MzIo
UmVzdWx0Q29uZGl0aW9uLCBSZWdpc3RlcklEIHJlZywgVHJ1c3RlZEltbTMyIG1hc2spCi0gICAg
ewotICAgICAgICB0ZXN0MzIocmVnLCBtYXNrKTsKLSAgICB9CiAgICAgCiAgICAgSnVtcCBicmFu
Y2goUmVzdWx0Q29uZGl0aW9uIGNvbmQpCiAgICAgewpAQCAtMTQwMSw3ICsxMzk2LDcgQEAgcHVi
bGljOgogCiAgICAgSnVtcCBicmFuY2gzMihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lz
dGVySUQgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0KQogICAgIHsKLSAgICAgICAgY29tcGFyZTMy
KGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgY29tcGFyZTMyQW5kU2V0RmxhZ3MobGVmdCwgcmlnaHQp
OwogICAgICAgICByZXR1cm4gSnVtcChtYWtlQnJhbmNoKGNvbmQpKTsKICAgICB9CiAKQEAgLTE0
NTksNyArMTQ1NCw3IEBAIHB1YmxpYzoKIAogICAgIEp1bXAgYnJhbmNoOChSZWxhdGlvbmFsQ29u
ZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0KQogICAgIHsK
LSAgICAgICAgY29tcGFyZTMyKGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgY29tcGFyZTMyQW5kU2V0
RmxhZ3MobGVmdCwgcmlnaHQpOwogICAgICAgICByZXR1cm4gSnVtcChtYWtlQnJhbmNoKGNvbmQp
KTsKICAgICB9CiAKQEAgLTE3NjUsNyArMTc2MCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY29t
cGFyZTMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBUcnVzdGVk
SW1tMzIgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIGNvbXBhcmUzMihs
ZWZ0LCByaWdodCk7CisgICAgICAgIGNvbXBhcmUzMkFuZFNldEZsYWdzKGxlZnQsIHJpZ2h0KTsK
ICAgICAgICAgbV9hc3NlbWJsZXIuaXQoYXJtVjdDb25kaXRpb24oY29uZCksIGZhbHNlKTsKICAg
ICAgICAgbV9hc3NlbWJsZXIubW92KGRlc3QsIEFSTVRodW1iSW1tZWRpYXRlOjptYWtlVUludDE2
KDEpKTsKICAgICAgICAgbV9hc3NlbWJsZXIubW92KGRlc3QsIEFSTVRodW1iSW1tZWRpYXRlOjpt
YWtlVUludDE2KDApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAppbmRleCAzYjBjZTc3OWQ3NzRkYzQ0NTcx
N2ZmODNhNWQzZTgxOTM2NjMwZDFhLi40MGU0OGQwMTMyNWVlNTM5ZmY2OTdjZDNjOTdkYjkyZTNj
YTBiMDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyWDg2Q29tbW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRl
ICJYODZBc3NlbWJsZXIuaCIKICNpbmNsdWRlICJBYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgiCisj
aW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC0xNzc5LDEw
ICsxNzgwLDE0IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgbW92ZUNvbmRpdGlvbmFsbHkzMihSZWxh
dGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0
LCBSZWdpc3RlcklEIHRoZW5DYXNlLCBSZWdpc3RlcklEIGVsc2VDYXNlLCBSZWdpc3RlcklEIGRl
c3QpCiAgICAgewotICAgICAgICBpZiAoKChjb25kID09IEVxdWFsKSB8fCAoY29uZCA9PSBOb3RF
cXVhbCkpICYmICFyaWdodC5tX3ZhbHVlKQotICAgICAgICAgICAgbV9hc3NlbWJsZXIudGVzdGxf
cnIobGVmdCwgbGVmdCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNt
cGxfaXIocmlnaHQubV92YWx1ZSwgbGVmdCk7CisgICAgICAgIGlmICghcmlnaHQubV92YWx1ZSkg
eworICAgICAgICAgICAgaWYgKGF1dG8gcmVzdWx0Q29uZGl0aW9uID0gY29tbXV0ZUNvbXBhcmVU
b1plcm9JbnRvVGVzdChjb25kKSkgeworICAgICAgICAgICAgICAgIG1vdmVDb25kaXRpb25hbGx5
VGVzdDMyKCpyZXN1bHRDb25kaXRpb24sIGxlZnQsIGxlZnQsIHRoZW5DYXNlLCBlbHNlQ2FzZSwg
ZGVzdCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9
CisKKyAgICAgICAgbV9hc3NlbWJsZXIuY21wbF9pcihyaWdodC5tX3ZhbHVlLCBsZWZ0KTsKIAog
ICAgICAgICBpZiAodGhlbkNhc2UgIT0gZGVzdCAmJiBlbHNlQ2FzZSAhPSBkZXN0KSB7CiAgICAg
ICAgICAgICBtb3ZlKGVsc2VDYXNlLCBkZXN0KTsKQEAgLTE4MjEsNyArMTgyNiw3IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgbW92ZUNvbmRpdGlvbmFsbHlUZXN0MzIoUmVzdWx0Q29uZGl0aW9uIGNv
bmQsIFJlZ2lzdGVySUQgdGVzdFJlZywgVHJ1c3RlZEltbTMyIG1hc2ssIFJlZ2lzdGVySUQgc3Jj
LCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAgICAgICB0ZXN0MzIoY29uZCwgdGVzdFJlZywg
bWFzayk7CisgICAgICAgIHRlc3QzMih0ZXN0UmVnLCBtYXNrKTsKICAgICAgICAgY21vdih4ODZD
b25kaXRpb24oY29uZCksIHNyYywgZGVzdCk7CiAgICAgfQogCkBAIC0xODMwLDcgKzE4MzUsNyBA
QCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChpc0ludmVydGlibGUoY29uZCkpOwogICAgICAgICBB
U1NFUlRfV0lUSF9NRVNTQUdFKGNvbmQgIT0gT3ZlcmZsb3csICJURVNUIGRvZXMgbm90IHNldCB0
aGUgT3ZlcmZsb3cgRmxhZy4iKTsKIAotICAgICAgICB0ZXN0MzIoY29uZCwgdGVzdFJlZywgbWFz
ayk7CisgICAgICAgIHRlc3QzMih0ZXN0UmVnLCBtYXNrKTsKIAogICAgICAgICBpZiAodGhlbkNh
c2UgIT0gZGVzdCAmJiBlbHNlQ2FzZSAhPSBkZXN0KSB7CiAgICAgICAgICAgICBtb3ZlKGVsc2VD
YXNlLCBkZXN0KTsKQEAgLTE5NjAsMTAgKzE5NjUsMTIgQEAgcHVibGljOgogCiAgICAgSnVtcCBi
cmFuY2gzMihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgVHJ1c3Rl
ZEltbTMyIHJpZ2h0KQogICAgIHsKLSAgICAgICAgaWYgKCgoY29uZCA9PSBFcXVhbCkgfHwgKGNv
bmQgPT0gTm90RXF1YWwpKSAmJiAhcmlnaHQubV92YWx1ZSkKLSAgICAgICAgICAgIG1fYXNzZW1i
bGVyLnRlc3RsX3JyKGxlZnQsIGxlZnQpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2Fz
c2VtYmxlci5jbXBsX2lyKHJpZ2h0Lm1fdmFsdWUsIGxlZnQpOworICAgICAgICBpZiAoIXJpZ2h0
Lm1fdmFsdWUpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIHJlc3VsdENvbmRpdGlvbiA9IGNvbW11
dGVDb21wYXJlVG9aZXJvSW50b1Rlc3QoY29uZCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGJy
YW5jaFRlc3QzMigqcmVzdWx0Q29uZGl0aW9uLCBsZWZ0LCBsZWZ0KTsKKyAgICAgICAgfQorCisg
ICAgICAgIG1fYXNzZW1ibGVyLmNtcGxfaXIocmlnaHQubV92YWx1ZSwgbGVmdCk7CiAgICAgICAg
IHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpDQyh4ODZDb25kaXRpb24oY29uZCkpKTsKICAgICB9
CiAgICAgCkBAIC0yMDAyLDcgKzIwMDksNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBKdW1w
KG1fYXNzZW1ibGVyLmpDQyh4ODZDb25kaXRpb24oY29uZCkpKTsKICAgICB9CiAKLSAgICB2b2lk
IHRlc3QzMihSZXN1bHRDb25kaXRpb24sIFJlZ2lzdGVySUQgcmVnLCBUcnVzdGVkSW1tMzIgbWFz
ayA9IFRydXN0ZWRJbW0zMigtMSkpCisgICAgdm9pZCB0ZXN0MzIoUmVnaXN0ZXJJRCByZWcsIFRy
dXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKICAgICB7CiAgICAgICAgIGlmICht
YXNrLm1fdmFsdWUgPT0gLTEpCiAgICAgICAgICAgICBtX2Fzc2VtYmxlci50ZXN0bF9ycihyZWcs
IHJlZyk7CkBAIC0yMDIyLDcgKzIwMjksNyBAQCBwdWJsaWM6CiAKICAgICBKdW1wIGJyYW5jaFRl
c3QzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCByZWcsIFRydXN0ZWRJbW0zMiBt
YXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKICAgICB7Ci0gICAgICAgIHRlc3QzMihjb25kLCByZWcs
IG1hc2spOworICAgICAgICB0ZXN0MzIocmVnLCBtYXNrKTsKICAgICAgICAgcmV0dXJuIGJyYW5j
aChjb25kKTsKICAgICB9CiAKQEAgLTIyOTAsMTAgKzIyOTcsMTQgQEAgcHVibGljOgogCiAgICAg
dm9pZCBjb21wYXJlMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQs
IFRydXN0ZWRJbW0zMiByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgaWYg
KCgoY29uZCA9PSBFcXVhbCkgfHwgKGNvbmQgPT0gTm90RXF1YWwpKSAmJiAhcmlnaHQubV92YWx1
ZSkKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLnRlc3RsX3JyKGxlZnQsIGxlZnQpOwotICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBtX2Fzc2VtYmxlci5jbXBsX2lyKHJpZ2h0Lm1fdmFsdWUsIGxl
ZnQpOworICAgICAgICBpZiAoIXJpZ2h0Lm1fdmFsdWUpIHsKKyAgICAgICAgICAgIGlmIChhdXRv
IHJlc3VsdENvbmRpdGlvbiA9IGNvbW11dGVDb21wYXJlVG9aZXJvSW50b1Rlc3QoY29uZCkpIHsK
KyAgICAgICAgICAgICAgICB0ZXN0MzIoKnJlc3VsdENvbmRpdGlvbiwgbGVmdCwgbGVmdCwgZGVz
dCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisK
KyAgICAgICAgbV9hc3NlbWJsZXIuY21wbF9pcihyaWdodC5tX3ZhbHVlLCBsZWZ0KTsKICAgICAg
ICAgc2V0MzIoeDg2Q29uZGl0aW9uKGNvbmQpLCBkZXN0KTsKICAgICB9CiAKQEAgLTIzMjMsNiAr
MjMzNCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHNldDMyKHg4NkNvbmRpdGlvbihjb25kKSwgZGVz
dCk7CiAgICAgfQogCisgICAgdm9pZCB0ZXN0MzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lz
dGVySUQgcmVnLCBUcnVzdGVkSW1tMzIgbWFzaywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAg
ICAgICAgdGVzdDMyKHJlZywgbWFzayk7CisgICAgICAgIHNldDMyKHg4NkNvbmRpdGlvbihjb25k
KSwgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCBzZXRDYXJyeShSZWdpc3RlcklEIGRlc3QpCiAg
ICAgewogICAgICAgICBzZXQzMihYODZBc3NlbWJsZXI6OkNvbmRpdGlvbkMsIGRlc3QpOwpAQCAt
MjM5Niw2ICsyNDEzLDIzIEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KIAorICAgIHN0YXRp
YyBPcHRpb25hbDxSZXN1bHRDb25kaXRpb24+IGNvbW11dGVDb21wYXJlVG9aZXJvSW50b1Rlc3Qo
UmVsYXRpb25hbENvbmRpdGlvbiBjb25kKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChjb25kKSB7
CisgICAgICAgIGNhc2UgRXF1YWw6CisgICAgICAgICAgICByZXR1cm4gWmVybzsKKyAgICAgICAg
Y2FzZSBOb3RFcXVhbDoKKyAgICAgICAgICAgIHJldHVybiBOb25aZXJvOworICAgICAgICBjYXNl
IExlc3NUaGFuOgorICAgICAgICAgICAgcmV0dXJuIFNpZ25lZDsKKyAgICAgICAgY2FzZSBHcmVh
dGVyVGhhbk9yRXF1YWw6CisgICAgICAgICAgICByZXR1cm4gUG9zaXRpdmVPclplcm87CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBOdWxs
b3B0OworICAgICAgICB9CisgICAgfQorCiAgICAgdm9pZCBub3AoKQogICAgIHsKICAgICAgICAg
bV9hc3NlbWJsZXIubm9wKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKaW5kZXggZjdlYjJjOWY1ZWNlYmVmMDgzZDY2
N2ZlNzUwNDEzZWZiNDgzZTFjMC4uMmRhNGI5YTFhNTUxYjkzOTQ4NDc2ZDZmNDRhOWQwOTQ2NTMz
MmU5ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlclg4Nl82NC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJYODZfNjQuaApAQCAtNzAxLDE5ICs3MDEsMjEgQEAgcHVibGljOgogCiAgICAg
dm9pZCBjb21wYXJlNjQoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQs
IFRydXN0ZWRJbW0zMiByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgaWYg
KCgoY29uZCA9PSBFcXVhbCkgfHwgKGNvbmQgPT0gTm90RXF1YWwpKSAmJiAhcmlnaHQubV92YWx1
ZSkKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLnRlc3RxX3JyKGxlZnQsIGxlZnQpOwotICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBtX2Fzc2VtYmxlci5jbXBxX2lyKHJpZ2h0Lm1fdmFsdWUsIGxl
ZnQpOwotICAgICAgICBtX2Fzc2VtYmxlci5zZXRDQ19yKHg4NkNvbmRpdGlvbihjb25kKSwgZGVz
dCk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm1vdnpibF9ycihkZXN0LCBkZXN0KTsKKyAgICAgICAg
aWYgKCFyaWdodC5tX3ZhbHVlKSB7CisgICAgICAgICAgICBpZiAoYXV0byByZXN1bHRDb25kaXRp
b24gPSBjb21tdXRlQ29tcGFyZVRvWmVyb0ludG9UZXN0KGNvbmQpKSB7CisgICAgICAgICAgICAg
ICAgdGVzdDY0KCpyZXN1bHRDb25kaXRpb24sIGxlZnQsIGxlZnQsIGRlc3QpOworICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIG1fYXNz
ZW1ibGVyLmNtcHFfaXIocmlnaHQubV92YWx1ZSwgbGVmdCk7CisgICAgICAgIHNldDMyKHg4NkNv
bmRpdGlvbihjb25kKSwgZGVzdCk7CiAgICAgfQogICAgIAogICAgIHZvaWQgY29tcGFyZTY0KFJl
bGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0
LCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5jbXBxX3JyKHJp
Z2h0LCBsZWZ0KTsKLSAgICAgICAgbV9hc3NlbWJsZXIuc2V0Q0Nfcih4ODZDb25kaXRpb24oY29u
ZCksIGRlc3QpOwotICAgICAgICBtX2Fzc2VtYmxlci5tb3Z6YmxfcnIoZGVzdCwgZGVzdCk7Cisg
ICAgICAgIHNldDMyKHg4NkNvbmRpdGlvbihjb25kKSwgZGVzdCk7CiAgICAgfQogCiAgICAgdm9p
ZCBjb21wYXJlRG91YmxlKERvdWJsZUNvbmRpdGlvbiBjb25kLCBGUFJlZ2lzdGVySUQgbGVmdCwg
RlBSZWdpc3RlcklEIHJpZ2h0LCBSZWdpc3RlcklEIGRlc3QpCkBAIC03NTgsOSArNzYwLDkgQEAg
cHVibGljOgogCiAgICAgSnVtcCBicmFuY2g2NChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJl
Z2lzdGVySUQgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0KQogICAgIHsKLSAgICAgICAgaWYgKCgo
Y29uZCA9PSBFcXVhbCkgfHwgKGNvbmQgPT0gTm90RXF1YWwpKSAmJiAhcmlnaHQubV92YWx1ZSkg
ewotICAgICAgICAgICAgbV9hc3NlbWJsZXIudGVzdHFfcnIobGVmdCwgbGVmdCk7Ci0gICAgICAg
ICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qQ0MoeDg2Q29uZGl0aW9uKGNvbmQpKSk7Cisg
ICAgICAgIGlmICghcmlnaHQubV92YWx1ZSkgeworICAgICAgICAgICAgaWYgKGF1dG8gcmVzdWx0
Q29uZGl0aW9uID0gY29tbXV0ZUNvbXBhcmVUb1plcm9JbnRvVGVzdChjb25kKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDY0KCpyZXN1bHRDb25kaXRpb24sIGxlZnQsIGxlZnQp
OwogICAgICAgICB9CiAgICAgICAgIG1fYXNzZW1ibGVyLmNtcHFfaXIocmlnaHQubV92YWx1ZSwg
bGVmdCk7CiAgICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpDQyh4ODZDb25kaXRpb24o
Y29uZCkpKTsKQEAgLTk5NCw2ICs5OTYsMjggQEAgcHVibGljOgogICAgICAgICAgICAgY21vdih4
ODZDb25kaXRpb24oaW52ZXJ0KGNvbmQpKSwgZWxzZUNhc2UsIGRlc3QpOwogICAgIH0KIAorICAg
IHZvaWQgbW92ZUNvbmRpdGlvbmFsbHk2NChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lz
dGVySUQgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0LCBSZWdpc3RlcklEIHRoZW5DYXNlLCBSZWdp
c3RlcklEIGVsc2VDYXNlLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBpZiAoIXJp
Z2h0Lm1fdmFsdWUpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIHJlc3VsdENvbmRpdGlvbiA9IGNv
bW11dGVDb21wYXJlVG9aZXJvSW50b1Rlc3QoY29uZCkpIHsKKyAgICAgICAgICAgICAgICBtb3Zl
Q29uZGl0aW9uYWxseVRlc3Q2NCgqcmVzdWx0Q29uZGl0aW9uLCBsZWZ0LCBsZWZ0LCB0aGVuQ2Fz
ZSwgZWxzZUNhc2UsIGRlc3QpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorCisgICAgICAgIG1fYXNzZW1ibGVyLmNtcHFfaXIocmlnaHQubV92YWx1
ZSwgbGVmdCk7CisKKyAgICAgICAgaWYgKHRoZW5DYXNlICE9IGRlc3QgJiYgZWxzZUNhc2UgIT0g
ZGVzdCkgeworICAgICAgICAgICAgbW92ZShlbHNlQ2FzZSwgZGVzdCk7CisgICAgICAgICAgICBl
bHNlQ2FzZSA9IGRlc3Q7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZWxzZUNhc2UgPT0gZGVz
dCkKKyAgICAgICAgICAgIGNtb3YoeDg2Q29uZGl0aW9uKGNvbmQpLCB0aGVuQ2FzZSwgZGVzdCk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNtb3YoeDg2Q29uZGl0aW9uKGludmVydChjb25k
KSksIGVsc2VDYXNlLCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lkIG1vdmVDb25kaXRpb25hbGx5
VGVzdDY0KFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHRlc3RSZWcsIFJlZ2lzdGVy
SUQgbWFzaywgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAg
IG1fYXNzZW1ibGVyLnRlc3RxX3JyKHRlc3RSZWcsIG1hc2spOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNMb3dlclRvQWlyLmNwcAppbmRleCA4M2RkNzQzNWM3M2E4NjQ0MDY4ZmVkZjhhNmNk
MGZiYTc3YWUxOTI4Li5hZTI0NzAzNjIyZTAxNWU1ZTlmYWUwZGZjYWIwNTk3YjNhNzU1YzNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcApAQCAtMTM3NCwxNCAr
MTM3NCwzMCBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICAgICAgLy8gTm93IGhhbmRsZSB0ZXN0
J3MgdGhhdCBpbnZvbHZlIGFuIGltbWVkaWF0ZSBhbmQgYSB0bXAuCiAKLSAgICAgICAgICAgICAg
ICBpZiAobGVmdEltbSAmJiBsZWZ0SW1tLmlzUmVwcmVzZW50YWJsZUFzPHVpbnQzMl90PigpKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGlmIChJbnN0IHJlc3VsdCA9IHRyeVRlc3QoQXJnOjpXaWR0
aDMyLCBsZWZ0SW1tLCB0bXBQcm9taXNlKHJpZ2h0KSkpCi0gICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgICAgIGlmIChsZWZ0SW1tKSB7CisgICAgICAg
ICAgICAgICAgICAgIGlmICgod2lkdGggPT0gQXJnOjpXaWR0aDMyICYmIGxlZnRJbW0udmFsdWUo
KSA9PSAweGZmZmZmZmZmKQorICAgICAgICAgICAgICAgICAgICAgICAgfHwgKHdpZHRoID09IEFy
Zzo6V2lkdGg2NCAmJiBsZWZ0SW1tLnZhbHVlKCkgPT0gLTEpKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBBcmdQcm9taXNlIGFyZ1Byb21pc2UgPSB0bXBQcm9taXNlKHJpZ2h0KTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChJbnN0IHJlc3VsdCA9IHRyeVRlc3Qod2lkdGgsIGFyZ1By
b21pc2UsIGFyZ1Byb21pc2UpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGxl
ZnRJbW0uaXNSZXByZXNlbnRhYmxlQXM8dWludDMyX3Q+KCkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChJbnN0IHJlc3VsdCA9IHRyeVRlc3QoQXJnOjpXaWR0aDMyLCBsZWZ0SW1tLCB0
bXBQcm9taXNlKHJpZ2h0KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KIAotICAgICAg
ICAgICAgICAgIGlmIChyaWdodEltbSAmJiByaWdodEltbS5pc1JlcHJlc2VudGFibGVBczx1aW50
MzJfdD4oKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoSW5zdCByZXN1bHQgPSB0cnlUZXN0
KEFyZzo6V2lkdGgzMiwgdG1wUHJvbWlzZShsZWZ0KSwgcmlnaHRJbW0pKQotICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgICAgICBpZiAocmlnaHRJbW0p
IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCh3aWR0aCA9PSBBcmc6OldpZHRoMzIgJiYgcmln
aHRJbW0udmFsdWUoKSA9PSAweGZmZmZmZmZmKQorICAgICAgICAgICAgICAgICAgICAgICAgfHwg
KHdpZHRoID09IEFyZzo6V2lkdGg2NCAmJiByaWdodEltbS52YWx1ZSgpID09IC0xKSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgQXJnUHJvbWlzZSBhcmdQcm9taXNlID0gdG1wUHJvbWlzZShs
ZWZ0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChJbnN0IHJlc3VsdCA9IHRyeVRlc3Qo
d2lkdGgsIGFyZ1Byb21pc2UsIGFyZ1Byb21pc2UpKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgaWYgKHJpZ2h0SW1tLmlzUmVwcmVzZW50YWJsZUFzPHVpbnQzMl90PigpKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoSW5zdCByZXN1bHQgPSB0cnlUZXN0KEFyZzo6V2lkdGgz
MiwgdG1wUHJvbWlzZShsZWZ0KSwgcmlnaHRJbW0pKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICB9CiAKICAgICAgICAgICAgICAgICAvLyBGaW5hbGx5LCBqdXN0IGRvIHRtcCdzLgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2RlcyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMKaW5kZXggYjZlMTZi
ZTkzMmY3YTc4MTYyNDk3ZTFiNWIxNjhlZDY2N2ExYjBlYy4uNDZhNWNmNzFmMTFlMWNjNDlkNzc5
ZjUzOGM4NzJiNDc2NjAwM2JhZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJPcGNvZGUub3Bjb2RlcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0Fpck9wY29kZS5vcGNvZGVzCkBAIC02MTMsNyArNjEzLDcgQEAgU3RvcmUxNiBVOkc6MTYsIEQ6
RzoxNgogCiBDb21wYXJlMzIgVTpHOjMyLCBVOkc6MzIsIFU6RzozMiwgWkQ6RzozMgogICAgIFJl
bENvbmQsIFRtcCwgVG1wLCBUbXAKLSAgICB4ODY6IFJlbENvbmQsIFRtcCwgSW1tLCBUbXAKKyAg
ICBSZWxDb25kLCBUbXAsIEltbSwgVG1wCiAKIDY0OiBDb21wYXJlNjQgVTpHOjMyLCBVOkc6NjQs
IFU6Rzo2NCwgWkQ6RzozMgogICAgIFJlbENvbmQsIFRtcCwgVG1wLCBUbXAKQEAgLTYyMiw2ICs2
MjIsNyBAQCBDb21wYXJlMzIgVTpHOjMyLCBVOkc6MzIsIFU6RzozMiwgWkQ6RzozMgogVGVzdDMy
IFU6RzozMiwgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIKICAgICB4ODY6IFJlc0NvbmQsIEFkZHIs
IEltbSwgVG1wCiAgICAgUmVzQ29uZCwgVG1wLCBUbXAsIFRtcAorICAgIFJlc0NvbmQsIFRtcCwg
Qml0SW1tLCBUbXAKIAogNjQ6IFRlc3Q2NCBVOkc6MzIsIFU6Rzo2NCwgVTpHOjY0LCBaRDpHOjMy
CiAgICAgeDg2OiBSZXNDb25kLCBUbXAsIEltbSwgVG1wCkBAIC02NjIsNyArNjYzLDcgQEAgQnJh
bmNoVGVzdDggVTpHOjMyLCBVOkc6OCwgVTpHOjggL2JyYW5jaAogCiBCcmFuY2hUZXN0MzIgVTpH
OjMyLCBVOkc6MzIsIFU6RzozMiAvYnJhbmNoCiAgICAgUmVzQ29uZCwgVG1wLCBUbXAKLSAgICB4
ODY6IFJlc0NvbmQsIFRtcCwgSW1tCisgICAgUmVzQ29uZCwgVG1wLCBCaXRJbW0KICAgICB4ODY6
IFJlc0NvbmQsIEFkZHIsIEltbQogICAgIHg4NjogUmVzQ29uZCwgSW5kZXgsIEltbQogCkBAIC02
NzAsNyArNjcxLDcgQEAgQnJhbmNoVGVzdDMyIFU6RzozMiwgVTpHOjMyLCBVOkc6MzIgL2JyYW5j
aAogIyBCcmFuY2hUZXN0MzIgaW4gbW9zdCBjYXNlcyB3aGVyZSB5b3UgdXNlIGFuIGltbWVkaWF0
ZS4KIDY0OiBCcmFuY2hUZXN0NjQgVTpHOjMyLCBVOkc6NjQsIFU6Rzo2NCAvYnJhbmNoCiAgICAg
UmVzQ29uZCwgVG1wLCBUbXAKLSAgICB4ODY6IFJlc0NvbmQsIFRtcCwgSW1tCisgICAgUmVzQ29u
ZCwgVG1wLCBCaXRJbW02NAogICAgIHg4NjogUmVzQ29uZCwgQWRkciwgSW1tCiAgICAgeDg2OiBS
ZXNDb25kLCBBZGRyLCBUbXAKICAgICB4ODY6IFJlc0NvbmQsIEluZGV4LCBJbW0KQEAgLTc0OCw2
ICs3NDksNyBAQCBNb3ZlQ29uZGl0aW9uYWxseTMyIFU6RzozMiwgVTpHOjMyLCBVOkc6MzIsIFU6
RzpQdHIsIFU6RzpQdHIsIEQ6RzpQdHIKIAogNjQ6IE1vdmVDb25kaXRpb25hbGx5NjQgVTpHOjMy
LCBVOkc6NjQsIFU6Rzo2NCwgVTpHOlB0ciwgVTpHOlB0ciwgRDpHOlB0cgogICAgIFJlbENvbmQs
IFRtcCwgVG1wLCBUbXAsIFRtcCwgVG1wCisgICAgUmVsQ29uZCwgVG1wLCBJbW0sIFRtcCwgVG1w
LCBUbXAKIAogTW92ZUNvbmRpdGlvbmFsbHlUZXN0MzIgVTpHOjMyLCBVOkc6MzIsIFU6RzozMiwg
VTpHOlB0ciwgVUQ6RzpQdHIKICAgICBSZXNDb25kLCBUbXAsIFRtcCwgVG1wLCBUbXAKQEAgLTc1
NSw3ICs3NTcsNyBAQCBNb3ZlQ29uZGl0aW9uYWxseVRlc3QzMiBVOkc6MzIsIFU6RzozMiwgVTpH
OjMyLCBVOkc6UHRyLCBVRDpHOlB0cgogCiBNb3ZlQ29uZGl0aW9uYWxseVRlc3QzMiBVOkc6MzIs
IFU6RzozMiwgVTpHOjMyLCBVOkc6UHRyLCBVOkc6UHRyLCBEOkc6UHRyCiAgICAgUmVzQ29uZCwg
VG1wLCBUbXAsIFRtcCwgVG1wLCBUbXAKLSAgICB4ODY6IFJlc0NvbmQsIFRtcCwgSW1tLCBUbXAs
IFRtcCwgVG1wCisgICAgUmVzQ29uZCwgVG1wLCBCaXRJbW0sIFRtcCwgVG1wLCBUbXAKIAogNjQ6
IE1vdmVDb25kaXRpb25hbGx5VGVzdDY0IFU6RzozMiwgVTpHOjY0LCBVOkc6NjQsIFU6RzpQdHIs
IFVEOkc6UHRyCiAgICAgUmVzQ29uZCwgVG1wLCBUbXAsIFRtcCwgVG1wCkBAIC03OTUsNyArNzk3
LDcgQEAgTW92ZURvdWJsZUNvbmRpdGlvbmFsbHkzMiBVOkc6MzIsIFU6RzozMiwgVTpHOjMyLCBV
OkY6NjQsIFU6Rjo2NCwgRDpGOjY0CiAKIE1vdmVEb3VibGVDb25kaXRpb25hbGx5VGVzdDMyIFU6
RzozMiwgVTpHOjMyLCBVOkc6MzIsIFU6Rjo2NCwgVTpGOjY0LCBEOkY6NjQKICAgICBSZXNDb25k
LCBUbXAsIFRtcCwgVG1wLCBUbXAsIFRtcAotICAgIHg4NjogUmVzQ29uZCwgVG1wLCBJbW0sIFRt
cCwgVG1wLCBUbXAKKyAgICBSZXNDb25kLCBUbXAsIEJpdEltbSwgVG1wLCBUbXAsIFRtcAogICAg
IHg4NjogUmVzQ29uZCwgQWRkciwgSW1tLCBUbXAsIFRtcCwgVG1wCiAgICAgeDg2OiBSZXNDb25k
LCBJbmRleCwgSW1tLCBUbXAsIFRtcCwgVG1wCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy90ZXN0YjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5j
cHAKaW5kZXggZDIyMTZjODIyYThmMDg2YTA1MGIyMjA2N2E5ODQ2ZGEyOTVmMTg3OC4uYzkzMTNj
YjAzMGY3NzM1ZTQ1OWJlZmNhNzlkOGViYWM1ODZmZTQwMSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L3Rlc3RiMy5jcHAKQEAgLTE1MCwxMCArMTUwLDEwIEBAIFZlY3RvcjxPcGVyYW5kPEZsb2F0VHlw
ZT4+IGZsb2F0aW5nUG9pbnRPcGVyYW5kcygpCiBzdGF0aWMgVmVjdG9yPEludDY0T3BlcmFuZD4g
aW50NjRPcGVyYW5kcygpCiB7CiAgICAgVmVjdG9yPEludDY0T3BlcmFuZD4gb3BlcmFuZHM7Ci0g
ICAgZm9yIChjb25zdCBhdXRvJiBkb3VibGVPcGVyYW5kIDogZmxvYXRpbmdQb2ludE9wZXJhbmRz
PGRvdWJsZT4oKSkKLSAgICAgICAgb3BlcmFuZHMuYXBwZW5kKHsgZG91YmxlT3BlcmFuZC5uYW1l
LCBiaXR3aXNlX2Nhc3Q8aW50NjRfdD4oZG91YmxlT3BlcmFuZC52YWx1ZSkgfSk7CiAgICAgb3Bl
cmFuZHMuYXBwZW5kKHsgIjEiLCAxIH0pOwogICAgIG9wZXJhbmRzLmFwcGVuZCh7ICItMSIsIC0x
IH0pOworICAgIG9wZXJhbmRzLmFwcGVuZCh7ICI0MiIsIDQyIH0pOworICAgIG9wZXJhbmRzLmFw
cGVuZCh7ICItNDIiLCAtNDIgfSk7CiAgICAgb3BlcmFuZHMuYXBwZW5kKHsgImludDY0LW1heCIs
IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1heCgpIH0pOwogICAgIG9wZXJhbmRzLmFw
cGVuZCh7ICJpbnQ2NC1taW4iLCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptaW4oKSB9
KTsKICAgICBvcGVyYW5kcy5hcHBlbmQoeyAiaW50MzItbWF4Iiwgc3RkOjpudW1lcmljX2xpbWl0
czxpbnQzMl90Pjo6bWF4KCkgfSk7CkBAIC04ODIyLDcgKzg4MjIsOCBAQCB2b2lkIGdlbmVyaWNU
ZXN0Q29tcGFyZSgKICAgICB9CiB9CiAKLWludCBtb2RlbENvbXBhcmUoQjM6Ok9wY29kZSBvcGNv
ZGUsIGludCBsZWZ0LCBpbnQgcmlnaHQpCit0ZW1wbGF0ZTx0eXBlbmFtZSBJbnB1dFR5cGU+CitJ
bnB1dFR5cGUgbW9kZWxDb21wYXJlKEIzOjpPcGNvZGUgb3Bjb2RlLCBJbnB1dFR5cGUgbGVmdCwg
SW5wdXRUeXBlIHJpZ2h0KQogewogICAgIHN3aXRjaCAob3Bjb2RlKSB7CiAgICAgY2FzZSBFcXVh
bDoKQEAgLTg4MzgsMTMgKzg4MzksMTcgQEAgaW50IG1vZGVsQ29tcGFyZShCMzo6T3Bjb2RlIG9w
Y29kZSwgaW50IGxlZnQsIGludCByaWdodCkKICAgICBjYXNlIEdyZWF0ZXJFcXVhbDoKICAgICAg
ICAgcmV0dXJuIGxlZnQgPj0gcmlnaHQ7CiAgICAgY2FzZSBBYm92ZToKLSAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihsZWZ0KSA+IHN0YXRpY19jYXN0PHVuc2lnbmVkPihyaWdo
dCk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx0eXBlbmFtZSBzdGQ6Om1ha2VfdW5zaWdu
ZWQ8SW5wdXRUeXBlPjo6dHlwZT4obGVmdCkgPgorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dHlw
ZW5hbWUgc3RkOjptYWtlX3Vuc2lnbmVkPElucHV0VHlwZT46OnR5cGU+KHJpZ2h0KTsKICAgICBj
YXNlIEJlbG93OgotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxlZnQpIDwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJpZ2h0KTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PHR5cGVuYW1lIHN0ZDo6bWFrZV91bnNpZ25lZDxJbnB1dFR5cGU+Ojp0eXBlPihsZWZ0KSA8Cisg
ICAgICAgICAgICBzdGF0aWNfY2FzdDx0eXBlbmFtZSBzdGQ6Om1ha2VfdW5zaWduZWQ8SW5wdXRU
eXBlPjo6dHlwZT4ocmlnaHQpOwogICAgIGNhc2UgQWJvdmVFcXVhbDoKLSAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihsZWZ0KSA+PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmln
aHQpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dHlwZW5hbWUgc3RkOjptYWtlX3Vuc2ln
bmVkPElucHV0VHlwZT46OnR5cGU+KGxlZnQpID49CisgICAgICAgICAgICBzdGF0aWNfY2FzdDx0
eXBlbmFtZSBzdGQ6Om1ha2VfdW5zaWduZWQ8SW5wdXRUeXBlPjo6dHlwZT4ocmlnaHQpOwogICAg
IGNhc2UgQmVsb3dFcXVhbDoKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihs
ZWZ0KSA8PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmlnaHQpOworICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8dHlwZW5hbWUgc3RkOjptYWtlX3Vuc2lnbmVkPElucHV0VHlwZT46OnR5cGU+KGxl
ZnQpIDw9CisgICAgICAgICAgICBzdGF0aWNfY2FzdDx0eXBlbmFtZSBzdGQ6Om1ha2VfdW5zaWdu
ZWQ8SW5wdXRUeXBlPjo6dHlwZT4ocmlnaHQpOwogICAgIGNhc2UgQml0QW5kOgogICAgICAgICBy
ZXR1cm4gISEobGVmdCAmIHJpZ2h0KTsKICAgICBkZWZhdWx0OgpAQCAtODkzOSw3ICs4OTQ0LDgg
QEAgdm9pZCB0ZXN0Q29tcGFyZUxvYWQoQjM6Ok9wY29kZSBvcGNvZGUsIEIzOjpPcGNvZGUgbG9h
ZE9wY29kZSwgaW50IGxlZnQsIGludCByaWcKIAogdm9pZCB0ZXN0Q29tcGFyZUltcGwoQjM6Ok9w
Y29kZSBvcGNvZGUsIGludDY0X3QgbGVmdCwgaW50NjRfdCByaWdodCkKIHsKLSAgICBpbnQgcmVz
dWx0ID0gbW9kZWxDb21wYXJlKG9wY29kZSwgbGVmdCwgcmlnaHQpOworICAgIGludDY0X3QgcmVz
dWx0ID0gbW9kZWxDb21wYXJlKG9wY29kZSwgbGVmdCwgcmlnaHQpOworICAgIGludDMyX3QgaW50
MzJSZXN1bHQgPSBtb2RlbENvbXBhcmUob3Bjb2RlLCBzdGF0aWNfY2FzdDxpbnQzMl90PihsZWZ0
KSwgc3RhdGljX2Nhc3Q8aW50MzJfdD4ocmlnaHQpKTsKICAgICAKICAgICAvLyBUZXN0IHRtcC10
by10bXAuCiAgICAgZ2VuZXJpY1Rlc3RDb21wYXJlKApAQCAtODk2Myw3ICs4OTY5LDcgQEAgdm9p
ZCB0ZXN0Q29tcGFyZUltcGwoQjM6Ok9wY29kZSBvcGNvZGUsIGludDY0X3QgbGVmdCwgaW50NjRf
dCByaWdodCkKICAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCiAgICAgICAg
ICAgICAgICAgYmxvY2stPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CiAgICAgICAgIH0sCi0gICAgICAgIGxlZnQsIHJp
Z2h0LCByZXN1bHQpOworICAgICAgICBsZWZ0LCByaWdodCwgaW50MzJSZXN1bHQpOwogCiAgICAg
Ly8gVGVzdCBpbW0tdG8tdG1wLgogICAgIGdlbmVyaWNUZXN0Q29tcGFyZSgKQEAgLTg5ODUsNyAr
ODk5MSw3IEBAIHZvaWQgdGVzdENvbXBhcmVJbXBsKEIzOjpPcGNvZGUgb3Bjb2RlLCBpbnQ2NF90
IGxlZnQsIGludDY0X3QgcmlnaHQpCiAgICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdp
bigpLAogICAgICAgICAgICAgICAgIGJsb2NrLT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOwogICAgICAgICB9LAotICAg
ICAgICBsZWZ0LCByaWdodCwgcmVzdWx0KTsKKyAgICAgICAgbGVmdCwgcmlnaHQsIGludDMyUmVz
dWx0KTsKIAogICAgIC8vIFRlc3QgdG1wLXRvLWltbS4KICAgICBnZW5lcmljVGVzdENvbXBhcmUo
CkBAIC05MDA3LDcgKzkwMTMsNyBAQCB2b2lkIHRlc3RDb21wYXJlSW1wbChCMzo6T3Bjb2RlIG9w
Y29kZSwgaW50NjRfdCBsZWZ0LCBpbnQ2NF90IHJpZ2h0KQogICAgICAgICBbJl0gKEJhc2ljQmxv
Y2sqIGJsb2NrLCBQcm9jZWR1cmUmIHByb2MpIHsKICAgICAgICAgICAgIHJldHVybiBibG9jay0+
YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHJpZ2h0KTsKICAgICAgICAg
fSwKLSAgICAgICAgbGVmdCwgcmlnaHQsIHJlc3VsdCk7CisgICAgICAgIGxlZnQsIHJpZ2h0LCBp
bnQzMlJlc3VsdCk7CiAKICAgICAvLyBUZXN0IGltbS10by1pbW0uCiAgICAgZ2VuZXJpY1Rlc3RD
b21wYXJlKApAQCAtOTAyNyw3ICs5MDMzLDcgQEAgdm9pZCB0ZXN0Q29tcGFyZUltcGwoQjM6Ok9w
Y29kZSBvcGNvZGUsIGludDY0X3QgbGVmdCwgaW50NjRfdCByaWdodCkKICAgICAgICAgWyZdIChC
YXNpY0Jsb2NrKiBibG9jaywgUHJvY2VkdXJlJiBwcm9jKSB7CiAgICAgICAgICAgICByZXR1cm4g
YmxvY2stPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCByaWdodCk7CiAg
ICAgICAgIH0sCi0gICAgICAgIGxlZnQsIHJpZ2h0LCByZXN1bHQpOworICAgICAgICBsZWZ0LCBy
aWdodCwgaW50MzJSZXN1bHQpOwogCiAgICAgdGVzdENvbXBhcmVMb2FkPGludDMyX3Q+KG9wY29k
ZSwgTG9hZCwgbGVmdCwgcmlnaHQpOwogICAgIHRlc3RDb21wYXJlTG9hZDxpbnQ4X3Q+KG9wY29k
ZSwgTG9hZDhTLCBsZWZ0LCByaWdodCk7CkBAIC05MDM2LDM3ICs5MDQyLDExIEBAIHZvaWQgdGVz
dENvbXBhcmVJbXBsKEIzOjpPcGNvZGUgb3Bjb2RlLCBpbnQ2NF90IGxlZnQsIGludDY0X3Qgcmln
aHQpCiAgICAgdGVzdENvbXBhcmVMb2FkPHVpbnQxNl90PihvcGNvZGUsIExvYWQxNlosIGxlZnQs
IHJpZ2h0KTsKIH0KIAotdm9pZCB0ZXN0Q29tcGFyZShCMzo6T3Bjb2RlIG9wY29kZSwgaW50IGxl
ZnQsIGludCByaWdodCkKK3ZvaWQgdGVzdENvbXBhcmUoQjM6Ok9wY29kZSBvcGNvZGUsIGludDY0
X3QgbGVmdCwgaW50NjRfdCByaWdodCkKIHsKLSAgICBhdXRvIHZhcmlhbnRzID0gWyZdIChpbnQg
bGVmdCwgaW50IHJpZ2h0KSB7Ci0gICAgICAgIHRlc3RDb21wYXJlSW1wbChvcGNvZGUsIGxlZnQs
IHJpZ2h0KTsKLSAgICAgICAgdGVzdENvbXBhcmVJbXBsKG9wY29kZSwgbGVmdCwgcmlnaHQgKyAx
KTsKLSAgICAgICAgdGVzdENvbXBhcmVJbXBsKG9wY29kZSwgbGVmdCwgcmlnaHQgLSAxKTsKLQot
ICAgICAgICBhdXRvIG11bHRpcGxpZWRUZXN0cyA9IFsmXSAoaW50IGZhY3RvcikgewotICAgICAg
ICAgICAgdGVzdENvbXBhcmVJbXBsKG9wY29kZSwgbGVmdCAqIGZhY3RvciwgcmlnaHQpOwotICAg
ICAgICAgICAgdGVzdENvbXBhcmVJbXBsKG9wY29kZSwgbGVmdCAqIGZhY3RvciwgcmlnaHQgKyAx
KTsKLSAgICAgICAgICAgIHRlc3RDb21wYXJlSW1wbChvcGNvZGUsIGxlZnQgKiBmYWN0b3IsIHJp
Z2h0IC0gMSk7Ci0gICAgICAgIAotICAgICAgICAgICAgdGVzdENvbXBhcmVJbXBsKG9wY29kZSwg
bGVmdCwgcmlnaHQgKiBmYWN0b3IpOwotICAgICAgICAgICAgdGVzdENvbXBhcmVJbXBsKG9wY29k
ZSwgbGVmdCwgKHJpZ2h0ICsgMSkgKiBmYWN0b3IpOwotICAgICAgICAgICAgdGVzdENvbXBhcmVJ
bXBsKG9wY29kZSwgbGVmdCwgKHJpZ2h0IC0gMSkgKiBmYWN0b3IpOwotICAgICAgICAKLSAgICAg
ICAgICAgIHRlc3RDb21wYXJlSW1wbChvcGNvZGUsIGxlZnQgKiBmYWN0b3IsIHJpZ2h0ICogZmFj
dG9yKTsKLSAgICAgICAgICAgIHRlc3RDb21wYXJlSW1wbChvcGNvZGUsIGxlZnQgKiBmYWN0b3Is
IChyaWdodCArIDEpICogZmFjdG9yKTsKLSAgICAgICAgICAgIHRlc3RDb21wYXJlSW1wbChvcGNv
ZGUsIGxlZnQgKiBmYWN0b3IsIChyaWdodCAtIDEpICogZmFjdG9yKTsKLSAgICAgICAgfTsKLQot
ICAgICAgICBtdWx0aXBsaWVkVGVzdHMoMTApOwotICAgICAgICBtdWx0aXBsaWVkVGVzdHMoMTAw
KTsKLSAgICAgICAgbXVsdGlwbGllZFRlc3RzKDEwMDApOwotICAgICAgICBtdWx0aXBsaWVkVGVz
dHMoMTAwMDAwKTsKLSAgICB9OwotCi0gICAgdmFyaWFudHMobGVmdCwgcmlnaHQpOwotICAgIHZh
cmlhbnRzKC1sZWZ0LCByaWdodCk7Ci0gICAgdmFyaWFudHMobGVmdCwgLXJpZ2h0KTsKLSAgICB2
YXJpYW50cygtbGVmdCwgLXJpZ2h0KTsKKyAgICB0ZXN0Q29tcGFyZUltcGwob3Bjb2RlLCBsZWZ0
LCByaWdodCk7CisgICAgdGVzdENvbXBhcmVJbXBsKG9wY29kZSwgbGVmdCwgcmlnaHQgKyAxKTsK
KyAgICB0ZXN0Q29tcGFyZUltcGwob3Bjb2RlLCBsZWZ0LCByaWdodCAtIDEpOwogfQogCiB2b2lk
IHRlc3RFcXVhbERvdWJsZShkb3VibGUgbGVmdCwgZG91YmxlIHJpZ2h0LCBib29sIHJlc3VsdCkK
QEAgLTEwODk5LDYgKzEwODc5LDIwIEBAIHZvaWQgdGVzdENoZWNrU2VsZWN0Q2hlY2tTZWxlY3Qo
KQogICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb2RlLCB0cnVlLCBmYWxzZSkgPT0gNjY3KTsKIH0K
IAorZG91YmxlIGIzUG93KGRvdWJsZSB4LCBpbnQgeSkKK3sKKyAgICBpZiAoeSA8IDAgfHwgeSA+
IDEwMDApCisgICAgICAgIHJldHVybiBwb3coeCwgeSk7CisgICAgZG91YmxlIHJlc3VsdCA9IDE7
CisgICAgd2hpbGUgKHkpIHsKKyAgICAgICAgaWYgKHkgJiAxKQorICAgICAgICAgICAgcmVzdWx0
ICo9IHg7CisgICAgICAgIHggKj0geDsKKyAgICAgICAgeSA+Pj0gMTsKKyAgICB9CisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKwogdm9pZCB0ZXN0UG93RG91YmxlQnlJbnRlZ2VyTG9vcChkb3VibGUg
eE9wZXJhbmQsIGludDMyX3QgeU9wZXJhbmQpCiB7CiAgICAgUHJvY2VkdXJlIHByb2M7CkBAIC0x
MDkxMSw3ICsxMDkwNSw3IEBAIHZvaWQgdGVzdFBvd0RvdWJsZUJ5SW50ZWdlckxvb3AoZG91Ymxl
IHhPcGVyYW5kLCBpbnQzMl90IHlPcGVyYW5kKQogICAgIEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlv
biA9IHJlc3VsdC5maXJzdDsKICAgICBjb250aW51YXRpb24tPmFwcGVuZE5ldzxDb250cm9sVmFs
dWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdC5zZWNvbmQpOwogCi0gICAgQ0hFQ0so
aXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIHhPcGVyYW5kLCB5T3BlcmFu
ZCksIHBvdyh4T3BlcmFuZCwgeU9wZXJhbmQpKSk7CisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29t
cGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIHhPcGVyYW5kLCB5T3BlcmFuZCksIGIzUG93KHhPcGVy
YW5kLCB5T3BlcmFuZCkpKTsKIH0KIAogdm9pZCB0ZXN0VHJ1bmNPckhpZ2goKQpAQCAtMTIyNDgs
MTkgKzEyMjQyLDE3IEBAIHZvaWQgcnVuKGNvbnN0IGNoYXIqIGZpbHRlcikKICAgICBSVU4odGVz
dENoZWNrTXVsQXJndW1lbnRBbGlhc2luZzY0KCkpOwogICAgIFJVTih0ZXN0Q2hlY2tNdWxBcmd1
bWVudEFsaWFzaW5nMzIoKSk7CiAKLSAgICBSVU4odGVzdENvbXBhcmUoRXF1YWwsIDQyLCA0Mikp
OwotICAgIFJVTih0ZXN0Q29tcGFyZShOb3RFcXVhbCwgNDIsIDQyKSk7Ci0gICAgUlVOKHRlc3RD
b21wYXJlKExlc3NUaGFuLCA0MiwgNDIpKTsKLSAgICBSVU4odGVzdENvbXBhcmUoR3JlYXRlclRo
YW4sIDQyLCA0MikpOwotICAgIFJVTih0ZXN0Q29tcGFyZShMZXNzRXF1YWwsIDQyLCA0MikpOwot
ICAgIFJVTih0ZXN0Q29tcGFyZShHcmVhdGVyRXF1YWwsIDQyLCA0MikpOwotICAgIFJVTih0ZXN0
Q29tcGFyZShCZWxvdywgNDIsIDQyKSk7Ci0gICAgUlVOKHRlc3RDb21wYXJlKEFib3ZlLCA0Miwg
NDIpKTsKLSAgICBSVU4odGVzdENvbXBhcmUoQmVsb3dFcXVhbCwgNDIsIDQyKSk7Ci0gICAgUlVO
KHRlc3RDb21wYXJlKEFib3ZlRXF1YWwsIDQyLCA0MikpOwotCi0gICAgUlVOKHRlc3RDb21wYXJl
KEJpdEFuZCwgNDIsIDQyKSk7Ci0gICAgUlVOKHRlc3RDb21wYXJlKEJpdEFuZCwgNDIsIDApKTsK
KyAgICBSVU5fQklOQVJZKFtdKGludDMyX3QgYSwgaW50MzJfdCBiKSB7IHRlc3RDb21wYXJlKEVx
dWFsLCBhLCBiKTsgfSwgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOworICAgIFJV
Tl9CSU5BUlkoW10oaW50MzJfdCBhLCBpbnQzMl90IGIpIHsgdGVzdENvbXBhcmUoTm90RXF1YWws
IGEsIGIpOyB9LCBpbnQ2NE9wZXJhbmRzKCksIGludDY0T3BlcmFuZHMoKSk7CisgICAgUlVOX0JJ
TkFSWShbXShpbnQzMl90IGEsIGludDMyX3QgYikgeyB0ZXN0Q29tcGFyZShMZXNzVGhhbiwgYSwg
Yik7IH0sIGludDY0T3BlcmFuZHMoKSwgaW50NjRPcGVyYW5kcygpKTsKKyAgICBSVU5fQklOQVJZ
KFtdKGludDMyX3QgYSwgaW50MzJfdCBiKSB7IHRlc3RDb21wYXJlKEdyZWF0ZXJUaGFuLCBhLCBi
KTsgfSwgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOworICAgIFJVTl9CSU5BUlko
W10oaW50MzJfdCBhLCBpbnQzMl90IGIpIHsgdGVzdENvbXBhcmUoTGVzc0VxdWFsLCBhLCBiKTsg
fSwgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOworICAgIFJVTl9CSU5BUlkoW10o
aW50MzJfdCBhLCBpbnQzMl90IGIpIHsgdGVzdENvbXBhcmUoR3JlYXRlckVxdWFsLCBhLCBiKTsg
fSwgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOworICAgIFJVTl9CSU5BUlkoW10o
aW50MzJfdCBhLCBpbnQzMl90IGIpIHsgdGVzdENvbXBhcmUoQmVsb3csIGEsIGIpOyB9LCBpbnQ2
NE9wZXJhbmRzKCksIGludDY0T3BlcmFuZHMoKSk7CisgICAgUlVOX0JJTkFSWShbXShpbnQzMl90
IGEsIGludDMyX3QgYikgeyB0ZXN0Q29tcGFyZShBYm92ZSwgYSwgYik7IH0sIGludDY0T3BlcmFu
ZHMoKSwgaW50NjRPcGVyYW5kcygpKTsKKyAgICBSVU5fQklOQVJZKFtdKGludDMyX3QgYSwgaW50
MzJfdCBiKSB7IHRlc3RDb21wYXJlKEJlbG93RXF1YWwsIGEsIGIpOyB9LCBpbnQ2NE9wZXJhbmRz
KCksIGludDY0T3BlcmFuZHMoKSk7CisgICAgUlVOX0JJTkFSWShbXShpbnQzMl90IGEsIGludDMy
X3QgYikgeyB0ZXN0Q29tcGFyZShBYm92ZUVxdWFsLCBhLCBiKTsgfSwgaW50NjRPcGVyYW5kcygp
LCBpbnQ2NE9wZXJhbmRzKCkpOworICAgIFJVTl9CSU5BUlkoW10oaW50MzJfdCBhLCBpbnQzMl90
IGIpIHsgdGVzdENvbXBhcmUoQml0QW5kLCBhLCBiKTsgfSwgaW50NjRPcGVyYW5kcygpLCBpbnQ2
NE9wZXJhbmRzKCkpOwogCiAgICAgUlVOKHRlc3RFcXVhbERvdWJsZSg0MiwgNDIsIHRydWUpKTsK
ICAgICBSVU4odGVzdEVxdWFsRG91YmxlKDAsIC0wLCB0cnVlKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDZjMjQ5NDJmMDNlMWQ4
MTA4NWRiMjMxNDM5OWE2MjA0NWE1YmFiZTcuLjhhN2QzOWUwNWI2ZWJmNGU1ZjA1N2JiYzRmNDhj
ZmY0YTM2MzZlN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCkBAIC0xMjkzLDE0ICsxMjkzLDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVQZWVwSG9sZUJvb2xlYW5CcmFuY2goTm9kZSogbm9kZSwgTm9kZSogYnJhbmNoTm9k
ZSwKICAgICAgICAgbm90VGFrZW4gPSB0bXA7CiAgICAgfQogCi0gICAgaWYgKG5vZGUtPmNoaWxk
MSgpLT5pc0Jvb2xlYW5Db25zdGFudCgpKSB7Ci0gICAgICAgIGJvb2wgaW1tID0gbm9kZS0+Y2hp
bGQxKCktPmFzQm9vbGVhbigpOworICAgIGlmIChub2RlLT5jaGlsZDEoKS0+aXNJbnQzMkNvbnN0
YW50KCkpIHsKKyAgICAgICAgaW50MzJfdCBpbW0gPSBub2RlLT5jaGlsZDEoKS0+YXNJbnQzMigp
OwogICAgICAgICBTcGVjdWxhdGVCb29sZWFuT3BlcmFuZCBvcDIodGhpcywgbm9kZS0+Y2hpbGQy
KCkpOwotICAgICAgICBicmFuY2gzMihjb25kaXRpb24sIEpJVENvbXBpbGVyOjpJbW0zMihzdGF0
aWNfY2FzdDxpbnQzMl90PihKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGltbSkpKSksIG9wMi5n
cHIoKSwgdGFrZW4pOwotICAgIH0gZWxzZSBpZiAobm9kZS0+Y2hpbGQyKCktPmlzQm9vbGVhbkNv
bnN0YW50KCkpIHsKKyAgICAgICAgYnJhbmNoMzIoY29uZGl0aW9uLCBKSVRDb21waWxlcjo6SW1t
MzIoaW1tKSwgb3AyLmdwcigpLCB0YWtlbik7CisgICAgfSBlbHNlIGlmIChub2RlLT5jaGlsZDIo
KS0+aXNJbnQzMkNvbnN0YW50KCkpIHsKICAgICAgICAgU3BlY3VsYXRlQm9vbGVhbk9wZXJhbmQg
b3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgYm9vbCBpbW0gPSBub2RlLT5jaGls
ZDIoKS0+YXNCb29sZWFuKCk7Ci0gICAgICAgIGJyYW5jaDMyKGNvbmRpdGlvbiwgb3AxLmdwcigp
LCBKSVRDb21waWxlcjo6SW1tMzIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNWYWx1ZTo6ZW5jb2Rl
KGpzQm9vbGVhbihpbW0pKSkpLCB0YWtlbik7CisgICAgICAgIGludDMyX3QgaW1tID0gbm9kZS0+
Y2hpbGQyKCktPmFzSW50MzIoKTsKKyAgICAgICAgYnJhbmNoMzIoY29uZGl0aW9uLCBvcDEuZ3By
KCksIEpJVENvbXBpbGVyOjpJbW0zMihpbW0pLCB0YWtlbik7CiAgICAgfSBlbHNlIHsKICAgICAg
ICAgU3BlY3VsYXRlQm9vbGVhbk9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAg
ICAgICAgU3BlY3VsYXRlQm9vbGVhbk9wZXJhbmQgb3AyKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
CmluZGV4IDk3ZTcyMTcyMTZhMjUxNzcxYTlkNTAzNWFhNDJlNDNjOTBjNmE4ZDUuLjVmYTljYTVl
MmU3ODYwNzRiZThhMjA2MjE3NzQzYjFjYTMwMDM1NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMTU2NiwxNSArMTU2Niwz
NCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVPYmplY3RUb09iamVjdE9y
T3RoZXJFcXVhbGl0eShFZGdlIGxlZnRDaGlsZAogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlSW50MzJDb21wYXJlKE5vZGUqIG5vZGUsIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29u
ZGl0aW9uIGNvbmRpdGlvbikKIHsKLSAgICBTcGVjdWxhdGVJbnQzMk9wZXJhbmQgb3AxKHRoaXMs
IG5vZGUtPmNoaWxkMSgpKTsKLSAgICBTcGVjdWxhdGVJbnQzMk9wZXJhbmQgb3AyKHRoaXMsIG5v
ZGUtPmNoaWxkMigpKTsKLSAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBvcDEs
IG9wMik7Ci0gICAgCi0gICAgbV9qaXQuY29tcGFyZTMyKGNvbmRpdGlvbiwgb3AxLmdwcigpLCBv
cDIuZ3ByKCksIHJlc3VsdC5ncHIoKSk7Ci0gICAgCi0gICAgLy8gSWYgd2UgYWRkIGEgRGF0YUZv
cm1hdEJvb2wsIHdlIHNob3VsZCB1c2UgaXQgaGVyZS4KLSAgICBtX2ppdC5vcjMyKFRydXN0ZWRJ
bW0zMihWYWx1ZUZhbHNlKSwgcmVzdWx0LmdwcigpKTsKLSAgICBqc1ZhbHVlUmVzdWx0KHJlc3Vs
dC5ncHIoKSwgbV9jdXJyZW50Tm9kZSwgRGF0YUZvcm1hdEpTQm9vbGVhbik7CisgICAgaWYgKG5v
ZGUtPmNoaWxkMSgpLT5pc0ludDMyQ29uc3RhbnQoKSkgeworICAgICAgICBTcGVjdWxhdGVJbnQz
Mk9wZXJhbmQgb3AyKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5
IHJlc3VsdCh0aGlzLCBSZXVzZSwgb3AyKTsKKyAgICAgICAgaW50MzJfdCBpbW0gPSBub2RlLT5j
aGlsZDEoKS0+YXNJbnQzMigpOworICAgICAgICBtX2ppdC5jb21wYXJlMzIoY29uZGl0aW9uLCBK
SVRDb21waWxlcjo6SW1tMzIoaW1tKSwgb3AyLmdwcigpLCByZXN1bHQuZ3ByKCkpOworCisgICAg
ICAgIC8vIElmIHdlIGFkZCBhIERhdGFGb3JtYXRCb29sLCB3ZSBzaG91bGQgdXNlIGl0IGhlcmUu
CisgICAgICAgIG1faml0Lm9yMzIoVHJ1c3RlZEltbTMyKFZhbHVlRmFsc2UpLCByZXN1bHQuZ3By
KCkpOworICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdC5ncHIoKSwgbV9jdXJyZW50Tm9kZSwg
RGF0YUZvcm1hdEpTQm9vbGVhbik7CisgICAgfSBlbHNlIGlmIChub2RlLT5jaGlsZDIoKS0+aXNJ
bnQzMkNvbnN0YW50KCkpIHsKKyAgICAgICAgU3BlY3VsYXRlSW50MzJPcGVyYW5kIG9wMSh0aGlz
LCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1
c2UsIG9wMSk7CisgICAgICAgIGludDMyX3QgaW1tID0gbm9kZS0+Y2hpbGQyKCktPmFzSW50MzIo
KTsKKyAgICAgICAgbV9qaXQuY29tcGFyZTMyKGNvbmRpdGlvbiwgb3AxLmdwcigpLCBKSVRDb21w
aWxlcjo6SW1tMzIoaW1tKSwgcmVzdWx0LmdwcigpKTsKKworICAgICAgICAvLyBJZiB3ZSBhZGQg
YSBEYXRhRm9ybWF0Qm9vbCwgd2Ugc2hvdWxkIHVzZSBpdCBoZXJlLgorICAgICAgICBtX2ppdC5v
cjMyKFRydXN0ZWRJbW0zMihWYWx1ZUZhbHNlKSwgcmVzdWx0LmdwcigpKTsKKyAgICAgICAganNW
YWx1ZVJlc3VsdChyZXN1bHQuZ3ByKCksIG1fY3VycmVudE5vZGUsIERhdGFGb3JtYXRKU0Jvb2xl
YW4pOworICAgIH0gZWxzZSB7CisgICAgICAgIFNwZWN1bGF0ZUludDMyT3BlcmFuZCBvcDEodGhp
cywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBTcGVjdWxhdGVJbnQzMk9wZXJhbmQgb3AyKHRo
aXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBS
ZXVzZSwgb3AxLCBvcDIpOworICAgICAgICBtX2ppdC5jb21wYXJlMzIoY29uZGl0aW9uLCBvcDEu
Z3ByKCksIG9wMi5ncHIoKSwgcmVzdWx0LmdwcigpKTsKKworICAgICAgICAvLyBJZiB3ZSBhZGQg
YSBEYXRhRm9ybWF0Qm9vbCwgd2Ugc2hvdWxkIHVzZSBpdCBoZXJlLgorICAgICAgICBtX2ppdC5v
cjMyKFRydXN0ZWRJbW0zMihWYWx1ZUZhbHNlKSwgcmVzdWx0LmdwcigpKTsKKyAgICAgICAganNW
YWx1ZVJlc3VsdChyZXN1bHQuZ3ByKCksIG1fY3VycmVudE5vZGUsIERhdGFGb3JtYXRKU0Jvb2xl
YW4pOworICAgIH0KIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUludDUyQ29tcGFy
ZShOb2RlKiBub2RlLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbiBjb25kaXRp
b24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3NqaXQvRnVuY3Rpb25DYWxsLmggYi9T
b3VyY2UvV2ViQ29yZS9jc3NqaXQvRnVuY3Rpb25DYWxsLmgKaW5kZXggNGE0MTRhODQwZmZhYmYx
ODY3NzhiMzdiYTA2N2U3MDVkNTE4NWIxZi4uNmZlYzc4MGViZmUzYjIyMWMwYzFiZDcxYzRlNTAw
NGExZWY2MjlkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nzaml0L0Z1bmN0aW9uQ2Fs
bC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzc2ppdC9GdW5jdGlvbkNhbGwuaApAQCAtODcsNyAr
ODcsNyBAQCBwcml2YXRlOgogICAgIEpTQzo6TWFjcm9Bc3NlbWJsZXI6Okp1bXAgY2FsbEFuZEJy
YW5jaE9uQ29uZGl0aW9uKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OlJlc3VsdENvbmRpdGlvbiBjb25k
aXRpb24sIEpTQzo6TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMiBtYXNrKQogICAgIHsKICAg
ICAgICAgcHJlcGFyZUFuZENhbGwoKTsKLSAgICAgICAgbV9hc3NlbWJsZXIudGVzdDMyKGNvbmRp
dGlvbiwgSlNDOjpHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgbWFzayk7CisgICAgICAgIG1fYXNz
ZW1ibGVyLnRlc3QzMihKU0M6OkdQUkluZm86OnJldHVyblZhbHVlR1BSLCBtYXNrKTsKICAgICAg
ICAgY2xlYW51cFBvc3RDYWxsKCk7CiAgICAgICAgIHJldHVybiBtX2Fzc2VtYmxlci5icmFuY2go
Y29uZGl0aW9uKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3NqaXQvU2Vs
ZWN0b3JDb21waWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3NqaXQvU2VsZWN0b3JDb21waWxl
ci5jcHAKaW5kZXggMTQ2NDkwYmM5ZmEyY2YwOTA4OTI0OTMyOGVjYzhlZWZhOWI2NWMyNC4uNzEz
OWY1MmQ3NGNlN2EyMjRmYTdmN2FhMGUyYmQwYjJlNmU2OTBjYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzc2ppdC9TZWxlY3RvckNvbXBpbGVyLmNwcApAQCAtMjM4OSw3ICsyMzg5LDcgQEAgQXNzZW1i
bGVyOjpKdW1wIFNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6bW9kdWxvKEFzc2VtYmxlcjo6UmVzdWx0
Q29uZGl0aW9uIGNvbmRpdGkKICAgICAgICAgTG9jYWxSZWdpc3RlciBkaXZpc29yUmVnaXN0ZXIo
bV9yZWdpc3RlckFsbG9jYXRvcik7CiAgICAgICAgIG1fYXNzZW1ibGVyLm1vdmUoQXNzZW1ibGVy
OjpUcnVzdGVkSW1tNjQoZGl2aXNvciksIGRpdmlzb3JSZWdpc3Rlcik7CiAgICAgICAgIG1fYXNz
ZW1ibGVyLm1fYXNzZW1ibGVyLmlkaXZsX3IoZGl2aXNvclJlZ2lzdGVyKTsKLSAgICAgICAgbV9h
c3NlbWJsZXIudGVzdDMyKGNvbmRpdGlvbiwgcmVtYWluZGVyKTsKKyAgICAgICAgbV9hc3NlbWJs
ZXIudGVzdDMyKHJlbWFpbmRlcik7CiAgICAgfQogCiAgICAgLy8gMykgUmV0dXJuIFJBWCBhbmQg
UkRYLgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>