<?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>160098</bug_id>
          
          <creation_ts>2016-07-22 14:05:11 -0700</creation_ts>
          <short_desc>[JSC] DFG::Node should not have its own allocator</short_desc>
          <delta_ts>2017-05-13 11:37:15 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          <dependson>160228</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ossy</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1213735</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-07-22 14:05:11 -0700</bug_when>
    <thetext>[JSC] DFG::Node should not have its own allocator</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1213736</commentid>
    <comment_count>1</comment_count>
      <attachid>284371</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-07-22 14:09:13 -0700</bug_when>
    <thetext>Created attachment 284371
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1213773</commentid>
    <comment_count>2</comment_count>
      <attachid>284371</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-07-22 15:35:02 -0700</bug_when>
    <thetext>Comment on attachment 284371
Patch

Uh, 32bits does not build B3.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1213781</commentid>
    <comment_count>3</comment_count>
      <attachid>284383</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-07-22 16:03:34 -0700</bug_when>
    <thetext>Created attachment 284383
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214050</commentid>
    <comment_count>4</comment_count>
      <attachid>284383</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-07-24 09:21:49 -0700</bug_when>
    <thetext>Comment on attachment 284383
Patch

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

r=me

Do we have performance results for this change? I think we need that before landing.

&gt; Source/JavaScriptCore/dfg/DFGNode.h:2351
&gt; +    unsigned m_index { std::numeric_limits&lt;unsigned&gt;::max() };

Where does this value get initialized now?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214051</commentid>
    <comment_count>5</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-07-24 09:42:21 -0700</bug_when>
    <thetext>It would also be interesting to see various compile time comparisons and not just benchmarks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214093</commentid>
    <comment_count>6</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-07-24 18:29:48 -0700</bug_when>
    <thetext>&gt; It would also be interesting to see various compile time comparisons and not
&gt; just benchmarks.

I agree -- though I&apos;ll also point out that only an end-to-end benchmark can fully weigh the advantages and disadvantages of private slab allocation (the status quo) vs shared heap (this patch).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214127</commentid>
    <comment_count>7</comment_count>
      <attachid>284383</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-07-25 02:04:43 -0700</bug_when>
    <thetext>Comment on attachment 284383
Patch

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

&gt; Source/JavaScriptCore/b3/B3SparseCollection.h:-30
&gt; -#if ENABLE(B3_JIT)
&gt; -

It&apos;s so ugly to use a B3 file outside B3 directory.
I suggest you should move it outside of B3 and remove
the B3 prefix from the filename and namespace too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214250</commentid>
    <comment_count>8</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-07-25 10:51:09 -0700</bug_when>
    <thetext>&gt; I suggest you should move it outside of B3 and remove
&gt; the B3 prefix from the filename and namespace too.

Yeah, this could just bet WTF::SparseCollection.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214393</commentid>
    <comment_count>9</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-07-25 16:49:57 -0700</bug_when>
    <thetext>This is just a prerequisite for the next changes. No perf improvement intended here.

Bench results:
                                                          Conf#1                    Conf#2                                      
SunSpider:
   3d-cube                                            4.5836+-0.3397     ?      4.7505+-0.4177        ? might be 1.0364x slower
   3d-morph                                           4.9816+-0.1035            4.9611+-0.1475        
   3d-raytrace                                        4.9725+-0.1169     ?      5.0789+-0.3238        ? might be 1.0214x slower
   access-binary-trees                                1.9615+-0.0437     ?      2.0272+-0.2319        ? might be 1.0335x slower
   access-fannkuch                                    5.8403+-0.3337            5.6096+-0.1484          might be 1.0411x faster
   access-nbody                                       2.5463+-0.1532            2.5067+-0.1230          might be 1.0158x faster
   access-nsieve                                      3.0684+-0.1134            2.9572+-0.1023          might be 1.0376x faster
   bitops-3bit-bits-in-byte                           1.0390+-0.0272     ?      1.0470+-0.0284        ?
   bitops-bits-in-byte                                2.5625+-0.0576     ?      2.6500+-0.0988        ? might be 1.0342x slower
   bitops-bitwise-and                                 1.9964+-0.1658            1.9807+-0.0446        
   bitops-nsieve-bits                                 3.3705+-0.5680            3.1161+-0.0246          might be 1.0816x faster
   controlflow-recursive                              2.2792+-0.0300     ?      2.2967+-0.0464        ?
   crypto-aes                                         4.3719+-0.0925     ?      4.5295+-0.0864        ? might be 1.0360x slower
   crypto-md5                                         2.6827+-0.0983            2.6353+-0.1061          might be 1.0180x faster
   crypto-sha1                                        2.7142+-0.0765     ?      2.7793+-0.1252        ? might be 1.0240x slower
   date-format-tofte                                  6.3802+-0.0477            6.3069+-0.1799          might be 1.0116x faster
   date-format-xparb                                  4.7271+-0.1744     ?      4.7435+-0.1847        ?
   math-cordic                                        2.7368+-0.0930     ?      3.2941+-1.8430        ? might be 1.2036x slower
   math-partial-sums                                  3.9833+-0.0799     ?      4.0600+-0.1291        ? might be 1.0193x slower
   math-spectral-norm                                 1.9470+-0.0211     ?      1.9800+-0.0715        ? might be 1.0170x slower
   regexp-dna                                         6.3972+-0.3792     ?      6.5093+-0.3067        ? might be 1.0175x slower
   string-base64                                      4.0341+-0.0622     ?      4.0421+-0.0420        ?
   string-fasta                                       5.3906+-0.0500     ?      5.4359+-0.0625        ?
   string-tagcloud                                    8.3417+-0.2300            8.2700+-0.1057        
   string-unpack-code                                18.4478+-0.9387           18.2593+-1.0403          might be 1.0103x faster
   string-validate-input                              4.0724+-0.1434     ?      4.0825+-0.1460        ?

   &lt;arithmetic&gt;                                       4.4396+-0.0598     ?      4.4581+-0.1155        ? might be 1.0042x slower

                                                          Conf#1                    Conf#2                                      
LongSpider:
   3d-cube                                          814.1968+-13.9080         803.0479+-6.5301          might be 1.0139x faster
   3d-morph                                         595.2142+-1.6293     ?    595.8592+-1.9296        ?
   3d-raytrace                                      477.0824+-13.0346    ?    481.0647+-15.5629       ?
   access-binary-trees                              824.0523+-2.4855          821.3245+-0.6398        
   access-fannkuch                                  244.6966+-1.8342     ?    247.5770+-12.5992       ? might be 1.0118x slower
   access-nbody                                     547.5306+-7.5478          537.7537+-17.9482         might be 1.0182x faster
   access-nsieve                                    290.3370+-19.0784    ?    295.2606+-27.1267       ? might be 1.0170x slower
   bitops-3bit-bits-in-byte                          32.7778+-0.0973     ?     32.8211+-0.2815        ?
   bitops-bits-in-byte                               99.1688+-1.0427     ?    100.7849+-3.6052        ? might be 1.0163x slower
   bitops-nsieve-bits                               390.1149+-9.4305          387.0555+-1.3148        
   controlflow-recursive                            461.2272+-1.1946     ?    462.8629+-4.7241        ?
   crypto-aes                                       580.6058+-4.5551     ?    581.4628+-2.2363        ?
   crypto-md5                                       488.4390+-7.5242     !    501.9428+-5.3408        ! definitely 1.0276x slower
   crypto-sha1                                      655.9058+-10.7790    ?    657.3202+-14.6412       ?
   date-format-tofte                                336.7000+-2.9436          336.3047+-6.0693        
   date-format-xparb                                631.8662+-6.4577          626.9180+-11.9064       
   hash-map                                         144.2493+-9.5339     ?    147.1482+-3.8239        ? might be 1.0201x slower
   math-cordic                                      444.9510+-10.5592         442.6737+-9.6940        
   math-partial-sums                                284.0110+-0.7932          283.5725+-0.5594        
   math-spectral-norm                               552.3792+-4.1721     ?    557.6889+-6.0465        ?
   string-base64                                    344.7924+-3.7015          343.2288+-1.4431        
   string-fasta                                     335.7288+-9.1996     ?    338.4246+-6.2538        ?
   string-tagcloud                                  174.2877+-6.1980          172.9207+-2.1834        

   &lt;geometric&gt;                                      350.9745+-2.4860     ?    351.8233+-1.9755        ? might be 1.0024x slower

                                                          Conf#1                    Conf#2                                      
V8Spider:
   crypto                                            36.0634+-0.4051     ?     36.3123+-0.4496        ?
   deltablue                                         49.6981+-1.1390     ?     52.3143+-3.3507        ? might be 1.0526x slower
   earley-boyer                                      39.0964+-0.4292     ?     39.7713+-0.7411        ? might be 1.0173x slower
   raytrace                                          20.6555+-0.7178     ?     20.8365+-0.2198        ?
   regexp                                            53.0681+-1.6381     ?     53.6110+-2.0561        ? might be 1.0102x slower
   richards                                          41.0083+-1.4894           40.6258+-0.6122        
   splay                                             29.5540+-1.1945           29.4339+-0.9263        

   &lt;geometric&gt;                                       36.8926+-0.3953     ?     37.3195+-0.3886        ? might be 1.0116x slower

                                                          Conf#1                    Conf#2                                      
Octane:
   encrypt                                           0.15935+-0.00206    ?     0.15949+-0.00450       ?
   decrypt                                           2.68049+-0.01307          2.67917+-0.01530       
   deltablue                                x2       0.13047+-0.00561    ?     0.13051+-0.00296       ?
   earley                                            0.28515+-0.00227    ?     0.28687+-0.00312       ?
   boyer                                             4.98511+-0.06987    ?     5.00160+-0.04835       ?
   navier-stokes                            x2       4.92439+-0.02021    ?     4.95331+-0.03256       ?
   raytrace                                 x2       0.80400+-0.00850    ?     0.80712+-0.01610       ?
   richards                                 x2       0.08147+-0.00185    ?     0.08306+-0.00479       ? might be 1.0195x slower
   splay                                    x2       0.33811+-0.00108    ?     0.34345+-0.01939       ? might be 1.0158x slower
   regexp                                   x2      16.08042+-0.86763    ?    16.22920+-1.31226       ?
   pdfjs                                    x2      38.42773+-0.62616    ?    38.54145+-0.44634       ?
   mandreel                                 x2      42.77889+-0.40898    ?    42.94046+-1.00047       ?
   gbemu                                    x2      29.65128+-0.12255         29.45333+-0.38738       
   closure                                           0.48247+-0.00431          0.48182+-0.00337       
   jquery                                            6.36401+-0.03640    ?     6.37159+-0.07905       ?
   box2d                                    x2       9.22148+-0.08685    ?     9.31903+-0.06357       ? might be 1.0106x slower
   zlib                                     x2     358.16150+-22.25503   ?   367.97878+-5.02124       ? might be 1.0274x slower
   typescript                               x2     581.85010+-32.24668   ?   602.52795+-6.35020       ? might be 1.0355x slower

   &lt;geometric&gt;                                       4.98543+-0.03715    ?     5.02923+-0.03750       ? might be 1.0088x slower

                                                          Conf#1                    Conf#2                                      
Kraken:
   ai-astar                                           87.559+-5.623             85.709+-1.477           might be 1.0216x faster
   audio-beat-detection                               38.719+-0.240             38.693+-0.321         
   audio-dft                                          96.634+-1.431      ?      96.808+-1.089         ?
   audio-fft                                          30.284+-0.096             30.278+-0.051         
   audio-oscillator                                   48.754+-0.244      ^      47.652+-0.332         ^ definitely 1.0231x faster
   imaging-darkroom                                   61.081+-0.125      ?      61.123+-0.321         ?
   imaging-desaturate                                 43.984+-0.177      ?      44.689+-2.543         ? might be 1.0160x slower
   imaging-gaussian-blur                              62.499+-3.068             60.988+-3.018           might be 1.0248x faster
   json-parse-financial                               35.986+-3.223             34.652+-2.098           might be 1.0385x faster
   json-stringify-tinderbox                           24.043+-1.170      ?      24.629+-1.205         ? might be 1.0244x slower
   stanford-crypto-aes                                36.704+-0.154      ?      36.857+-0.471         ?
   stanford-crypto-ccm                                33.510+-1.267      ?      34.316+-5.406         ? might be 1.0240x slower
   stanford-crypto-pbkdf2                             93.491+-4.126             92.750+-1.984         
   stanford-crypto-sha256-iterative                   30.211+-0.463             30.107+-0.212         

   &lt;arithmetic&gt;                                       51.676+-1.004             51.375+-0.375           might be 1.0059x faster

                                                          Conf#1                    Conf#2                                      
JSRegress:
   ...
   &lt;geometric&gt;                                        6.6183+-0.0098            6.6178+-0.0222          might be 1.0001x faster

                                                          Conf#1                    Conf#2                                      
AsmBench:
   bigfib.cpp                                       426.2920+-12.8457    ?    426.4513+-2.9671        ?
   cray.c                                           384.1620+-2.9445     ?    387.1522+-4.2875        ?
   dry.c                                            482.7440+-163.5305        427.1642+-15.8615         might be 1.1301x faster
   FloatMM.c                                        714.7203+-8.7752     ?    721.1167+-13.1488       ?
   gcc-loops.cpp                                   3596.2211+-28.2532    ?   3661.3823+-59.3434       ? might be 1.0181x slower
   n-body.c                                         799.9656+-5.6063     ?    804.9960+-8.1356        ?
   Quicksort.c                                      400.3997+-14.2065         398.1345+-14.0623       
   stepanov_container.cpp                          3262.5024+-28.7497    ?   3294.4413+-49.5728       ?
   Towers.c                                         264.0674+-1.0000     ?    264.3337+-0.9620        ?

   &lt;geometric&gt;                                      724.9118+-22.5246         719.9194+-5.9676          might be 1.0069x faster

                                                          Conf#1                    Conf#2                                      
CompressionBench:
   huffman                                           33.1841+-1.5393     !     36.0825+-0.9056        ! definitely 1.0873x slower
   arithmetic-simple                                259.3812+-2.0594          258.4003+-2.5427        
   arithmetic-precise                               243.7347+-4.8619          243.5977+-4.5461        
   arithmetic-complex-precise                       247.0735+-9.2874          239.2947+-1.2824          might be 1.0325x faster
   arithmetic-precise-order-0                       263.5537+-1.4464          263.2097+-6.0637        
   arithmetic-precise-order-1                       303.0754+-2.7143          297.8614+-6.1711          might be 1.0175x faster
   arithmetic-precise-order-2                       332.4570+-2.8310     ?    334.0301+-4.1523        ?
   arithmetic-simple-order-1                        307.1030+-1.5720          306.6102+-3.8142        
   arithmetic-simple-order-2                        358.2093+-3.3284     ?    362.6561+-17.5987       ? might be 1.0124x slower
   lz-string                                        276.9891+-2.9038     ?    277.2866+-5.7870        ?

   &lt;geometric&gt;                                      230.2706+-1.2441     ?    231.3146+-2.0397        ? might be 1.0045x slower

                                                          Conf#1                    Conf#2                                      
Geomean of preferred means:
   &lt;scaled-result&gt;                                   44.8449+-0.1256     ?     44.9495+-0.1751        ? might be 1.0023x slower

Fast benchmarks (20 times):

                                               Conf#1                    Conf#2                                      
SunSpider:
   3d-cube                                 4.7572+-0.0686            4.6810+-0.0801          might be 1.0163x faster
   3d-morph                                5.2314+-0.3427            4.9305+-0.0258          might be 1.0610x faster
   3d-raytrace                             4.9503+-0.0243     ?      4.9645+-0.0476        ?
   access-binary-trees                     1.9265+-0.0196     ?      1.9516+-0.0164        ? might be 1.0130x slower
   access-fannkuch                         5.7562+-0.1228            5.6229+-0.0642          might be 1.0237x faster
   access-nbody                            2.5011+-0.0211            2.4865+-0.0239        
   access-nsieve                           3.0539+-0.0352     ^      2.9335+-0.0282        ^ definitely 1.0410x faster
   bitops-3bit-bits-in-byte                1.0499+-0.0114     ?      1.0723+-0.0222        ? might be 1.0213x slower
   bitops-bits-in-byte                     2.6300+-0.0715            2.5676+-0.0232          might be 1.0243x faster
   bitops-bitwise-and                      1.9621+-0.0158     ?      2.0171+-0.0399        ? might be 1.0280x slower
   bitops-nsieve-bits                      3.1489+-0.0882            3.1414+-0.0222        
   controlflow-recursive                   2.3005+-0.0237            2.2949+-0.0166        
   crypto-aes                              4.3848+-0.0415     ?      4.5537+-0.1458        ? might be 1.0385x slower
   crypto-md5                              2.6661+-0.0289            2.6551+-0.0248        
   crypto-sha1                             2.7099+-0.0230     ?      2.7916+-0.0645        ? might be 1.0302x slower
   date-format-tofte                       6.3407+-0.0502     ?      6.3818+-0.0682        ?
   date-format-xparb                       4.7178+-0.0521     ?      4.7404+-0.0950        ?
   math-cordic                             2.7471+-0.0290     ?      2.7513+-0.0265        ?
   math-partial-sums                       4.0329+-0.0630     ?      4.0995+-0.0740        ? might be 1.0165x slower
   math-spectral-norm                      1.9965+-0.0306     ?      2.0066+-0.0265        ?
   regexp-dna                              6.5255+-0.1465            6.4875+-0.0618        
   string-base64                           4.1081+-0.0618            4.0572+-0.0323          might be 1.0126x faster
   string-fasta                            5.4179+-0.0417     ?      5.4700+-0.0336        ?
   string-tagcloud                         8.2939+-0.0525            8.2778+-0.0476        
   string-unpack-code                     18.1401+-0.2992           17.7812+-0.2111          might be 1.0202x faster
   string-validate-input                   4.0633+-0.0553            4.0373+-0.0188        

   &lt;arithmetic&gt;                            4.4389+-0.0243            4.4136+-0.0153          might be 1.0057x faster

                                               Conf#1                    Conf#2                                      
Kraken:
   ai-astar                                86.307+-0.724      ?      86.415+-0.795         ?
   audio-beat-detection                    38.757+-0.130             38.690+-0.100         
   audio-dft                               98.433+-1.472      ?      99.142+-1.525         ?
   audio-fft                               30.227+-0.018      ?      30.429+-0.376         ?
   audio-oscillator                        48.947+-0.169      ^      47.713+-0.176         ^ definitely 1.0259x faster
   imaging-darkroom                        61.503+-0.569             61.172+-0.098         
   imaging-desaturate                      44.288+-0.509             44.084+-0.234         
   imaging-gaussian-blur                   60.716+-0.887      ?      62.475+-1.685         ? might be 1.0290x slower
   json-parse-financial                    34.954+-0.846             33.844+-0.477           might be 1.0328x faster
   json-stringify-tinderbox                24.147+-0.473      ?      24.309+-0.202         ?
   stanford-crypto-aes                     37.123+-0.530             36.869+-0.137         
   stanford-crypto-ccm                     33.390+-0.686      ?      34.120+-0.237         ? might be 1.0219x slower
   stanford-crypto-pbkdf2                  92.535+-0.465      ?      92.683+-0.533         ?
   stanford-crypto-sha256-iterative        30.226+-0.102      ?      30.370+-0.203         ?

   &lt;arithmetic&gt;                            51.539+-0.167      ?      51.594+-0.162         ? might be 1.0011x slower

                                               Conf#1                    Conf#2                                      
Geomean of preferred means:
   &lt;scaled-result&gt;                         4.7830+-0.0142            4.7719+-0.0090          might be 1.0023x faster</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214396</commentid>
    <comment_count>10</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-07-25 16:55:16 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; &gt; I suggest you should move it outside of B3 and remove
&gt; &gt; the B3 prefix from the filename and namespace too.
&gt; 
&gt; Yeah, this could just bet WTF::SparseCollection.

Our layering has B3 under Air and DFG.

I disagree SparseCollection should be in WTF given how specialized it is.
I don&apos;t care enough to fight, I&apos;ll rename and put it somewhere to make you guys happy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214400</commentid>
    <comment_count>11</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-07-25 16:59:43 -0700</bug_when>
    <thetext>&gt; &gt; Yeah, this could just bet WTF::SparseCollection.
&gt; 
&gt; Our layering has B3 under Air and DFG.

Yes, I agree.

&gt; I disagree SparseCollection should be in WTF given how specialized it is.

OK -- let&apos;s not move it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214404</commentid>
    <comment_count>12</comment_count>
      <attachid>284383</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-07-25 17:07:05 -0700</bug_when>
    <thetext>Comment on attachment 284383
Patch

(In reply to comment #4)
&gt; &gt; Source/JavaScriptCore/dfg/DFGNode.h:2351
&gt; &gt; +    unsigned m_index { std::numeric_limits&lt;unsigned&gt;::max() };
&gt; 
&gt; Where does this value get initialized now?

The SparseCollection has to be a friend of the node types.
It sets the indices of its content.

&gt; &gt; I disagree SparseCollection should be in WTF given how specialized it is.
&gt; 
&gt; OK -- let&apos;s not move it.

Ok, let&apos;s move forward then. We can always rename later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214415</commentid>
    <comment_count>13</comment_count>
      <attachid>284383</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-25 17:28:59 -0700</bug_when>
    <thetext>Comment on attachment 284383
Patch

Clearing flags on attachment: 284383

Committed r203703: &lt;http://trac.webkit.org/changeset/203703&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214416</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-25 17:29:04 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214420</commentid>
    <comment_count>15</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-07-25 17:45:35 -0700</bug_when>
    <thetext>I&apos;m seeing crashes:


Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   com.apple.JavaScriptCore      	0x000000010b836cf7 bmalloc::Deallocator::processObjectLog(std::__1::lock_guard&lt;bmalloc::StaticMutex&gt;&amp;) + 71 (SmallLine.h:63)
1   com.apple.JavaScriptCore      	0x000000010b832dd7 bmalloc::Allocator::refillAllocatorSlowCase(bmalloc::BumpAllocator&amp;, unsigned long) + 87 (atomic:848)
2   com.apple.JavaScriptCore      	0x000000010b832f34 bmalloc::Allocator::allocateLogSizeClass(unsigned long) + 180 (BumpAllocator.h:76)
3   com.apple.JavaScriptCore      	0x000000010b1271d0 JSC::B3::SparseCollection&lt;JSC::DFG::Node&gt;::remove(JSC::DFG::Node*) + 144 (Vector.h:269)
4   com.apple.JavaScriptCore      	0x000000010b0de958 JSC::DFG::ConstantFoldingPhase::run() + 1096 (DFGConstantFoldingPhase.cpp:86)
5   com.apple.JavaScriptCore      	0x000000010b0de3c9 JSC::DFG::performConstantFolding(JSC::DFG::Graph&amp;) + 41 (DFGPhase.h:80)
6   com.apple.JavaScriptCore      	0x000000010b1d8927 JSC::DFG::Plan::compileInThreadImpl() + 1287 (DFGPlan.cpp:411)
7   com.apple.JavaScriptCore      	0x000000010b1d7e7d JSC::DFG::Plan::compileInThread(JSC::DFG::ThreadData*) + 589 (DFGPlan.cpp:189)
8   com.apple.JavaScriptCore      	0x000000010b107507 JSC::DFG::compile(JSC::VM&amp;, JSC::CodeBlock*, JSC::CodeBlock*, JSC::DFG::CompilationMode, unsigned int, JSC::Operands&lt;JSC::JSValue, JSC::OperandValueTraits&lt;JSC::JSValue&gt; &gt; const&amp;, WTF::PassRefPtr&lt;JSC::DeferredCompilationCallback&gt;) + 1191 (DFGDriver.cpp:112)
9   com.apple.JavaScriptCore      	0x000000010b1b647e JSC::DFG::triggerFTLReplacementCompile(JSC::VM*, JSC::CodeBlock*, JSC::DFG::JITCode*) + 558 (utility:753)
10  com.apple.JavaScriptCore      	0x000000010b1b5dfd triggerTierUpNow + 301 (DFGOperations.cpp:1848)
11  ???                           	0x00005d65df03518f 0 + 102692114616719
12  ???                           	0x00005d65def6c09b 0 + 102692113793179
13  com.apple.JavaScriptCore      	0x000000010b5b8b90 llint_entry + 25202 (LowLevelInterpreter.asm:733)
14  ???                           	0x00005d65defe320e 0 + 102692114280974
15  ???                           	0x00005d65def680a4 0 + 102692113776804
16  ???                           	0x00005d65def0abd2 0 + 102692113394642
17  com.apple.JavaScriptCore      	0x000000010b5b273b vmEntryToJavaScript + 299 (LowLevelInterpreter64.asm:255)
18  com.apple.JavaScriptCore      	0x000000010b41b8fe JSC::JITCode::execute(JSC::VM*, JSC::ProtoCallFrame*) + 158 (JITCode.cpp:81)
19  com.apple.JavaScriptCore      	0x000000010b3c34ff JSC::Interpreter::execute(JSC::ProgramExecutable*, JSC::ExecState*, JSC::JSObject*) + 16367 (Interpreter.cpp:962)
20  com.apple.JavaScriptCore      	0x000000010b041735 JSC::evaluate(JSC::ExecState*, JSC::SourceCode const&amp;, JSC::JSValue, WTF::NakedPtr&lt;JSC::Exception&gt;&amp;) + 469 (Completion.cpp:107)
21  jsc                           	0x000000010addb299 runJSC(JSC::VM*, CommandLine) + 2425 (jsc.cpp:2129)
22  jsc                           	0x000000010add9d7f jscmain(int, char**) + 575 (jsc.cpp:2431)
23  jsc                           	0x000000010add9aba main + 154 (jsc.cpp:2000)
24  libdyld.dylib                 	0x00007fffa4f83255 start + 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214423</commentid>
    <comment_count>16</comment_count>
      <attachid>284383</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-07-25 17:53:08 -0700</bug_when>
    <thetext>Comment on attachment 284383
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/dfg/DFGNode.h:2351
&gt;&gt;&gt; +    unsigned m_index { std::numeric_limits&lt;unsigned&gt;::max() };
&gt;&gt; 
&gt;&gt; Where does this value get initialized now?
&gt; 
&gt; The SparseCollection has to be a friend of the node types.
&gt; It sets the indices of its content.

This would read better as UINT_MAX.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214426</commentid>
    <comment_count>17</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-07-25 18:07:05 -0700</bug_when>
    <thetext>Reverted r203703 for reason:

It breaks some internal tests

Committed r203704: &lt;http://trac.webkit.org/changeset/203704&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1215105</commentid>
    <comment_count>18</comment_count>
      <attachid>284747</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-07-27 17:34:57 -0700</bug_when>
    <thetext>Created attachment 284747
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1215109</commentid>
    <comment_count>19</comment_count>
      <attachid>284747</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-07-27 18:16:13 -0700</bug_when>
    <thetext>Comment on attachment 284747
Patch

Second attempt.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1215113</commentid>
    <comment_count>20</comment_count>
      <attachid>284747</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-27 18:37:58 -0700</bug_when>
    <thetext>Comment on attachment 284747
Patch

Clearing flags on attachment: 284747

Committed r203808: &lt;http://trac.webkit.org/changeset/203808&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1215114</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-27 18:38:03 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1215315</commentid>
    <comment_count>22</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-07-28 11:41:31 -0700</bug_when>
    <thetext>Looks like this might be a 1% JetStream regression on Mac.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308066</commentid>
    <comment_count>23</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2017-05-12 14:32:02 -0700</bug_when>
    <thetext>Rolled out in https://bugs.webkit.org/show_bug.cgi?id=160784.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308075</commentid>
    <comment_count>24</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2017-05-12 14:56:45 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308076</commentid>
    <comment_count>25</comment_count>
      <attachid>309948</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2017-05-12 14:56:46 -0700</bug_when>
    <thetext>Created attachment 309948
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308102</commentid>
    <comment_count>26</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-05-12 15:18:33 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #25)
&gt; Created attachment 309948 [details]
&gt; Patch

Are perf results neutral now?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308104</commentid>
    <comment_count>27</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-05-12 15:19:02 -0700</bug_when>
    <thetext>(In reply to Saam Barati from comment #26)
&gt; (In reply to Geoffrey Garen from comment #25)
&gt; &gt; Created attachment 309948 [details]
&gt; &gt; Patch
&gt; 
&gt; Are perf results neutral now?

Oops, just saw your changelog. It appears so.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308113</commentid>
    <comment_count>28</comment_count>
      <attachid>309957</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2017-05-12 15:47:35 -0700</bug_when>
    <thetext>Created attachment 309957
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308180</commentid>
    <comment_count>29</comment_count>
      <attachid>309976</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2017-05-12 17:36:01 -0700</bug_when>
    <thetext>Created attachment 309976
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308181</commentid>
    <comment_count>30</comment_count>
      <attachid>309957</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-05-12 17:37:59 -0700</bug_when>
    <thetext>Comment on attachment 309957
Patch

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

r=me
You need to up the CMake lists file

&gt; Source/JavaScriptCore/dfg/DFGGraph.h:194
&gt;      Node* addNode(SpeculatedType type, Params... params)
&gt;      {
&gt; -        Node* node = new (m_allocator) Node(params...);
&gt; +        Node* node = new Node(params...);

Maybe it&apos;s worth changing this and the other variadic constructors to use perfect forwarding

&gt; Source/JavaScriptCore/dfg/DFGGraph.h:196
&gt; +        m_nodes.add(std::unique_ptr&lt;Node&gt;(node));

nit: I think addNew will do the making of the unique ptr for you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308183</commentid>
    <comment_count>31</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-05-12 17:38:34 -0700</bug_when>
    <thetext>(In reply to Saam Barati from comment #30)
&gt; Comment on attachment 309957 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=309957&amp;action=review
&gt; 
&gt; r=me
&gt; You need to up the CMake lists file
Oops, I reviewed the old patch.
&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGGraph.h:194
&gt; &gt;      Node* addNode(SpeculatedType type, Params... params)
&gt; &gt;      {
&gt; &gt; -        Node* node = new (m_allocator) Node(params...);
&gt; &gt; +        Node* node = new Node(params...);
&gt; 
&gt; Maybe it&apos;s worth changing this and the other variadic constructors to use
&gt; perfect forwarding
&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGGraph.h:196
&gt; &gt; +        m_nodes.add(std::unique_ptr&lt;Node&gt;(node));
&gt; 
&gt; nit: I think addNew will do the making of the unique ptr for you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308184</commentid>
    <comment_count>32</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2017-05-12 17:45:14 -0700</bug_when>
    <thetext>&gt; &gt; Source/JavaScriptCore/dfg/DFGGraph.h:196
&gt; &gt; +        m_nodes.add(std::unique_ptr&lt;Node&gt;(node));
&gt; 
&gt; nit: I think addNew will do the making of the unique ptr for you.

I don&apos;t think you can rely on automatic construction because std::unique_ptr has an explicit constructor. I think that&apos;s a good thing because you really want the caller to indicate explicitly that it&apos;s giving away ownership.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308202</commentid>
    <comment_count>33</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-05-12 18:10:41 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #32)
&gt; &gt; &gt; Source/JavaScriptCore/dfg/DFGGraph.h:196
&gt; &gt; &gt; +        m_nodes.add(std::unique_ptr&lt;Node&gt;(node));
&gt; &gt; 
&gt; &gt; nit: I think addNew will do the making of the unique ptr for you.
&gt; 
&gt; I don&apos;t think you can rely on automatic construction because std::unique_ptr
&gt; has an explicit constructor. I think that&apos;s a good thing because you really
&gt; want the caller to indicate explicitly that it&apos;s giving away ownership.

I&apos;m just saying addNew is a function on sparse collection data structure you&apos;re using, and it just does the same thing you&apos;re doing. So you could just forward arguments to addNew instead of doing it yourself. It&apos;s not really a big deal either way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308266</commentid>
    <comment_count>34</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2017-05-12 21:43:42 -0700</bug_when>
    <thetext>&gt; I&apos;m just saying addNew is a function on sparse collection data structure
&gt; you&apos;re using, and it just does the same thing you&apos;re doing. So you could
&gt; just forward arguments to addNew instead of doing it yourself.

Oh! OK!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308268</commentid>
    <comment_count>35</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2017-05-12 21:59:37 -0700</bug_when>
    <thetext>Committed r216815: &lt;http://trac.webkit.org/changeset/216815&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308298</commentid>
    <comment_count>36</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2017-05-13 09:17:15 -0700</bug_when>
    <thetext>MacBook Pro JetStream bots say this is fine. MacBook Air JetStream bots haven&apos;t cycled yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308299</commentid>
    <comment_count>37</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2017-05-13 09:19:40 -0700</bug_when>
    <thetext>iOS JetStream bots say this change is OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308310</commentid>
    <comment_count>38</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2017-05-13 11:37:15 -0700</bug_when>
    <thetext>MacBook Air bot says no regression.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284371</attachid>
            <date>2016-07-22 14:09:13 -0700</date>
            <delta_ts>2016-07-22 16:03:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160098-20160722140813.patch</filename>
            <type>text/plain</type>
            <size>50691</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzNDQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
ZWRkMTAyNmQzZWQ4NjBhYmUyOTJiZmQyNzVjMzExNWUxOWM1ZmJhLi43ZDYzMzVjNWExYzIwY2M4
NWM4NzJmOWE5MGVmMDZkM2RhYzRmNjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4NCBAQAorMjAxNi0wNy0yMiAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KKworICAgICAgICBbSlNDXSBERkc6Ok5vZGUgc2hvdWxkIG5vdCBoYXZlIGl0cyBvd24g
YWxsb2NhdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjAwOTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBXZSBuZWVkIHNvbWUgZGVzaWduIGNoYW5nZXMgZm9yIERGRzo6Tm9kZToKKyAgICAgICAgLUFj
Y2Vzc2luZyB0aGUgaW5kZXggbXVzdCBiZSBmYXN0LiBCMyB1c2VzIGluZGljZXMgZm9yIHNldHMK
KyAgICAgICAgIGFuZCBtYXBzLCBpdCBpcyBhIGxvdCBmYXN0ZXIgdGhhbiBoYXNoaW5nIHBvaW50
ZXJzLgorICAgICAgICAtV2Ugc2hvdWxkIGJlIGFibGUgdG8gc3ViY2xhc3MgREZHOjpOb2RlIHRv
IHNwZWNpYWxpemUgaXQuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBK
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRmZy9E
RkdBbGxvY2F0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKEpTQzo6REZHOjpBbGxvY2F0b3I6OlJl
Z2lvbjo6c2l6ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6QWxsb2NhdG9yOjpSZWdp
b246OmhlYWRlclNpemUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6OkFsbG9jYXRvcjo6
UmVnaW9uOjpudW1iZXJPZlRoaW5nc1BlclJlZ2lvbik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkRGRzo6QWxsb2NhdG9yOjpSZWdpb246OmRhdGEpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpE
Rkc6OkFsbG9jYXRvcjo6UmVnaW9uOjppc0luVGhpc1JlZ2lvbik6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkRGRzo6QWxsb2NhdG9yOjpSZWdpb246OnJlZ2lvbkZvcik6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkRGRzo6QWxsb2NhdG9yPFQ+OjpBbGxvY2F0b3IpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpERkc6OkFsbG9jYXRvcjxUPjo6fkFsbG9jYXRvcik6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkRGRzo6QWxsb2NhdG9yPFQ+OjphbGxvY2F0ZSk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkRGRzo6QWxsb2NhdG9yPFQ+OjpmcmVlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZH
OjpBbGxvY2F0b3I8VD46OmZyZWVBbGwpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6OkFs
bG9jYXRvcjxUPjo6cmVzZXQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6OkFsbG9jYXRv
cjxUPjo6aW5kZXhPZik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6QWxsb2NhdG9yPFQ+
OjphbGxvY2F0b3JPZik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6QWxsb2NhdG9yPFQ+
OjpidW1wQWxsb2NhdGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6OkFsbG9jYXRvcjxU
Pjo6ZnJlZUxpc3RBbGxvY2F0ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6QWxsb2Nh
dG9yPFQ+OjphbGxvY2F0ZVNsb3cpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6OkFsbG9j
YXRvcjxUPjo6ZnJlZVJlZ2lvbnNTdGFydGluZ0F0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
REZHOjpBbGxvY2F0b3I8VD46OnN0YXJ0QnVtcGluZ0luKTogRGVsZXRlZC4KKyAgICAgICAgKiBk
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFy
c2VyOjphZGRUb0dyYXBoKToKKyAgICAgICAgKiBkZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6Q1BTUmV0aHJlYWRpbmdQaGFzZTo6ZnJlZVVubmVjZXNz
YXJ5Tm9kZXMpOgorICAgICAgICAoSlNDOjpERkc6OkNQU1JldGhyZWFkaW5nUGhhc2U6OmFkZFBo
aVNpbGVudGx5KToKKyAgICAgICAgKiBkZmcvREZHQ2xlYW5VcFBoYXNlLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpDbGVhblVwUGhhc2U6OnJ1bik6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50
Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFz
ZTo6cnVuKToKKyAgICAgICAgKiBkZmcvREZHQ29uc3RhbnRIb2lzdGluZ1BoYXNlLmNwcDoKKyAg
ICAgICAgKiBkZmcvREZHRENFUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkRDRVBoYXNl
OjpmaXh1cEJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHRHJpdmVyLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpjb21waWxlSW1wbCk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpHcmFwaDo6R3JhcGgpOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpk
ZWxldGVOb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6a2lsbEJsb2NrQW5kSXRzQ29u
dGVudHMpOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjp+R3JhcGgpOiBEZWxldGVkLgorICAg
ICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjphZGROb2Rl
KToKKyAgICAgICAgKiBkZmcvREZHTElDTVBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpM
SUNNUGhhc2U6OmF0dGVtcHRIb2lzdCk6CisgICAgICAgICogZGZnL0RGR0xvbmdMaXZlZFN0YXRl
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKEpTQzo6REZHOjpMb25nTGl2ZWRTdGF0ZTo6TG9uZ0xp
dmVkU3RhdGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6OkxvbmdMaXZlZFN0YXRlOjp+
TG9uZ0xpdmVkU3RhdGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6OkxvbmdMaXZlZFN0
YXRlOjpzaHJpbmtUb0ZpdCk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR0xvbmdMaXZlZFN0
YXRlLmg6IFJlbW92ZWQuCisgICAgICAgICogZGZnL0RGR05vZGUuY3BwOgorICAgICAgICAoSlND
OjpERkc6Ok5vZGU6OmluZGV4KTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgor
ICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmluZGV4KToKKyAgICAgICAgKiBkZmcvREZHTm9kZUFs
bG9jYXRvci5oOiBSZW1vdmVkLgorICAgICAgICAob3BlcmF0b3IgbmV3ICk6IERlbGV0ZWQuCisg
ICAgICAgICogZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwOgorICAgICAg
ICAqIGRmZy9ERkdQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpQbGFuOjpjb21waWxlSW5U
aHJlYWQpOgorICAgICAgICAoSlNDOjpERkc6OlBsYW46OmNvbXBpbGVJblRocmVhZEltcGwpOgor
ICAgICAgICAqIGRmZy9ERkdQbGFuLmg6CisgICAgICAgICogZGZnL0RGR1NTQUNvbnZlcnNpb25Q
aGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U1NBQ29udmVyc2lvblBoYXNlOjpydW4pOgor
ICAgICAgICAqIGRmZy9ERkdXb3JrbGlzdC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6V29ya2xp
c3Q6OnJ1blRocmVhZCk6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6
OlZNOjpWTSk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9WTS5oOgorCiAyMDE2LTA3LTE5
ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgVGhlIGRlZmF1bHQg
dGVzdGluZyBtb2RlIHNob3VsZCBub3QgaW52b2x2ZSBkaXNhYmxpbmcgdGhlIEZUTCBKSVQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAzNTllZmM3Y2VhMjE3YWE0NzczN2E3
NjFkNmNhMTZiYzAxMGZjOTliLi41Yzk2YzA2OTkxMWZjN2RmNjE0OTA3MGNiZDgxYmViN2YxYjY2
MDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0zMDksNyArMzA5LDYg
QEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBkZmcvREZHTGF6eUpTVmFsdWUuY3Bw
CiAgICAgZGZnL0RGR0xhenlOb2RlLmNwcAogICAgIGRmZy9ERkdMaXZlbmVzc0FuYWx5c2lzUGhh
c2UuY3BwCi0gICAgZGZnL0RGR0xvbmdMaXZlZFN0YXRlLmNwcAogICAgIGRmZy9ERkdMb29wUHJl
SGVhZGVyQ3JlYXRpb25QaGFzZS5jcHAKICAgICBkZmcvREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9u
UGhhc2UuY3BwCiAgICAgZGZnL0RGR01heUV4aXQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDFlZmMyMTY5Nzc0OGJiOGJmYzUwYTY5NDgyOTEzNGIzNzJlYTgyOWQuLjU4OTll
YjM0ODkyYWFhMjk4YTgxZDcxYjkwNDRhMmI1OWI5MmE1ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC04NzgsOCArODc4LDYgQEAKIAkJMEZFRkM5QUIxNjgxQTNCNjAwNTY3RjUz
IC8qIERGR09TUkV4aXRKdW1wUGxhY2Vob2xkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUZDOUE4MTY4MUEzQjAwMDU2N0Y1MyAvKiBERkdPU1JF
eGl0SnVtcFBsYWNlaG9sZGVyLmggKi87IH07CiAJCTBGRjA1NEY5MUFDMzVCNDQwMEU1QkU1NyAv
KiBFeGVjdXRhYmxlQWxsb2NhdGlvbkZ1enouY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGMDU0RjcxQUMzNUI0NDAwRTVCRTU3IC8qIEV4ZWN1dGFi
bGVBbGxvY2F0aW9uRnV6ei5jcHAgKi87IH07CiAJCTBGRjA1NEZBMUFDMzVCNDQwMEU1QkU1NyAv
KiBFeGVjdXRhYmxlQWxsb2NhdGlvbkZ1enouaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGRjA1NEY4MUFDMzVCNDQwMEU1QkU1NyAvKiBFeGVjdXRhYmxl
QWxsb2NhdGlvbkZ1enouaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwotCQkwRkYwRjE5OTE2QjcyOUY2MDA1REY5NUIgLyogREZHTG9uZ0xpdmVkU3RhdGUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCNEI1
MUMxNkI2Mjc3MjAwM0Y2OTZCIC8qIERGR0xvbmdMaXZlZFN0YXRlLmNwcCAqLzsgfTsKLQkJMEZG
MEYxOUIxNkI3MjlGQTAwNURGOTVCIC8qIERGR0xvbmdMaXZlZFN0YXRlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkI0QjUxRDE2QjYyNzcyMDAzRjY5
NkIgLyogREZHTG9uZ0xpdmVkU3RhdGUuaCAqLzsgfTsKIAkJMEZGMEYxOUMxNkI3MkEwMzAwNURG
OTVCIC8qIERGR05vZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEZCNEI1MUUxNkI2Mjc3MjAwM0Y2OTZCIC8qIERGR05vZGUuY3BwICovOyB9Owog
CQkwRkYwRjE5RDE2QjcyQTA4MDA1REY5NUIgLyogREZHQ29tbW9uLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjRCNTFBMTZCNjI3NzIwMDNGNjk2
QiAvKiBERkdDb21tb24uY3BwICovOyB9OwogCQkwRkYwRjE5RTE2QjcyQTBCMDA1REY5NUIgLyog
REZHRWRnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRkI0QjUxQjE2QjYyNzcyMDAzRjY5NkIgLyogREZHRWRnZS5jcHAgKi87IH07CkBAIC05MzIs
OSArOTMwLDcgQEAKIAkJMEZGQTU0OTgxNkI4ODM1MzAwQjNBOTgyIC8qIEE2NERPcGNvZGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1MkEzQTIzMTY1
MUM2OTcwMEE4MEFGRSAvKiBBNjRET3Bjb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZGQjZDMzgxQUY0OEREQzAwREIxQkY3IC8qIFR5cGVv
ZlR5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEZGQjZDMzYxQUY0OEREQzAwREIxQkY3IC8qIFR5cGVvZlR5cGUuY3BwICovOyB9OwogCQkwRkZC
NkMzOTFBRjQ4RERDMDBEQjFCRjcgLyogVHlwZW9mVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGQjZDMzcxQUY0OEREQzAwREIxQkY3IC8qIFR5
cGVvZlR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwotCQkwRkZCOTIxODE2RDAyRUIyMDA1NUE1REIgLyogREZHQWxsb2NhdG9yLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkI0QjUxOTE2QjYyNzcyMDAz
RjY5NkIgLyogREZHQWxsb2NhdG9yLmggKi87IH07CiAJCTBGRkI5MjFBMTZEMDJFQzUwMDU1QTVE
QiAvKiBERkdCYXNpY0Jsb2NrSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEZENTY1MjIxNkFCNzgwQTAwMTk3NjUzIC8qIERGR0Jhc2ljQmxv
Y2tJbmxpbmVzLmggKi87IH07Ci0JCTBGRkI5MjFCMTZEMDJGMDEwMDU1QTVEQiAvKiBERkdOb2Rl
QWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRkI0QjUxRjE2QjYyNzcyMDAzRjY5NkIgLyogREZHTm9kZUFsbG9jYXRvci5oICovOyB9Owog
CQkwRkZCOTIxQzE2RDAyRjExMDA1NUE1REIgLyogREZHT1NSRXhpdENvbXBpbGF0aW9uSW5mby5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU5ODdGMkMx
NjdGRTg0QjAwM0MyRjhEIC8qIERGR09TUkV4aXRDb21waWxhdGlvbkluZm8uaCAqLzsgfTsKIAkJ
MEZGQjkyMUQxNkQwMkYzMDAwNTVBNURCIC8qIERGR1Nsb3dQYXRoR2VuZXJhdG9yLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjFFM0E1MDE1MzdDMkNC
MDAwRjk0NTYgLyogREZHU2xvd1BhdGhHZW5lcmF0b3IuaCAqLzsgfTsKIAkJMEZGQjkyMjAxNkQw
MzNCNzAwNTVBNURCIC8qIE5vZGVDb25zdHJ1Y3RvcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMERBRDAzMEZCMUVCMUEwMDgyRDIwNSAvKiBOb2Rl
Q29uc3RydWN0b3JzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKQEAgLTI3NzQsMTMgKzI3NzAsOSBAQAogCQkwRkIzODc5MTFCRkQzMUExMDBFM0FCMUUg
LyogRlRMQ29tcGlsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBG
VExDb21waWxlLmNwcDsgcGF0aCA9IGZ0bC9GVExDb21waWxlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEZCNDM4QTIxOTI3MEIxRDAwRTFGQkM5IC8qIFN0cnVjdHVyZVNldC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJ1Y3R1cmVTZXQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkI0QjUxMDE2QjNBOTY0MDAzRjY5NkIg
LyogREZHTWluaWZpZWRJRC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdN
aW5pZmllZElELmg7IHBhdGggPSBkZmcvREZHTWluaWZpZWRJRC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQkwRkI0QjUxOTE2QjYyNzcyMDAzRjY5NkIgLyogREZHQWxsb2NhdG9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0FsbG9jYXRvci5oOyBwYXRoID0g
ZGZnL0RGR0FsbG9jYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkI0QjUx
QTE2QjYyNzcyMDAzRjY5NkIgLyogREZHQ29tbW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IERGR0NvbW1vbi5jcHA7IHBhdGggPSBkZmcvREZHQ29tbW9uLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZCNEI1MUIxNkI2Mjc3MjAwM0Y2OTZCIC8q
IERGR0VkZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHRWRn
ZS5jcHA7IHBhdGggPSBkZmcvREZHRWRnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTBGQjRCNTFDMTZCNjI3NzIwMDNGNjk2QiAvKiBERkdMb25nTGl2ZWRTdGF0ZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdMb25nTGl2ZWRTdGF0ZS5jcHA7
IHBhdGggPSBkZmcvREZHTG9uZ0xpdmVkU3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQkwRkI0QjUxRDE2QjYyNzcyMDAzRjY5NkIgLyogREZHTG9uZ0xpdmVkU3RhdGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHTG9uZ0xpdmVkU3RhdGUuaDsgcGF0
aCA9IGRmZy9ERkdMb25nTGl2ZWRTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRkI0QjUxRTE2QjYyNzcyMDAzRjY5NkIgLyogREZHTm9kZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdOb2RlLmNwcDsgcGF0aCA9IGRmZy9ERkdOb2RlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEZCNEI1MUYxNkI2Mjc3MjAwM0Y2OTZC
IC8qIERGR05vZGVBbGxvY2F0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
REZHTm9kZUFsbG9jYXRvci5oOyBwYXRoID0gZGZnL0RGR05vZGVBbGxvY2F0b3IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZCNEI1MjExNkI2Mjc4RDAwM0Y2OTZCIC8qIEZ1bmN0
aW9uRXhlY3V0YWJsZUR1bXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gRnVuY3Rpb25FeGVjdXRhYmxlRHVtcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGQjRCNTIyMTZCNjI3OEQwMDNGNjk2QiAvKiBGdW5jdGlvbkV4ZWN1dGFibGVEdW1wLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZ1bmN0aW9uRXhlY3V0YWJsZUR1bXAu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZCNEZCNzAxQkM4NDMxNDAwMjVDQTVB
IC8qIEZUTExhenlTbG93UGF0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBGVExMYXp5U2xvd1BhdGguY3BwOyBwYXRoID0gZnRsL0ZUTExhenlTbG93UGF0aC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MTU4LDcgKzYxNTAsNiBAQAogCQkJCTBG
MThEM0NEMUI1NUE2RTAwMDJDNUM5RiAvKiBERkdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQu
Y3BwICovLAogCQkJCTBGMThEM0NFMUI1NUE2RTAwMDJDNUM5RiAvKiBERkdBZGFwdGl2ZVN0cnVj
dHVyZVdhdGNocG9pbnQuaCAqLywKIAkJCQkwRjY2RTE2ODE0REYzRjEzMDBCN0IyRTQgLyogREZH
QWRqYWNlbmN5TGlzdC5oICovLAotCQkJCTBGQjRCNTE5MTZCNjI3NzIwMDNGNjk2QiAvKiBERkdB
bGxvY2F0b3IuaCAqLywKIAkJCQkwRjFFM0E0MzE1MzRDQkFEMDAwRjk0NTYgLyogREZHQXJndW1l
bnRQb3NpdGlvbi5oICovLAogCQkJCTBGMkREODBDMUFCM0Q4QkUwMEJCQjhFOCAvKiBERkdBcmd1
bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcCAqLywKIAkJCQkwRjJERDgwRDFBQjNEOEJFMDBCQkI4
RTggLyogREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5oICovLApAQCAtNjMwOCw4ICs2Mjk5
LDYgQEAKIAkJCQk3OUM0QjE1QzFCQTIxNThGMDBGRDU5MkUgLyogREZHTGl2ZUNhdGNoVmFyaWFi
bGVQcmVzZXJ2YXRpb25QaGFzZS5oICovLAogCQkJCUE3RDg5Q0VDMTdBMEI4Q0MwMDc3M0FEOCAv
KiBERkdMaXZlbmVzc0FuYWx5c2lzUGhhc2UuY3BwICovLAogCQkJCUE3RDg5Q0VEMTdBMEI4Q0Mw
MDc3M0FEOCAvKiBERkdMaXZlbmVzc0FuYWx5c2lzUGhhc2UuaCAqLywKLQkJCQkwRkI0QjUxQzE2
QjYyNzcyMDAzRjY5NkIgLyogREZHTG9uZ0xpdmVkU3RhdGUuY3BwICovLAotCQkJCTBGQjRCNTFE
MTZCNjI3NzIwMDNGNjk2QiAvKiBERkdMb25nTGl2ZWRTdGF0ZS5oICovLAogCQkJCUE3NjdCNUIz
MTdBMEI5NjUwMDYzRDk0MCAvKiBERkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5jcHAgKi8s
CiAJCQkJQTc2N0I1QjQxN0EwQjk2NTAwNjNEOTQwIC8qIERGR0xvb3BQcmVIZWFkZXJDcmVhdGlv
blBoYXNlLmggKi8sCiAJCQkJNzlGOEZDMUMxQjlGRUQwRjAwQ0E2NkFCIC8qIERGR01heGltYWxG
bHVzaEluc2VydGlvblBoYXNlLmNwcCAqLywKQEAgLTYzMjksNyArNjMxOCw2IEBACiAJCQkJQTcz
NzgxMEIxNzk5RUEyRTAwODE3NTMzIC8qIERGR05hdHVyYWxMb29wcy5oICovLAogCQkJCTBGQjRC
NTFFMTZCNjI3NzIwMDNGNjk2QiAvKiBERkdOb2RlLmNwcCAqLywKIAkJCQk4NkVDQTNFOTEzMkRF
RjFDMDAyQjJBRDcgLyogREZHTm9kZS5oICovLAotCQkJCTBGQjRCNTFGMTZCNjI3NzIwMDNGNjk2
QiAvKiBERkdOb2RlQWxsb2NhdG9yLmggKi8sCiAJCQkJMEZBNTgxQjcxNTBFOTUyQTAwQjlBMkQ5
IC8qIERGR05vZGVGbGFncy5jcHAgKi8sCiAJCQkJMEZBNTgxQjgxNTBFOTUyQTAwQjlBMkQ5IC8q
IERGR05vZGVGbGFncy5oICovLAogCQkJCTBGNUQwODVDMUI4Q0Y5OUQwMDExNDNCNCAvKiBERkdO
b2RlT3JpZ2luLmNwcCAqLywKQEAgLTcyNjMsNyArNzI1MSw2IEBACiAJCQkJOTk4RUQ2NzUxQkVE
NzY4QzAwREQ4MDE3IC8qIFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEYzM0ZDRjgxQzEzNkUyNTAwMzIzRjY3IC8qIEIzU3RhY2ttYXBHZW5lcmF0aW9uUGFy
YW1zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjY2RTE2QjE0REYzRjE2MDBCN0IyRTQgLyogREZH
QWRqYWNlbmN5TGlzdC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEZGQjkyMTgxNkQwMkVCMjAwNTVB
NURCIC8qIERGR0FsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxRTNBNDYxNTM0Q0JB
RjAwMEY5NDU2IC8qIERGR0FyZ3VtZW50UG9zaXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
MkREODEyMUFCM0Q4QkUwMEJCQjhFOCAvKiBERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjJERDgxNDFBQjNEOEJFMDBCQkI4RTggLyogREZHQXJndW1l
bnRzVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKQEAgLTczNjAsNyArNzM0Nyw2IEBACiAJCQkJ
OTlENkExMTYxQkVBRDM0RDAwRTI1QzM3IC8qIFJlbW90ZUF1dG9tYXRpb25UYXJnZXQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTc5QzRCMTVFMUJBMjE1OEYwMEZENTkyRSAvKiBERkdMaXZlQ2F0Y2hW
YXJpYWJsZVByZXNlcnZhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0Q4OUNGQzE3
QTBCOENDMDA3NzNBRDggLyogREZHTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmggaW4gSGVhZGVycyAq
LywKLQkJCQkwRkYwRjE5QjE2QjcyOUZBMDA1REY5NUIgLyogREZHTG9uZ0xpdmVkU3RhdGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGMzM4REYyMUJFOTNBRDEwMDEzQzg4RiAvKiBCM1N0YWNrbWFw
VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3NjdCNUI2MTdBMEI5NjUwMDYzRDk0MCAvKiBE
RkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzlGOEZD
MUYxQjlGRUQwRjAwQ0E2NkFCIC8qIERGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNlLmggaW4g
SGVhZGVycyAqLywKQEAgLTczNzMsNyArNzM1OSw2IEBACiAJCQkJMEZGMkNENUMxQjYxQTRGODAw
NDk1NUE4IC8qIERGR011bHRpR2V0QnlPZmZzZXREYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
NzM3ODEwRTE3OTlFQTJFMDA4MTc1MzMgLyogREZHTmF0dXJhbExvb3BzLmggaW4gSGVhZGVycyAq
LywKIAkJCQk4NkVDQTNFQTEzMkRFRjFDMDAyQjJBRDcgLyogREZHTm9kZS5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJMEZGQjkyMUIxNkQwMkYwMTAwNTVBNURCIC8qIERGR05vZGVBbGxvY2F0b3IuaCBp
biBIZWFkZXJzICovLAogCQkJCTcwQjc5MTkzMUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JG
cmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZBNTgxQkIxNTBFOTUzMDAwQjlBMkQ5IC8qIERG
R05vZGVGbGFncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzMDBCNzgxOEFCMDUxMTAwQTZENzJF
IC8qIERGR05vZGVPcmlnaW4uaCBpbiBIZWFkZXJzICovLApAQCAtODkxMiw3ICs4ODk3LDYgQEAK
IAkJCQlBN0Q5QTI5NzE3QTBCQzc0MDBFRTI2MTggLyogREZHTElDTVBoYXNlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTc5QzRCMTVEMUJBMjE1OEYwMEZENTkyRSAvKiBERkdMaXZlQ2F0Y2hWYXJp
YWJsZVByZXNlcnZhdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3RDg5Q0ZCMTdB
MEI4Q0MwMDc3M0FEOCAvKiBERkdMaXZlbmVzc0FuYWx5c2lzUGhhc2UuY3BwIGluIFNvdXJjZXMg
Ki8sCi0JCQkJMEZGMEYxOTkxNkI3MjlGNjAwNURGOTVCIC8qIERGR0xvbmdMaXZlZFN0YXRlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUE3NjdCNUI1MTdBMEI5NjUwMDYzRDk0MCAvKiBERkdMb29w
UHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3OUY4RkMxRTFC
OUZFRDBGMDBDQTY2QUIgLyogREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEY1ODc0RUQxOTRGRUIxMjAwQUFCMkMxIC8qIERGR01heUV4aXQuY3Bw
IGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0FsbG9jYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBbGxvY2F0b3IuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjM4MGRmMDAxYzVmMjJhNDg2ZDZhYzhkMzg5
ZTdjMjM5ZDBiNTlhNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FsbG9jYXRvci5oCisrKyAvZGV2L251
bGwKQEAgLTEsMjM5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCi0gKi8KLQotI2lmbmRlZiBERkdBbGxvY2F0b3JfaAotI2RlZmluZSBERkdBbGxvY2F0b3Jf
aAotCi0jaWYgRU5BQkxFKERGR19KSVQpCi0KLSNpbmNsdWRlICJERkdDb21tb24uaCIKLSNpbmNs
dWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+Ci0KLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZH
IHsKLQotLy8gQ3VzdG9tIHBvb2wgYWxsb2NhdG9yIGZvciBleGFjdGx5IG9uZSB0eXBlICh0eXBl
IFQpLiBJdCBoYXMgZmFzdCAoTygxKSwgb25seSBhIGZldwotLy8gaW5zdHJ1Y3Rpb25zKSBhbGxv
Y2F0b3IsIGFuZCBhIHNpbWlsYXJseSBmYXN0IGZyZWUoKS4gUmVjeWNsaW5nIHdvcmtzIGlmIGVp
dGhlciBvZgotLy8gdGhlIGZvbGxvd2luZyBpcyB0cnVlOgotLy8gLSBUIGhhcyBhIHRyaXZpYWwg
ZGVzdHJ1Y3Rvci4gSW4gdGhhdCBjYXNlIHlvdSBkb24ndCBoYXZlIHRvIGV2ZXIgY2FsbCBmcmVl
KCkgb24KLS8vICAgYW55dGhpbmcuIFlvdSBjYW4ganVzdCBjYWxsIGZyZWVBbGwoKSBpbnN0ZWFk
LgotLy8gLSBZb3UgY2FsbCBmcmVlKCkgb24gYWxsIFQncyB0aGF0IHlvdSBhbGxvY2F0ZWQsIGFu
ZCBuZXZlciB1c2UgZnJlZUFsbCgpLgotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY2xhc3MgQWxs
b2NhdG9yIHsKLXB1YmxpYzoKLSAgICBBbGxvY2F0b3IoKTsKLSAgICB+QWxsb2NhdG9yKCk7Ci0g
ICAgCi0gICAgdm9pZCogYWxsb2NhdGUoKTsgLy8gVXNlIHBsYWNlbWVudCBuZXcgdG8gYWxsb2Nh
dGUsIGFuZCBhdm9pZCB1c2luZyB0aGlzIG1ldGhvZC4KLSAgICB2b2lkIGZyZWUoVCopOyAvLyBD
YWxsIHRoaXMgbWV0aG9kIHRvIGRlbGV0ZTsgbmV2ZXIgdXNlICdkZWxldGUnIGRpcmVjdGx5Lgot
ICAgIAotICAgIHZvaWQgZnJlZUFsbCgpOyAvLyBPbmx5IGNhbGwgdGhpcyBpZiB5b3UndmUgZWl0
aGVyIGZyZWVkIGV2ZXJ5dGhpbmcgb3IgaWYgVCBoYXMgYSB0cml2aWFsIGRlc3RydWN0b3IuCi0g
ICAgdm9pZCByZXNldCgpOyAvLyBMaWtlIGZyZWVBbGwoKSwgYnV0IGFsc28gcmV0dXJucyBhbGwg
bWVtb3J5IHRvIHRoZSBPUy4KLSAgICAKLSAgICB1bnNpZ25lZCBpbmRleE9mKGNvbnN0IFQqKTsK
LSAgICAKLSAgICBzdGF0aWMgQWxsb2NhdG9yKiBhbGxvY2F0b3JPZihjb25zdCBUKik7Ci0gICAg
Ci1wcml2YXRlOgotICAgIHZvaWQqIGJ1bXBBbGxvY2F0ZSgpOwotICAgIHZvaWQqIGZyZWVMaXN0
QWxsb2NhdGUoKTsKLSAgICB2b2lkKiBhbGxvY2F0ZVNsb3coKTsKLQotICAgIHN0cnVjdCBSZWdp
b24gewotICAgICAgICBzdGF0aWMgc2l6ZV90IHNpemUoKSB7IHJldHVybiA2NCAqIEtCOyB9Ci0g
ICAgICAgIHN0YXRpYyBzaXplX3QgaGVhZGVyU2l6ZSgpIHsgcmV0dXJuIHN0ZDo6bWF4KHNpemVv
ZihSZWdpb24pLCBzaXplb2YoVCkpOyB9Ci0gICAgICAgIHN0YXRpYyB1bnNpZ25lZCBudW1iZXJP
ZlRoaW5nc1BlclJlZ2lvbigpIHsgcmV0dXJuIChzaXplKCkgLSBoZWFkZXJTaXplKCkpIC8gc2l6
ZW9mKFQpOyB9Ci0gICAgICAgIFQqIGRhdGEoKSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8VCo+KGJp
dHdpc2VfY2FzdDxjaGFyKj4odGhpcykgKyBoZWFkZXJTaXplKCkpOyB9Ci0gICAgICAgIGJvb2wg
aXNJblRoaXNSZWdpb24oY29uc3QgVCogcG9pbnRlcikgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHBvaW50ZXIgLSBkYXRhKCkpIDwgbnVtYmVyT2ZUaGluZ3NQZXJSZWdpb24oKTsgfQot
ICAgICAgICBzdGF0aWMgUmVnaW9uKiByZWdpb25Gb3IoY29uc3QgVCogcG9pbnRlcikgeyByZXR1
cm4gYml0d2lzZV9jYXN0PFJlZ2lvbio+KGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHBvaW50ZXIp
ICYgfihzaXplKCkgLSAxKSk7IH0KLSAgICAgICAgCi0gICAgICAgIHZvaWQqIG1fYWxsb2NhdGlv
bjsKLSAgICAgICAgQWxsb2NhdG9yKiBtX2FsbG9jYXRvcjsKLSAgICAgICAgUmVnaW9uKiBtX25l
eHQ7Ci0gICAgfTsKLSAgICAKLSAgICB2b2lkIGZyZWVSZWdpb25zU3RhcnRpbmdBdChSZWdpb24q
KTsKLSAgICB2b2lkIHN0YXJ0QnVtcGluZ0luKFJlZ2lvbiopOwotICAgIAotICAgIFJlZ2lvbiog
bV9yZWdpb25IZWFkOwotICAgIHZvaWQqKiBtX2ZyZWVMaXN0SGVhZDsKLSAgICBUKiBtX2J1bXBF
bmQ7Ci0gICAgdW5zaWduZWQgbV9idW1wUmVtYWluaW5nOwotfTsKLQotdGVtcGxhdGU8dHlwZW5h
bWUgVD4KLWlubGluZSBBbGxvY2F0b3I8VD46OkFsbG9jYXRvcigpCi0gICAgOiBtX3JlZ2lvbkhl
YWQoMCkKLSAgICAsIG1fZnJlZUxpc3RIZWFkKDApCi0gICAgLCBtX2J1bXBSZW1haW5pbmcoMCkK
LXsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWlubGluZSBBbGxvY2F0b3I8VD46On5BbGxv
Y2F0b3IoKQotewotICAgIHJlc2V0KCk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1BTFdB
WVNfSU5MSU5FIHZvaWQqIEFsbG9jYXRvcjxUPjo6YWxsb2NhdGUoKQotewotICAgIHZvaWQqIHJl
c3VsdCA9IGJ1bXBBbGxvY2F0ZSgpOwotICAgIGlmIChMSUtFTFkoISFyZXN1bHQpKQotICAgICAg
ICByZXR1cm4gcmVzdWx0OwotICAgIHJldHVybiBmcmVlTGlzdEFsbG9jYXRlKCk7Ci19Ci0KLXRl
bXBsYXRlPHR5cGVuYW1lIFQ+Ci12b2lkIEFsbG9jYXRvcjxUPjo6ZnJlZShUKiBvYmplY3QpCi17
Ci0gICAgb2JqZWN0LT5+VCgpOwotICAgIAotICAgIHZvaWQqKiBjZWxsID0gYml0d2lzZV9jYXN0
PHZvaWQqKj4ob2JqZWN0KTsKLSAgICAqY2VsbCA9IG1fZnJlZUxpc3RIZWFkOwotICAgIG1fZnJl
ZUxpc3RIZWFkID0gY2VsbDsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXZvaWQgQWxsb2Nh
dG9yPFQ+OjpmcmVlQWxsKCkKLXsKLSAgICBpZiAoIW1fcmVnaW9uSGVhZCkgewotICAgICAgICBB
U1NFUlQoIW1fYnVtcFJlbWFpbmluZyk7Ci0gICAgICAgIEFTU0VSVCghbV9mcmVlTGlzdEhlYWQp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIC8vIFNpbmNlIHRoZSBjYWxsZXIg
aXMgb3B0aW5nIG91dCBvZiBjYWxsaW5nIHRoZSBkZXN0cnVjdG9yIGZvciBhbnkgYWxsb2NhdGVk
IHRoaW5nLAotICAgIC8vIHdlIGhhdmUgdHdvIGNob2ljZXMsIHBsdXMgYSBjb250aW51dW0gYmV0
d2Vlbjogd2UgY2FuIGVpdGhlciBqdXN0IGRlbGV0ZSBhbGwgcmVnaW9ucwotICAgIC8vIChpLmUu
IGNhbGwgcmVzZXQoKSksIG9yIHdlIGNhbiBtYWtlIGFsbCByZWdpb25zIGF2YWlsYWJsZSBmb3Ig
cmV1c2UuIFdlIGRvIHNvbWV0aGluZwotICAgIC8vIHRoYXQgb3B0aW1pemVzIGZvciAoYSkgc3Bl
ZWQgb2YgZnJlZUFsbCgpLCAoYikgdGhlIGFzc3VtcHRpb24gdGhhdCBpZiB0aGUgdXNlciBjYWxs
cwotICAgIC8vIGZyZWVBbGwoKSB0aGVuIHRoZXkgd2lsbCBwcm9iYWJseSBiZSBjYWxsaW5nIGFs
bG9jYXRlKCkgaW4gdGhlIG5lYXIgZnV0dXJlLiBOYW1lbHksCi0gICAgLy8gd2UgZnJlZSBhbGwg
YnV0IG9uZSByZWdpb24sIGFuZCBtYWtlIHRoZSByZW1haW5pbmcgcmVnaW9uIGEgYnVtcCBhbGxv
Y2F0aW9uIHJlZ2lvbi4KLSAgICAKLSAgICBmcmVlUmVnaW9uc1N0YXJ0aW5nQXQobV9yZWdpb25I
ZWFkLT5tX25leHQpOwotICAgIAotICAgIG1fcmVnaW9uSGVhZC0+bV9uZXh0ID0gMDsKLSAgICBt
X2ZyZWVMaXN0SGVhZCA9IDA7Ci0gICAgc3RhcnRCdW1waW5nSW4obV9yZWdpb25IZWFkKTsKLX0K
LQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXZvaWQgQWxsb2NhdG9yPFQ+OjpyZXNldCgpCi17Ci0g
ICAgZnJlZVJlZ2lvbnNTdGFydGluZ0F0KG1fcmVnaW9uSGVhZCk7Ci0gICAgCi0gICAgbV9yZWdp
b25IZWFkID0gMDsKLSAgICBtX2ZyZWVMaXN0SGVhZCA9IDA7Ci0gICAgbV9idW1wUmVtYWluaW5n
ID0gMDsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXVuc2lnbmVkIEFsbG9jYXRvcjxUPjo6
aW5kZXhPZihjb25zdCBUKiBvYmplY3QpCi17Ci0gICAgdW5zaWduZWQgbnVtUmVnaW9ucyA9IDA7
Ci0gICAgZm9yIChSZWdpb24qIHJlZ2lvbiA9IG1fcmVnaW9uSGVhZDsgcmVnaW9uOyByZWdpb24g
PSByZWdpb24tPm1fbmV4dCkKLSAgICAgICAgbnVtUmVnaW9ucysrOwotICAgIHVuc2lnbmVkIHJl
Z2lvbkluZGV4ID0gMDsKLSAgICBmb3IgKFJlZ2lvbiogcmVnaW9uID0gbV9yZWdpb25IZWFkOyBy
ZWdpb247IHJlZ2lvbiA9IHJlZ2lvbi0+bV9uZXh0KSB7Ci0gICAgICAgIGlmIChyZWdpb24tPmlz
SW5UaGlzUmVnaW9uKG9iamVjdCkpCi0gICAgICAgICAgICByZXR1cm4gKG51bVJlZ2lvbnMgLSAx
IC0gcmVnaW9uSW5kZXgpICogUmVnaW9uOjpudW1iZXJPZlRoaW5nc1BlclJlZ2lvbigpICsgKG9i
amVjdCAtIHJlZ2lvbi0+ZGF0YSgpKTsKLSAgICAgICAgcmVnaW9uSW5kZXgrKzsKLSAgICB9Ci0g
ICAgQ1JBU0goKTsKLSAgICByZXR1cm4gMDsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLUFs
bG9jYXRvcjxUPiogQWxsb2NhdG9yPFQ+OjphbGxvY2F0b3JPZihjb25zdCBUKiBvYmplY3QpCi17
Ci0gICAgcmV0dXJuIFJlZ2lvbjo6cmVnaW9uRm9yKG9iamVjdCktPm1fYWxsb2NhdG9yOwotfQot
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotQUxXQVlTX0lOTElORSB2b2lkKiBBbGxvY2F0b3I8VD46
OmJ1bXBBbGxvY2F0ZSgpCi17Ci0gICAgaWYgKHVuc2lnbmVkIHJlbWFpbmluZyA9IG1fYnVtcFJl
bWFpbmluZykgewotICAgICAgICByZW1haW5pbmctLTsKLSAgICAgICAgbV9idW1wUmVtYWluaW5n
ID0gcmVtYWluaW5nOwotICAgICAgICByZXR1cm4gbV9idW1wRW5kIC0gKHJlbWFpbmluZyArIDEp
OwotICAgIH0KLSAgICByZXR1cm4gMDsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXZvaWQq
IEFsbG9jYXRvcjxUPjo6ZnJlZUxpc3RBbGxvY2F0ZSgpCi17Ci0gICAgdm9pZCoqIHJlc3VsdCA9
IG1fZnJlZUxpc3RIZWFkOwotICAgIGlmIChVTkxJS0VMWSghcmVzdWx0KSkKLSAgICAgICAgcmV0
dXJuIGFsbG9jYXRlU2xvdygpOwotICAgIG1fZnJlZUxpc3RIZWFkID0gYml0d2lzZV9jYXN0PHZv
aWQqKj4oKnJlc3VsdCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotdGVtcGxhdGU8dHlwZW5h
bWUgVD4KLXZvaWQqIEFsbG9jYXRvcjxUPjo6YWxsb2NhdGVTbG93KCkKLXsKLSAgICBBU1NFUlQo
IW1fZnJlZUxpc3RIZWFkKTsKLSAgICBBU1NFUlQoIW1fYnVtcFJlbWFpbmluZyk7Ci0gICAgCi0g
ICAgaWYgKGxvZ0NvbXBpbGF0aW9uQ2hhbmdlcygpKQotICAgICAgICBkYXRhTG9nKCJBbGxvY2F0
aW5nIGFub3RoZXIgYWxsb2NhdG9yIHJlZ2lvbi5cbiIpOwotCi0gICAgdm9pZCogYWxsb2NhdGlv
biA9IGZhc3RBbGlnbmVkTWFsbG9jKFJlZ2lvbjo6c2l6ZSgpLCBSZWdpb246OnNpemUoKSk7Ci0g
ICAgUmVnaW9uKiByZWdpb24gPSBzdGF0aWNfY2FzdDxSZWdpb24qPihhbGxvY2F0aW9uKTsKLSAg
ICByZWdpb24tPm1fYWxsb2NhdGlvbiA9IGFsbG9jYXRpb247Ci0gICAgcmVnaW9uLT5tX2FsbG9j
YXRvciA9IHRoaXM7Ci0gICAgc3RhcnRCdW1waW5nSW4ocmVnaW9uKTsKLSAgICByZWdpb24tPm1f
bmV4dCA9IG1fcmVnaW9uSGVhZDsKLSAgICBtX3JlZ2lvbkhlYWQgPSByZWdpb247Ci0gICAgCi0g
ICAgdm9pZCogcmVzdWx0ID0gYnVtcEFsbG9jYXRlKCk7Ci0gICAgQVNTRVJUKHJlc3VsdCk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXZvaWQgQWxsb2Nh
dG9yPFQ+OjpmcmVlUmVnaW9uc1N0YXJ0aW5nQXQodHlwZW5hbWUgQWxsb2NhdG9yPFQ+OjpSZWdp
b24qIHJlZ2lvbikKLXsKLSAgICB3aGlsZSAocmVnaW9uKSB7Ci0gICAgICAgIFJlZ2lvbiogbmV4
dFJlZ2lvbiA9IHJlZ2lvbi0+bV9uZXh0OwotICAgICAgICBmYXN0QWxpZ25lZEZyZWUocmVnaW9u
LT5tX2FsbG9jYXRpb24pOwotICAgICAgICByZWdpb24gPSBuZXh0UmVnaW9uOwotICAgIH0KLX0K
LQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXZvaWQgQWxsb2NhdG9yPFQ+OjpzdGFydEJ1bXBpbmdJ
bih0eXBlbmFtZSBBbGxvY2F0b3I8VD46OlJlZ2lvbiogcmVnaW9uKQotewotICAgIG1fYnVtcEVu
ZCA9IHJlZ2lvbi0+ZGF0YSgpICsgUmVnaW9uOjpudW1iZXJPZlRoaW5nc1BlclJlZ2lvbigpOwot
ICAgIG1fYnVtcFJlbWFpbmluZyA9IFJlZ2lvbjo6bnVtYmVyT2ZUaGluZ3NQZXJSZWdpb24oKTsK
LX0KLQotfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwotCi0jZW5kaWYgLy8gRU5BQkxFKERGR19K
SVQpCi0KLSNlbmRpZiAvLyBERkdBbGxvY2F0b3JfaAotCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDE4YjRjMzJkYTA5MmU1NzM5ZjM3
ODk3MjVlZWNmMWI0NDQ0ZGM0NWEuLjUzNzdlM2YyYzNlNTMwZDI4MWIxNjUwYThhZGY4NWQ2N2Y5
OTIwMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwCkBAIC03MTEsNDYgKzcxMSw0NiBAQCBwcml2YXRlOgogICAgIE5vZGUqIGFkZFRvR3Jh
cGgoTm9kZVR5cGUgb3AsIE5vZGUqIGNoaWxkMSA9IDAsIE5vZGUqIGNoaWxkMiA9IDAsIE5vZGUq
IGNoaWxkMyA9IDApCiAgICAgewogICAgICAgICBOb2RlKiByZXN1bHQgPSBtX2dyYXBoLmFkZE5v
ZGUoCi0gICAgICAgICAgICBTcGVjTm9uZSwgb3AsIGN1cnJlbnROb2RlT3JpZ2luKCksIEVkZ2Uo
Y2hpbGQxKSwgRWRnZShjaGlsZDIpLAorICAgICAgICAgICAgb3AsIGN1cnJlbnROb2RlT3JpZ2lu
KCksIEVkZ2UoY2hpbGQxKSwgRWRnZShjaGlsZDIpLAogICAgICAgICAgICAgRWRnZShjaGlsZDMp
KTsKICAgICAgICAgcmV0dXJuIGFkZFRvR3JhcGgocmVzdWx0KTsKICAgICB9CiAgICAgTm9kZSog
YWRkVG9HcmFwaChOb2RlVHlwZSBvcCwgRWRnZSBjaGlsZDEsIEVkZ2UgY2hpbGQyID0gRWRnZSgp
LCBFZGdlIGNoaWxkMyA9IEVkZ2UoKSkKICAgICB7CiAgICAgICAgIE5vZGUqIHJlc3VsdCA9IG1f
Z3JhcGguYWRkTm9kZSgKLSAgICAgICAgICAgIFNwZWNOb25lLCBvcCwgY3VycmVudE5vZGVPcmln
aW4oKSwgY2hpbGQxLCBjaGlsZDIsIGNoaWxkMyk7CisgICAgICAgICAgICBvcCwgY3VycmVudE5v
ZGVPcmlnaW4oKSwgY2hpbGQxLCBjaGlsZDIsIGNoaWxkMyk7CiAgICAgICAgIHJldHVybiBhZGRU
b0dyYXBoKHJlc3VsdCk7CiAgICAgfQogICAgIE5vZGUqIGFkZFRvR3JhcGgoTm9kZVR5cGUgb3As
IE9wSW5mbyBpbmZvLCBOb2RlKiBjaGlsZDEgPSAwLCBOb2RlKiBjaGlsZDIgPSAwLCBOb2RlKiBj
aGlsZDMgPSAwKQogICAgIHsKICAgICAgICAgTm9kZSogcmVzdWx0ID0gbV9ncmFwaC5hZGROb2Rl
KAotICAgICAgICAgICAgU3BlY05vbmUsIG9wLCBjdXJyZW50Tm9kZU9yaWdpbigpLCBpbmZvLCBF
ZGdlKGNoaWxkMSksIEVkZ2UoY2hpbGQyKSwKKyAgICAgICAgICAgIG9wLCBjdXJyZW50Tm9kZU9y
aWdpbigpLCBpbmZvLCBFZGdlKGNoaWxkMSksIEVkZ2UoY2hpbGQyKSwKICAgICAgICAgICAgIEVk
Z2UoY2hpbGQzKSk7CiAgICAgICAgIHJldHVybiBhZGRUb0dyYXBoKHJlc3VsdCk7CiAgICAgfQog
ICAgIE5vZGUqIGFkZFRvR3JhcGgoTm9kZVR5cGUgb3AsIE9wSW5mbyBpbmZvLCBFZGdlIGNoaWxk
MSwgRWRnZSBjaGlsZDIgPSBFZGdlKCksIEVkZ2UgY2hpbGQzID0gRWRnZSgpKQogICAgIHsKLSAg
ICAgICAgTm9kZSogcmVzdWx0ID0gbV9ncmFwaC5hZGROb2RlKFNwZWNOb25lLCBvcCwgY3VycmVu
dE5vZGVPcmlnaW4oKSwgaW5mbywgY2hpbGQxLCBjaGlsZDIsIGNoaWxkMyk7CisgICAgICAgIE5v
ZGUqIHJlc3VsdCA9IG1fZ3JhcGguYWRkTm9kZShvcCwgY3VycmVudE5vZGVPcmlnaW4oKSwgaW5m
bywgY2hpbGQxLCBjaGlsZDIsIGNoaWxkMyk7CiAgICAgICAgIHJldHVybiBhZGRUb0dyYXBoKHJl
c3VsdCk7CiAgICAgfQogICAgIE5vZGUqIGFkZFRvR3JhcGgoTm9kZVR5cGUgb3AsIE9wSW5mbyBp
bmZvMSwgT3BJbmZvIGluZm8yLCBOb2RlKiBjaGlsZDEgPSAwLCBOb2RlKiBjaGlsZDIgPSAwLCBO
b2RlKiBjaGlsZDMgPSAwKQogICAgIHsKICAgICAgICAgTm9kZSogcmVzdWx0ID0gbV9ncmFwaC5h
ZGROb2RlKAotICAgICAgICAgICAgU3BlY05vbmUsIG9wLCBjdXJyZW50Tm9kZU9yaWdpbigpLCBp
bmZvMSwgaW5mbzIsCisgICAgICAgICAgICBvcCwgY3VycmVudE5vZGVPcmlnaW4oKSwgaW5mbzEs
IGluZm8yLAogICAgICAgICAgICAgRWRnZShjaGlsZDEpLCBFZGdlKGNoaWxkMiksIEVkZ2UoY2hp
bGQzKSk7CiAgICAgICAgIHJldHVybiBhZGRUb0dyYXBoKHJlc3VsdCk7CiAgICAgfQogICAgIE5v
ZGUqIGFkZFRvR3JhcGgoTm9kZVR5cGUgb3AsIE9wSW5mbyBpbmZvMSwgT3BJbmZvIGluZm8yLCBF
ZGdlIGNoaWxkMSwgRWRnZSBjaGlsZDIgPSBFZGdlKCksIEVkZ2UgY2hpbGQzID0gRWRnZSgpKQog
ICAgIHsKICAgICAgICAgTm9kZSogcmVzdWx0ID0gbV9ncmFwaC5hZGROb2RlKAotICAgICAgICAg
ICAgU3BlY05vbmUsIG9wLCBjdXJyZW50Tm9kZU9yaWdpbigpLCBpbmZvMSwgaW5mbzIsIGNoaWxk
MSwgY2hpbGQyLCBjaGlsZDMpOworICAgICAgICAgICAgb3AsIGN1cnJlbnROb2RlT3JpZ2luKCks
IGluZm8xLCBpbmZvMiwgY2hpbGQxLCBjaGlsZDIsIGNoaWxkMyk7CiAgICAgICAgIHJldHVybiBh
ZGRUb0dyYXBoKHJlc3VsdCk7CiAgICAgfQogICAgIAogICAgIE5vZGUqIGFkZFRvR3JhcGgoTm9k
ZTo6VmFyQXJnVGFnLCBOb2RlVHlwZSBvcCwgT3BJbmZvIGluZm8xLCBPcEluZm8gaW5mbzIpCiAg
ICAgewogICAgICAgICBOb2RlKiByZXN1bHQgPSBtX2dyYXBoLmFkZE5vZGUoCi0gICAgICAgICAg
ICBTcGVjTm9uZSwgTm9kZTo6VmFyQXJnLCBvcCwgY3VycmVudE5vZGVPcmlnaW4oKSwgaW5mbzEs
IGluZm8yLAorICAgICAgICAgICAgTm9kZTo6VmFyQXJnLCBvcCwgY3VycmVudE5vZGVPcmlnaW4o
KSwgaW5mbzEsIGluZm8yLAogICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLnNp
emUoKSAtIG1fbnVtUGFzc2VkVmFyQXJncywgbV9udW1QYXNzZWRWYXJBcmdzKTsKICAgICAgICAg
YWRkVG9HcmFwaChyZXN1bHQpOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwCmluZGV4IDYzMTAxZmY3MTA5MWIy
ZjBlYWIzZTA5MGEzMmY2ODZhNTM0Y2U4MzIuLjY3YjM1NzQzODJhYWQ3MDIxZjNjYTc2ODVmYTNh
NDljZGY0ZTNmZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BT
UmV0aHJlYWRpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
UFNSZXRocmVhZGluZ1BoYXNlLmNwcApAQCAtOTAsNyArOTAsNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBjYXNlIFBoYW50b206CiAgICAg
ICAgICAgICAgICAgICAgIGlmICghbm9kZS0+Y2hpbGQxKCkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIG1fZ3JhcGgubV9hbGxvY2F0b3IuZnJlZShub2RlKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG1fZ3JhcGguZGVsZXRlTm9kZShub2RlKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIHN3
aXRjaCAobm9kZS0+Y2hpbGQxKCktPm9wKCkpIHsKQEAgLTExMiw3ICsxMTIsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgYmxvY2stPnJlc2l6ZSh0b0luZGV4KTsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBwaGlJbmRleCA9IGJsb2NrLT5waGlzLnNpemUoKTsgcGhp
SW5kZXgtLTspCi0gICAgICAgICAgICAgICAgbV9ncmFwaC5tX2FsbG9jYXRvci5mcmVlKGJsb2Nr
LT5waGlzW3BoaUluZGV4XSk7CisgICAgICAgICAgICAgICAgbV9ncmFwaC5kZWxldGVOb2RlKGJs
b2NrLT5waGlzW3BoaUluZGV4XSk7CiAgICAgICAgICAgICBibG9jay0+cGhpcy5yZXNpemUoMCk7
CiAgICAgICAgIH0KICAgICB9CkBAIC0xMzIsNyArMTMyLDcgQEAgcHJpdmF0ZToKICAgICAKICAg
ICBBTFdBWVNfSU5MSU5FIE5vZGUqIGFkZFBoaVNpbGVudGx5KEJhc2ljQmxvY2sqIGJsb2NrLCBj
b25zdCBOb2RlT3JpZ2luJiBvcmlnaW4sIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUpCiAg
ICAgewotICAgICAgICBOb2RlKiByZXN1bHQgPSBtX2dyYXBoLmFkZE5vZGUoU3BlY05vbmUsIFBo
aSwgb3JpZ2luLCBPcEluZm8odmFyaWFibGUpKTsKKyAgICAgICAgTm9kZSogcmVzdWx0ID0gbV9n
cmFwaC5hZGROb2RlKFBoaSwgb3JpZ2luLCBPcEluZm8odmFyaWFibGUpKTsKICAgICAgICAgYmxv
Y2stPnBoaXMuYXBwZW5kKHJlc3VsdCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbGVhblVwUGhhc2UuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbGVhblVwUGhhc2UuY3BwCmluZGV4IGRm
MmVmNTJhMmY4YzMwNThmYzE2NWFjN2RiMjhjY2E2ODk1ZDI3N2QuLmIwYmI4Y2M0NzAwZDVjZWIy
ZmY2NjNjMGU1ZmI1YWFiOWUxMWM2NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2xlYW5VcFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NsZWFuVXBQaGFzZS5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAoa2lsbCkKLSAg
ICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX2FsbG9jYXRvci5mcmVlKG5vZGUpOworICAgICAg
ICAgICAgICAgICAgICBtX2dyYXBoLmRlbGV0ZU5vZGUobm9kZSk7CiAgICAgICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgICAgICAgICBibG9jay0+YXQodGFyZ2V0SW5kZXgrKykgPSBub2Rl
OwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAppbmRleCBmNWZhY2U5ZThiMjhkYWJmMTg0M2UxMDNi
MmExN2IzOWY1M2YxMGVjLi40OTVhMDY0OTUzODIzN2FmYTM4M2IyZjcxZTJlODA3ZWI1MTYzYjEx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGlu
Z1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9s
ZGluZ1BoYXNlLmNwcApAQCAtODMsNyArODMsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAg
ICAgIGlmICghbV9zdGF0ZS5pc1ZhbGlkKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIE5v
ZGVPcmlnaW4gb3JpZ2luID0gYmxvY2stPmF0KG5vZGVJbmRleCktPm9yaWdpbjsKICAgICAgICAg
ICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQga2lsbEluZGV4ID0gbm9kZUluZGV4OyBraWxs
SW5kZXggPCBibG9jay0+c2l6ZSgpOyArK2tpbGxJbmRleCkKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtX2dyYXBoLm1fYWxsb2NhdG9yLmZyZWUoYmxvY2stPmF0KGtpbGxJbmRleCkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguZGVsZXRlTm9kZShibG9jay0+YXQo
a2lsbEluZGV4KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBibG9jay0+cmVzaXplKG5vZGVJ
bmRleCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBibG9jay0+YXBwZW5kTm9kZShtX2dyYXBo
LCBTcGVjTm9uZSwgVW5yZWFjaGFibGUsIG9yaWdpbik7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBkaWRDbGlwQmxvY2sgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDb25zdGFudEhvaXN0aW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDb25zdGFudEhvaXN0aW5nUGhhc2UuY3BwCmluZGV4IGQyOGMwMWRhNzY4MDBlY2U2
M2U2ODQ5N2I0MjRkZjYxZmJjZDc1MjcuLjdiNDkxYzI5NmRlNWYxNDljM2RmNTQwNWMxODA5M2Zi
ZjBmMmQ3NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3Rh
bnRIb2lzdGluZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nv
bnN0YW50SG9pc3RpbmdQaGFzZS5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCBwdWJsaWM6CiAgICAg
ICAgIAogICAgICAgICAvLyBBbmQgZmluYWxseSBmcmVlIHRoZSBjb25zdGFudHMgdGhhdCB3ZSBy
ZW1vdmVkLgogICAgICAgICBmb3IgKE5vZGUqIG5vZGUgOiB0b0ZyZWUpCi0gICAgICAgICAgICBt
X2dyYXBoLm1fYWxsb2NhdG9yLmZyZWUobm9kZSk7CisgICAgICAgICAgICBtX2dyYXBoLmRlbGV0
ZU5vZGUobm9kZSk7CiAgICAgICAgIAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RDRVBoYXNlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRENFUGhhc2UuY3BwCmluZGV4IDZhNmFmNzU3MjQ2OWNk
ZGVlNDk2MzIwNDU1ODdmYzdlNTYyMmIxZDAuLmE3MGE4Njk4ZDQ5ZTMxYzllNjMyYTlmNjc2MTY3
MDk0OWM2OWY2MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRENF
UGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRENFUGhhc2UuY3Bw
CkBAIC05Myw3ICs5Myw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIHBo
aUluZGV4ID0gMDsgcGhpSW5kZXggPCBibG9jay0+cGhpcy5zaXplKCk7ICsrcGhpSW5kZXgpIHsK
ICAgICAgICAgICAgICAgICBOb2RlKiBwaGkgPSBibG9jay0+cGhpc1twaGlJbmRleF07CiAgICAg
ICAgICAgICAgICAgaWYgKCFwaGktPnNob3VsZEdlbmVyYXRlKCkpIHsKLSAgICAgICAgICAgICAg
ICAgICAgbV9ncmFwaC5tX2FsbG9jYXRvci5mcmVlKHBoaSk7CisgICAgICAgICAgICAgICAgICAg
IG1fZ3JhcGguZGVsZXRlTm9kZShwaGkpOwogICAgICAgICAgICAgICAgICAgICBibG9jay0+cGhp
c1twaGlJbmRleC0tXSA9IGJsb2NrLT5waGlzLmxhc3QoKTsKICAgICAgICAgICAgICAgICAgICAg
YmxvY2stPnBoaXMucmVtb3ZlTGFzdCgpOwogICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRHJpdmVyLmNwcAppbmRleCBmZjMyNTdhOWIzZjQ0M2JlNzAxMDgxZDc3
Nzg0MzQ4NTRiMWNmNTdlLi5lMTk5NzczNTQ0NDE2NGZjYjYwNWIyYWQ3ZTUzNzBjN2Q1Yjc1MDgz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCkBAIC0xMDgsNyArMTA4
LDcgQEAgc3RhdGljIENvbXBpbGF0aW9uUmVzdWx0IGNvbXBpbGVJbXBsKAogICAgICAgICByZXR1
cm4gQ29tcGlsYXRpb25EZWZlcnJlZDsKICAgICB9CiAgICAgCi0gICAgcGxhbi0+Y29tcGlsZUlu
VGhyZWFkKCp2bS5kZmdTdGF0ZSwgMCk7CisgICAgcGxhbi0+Y29tcGlsZUluVGhyZWFkKG51bGxw
dHIpOwogICAgIHJldHVybiBwbGFuLT5maW5hbGl6ZVdpdGhvdXROb3RpZnlpbmdDYWxsYmFjaygp
OwogfQogI2Vsc2UgLy8gRU5BQkxFKERGR19KSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
R3JhcGguY3BwCmluZGV4IDc0NTU3YWI2N2Q1ZDllY2FjZDQ2YTAxZjA3MGU2MzhiZDA5MGU1NjEu
LmVjMWE1ODZjNWMyNTRmZjgzZDQzOTMyNmQwN2JmMGIxNzRlZWJjZmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCkBAIC02NiwxMiArNjYsMTEgQEAgc3RhdGljIGNvbnN0
IGNoYXIqIGRmZ09wTmFtZXNbXSA9IHsKICN1bmRlZiBTVFJJTkdJWkVfREZHX09QX0VOVU0KIH07
CiAKLUdyYXBoOjpHcmFwaChWTSYgdm0sIFBsYW4mIHBsYW4sIExvbmdMaXZlZFN0YXRlJiBsb25n
TGl2ZWRTdGF0ZSkKK0dyYXBoOjpHcmFwaChWTSYgdm0sIFBsYW4mIHBsYW4pCiAgICAgOiBtX3Zt
KHZtKQogICAgICwgbV9wbGFuKHBsYW4pCiAgICAgLCBtX2NvZGVCbG9jayhtX3BsYW4uY29kZUJs
b2NrKQogICAgICwgbV9wcm9maWxlZEJsb2NrKG1fY29kZUJsb2NrLT5hbHRlcm5hdGl2ZSgpKQot
ICAgICwgbV9hbGxvY2F0b3IobG9uZ0xpdmVkU3RhdGUubV9hbGxvY2F0b3IpCiAgICAgLCBtX2Nm
ZyhzdGQ6Om1ha2VfdW5pcXVlPENGRz4oKnRoaXMpKQogICAgICwgbV9uZXh0TWFjaGluZUxvY2Fs
KDApCiAgICAgLCBtX2ZpeHBvaW50U3RhdGUoQmVmb3JlRml4cG9pbnQpCkBAIC04NywxNyArODYs
NiBAQCBHcmFwaDo6R3JhcGgoVk0mIHZtLCBQbGFuJiBwbGFuLCBMb25nTGl2ZWRTdGF0ZSYgbG9u
Z0xpdmVkU3RhdGUpCiAKIEdyYXBoOjp+R3JhcGgoKQogewotICAgIGZvciAoQmxvY2tJbmRleCBi
bG9ja0luZGV4ID0gbnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgtLTspIHsKLSAgICAgICAgQmFzaWNC
bG9jayogYmxvY2sgPSB0aGlzLT5ibG9jayhibG9ja0luZGV4KTsKLSAgICAgICAgaWYgKCFibG9j
aykKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGZvciAodW5zaWduZWQgcGhpSW5k
ZXggPSBibG9jay0+cGhpcy5zaXplKCk7IHBoaUluZGV4LS07KQotICAgICAgICAgICAgbV9hbGxv
Y2F0b3IuZnJlZShibG9jay0+cGhpc1twaGlJbmRleF0pOwotICAgICAgICBmb3IgKHVuc2lnbmVk
IG5vZGVJbmRleCA9IGJsb2NrLT5zaXplKCk7IG5vZGVJbmRleC0tOykKLSAgICAgICAgICAgIG1f
YWxsb2NhdG9yLmZyZWUoYmxvY2stPmF0KG5vZGVJbmRleCkpOwotICAgIH0KLSAgICBtX2FsbG9j
YXRvci5mcmVlQWxsKCk7CiB9CiAKIGNvbnN0IGNoYXIgKkdyYXBoOjpvcE5hbWUoTm9kZVR5cGUg
b3ApCkBAIC01NzksNiArNTY3LDExIEBAIHZvaWQgR3JhcGg6OmR1bXAoUHJpbnRTdHJlYW0mIG91
dCwgRHVtcENvbnRleHQqIGNvbnRleHQpCiAgICAgfQogfQogCit2b2lkIEdyYXBoOjpkZWxldGVO
b2RlKE5vZGUqIG5vZGUpCit7CisgICAgbV9ub2Rlcy5yZW1vdmUobm9kZSk7Cit9CisKIHZvaWQg
R3JhcGg6OmRldGhyZWFkKCkKIHsKICAgICBpZiAobV9mb3JtID09IExvYWRTdG9yZSB8fCBtX2Zv
cm0gPT0gU1NBKQpAQCAtNzQ1LDkgKzczOCw5IEBAIHZvaWQgR3JhcGg6OmNvbXB1dGVSZWZDb3Vu
dHMoKQogdm9pZCBHcmFwaDo6a2lsbEJsb2NrQW5kSXRzQ29udGVudHMoQmFzaWNCbG9jayogYmxv
Y2spCiB7CiAgICAgZm9yICh1bnNpZ25lZCBwaGlJbmRleCA9IGJsb2NrLT5waGlzLnNpemUoKTsg
cGhpSW5kZXgtLTspCi0gICAgICAgIG1fYWxsb2NhdG9yLmZyZWUoYmxvY2stPnBoaXNbcGhpSW5k
ZXhdKTsKLSAgICBmb3IgKHVuc2lnbmVkIG5vZGVJbmRleCA9IGJsb2NrLT5zaXplKCk7IG5vZGVJ
bmRleC0tOykKLSAgICAgICAgbV9hbGxvY2F0b3IuZnJlZShibG9jay0+YXQobm9kZUluZGV4KSk7
CisgICAgICAgIGRlbGV0ZU5vZGUoYmxvY2stPnBoaXNbcGhpSW5kZXhdKTsKKyAgICBmb3IgKE5v
ZGUqIG5vZGUgOiAqYmxvY2spCisgICAgICAgIGRlbGV0ZU5vZGUobm9kZSk7CiAgICAgCiAgICAg
a2lsbEJsb2NrKGJsb2NrKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHR3JhcGguaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAppbmRl
eCA3Yjg5YjdhOTRmYjJmNzE4YWJiOTIxYjllMTI4MzI5YmY1NDVhYzhhLi4yYThhM2I2MGFiZDVh
ZjY0MmI2NGU4MWVhZjBiNTMyZjRjOTJlZWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dyYXBoLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdH
cmFwaC5oCkBAIC0yOSwxNCArMjksMTMgQEAKICNpZiBFTkFCTEUoREZHX0pJVCkKIAogI2luY2x1
ZGUgIkFzc2VtYmx5SGVscGVycy5oIgorI2luY2x1ZGUgIkIzU3BhcnNlQ29sbGVjdGlvbi5oIgog
I2luY2x1ZGUgIkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaCIKICNpbmNsdWRlICJD
b2RlQmxvY2suaCIKICNpbmNsdWRlICJERkdBcmd1bWVudFBvc2l0aW9uLmgiCiAjaW5jbHVkZSAi
REZHQmFzaWNCbG9jay5oIgogI2luY2x1ZGUgIkRGR0Zyb3plblZhbHVlLmgiCi0jaW5jbHVkZSAi
REZHTG9uZ0xpdmVkU3RhdGUuaCIKICNpbmNsdWRlICJERkdOb2RlLmgiCi0jaW5jbHVkZSAiREZH
Tm9kZUFsbG9jYXRvci5oIgogI2luY2x1ZGUgIkRGR1BsYW4uaCIKICNpbmNsdWRlICJERkdQcm9w
ZXJ0eVR5cGVLZXkuaCIKICNpbmNsdWRlICJERkdTY2FubmFibGUuaCIKQEAgLTEyNCw3ICsxMjMs
NyBAQCBlbnVtIEFkZFNwZWN1bGF0aW9uTW9kZSB7CiAvLyBOb2RlcyB0aGF0IGFyZSAnZGVhZCcg
cmVtYWluIGluIHRoZSB2ZWN0b3Igd2l0aCByZWZDb3VudCAwLgogY2xhc3MgR3JhcGggOiBwdWJs
aWMgdmlydHVhbCBTY2FubmFibGUgewogcHVibGljOgotICAgIEdyYXBoKFZNJiwgUGxhbiYsIExv
bmdMaXZlZFN0YXRlJik7CisgICAgR3JhcGgoVk0mLCBQbGFuJik7CiAgICAgfkdyYXBoKCk7CiAg
ICAgCiAgICAgdm9pZCBjaGFuZ2VDaGlsZChFZGdlJiBlZGdlLCBOb2RlKiBuZXdOb2RlKQpAQCAt
MTgyLDEyICsxODEsMjAgQEAgcHVibGljOgogICAgIH0KICAgICAKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZS4uLiBQYXJhbXM+CisgICAgTm9kZSogYWRkTm9kZShQYXJhbXMuLi4gcGFyYW1zKQorICAg
IHsKKyAgICAgICAgTm9kZSogbm9kZSA9IG5ldyBOb2RlKHBhcmFtcy4uLik7CisgICAgICAgIG1f
bm9kZXMuYWRkKHN0ZDo6dW5pcXVlX3B0cjxOb2RlPihub2RlKSk7CisgICAgICAgIHJldHVybiBu
b2RlOworICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBQYXJhbXM+CiAgICAgTm9kZSog
YWRkTm9kZShTcGVjdWxhdGVkVHlwZSB0eXBlLCBQYXJhbXMuLi4gcGFyYW1zKQogICAgIHsKLSAg
ICAgICAgTm9kZSogbm9kZSA9IG5ldyAobV9hbGxvY2F0b3IpIE5vZGUocGFyYW1zLi4uKTsKKyAg
ICAgICAgTm9kZSogbm9kZSA9IGFkZE5vZGUocGFyYW1zLi4uKTsKICAgICAgICAgbm9kZS0+cHJl
ZGljdCh0eXBlKTsKICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgfQorICAgIHZvaWQgZGVsZXRl
Tm9kZShOb2RlKik7CiAKICAgICB2b2lkIGRldGhyZWFkKCk7CiAgICAgCkBAIC04MjEsOCArODI4
LDYgQEAgcHVibGljOgogICAgIFBsYW4mIG1fcGxhbjsKICAgICBDb2RlQmxvY2sqIG1fY29kZUJs
b2NrOwogICAgIENvZGVCbG9jayogbV9wcm9maWxlZEJsb2NrOwotICAgIAotICAgIE5vZGVBbGxv
Y2F0b3ImIG1fYWxsb2NhdG9yOwogCiAgICAgVmVjdG9yPCBSZWZQdHI8QmFzaWNCbG9jaz4gLCA4
PiBtX2Jsb2NrczsKICAgICBWZWN0b3I8RWRnZSwgMTY+IG1fdmFyQXJnQ2hpbGRyZW47CkBAIC05
MTEsNiArOTE2LDcgQEAgcHVibGljOgogICAgIGJvb2wgbV9oYXNEZWJ1Z2dlckVuYWJsZWQ7CiAg
ICAgYm9vbCBtX2hhc0V4Y2VwdGlvbkhhbmRsZXJzIHsgZmFsc2UgfTsKIHByaXZhdGU6CisgICAg
dm9pZCBhZG9wdE5vZGVPdXRPZkxpbmUoTm9kZSYpOwogCiAgICAgYm9vbCBpc1N0cmluZ1Byb3Rv
dHlwZU1ldGhvZFNhbmUoSlNHbG9iYWxPYmplY3QqLCBVbmlxdWVkU3RyaW5nSW1wbCopOwogCkBA
IC05NDMsNiArOTQ5LDggQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIHJldHVybiBieXRl
Y29kZUNhblRydW5jYXRlSW50ZWdlcihhZGQtPmFyaXRoTm9kZUZsYWdzKCkpID8gU3BlY3VsYXRl
SW50MzJBbmRUcnVuY2F0ZUNvbnN0YW50cyA6IERvbnRTcGVjdWxhdGVJbnQzMjsKICAgICB9CisK
KyAgICBCMzo6U3BhcnNlQ29sbGVjdGlvbjxOb2RlPiBtX25vZGVzOwogfTsKIAogfSB9IC8vIG5h
bWVzcGFjZSBKU0M6OkRGRwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdMSUNNUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMSUNNUGhhc2Uu
Y3BwCmluZGV4IGRlZWQyMGIxYjMwNzIwYzQwZGFkNDgwMTg0Y2NlN2UyNjk4Zjc5NDYuLmU2MDk3
NjRlODU5Y2Y4MGRkYWM1OGIzYzQyYzA3MDVjMTJlOTI2M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTElDTVBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0xJQ01QaGFzZS5jcHAKQEAgLTM0MSw3ICszNDEsNyBAQCBwcml2YXRlOgog
ICAgICAgICAvLyBjb2RlLiBCdXQgZm9yIG5vdyB3ZSBqdXN0IGFzc2VydCB0aGF0J3MgdGhlIGNh
c2UuCiAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbm9kZSwgIShub2RlLT5mbGFncygpICYg
Tm9kZUhhc1ZhckFyZ3MpKTsKICAgICAgICAgCi0gICAgICAgIG5vZGVSZWYgPSBtX2dyYXBoLmFk
ZE5vZGUoU3BlY05vbmUsIENoZWNrLCBvcmlnaW5hbE9yaWdpbiwgbm9kZS0+Y2hpbGRyZW4pOwor
ICAgICAgICBub2RlUmVmID0gbV9ncmFwaC5hZGROb2RlKENoZWNrLCBvcmlnaW5hbE9yaWdpbiwg
bm9kZS0+Y2hpbGRyZW4pOwogICAgICAgICAKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMb25nTGl2ZWRTdGF0ZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xvbmdMaXZlZFN0YXRlLmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2EyZjJmMWYwYzlmNmYzOGE4MjU5YTEzNmExZDJh
NjM2OTU1ODFkOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xvbmdMaXZlZFN0YXRlLmNwcAorKysgL2Rl
di9udWxsCkBAIC0xLDUxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkRGR0xvbmdMaXZl
ZFN0YXRlLmgiCi0KLSNpZiBFTkFCTEUoREZHX0pJVCkKLQotI2luY2x1ZGUgIkpTQ0lubGluZXMu
aCIKLQotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewotCi1Mb25nTGl2ZWRTdGF0ZTo6
TG9uZ0xpdmVkU3RhdGUoKQotewotfQotCi1Mb25nTGl2ZWRTdGF0ZTo6fkxvbmdMaXZlZFN0YXRl
KCkKLXsKLX0KLQotdm9pZCBMb25nTGl2ZWRTdGF0ZTo6c2hyaW5rVG9GaXQoKQotewotICAgIG1f
YWxsb2NhdG9yLnJlc2V0KCk7Ci19Ci0KLX0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKLQotI2Vu
ZGlmIC8vIEVOQUJMRShERkdfSklUKQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0xvbmdMaXZlZFN0YXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0xvbmdMaXZlZFN0YXRlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc3ZmFiMDQw
Nzc5OWIxYWJjZDIwYjJlODBmOWRkNDFlMzZmMmQ5YzEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMb25n
TGl2ZWRTdGF0ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIERGR0xvbmdMaXZlZFN0
YXRlX2gKLSNkZWZpbmUgREZHTG9uZ0xpdmVkU3RhdGVfaAotCi0jaWYgRU5BQkxFKERGR19KSVQp
Ci0KLSNpbmNsdWRlICJERkdOb2RlQWxsb2NhdG9yLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxs
b2MuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLQotbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBERkcgewotCi1jbGFzcyBMb25nTGl2ZWRTdGF0ZSB7Ci0gICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7IFdURl9NQUtFX05PTkNPUFlBQkxFKExvbmdMaXZlZFN0YXRlKTsKLXB1Ymxp
YzoKLSAgICBMb25nTGl2ZWRTdGF0ZSgpOwotICAgIH5Mb25nTGl2ZWRTdGF0ZSgpOwotICAgIAot
ICAgIHZvaWQgc2hyaW5rVG9GaXQoKTsKLSAgICAKLSAgICBOb2RlQWxsb2NhdG9yIG1fYWxsb2Nh
dG9yOwotfTsKLQotfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwotCi0jZW5kaWYgLy8gRU5BQkxF
KERGR19KSVQpCi0KLSNlbmRpZiAvLyBERkdMb25nTGl2ZWRTdGF0ZV9oCi0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGUuY3BwCmluZGV4IDQ4ZjFkNTUyNDA0MzU1YWM3YmEzZjE4MmEzMGU5
Y2Q4MWNkMTBjMDguLjQ0YjI4NDVjZGUwZGVjZGU2ZWJkNTMxNDkxN2E0OWUxMTdhM2I4ZDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNwcApAQCAtMjksNyArMjksNiBAQAogI2lm
IEVOQUJMRShERkdfSklUKQogCiAjaW5jbHVkZSAiREZHR3JhcGguaCIKLSNpbmNsdWRlICJERkdO
b2RlQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaCIKICNp
bmNsdWRlICJKU0NJbmxpbmVzLmgiCiAKQEAgLTY0LDExICs2Myw2IEBAIHZvaWQgQnJhbmNoVGFy
Z2V0OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgICAgIG91dC5wcmludCgiL3c6
IiwgY291bnQpOwogfQogCi11bnNpZ25lZCBOb2RlOjppbmRleCgpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIE5vZGVBbGxvY2F0b3I6OmFsbG9jYXRvck9mKHRoaXMpLT5pbmRleE9mKHRoaXMpOwotfQot
CiBib29sIE5vZGU6Omhhc1ZhcmlhYmxlQWNjZXNzRGF0YShHcmFwaCYgZ3JhcGgpCiB7CiAgICAg
c3dpdGNoIChvcCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IDU2MGRh
NGI5Mjg2MzRlYzI1YjA1ZTAzM2E4Y2ZjOGQ5YThmZjdhOWYuLjVjNDhjZjE3NDYxN2ViNGZhYzM2
MGQxMDc2ZjdlZjY5MjBmNWRjOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBA
IC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoREZHX0pJVCkKIAorI2luY2x1ZGUgIkIzU3Bh
cnNlQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkJhc2ljQmxvY2tMb2NhdGlvbi5oIgogI2luY2x1
ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRGR0Fic3RyYWN0VmFsdWUuaCIKQEAgLTIzMCw2
ICsyMzEsOCBAQCBzdHJ1Y3QgU3RhY2tBY2Nlc3NEYXRhIHsKIC8vCiAvLyBOb2RlIHJlcHJlc2Vu
dHMgYSBzaW5nbGUgb3BlcmF0aW9uIGluIHRoZSBkYXRhIGZsb3cgZ3JhcGguCiBzdHJ1Y3QgTm9k
ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CiAgICAgZW51bSBWYXJB
cmdUYWcgeyBWYXJBcmcgfTsKICAgICAKICAgICBOb2RlKCkgeyB9CkBAIC0zNDYsOSArMzQ5LDgg
QEAgc3RydWN0IE5vZGUgewogICAgIAogICAgIE5vZGVUeXBlIG9wKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8Tm9kZVR5cGU+KG1fb3ApOyB9CiAgICAgTm9kZUZsYWdzIGZsYWdzKCkgY29u
c3QgeyByZXR1cm4gbV9mbGFnczsgfQotICAgIAotICAgIC8vIFRoaXMgaXMgbm90IGEgZmFzdCBt
ZXRob2QuCi0gICAgdW5zaWduZWQgaW5kZXgoKSBjb25zdDsKKworICAgIHVuc2lnbmVkIGluZGV4
KCkgY29uc3QgeyByZXR1cm4gbV9pbmRleDsgfQogICAgIAogICAgIHZvaWQgc2V0T3AoTm9kZVR5
cGUgb3ApCiAgICAgewpAQCAtMjM0NCw2ICsyMzQ2LDkgQEAgc3RydWN0IE5vZGUgewogICAgIEFk
amFjZW5jeUxpc3QgY2hpbGRyZW47CiAKIHByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIEIzOjpT
cGFyc2VDb2xsZWN0aW9uPE5vZGU+OworCisgICAgdW5zaWduZWQgbV9pbmRleCB7IHN0ZDo6bnVt
ZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSB9OwogICAgIHVuc2lnbmVkIG1fb3AgOiAxMDsg
Ly8gcmVhbCB0eXBlIGlzIE5vZGVUeXBlCiAgICAgdW5zaWduZWQgbV9mbGFncyA6IDIwOwogICAg
IC8vIFRoZSB2aXJ0dWFsIHJlZ2lzdGVyIG51bWJlciAoc3BpbGwgbG9jYXRpb24pIGFzc29jaWF0
ZWQgd2l0aCB0aGlzIC4KQEAgLTIzNTEsNyArMjM1Niw3IEBAIHByaXZhdGU6CiAgICAgLy8gVGhl
IG51bWJlciBvZiB1c2VzIG9mIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24gKCsxIGZvciAn
bXVzdCBnZW5lcmF0ZScgbm9kZXMsIHdoaWNoIGhhdmUgc2lkZS1lZmZlY3RzKS4KICAgICB1bnNp
Z25lZCBtX3JlZkNvdW50OwogICAgIC8vIFRoZSBwcmVkaWN0aW9uIGFzY3JpYmVkIHRvIHRoaXMg
bm9kZSBhZnRlciBwcm9wYWdhdGlvbi4KLSAgICBTcGVjdWxhdGVkVHlwZSBtX3ByZWRpY3Rpb247
CisgICAgU3BlY3VsYXRlZFR5cGUgbV9wcmVkaWN0aW9uIHsgU3BlY05vbmUgfTsKICAgICAvLyBJ
bW1lZGlhdGUgdmFsdWVzLCBhY2Nlc3NlcyB0eXBlLWNoZWNrZWQgdmlhIGFjY2Vzc29ycyBhYm92
ZS4gVGhlIGZpcnN0IG9uZSBpcwogICAgIC8vIGJpZyBlbm91Z2ggdG8gc3RvcmUgYSBwb2ludGVy
LgogICAgIHVpbnRwdHJfdCBtX29wSW5mbzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZUFsbG9jYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlQWxsb2NhdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5MDI0Y2Mx
OTFhMGI5NzkxN2EzNmZjOTk3ZTQwOGJhNWFlNjNlOTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
QWxsb2NhdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgREZHTm9kZUFsbG9jYXRv
cl9oCi0jZGVmaW5lIERGR05vZGVBbGxvY2F0b3JfaAotCi0jaWYgRU5BQkxFKERGR19KSVQpCi0K
LSNpbmNsdWRlICJERkdBbGxvY2F0b3IuaCIKLSNpbmNsdWRlICJERkdOb2RlLmgiCi0KLW5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKLQotdHlwZWRlZiBBbGxvY2F0b3I8Tm9kZT4gTm9k
ZUFsbG9jYXRvcjsKLQotfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwotCi1pbmxpbmUgdm9pZCog
b3BlcmF0b3IgbmV3IChzaXplX3Qgc2l6ZSwgSlNDOjpERkc6Ok5vZGVBbGxvY2F0b3ImIGFsbG9j
YXRvcikKLXsKLSAgICBBU1NFUlRfVU5VU0VEKHNpemUsIHNpemUgPT0gc2l6ZW9mKEpTQzo6REZH
OjpOb2RlKSk7Ci0gICAgcmV0dXJuIGFsbG9jYXRvci5hbGxvY2F0ZSgpOwotfQotCi0jZW5kaWYg
Ly8gRU5BQkxFKERGR19KSVQpCi0KLSNlbmRpZiAvLyBERkdOb2RlQWxsb2NhdG9yX2gKLQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lu
a2luZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2Nh
dGlvblNpbmtpbmdQaGFzZS5jcHAKaW5kZXggOThjYzViZmMzZjg3NjViMDczMjJiYmMwYjI4ODM5
OTdhOWFlYjg0MC4uNGQzNDczMGFhN2ZlOGVmOTc2N2EyYTQzMmZmMmY2ZTFmNjZjMmViNiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lu
a2luZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFs
bG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCkBAIC0yMTAyLDcgKzIxMDIsNiBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgIGRhdGEtPmlkZW50aWZpZXJOdW1iZXIgPSBpZGVudGlmaWVyTnVtYmVy
OwogCiAgICAgICAgICAgICAgICAgcmV0dXJuIG1fZ3JhcGguYWRkTm9kZSgKLSAgICAgICAgICAg
ICAgICAgICAgU3BlY05vbmUsCiAgICAgICAgICAgICAgICAgICAgIFB1dEJ5T2Zmc2V0LAogICAg
ICAgICAgICAgICAgICAgICBvcmlnaW4udGFrZVZhbGlkRXhpdChjYW5FeGl0KSwKICAgICAgICAg
ICAgICAgICAgICAgT3BJbmZvKGRhdGEpLApAQCAtMjEzNyw3ICsyMTM2LDYgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgcmV0dXJuIG1fZ3JhcGguYWRkTm9kZSgKLSAg
ICAgICAgICAgICAgICBTcGVjTm9uZSwKICAgICAgICAgICAgICAgICBNdWx0aVB1dEJ5T2Zmc2V0
LAogICAgICAgICAgICAgICAgIG9yaWdpbi50YWtlVmFsaWRFeGl0KGNhbkV4aXQpLAogICAgICAg
ICAgICAgICAgIE9wSW5mbyhkYXRhKSwKQEAgLTIxNDgsNyArMjE0Niw2IEBAIHByaXZhdGU6CiAK
ICAgICAgICAgY2FzZSBDbG9zdXJlVmFyUExvYzogewogICAgICAgICAgICAgcmV0dXJuIG1fZ3Jh
cGguYWRkTm9kZSgKLSAgICAgICAgICAgICAgICBTcGVjTm9uZSwKICAgICAgICAgICAgICAgICBQ
dXRDbG9zdXJlVmFyLAogICAgICAgICAgICAgICAgIG9yaWdpbi50YWtlVmFsaWRFeGl0KGNhbkV4
aXQpLAogICAgICAgICAgICAgICAgIE9wSW5mbyhsb2NhdGlvbi5pbmZvKCkpLApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUGxhbi5jcHAKaW5kZXggODhkMWYxNTU3MWNjOTE0NmJjNTA5MTc1ZTgw
ZTE5YTQxYjVmZGRkOC4uMjUxNTU0YjJhZjdhMzhjOTUzYTAzMmJlZmEzZDJjZTcwNjlkMzY3NSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCkBAIC0xNzAsNyArMTcwLDcgQEAg
Ym9vbCBQbGFuOjpyZXBvcnRDb21waWxlVGltZXMoKSBjb25zdAogICAgICAgICB8fCAoT3B0aW9u
czo6cmVwb3J0RlRMQ29tcGlsZVRpbWVzKCkgJiYgaXNGVEwobW9kZSkpOwogfQogCi12b2lkIFBs
YW46OmNvbXBpbGVJblRocmVhZChMb25nTGl2ZWRTdGF0ZSYgbG9uZ0xpdmVkU3RhdGUsIFRocmVh
ZERhdGEqIHRocmVhZERhdGEpCit2b2lkIFBsYW46OmNvbXBpbGVJblRocmVhZChUaHJlYWREYXRh
KiB0aHJlYWREYXRhKQogewogICAgIHRoaXMtPnRocmVhZERhdGEgPSB0aHJlYWREYXRhOwogICAg
IApAQCAtMTg2LDcgKzE4Niw3IEBAIHZvaWQgUGxhbjo6Y29tcGlsZUluVGhyZWFkKExvbmdMaXZl
ZFN0YXRlJiBsb25nTGl2ZWRTdGF0ZSwgVGhyZWFkRGF0YSogdGhyZWFkRGF0CiAgICAgaWYgKGxv
Z0NvbXBpbGF0aW9uQ2hhbmdlcyhtb2RlKSkKICAgICAgICAgZGF0YUxvZygiREZHKFBsYW4pIGNv
bXBpbGluZyAiLCAqY29kZUJsb2NrLCAiIHdpdGggIiwgbW9kZSwgIiwgbnVtYmVyIG9mIGluc3Ry
dWN0aW9ucyA9ICIsIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgpLCAiXG4iKTsKIAotICAg
IENvbXBpbGF0aW9uUGF0aCBwYXRoID0gY29tcGlsZUluVGhyZWFkSW1wbChsb25nTGl2ZWRTdGF0
ZSk7CisgICAgQ29tcGlsYXRpb25QYXRoIHBhdGggPSBjb21waWxlSW5UaHJlYWRJbXBsKCk7CiAK
ICAgICBSRUxFQVNFX0FTU0VSVChwYXRoID09IENhbmNlbFBhdGggfHwgZmluYWxpemVyKTsKICAg
ICBSRUxFQVNFX0FTU0VSVCgocGF0aCA9PSBDYW5jZWxQYXRoKSA9PSAoc3RhZ2UgPT0gQ2FuY2Vs
bGVkKSk7CkBAIC0yMzYsNyArMjM2LDcgQEAgdm9pZCBQbGFuOjpjb21waWxlSW5UaHJlYWQoTG9u
Z0xpdmVkU3RhdGUmIGxvbmdMaXZlZFN0YXRlLCBUaHJlYWREYXRhKiB0aHJlYWREYXQKICAgICB9
CiB9CiAKLVBsYW46OkNvbXBpbGF0aW9uUGF0aCBQbGFuOjpjb21waWxlSW5UaHJlYWRJbXBsKExv
bmdMaXZlZFN0YXRlJiBsb25nTGl2ZWRTdGF0ZSkKK1BsYW46OkNvbXBpbGF0aW9uUGF0aCBQbGFu
Ojpjb21waWxlSW5UaHJlYWRJbXBsKCkKIHsKICAgICBjbGVhbk11c3RIYW5kbGVWYWx1ZXNJZk5l
Y2Vzc2FyeSgpOwogICAgIApAQCAtMjQ2LDcgKzI0Niw3IEBAIFBsYW46OkNvbXBpbGF0aW9uUGF0
aCBQbGFuOjpjb21waWxlSW5UaHJlYWRJbXBsKExvbmdMaXZlZFN0YXRlJiBsb25nTGl2ZWRTdGF0
ZSkKICAgICAgICAgZGF0YUxvZygiXG4iKTsKICAgICB9CiAgICAgCi0gICAgR3JhcGggZGZnKCp2
bSwgKnRoaXMsIGxvbmdMaXZlZFN0YXRlKTsKKyAgICBHcmFwaCBkZmcoKnZtLCAqdGhpcyk7CiAg
ICAgCiAgICAgaWYgKCFwYXJzZShkZmcpKSB7CiAgICAgICAgIGZpbmFsaXplciA9IHN0ZDo6bWFr
ZV91bmlxdWU8RmFpbGVkRmluYWxpemVyPigqdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UGxhbi5oCmluZGV4IDk1OTRkZmYyZjMwM2Q2MDNiN2Y5MThhMzMxMTA3NWE1MWU3NzZmZDMuLjZl
MzUyNjg1Y2NiMTZlM2JiNTk1NGUzMjgxZjY1MzA2MTkzYWQxZWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUGxhbi5oCkBAIC00OCw3ICs0OCw2IEBAIGNsYXNzIFNsb3RWaXNpdG9yOwogCiBu
YW1lc3BhY2UgREZHIHsKIAotY2xhc3MgTG9uZ0xpdmVkU3RhdGU7CiBjbGFzcyBUaHJlYWREYXRh
OwogCiAjaWYgRU5BQkxFKERGR19KSVQpCkBAIC02MCw3ICs1OSw3IEBAIHN0cnVjdCBQbGFuIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFBsYW4+IHsKICAgICAgICAgY29uc3QgT3BlcmFu
ZHM8SlNWYWx1ZT4mIG11c3RIYW5kbGVWYWx1ZXMpOwogICAgIH5QbGFuKCk7CiAKLSAgICB2b2lk
IGNvbXBpbGVJblRocmVhZChMb25nTGl2ZWRTdGF0ZSYsIFRocmVhZERhdGEqKTsKKyAgICB2b2lk
IGNvbXBpbGVJblRocmVhZChUaHJlYWREYXRhKik7CiAgICAgCiAgICAgQ29tcGlsYXRpb25SZXN1
bHQgZmluYWxpemVXaXRob3V0Tm90aWZ5aW5nQ2FsbGJhY2soKTsKICAgICB2b2lkIGZpbmFsaXpl
QW5kTm90aWZ5Q2FsbGJhY2soKTsKQEAgLTEyMSw3ICsxMjAsNyBAQCBwcml2YXRlOgogICAgIGJv
b2wgcmVwb3J0Q29tcGlsZVRpbWVzKCkgY29uc3Q7CiAgICAgCiAgICAgZW51bSBDb21waWxhdGlv
blBhdGggeyBGYWlsUGF0aCwgREZHUGF0aCwgRlRMUGF0aCwgQ2FuY2VsUGF0aCB9OwotICAgIENv
bXBpbGF0aW9uUGF0aCBjb21waWxlSW5UaHJlYWRJbXBsKExvbmdMaXZlZFN0YXRlJik7CisgICAg
Q29tcGlsYXRpb25QYXRoIGNvbXBpbGVJblRocmVhZEltcGwoKTsKICAgICAKICAgICBib29sIGlz
U3RpbGxWYWxpZCgpOwogICAgIHZvaWQgcmVhbGx5QWRkKENvbW1vbkRhdGEqKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcAppbmRl
eCBmZTk5YmEwOWUxOTRkZWUyNDZlMWI2YTRhNGQ5OTE3NzczM2QzMmVhLi5jZGUwNzQwMDdjOTY1
NzQxYjNmYWI3MzQ0MmJlMDFhZmY4YzViZDVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwCkBAIC0zNzMsNyArMzczLDcgQEAg
cHVibGljOgogICAgICAgICAgICAgaWYgKCFibG9jaykKICAgICAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgcGhpSW5kZXggPSBibG9jay0+cGhpcy5zaXpl
KCk7IHBoaUluZGV4LS07KQotICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9hbGxvY2F0b3IuZnJl
ZShibG9jay0+cGhpc1twaGlJbmRleF0pOworICAgICAgICAgICAgICAgIG1fZ3JhcGguZGVsZXRl
Tm9kZShibG9jay0+cGhpc1twaGlJbmRleF0pOwogICAgICAgICAgICAgYmxvY2stPnBoaXMuY2xl
YXIoKTsKICAgICAgICAgICAgIGJsb2NrLT52YXJpYWJsZXNBdEhlYWQuY2xlYXIoKTsKICAgICAg
ICAgICAgIGJsb2NrLT52YXJpYWJsZXNBdFRhaWwuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xpc3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAKaW5kZXggZDUyOGUxNDNkMWFkZDdhNzg0NjU0MTE5OGFj
YjNkMTRkM2Q3MjE1My4uOWI2ZDJjM2M2NmI1ODQyYTJiODg5NTI2NTY5NWY2MGExMmZiMDEzMiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAKQEAgLTMwLDcgKzMw
LDYgQEAKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRlZmVyR0MuaCIKLSNp
bmNsdWRlICJERkdMb25nTGl2ZWRTdGF0ZS5oIgogI2luY2x1ZGUgIkRGR1NhZmVwb2ludC5oIgog
I2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlIDxtdXRleD4KQEAgLTM2Miw4ICszNjEs
NiBAQCB2b2lkIFdvcmtsaXN0OjpydW5UaHJlYWQoVGhyZWFkRGF0YSogZGF0YSkKICAgICBpZiAo
T3B0aW9uczo6dmVyYm9zZUNvbXBpbGF0aW9uUXVldWUoKSkKICAgICAgICAgZGF0YUxvZygqdGhp
cywgIjogVGhyZWFkIHN0YXJ0ZWRcbiIpOwogICAgIAotICAgIExvbmdMaXZlZFN0YXRlIGxvbmdM
aXZlZFN0YXRlOwotICAgIAogICAgIGZvciAoOzspIHsKICAgICAgICAgUmVmUHRyPFBsYW4+IHBs
YW47CiAgICAgICAgIHsKQEAgLTM5OSw3ICszOTYsNyBAQCB2b2lkIFdvcmtsaXN0OjpydW5UaHJl
YWQoVGhyZWFkRGF0YSogZGF0YSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCp0aGlzLCAiOiBD
b21waWxpbmcgIiwgcGxhbi0+a2V5KCksICIgYXN5bmNocm9ub3VzbHlcbiIpOwogICAgICAgICAK
ICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFwbGFuLT52bS0+aGVhcC5pc0NvbGxlY3Rpbmco
KSk7Ci0gICAgICAgICAgICBwbGFuLT5jb21waWxlSW5UaHJlYWQobG9uZ0xpdmVkU3RhdGUsIGRh
dGEpOworICAgICAgICAgICAgcGxhbi0+Y29tcGlsZUluVGhyZWFkKGRhdGEpOwogICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQocGxhbi0+c3RhZ2UgPT0gUGxhbjo6Q2FuY2VsbGVkIHx8ICFwbGFu
LT52bS0+aGVhcC5pc0NvbGxlY3RpbmcoKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCBiMWZmNDI0OGEzNDg0YTRjYmJj
MjA1YzMyZDRkMDRjMTYwNjBjYWM2Li45NDE2ZWE5NGFiN2ZiOTg1OGZiOWFlNWJjZGQ2ZWE0NTBj
YWE0MGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0zOCw3ICszOCw2
IEBACiAjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJDb21tb25TbG93
UGF0aHMuaCIKICNpbmNsdWRlICJDdXN0b21HZXR0ZXJTZXR0ZXIuaCIKLSNpbmNsdWRlICJERkdM
b25nTGl2ZWRTdGF0ZS5oIgogI2luY2x1ZGUgIkRGR1dvcmtsaXN0LmgiCiAjaW5jbHVkZSAiRGlz
YXNzZW1ibGVyLmgiCiAjaW5jbHVkZSAiRXJyb3JJbnN0YW5jZS5oIgpAQCAtMjkwLDExICsyODks
NiBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgfQogCiAg
ICAgY2FsbEZyYW1lRm9yQ2F0Y2ggPSBudWxscHRyOwotCi0jaWYgRU5BQkxFKERGR19KSVQpCi0g
ICAgaWYgKGNhblVzZUpJVCgpKQotICAgICAgICBkZmdTdGF0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8
REZHOjpMb25nTGl2ZWRTdGF0ZT4oKTsKLSNlbmRpZgogICAgIAogICAgIC8vIEluaXRpYWxpemUg
dGhpcyBsYXN0LCBhcyBhIGZyZWUgd2F5IG9mIGFzc2VydGluZyB0aGF0IFZNIGluaXRpYWxpemF0
aW9uIGl0c2VsZgogICAgIC8vIHdvbid0IHVzZSB0aGlzLgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmgKaW5kZXggZjBkZTE1MTM1YTkwNzg3OGI0N2ExZDM0MzRmNjgyOTFjYjVkYzczZS4uNGU5
ZjIxYzBlOTMzNjBmNzU1NGRmMmM0YzE1M2MxYjQ1OGVjM2VmNyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5oCkBAIC0xMTksMTEgKzExOSw2IEBAIGNsYXNzIFdhdGNoZG9nOwogY2xhc3Mg
V2F0Y2hwb2ludDsKIGNsYXNzIFdhdGNocG9pbnRTZXQ7CiAKLSNpZiBFTkFCTEUoREZHX0pJVCkK
LW5hbWVzcGFjZSBERkcgewotY2xhc3MgTG9uZ0xpdmVkU3RhdGU7Ci19Ci0jZW5kaWYgLy8gRU5B
QkxFKERGR19KSVQpCiAjaWYgRU5BQkxFKEZUTF9KSVQpCiBuYW1lc3BhY2UgRlRMIHsKIGNsYXNz
IFRodW5rczsKQEAgLTI3MSwxMCArMjY2LDYgQEAgcHVibGljOgogICAgIC8vIGRlc3RydWN0ZWQg
YWZ0ZXIgYWxsIHRoZSBvYmplY3RzIHRoYXQgcmVmZXJlbmNlIGl0LgogICAgIEhlYXAgaGVhcDsK
IAotI2lmIEVOQUJMRShERkdfSklUKQotICAgIHN0ZDo6dW5pcXVlX3B0cjxERkc6OkxvbmdMaXZl
ZFN0YXRlPiBkZmdTdGF0ZTsKLSNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKLQogICAgIFZNVHlw
ZSB2bVR5cGU7CiAgICAgQ2xpZW50RGF0YSogY2xpZW50RGF0YTsKICAgICBWTUVudHJ5RnJhbWUq
IHRvcFZNRW50cnlGcmFtZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284383</attachid>
            <date>2016-07-22 16:03:34 -0700</date>
            <delta_ts>2016-07-27 17:34:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160098-20160722160232.patch</filename>
            <type>text/plain</type>
            <size>51279</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzNDQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
ZWRkMTAyNmQzZWQ4NjBhYmUyOTJiZmQyNzVjMzExNWUxOWM1ZmJhLi43ZDYzMzVjNWExYzIwY2M4
NWM4NzJmOWE5MGVmMDZkM2RhYzRmNjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4NCBAQAorMjAxNi0wNy0yMiAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KKworICAgICAgICBbSlNDXSBERkc6Ok5vZGUgc2hvdWxkIG5vdCBoYXZlIGl0cyBvd24g
YWxsb2NhdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjAwOTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBXZSBuZWVkIHNvbWUgZGVzaWduIGNoYW5nZXMgZm9yIERGRzo6Tm9kZToKKyAgICAgICAgLUFj
Y2Vzc2luZyB0aGUgaW5kZXggbXVzdCBiZSBmYXN0LiBCMyB1c2VzIGluZGljZXMgZm9yIHNldHMK
KyAgICAgICAgIGFuZCBtYXBzLCBpdCBpcyBhIGxvdCBmYXN0ZXIgdGhhbiBoYXNoaW5nIHBvaW50
ZXJzLgorICAgICAgICAtV2Ugc2hvdWxkIGJlIGFibGUgdG8gc3ViY2xhc3MgREZHOjpOb2RlIHRv
IHNwZWNpYWxpemUgaXQuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBK
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRmZy9E
RkdBbGxvY2F0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKEpTQzo6REZHOjpBbGxvY2F0b3I6OlJl
Z2lvbjo6c2l6ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6QWxsb2NhdG9yOjpSZWdp
b246OmhlYWRlclNpemUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6OkFsbG9jYXRvcjo6
UmVnaW9uOjpudW1iZXJPZlRoaW5nc1BlclJlZ2lvbik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkRGRzo6QWxsb2NhdG9yOjpSZWdpb246OmRhdGEpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpE
Rkc6OkFsbG9jYXRvcjo6UmVnaW9uOjppc0luVGhpc1JlZ2lvbik6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkRGRzo6QWxsb2NhdG9yOjpSZWdpb246OnJlZ2lvbkZvcik6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkRGRzo6QWxsb2NhdG9yPFQ+OjpBbGxvY2F0b3IpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpERkc6OkFsbG9jYXRvcjxUPjo6fkFsbG9jYXRvcik6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkRGRzo6QWxsb2NhdG9yPFQ+OjphbGxvY2F0ZSk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkRGRzo6QWxsb2NhdG9yPFQ+OjpmcmVlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZH
OjpBbGxvY2F0b3I8VD46OmZyZWVBbGwpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6OkFs
bG9jYXRvcjxUPjo6cmVzZXQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6OkFsbG9jYXRv
cjxUPjo6aW5kZXhPZik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6QWxsb2NhdG9yPFQ+
OjphbGxvY2F0b3JPZik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6QWxsb2NhdG9yPFQ+
OjpidW1wQWxsb2NhdGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6OkFsbG9jYXRvcjxU
Pjo6ZnJlZUxpc3RBbGxvY2F0ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6QWxsb2Nh
dG9yPFQ+OjphbGxvY2F0ZVNsb3cpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6OkFsbG9j
YXRvcjxUPjo6ZnJlZVJlZ2lvbnNTdGFydGluZ0F0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
REZHOjpBbGxvY2F0b3I8VD46OnN0YXJ0QnVtcGluZ0luKTogRGVsZXRlZC4KKyAgICAgICAgKiBk
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFy
c2VyOjphZGRUb0dyYXBoKToKKyAgICAgICAgKiBkZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6Q1BTUmV0aHJlYWRpbmdQaGFzZTo6ZnJlZVVubmVjZXNz
YXJ5Tm9kZXMpOgorICAgICAgICAoSlNDOjpERkc6OkNQU1JldGhyZWFkaW5nUGhhc2U6OmFkZFBo
aVNpbGVudGx5KToKKyAgICAgICAgKiBkZmcvREZHQ2xlYW5VcFBoYXNlLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpDbGVhblVwUGhhc2U6OnJ1bik6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50
Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFz
ZTo6cnVuKToKKyAgICAgICAgKiBkZmcvREZHQ29uc3RhbnRIb2lzdGluZ1BoYXNlLmNwcDoKKyAg
ICAgICAgKiBkZmcvREZHRENFUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkRDRVBoYXNl
OjpmaXh1cEJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHRHJpdmVyLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpjb21waWxlSW1wbCk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpHcmFwaDo6R3JhcGgpOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpk
ZWxldGVOb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6a2lsbEJsb2NrQW5kSXRzQ29u
dGVudHMpOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjp+R3JhcGgpOiBEZWxldGVkLgorICAg
ICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjphZGROb2Rl
KToKKyAgICAgICAgKiBkZmcvREZHTElDTVBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpM
SUNNUGhhc2U6OmF0dGVtcHRIb2lzdCk6CisgICAgICAgICogZGZnL0RGR0xvbmdMaXZlZFN0YXRl
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKEpTQzo6REZHOjpMb25nTGl2ZWRTdGF0ZTo6TG9uZ0xp
dmVkU3RhdGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6OkxvbmdMaXZlZFN0YXRlOjp+
TG9uZ0xpdmVkU3RhdGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6OkxvbmdMaXZlZFN0
YXRlOjpzaHJpbmtUb0ZpdCk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR0xvbmdMaXZlZFN0
YXRlLmg6IFJlbW92ZWQuCisgICAgICAgICogZGZnL0RGR05vZGUuY3BwOgorICAgICAgICAoSlND
OjpERkc6Ok5vZGU6OmluZGV4KTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgor
ICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmluZGV4KToKKyAgICAgICAgKiBkZmcvREZHTm9kZUFs
bG9jYXRvci5oOiBSZW1vdmVkLgorICAgICAgICAob3BlcmF0b3IgbmV3ICk6IERlbGV0ZWQuCisg
ICAgICAgICogZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwOgorICAgICAg
ICAqIGRmZy9ERkdQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpQbGFuOjpjb21waWxlSW5U
aHJlYWQpOgorICAgICAgICAoSlNDOjpERkc6OlBsYW46OmNvbXBpbGVJblRocmVhZEltcGwpOgor
ICAgICAgICAqIGRmZy9ERkdQbGFuLmg6CisgICAgICAgICogZGZnL0RGR1NTQUNvbnZlcnNpb25Q
aGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U1NBQ29udmVyc2lvblBoYXNlOjpydW4pOgor
ICAgICAgICAqIGRmZy9ERkdXb3JrbGlzdC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6V29ya2xp
c3Q6OnJ1blRocmVhZCk6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6
OlZNOjpWTSk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9WTS5oOgorCiAyMDE2LTA3LTE5
ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgVGhlIGRlZmF1bHQg
dGVzdGluZyBtb2RlIHNob3VsZCBub3QgaW52b2x2ZSBkaXNhYmxpbmcgdGhlIEZUTCBKSVQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAzNTllZmM3Y2VhMjE3YWE0NzczN2E3
NjFkNmNhMTZiYzAxMGZjOTliLi41Yzk2YzA2OTkxMWZjN2RmNjE0OTA3MGNiZDgxYmViN2YxYjY2
MDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0zMDksNyArMzA5LDYg
QEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBkZmcvREZHTGF6eUpTVmFsdWUuY3Bw
CiAgICAgZGZnL0RGR0xhenlOb2RlLmNwcAogICAgIGRmZy9ERkdMaXZlbmVzc0FuYWx5c2lzUGhh
c2UuY3BwCi0gICAgZGZnL0RGR0xvbmdMaXZlZFN0YXRlLmNwcAogICAgIGRmZy9ERkdMb29wUHJl
SGVhZGVyQ3JlYXRpb25QaGFzZS5jcHAKICAgICBkZmcvREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9u
UGhhc2UuY3BwCiAgICAgZGZnL0RGR01heUV4aXQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDFlZmMyMTY5Nzc0OGJiOGJmYzUwYTY5NDgyOTEzNGIzNzJlYTgyOWQuLjU4OTll
YjM0ODkyYWFhMjk4YTgxZDcxYjkwNDRhMmI1OWI5MmE1ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC04NzgsOCArODc4LDYgQEAKIAkJMEZFRkM5QUIxNjgxQTNCNjAwNTY3RjUz
IC8qIERGR09TUkV4aXRKdW1wUGxhY2Vob2xkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUZDOUE4MTY4MUEzQjAwMDU2N0Y1MyAvKiBERkdPU1JF
eGl0SnVtcFBsYWNlaG9sZGVyLmggKi87IH07CiAJCTBGRjA1NEY5MUFDMzVCNDQwMEU1QkU1NyAv
KiBFeGVjdXRhYmxlQWxsb2NhdGlvbkZ1enouY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGMDU0RjcxQUMzNUI0NDAwRTVCRTU3IC8qIEV4ZWN1dGFi
bGVBbGxvY2F0aW9uRnV6ei5jcHAgKi87IH07CiAJCTBGRjA1NEZBMUFDMzVCNDQwMEU1QkU1NyAv
KiBFeGVjdXRhYmxlQWxsb2NhdGlvbkZ1enouaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGRjA1NEY4MUFDMzVCNDQwMEU1QkU1NyAvKiBFeGVjdXRhYmxl
QWxsb2NhdGlvbkZ1enouaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwotCQkwRkYwRjE5OTE2QjcyOUY2MDA1REY5NUIgLyogREZHTG9uZ0xpdmVkU3RhdGUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCNEI1
MUMxNkI2Mjc3MjAwM0Y2OTZCIC8qIERGR0xvbmdMaXZlZFN0YXRlLmNwcCAqLzsgfTsKLQkJMEZG
MEYxOUIxNkI3MjlGQTAwNURGOTVCIC8qIERGR0xvbmdMaXZlZFN0YXRlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkI0QjUxRDE2QjYyNzcyMDAzRjY5
NkIgLyogREZHTG9uZ0xpdmVkU3RhdGUuaCAqLzsgfTsKIAkJMEZGMEYxOUMxNkI3MkEwMzAwNURG
OTVCIC8qIERGR05vZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEZCNEI1MUUxNkI2Mjc3MjAwM0Y2OTZCIC8qIERGR05vZGUuY3BwICovOyB9Owog
CQkwRkYwRjE5RDE2QjcyQTA4MDA1REY5NUIgLyogREZHQ29tbW9uLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjRCNTFBMTZCNjI3NzIwMDNGNjk2
QiAvKiBERkdDb21tb24uY3BwICovOyB9OwogCQkwRkYwRjE5RTE2QjcyQTBCMDA1REY5NUIgLyog
REZHRWRnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRkI0QjUxQjE2QjYyNzcyMDAzRjY5NkIgLyogREZHRWRnZS5jcHAgKi87IH07CkBAIC05MzIs
OSArOTMwLDcgQEAKIAkJMEZGQTU0OTgxNkI4ODM1MzAwQjNBOTgyIC8qIEE2NERPcGNvZGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1MkEzQTIzMTY1
MUM2OTcwMEE4MEFGRSAvKiBBNjRET3Bjb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZGQjZDMzgxQUY0OEREQzAwREIxQkY3IC8qIFR5cGVv
ZlR5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEZGQjZDMzYxQUY0OEREQzAwREIxQkY3IC8qIFR5cGVvZlR5cGUuY3BwICovOyB9OwogCQkwRkZC
NkMzOTFBRjQ4RERDMDBEQjFCRjcgLyogVHlwZW9mVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGQjZDMzcxQUY0OEREQzAwREIxQkY3IC8qIFR5
cGVvZlR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwotCQkwRkZCOTIxODE2RDAyRUIyMDA1NUE1REIgLyogREZHQWxsb2NhdG9yLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkI0QjUxOTE2QjYyNzcyMDAz
RjY5NkIgLyogREZHQWxsb2NhdG9yLmggKi87IH07CiAJCTBGRkI5MjFBMTZEMDJFQzUwMDU1QTVE
QiAvKiBERkdCYXNpY0Jsb2NrSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEZENTY1MjIxNkFCNzgwQTAwMTk3NjUzIC8qIERGR0Jhc2ljQmxv
Y2tJbmxpbmVzLmggKi87IH07Ci0JCTBGRkI5MjFCMTZEMDJGMDEwMDU1QTVEQiAvKiBERkdOb2Rl
QWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRkI0QjUxRjE2QjYyNzcyMDAzRjY5NkIgLyogREZHTm9kZUFsbG9jYXRvci5oICovOyB9Owog
CQkwRkZCOTIxQzE2RDAyRjExMDA1NUE1REIgLyogREZHT1NSRXhpdENvbXBpbGF0aW9uSW5mby5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU5ODdGMkMx
NjdGRTg0QjAwM0MyRjhEIC8qIERGR09TUkV4aXRDb21waWxhdGlvbkluZm8uaCAqLzsgfTsKIAkJ
MEZGQjkyMUQxNkQwMkYzMDAwNTVBNURCIC8qIERGR1Nsb3dQYXRoR2VuZXJhdG9yLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjFFM0E1MDE1MzdDMkNC
MDAwRjk0NTYgLyogREZHU2xvd1BhdGhHZW5lcmF0b3IuaCAqLzsgfTsKIAkJMEZGQjkyMjAxNkQw
MzNCNzAwNTVBNURCIC8qIE5vZGVDb25zdHJ1Y3RvcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMERBRDAzMEZCMUVCMUEwMDgyRDIwNSAvKiBOb2Rl
Q29uc3RydWN0b3JzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKQEAgLTI3NzQsMTMgKzI3NzAsOSBAQAogCQkwRkIzODc5MTFCRkQzMUExMDBFM0FCMUUg
LyogRlRMQ29tcGlsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBG
VExDb21waWxlLmNwcDsgcGF0aCA9IGZ0bC9GVExDb21waWxlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEZCNDM4QTIxOTI3MEIxRDAwRTFGQkM5IC8qIFN0cnVjdHVyZVNldC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJ1Y3R1cmVTZXQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkI0QjUxMDE2QjNBOTY0MDAzRjY5NkIg
LyogREZHTWluaWZpZWRJRC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdN
aW5pZmllZElELmg7IHBhdGggPSBkZmcvREZHTWluaWZpZWRJRC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQkwRkI0QjUxOTE2QjYyNzcyMDAzRjY5NkIgLyogREZHQWxsb2NhdG9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0FsbG9jYXRvci5oOyBwYXRoID0g
ZGZnL0RGR0FsbG9jYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkI0QjUx
QTE2QjYyNzcyMDAzRjY5NkIgLyogREZHQ29tbW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IERGR0NvbW1vbi5jcHA7IHBhdGggPSBkZmcvREZHQ29tbW9uLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZCNEI1MUIxNkI2Mjc3MjAwM0Y2OTZCIC8q
IERGR0VkZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHRWRn
ZS5jcHA7IHBhdGggPSBkZmcvREZHRWRnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTBGQjRCNTFDMTZCNjI3NzIwMDNGNjk2QiAvKiBERkdMb25nTGl2ZWRTdGF0ZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdMb25nTGl2ZWRTdGF0ZS5jcHA7
IHBhdGggPSBkZmcvREZHTG9uZ0xpdmVkU3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQkwRkI0QjUxRDE2QjYyNzcyMDAzRjY5NkIgLyogREZHTG9uZ0xpdmVkU3RhdGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHTG9uZ0xpdmVkU3RhdGUuaDsgcGF0
aCA9IGRmZy9ERkdMb25nTGl2ZWRTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRkI0QjUxRTE2QjYyNzcyMDAzRjY5NkIgLyogREZHTm9kZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdOb2RlLmNwcDsgcGF0aCA9IGRmZy9ERkdOb2RlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEZCNEI1MUYxNkI2Mjc3MjAwM0Y2OTZC
IC8qIERGR05vZGVBbGxvY2F0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
REZHTm9kZUFsbG9jYXRvci5oOyBwYXRoID0gZGZnL0RGR05vZGVBbGxvY2F0b3IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZCNEI1MjExNkI2Mjc4RDAwM0Y2OTZCIC8qIEZ1bmN0
aW9uRXhlY3V0YWJsZUR1bXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gRnVuY3Rpb25FeGVjdXRhYmxlRHVtcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGQjRCNTIyMTZCNjI3OEQwMDNGNjk2QiAvKiBGdW5jdGlvbkV4ZWN1dGFibGVEdW1wLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZ1bmN0aW9uRXhlY3V0YWJsZUR1bXAu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZCNEZCNzAxQkM4NDMxNDAwMjVDQTVB
IC8qIEZUTExhenlTbG93UGF0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBGVExMYXp5U2xvd1BhdGguY3BwOyBwYXRoID0gZnRsL0ZUTExhenlTbG93UGF0aC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MTU4LDcgKzYxNTAsNiBAQAogCQkJCTBG
MThEM0NEMUI1NUE2RTAwMDJDNUM5RiAvKiBERkdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQu
Y3BwICovLAogCQkJCTBGMThEM0NFMUI1NUE2RTAwMDJDNUM5RiAvKiBERkdBZGFwdGl2ZVN0cnVj
dHVyZVdhdGNocG9pbnQuaCAqLywKIAkJCQkwRjY2RTE2ODE0REYzRjEzMDBCN0IyRTQgLyogREZH
QWRqYWNlbmN5TGlzdC5oICovLAotCQkJCTBGQjRCNTE5MTZCNjI3NzIwMDNGNjk2QiAvKiBERkdB
bGxvY2F0b3IuaCAqLywKIAkJCQkwRjFFM0E0MzE1MzRDQkFEMDAwRjk0NTYgLyogREZHQXJndW1l
bnRQb3NpdGlvbi5oICovLAogCQkJCTBGMkREODBDMUFCM0Q4QkUwMEJCQjhFOCAvKiBERkdBcmd1
bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcCAqLywKIAkJCQkwRjJERDgwRDFBQjNEOEJFMDBCQkI4
RTggLyogREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5oICovLApAQCAtNjMwOCw4ICs2Mjk5
LDYgQEAKIAkJCQk3OUM0QjE1QzFCQTIxNThGMDBGRDU5MkUgLyogREZHTGl2ZUNhdGNoVmFyaWFi
bGVQcmVzZXJ2YXRpb25QaGFzZS5oICovLAogCQkJCUE3RDg5Q0VDMTdBMEI4Q0MwMDc3M0FEOCAv
KiBERkdMaXZlbmVzc0FuYWx5c2lzUGhhc2UuY3BwICovLAogCQkJCUE3RDg5Q0VEMTdBMEI4Q0Mw
MDc3M0FEOCAvKiBERkdMaXZlbmVzc0FuYWx5c2lzUGhhc2UuaCAqLywKLQkJCQkwRkI0QjUxQzE2
QjYyNzcyMDAzRjY5NkIgLyogREZHTG9uZ0xpdmVkU3RhdGUuY3BwICovLAotCQkJCTBGQjRCNTFE
MTZCNjI3NzIwMDNGNjk2QiAvKiBERkdMb25nTGl2ZWRTdGF0ZS5oICovLAogCQkJCUE3NjdCNUIz
MTdBMEI5NjUwMDYzRDk0MCAvKiBERkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5jcHAgKi8s
CiAJCQkJQTc2N0I1QjQxN0EwQjk2NTAwNjNEOTQwIC8qIERGR0xvb3BQcmVIZWFkZXJDcmVhdGlv
blBoYXNlLmggKi8sCiAJCQkJNzlGOEZDMUMxQjlGRUQwRjAwQ0E2NkFCIC8qIERGR01heGltYWxG
bHVzaEluc2VydGlvblBoYXNlLmNwcCAqLywKQEAgLTYzMjksNyArNjMxOCw2IEBACiAJCQkJQTcz
NzgxMEIxNzk5RUEyRTAwODE3NTMzIC8qIERGR05hdHVyYWxMb29wcy5oICovLAogCQkJCTBGQjRC
NTFFMTZCNjI3NzIwMDNGNjk2QiAvKiBERkdOb2RlLmNwcCAqLywKIAkJCQk4NkVDQTNFOTEzMkRF
RjFDMDAyQjJBRDcgLyogREZHTm9kZS5oICovLAotCQkJCTBGQjRCNTFGMTZCNjI3NzIwMDNGNjk2
QiAvKiBERkdOb2RlQWxsb2NhdG9yLmggKi8sCiAJCQkJMEZBNTgxQjcxNTBFOTUyQTAwQjlBMkQ5
IC8qIERGR05vZGVGbGFncy5jcHAgKi8sCiAJCQkJMEZBNTgxQjgxNTBFOTUyQTAwQjlBMkQ5IC8q
IERGR05vZGVGbGFncy5oICovLAogCQkJCTBGNUQwODVDMUI4Q0Y5OUQwMDExNDNCNCAvKiBERkdO
b2RlT3JpZ2luLmNwcCAqLywKQEAgLTcyNjMsNyArNzI1MSw2IEBACiAJCQkJOTk4RUQ2NzUxQkVE
NzY4QzAwREQ4MDE3IC8qIFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEYzM0ZDRjgxQzEzNkUyNTAwMzIzRjY3IC8qIEIzU3RhY2ttYXBHZW5lcmF0aW9uUGFy
YW1zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjY2RTE2QjE0REYzRjE2MDBCN0IyRTQgLyogREZH
QWRqYWNlbmN5TGlzdC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEZGQjkyMTgxNkQwMkVCMjAwNTVB
NURCIC8qIERGR0FsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxRTNBNDYxNTM0Q0JB
RjAwMEY5NDU2IC8qIERGR0FyZ3VtZW50UG9zaXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
MkREODEyMUFCM0Q4QkUwMEJCQjhFOCAvKiBERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjJERDgxNDFBQjNEOEJFMDBCQkI4RTggLyogREZHQXJndW1l
bnRzVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKQEAgLTczNjAsNyArNzM0Nyw2IEBACiAJCQkJ
OTlENkExMTYxQkVBRDM0RDAwRTI1QzM3IC8qIFJlbW90ZUF1dG9tYXRpb25UYXJnZXQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTc5QzRCMTVFMUJBMjE1OEYwMEZENTkyRSAvKiBERkdMaXZlQ2F0Y2hW
YXJpYWJsZVByZXNlcnZhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0Q4OUNGQzE3
QTBCOENDMDA3NzNBRDggLyogREZHTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmggaW4gSGVhZGVycyAq
LywKLQkJCQkwRkYwRjE5QjE2QjcyOUZBMDA1REY5NUIgLyogREZHTG9uZ0xpdmVkU3RhdGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGMzM4REYyMUJFOTNBRDEwMDEzQzg4RiAvKiBCM1N0YWNrbWFw
VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3NjdCNUI2MTdBMEI5NjUwMDYzRDk0MCAvKiBE
RkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzlGOEZD
MUYxQjlGRUQwRjAwQ0E2NkFCIC8qIERGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNlLmggaW4g
SGVhZGVycyAqLywKQEAgLTczNzMsNyArNzM1OSw2IEBACiAJCQkJMEZGMkNENUMxQjYxQTRGODAw
NDk1NUE4IC8qIERGR011bHRpR2V0QnlPZmZzZXREYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
NzM3ODEwRTE3OTlFQTJFMDA4MTc1MzMgLyogREZHTmF0dXJhbExvb3BzLmggaW4gSGVhZGVycyAq
LywKIAkJCQk4NkVDQTNFQTEzMkRFRjFDMDAyQjJBRDcgLyogREZHTm9kZS5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJMEZGQjkyMUIxNkQwMkYwMTAwNTVBNURCIC8qIERGR05vZGVBbGxvY2F0b3IuaCBp
biBIZWFkZXJzICovLAogCQkJCTcwQjc5MTkzMUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JG
cmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZBNTgxQkIxNTBFOTUzMDAwQjlBMkQ5IC8qIERG
R05vZGVGbGFncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzMDBCNzgxOEFCMDUxMTAwQTZENzJF
IC8qIERGR05vZGVPcmlnaW4uaCBpbiBIZWFkZXJzICovLApAQCAtODkxMiw3ICs4ODk3LDYgQEAK
IAkJCQlBN0Q5QTI5NzE3QTBCQzc0MDBFRTI2MTggLyogREZHTElDTVBoYXNlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTc5QzRCMTVEMUJBMjE1OEYwMEZENTkyRSAvKiBERkdMaXZlQ2F0Y2hWYXJp
YWJsZVByZXNlcnZhdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3RDg5Q0ZCMTdB
MEI4Q0MwMDc3M0FEOCAvKiBERkdMaXZlbmVzc0FuYWx5c2lzUGhhc2UuY3BwIGluIFNvdXJjZXMg
Ki8sCi0JCQkJMEZGMEYxOTkxNkI3MjlGNjAwNURGOTVCIC8qIERGR0xvbmdMaXZlZFN0YXRlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUE3NjdCNUI1MTdBMEI5NjUwMDYzRDk0MCAvKiBERkdMb29w
UHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3OUY4RkMxRTFC
OUZFRDBGMDBDQTY2QUIgLyogREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEY1ODc0RUQxOTRGRUIxMjAwQUFCMkMxIC8qIERGR01heUV4aXQuY3Bw
IGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNT
cGFyc2VDb2xsZWN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTcGFyc2VDb2xs
ZWN0aW9uLmgKaW5kZXggZDAyN2E0OGEzZWY0OTY0NjA3OTgyODFiN2E0NGIxYWE2NmE2NWQ0My4u
MGMxZjlhYzdlM2NjMzIxNGYyNjVjNjkwMWNlNDFkNjg1YzEyZGUwNiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3BhcnNlQ29sbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1NwYXJzZUNvbGxlY3Rpb24uaApAQCAtMjYsOCArMjYsNiBAQAog
I2lmbmRlZiBCM1NwYXJzZUNvbGxlY3Rpb25faAogI2RlZmluZSBCM1NwYXJzZUNvbGxlY3Rpb25f
aAogCi0jaWYgRU5BQkxFKEIzX0pJVCkKLQogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTE0MCw3ICsxMzgsNSBAQCBwcml2YXRlOgog
CiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKIAotI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCi0K
ICNlbmRpZiAvLyBCM1NwYXJzZUNvbGxlY3Rpb25faAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0FsbG9jYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBbGxvY2F0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjM4MGRmMDAx
YzVmMjJhNDg2ZDZhYzhkMzg5ZTdjMjM5ZDBiNTlhNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FsbG9j
YXRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsMjM5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBERkdBbGxvY2F0b3JfaAotI2Rl
ZmluZSBERkdBbGxvY2F0b3JfaAotCi0jaWYgRU5BQkxFKERGR19KSVQpCi0KLSNpbmNsdWRlICJE
RkdDb21tb24uaCIKLSNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+Ci0KLW5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgREZHIHsKLQotLy8gQ3VzdG9tIHBvb2wgYWxsb2NhdG9yIGZvciBleGFj
dGx5IG9uZSB0eXBlICh0eXBlIFQpLiBJdCBoYXMgZmFzdCAoTygxKSwgb25seSBhIGZldwotLy8g
aW5zdHJ1Y3Rpb25zKSBhbGxvY2F0b3IsIGFuZCBhIHNpbWlsYXJseSBmYXN0IGZyZWUoKS4gUmVj
eWNsaW5nIHdvcmtzIGlmIGVpdGhlciBvZgotLy8gdGhlIGZvbGxvd2luZyBpcyB0cnVlOgotLy8g
LSBUIGhhcyBhIHRyaXZpYWwgZGVzdHJ1Y3Rvci4gSW4gdGhhdCBjYXNlIHlvdSBkb24ndCBoYXZl
IHRvIGV2ZXIgY2FsbCBmcmVlKCkgb24KLS8vICAgYW55dGhpbmcuIFlvdSBjYW4ganVzdCBjYWxs
IGZyZWVBbGwoKSBpbnN0ZWFkLgotLy8gLSBZb3UgY2FsbCBmcmVlKCkgb24gYWxsIFQncyB0aGF0
IHlvdSBhbGxvY2F0ZWQsIGFuZCBuZXZlciB1c2UgZnJlZUFsbCgpLgotCi10ZW1wbGF0ZTx0eXBl
bmFtZSBUPgotY2xhc3MgQWxsb2NhdG9yIHsKLXB1YmxpYzoKLSAgICBBbGxvY2F0b3IoKTsKLSAg
ICB+QWxsb2NhdG9yKCk7Ci0gICAgCi0gICAgdm9pZCogYWxsb2NhdGUoKTsgLy8gVXNlIHBsYWNl
bWVudCBuZXcgdG8gYWxsb2NhdGUsIGFuZCBhdm9pZCB1c2luZyB0aGlzIG1ldGhvZC4KLSAgICB2
b2lkIGZyZWUoVCopOyAvLyBDYWxsIHRoaXMgbWV0aG9kIHRvIGRlbGV0ZTsgbmV2ZXIgdXNlICdk
ZWxldGUnIGRpcmVjdGx5LgotICAgIAotICAgIHZvaWQgZnJlZUFsbCgpOyAvLyBPbmx5IGNhbGwg
dGhpcyBpZiB5b3UndmUgZWl0aGVyIGZyZWVkIGV2ZXJ5dGhpbmcgb3IgaWYgVCBoYXMgYSB0cml2
aWFsIGRlc3RydWN0b3IuCi0gICAgdm9pZCByZXNldCgpOyAvLyBMaWtlIGZyZWVBbGwoKSwgYnV0
IGFsc28gcmV0dXJucyBhbGwgbWVtb3J5IHRvIHRoZSBPUy4KLSAgICAKLSAgICB1bnNpZ25lZCBp
bmRleE9mKGNvbnN0IFQqKTsKLSAgICAKLSAgICBzdGF0aWMgQWxsb2NhdG9yKiBhbGxvY2F0b3JP
Zihjb25zdCBUKik7Ci0gICAgCi1wcml2YXRlOgotICAgIHZvaWQqIGJ1bXBBbGxvY2F0ZSgpOwot
ICAgIHZvaWQqIGZyZWVMaXN0QWxsb2NhdGUoKTsKLSAgICB2b2lkKiBhbGxvY2F0ZVNsb3coKTsK
LQotICAgIHN0cnVjdCBSZWdpb24gewotICAgICAgICBzdGF0aWMgc2l6ZV90IHNpemUoKSB7IHJl
dHVybiA2NCAqIEtCOyB9Ci0gICAgICAgIHN0YXRpYyBzaXplX3QgaGVhZGVyU2l6ZSgpIHsgcmV0
dXJuIHN0ZDo6bWF4KHNpemVvZihSZWdpb24pLCBzaXplb2YoVCkpOyB9Ci0gICAgICAgIHN0YXRp
YyB1bnNpZ25lZCBudW1iZXJPZlRoaW5nc1BlclJlZ2lvbigpIHsgcmV0dXJuIChzaXplKCkgLSBo
ZWFkZXJTaXplKCkpIC8gc2l6ZW9mKFQpOyB9Ci0gICAgICAgIFQqIGRhdGEoKSB7IHJldHVybiBi
aXR3aXNlX2Nhc3Q8VCo+KGJpdHdpc2VfY2FzdDxjaGFyKj4odGhpcykgKyBoZWFkZXJTaXplKCkp
OyB9Ci0gICAgICAgIGJvb2wgaXNJblRoaXNSZWdpb24oY29uc3QgVCogcG9pbnRlcikgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHBvaW50ZXIgLSBkYXRhKCkpIDwgbnVtYmVyT2ZUaGlu
Z3NQZXJSZWdpb24oKTsgfQotICAgICAgICBzdGF0aWMgUmVnaW9uKiByZWdpb25Gb3IoY29uc3Qg
VCogcG9pbnRlcikgeyByZXR1cm4gYml0d2lzZV9jYXN0PFJlZ2lvbio+KGJpdHdpc2VfY2FzdDx1
aW50cHRyX3Q+KHBvaW50ZXIpICYgfihzaXplKCkgLSAxKSk7IH0KLSAgICAgICAgCi0gICAgICAg
IHZvaWQqIG1fYWxsb2NhdGlvbjsKLSAgICAgICAgQWxsb2NhdG9yKiBtX2FsbG9jYXRvcjsKLSAg
ICAgICAgUmVnaW9uKiBtX25leHQ7Ci0gICAgfTsKLSAgICAKLSAgICB2b2lkIGZyZWVSZWdpb25z
U3RhcnRpbmdBdChSZWdpb24qKTsKLSAgICB2b2lkIHN0YXJ0QnVtcGluZ0luKFJlZ2lvbiopOwot
ICAgIAotICAgIFJlZ2lvbiogbV9yZWdpb25IZWFkOwotICAgIHZvaWQqKiBtX2ZyZWVMaXN0SGVh
ZDsKLSAgICBUKiBtX2J1bXBFbmQ7Ci0gICAgdW5zaWduZWQgbV9idW1wUmVtYWluaW5nOwotfTsK
LQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWlubGluZSBBbGxvY2F0b3I8VD46OkFsbG9jYXRvcigp
Ci0gICAgOiBtX3JlZ2lvbkhlYWQoMCkKLSAgICAsIG1fZnJlZUxpc3RIZWFkKDApCi0gICAgLCBt
X2J1bXBSZW1haW5pbmcoMCkKLXsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWlubGluZSBB
bGxvY2F0b3I8VD46On5BbGxvY2F0b3IoKQotewotICAgIHJlc2V0KCk7Ci19Ci0KLXRlbXBsYXRl
PHR5cGVuYW1lIFQ+Ci1BTFdBWVNfSU5MSU5FIHZvaWQqIEFsbG9jYXRvcjxUPjo6YWxsb2NhdGUo
KQotewotICAgIHZvaWQqIHJlc3VsdCA9IGJ1bXBBbGxvY2F0ZSgpOwotICAgIGlmIChMSUtFTFko
ISFyZXN1bHQpKQotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIHJldHVybiBmcmVlTGlzdEFs
bG9jYXRlKCk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci12b2lkIEFsbG9jYXRvcjxUPjo6
ZnJlZShUKiBvYmplY3QpCi17Ci0gICAgb2JqZWN0LT5+VCgpOwotICAgIAotICAgIHZvaWQqKiBj
ZWxsID0gYml0d2lzZV9jYXN0PHZvaWQqKj4ob2JqZWN0KTsKLSAgICAqY2VsbCA9IG1fZnJlZUxp
c3RIZWFkOwotICAgIG1fZnJlZUxpc3RIZWFkID0gY2VsbDsKLX0KLQotdGVtcGxhdGU8dHlwZW5h
bWUgVD4KLXZvaWQgQWxsb2NhdG9yPFQ+OjpmcmVlQWxsKCkKLXsKLSAgICBpZiAoIW1fcmVnaW9u
SGVhZCkgewotICAgICAgICBBU1NFUlQoIW1fYnVtcFJlbWFpbmluZyk7Ci0gICAgICAgIEFTU0VS
VCghbV9mcmVlTGlzdEhlYWQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIC8v
IFNpbmNlIHRoZSBjYWxsZXIgaXMgb3B0aW5nIG91dCBvZiBjYWxsaW5nIHRoZSBkZXN0cnVjdG9y
IGZvciBhbnkgYWxsb2NhdGVkIHRoaW5nLAotICAgIC8vIHdlIGhhdmUgdHdvIGNob2ljZXMsIHBs
dXMgYSBjb250aW51dW0gYmV0d2Vlbjogd2UgY2FuIGVpdGhlciBqdXN0IGRlbGV0ZSBhbGwgcmVn
aW9ucwotICAgIC8vIChpLmUuIGNhbGwgcmVzZXQoKSksIG9yIHdlIGNhbiBtYWtlIGFsbCByZWdp
b25zIGF2YWlsYWJsZSBmb3IgcmV1c2UuIFdlIGRvIHNvbWV0aGluZwotICAgIC8vIHRoYXQgb3B0
aW1pemVzIGZvciAoYSkgc3BlZWQgb2YgZnJlZUFsbCgpLCAoYikgdGhlIGFzc3VtcHRpb24gdGhh
dCBpZiB0aGUgdXNlciBjYWxscwotICAgIC8vIGZyZWVBbGwoKSB0aGVuIHRoZXkgd2lsbCBwcm9i
YWJseSBiZSBjYWxsaW5nIGFsbG9jYXRlKCkgaW4gdGhlIG5lYXIgZnV0dXJlLiBOYW1lbHksCi0g
ICAgLy8gd2UgZnJlZSBhbGwgYnV0IG9uZSByZWdpb24sIGFuZCBtYWtlIHRoZSByZW1haW5pbmcg
cmVnaW9uIGEgYnVtcCBhbGxvY2F0aW9uIHJlZ2lvbi4KLSAgICAKLSAgICBmcmVlUmVnaW9uc1N0
YXJ0aW5nQXQobV9yZWdpb25IZWFkLT5tX25leHQpOwotICAgIAotICAgIG1fcmVnaW9uSGVhZC0+
bV9uZXh0ID0gMDsKLSAgICBtX2ZyZWVMaXN0SGVhZCA9IDA7Ci0gICAgc3RhcnRCdW1waW5nSW4o
bV9yZWdpb25IZWFkKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXZvaWQgQWxsb2NhdG9y
PFQ+OjpyZXNldCgpCi17Ci0gICAgZnJlZVJlZ2lvbnNTdGFydGluZ0F0KG1fcmVnaW9uSGVhZCk7
Ci0gICAgCi0gICAgbV9yZWdpb25IZWFkID0gMDsKLSAgICBtX2ZyZWVMaXN0SGVhZCA9IDA7Ci0g
ICAgbV9idW1wUmVtYWluaW5nID0gMDsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXVuc2ln
bmVkIEFsbG9jYXRvcjxUPjo6aW5kZXhPZihjb25zdCBUKiBvYmplY3QpCi17Ci0gICAgdW5zaWdu
ZWQgbnVtUmVnaW9ucyA9IDA7Ci0gICAgZm9yIChSZWdpb24qIHJlZ2lvbiA9IG1fcmVnaW9uSGVh
ZDsgcmVnaW9uOyByZWdpb24gPSByZWdpb24tPm1fbmV4dCkKLSAgICAgICAgbnVtUmVnaW9ucysr
OwotICAgIHVuc2lnbmVkIHJlZ2lvbkluZGV4ID0gMDsKLSAgICBmb3IgKFJlZ2lvbiogcmVnaW9u
ID0gbV9yZWdpb25IZWFkOyByZWdpb247IHJlZ2lvbiA9IHJlZ2lvbi0+bV9uZXh0KSB7Ci0gICAg
ICAgIGlmIChyZWdpb24tPmlzSW5UaGlzUmVnaW9uKG9iamVjdCkpCi0gICAgICAgICAgICByZXR1
cm4gKG51bVJlZ2lvbnMgLSAxIC0gcmVnaW9uSW5kZXgpICogUmVnaW9uOjpudW1iZXJPZlRoaW5n
c1BlclJlZ2lvbigpICsgKG9iamVjdCAtIHJlZ2lvbi0+ZGF0YSgpKTsKLSAgICAgICAgcmVnaW9u
SW5kZXgrKzsKLSAgICB9Ci0gICAgQ1JBU0goKTsKLSAgICByZXR1cm4gMDsKLX0KLQotdGVtcGxh
dGU8dHlwZW5hbWUgVD4KLUFsbG9jYXRvcjxUPiogQWxsb2NhdG9yPFQ+OjphbGxvY2F0b3JPZihj
b25zdCBUKiBvYmplY3QpCi17Ci0gICAgcmV0dXJuIFJlZ2lvbjo6cmVnaW9uRm9yKG9iamVjdCkt
Pm1fYWxsb2NhdG9yOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotQUxXQVlTX0lOTElORSB2
b2lkKiBBbGxvY2F0b3I8VD46OmJ1bXBBbGxvY2F0ZSgpCi17Ci0gICAgaWYgKHVuc2lnbmVkIHJl
bWFpbmluZyA9IG1fYnVtcFJlbWFpbmluZykgewotICAgICAgICByZW1haW5pbmctLTsKLSAgICAg
ICAgbV9idW1wUmVtYWluaW5nID0gcmVtYWluaW5nOwotICAgICAgICByZXR1cm4gbV9idW1wRW5k
IC0gKHJlbWFpbmluZyArIDEpOwotICAgIH0KLSAgICByZXR1cm4gMDsKLX0KLQotdGVtcGxhdGU8
dHlwZW5hbWUgVD4KLXZvaWQqIEFsbG9jYXRvcjxUPjo6ZnJlZUxpc3RBbGxvY2F0ZSgpCi17Ci0g
ICAgdm9pZCoqIHJlc3VsdCA9IG1fZnJlZUxpc3RIZWFkOwotICAgIGlmIChVTkxJS0VMWSghcmVz
dWx0KSkKLSAgICAgICAgcmV0dXJuIGFsbG9jYXRlU2xvdygpOwotICAgIG1fZnJlZUxpc3RIZWFk
ID0gYml0d2lzZV9jYXN0PHZvaWQqKj4oKnJlc3VsdCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXZvaWQqIEFsbG9jYXRvcjxUPjo6YWxsb2NhdGVTbG93
KCkKLXsKLSAgICBBU1NFUlQoIW1fZnJlZUxpc3RIZWFkKTsKLSAgICBBU1NFUlQoIW1fYnVtcFJl
bWFpbmluZyk7Ci0gICAgCi0gICAgaWYgKGxvZ0NvbXBpbGF0aW9uQ2hhbmdlcygpKQotICAgICAg
ICBkYXRhTG9nKCJBbGxvY2F0aW5nIGFub3RoZXIgYWxsb2NhdG9yIHJlZ2lvbi5cbiIpOwotCi0g
ICAgdm9pZCogYWxsb2NhdGlvbiA9IGZhc3RBbGlnbmVkTWFsbG9jKFJlZ2lvbjo6c2l6ZSgpLCBS
ZWdpb246OnNpemUoKSk7Ci0gICAgUmVnaW9uKiByZWdpb24gPSBzdGF0aWNfY2FzdDxSZWdpb24q
PihhbGxvY2F0aW9uKTsKLSAgICByZWdpb24tPm1fYWxsb2NhdGlvbiA9IGFsbG9jYXRpb247Ci0g
ICAgcmVnaW9uLT5tX2FsbG9jYXRvciA9IHRoaXM7Ci0gICAgc3RhcnRCdW1waW5nSW4ocmVnaW9u
KTsKLSAgICByZWdpb24tPm1fbmV4dCA9IG1fcmVnaW9uSGVhZDsKLSAgICBtX3JlZ2lvbkhlYWQg
PSByZWdpb247Ci0gICAgCi0gICAgdm9pZCogcmVzdWx0ID0gYnVtcEFsbG9jYXRlKCk7Ci0gICAg
QVNTRVJUKHJlc3VsdCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotdGVtcGxhdGU8dHlwZW5h
bWUgVD4KLXZvaWQgQWxsb2NhdG9yPFQ+OjpmcmVlUmVnaW9uc1N0YXJ0aW5nQXQodHlwZW5hbWUg
QWxsb2NhdG9yPFQ+OjpSZWdpb24qIHJlZ2lvbikKLXsKLSAgICB3aGlsZSAocmVnaW9uKSB7Ci0g
ICAgICAgIFJlZ2lvbiogbmV4dFJlZ2lvbiA9IHJlZ2lvbi0+bV9uZXh0OwotICAgICAgICBmYXN0
QWxpZ25lZEZyZWUocmVnaW9uLT5tX2FsbG9jYXRpb24pOwotICAgICAgICByZWdpb24gPSBuZXh0
UmVnaW9uOwotICAgIH0KLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXZvaWQgQWxsb2NhdG9y
PFQ+OjpzdGFydEJ1bXBpbmdJbih0eXBlbmFtZSBBbGxvY2F0b3I8VD46OlJlZ2lvbiogcmVnaW9u
KQotewotICAgIG1fYnVtcEVuZCA9IHJlZ2lvbi0+ZGF0YSgpICsgUmVnaW9uOjpudW1iZXJPZlRo
aW5nc1BlclJlZ2lvbigpOwotICAgIG1fYnVtcFJlbWFpbmluZyA9IFJlZ2lvbjo6bnVtYmVyT2ZU
aGluZ3NQZXJSZWdpb24oKTsKLX0KLQotfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwotCi0jZW5k
aWYgLy8gRU5BQkxFKERGR19KSVQpCi0KLSNlbmRpZiAvLyBERkdBbGxvY2F0b3JfaAotCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDE4
YjRjMzJkYTA5MmU1NzM5ZjM3ODk3MjVlZWNmMWI0NDQ0ZGM0NWEuLjUzNzdlM2YyYzNlNTMwZDI4
MWIxNjUwYThhZGY4NWQ2N2Y5OTIwMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC03MTEsNDYgKzcxMSw0NiBAQCBwcml2YXRlOgog
ICAgIE5vZGUqIGFkZFRvR3JhcGgoTm9kZVR5cGUgb3AsIE5vZGUqIGNoaWxkMSA9IDAsIE5vZGUq
IGNoaWxkMiA9IDAsIE5vZGUqIGNoaWxkMyA9IDApCiAgICAgewogICAgICAgICBOb2RlKiByZXN1
bHQgPSBtX2dyYXBoLmFkZE5vZGUoCi0gICAgICAgICAgICBTcGVjTm9uZSwgb3AsIGN1cnJlbnRO
b2RlT3JpZ2luKCksIEVkZ2UoY2hpbGQxKSwgRWRnZShjaGlsZDIpLAorICAgICAgICAgICAgb3As
IGN1cnJlbnROb2RlT3JpZ2luKCksIEVkZ2UoY2hpbGQxKSwgRWRnZShjaGlsZDIpLAogICAgICAg
ICAgICAgRWRnZShjaGlsZDMpKTsKICAgICAgICAgcmV0dXJuIGFkZFRvR3JhcGgocmVzdWx0KTsK
ICAgICB9CiAgICAgTm9kZSogYWRkVG9HcmFwaChOb2RlVHlwZSBvcCwgRWRnZSBjaGlsZDEsIEVk
Z2UgY2hpbGQyID0gRWRnZSgpLCBFZGdlIGNoaWxkMyA9IEVkZ2UoKSkKICAgICB7CiAgICAgICAg
IE5vZGUqIHJlc3VsdCA9IG1fZ3JhcGguYWRkTm9kZSgKLSAgICAgICAgICAgIFNwZWNOb25lLCBv
cCwgY3VycmVudE5vZGVPcmlnaW4oKSwgY2hpbGQxLCBjaGlsZDIsIGNoaWxkMyk7CisgICAgICAg
ICAgICBvcCwgY3VycmVudE5vZGVPcmlnaW4oKSwgY2hpbGQxLCBjaGlsZDIsIGNoaWxkMyk7CiAg
ICAgICAgIHJldHVybiBhZGRUb0dyYXBoKHJlc3VsdCk7CiAgICAgfQogICAgIE5vZGUqIGFkZFRv
R3JhcGgoTm9kZVR5cGUgb3AsIE9wSW5mbyBpbmZvLCBOb2RlKiBjaGlsZDEgPSAwLCBOb2RlKiBj
aGlsZDIgPSAwLCBOb2RlKiBjaGlsZDMgPSAwKQogICAgIHsKICAgICAgICAgTm9kZSogcmVzdWx0
ID0gbV9ncmFwaC5hZGROb2RlKAotICAgICAgICAgICAgU3BlY05vbmUsIG9wLCBjdXJyZW50Tm9k
ZU9yaWdpbigpLCBpbmZvLCBFZGdlKGNoaWxkMSksIEVkZ2UoY2hpbGQyKSwKKyAgICAgICAgICAg
IG9wLCBjdXJyZW50Tm9kZU9yaWdpbigpLCBpbmZvLCBFZGdlKGNoaWxkMSksIEVkZ2UoY2hpbGQy
KSwKICAgICAgICAgICAgIEVkZ2UoY2hpbGQzKSk7CiAgICAgICAgIHJldHVybiBhZGRUb0dyYXBo
KHJlc3VsdCk7CiAgICAgfQogICAgIE5vZGUqIGFkZFRvR3JhcGgoTm9kZVR5cGUgb3AsIE9wSW5m
byBpbmZvLCBFZGdlIGNoaWxkMSwgRWRnZSBjaGlsZDIgPSBFZGdlKCksIEVkZ2UgY2hpbGQzID0g
RWRnZSgpKQogICAgIHsKLSAgICAgICAgTm9kZSogcmVzdWx0ID0gbV9ncmFwaC5hZGROb2RlKFNw
ZWNOb25lLCBvcCwgY3VycmVudE5vZGVPcmlnaW4oKSwgaW5mbywgY2hpbGQxLCBjaGlsZDIsIGNo
aWxkMyk7CisgICAgICAgIE5vZGUqIHJlc3VsdCA9IG1fZ3JhcGguYWRkTm9kZShvcCwgY3VycmVu
dE5vZGVPcmlnaW4oKSwgaW5mbywgY2hpbGQxLCBjaGlsZDIsIGNoaWxkMyk7CiAgICAgICAgIHJl
dHVybiBhZGRUb0dyYXBoKHJlc3VsdCk7CiAgICAgfQogICAgIE5vZGUqIGFkZFRvR3JhcGgoTm9k
ZVR5cGUgb3AsIE9wSW5mbyBpbmZvMSwgT3BJbmZvIGluZm8yLCBOb2RlKiBjaGlsZDEgPSAwLCBO
b2RlKiBjaGlsZDIgPSAwLCBOb2RlKiBjaGlsZDMgPSAwKQogICAgIHsKICAgICAgICAgTm9kZSog
cmVzdWx0ID0gbV9ncmFwaC5hZGROb2RlKAotICAgICAgICAgICAgU3BlY05vbmUsIG9wLCBjdXJy
ZW50Tm9kZU9yaWdpbigpLCBpbmZvMSwgaW5mbzIsCisgICAgICAgICAgICBvcCwgY3VycmVudE5v
ZGVPcmlnaW4oKSwgaW5mbzEsIGluZm8yLAogICAgICAgICAgICAgRWRnZShjaGlsZDEpLCBFZGdl
KGNoaWxkMiksIEVkZ2UoY2hpbGQzKSk7CiAgICAgICAgIHJldHVybiBhZGRUb0dyYXBoKHJlc3Vs
dCk7CiAgICAgfQogICAgIE5vZGUqIGFkZFRvR3JhcGgoTm9kZVR5cGUgb3AsIE9wSW5mbyBpbmZv
MSwgT3BJbmZvIGluZm8yLCBFZGdlIGNoaWxkMSwgRWRnZSBjaGlsZDIgPSBFZGdlKCksIEVkZ2Ug
Y2hpbGQzID0gRWRnZSgpKQogICAgIHsKICAgICAgICAgTm9kZSogcmVzdWx0ID0gbV9ncmFwaC5h
ZGROb2RlKAotICAgICAgICAgICAgU3BlY05vbmUsIG9wLCBjdXJyZW50Tm9kZU9yaWdpbigpLCBp
bmZvMSwgaW5mbzIsIGNoaWxkMSwgY2hpbGQyLCBjaGlsZDMpOworICAgICAgICAgICAgb3AsIGN1
cnJlbnROb2RlT3JpZ2luKCksIGluZm8xLCBpbmZvMiwgY2hpbGQxLCBjaGlsZDIsIGNoaWxkMyk7
CiAgICAgICAgIHJldHVybiBhZGRUb0dyYXBoKHJlc3VsdCk7CiAgICAgfQogICAgIAogICAgIE5v
ZGUqIGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJnVGFnLCBOb2RlVHlwZSBvcCwgT3BJbmZvIGluZm8x
LCBPcEluZm8gaW5mbzIpCiAgICAgewogICAgICAgICBOb2RlKiByZXN1bHQgPSBtX2dyYXBoLmFk
ZE5vZGUoCi0gICAgICAgICAgICBTcGVjTm9uZSwgTm9kZTo6VmFyQXJnLCBvcCwgY3VycmVudE5v
ZGVPcmlnaW4oKSwgaW5mbzEsIGluZm8yLAorICAgICAgICAgICAgTm9kZTo6VmFyQXJnLCBvcCwg
Y3VycmVudE5vZGVPcmlnaW4oKSwgaW5mbzEsIGluZm8yLAogICAgICAgICAgICAgbV9ncmFwaC5t
X3ZhckFyZ0NoaWxkcmVuLnNpemUoKSAtIG1fbnVtUGFzc2VkVmFyQXJncywgbV9udW1QYXNzZWRW
YXJBcmdzKTsKICAgICAgICAgYWRkVG9HcmFwaChyZXN1bHQpOwogICAgICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwCmlu
ZGV4IDYzMTAxZmY3MTA5MWIyZjBlYWIzZTA5MGEzMmY2ODZhNTM0Y2U4MzIuLjY3YjM1NzQzODJh
YWQ3MDIxZjNjYTc2ODVmYTNhNDljZGY0ZTNmZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcApAQCAtOTAsNyArOTAsNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBj
YXNlIFBoYW50b206CiAgICAgICAgICAgICAgICAgICAgIGlmICghbm9kZS0+Y2hpbGQxKCkpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9hbGxvY2F0b3IuZnJlZShub2RlKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguZGVsZXRlTm9kZShub2RlKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+Y2hpbGQxKCktPm9wKCkpIHsKQEAgLTExMiw3
ICsxMTIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgYmxvY2stPnJlc2l6ZSh0b0luZGV4KTsK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBwaGlJbmRleCA9IGJsb2Nr
LT5waGlzLnNpemUoKTsgcGhpSW5kZXgtLTspCi0gICAgICAgICAgICAgICAgbV9ncmFwaC5tX2Fs
bG9jYXRvci5mcmVlKGJsb2NrLT5waGlzW3BoaUluZGV4XSk7CisgICAgICAgICAgICAgICAgbV9n
cmFwaC5kZWxldGVOb2RlKGJsb2NrLT5waGlzW3BoaUluZGV4XSk7CiAgICAgICAgICAgICBibG9j
ay0+cGhpcy5yZXNpemUoMCk7CiAgICAgICAgIH0KICAgICB9CkBAIC0xMzIsNyArMTMyLDcgQEAg
cHJpdmF0ZToKICAgICAKICAgICBBTFdBWVNfSU5MSU5FIE5vZGUqIGFkZFBoaVNpbGVudGx5KEJh
c2ljQmxvY2sqIGJsb2NrLCBjb25zdCBOb2RlT3JpZ2luJiBvcmlnaW4sIFZhcmlhYmxlQWNjZXNz
RGF0YSogdmFyaWFibGUpCiAgICAgewotICAgICAgICBOb2RlKiByZXN1bHQgPSBtX2dyYXBoLmFk
ZE5vZGUoU3BlY05vbmUsIFBoaSwgb3JpZ2luLCBPcEluZm8odmFyaWFibGUpKTsKKyAgICAgICAg
Tm9kZSogcmVzdWx0ID0gbV9ncmFwaC5hZGROb2RlKFBoaSwgb3JpZ2luLCBPcEluZm8odmFyaWFi
bGUpKTsKICAgICAgICAgYmxvY2stPnBoaXMuYXBwZW5kKHJlc3VsdCk7CiAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDbGVhblVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbGVhblVw
UGhhc2UuY3BwCmluZGV4IGRmMmVmNTJhMmY4YzMwNThmYzE2NWFjN2RiMjhjY2E2ODk1ZDI3N2Qu
LmIwYmI4Y2M0NzAwZDVjZWIyZmY2NjNjMGU1ZmI1YWFiOWUxMWM2NWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xlYW5VcFBoYXNlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NsZWFuVXBQaGFzZS5jcHAKQEAgLTY5LDcgKzY5LDcgQEAg
cHVibGljOgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
ICAgICBpZiAoa2lsbCkKLSAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX2FsbG9jYXRvci5m
cmVlKG5vZGUpOworICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmRlbGV0ZU5vZGUobm9kZSk7
CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBibG9jay0+YXQodGFy
Z2V0SW5kZXgrKykgPSBub2RlOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAppbmRleCBmNWZhY2U5
ZThiMjhkYWJmMTg0M2UxMDNiMmExN2IzOWY1M2YxMGVjLi40OTVhMDY0OTUzODIzN2FmYTM4M2Iy
ZjcxZTJlODA3ZWI1MTYzYjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcApAQCAtODMsNyArODMsNyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICAgICAgICAgIGlmICghbV9zdGF0ZS5pc1ZhbGlkKCkpIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgIE5vZGVPcmlnaW4gb3JpZ2luID0gYmxvY2stPmF0KG5vZGVJbmRleCkt
Pm9yaWdpbjsKICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQga2lsbEluZGV4
ID0gbm9kZUluZGV4OyBraWxsSW5kZXggPCBibG9jay0+c2l6ZSgpOyArK2tpbGxJbmRleCkKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fYWxsb2NhdG9yLmZyZWUoYmxvY2st
PmF0KGtpbGxJbmRleCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguZGVs
ZXRlTm9kZShibG9jay0+YXQoa2lsbEluZGV4KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBi
bG9jay0+cmVzaXplKG5vZGVJbmRleCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBibG9jay0+
YXBwZW5kTm9kZShtX2dyYXBoLCBTcGVjTm9uZSwgVW5yZWFjaGFibGUsIG9yaWdpbik7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBkaWRDbGlwQmxvY2sgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEhvaXN0aW5nUGhhc2UuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEhvaXN0aW5nUGhhc2UuY3BwCmluZGV4
IGQyOGMwMWRhNzY4MDBlY2U2M2U2ODQ5N2I0MjRkZjYxZmJjZDc1MjcuLjdiNDkxYzI5NmRlNWYx
NDljM2RmNTQwNWMxODA5M2ZiZjBmMmQ3NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ29uc3RhbnRIb2lzdGluZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NvbnN0YW50SG9pc3RpbmdQaGFzZS5jcHAKQEAgLTEyOSw3ICsxMjks
NyBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgICAgICAvLyBBbmQgZmluYWxseSBmcmVlIHRoZSBj
b25zdGFudHMgdGhhdCB3ZSByZW1vdmVkLgogICAgICAgICBmb3IgKE5vZGUqIG5vZGUgOiB0b0Zy
ZWUpCi0gICAgICAgICAgICBtX2dyYXBoLm1fYWxsb2NhdG9yLmZyZWUobm9kZSk7CisgICAgICAg
ICAgICBtX2dyYXBoLmRlbGV0ZU5vZGUobm9kZSk7CiAgICAgICAgIAogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RD
RVBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRENFUGhhc2UuY3BwCmlu
ZGV4IDZhNmFmNzU3MjQ2OWNkZGVlNDk2MzIwNDU1ODdmYzdlNTYyMmIxZDAuLmE3MGE4Njk4ZDQ5
ZTMxYzllNjMyYTlmNjc2MTY3MDk0OWM2OWY2MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRENFUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRENFUGhhc2UuY3BwCkBAIC05Myw3ICs5Myw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIHBoaUluZGV4ID0gMDsgcGhpSW5kZXggPCBibG9jay0+cGhpcy5zaXpl
KCk7ICsrcGhpSW5kZXgpIHsKICAgICAgICAgICAgICAgICBOb2RlKiBwaGkgPSBibG9jay0+cGhp
c1twaGlJbmRleF07CiAgICAgICAgICAgICAgICAgaWYgKCFwaGktPnNob3VsZEdlbmVyYXRlKCkp
IHsKLSAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX2FsbG9jYXRvci5mcmVlKHBoaSk7Cisg
ICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguZGVsZXRlTm9kZShwaGkpOwogICAgICAgICAgICAg
ICAgICAgICBibG9jay0+cGhpc1twaGlJbmRleC0tXSA9IGJsb2NrLT5waGlzLmxhc3QoKTsKICAg
ICAgICAgICAgICAgICAgICAgYmxvY2stPnBoaXMucmVtb3ZlTGFzdCgpOwogICAgICAgICAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmNwcAppbmRleCBmZjMyNTdh
OWIzZjQ0M2JlNzAxMDgxZDc3Nzg0MzQ4NTRiMWNmNTdlLi5lMTk5NzczNTQ0NDE2NGZjYjYwNWIy
YWQ3ZTUzNzBjN2Q1Yjc1MDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0RyaXZlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIu
Y3BwCkBAIC0xMDgsNyArMTA4LDcgQEAgc3RhdGljIENvbXBpbGF0aW9uUmVzdWx0IGNvbXBpbGVJ
bXBsKAogICAgICAgICByZXR1cm4gQ29tcGlsYXRpb25EZWZlcnJlZDsKICAgICB9CiAgICAgCi0g
ICAgcGxhbi0+Y29tcGlsZUluVGhyZWFkKCp2bS5kZmdTdGF0ZSwgMCk7CisgICAgcGxhbi0+Y29t
cGlsZUluVGhyZWFkKG51bGxwdHIpOwogICAgIHJldHVybiBwbGFuLT5maW5hbGl6ZVdpdGhvdXRO
b3RpZnlpbmdDYWxsYmFjaygpOwogfQogI2Vsc2UgLy8gRU5BQkxFKERGR19KSVQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCmluZGV4IDc0NTU3YWI2N2Q1ZDllY2FjZDQ2YTAx
ZjA3MGU2MzhiZDA5MGU1NjEuLmVjMWE1ODZjNWMyNTRmZjgzZDQzOTMyNmQwN2JmMGIxNzRlZWJj
ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCkBAIC02NiwxMiArNjYs
MTEgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGRmZ09wTmFtZXNbXSA9IHsKICN1bmRlZiBTVFJJTkdJ
WkVfREZHX09QX0VOVU0KIH07CiAKLUdyYXBoOjpHcmFwaChWTSYgdm0sIFBsYW4mIHBsYW4sIExv
bmdMaXZlZFN0YXRlJiBsb25nTGl2ZWRTdGF0ZSkKK0dyYXBoOjpHcmFwaChWTSYgdm0sIFBsYW4m
IHBsYW4pCiAgICAgOiBtX3ZtKHZtKQogICAgICwgbV9wbGFuKHBsYW4pCiAgICAgLCBtX2NvZGVC
bG9jayhtX3BsYW4uY29kZUJsb2NrKQogICAgICwgbV9wcm9maWxlZEJsb2NrKG1fY29kZUJsb2Nr
LT5hbHRlcm5hdGl2ZSgpKQotICAgICwgbV9hbGxvY2F0b3IobG9uZ0xpdmVkU3RhdGUubV9hbGxv
Y2F0b3IpCiAgICAgLCBtX2NmZyhzdGQ6Om1ha2VfdW5pcXVlPENGRz4oKnRoaXMpKQogICAgICwg
bV9uZXh0TWFjaGluZUxvY2FsKDApCiAgICAgLCBtX2ZpeHBvaW50U3RhdGUoQmVmb3JlRml4cG9p
bnQpCkBAIC04NywxNyArODYsNiBAQCBHcmFwaDo6R3JhcGgoVk0mIHZtLCBQbGFuJiBwbGFuLCBM
b25nTGl2ZWRTdGF0ZSYgbG9uZ0xpdmVkU3RhdGUpCiAKIEdyYXBoOjp+R3JhcGgoKQogewotICAg
IGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gbnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgtLTsp
IHsKLSAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSB0aGlzLT5ibG9jayhibG9ja0luZGV4KTsK
LSAgICAgICAgaWYgKCFibG9jaykKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGZv
ciAodW5zaWduZWQgcGhpSW5kZXggPSBibG9jay0+cGhpcy5zaXplKCk7IHBoaUluZGV4LS07KQot
ICAgICAgICAgICAgbV9hbGxvY2F0b3IuZnJlZShibG9jay0+cGhpc1twaGlJbmRleF0pOwotICAg
ICAgICBmb3IgKHVuc2lnbmVkIG5vZGVJbmRleCA9IGJsb2NrLT5zaXplKCk7IG5vZGVJbmRleC0t
OykKLSAgICAgICAgICAgIG1fYWxsb2NhdG9yLmZyZWUoYmxvY2stPmF0KG5vZGVJbmRleCkpOwot
ICAgIH0KLSAgICBtX2FsbG9jYXRvci5mcmVlQWxsKCk7CiB9CiAKIGNvbnN0IGNoYXIgKkdyYXBo
OjpvcE5hbWUoTm9kZVR5cGUgb3ApCkBAIC01NzksNiArNTY3LDExIEBAIHZvaWQgR3JhcGg6OmR1
bXAoUHJpbnRTdHJlYW0mIG91dCwgRHVtcENvbnRleHQqIGNvbnRleHQpCiAgICAgfQogfQogCit2
b2lkIEdyYXBoOjpkZWxldGVOb2RlKE5vZGUqIG5vZGUpCit7CisgICAgbV9ub2Rlcy5yZW1vdmUo
bm9kZSk7Cit9CisKIHZvaWQgR3JhcGg6OmRldGhyZWFkKCkKIHsKICAgICBpZiAobV9mb3JtID09
IExvYWRTdG9yZSB8fCBtX2Zvcm0gPT0gU1NBKQpAQCAtNzQ1LDkgKzczOCw5IEBAIHZvaWQgR3Jh
cGg6OmNvbXB1dGVSZWZDb3VudHMoKQogdm9pZCBHcmFwaDo6a2lsbEJsb2NrQW5kSXRzQ29udGVu
dHMoQmFzaWNCbG9jayogYmxvY2spCiB7CiAgICAgZm9yICh1bnNpZ25lZCBwaGlJbmRleCA9IGJs
b2NrLT5waGlzLnNpemUoKTsgcGhpSW5kZXgtLTspCi0gICAgICAgIG1fYWxsb2NhdG9yLmZyZWUo
YmxvY2stPnBoaXNbcGhpSW5kZXhdKTsKLSAgICBmb3IgKHVuc2lnbmVkIG5vZGVJbmRleCA9IGJs
b2NrLT5zaXplKCk7IG5vZGVJbmRleC0tOykKLSAgICAgICAgbV9hbGxvY2F0b3IuZnJlZShibG9j
ay0+YXQobm9kZUluZGV4KSk7CisgICAgICAgIGRlbGV0ZU5vZGUoYmxvY2stPnBoaXNbcGhpSW5k
ZXhdKTsKKyAgICBmb3IgKE5vZGUqIG5vZGUgOiAqYmxvY2spCisgICAgICAgIGRlbGV0ZU5vZGUo
bm9kZSk7CiAgICAgCiAgICAga2lsbEJsb2NrKGJsb2NrKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHR3JhcGguaAppbmRleCA3Yjg5YjdhOTRmYjJmNzE4YWJiOTIxYjllMTI4MzI5YmY1NDVh
YzhhLi4yYThhM2I2MGFiZDVhZjY0MmI2NGU4MWVhZjBiNTMyZjRjOTJlZWNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCkBAIC0yOSwxNCArMjksMTMgQEAKICNpZiBFTkFCTEUo
REZHX0pJVCkKIAogI2luY2x1ZGUgIkFzc2VtYmx5SGVscGVycy5oIgorI2luY2x1ZGUgIkIzU3Bh
cnNlQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGlu
ZXMuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJERkdBcmd1bWVudFBvc2l0
aW9uLmgiCiAjaW5jbHVkZSAiREZHQmFzaWNCbG9jay5oIgogI2luY2x1ZGUgIkRGR0Zyb3plblZh
bHVlLmgiCi0jaW5jbHVkZSAiREZHTG9uZ0xpdmVkU3RhdGUuaCIKICNpbmNsdWRlICJERkdOb2Rl
LmgiCi0jaW5jbHVkZSAiREZHTm9kZUFsbG9jYXRvci5oIgogI2luY2x1ZGUgIkRGR1BsYW4uaCIK
ICNpbmNsdWRlICJERkdQcm9wZXJ0eVR5cGVLZXkuaCIKICNpbmNsdWRlICJERkdTY2FubmFibGUu
aCIKQEAgLTEyNCw3ICsxMjMsNyBAQCBlbnVtIEFkZFNwZWN1bGF0aW9uTW9kZSB7CiAvLyBOb2Rl
cyB0aGF0IGFyZSAnZGVhZCcgcmVtYWluIGluIHRoZSB2ZWN0b3Igd2l0aCByZWZDb3VudCAwLgog
Y2xhc3MgR3JhcGggOiBwdWJsaWMgdmlydHVhbCBTY2FubmFibGUgewogcHVibGljOgotICAgIEdy
YXBoKFZNJiwgUGxhbiYsIExvbmdMaXZlZFN0YXRlJik7CisgICAgR3JhcGgoVk0mLCBQbGFuJik7
CiAgICAgfkdyYXBoKCk7CiAgICAgCiAgICAgdm9pZCBjaGFuZ2VDaGlsZChFZGdlJiBlZGdlLCBO
b2RlKiBuZXdOb2RlKQpAQCAtMTgyLDEyICsxODEsMjAgQEAgcHVibGljOgogICAgIH0KICAgICAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBQYXJhbXM+CisgICAgTm9kZSogYWRkTm9kZShQYXJh
bXMuLi4gcGFyYW1zKQorICAgIHsKKyAgICAgICAgTm9kZSogbm9kZSA9IG5ldyBOb2RlKHBhcmFt
cy4uLik7CisgICAgICAgIG1fbm9kZXMuYWRkKHN0ZDo6dW5pcXVlX3B0cjxOb2RlPihub2RlKSk7
CisgICAgICAgIHJldHVybiBub2RlOworICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBQ
YXJhbXM+CiAgICAgTm9kZSogYWRkTm9kZShTcGVjdWxhdGVkVHlwZSB0eXBlLCBQYXJhbXMuLi4g
cGFyYW1zKQogICAgIHsKLSAgICAgICAgTm9kZSogbm9kZSA9IG5ldyAobV9hbGxvY2F0b3IpIE5v
ZGUocGFyYW1zLi4uKTsKKyAgICAgICAgTm9kZSogbm9kZSA9IGFkZE5vZGUocGFyYW1zLi4uKTsK
ICAgICAgICAgbm9kZS0+cHJlZGljdCh0eXBlKTsKICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAg
fQorICAgIHZvaWQgZGVsZXRlTm9kZShOb2RlKik7CiAKICAgICB2b2lkIGRldGhyZWFkKCk7CiAg
ICAgCkBAIC04MjEsOCArODI4LDYgQEAgcHVibGljOgogICAgIFBsYW4mIG1fcGxhbjsKICAgICBD
b2RlQmxvY2sqIG1fY29kZUJsb2NrOwogICAgIENvZGVCbG9jayogbV9wcm9maWxlZEJsb2NrOwot
ICAgIAotICAgIE5vZGVBbGxvY2F0b3ImIG1fYWxsb2NhdG9yOwogCiAgICAgVmVjdG9yPCBSZWZQ
dHI8QmFzaWNCbG9jaz4gLCA4PiBtX2Jsb2NrczsKICAgICBWZWN0b3I8RWRnZSwgMTY+IG1fdmFy
QXJnQ2hpbGRyZW47CkBAIC05MTEsNiArOTE2LDcgQEAgcHVibGljOgogICAgIGJvb2wgbV9oYXNE
ZWJ1Z2dlckVuYWJsZWQ7CiAgICAgYm9vbCBtX2hhc0V4Y2VwdGlvbkhhbmRsZXJzIHsgZmFsc2Ug
fTsKIHByaXZhdGU6CisgICAgdm9pZCBhZG9wdE5vZGVPdXRPZkxpbmUoTm9kZSYpOwogCiAgICAg
Ym9vbCBpc1N0cmluZ1Byb3RvdHlwZU1ldGhvZFNhbmUoSlNHbG9iYWxPYmplY3QqLCBVbmlxdWVk
U3RyaW5nSW1wbCopOwogCkBAIC05NDMsNiArOTQ5LDggQEAgcHJpdmF0ZToKICAgICAgICAgCiAg
ICAgICAgIHJldHVybiBieXRlY29kZUNhblRydW5jYXRlSW50ZWdlcihhZGQtPmFyaXRoTm9kZUZs
YWdzKCkpID8gU3BlY3VsYXRlSW50MzJBbmRUcnVuY2F0ZUNvbnN0YW50cyA6IERvbnRTcGVjdWxh
dGVJbnQzMjsKICAgICB9CisKKyAgICBCMzo6U3BhcnNlQ29sbGVjdGlvbjxOb2RlPiBtX25vZGVz
OwogfTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdMSUNNUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdMSUNNUGhhc2UuY3BwCmluZGV4IGRlZWQyMGIxYjMwNzIwYzQwZGFkNDgwMTg0Y2Nl
N2UyNjk4Zjc5NDYuLmU2MDk3NjRlODU5Y2Y4MGRkYWM1OGIzYzQyYzA3MDVjMTJlOTI2M2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTElDTVBoYXNlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xJQ01QaGFzZS5jcHAKQEAgLTM0MSw3ICsz
NDEsNyBAQCBwcml2YXRlOgogICAgICAgICAvLyBjb2RlLiBCdXQgZm9yIG5vdyB3ZSBqdXN0IGFz
c2VydCB0aGF0J3MgdGhlIGNhc2UuCiAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbm9kZSwg
IShub2RlLT5mbGFncygpICYgTm9kZUhhc1ZhckFyZ3MpKTsKICAgICAgICAgCi0gICAgICAgIG5v
ZGVSZWYgPSBtX2dyYXBoLmFkZE5vZGUoU3BlY05vbmUsIENoZWNrLCBvcmlnaW5hbE9yaWdpbiwg
bm9kZS0+Y2hpbGRyZW4pOworICAgICAgICBub2RlUmVmID0gbV9ncmFwaC5hZGROb2RlKENoZWNr
LCBvcmlnaW5hbE9yaWdpbiwgbm9kZS0+Y2hpbGRyZW4pOwogICAgICAgICAKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdMb25nTGl2ZWRTdGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xvbmdM
aXZlZFN0YXRlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2EyZjJmMWYwYzlm
NmYzOGE4MjU5YTEzNmExZDJhNjM2OTU1ODFkOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xvbmdMaXZl
ZFN0YXRlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIkRGR0xvbmdMaXZlZFN0YXRlLmgiCi0KLSNpZiBFTkFCTEUoREZHX0pJVCkKLQotI2lu
Y2x1ZGUgIkpTQ0lubGluZXMuaCIKLQotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewot
Ci1Mb25nTGl2ZWRTdGF0ZTo6TG9uZ0xpdmVkU3RhdGUoKQotewotfQotCi1Mb25nTGl2ZWRTdGF0
ZTo6fkxvbmdMaXZlZFN0YXRlKCkKLXsKLX0KLQotdm9pZCBMb25nTGl2ZWRTdGF0ZTo6c2hyaW5r
VG9GaXQoKQotewotICAgIG1fYWxsb2NhdG9yLnJlc2V0KCk7Ci19Ci0KLX0gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpERkcKLQotI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQotCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xvbmdMaXZlZFN0YXRlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0xvbmdMaXZlZFN0YXRlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDc3ZmFiMDQwNzc5OWIxYWJjZDIwYjJlODBmOWRkNDFlMzZmMmQ5YzEuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdMb25nTGl2ZWRTdGF0ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZu
ZGVmIERGR0xvbmdMaXZlZFN0YXRlX2gKLSNkZWZpbmUgREZHTG9uZ0xpdmVkU3RhdGVfaAotCi0j
aWYgRU5BQkxFKERGR19KSVQpCi0KLSNpbmNsdWRlICJERkdOb2RlQWxsb2NhdG9yLmgiCi0jaW5j
bHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLQot
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewotCi1jbGFzcyBMb25nTGl2ZWRTdGF0ZSB7
Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7IFdURl9NQUtFX05PTkNPUFlBQkxFKExvbmdM
aXZlZFN0YXRlKTsKLXB1YmxpYzoKLSAgICBMb25nTGl2ZWRTdGF0ZSgpOwotICAgIH5Mb25nTGl2
ZWRTdGF0ZSgpOwotICAgIAotICAgIHZvaWQgc2hyaW5rVG9GaXQoKTsKLSAgICAKLSAgICBOb2Rl
QWxsb2NhdG9yIG1fYWxsb2NhdG9yOwotfTsKLQotfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwot
Ci0jZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCi0KLSNlbmRpZiAvLyBERkdMb25nTGl2ZWRTdGF0
ZV9oCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuY3BwCmluZGV4IDQ4ZjFkNTUyNDA0
MzU1YWM3YmEzZjE4MmEzMGU5Y2Q4MWNkMTBjMDguLjQ0YjI4NDVjZGUwZGVjZGU2ZWJkNTMxNDkx
N2E0OWUxMTdhM2I4ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNwcApAQCAt
MjksNyArMjksNiBAQAogI2lmIEVOQUJMRShERkdfSklUKQogCiAjaW5jbHVkZSAiREZHR3JhcGgu
aCIKLSNpbmNsdWRlICJERkdOb2RlQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiREZHUHJvbW90ZWRI
ZWFwTG9jYXRpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAKQEAgLTY0LDExICs2Myw2
IEBAIHZvaWQgQnJhbmNoVGFyZ2V0OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAg
ICAgIG91dC5wcmludCgiL3c6IiwgY291bnQpOwogfQogCi11bnNpZ25lZCBOb2RlOjppbmRleCgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIE5vZGVBbGxvY2F0b3I6OmFsbG9jYXRvck9mKHRoaXMpLT5p
bmRleE9mKHRoaXMpOwotfQotCiBib29sIE5vZGU6Omhhc1ZhcmlhYmxlQWNjZXNzRGF0YShHcmFw
aCYgZ3JhcGgpCiB7CiAgICAgc3dpdGNoIChvcCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZS5oCmluZGV4IDU2MGRhNGI5Mjg2MzRlYzI1YjA1ZTAzM2E4Y2ZjOGQ5YThmZjdhOWYuLjVj
NDhjZjE3NDYxN2ViNGZhYzM2MGQxMDc2ZjdlZjY5MjBmNWRjOTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZS5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoREZHX0pJVCkK
IAorI2luY2x1ZGUgIkIzU3BhcnNlQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkJhc2ljQmxvY2tM
b2NhdGlvbi5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRGR0Fic3RyYWN0
VmFsdWUuaCIKQEAgLTIzMCw2ICsyMzEsOCBAQCBzdHJ1Y3QgU3RhY2tBY2Nlc3NEYXRhIHsKIC8v
CiAvLyBOb2RlIHJlcHJlc2VudHMgYSBzaW5nbGUgb3BlcmF0aW9uIGluIHRoZSBkYXRhIGZsb3cg
Z3JhcGguCiBzdHJ1Y3QgTm9kZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJs
aWM6CiAgICAgZW51bSBWYXJBcmdUYWcgeyBWYXJBcmcgfTsKICAgICAKICAgICBOb2RlKCkgeyB9
CkBAIC0zNDYsOSArMzQ5LDggQEAgc3RydWN0IE5vZGUgewogICAgIAogICAgIE5vZGVUeXBlIG9w
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Tm9kZVR5cGU+KG1fb3ApOyB9CiAgICAgTm9k
ZUZsYWdzIGZsYWdzKCkgY29uc3QgeyByZXR1cm4gbV9mbGFnczsgfQotICAgIAotICAgIC8vIFRo
aXMgaXMgbm90IGEgZmFzdCBtZXRob2QuCi0gICAgdW5zaWduZWQgaW5kZXgoKSBjb25zdDsKKwor
ICAgIHVuc2lnbmVkIGluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9pbmRleDsgfQogICAgIAogICAg
IHZvaWQgc2V0T3AoTm9kZVR5cGUgb3ApCiAgICAgewpAQCAtMjM0NCw2ICsyMzQ2LDkgQEAgc3Ry
dWN0IE5vZGUgewogICAgIEFkamFjZW5jeUxpc3QgY2hpbGRyZW47CiAKIHByaXZhdGU6CisgICAg
ZnJpZW5kIGNsYXNzIEIzOjpTcGFyc2VDb2xsZWN0aW9uPE5vZGU+OworCisgICAgdW5zaWduZWQg
bV9pbmRleCB7IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSB9OwogICAgIHVu
c2lnbmVkIG1fb3AgOiAxMDsgLy8gcmVhbCB0eXBlIGlzIE5vZGVUeXBlCiAgICAgdW5zaWduZWQg
bV9mbGFncyA6IDIwOwogICAgIC8vIFRoZSB2aXJ0dWFsIHJlZ2lzdGVyIG51bWJlciAoc3BpbGwg
bG9jYXRpb24pIGFzc29jaWF0ZWQgd2l0aCB0aGlzIC4KQEAgLTIzNTEsNyArMjM1Niw3IEBAIHBy
aXZhdGU6CiAgICAgLy8gVGhlIG51bWJlciBvZiB1c2VzIG9mIHRoZSByZXN1bHQgb2YgdGhpcyBv
cGVyYXRpb24gKCsxIGZvciAnbXVzdCBnZW5lcmF0ZScgbm9kZXMsIHdoaWNoIGhhdmUgc2lkZS1l
ZmZlY3RzKS4KICAgICB1bnNpZ25lZCBtX3JlZkNvdW50OwogICAgIC8vIFRoZSBwcmVkaWN0aW9u
IGFzY3JpYmVkIHRvIHRoaXMgbm9kZSBhZnRlciBwcm9wYWdhdGlvbi4KLSAgICBTcGVjdWxhdGVk
VHlwZSBtX3ByZWRpY3Rpb247CisgICAgU3BlY3VsYXRlZFR5cGUgbV9wcmVkaWN0aW9uIHsgU3Bl
Y05vbmUgfTsKICAgICAvLyBJbW1lZGlhdGUgdmFsdWVzLCBhY2Nlc3NlcyB0eXBlLWNoZWNrZWQg
dmlhIGFjY2Vzc29ycyBhYm92ZS4gVGhlIGZpcnN0IG9uZSBpcwogICAgIC8vIGJpZyBlbm91Z2gg
dG8gc3RvcmUgYSBwb2ludGVyLgogICAgIHVpbnRwdHJfdCBtX29wSW5mbzsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZUFsbG9jYXRvci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlQWxsb2NhdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGU5MDI0Y2MxOTFhMGI5NzkxN2EzNmZjOTk3ZTQwOGJhNWFlNjNlOTEuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlQWxsb2NhdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5k
ZWYgREZHTm9kZUFsbG9jYXRvcl9oCi0jZGVmaW5lIERGR05vZGVBbGxvY2F0b3JfaAotCi0jaWYg
RU5BQkxFKERGR19KSVQpCi0KLSNpbmNsdWRlICJERkdBbGxvY2F0b3IuaCIKLSNpbmNsdWRlICJE
RkdOb2RlLmgiCi0KLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKLQotdHlwZWRlZiBB
bGxvY2F0b3I8Tm9kZT4gTm9kZUFsbG9jYXRvcjsKLQotfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRG
RwotCi1pbmxpbmUgdm9pZCogb3BlcmF0b3IgbmV3IChzaXplX3Qgc2l6ZSwgSlNDOjpERkc6Ok5v
ZGVBbGxvY2F0b3ImIGFsbG9jYXRvcikKLXsKLSAgICBBU1NFUlRfVU5VU0VEKHNpemUsIHNpemUg
PT0gc2l6ZW9mKEpTQzo6REZHOjpOb2RlKSk7Ci0gICAgcmV0dXJuIGFsbG9jYXRvci5hbGxvY2F0
ZSgpOwotfQotCi0jZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCi0KLSNlbmRpZiAvLyBERkdOb2Rl
QWxsb2NhdG9yX2gKLQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
YmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAKaW5kZXggOThjYzViZmMzZjg3
NjViMDczMjJiYmMwYjI4ODM5OTdhOWFlYjg0MC4uNGQzNDczMGFhN2ZlOGVmOTc2N2EyYTQzMmZm
MmY2ZTFmNjZjMmViNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
YmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCkBAIC0yMTAyLDcgKzIx
MDIsNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGRhdGEtPmlkZW50aWZpZXJOdW1iZXIg
PSBpZGVudGlmaWVyTnVtYmVyOwogCiAgICAgICAgICAgICAgICAgcmV0dXJuIG1fZ3JhcGguYWRk
Tm9kZSgKLSAgICAgICAgICAgICAgICAgICAgU3BlY05vbmUsCiAgICAgICAgICAgICAgICAgICAg
IFB1dEJ5T2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICBvcmlnaW4udGFrZVZhbGlkRXhpdChj
YW5FeGl0KSwKICAgICAgICAgICAgICAgICAgICAgT3BJbmZvKGRhdGEpLApAQCAtMjEzNyw3ICsy
MTM2LDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgcmV0dXJuIG1f
Z3JhcGguYWRkTm9kZSgKLSAgICAgICAgICAgICAgICBTcGVjTm9uZSwKICAgICAgICAgICAgICAg
ICBNdWx0aVB1dEJ5T2Zmc2V0LAogICAgICAgICAgICAgICAgIG9yaWdpbi50YWtlVmFsaWRFeGl0
KGNhbkV4aXQpLAogICAgICAgICAgICAgICAgIE9wSW5mbyhkYXRhKSwKQEAgLTIxNDgsNyArMjE0
Niw2IEBAIHByaXZhdGU6CiAKICAgICAgICAgY2FzZSBDbG9zdXJlVmFyUExvYzogewogICAgICAg
ICAgICAgcmV0dXJuIG1fZ3JhcGguYWRkTm9kZSgKLSAgICAgICAgICAgICAgICBTcGVjTm9uZSwK
ICAgICAgICAgICAgICAgICBQdXRDbG9zdXJlVmFyLAogICAgICAgICAgICAgICAgIG9yaWdpbi50
YWtlVmFsaWRFeGl0KGNhbkV4aXQpLAogICAgICAgICAgICAgICAgIE9wSW5mbyhsb2NhdGlvbi5p
bmZvKCkpLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAKaW5kZXggODhkMWYxNTU3
MWNjOTE0NmJjNTA5MTc1ZTgwZTE5YTQxYjVmZGRkOC4uMjUxNTU0YjJhZjdhMzhjOTUzYTAzMmJl
ZmEzZDJjZTcwNjlkMzY3NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQbGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCkBA
IC0xNzAsNyArMTcwLDcgQEAgYm9vbCBQbGFuOjpyZXBvcnRDb21waWxlVGltZXMoKSBjb25zdAog
ICAgICAgICB8fCAoT3B0aW9uczo6cmVwb3J0RlRMQ29tcGlsZVRpbWVzKCkgJiYgaXNGVEwobW9k
ZSkpOwogfQogCi12b2lkIFBsYW46OmNvbXBpbGVJblRocmVhZChMb25nTGl2ZWRTdGF0ZSYgbG9u
Z0xpdmVkU3RhdGUsIFRocmVhZERhdGEqIHRocmVhZERhdGEpCit2b2lkIFBsYW46OmNvbXBpbGVJ
blRocmVhZChUaHJlYWREYXRhKiB0aHJlYWREYXRhKQogewogICAgIHRoaXMtPnRocmVhZERhdGEg
PSB0aHJlYWREYXRhOwogICAgIApAQCAtMTg2LDcgKzE4Niw3IEBAIHZvaWQgUGxhbjo6Y29tcGls
ZUluVGhyZWFkKExvbmdMaXZlZFN0YXRlJiBsb25nTGl2ZWRTdGF0ZSwgVGhyZWFkRGF0YSogdGhy
ZWFkRGF0CiAgICAgaWYgKGxvZ0NvbXBpbGF0aW9uQ2hhbmdlcyhtb2RlKSkKICAgICAgICAgZGF0
YUxvZygiREZHKFBsYW4pIGNvbXBpbGluZyAiLCAqY29kZUJsb2NrLCAiIHdpdGggIiwgbW9kZSwg
IiwgbnVtYmVyIG9mIGluc3RydWN0aW9ucyA9ICIsIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3Vu
dCgpLCAiXG4iKTsKIAotICAgIENvbXBpbGF0aW9uUGF0aCBwYXRoID0gY29tcGlsZUluVGhyZWFk
SW1wbChsb25nTGl2ZWRTdGF0ZSk7CisgICAgQ29tcGlsYXRpb25QYXRoIHBhdGggPSBjb21waWxl
SW5UaHJlYWRJbXBsKCk7CiAKICAgICBSRUxFQVNFX0FTU0VSVChwYXRoID09IENhbmNlbFBhdGgg
fHwgZmluYWxpemVyKTsKICAgICBSRUxFQVNFX0FTU0VSVCgocGF0aCA9PSBDYW5jZWxQYXRoKSA9
PSAoc3RhZ2UgPT0gQ2FuY2VsbGVkKSk7CkBAIC0yMzYsNyArMjM2LDcgQEAgdm9pZCBQbGFuOjpj
b21waWxlSW5UaHJlYWQoTG9uZ0xpdmVkU3RhdGUmIGxvbmdMaXZlZFN0YXRlLCBUaHJlYWREYXRh
KiB0aHJlYWREYXQKICAgICB9CiB9CiAKLVBsYW46OkNvbXBpbGF0aW9uUGF0aCBQbGFuOjpjb21w
aWxlSW5UaHJlYWRJbXBsKExvbmdMaXZlZFN0YXRlJiBsb25nTGl2ZWRTdGF0ZSkKK1BsYW46OkNv
bXBpbGF0aW9uUGF0aCBQbGFuOjpjb21waWxlSW5UaHJlYWRJbXBsKCkKIHsKICAgICBjbGVhbk11
c3RIYW5kbGVWYWx1ZXNJZk5lY2Vzc2FyeSgpOwogICAgIApAQCAtMjQ2LDcgKzI0Niw3IEBAIFBs
YW46OkNvbXBpbGF0aW9uUGF0aCBQbGFuOjpjb21waWxlSW5UaHJlYWRJbXBsKExvbmdMaXZlZFN0
YXRlJiBsb25nTGl2ZWRTdGF0ZSkKICAgICAgICAgZGF0YUxvZygiXG4iKTsKICAgICB9CiAgICAg
Ci0gICAgR3JhcGggZGZnKCp2bSwgKnRoaXMsIGxvbmdMaXZlZFN0YXRlKTsKKyAgICBHcmFwaCBk
ZmcoKnZtLCAqdGhpcyk7CiAgICAgCiAgICAgaWYgKCFwYXJzZShkZmcpKSB7CiAgICAgICAgIGZp
bmFsaXplciA9IHN0ZDo6bWFrZV91bmlxdWU8RmFpbGVkRmluYWxpemVyPigqdGhpcyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUGxhbi5oCmluZGV4IDk1OTRkZmYyZjMwM2Q2MDNiN2Y5MThhMzMx
MTA3NWE1MWU3NzZmZDMuLjZlMzUyNjg1Y2NiMTZlM2JiNTk1NGUzMjgxZjY1MzA2MTkzYWQxZWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5oCkBAIC00OCw3ICs0OCw2IEBAIGNsYXNz
IFNsb3RWaXNpdG9yOwogCiBuYW1lc3BhY2UgREZHIHsKIAotY2xhc3MgTG9uZ0xpdmVkU3RhdGU7
CiBjbGFzcyBUaHJlYWREYXRhOwogCiAjaWYgRU5BQkxFKERGR19KSVQpCkBAIC02MCw3ICs1OSw3
IEBAIHN0cnVjdCBQbGFuIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFBsYW4+IHsKICAg
ICAgICAgY29uc3QgT3BlcmFuZHM8SlNWYWx1ZT4mIG11c3RIYW5kbGVWYWx1ZXMpOwogICAgIH5Q
bGFuKCk7CiAKLSAgICB2b2lkIGNvbXBpbGVJblRocmVhZChMb25nTGl2ZWRTdGF0ZSYsIFRocmVh
ZERhdGEqKTsKKyAgICB2b2lkIGNvbXBpbGVJblRocmVhZChUaHJlYWREYXRhKik7CiAgICAgCiAg
ICAgQ29tcGlsYXRpb25SZXN1bHQgZmluYWxpemVXaXRob3V0Tm90aWZ5aW5nQ2FsbGJhY2soKTsK
ICAgICB2b2lkIGZpbmFsaXplQW5kTm90aWZ5Q2FsbGJhY2soKTsKQEAgLTEyMSw3ICsxMjAsNyBA
QCBwcml2YXRlOgogICAgIGJvb2wgcmVwb3J0Q29tcGlsZVRpbWVzKCkgY29uc3Q7CiAgICAgCiAg
ICAgZW51bSBDb21waWxhdGlvblBhdGggeyBGYWlsUGF0aCwgREZHUGF0aCwgRlRMUGF0aCwgQ2Fu
Y2VsUGF0aCB9OwotICAgIENvbXBpbGF0aW9uUGF0aCBjb21waWxlSW5UaHJlYWRJbXBsKExvbmdM
aXZlZFN0YXRlJik7CisgICAgQ29tcGlsYXRpb25QYXRoIGNvbXBpbGVJblRocmVhZEltcGwoKTsK
ICAgICAKICAgICBib29sIGlzU3RpbGxWYWxpZCgpOwogICAgIHZvaWQgcmVhbGx5QWRkKENvbW1v
bkRhdGEqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29u
dmVyc2lvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVy
c2lvblBoYXNlLmNwcAppbmRleCBmZTk5YmEwOWUxOTRkZWUyNDZlMWI2YTRhNGQ5OTE3NzczM2Qz
MmVhLi5jZGUwNzQwMDdjOTY1NzQxYjNmYWI3MzQ0MmJlMDFhZmY4YzViZDVlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwCkBA
IC0zNzMsNyArMzczLDcgQEAgcHVibGljOgogICAgICAgICAgICAgaWYgKCFibG9jaykKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgcGhpSW5kZXgg
PSBibG9jay0+cGhpcy5zaXplKCk7IHBoaUluZGV4LS07KQotICAgICAgICAgICAgICAgIG1fZ3Jh
cGgubV9hbGxvY2F0b3IuZnJlZShibG9jay0+cGhpc1twaGlJbmRleF0pOworICAgICAgICAgICAg
ICAgIG1fZ3JhcGguZGVsZXRlTm9kZShibG9jay0+cGhpc1twaGlJbmRleF0pOwogICAgICAgICAg
ICAgYmxvY2stPnBoaXMuY2xlYXIoKTsKICAgICAgICAgICAgIGJsb2NrLT52YXJpYWJsZXNBdEhl
YWQuY2xlYXIoKTsKICAgICAgICAgICAgIGJsb2NrLT52YXJpYWJsZXNBdFRhaWwuY2xlYXIoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xpc3QuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAKaW5kZXggZDUyOGUxNDNk
MWFkZDdhNzg0NjU0MTE5OGFjYjNkMTRkM2Q3MjE1My4uOWI2ZDJjM2M2NmI1ODQyYTJiODg5NTI2
NTY5NWY2MGExMmZiMDEzMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdXb3JrbGlzdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlz
dC5jcHAKQEAgLTMwLDcgKzMwLDYgQEAKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1
ZGUgIkRlZmVyR0MuaCIKLSNpbmNsdWRlICJERkdMb25nTGl2ZWRTdGF0ZS5oIgogI2luY2x1ZGUg
IkRGR1NhZmVwb2ludC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlIDxtdXRl
eD4KQEAgLTM2Miw4ICszNjEsNiBAQCB2b2lkIFdvcmtsaXN0OjpydW5UaHJlYWQoVGhyZWFkRGF0
YSogZGF0YSkKICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZUNvbXBpbGF0aW9uUXVldWUoKSkKICAg
ICAgICAgZGF0YUxvZygqdGhpcywgIjogVGhyZWFkIHN0YXJ0ZWRcbiIpOwogICAgIAotICAgIExv
bmdMaXZlZFN0YXRlIGxvbmdMaXZlZFN0YXRlOwotICAgIAogICAgIGZvciAoOzspIHsKICAgICAg
ICAgUmVmUHRyPFBsYW4+IHBsYW47CiAgICAgICAgIHsKQEAgLTM5OSw3ICszOTYsNyBAQCB2b2lk
IFdvcmtsaXN0OjpydW5UaHJlYWQoVGhyZWFkRGF0YSogZGF0YSkKICAgICAgICAgICAgICAgICBk
YXRhTG9nKCp0aGlzLCAiOiBDb21waWxpbmcgIiwgcGxhbi0+a2V5KCksICIgYXN5bmNocm9ub3Vz
bHlcbiIpOwogICAgICAgICAKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFwbGFuLT52bS0+
aGVhcC5pc0NvbGxlY3RpbmcoKSk7Ci0gICAgICAgICAgICBwbGFuLT5jb21waWxlSW5UaHJlYWQo
bG9uZ0xpdmVkU3RhdGUsIGRhdGEpOworICAgICAgICAgICAgcGxhbi0+Y29tcGlsZUluVGhyZWFk
KGRhdGEpOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocGxhbi0+c3RhZ2UgPT0gUGxhbjo6
Q2FuY2VsbGVkIHx8ICFwbGFuLT52bS0+aGVhcC5pc0NvbGxlY3RpbmcoKSk7CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCBi
MWZmNDI0OGEzNDg0YTRjYmJjMjA1YzMyZDRkMDRjMTYwNjBjYWM2Li45NDE2ZWE5NGFiN2ZiOTg1
OGZiOWFlNWJjZGQ2ZWE0NTBjYWE0MGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
Y3BwCkBAIC0zOCw3ICszOCw2IEBACiAjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNp
bmNsdWRlICJDb21tb25TbG93UGF0aHMuaCIKICNpbmNsdWRlICJDdXN0b21HZXR0ZXJTZXR0ZXIu
aCIKLSNpbmNsdWRlICJERkdMb25nTGl2ZWRTdGF0ZS5oIgogI2luY2x1ZGUgIkRGR1dvcmtsaXN0
LmgiCiAjaW5jbHVkZSAiRGlzYXNzZW1ibGVyLmgiCiAjaW5jbHVkZSAiRXJyb3JJbnN0YW5jZS5o
IgpAQCAtMjkwLDExICsyODksNiBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVh
cFR5cGUpCiAgICAgfQogCiAgICAgY2FsbEZyYW1lRm9yQ2F0Y2ggPSBudWxscHRyOwotCi0jaWYg
RU5BQkxFKERGR19KSVQpCi0gICAgaWYgKGNhblVzZUpJVCgpKQotICAgICAgICBkZmdTdGF0ZSA9
IHN0ZDo6bWFrZV91bmlxdWU8REZHOjpMb25nTGl2ZWRTdGF0ZT4oKTsKLSNlbmRpZgogICAgIAog
ICAgIC8vIEluaXRpYWxpemUgdGhpcyBsYXN0LCBhcyBhIGZyZWUgd2F5IG9mIGFzc2VydGluZyB0
aGF0IFZNIGluaXRpYWxpemF0aW9uIGl0c2VsZgogICAgIC8vIHdvbid0IHVzZSB0aGlzLgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggZjBkZTE1MTM1YTkwNzg3OGI0N2ExZDM0MzRm
NjgyOTFjYjVkYzczZS4uNGU5ZjIxYzBlOTMzNjBmNzU1NGRmMmM0YzE1M2MxYjQ1OGVjM2VmNyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC0xMTksMTEgKzExOSw2IEBAIGNsYXNz
IFdhdGNoZG9nOwogY2xhc3MgV2F0Y2hwb2ludDsKIGNsYXNzIFdhdGNocG9pbnRTZXQ7CiAKLSNp
ZiBFTkFCTEUoREZHX0pJVCkKLW5hbWVzcGFjZSBERkcgewotY2xhc3MgTG9uZ0xpdmVkU3RhdGU7
Ci19Ci0jZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCiAjaWYgRU5BQkxFKEZUTF9KSVQpCiBuYW1l
c3BhY2UgRlRMIHsKIGNsYXNzIFRodW5rczsKQEAgLTI3MSwxMCArMjY2LDYgQEAgcHVibGljOgog
ICAgIC8vIGRlc3RydWN0ZWQgYWZ0ZXIgYWxsIHRoZSBvYmplY3RzIHRoYXQgcmVmZXJlbmNlIGl0
LgogICAgIEhlYXAgaGVhcDsKIAotI2lmIEVOQUJMRShERkdfSklUKQotICAgIHN0ZDo6dW5pcXVl
X3B0cjxERkc6OkxvbmdMaXZlZFN0YXRlPiBkZmdTdGF0ZTsKLSNlbmRpZiAvLyBFTkFCTEUoREZH
X0pJVCkKLQogICAgIFZNVHlwZSB2bVR5cGU7CiAgICAgQ2xpZW50RGF0YSogY2xpZW50RGF0YTsK
ICAgICBWTUVudHJ5RnJhbWUqIHRvcFZNRW50cnlGcmFtZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284747</attachid>
            <date>2016-07-27 17:34:57 -0700</date>
            <delta_ts>2017-05-12 14:56:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160098-20160727173345.patch</filename>
            <type>text/plain</type>
            <size>51419</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzODAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NTAwOTRmY2Y5YTI0NzEyYzcxMDYwZDE4YmNiOTVhZGUxZjhmZGQ1Li40YjYyMTU2YzZmZmViZjEw
MmIxODAyNGRmYWU1NzRmZmRhNjhiNDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw4NiBAQAogMjAxNi0wNy0yNyAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KIAorICAgICAgICBbSlNDXSBERkc6Ok5vZGUgc2hvdWxkIG5vdCBoYXZlIGl0cyBvd24g
YWxsb2NhdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjAwOTgKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKworICAgICAg
ICBXZSBuZWVkIHNvbWUgZGVzaWduIGNoYW5nZXMgZm9yIERGRzo6Tm9kZToKKyAgICAgICAgLUFj
Y2Vzc2luZyB0aGUgaW5kZXggbXVzdCBiZSBmYXN0LiBCMyB1c2VzIGluZGljZXMgZm9yIHNldHMK
KyAgICAgICAgIGFuZCBtYXBzLCBpdCBpcyBhIGxvdCBmYXN0ZXIgdGhhbiBoYXNoaW5nIHBvaW50
ZXJzLgorICAgICAgICAtV2Ugc2hvdWxkIGJlIGFibGUgdG8gc3ViY2xhc3MgREZHOjpOb2RlIHRv
IHNwZWNpYWxpemUgaXQuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBK
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRmZy9E
RkdBbGxvY2F0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKEpTQzo6REZHOjpBbGxvY2F0b3I6OlJl
Z2lvbjo6c2l6ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6QWxsb2NhdG9yOjpSZWdp
b246OmhlYWRlclNpemUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6OkFsbG9jYXRvcjo6
UmVnaW9uOjpudW1iZXJPZlRoaW5nc1BlclJlZ2lvbik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkRGRzo6QWxsb2NhdG9yOjpSZWdpb246OmRhdGEpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpE
Rkc6OkFsbG9jYXRvcjo6UmVnaW9uOjppc0luVGhpc1JlZ2lvbik6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkRGRzo6QWxsb2NhdG9yOjpSZWdpb246OnJlZ2lvbkZvcik6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkRGRzo6QWxsb2NhdG9yPFQ+OjpBbGxvY2F0b3IpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpERkc6OkFsbG9jYXRvcjxUPjo6fkFsbG9jYXRvcik6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkRGRzo6QWxsb2NhdG9yPFQ+OjphbGxvY2F0ZSk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkRGRzo6QWxsb2NhdG9yPFQ+OjpmcmVlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZH
OjpBbGxvY2F0b3I8VD46OmZyZWVBbGwpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6OkFs
bG9jYXRvcjxUPjo6cmVzZXQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6OkFsbG9jYXRv
cjxUPjo6aW5kZXhPZik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6QWxsb2NhdG9yPFQ+
OjphbGxvY2F0b3JPZik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6QWxsb2NhdG9yPFQ+
OjpidW1wQWxsb2NhdGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6OkFsbG9jYXRvcjxU
Pjo6ZnJlZUxpc3RBbGxvY2F0ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6QWxsb2Nh
dG9yPFQ+OjphbGxvY2F0ZVNsb3cpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6OkFsbG9j
YXRvcjxUPjo6ZnJlZVJlZ2lvbnNTdGFydGluZ0F0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
REZHOjpBbGxvY2F0b3I8VD46OnN0YXJ0QnVtcGluZ0luKTogRGVsZXRlZC4KKyAgICAgICAgKiBk
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFy
c2VyOjphZGRUb0dyYXBoKToKKyAgICAgICAgKiBkZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6Q1BTUmV0aHJlYWRpbmdQaGFzZTo6ZnJlZVVubmVjZXNz
YXJ5Tm9kZXMpOgorICAgICAgICAoSlNDOjpERkc6OkNQU1JldGhyZWFkaW5nUGhhc2U6OmFkZFBo
aVNpbGVudGx5KToKKyAgICAgICAgKiBkZmcvREZHQ2xlYW5VcFBoYXNlLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpDbGVhblVwUGhhc2U6OnJ1bik6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50
Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFz
ZTo6cnVuKToKKyAgICAgICAgKiBkZmcvREZHQ29uc3RhbnRIb2lzdGluZ1BoYXNlLmNwcDoKKyAg
ICAgICAgKiBkZmcvREZHRENFUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkRDRVBoYXNl
OjpmaXh1cEJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHRHJpdmVyLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpjb21waWxlSW1wbCk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpHcmFwaDo6R3JhcGgpOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpk
ZWxldGVOb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6a2lsbEJsb2NrQW5kSXRzQ29u
dGVudHMpOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjp+R3JhcGgpOiBEZWxldGVkLgorICAg
ICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjphZGROb2Rl
KToKKyAgICAgICAgKiBkZmcvREZHTElDTVBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpM
SUNNUGhhc2U6OmF0dGVtcHRIb2lzdCk6CisgICAgICAgICogZGZnL0RGR0xvbmdMaXZlZFN0YXRl
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKEpTQzo6REZHOjpMb25nTGl2ZWRTdGF0ZTo6TG9uZ0xp
dmVkU3RhdGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6OkxvbmdMaXZlZFN0YXRlOjp+
TG9uZ0xpdmVkU3RhdGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6OkxvbmdMaXZlZFN0
YXRlOjpzaHJpbmtUb0ZpdCk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR0xvbmdMaXZlZFN0
YXRlLmg6IFJlbW92ZWQuCisgICAgICAgICogZGZnL0RGR05vZGUuY3BwOgorICAgICAgICAoSlND
OjpERkc6Ok5vZGU6OmluZGV4KTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgor
ICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmluZGV4KToKKyAgICAgICAgKiBkZmcvREZHTm9kZUFs
bG9jYXRvci5oOiBSZW1vdmVkLgorICAgICAgICAob3BlcmF0b3IgbmV3ICk6IERlbGV0ZWQuCisg
ICAgICAgICogZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwOgorICAgICAg
ICAqIGRmZy9ERkdQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpQbGFuOjpjb21waWxlSW5U
aHJlYWQpOgorICAgICAgICAoSlNDOjpERkc6OlBsYW46OmNvbXBpbGVJblRocmVhZEltcGwpOgor
ICAgICAgICAqIGRmZy9ERkdQbGFuLmg6CisgICAgICAgICogZGZnL0RGR1NTQUNvbnZlcnNpb25Q
aGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U1NBQ29udmVyc2lvblBoYXNlOjpydW4pOgor
ICAgICAgICAqIGRmZy9ERkdXb3JrbGlzdC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6V29ya2xp
c3Q6OnJ1blRocmVhZCk6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6
OlZNOjpWTSk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9WTS5oOgorCisyMDE2LTA3LTI3
ICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCiAgICAgICAgIFtKU0Nd
IEZpeCBhIGJ1bmNoIG9mIHVzZS1hZnRlci1mcmVlIG9mIERGRzo6Tm9kZQogICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwMjI4CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBmOGYyMzA5N2JhOWNkNzM4ZDc0MzNmMzZkNjFkYzg4
MmNkZGVmOGJjLi5lMjY3Zjc0ZjBjZGVlZjA3MTFjZGQzMmYzY2Q1MzM0NzRmNWY4ZjMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0zMTIsNyArMzEyLDYgQEAgc2V0KEph
dmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBkZmcvREZHTGF6eUpTVmFsdWUuY3BwCiAgICAgZGZn
L0RGR0xhenlOb2RlLmNwcAogICAgIGRmZy9ERkdMaXZlbmVzc0FuYWx5c2lzUGhhc2UuY3BwCi0g
ICAgZGZnL0RGR0xvbmdMaXZlZFN0YXRlLmNwcAogICAgIGRmZy9ERkdMb29wUHJlSGVhZGVyQ3Jl
YXRpb25QaGFzZS5jcHAKICAgICBkZmcvREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UuY3Bw
CiAgICAgZGZnL0RGR01heUV4aXQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IGMzMWIzOTc4MWM2NDNlM2Y5NzQwOWU3OGJiZDFhMmFjM2JmN2U2MGMuLjk1OGRlYTdlZDc3YzVk
OTU4NzFhMzcyMjI0MWFkODgyNDJkZjBiMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC04ODQsOCArODg0LDYgQEAKIAkJMEZFRkM5QUIxNjgxQTNCNjAwNTY3RjUzIC8qIERGR09T
UkV4aXRKdW1wUGxhY2Vob2xkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGRUZDOUE4MTY4MUEzQjAwMDU2N0Y1MyAvKiBERkdPU1JFeGl0SnVtcFBs
YWNlaG9sZGVyLmggKi87IH07CiAJCTBGRjA1NEY5MUFDMzVCNDQwMEU1QkU1NyAvKiBFeGVjdXRh
YmxlQWxsb2NhdGlvbkZ1enouY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEZGMDU0RjcxQUMzNUI0NDAwRTVCRTU3IC8qIEV4ZWN1dGFibGVBbGxvY2F0
aW9uRnV6ei5jcHAgKi87IH07CiAJCTBGRjA1NEZBMUFDMzVCNDQwMEU1QkU1NyAvKiBFeGVjdXRh
YmxlQWxsb2NhdGlvbkZ1enouaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGRjA1NEY4MUFDMzVCNDQwMEU1QkU1NyAvKiBFeGVjdXRhYmxlQWxsb2NhdGlv
bkZ1enouaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owot
CQkwRkYwRjE5OTE2QjcyOUY2MDA1REY5NUIgLyogREZHTG9uZ0xpdmVkU3RhdGUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCNEI1MUMxNkI2Mjc3
MjAwM0Y2OTZCIC8qIERGR0xvbmdMaXZlZFN0YXRlLmNwcCAqLzsgfTsKLQkJMEZGMEYxOUIxNkI3
MjlGQTAwNURGOTVCIC8qIERGR0xvbmdMaXZlZFN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkI0QjUxRDE2QjYyNzcyMDAzRjY5NkIgLyogREZH
TG9uZ0xpdmVkU3RhdGUuaCAqLzsgfTsKIAkJMEZGMEYxOUMxNkI3MkEwMzAwNURGOTVCIC8qIERG
R05vZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEZCNEI1MUUxNkI2Mjc3MjAwM0Y2OTZCIC8qIERGR05vZGUuY3BwICovOyB9OwogCQkwRkYwRjE5
RDE2QjcyQTA4MDA1REY5NUIgLyogREZHQ29tbW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjRCNTFBMTZCNjI3NzIwMDNGNjk2QiAvKiBERkdD
b21tb24uY3BwICovOyB9OwogCQkwRkYwRjE5RTE2QjcyQTBCMDA1REY5NUIgLyogREZHRWRnZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkI0QjUx
QjE2QjYyNzcyMDAzRjY5NkIgLyogREZHRWRnZS5jcHAgKi87IH07CkBAIC05MzgsOSArOTM2LDcg
QEAKIAkJMEZGQTU0OTgxNkI4ODM1MzAwQjNBOTgyIC8qIEE2NERPcGNvZGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1MkEzQTIzMTY1MUM2OTcwMEE4
MEFGRSAvKiBBNjRET3Bjb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMEZGQjZDMzgxQUY0OEREQzAwREIxQkY3IC8qIFR5cGVvZlR5cGUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGQjZDMzYx
QUY0OEREQzAwREIxQkY3IC8qIFR5cGVvZlR5cGUuY3BwICovOyB9OwogCQkwRkZCNkMzOTFBRjQ4
RERDMDBEQjFCRjcgLyogVHlwZW9mVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEZGQjZDMzcxQUY0OEREQzAwREIxQkY3IC8qIFR5cGVvZlR5cGUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkwRkZC
OTIxODE2RDAyRUIyMDA1NUE1REIgLyogREZHQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkI0QjUxOTE2QjYyNzcyMDAzRjY5NkIgLyog
REZHQWxsb2NhdG9yLmggKi87IH07CiAJCTBGRkI5MjFBMTZEMDJFQzUwMDU1QTVEQiAvKiBERkdC
YXNpY0Jsb2NrSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEZENTY1MjIxNkFCNzgwQTAwMTk3NjUzIC8qIERGR0Jhc2ljQmxvY2tJbmxpbmVz
LmggKi87IH07Ci0JCTBGRkI5MjFCMTZEMDJGMDEwMDU1QTVEQiAvKiBERkdOb2RlQWxsb2NhdG9y
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkI0QjUx
RjE2QjYyNzcyMDAzRjY5NkIgLyogREZHTm9kZUFsbG9jYXRvci5oICovOyB9OwogCQkwRkZCOTIx
QzE2RDAyRjExMDA1NUE1REIgLyogREZHT1NSRXhpdENvbXBpbGF0aW9uSW5mby5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU5ODdGMkMxNjdGRTg0QjAw
M0MyRjhEIC8qIERGR09TUkV4aXRDb21waWxhdGlvbkluZm8uaCAqLzsgfTsKIAkJMEZGQjkyMUQx
NkQwMkYzMDAwNTVBNURCIC8qIERGR1Nsb3dQYXRoR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjFFM0E1MDE1MzdDMkNCMDAwRjk0NTYg
LyogREZHU2xvd1BhdGhHZW5lcmF0b3IuaCAqLzsgfTsKIAkJMEZGQjkyMjAxNkQwMzNCNzAwNTVB
NURCIC8qIE5vZGVDb25zdHJ1Y3RvcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzMERBRDAzMEZCMUVCMUEwMDgyRDIwNSAvKiBOb2RlQ29uc3RydWN0
b3JzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTI3OTEsMTMgKzI3ODcsOSBAQAogCQkwRkIzODc5MTFCRkQzMUExMDBFM0FCMUUgLyogRlRMQ29t
cGlsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGVExDb21waWxl
LmNwcDsgcGF0aCA9IGZ0bC9GVExDb21waWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEZCNDM4QTIxOTI3MEIxRDAwRTFGQkM5IC8qIFN0cnVjdHVyZVNldC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJ1Y3R1cmVTZXQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRkI0QjUxMDE2QjNBOTY0MDAzRjY5NkIgLyogREZHTWlu
aWZpZWRJRC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdNaW5pZmllZElE
Lmg7IHBhdGggPSBkZmcvREZHTWluaWZpZWRJRC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkwRkI0QjUxOTE2QjYyNzcyMDAzRjY5NkIgLyogREZHQWxsb2NhdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0FsbG9jYXRvci5oOyBwYXRoID0gZGZnL0RGR0Fs
bG9jYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkI0QjUxQTE2QjYyNzcy
MDAzRjY5NkIgLyogREZHQ29tbW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IERGR0NvbW1vbi5jcHA7IHBhdGggPSBkZmcvREZHQ29tbW9uLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZCNEI1MUIxNkI2Mjc3MjAwM0Y2OTZCIC8qIERGR0VkZ2Uu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHRWRnZS5jcHA7IHBh
dGggPSBkZmcvREZHRWRnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGQjRC
NTFDMTZCNjI3NzIwMDNGNjk2QiAvKiBERkdMb25nTGl2ZWRTdGF0ZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdMb25nTGl2ZWRTdGF0ZS5jcHA7IHBhdGggPSBk
ZmcvREZHTG9uZ0xpdmVkU3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkw
RkI0QjUxRDE2QjYyNzcyMDAzRjY5NkIgLyogREZHTG9uZ0xpdmVkU3RhdGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHTG9uZ0xpdmVkU3RhdGUuaDsgcGF0aCA9IGRmZy9E
RkdMb25nTGl2ZWRTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkI0QjUx
RTE2QjYyNzcyMDAzRjY5NkIgLyogREZHTm9kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBERkdOb2RlLmNwcDsgcGF0aCA9IGRmZy9ERkdOb2RlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEZCNEI1MUYxNkI2Mjc3MjAwM0Y2OTZCIC8qIERGR05v
ZGVBbGxvY2F0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHTm9kZUFs
bG9jYXRvci5oOyBwYXRoID0gZGZnL0RGR05vZGVBbGxvY2F0b3IuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEZCNEI1MjExNkI2Mjc4RDAwM0Y2OTZCIC8qIEZ1bmN0aW9uRXhlY3V0
YWJsZUR1bXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRnVuY3Rp
b25FeGVjdXRhYmxlRHVtcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQjRC
NTIyMTZCNjI3OEQwMDNGNjk2QiAvKiBGdW5jdGlvbkV4ZWN1dGFibGVEdW1wLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZ1bmN0aW9uRXhlY3V0YWJsZUR1bXAuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZCNEZCNzAxQkM4NDMxNDAwMjVDQTVBIC8qIEZUTExh
enlTbG93UGF0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGVExM
YXp5U2xvd1BhdGguY3BwOyBwYXRoID0gZnRsL0ZUTExhenlTbG93UGF0aC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MTk1LDcgKzYxODcsNiBAQAogCQkJCTBGMThEM0NEMUI1
NUE2RTAwMDJDNUM5RiAvKiBERkdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwICovLAog
CQkJCTBGMThEM0NFMUI1NUE2RTAwMDJDNUM5RiAvKiBERkdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNo
cG9pbnQuaCAqLywKIAkJCQkwRjY2RTE2ODE0REYzRjEzMDBCN0IyRTQgLyogREZHQWRqYWNlbmN5
TGlzdC5oICovLAotCQkJCTBGQjRCNTE5MTZCNjI3NzIwMDNGNjk2QiAvKiBERkdBbGxvY2F0b3Iu
aCAqLywKIAkJCQkwRjFFM0E0MzE1MzRDQkFEMDAwRjk0NTYgLyogREZHQXJndW1lbnRQb3NpdGlv
bi5oICovLAogCQkJCTBGMkREODBDMUFCM0Q4QkUwMEJCQjhFOCAvKiBERkdBcmd1bWVudHNFbGlt
aW5hdGlvblBoYXNlLmNwcCAqLywKIAkJCQkwRjJERDgwRDFBQjNEOEJFMDBCQkI4RTggLyogREZH
QXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5oICovLApAQCAtNjM0NSw4ICs2MzM2LDYgQEAKIAkJ
CQk3OUM0QjE1QzFCQTIxNThGMDBGRDU5MkUgLyogREZHTGl2ZUNhdGNoVmFyaWFibGVQcmVzZXJ2
YXRpb25QaGFzZS5oICovLAogCQkJCUE3RDg5Q0VDMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdMaXZl
bmVzc0FuYWx5c2lzUGhhc2UuY3BwICovLAogCQkJCUE3RDg5Q0VEMTdBMEI4Q0MwMDc3M0FEOCAv
KiBERkdMaXZlbmVzc0FuYWx5c2lzUGhhc2UuaCAqLywKLQkJCQkwRkI0QjUxQzE2QjYyNzcyMDAz
RjY5NkIgLyogREZHTG9uZ0xpdmVkU3RhdGUuY3BwICovLAotCQkJCTBGQjRCNTFEMTZCNjI3NzIw
MDNGNjk2QiAvKiBERkdMb25nTGl2ZWRTdGF0ZS5oICovLAogCQkJCUE3NjdCNUIzMTdBMEI5NjUw
MDYzRDk0MCAvKiBERkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5jcHAgKi8sCiAJCQkJQTc2
N0I1QjQxN0EwQjk2NTAwNjNEOTQwIC8qIERGR0xvb3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmgg
Ki8sCiAJCQkJNzlGOEZDMUMxQjlGRUQwRjAwQ0E2NkFCIC8qIERGR01heGltYWxGbHVzaEluc2Vy
dGlvblBoYXNlLmNwcCAqLywKQEAgLTYzNjYsNyArNjM1NSw2IEBACiAJCQkJQTczNzgxMEIxNzk5
RUEyRTAwODE3NTMzIC8qIERGR05hdHVyYWxMb29wcy5oICovLAogCQkJCTBGQjRCNTFFMTZCNjI3
NzIwMDNGNjk2QiAvKiBERkdOb2RlLmNwcCAqLywKIAkJCQk4NkVDQTNFOTEzMkRFRjFDMDAyQjJB
RDcgLyogREZHTm9kZS5oICovLAotCQkJCTBGQjRCNTFGMTZCNjI3NzIwMDNGNjk2QiAvKiBERkdO
b2RlQWxsb2NhdG9yLmggKi8sCiAJCQkJMEZBNTgxQjcxNTBFOTUyQTAwQjlBMkQ5IC8qIERGR05v
ZGVGbGFncy5jcHAgKi8sCiAJCQkJMEZBNTgxQjgxNTBFOTUyQTAwQjlBMkQ5IC8qIERGR05vZGVG
bGFncy5oICovLAogCQkJCTBGNUQwODVDMUI4Q0Y5OUQwMDExNDNCNCAvKiBERkdOb2RlT3JpZ2lu
LmNwcCAqLywKQEAgLTczMDQsNyArNzI5Miw2IEBACiAJCQkJOTk4RUQ2NzUxQkVENzY4QzAwREQ4
MDE3IC8qIFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYz
M0ZDRjgxQzEzNkUyNTAwMzIzRjY3IC8qIEIzU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjY2RTE2QjE0REYzRjE2MDBCN0IyRTQgLyogREZHQWRqYWNlbmN5
TGlzdC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEZGQjkyMTgxNkQwMkVCMjAwNTVBNURCIC8qIERG
R0FsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxRTNBNDYxNTM0Q0JBRjAwMEY5NDU2
IC8qIERGR0FyZ3VtZW50UG9zaXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkREODEyMUFC
M0Q4QkUwMEJCQjhFOCAvKiBERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjJERDgxNDFBQjNEOEJFMDBCQkI4RTggLyogREZHQXJndW1lbnRzVXRpbGl0
aWVzLmggaW4gSGVhZGVycyAqLywKQEAgLTc0MDEsNyArNzM4OCw2IEBACiAJCQkJOTlENkExMTYx
QkVBRDM0RDAwRTI1QzM3IC8qIFJlbW90ZUF1dG9tYXRpb25UYXJnZXQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTc5QzRCMTVFMUJBMjE1OEYwMEZENTkyRSAvKiBERkdMaXZlQ2F0Y2hWYXJpYWJsZVBy
ZXNlcnZhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0Q4OUNGQzE3QTBCOENDMDA3
NzNBRDggLyogREZHTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmggaW4gSGVhZGVycyAqLywKLQkJCQkw
RkYwRjE5QjE2QjcyOUZBMDA1REY5NUIgLyogREZHTG9uZ0xpdmVkU3RhdGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGMzM4REYyMUJFOTNBRDEwMDEzQzg4RiAvKiBCM1N0YWNrbWFwVmFsdWUuaCBp
biBIZWFkZXJzICovLAogCQkJCUE3NjdCNUI2MTdBMEI5NjUwMDYzRDk0MCAvKiBERkdMb29wUHJl
SGVhZGVyQ3JlYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzlGOEZDMUYxQjlGRUQw
RjAwQ0E2NkFCIC8qIERGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNlLmggaW4gSGVhZGVycyAq
LywKQEAgLTc0MTQsNyArNzQwMCw2IEBACiAJCQkJMEZGMkNENUMxQjYxQTRGODAwNDk1NUE4IC8q
IERGR011bHRpR2V0QnlPZmZzZXREYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzM3ODEwRTE3
OTlFQTJFMDA4MTc1MzMgLyogREZHTmF0dXJhbExvb3BzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4
NkVDQTNFQTEzMkRFRjFDMDAyQjJBRDcgLyogREZHTm9kZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
MEZGQjkyMUIxNkQwMkYwMTAwNTVBNURCIC8qIERGR05vZGVBbGxvY2F0b3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTcwQjc5MTkzMUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEZBNTgxQkIxNTBFOTUzMDAwQjlBMkQ5IC8qIERGR05vZGVGbGFn
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzMDBCNzgxOEFCMDUxMTAwQTZENzJFIC8qIERGR05v
ZGVPcmlnaW4uaCBpbiBIZWFkZXJzICovLApAQCAtODk2MCw3ICs4OTQ1LDYgQEAKIAkJCQlBN0Q5
QTI5NzE3QTBCQzc0MDBFRTI2MTggLyogREZHTElDTVBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTc5QzRCMTVEMUJBMjE1OEYwMEZENTkyRSAvKiBERkdMaXZlQ2F0Y2hWYXJpYWJsZVByZXNl
cnZhdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3RDg5Q0ZCMTdBMEI4Q0MwMDc3
M0FEOCAvKiBERkdMaXZlbmVzc0FuYWx5c2lzUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJ
MEZGMEYxOTkxNkI3MjlGNjAwNURGOTVCIC8qIERGR0xvbmdMaXZlZFN0YXRlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUE3NjdCNUI1MTdBMEI5NjUwMDYzRDk0MCAvKiBERkdMb29wUHJlSGVhZGVy
Q3JlYXRpb25QaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3OUY4RkMxRTFCOUZFRDBGMDBD
QTY2QUIgLyogREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEY1ODc0RUQxOTRGRUIxMjAwQUFCMkMxIC8qIERGR01heUV4aXQuY3BwIGluIFNvdXJj
ZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTcGFyc2VDb2xs
ZWN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTcGFyc2VDb2xsZWN0aW9uLmgK
aW5kZXggZDAyN2E0OGEzZWY0OTY0NjA3OTgyODFiN2E0NGIxYWE2NmE2NWQ0My4uMGMxZjlhYzdl
M2NjMzIxNGYyNjVjNjkwMWNlNDFkNjg1YzEyZGUwNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzU3BhcnNlQ29sbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1NwYXJzZUNvbGxlY3Rpb24uaApAQCAtMjYsOCArMjYsNiBAQAogI2lmbmRlZiBC
M1NwYXJzZUNvbGxlY3Rpb25faAogI2RlZmluZSBCM1NwYXJzZUNvbGxlY3Rpb25faAogCi0jaWYg
RU5BQkxFKEIzX0pJVCkKLQogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CiAKQEAgLTE0MCw3ICsxMzgsNSBAQCBwcml2YXRlOgogCiB9IH0gLy8g
bmFtZXNwYWNlIEpTQzo6QjMKIAotI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCi0KICNlbmRpZiAv
LyBCM1NwYXJzZUNvbGxlY3Rpb25faAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0FsbG9jYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBbGxv
Y2F0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjM4MGRmMDAxYzVmMjJhNDg2
ZDZhYzhkMzg5ZTdjMjM5ZDBiNTlhNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FsbG9jYXRvci5oCisr
KyAvZGV2L251bGwKQEAgLTEsMjM5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBERkdBbGxvY2F0b3JfaAotI2RlZmluZSBERkdB
bGxvY2F0b3JfaAotCi0jaWYgRU5BQkxFKERGR19KSVQpCi0KLSNpbmNsdWRlICJERkdDb21tb24u
aCIKLSNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+Ci0KLW5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgREZHIHsKLQotLy8gQ3VzdG9tIHBvb2wgYWxsb2NhdG9yIGZvciBleGFjdGx5IG9uZSB0
eXBlICh0eXBlIFQpLiBJdCBoYXMgZmFzdCAoTygxKSwgb25seSBhIGZldwotLy8gaW5zdHJ1Y3Rp
b25zKSBhbGxvY2F0b3IsIGFuZCBhIHNpbWlsYXJseSBmYXN0IGZyZWUoKS4gUmVjeWNsaW5nIHdv
cmtzIGlmIGVpdGhlciBvZgotLy8gdGhlIGZvbGxvd2luZyBpcyB0cnVlOgotLy8gLSBUIGhhcyBh
IHRyaXZpYWwgZGVzdHJ1Y3Rvci4gSW4gdGhhdCBjYXNlIHlvdSBkb24ndCBoYXZlIHRvIGV2ZXIg
Y2FsbCBmcmVlKCkgb24KLS8vICAgYW55dGhpbmcuIFlvdSBjYW4ganVzdCBjYWxsIGZyZWVBbGwo
KSBpbnN0ZWFkLgotLy8gLSBZb3UgY2FsbCBmcmVlKCkgb24gYWxsIFQncyB0aGF0IHlvdSBhbGxv
Y2F0ZWQsIGFuZCBuZXZlciB1c2UgZnJlZUFsbCgpLgotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgot
Y2xhc3MgQWxsb2NhdG9yIHsKLXB1YmxpYzoKLSAgICBBbGxvY2F0b3IoKTsKLSAgICB+QWxsb2Nh
dG9yKCk7Ci0gICAgCi0gICAgdm9pZCogYWxsb2NhdGUoKTsgLy8gVXNlIHBsYWNlbWVudCBuZXcg
dG8gYWxsb2NhdGUsIGFuZCBhdm9pZCB1c2luZyB0aGlzIG1ldGhvZC4KLSAgICB2b2lkIGZyZWUo
VCopOyAvLyBDYWxsIHRoaXMgbWV0aG9kIHRvIGRlbGV0ZTsgbmV2ZXIgdXNlICdkZWxldGUnIGRp
cmVjdGx5LgotICAgIAotICAgIHZvaWQgZnJlZUFsbCgpOyAvLyBPbmx5IGNhbGwgdGhpcyBpZiB5
b3UndmUgZWl0aGVyIGZyZWVkIGV2ZXJ5dGhpbmcgb3IgaWYgVCBoYXMgYSB0cml2aWFsIGRlc3Ry
dWN0b3IuCi0gICAgdm9pZCByZXNldCgpOyAvLyBMaWtlIGZyZWVBbGwoKSwgYnV0IGFsc28gcmV0
dXJucyBhbGwgbWVtb3J5IHRvIHRoZSBPUy4KLSAgICAKLSAgICB1bnNpZ25lZCBpbmRleE9mKGNv
bnN0IFQqKTsKLSAgICAKLSAgICBzdGF0aWMgQWxsb2NhdG9yKiBhbGxvY2F0b3JPZihjb25zdCBU
Kik7Ci0gICAgCi1wcml2YXRlOgotICAgIHZvaWQqIGJ1bXBBbGxvY2F0ZSgpOwotICAgIHZvaWQq
IGZyZWVMaXN0QWxsb2NhdGUoKTsKLSAgICB2b2lkKiBhbGxvY2F0ZVNsb3coKTsKLQotICAgIHN0
cnVjdCBSZWdpb24gewotICAgICAgICBzdGF0aWMgc2l6ZV90IHNpemUoKSB7IHJldHVybiA2NCAq
IEtCOyB9Ci0gICAgICAgIHN0YXRpYyBzaXplX3QgaGVhZGVyU2l6ZSgpIHsgcmV0dXJuIHN0ZDo6
bWF4KHNpemVvZihSZWdpb24pLCBzaXplb2YoVCkpOyB9Ci0gICAgICAgIHN0YXRpYyB1bnNpZ25l
ZCBudW1iZXJPZlRoaW5nc1BlclJlZ2lvbigpIHsgcmV0dXJuIChzaXplKCkgLSBoZWFkZXJTaXpl
KCkpIC8gc2l6ZW9mKFQpOyB9Ci0gICAgICAgIFQqIGRhdGEoKSB7IHJldHVybiBiaXR3aXNlX2Nh
c3Q8VCo+KGJpdHdpc2VfY2FzdDxjaGFyKj4odGhpcykgKyBoZWFkZXJTaXplKCkpOyB9Ci0gICAg
ICAgIGJvb2wgaXNJblRoaXNSZWdpb24oY29uc3QgVCogcG9pbnRlcikgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KHBvaW50ZXIgLSBkYXRhKCkpIDwgbnVtYmVyT2ZUaGluZ3NQZXJSZWdp
b24oKTsgfQotICAgICAgICBzdGF0aWMgUmVnaW9uKiByZWdpb25Gb3IoY29uc3QgVCogcG9pbnRl
cikgeyByZXR1cm4gYml0d2lzZV9jYXN0PFJlZ2lvbio+KGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+
KHBvaW50ZXIpICYgfihzaXplKCkgLSAxKSk7IH0KLSAgICAgICAgCi0gICAgICAgIHZvaWQqIG1f
YWxsb2NhdGlvbjsKLSAgICAgICAgQWxsb2NhdG9yKiBtX2FsbG9jYXRvcjsKLSAgICAgICAgUmVn
aW9uKiBtX25leHQ7Ci0gICAgfTsKLSAgICAKLSAgICB2b2lkIGZyZWVSZWdpb25zU3RhcnRpbmdB
dChSZWdpb24qKTsKLSAgICB2b2lkIHN0YXJ0QnVtcGluZ0luKFJlZ2lvbiopOwotICAgIAotICAg
IFJlZ2lvbiogbV9yZWdpb25IZWFkOwotICAgIHZvaWQqKiBtX2ZyZWVMaXN0SGVhZDsKLSAgICBU
KiBtX2J1bXBFbmQ7Ci0gICAgdW5zaWduZWQgbV9idW1wUmVtYWluaW5nOwotfTsKLQotdGVtcGxh
dGU8dHlwZW5hbWUgVD4KLWlubGluZSBBbGxvY2F0b3I8VD46OkFsbG9jYXRvcigpCi0gICAgOiBt
X3JlZ2lvbkhlYWQoMCkKLSAgICAsIG1fZnJlZUxpc3RIZWFkKDApCi0gICAgLCBtX2J1bXBSZW1h
aW5pbmcoMCkKLXsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWlubGluZSBBbGxvY2F0b3I8
VD46On5BbGxvY2F0b3IoKQotewotICAgIHJlc2V0KCk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1l
IFQ+Ci1BTFdBWVNfSU5MSU5FIHZvaWQqIEFsbG9jYXRvcjxUPjo6YWxsb2NhdGUoKQotewotICAg
IHZvaWQqIHJlc3VsdCA9IGJ1bXBBbGxvY2F0ZSgpOwotICAgIGlmIChMSUtFTFkoISFyZXN1bHQp
KQotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIHJldHVybiBmcmVlTGlzdEFsbG9jYXRlKCk7
Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci12b2lkIEFsbG9jYXRvcjxUPjo6ZnJlZShUKiBv
YmplY3QpCi17Ci0gICAgb2JqZWN0LT5+VCgpOwotICAgIAotICAgIHZvaWQqKiBjZWxsID0gYml0
d2lzZV9jYXN0PHZvaWQqKj4ob2JqZWN0KTsKLSAgICAqY2VsbCA9IG1fZnJlZUxpc3RIZWFkOwot
ICAgIG1fZnJlZUxpc3RIZWFkID0gY2VsbDsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXZv
aWQgQWxsb2NhdG9yPFQ+OjpmcmVlQWxsKCkKLXsKLSAgICBpZiAoIW1fcmVnaW9uSGVhZCkgewot
ICAgICAgICBBU1NFUlQoIW1fYnVtcFJlbWFpbmluZyk7Ci0gICAgICAgIEFTU0VSVCghbV9mcmVl
TGlzdEhlYWQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIC8vIFNpbmNlIHRo
ZSBjYWxsZXIgaXMgb3B0aW5nIG91dCBvZiBjYWxsaW5nIHRoZSBkZXN0cnVjdG9yIGZvciBhbnkg
YWxsb2NhdGVkIHRoaW5nLAotICAgIC8vIHdlIGhhdmUgdHdvIGNob2ljZXMsIHBsdXMgYSBjb250
aW51dW0gYmV0d2Vlbjogd2UgY2FuIGVpdGhlciBqdXN0IGRlbGV0ZSBhbGwgcmVnaW9ucwotICAg
IC8vIChpLmUuIGNhbGwgcmVzZXQoKSksIG9yIHdlIGNhbiBtYWtlIGFsbCByZWdpb25zIGF2YWls
YWJsZSBmb3IgcmV1c2UuIFdlIGRvIHNvbWV0aGluZwotICAgIC8vIHRoYXQgb3B0aW1pemVzIGZv
ciAoYSkgc3BlZWQgb2YgZnJlZUFsbCgpLCAoYikgdGhlIGFzc3VtcHRpb24gdGhhdCBpZiB0aGUg
dXNlciBjYWxscwotICAgIC8vIGZyZWVBbGwoKSB0aGVuIHRoZXkgd2lsbCBwcm9iYWJseSBiZSBj
YWxsaW5nIGFsbG9jYXRlKCkgaW4gdGhlIG5lYXIgZnV0dXJlLiBOYW1lbHksCi0gICAgLy8gd2Ug
ZnJlZSBhbGwgYnV0IG9uZSByZWdpb24sIGFuZCBtYWtlIHRoZSByZW1haW5pbmcgcmVnaW9uIGEg
YnVtcCBhbGxvY2F0aW9uIHJlZ2lvbi4KLSAgICAKLSAgICBmcmVlUmVnaW9uc1N0YXJ0aW5nQXQo
bV9yZWdpb25IZWFkLT5tX25leHQpOwotICAgIAotICAgIG1fcmVnaW9uSGVhZC0+bV9uZXh0ID0g
MDsKLSAgICBtX2ZyZWVMaXN0SGVhZCA9IDA7Ci0gICAgc3RhcnRCdW1waW5nSW4obV9yZWdpb25I
ZWFkKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXZvaWQgQWxsb2NhdG9yPFQ+OjpyZXNl
dCgpCi17Ci0gICAgZnJlZVJlZ2lvbnNTdGFydGluZ0F0KG1fcmVnaW9uSGVhZCk7Ci0gICAgCi0g
ICAgbV9yZWdpb25IZWFkID0gMDsKLSAgICBtX2ZyZWVMaXN0SGVhZCA9IDA7Ci0gICAgbV9idW1w
UmVtYWluaW5nID0gMDsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXVuc2lnbmVkIEFsbG9j
YXRvcjxUPjo6aW5kZXhPZihjb25zdCBUKiBvYmplY3QpCi17Ci0gICAgdW5zaWduZWQgbnVtUmVn
aW9ucyA9IDA7Ci0gICAgZm9yIChSZWdpb24qIHJlZ2lvbiA9IG1fcmVnaW9uSGVhZDsgcmVnaW9u
OyByZWdpb24gPSByZWdpb24tPm1fbmV4dCkKLSAgICAgICAgbnVtUmVnaW9ucysrOwotICAgIHVu
c2lnbmVkIHJlZ2lvbkluZGV4ID0gMDsKLSAgICBmb3IgKFJlZ2lvbiogcmVnaW9uID0gbV9yZWdp
b25IZWFkOyByZWdpb247IHJlZ2lvbiA9IHJlZ2lvbi0+bV9uZXh0KSB7Ci0gICAgICAgIGlmIChy
ZWdpb24tPmlzSW5UaGlzUmVnaW9uKG9iamVjdCkpCi0gICAgICAgICAgICByZXR1cm4gKG51bVJl
Z2lvbnMgLSAxIC0gcmVnaW9uSW5kZXgpICogUmVnaW9uOjpudW1iZXJPZlRoaW5nc1BlclJlZ2lv
bigpICsgKG9iamVjdCAtIHJlZ2lvbi0+ZGF0YSgpKTsKLSAgICAgICAgcmVnaW9uSW5kZXgrKzsK
LSAgICB9Ci0gICAgQ1JBU0goKTsKLSAgICByZXR1cm4gMDsKLX0KLQotdGVtcGxhdGU8dHlwZW5h
bWUgVD4KLUFsbG9jYXRvcjxUPiogQWxsb2NhdG9yPFQ+OjphbGxvY2F0b3JPZihjb25zdCBUKiBv
YmplY3QpCi17Ci0gICAgcmV0dXJuIFJlZ2lvbjo6cmVnaW9uRm9yKG9iamVjdCktPm1fYWxsb2Nh
dG9yOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotQUxXQVlTX0lOTElORSB2b2lkKiBBbGxv
Y2F0b3I8VD46OmJ1bXBBbGxvY2F0ZSgpCi17Ci0gICAgaWYgKHVuc2lnbmVkIHJlbWFpbmluZyA9
IG1fYnVtcFJlbWFpbmluZykgewotICAgICAgICByZW1haW5pbmctLTsKLSAgICAgICAgbV9idW1w
UmVtYWluaW5nID0gcmVtYWluaW5nOwotICAgICAgICByZXR1cm4gbV9idW1wRW5kIC0gKHJlbWFp
bmluZyArIDEpOwotICAgIH0KLSAgICByZXR1cm4gMDsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUg
VD4KLXZvaWQqIEFsbG9jYXRvcjxUPjo6ZnJlZUxpc3RBbGxvY2F0ZSgpCi17Ci0gICAgdm9pZCoq
IHJlc3VsdCA9IG1fZnJlZUxpc3RIZWFkOwotICAgIGlmIChVTkxJS0VMWSghcmVzdWx0KSkKLSAg
ICAgICAgcmV0dXJuIGFsbG9jYXRlU2xvdygpOwotICAgIG1fZnJlZUxpc3RIZWFkID0gYml0d2lz
ZV9jYXN0PHZvaWQqKj4oKnJlc3VsdCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotdGVtcGxh
dGU8dHlwZW5hbWUgVD4KLXZvaWQqIEFsbG9jYXRvcjxUPjo6YWxsb2NhdGVTbG93KCkKLXsKLSAg
ICBBU1NFUlQoIW1fZnJlZUxpc3RIZWFkKTsKLSAgICBBU1NFUlQoIW1fYnVtcFJlbWFpbmluZyk7
Ci0gICAgCi0gICAgaWYgKGxvZ0NvbXBpbGF0aW9uQ2hhbmdlcygpKQotICAgICAgICBkYXRhTG9n
KCJBbGxvY2F0aW5nIGFub3RoZXIgYWxsb2NhdG9yIHJlZ2lvbi5cbiIpOwotCi0gICAgdm9pZCog
YWxsb2NhdGlvbiA9IGZhc3RBbGlnbmVkTWFsbG9jKFJlZ2lvbjo6c2l6ZSgpLCBSZWdpb246OnNp
emUoKSk7Ci0gICAgUmVnaW9uKiByZWdpb24gPSBzdGF0aWNfY2FzdDxSZWdpb24qPihhbGxvY2F0
aW9uKTsKLSAgICByZWdpb24tPm1fYWxsb2NhdGlvbiA9IGFsbG9jYXRpb247Ci0gICAgcmVnaW9u
LT5tX2FsbG9jYXRvciA9IHRoaXM7Ci0gICAgc3RhcnRCdW1waW5nSW4ocmVnaW9uKTsKLSAgICBy
ZWdpb24tPm1fbmV4dCA9IG1fcmVnaW9uSGVhZDsKLSAgICBtX3JlZ2lvbkhlYWQgPSByZWdpb247
Ci0gICAgCi0gICAgdm9pZCogcmVzdWx0ID0gYnVtcEFsbG9jYXRlKCk7Ci0gICAgQVNTRVJUKHJl
c3VsdCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXZv
aWQgQWxsb2NhdG9yPFQ+OjpmcmVlUmVnaW9uc1N0YXJ0aW5nQXQodHlwZW5hbWUgQWxsb2NhdG9y
PFQ+OjpSZWdpb24qIHJlZ2lvbikKLXsKLSAgICB3aGlsZSAocmVnaW9uKSB7Ci0gICAgICAgIFJl
Z2lvbiogbmV4dFJlZ2lvbiA9IHJlZ2lvbi0+bV9uZXh0OwotICAgICAgICBmYXN0QWxpZ25lZEZy
ZWUocmVnaW9uLT5tX2FsbG9jYXRpb24pOwotICAgICAgICByZWdpb24gPSBuZXh0UmVnaW9uOwot
ICAgIH0KLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXZvaWQgQWxsb2NhdG9yPFQ+OjpzdGFy
dEJ1bXBpbmdJbih0eXBlbmFtZSBBbGxvY2F0b3I8VD46OlJlZ2lvbiogcmVnaW9uKQotewotICAg
IG1fYnVtcEVuZCA9IHJlZ2lvbi0+ZGF0YSgpICsgUmVnaW9uOjpudW1iZXJPZlRoaW5nc1BlclJl
Z2lvbigpOwotICAgIG1fYnVtcFJlbWFpbmluZyA9IFJlZ2lvbjo6bnVtYmVyT2ZUaGluZ3NQZXJS
ZWdpb24oKTsKLX0KLQotfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwotCi0jZW5kaWYgLy8gRU5B
QkxFKERGR19KSVQpCi0KLSNlbmRpZiAvLyBERkdBbGxvY2F0b3JfaAotCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDM2ZDQ3NTljZjg3
MGMwYWQyNDVlNjFiOGJjODlkYzFhMjI3MjU3ZjUuLjAyNmQwODM4N2RhZGU2YjRkMWEyNjA5YTQ4
YTg4MjIyZjZmNGYwOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwCkBAIC03MTIsNDYgKzcxMiw0NiBAQCBwcml2YXRlOgogICAgIE5vZGUq
IGFkZFRvR3JhcGgoTm9kZVR5cGUgb3AsIE5vZGUqIGNoaWxkMSA9IDAsIE5vZGUqIGNoaWxkMiA9
IDAsIE5vZGUqIGNoaWxkMyA9IDApCiAgICAgewogICAgICAgICBOb2RlKiByZXN1bHQgPSBtX2dy
YXBoLmFkZE5vZGUoCi0gICAgICAgICAgICBTcGVjTm9uZSwgb3AsIGN1cnJlbnROb2RlT3JpZ2lu
KCksIEVkZ2UoY2hpbGQxKSwgRWRnZShjaGlsZDIpLAorICAgICAgICAgICAgb3AsIGN1cnJlbnRO
b2RlT3JpZ2luKCksIEVkZ2UoY2hpbGQxKSwgRWRnZShjaGlsZDIpLAogICAgICAgICAgICAgRWRn
ZShjaGlsZDMpKTsKICAgICAgICAgcmV0dXJuIGFkZFRvR3JhcGgocmVzdWx0KTsKICAgICB9CiAg
ICAgTm9kZSogYWRkVG9HcmFwaChOb2RlVHlwZSBvcCwgRWRnZSBjaGlsZDEsIEVkZ2UgY2hpbGQy
ID0gRWRnZSgpLCBFZGdlIGNoaWxkMyA9IEVkZ2UoKSkKICAgICB7CiAgICAgICAgIE5vZGUqIHJl
c3VsdCA9IG1fZ3JhcGguYWRkTm9kZSgKLSAgICAgICAgICAgIFNwZWNOb25lLCBvcCwgY3VycmVu
dE5vZGVPcmlnaW4oKSwgY2hpbGQxLCBjaGlsZDIsIGNoaWxkMyk7CisgICAgICAgICAgICBvcCwg
Y3VycmVudE5vZGVPcmlnaW4oKSwgY2hpbGQxLCBjaGlsZDIsIGNoaWxkMyk7CiAgICAgICAgIHJl
dHVybiBhZGRUb0dyYXBoKHJlc3VsdCk7CiAgICAgfQogICAgIE5vZGUqIGFkZFRvR3JhcGgoTm9k
ZVR5cGUgb3AsIE9wSW5mbyBpbmZvLCBOb2RlKiBjaGlsZDEgPSAwLCBOb2RlKiBjaGlsZDIgPSAw
LCBOb2RlKiBjaGlsZDMgPSAwKQogICAgIHsKICAgICAgICAgTm9kZSogcmVzdWx0ID0gbV9ncmFw
aC5hZGROb2RlKAotICAgICAgICAgICAgU3BlY05vbmUsIG9wLCBjdXJyZW50Tm9kZU9yaWdpbigp
LCBpbmZvLCBFZGdlKGNoaWxkMSksIEVkZ2UoY2hpbGQyKSwKKyAgICAgICAgICAgIG9wLCBjdXJy
ZW50Tm9kZU9yaWdpbigpLCBpbmZvLCBFZGdlKGNoaWxkMSksIEVkZ2UoY2hpbGQyKSwKICAgICAg
ICAgICAgIEVkZ2UoY2hpbGQzKSk7CiAgICAgICAgIHJldHVybiBhZGRUb0dyYXBoKHJlc3VsdCk7
CiAgICAgfQogICAgIE5vZGUqIGFkZFRvR3JhcGgoTm9kZVR5cGUgb3AsIE9wSW5mbyBpbmZvLCBF
ZGdlIGNoaWxkMSwgRWRnZSBjaGlsZDIgPSBFZGdlKCksIEVkZ2UgY2hpbGQzID0gRWRnZSgpKQog
ICAgIHsKLSAgICAgICAgTm9kZSogcmVzdWx0ID0gbV9ncmFwaC5hZGROb2RlKFNwZWNOb25lLCBv
cCwgY3VycmVudE5vZGVPcmlnaW4oKSwgaW5mbywgY2hpbGQxLCBjaGlsZDIsIGNoaWxkMyk7Cisg
ICAgICAgIE5vZGUqIHJlc3VsdCA9IG1fZ3JhcGguYWRkTm9kZShvcCwgY3VycmVudE5vZGVPcmln
aW4oKSwgaW5mbywgY2hpbGQxLCBjaGlsZDIsIGNoaWxkMyk7CiAgICAgICAgIHJldHVybiBhZGRU
b0dyYXBoKHJlc3VsdCk7CiAgICAgfQogICAgIE5vZGUqIGFkZFRvR3JhcGgoTm9kZVR5cGUgb3As
IE9wSW5mbyBpbmZvMSwgT3BJbmZvIGluZm8yLCBOb2RlKiBjaGlsZDEgPSAwLCBOb2RlKiBjaGls
ZDIgPSAwLCBOb2RlKiBjaGlsZDMgPSAwKQogICAgIHsKICAgICAgICAgTm9kZSogcmVzdWx0ID0g
bV9ncmFwaC5hZGROb2RlKAotICAgICAgICAgICAgU3BlY05vbmUsIG9wLCBjdXJyZW50Tm9kZU9y
aWdpbigpLCBpbmZvMSwgaW5mbzIsCisgICAgICAgICAgICBvcCwgY3VycmVudE5vZGVPcmlnaW4o
KSwgaW5mbzEsIGluZm8yLAogICAgICAgICAgICAgRWRnZShjaGlsZDEpLCBFZGdlKGNoaWxkMiks
IEVkZ2UoY2hpbGQzKSk7CiAgICAgICAgIHJldHVybiBhZGRUb0dyYXBoKHJlc3VsdCk7CiAgICAg
fQogICAgIE5vZGUqIGFkZFRvR3JhcGgoTm9kZVR5cGUgb3AsIE9wSW5mbyBpbmZvMSwgT3BJbmZv
IGluZm8yLCBFZGdlIGNoaWxkMSwgRWRnZSBjaGlsZDIgPSBFZGdlKCksIEVkZ2UgY2hpbGQzID0g
RWRnZSgpKQogICAgIHsKICAgICAgICAgTm9kZSogcmVzdWx0ID0gbV9ncmFwaC5hZGROb2RlKAot
ICAgICAgICAgICAgU3BlY05vbmUsIG9wLCBjdXJyZW50Tm9kZU9yaWdpbigpLCBpbmZvMSwgaW5m
bzIsIGNoaWxkMSwgY2hpbGQyLCBjaGlsZDMpOworICAgICAgICAgICAgb3AsIGN1cnJlbnROb2Rl
T3JpZ2luKCksIGluZm8xLCBpbmZvMiwgY2hpbGQxLCBjaGlsZDIsIGNoaWxkMyk7CiAgICAgICAg
IHJldHVybiBhZGRUb0dyYXBoKHJlc3VsdCk7CiAgICAgfQogICAgIAogICAgIE5vZGUqIGFkZFRv
R3JhcGgoTm9kZTo6VmFyQXJnVGFnLCBOb2RlVHlwZSBvcCwgT3BJbmZvIGluZm8xLCBPcEluZm8g
aW5mbzIpCiAgICAgewogICAgICAgICBOb2RlKiByZXN1bHQgPSBtX2dyYXBoLmFkZE5vZGUoCi0g
ICAgICAgICAgICBTcGVjTm9uZSwgTm9kZTo6VmFyQXJnLCBvcCwgY3VycmVudE5vZGVPcmlnaW4o
KSwgaW5mbzEsIGluZm8yLAorICAgICAgICAgICAgTm9kZTo6VmFyQXJnLCBvcCwgY3VycmVudE5v
ZGVPcmlnaW4oKSwgaW5mbzEsIGluZm8yLAogICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0No
aWxkcmVuLnNpemUoKSAtIG1fbnVtUGFzc2VkVmFyQXJncywgbV9udW1QYXNzZWRWYXJBcmdzKTsK
ICAgICAgICAgYWRkVG9HcmFwaChyZXN1bHQpOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwCmluZGV4IDYzMTAx
ZmY3MTA5MWIyZjBlYWIzZTA5MGEzMmY2ODZhNTM0Y2U4MzIuLjY3YjM1NzQzODJhYWQ3MDIxZjNj
YTc2ODVmYTNhNDljZGY0ZTNmZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcApAQCAtOTAsNyArOTAsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBjYXNlIFBoYW50
b206CiAgICAgICAgICAgICAgICAgICAgIGlmICghbm9kZS0+Y2hpbGQxKCkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9hbGxvY2F0b3IuZnJlZShub2RlKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG1fZ3JhcGguZGVsZXRlTm9kZShub2RlKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgICAgIHN3aXRjaCAobm9kZS0+Y2hpbGQxKCktPm9wKCkpIHsKQEAgLTExMiw3ICsxMTIsNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgYmxvY2stPnJlc2l6ZSh0b0luZGV4KTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBwaGlJbmRleCA9IGJsb2NrLT5waGlzLnNp
emUoKTsgcGhpSW5kZXgtLTspCi0gICAgICAgICAgICAgICAgbV9ncmFwaC5tX2FsbG9jYXRvci5m
cmVlKGJsb2NrLT5waGlzW3BoaUluZGV4XSk7CisgICAgICAgICAgICAgICAgbV9ncmFwaC5kZWxl
dGVOb2RlKGJsb2NrLT5waGlzW3BoaUluZGV4XSk7CiAgICAgICAgICAgICBibG9jay0+cGhpcy5y
ZXNpemUoMCk7CiAgICAgICAgIH0KICAgICB9CkBAIC0xMzIsNyArMTMyLDcgQEAgcHJpdmF0ZToK
ICAgICAKICAgICBBTFdBWVNfSU5MSU5FIE5vZGUqIGFkZFBoaVNpbGVudGx5KEJhc2ljQmxvY2sq
IGJsb2NrLCBjb25zdCBOb2RlT3JpZ2luJiBvcmlnaW4sIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFy
aWFibGUpCiAgICAgewotICAgICAgICBOb2RlKiByZXN1bHQgPSBtX2dyYXBoLmFkZE5vZGUoU3Bl
Y05vbmUsIFBoaSwgb3JpZ2luLCBPcEluZm8odmFyaWFibGUpKTsKKyAgICAgICAgTm9kZSogcmVz
dWx0ID0gbV9ncmFwaC5hZGROb2RlKFBoaSwgb3JpZ2luLCBPcEluZm8odmFyaWFibGUpKTsKICAg
ICAgICAgYmxvY2stPnBoaXMuYXBwZW5kKHJlc3VsdCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbGVhblVw
UGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbGVhblVwUGhhc2UuY3Bw
CmluZGV4IGRmMmVmNTJhMmY4YzMwNThmYzE2NWFjN2RiMjhjY2E2ODk1ZDI3N2QuLmIwYmI4Y2M0
NzAwZDVjZWIyZmY2NjNjMGU1ZmI1YWFiOWUxMWM2NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2xlYW5VcFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NsZWFuVXBQaGFzZS5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAo
a2lsbCkKLSAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX2FsbG9jYXRvci5mcmVlKG5vZGUp
OworICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmRlbGV0ZU5vZGUobm9kZSk7CiAgICAgICAg
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBibG9jay0+YXQodGFyZ2V0SW5kZXgr
KykgPSBub2RlOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAppbmRleCA5MzkwYWRmNjgxNTViNGRh
ZjIzZGVmMDJhYmVlMWJlM2FmYzA4NWU2Li4yZDExMzA3ODQ3MjE3ZjEzMWU0ZDk0OTE3NjAwMzVi
MzM5ZmY1ODAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0
YW50Rm9sZGluZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nv
bnN0YW50Rm9sZGluZ1BoYXNlLmNwcApAQCAtMTAxLDcgKzEwMSw3IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgICAgICBtX2dyYXBoLmludmFsaWRhdGVOb2RlTGl2ZW5lc3MoKTsKIAogICAgICAgICAg
ICAgICAgIGZvciAoTm9kZSogbm9kZSA6IG5vZGVzVG9EZWxldGUpCi0gICAgICAgICAgICAgICAg
ICAgIG1fZ3JhcGgubV9hbGxvY2F0b3IuZnJlZShub2RlKTsKKyAgICAgICAgICAgICAgICAgICAg
bV9ncmFwaC5kZWxldGVOb2RlKG5vZGUpOwogCiAgICAgICAgICAgICAgICAgbV9ncmFwaC5pbnZh
bGlkYXRlQ0ZHKCk7CiAgICAgICAgICAgICAgICAgbV9ncmFwaC5yZXNldFJlYWNoYWJpbGl0eSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEhvaXN0
aW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEhvaXN0
aW5nUGhhc2UuY3BwCmluZGV4IGY1NjMyZmE2NDMyMjMxNDY5MzJkYTNiMTNiMTUwZTg0Y2U3YjAw
MDMuLjhhNDViMzRiZWEyZmQwZDE1YTgxNGI4ZWY5NDc5ZDMyNmY3NGZjMWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRIb2lzdGluZ1BoYXNlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50SG9pc3RpbmdQaGFzZS5j
cHAKQEAgLTEzMCw3ICsxMzAsNyBAQCBwdWJsaWM6CiAgICAgICAgIC8vIEFuZCBmaW5hbGx5IGZy
ZWUgdGhlIGNvbnN0YW50cyB0aGF0IHdlIHJlbW92ZWQuCiAgICAgICAgIG1fZ3JhcGguaW52YWxp
ZGF0ZU5vZGVMaXZlbmVzcygpOwogICAgICAgICBmb3IgKE5vZGUqIG5vZGUgOiB0b0ZyZWUpCi0g
ICAgICAgICAgICBtX2dyYXBoLm1fYWxsb2NhdG9yLmZyZWUobm9kZSk7CisgICAgICAgICAgICBt
X2dyYXBoLmRlbGV0ZU5vZGUobm9kZSk7CiAgICAgICAgIAogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RDRVBoYXNl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRENFUGhhc2UuY3BwCmluZGV4IDZh
NmFmNzU3MjQ2OWNkZGVlNDk2MzIwNDU1ODdmYzdlNTYyMmIxZDAuLmE3MGE4Njk4ZDQ5ZTMxYzll
NjMyYTlmNjc2MTY3MDk0OWM2OWY2MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRENFUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RENFUGhhc2UuY3BwCkBAIC05Myw3ICs5Myw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIHBoaUluZGV4ID0gMDsgcGhpSW5kZXggPCBibG9jay0+cGhpcy5zaXplKCk7ICsr
cGhpSW5kZXgpIHsKICAgICAgICAgICAgICAgICBOb2RlKiBwaGkgPSBibG9jay0+cGhpc1twaGlJ
bmRleF07CiAgICAgICAgICAgICAgICAgaWYgKCFwaGktPnNob3VsZEdlbmVyYXRlKCkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX2FsbG9jYXRvci5mcmVlKHBoaSk7CisgICAgICAg
ICAgICAgICAgICAgIG1fZ3JhcGguZGVsZXRlTm9kZShwaGkpOwogICAgICAgICAgICAgICAgICAg
ICBibG9jay0+cGhpc1twaGlJbmRleC0tXSA9IGJsb2NrLT5waGlzLmxhc3QoKTsKICAgICAgICAg
ICAgICAgICAgICAgYmxvY2stPnBoaXMucmVtb3ZlTGFzdCgpOwogICAgICAgICAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmNwcAppbmRleCBmZjMyNTdhOWIzZjQ0
M2JlNzAxMDgxZDc3Nzg0MzQ4NTRiMWNmNTdlLi5lMTk5NzczNTQ0NDE2NGZjYjYwNWIyYWQ3ZTUz
NzBjN2Q1Yjc1MDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ry
aXZlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCkBA
IC0xMDgsNyArMTA4LDcgQEAgc3RhdGljIENvbXBpbGF0aW9uUmVzdWx0IGNvbXBpbGVJbXBsKAog
ICAgICAgICByZXR1cm4gQ29tcGlsYXRpb25EZWZlcnJlZDsKICAgICB9CiAgICAgCi0gICAgcGxh
bi0+Y29tcGlsZUluVGhyZWFkKCp2bS5kZmdTdGF0ZSwgMCk7CisgICAgcGxhbi0+Y29tcGlsZUlu
VGhyZWFkKG51bGxwdHIpOwogICAgIHJldHVybiBwbGFuLT5maW5hbGl6ZVdpdGhvdXROb3RpZnlp
bmdDYWxsYmFjaygpOwogfQogI2Vsc2UgLy8gRU5BQkxFKERGR19KSVQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHR3JhcGguY3BwCmluZGV4IGRhMjZhNmQ5MDliYzkxMjFlZmZjZjJiZTEzNmIz
MzU0ZmMxODVjNzIuLjMyMGY5ZjFkMTM2NDk3NWI3MGFjYjJkYWQ4OWNlMzc2ZDYwMTg0NWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCkBAIC02NiwxMiArNjYsMTEgQEAg
c3RhdGljIGNvbnN0IGNoYXIqIGRmZ09wTmFtZXNbXSA9IHsKICN1bmRlZiBTVFJJTkdJWkVfREZH
X09QX0VOVU0KIH07CiAKLUdyYXBoOjpHcmFwaChWTSYgdm0sIFBsYW4mIHBsYW4sIExvbmdMaXZl
ZFN0YXRlJiBsb25nTGl2ZWRTdGF0ZSkKK0dyYXBoOjpHcmFwaChWTSYgdm0sIFBsYW4mIHBsYW4p
CiAgICAgOiBtX3ZtKHZtKQogICAgICwgbV9wbGFuKHBsYW4pCiAgICAgLCBtX2NvZGVCbG9jayht
X3BsYW4uY29kZUJsb2NrKQogICAgICwgbV9wcm9maWxlZEJsb2NrKG1fY29kZUJsb2NrLT5hbHRl
cm5hdGl2ZSgpKQotICAgICwgbV9hbGxvY2F0b3IobG9uZ0xpdmVkU3RhdGUubV9hbGxvY2F0b3Ip
CiAgICAgLCBtX2NmZyhzdGQ6Om1ha2VfdW5pcXVlPENGRz4oKnRoaXMpKQogICAgICwgbV9uZXh0
TWFjaGluZUxvY2FsKDApCiAgICAgLCBtX2ZpeHBvaW50U3RhdGUoQmVmb3JlRml4cG9pbnQpCkBA
IC04NywxNyArODYsNiBAQCBHcmFwaDo6R3JhcGgoVk0mIHZtLCBQbGFuJiBwbGFuLCBMb25nTGl2
ZWRTdGF0ZSYgbG9uZ0xpdmVkU3RhdGUpCiAKIEdyYXBoOjp+R3JhcGgoKQogewotICAgIGZvciAo
QmxvY2tJbmRleCBibG9ja0luZGV4ID0gbnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgtLTspIHsKLSAg
ICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSB0aGlzLT5ibG9jayhibG9ja0luZGV4KTsKLSAgICAg
ICAgaWYgKCFibG9jaykKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGZvciAodW5z
aWduZWQgcGhpSW5kZXggPSBibG9jay0+cGhpcy5zaXplKCk7IHBoaUluZGV4LS07KQotICAgICAg
ICAgICAgbV9hbGxvY2F0b3IuZnJlZShibG9jay0+cGhpc1twaGlJbmRleF0pOwotICAgICAgICBm
b3IgKHVuc2lnbmVkIG5vZGVJbmRleCA9IGJsb2NrLT5zaXplKCk7IG5vZGVJbmRleC0tOykKLSAg
ICAgICAgICAgIG1fYWxsb2NhdG9yLmZyZWUoYmxvY2stPmF0KG5vZGVJbmRleCkpOwotICAgIH0K
LSAgICBtX2FsbG9jYXRvci5mcmVlQWxsKCk7CiB9CiAKIGNvbnN0IGNoYXIgKkdyYXBoOjpvcE5h
bWUoTm9kZVR5cGUgb3ApCkBAIC01NzksNiArNTY3LDE3IEBAIHZvaWQgR3JhcGg6OmR1bXAoUHJp
bnRTdHJlYW0mIG91dCwgRHVtcENvbnRleHQqIGNvbnRleHQpCiAgICAgfQogfQogCit2b2lkIEdy
YXBoOjpkZWxldGVOb2RlKE5vZGUqIG5vZGUpCit7CisgICAgaWYgKHZhbGlkYXRpb25FbmFibGVk
KCkgJiYgbV9mb3JtID09IFNTQSkgeworICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDog
YmxvY2tzSW5OYXR1cmFsT3JkZXIoKSkgeworICAgICAgICAgICAgREZHX0FTU0VSVCgqdGhpcywg
bm9kZSwgIWJsb2NrLT5zc2EtPmxpdmVBdEhlYWQuY29udGFpbnMobm9kZSkpOworICAgICAgICAg
ICAgREZHX0FTU0VSVCgqdGhpcywgbm9kZSwgIWJsb2NrLT5zc2EtPmxpdmVBdFRhaWwuY29udGFp
bnMobm9kZSkpOworICAgICAgICB9CisgICAgfQorICAgIG1fbm9kZXMucmVtb3ZlKG5vZGUpOwor
fQorCiB2b2lkIEdyYXBoOjpkZXRocmVhZCgpCiB7CiAgICAgaWYgKG1fZm9ybSA9PSBMb2FkU3Rv
cmUgfHwgbV9mb3JtID09IFNTQSkKQEAgLTc0Nyw5ICs3NDYsOSBAQCB2b2lkIEdyYXBoOjpraWxs
QmxvY2tBbmRJdHNDb250ZW50cyhCYXNpY0Jsb2NrKiBibG9jaykKICAgICBpZiAoYXV0byYgc3Nh
RGF0YSA9IGJsb2NrLT5zc2EpCiAgICAgICAgIHNzYURhdGEtPmludmFsaWRhdGUoKTsKICAgICBm
b3IgKHVuc2lnbmVkIHBoaUluZGV4ID0gYmxvY2stPnBoaXMuc2l6ZSgpOyBwaGlJbmRleC0tOykK
LSAgICAgICAgbV9hbGxvY2F0b3IuZnJlZShibG9jay0+cGhpc1twaGlJbmRleF0pOwotICAgIGZv
ciAodW5zaWduZWQgbm9kZUluZGV4ID0gYmxvY2stPnNpemUoKTsgbm9kZUluZGV4LS07KQotICAg
ICAgICBtX2FsbG9jYXRvci5mcmVlKGJsb2NrLT5hdChub2RlSW5kZXgpKTsKKyAgICAgICAgZGVs
ZXRlTm9kZShibG9jay0+cGhpc1twaGlJbmRleF0pOworICAgIGZvciAoTm9kZSogbm9kZSA6ICpi
bG9jaykKKyAgICAgICAgZGVsZXRlTm9kZShub2RlKTsKICAgICAKICAgICBraWxsQmxvY2soYmxv
Y2spOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCmluZGV4IDZjOGM3N2I1MTY2
NmEzMTAzODljZjE2NGFmYmQ0NTJmYWQyNjFmMzUuLjk2YjQ3ZDE5NzA5YzViYmE2NzgyMzljNzMw
NDM5Njk3NGZlMTQwMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
R3JhcGguaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKQEAgLTI5
LDE0ICsyOSwxMyBAQAogI2lmIEVOQUJMRShERkdfSklUKQogCiAjaW5jbHVkZSAiQXNzZW1ibHlI
ZWxwZXJzLmgiCisjaW5jbHVkZSAiQjNTcGFyc2VDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiQnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgog
I2luY2x1ZGUgIkRGR0FyZ3VtZW50UG9zaXRpb24uaCIKICNpbmNsdWRlICJERkdCYXNpY0Jsb2Nr
LmgiCiAjaW5jbHVkZSAiREZHRnJvemVuVmFsdWUuaCIKLSNpbmNsdWRlICJERkdMb25nTGl2ZWRT
dGF0ZS5oIgogI2luY2x1ZGUgIkRGR05vZGUuaCIKLSNpbmNsdWRlICJERkdOb2RlQWxsb2NhdG9y
LmgiCiAjaW5jbHVkZSAiREZHUGxhbi5oIgogI2luY2x1ZGUgIkRGR1Byb3BlcnR5VHlwZUtleS5o
IgogI2luY2x1ZGUgIkRGR1NjYW5uYWJsZS5oIgpAQCAtMTI0LDcgKzEyMyw3IEBAIGVudW0gQWRk
U3BlY3VsYXRpb25Nb2RlIHsKIC8vIE5vZGVzIHRoYXQgYXJlICdkZWFkJyByZW1haW4gaW4gdGhl
IHZlY3RvciB3aXRoIHJlZkNvdW50IDAuCiBjbGFzcyBHcmFwaCA6IHB1YmxpYyB2aXJ0dWFsIFNj
YW5uYWJsZSB7CiBwdWJsaWM6Ci0gICAgR3JhcGgoVk0mLCBQbGFuJiwgTG9uZ0xpdmVkU3RhdGUm
KTsKKyAgICBHcmFwaChWTSYsIFBsYW4mKTsKICAgICB+R3JhcGgoKTsKICAgICAKICAgICB2b2lk
IGNoYW5nZUNoaWxkKEVkZ2UmIGVkZ2UsIE5vZGUqIG5ld05vZGUpCkBAIC0xODIsMTIgKzE4MSwy
MCBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIFBhcmFt
cz4KKyAgICBOb2RlKiBhZGROb2RlKFBhcmFtcy4uLiBwYXJhbXMpCisgICAgeworICAgICAgICBO
b2RlKiBub2RlID0gbmV3IE5vZGUocGFyYW1zLi4uKTsKKyAgICAgICAgbV9ub2Rlcy5hZGQoc3Rk
Ojp1bmlxdWVfcHRyPE5vZGU+KG5vZGUpKTsKKyAgICAgICAgcmV0dXJuIG5vZGU7CisgICAgfQor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIFBhcmFtcz4KICAgICBOb2RlKiBhZGROb2RlKFNwZWN1
bGF0ZWRUeXBlIHR5cGUsIFBhcmFtcy4uLiBwYXJhbXMpCiAgICAgewotICAgICAgICBOb2RlKiBu
b2RlID0gbmV3IChtX2FsbG9jYXRvcikgTm9kZShwYXJhbXMuLi4pOworICAgICAgICBOb2RlKiBu
b2RlID0gYWRkTm9kZShwYXJhbXMuLi4pOwogICAgICAgICBub2RlLT5wcmVkaWN0KHR5cGUpOwog
ICAgICAgICByZXR1cm4gbm9kZTsKICAgICB9CisgICAgdm9pZCBkZWxldGVOb2RlKE5vZGUqKTsK
IAogICAgIHZvaWQgZGV0aHJlYWQoKTsKICAgICAKQEAgLTgyMiw4ICs4MjksNiBAQCBwdWJsaWM6
CiAgICAgUGxhbiYgbV9wbGFuOwogICAgIENvZGVCbG9jayogbV9jb2RlQmxvY2s7CiAgICAgQ29k
ZUJsb2NrKiBtX3Byb2ZpbGVkQmxvY2s7Ci0gICAgCi0gICAgTm9kZUFsbG9jYXRvciYgbV9hbGxv
Y2F0b3I7CiAKICAgICBWZWN0b3I8IFJlZlB0cjxCYXNpY0Jsb2NrPiAsIDg+IG1fYmxvY2tzOwog
ICAgIFZlY3RvcjxFZGdlLCAxNj4gbV92YXJBcmdDaGlsZHJlbjsKQEAgLTkxMiw2ICs5MTcsNyBA
QCBwdWJsaWM6CiAgICAgYm9vbCBtX2hhc0RlYnVnZ2VyRW5hYmxlZDsKICAgICBib29sIG1faGFz
RXhjZXB0aW9uSGFuZGxlcnMgeyBmYWxzZSB9OwogcHJpdmF0ZToKKyAgICB2b2lkIGFkb3B0Tm9k
ZU91dE9mTGluZShOb2RlJik7CiAKICAgICBib29sIGlzU3RyaW5nUHJvdG90eXBlTWV0aG9kU2Fu
ZShKU0dsb2JhbE9iamVjdCosIFVuaXF1ZWRTdHJpbmdJbXBsKik7CiAKQEAgLTk0NCw2ICs5NTAs
OCBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgcmV0dXJuIGJ5dGVjb2RlQ2FuVHJ1bmNh
dGVJbnRlZ2VyKGFkZC0+YXJpdGhOb2RlRmxhZ3MoKSkgPyBTcGVjdWxhdGVJbnQzMkFuZFRydW5j
YXRlQ29uc3RhbnRzIDogRG9udFNwZWN1bGF0ZUludDMyOwogICAgIH0KKworICAgIEIzOjpTcGFy
c2VDb2xsZWN0aW9uPE5vZGU+IG1fbm9kZXM7CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
REZHCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xJQ01QaGFzZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xJQ01QaGFzZS5jcHAKaW5kZXggZGVl
ZDIwYjFiMzA3MjBjNDBkYWQ0ODAxODRjY2U3ZTI2OThmNzk0Ni4uZTYwOTc2NGU4NTljZjgwZGRh
YzU4YjNjNDJjMDcwNWMxMmU5MjYzYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdMSUNNUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
TElDTVBoYXNlLmNwcApAQCAtMzQxLDcgKzM0MSw3IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIGNv
ZGUuIEJ1dCBmb3Igbm93IHdlIGp1c3QgYXNzZXJ0IHRoYXQncyB0aGUgY2FzZS4KICAgICAgICAg
REZHX0FTU0VSVChtX2dyYXBoLCBub2RlLCAhKG5vZGUtPmZsYWdzKCkgJiBOb2RlSGFzVmFyQXJn
cykpOwogICAgICAgICAKLSAgICAgICAgbm9kZVJlZiA9IG1fZ3JhcGguYWRkTm9kZShTcGVjTm9u
ZSwgQ2hlY2ssIG9yaWdpbmFsT3JpZ2luLCBub2RlLT5jaGlsZHJlbik7CisgICAgICAgIG5vZGVS
ZWYgPSBtX2dyYXBoLmFkZE5vZGUoQ2hlY2ssIG9yaWdpbmFsT3JpZ2luLCBub2RlLT5jaGlsZHJl
bik7CiAgICAgICAgIAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xvbmdMaXZlZFN0YXRlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTG9uZ0xpdmVkU3RhdGUuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA3YTJmMmYxZjBjOWY2ZjM4YTgyNTlhMTM2YTFkMmE2MzY5NTU4MWQ4Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTG9uZ0xpdmVkU3RhdGUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
NTEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiREZHTG9uZ0xpdmVkU3RhdGUuaCIKLQot
I2lmIEVOQUJMRShERkdfSklUKQotCi0jaW5jbHVkZSAiSlNDSW5saW5lcy5oIgotCi1uYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7Ci0KLUxvbmdMaXZlZFN0YXRlOjpMb25nTGl2ZWRTdGF0
ZSgpCi17Ci19Ci0KLUxvbmdMaXZlZFN0YXRlOjp+TG9uZ0xpdmVkU3RhdGUoKQotewotfQotCi12
b2lkIExvbmdMaXZlZFN0YXRlOjpzaHJpbmtUb0ZpdCgpCi17Ci0gICAgbV9hbGxvY2F0b3IucmVz
ZXQoKTsKLX0KLQotfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwotCi0jZW5kaWYgLy8gRU5BQkxF
KERGR19KSVQpCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTG9u
Z0xpdmVkU3RhdGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTG9uZ0xpdmVkU3Rh
dGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzdmYWIwNDA3Nzk5YjFhYmNkMjBi
MmU4MGY5ZGQ0MWUzNmYyZDljMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xvbmdMaXZlZFN0YXRlLmgK
KysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgREZHTG9uZ0xpdmVkU3RhdGVfaAotI2RlZmlu
ZSBERkdMb25nTGl2ZWRTdGF0ZV9oCi0KLSNpZiBFTkFCTEUoREZHX0pJVCkKLQotI2luY2x1ZGUg
IkRGR05vZGVBbGxvY2F0b3IuaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7
Ci0KLWNsYXNzIExvbmdMaXZlZFN0YXRlIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsg
V1RGX01BS0VfTk9OQ09QWUFCTEUoTG9uZ0xpdmVkU3RhdGUpOwotcHVibGljOgotICAgIExvbmdM
aXZlZFN0YXRlKCk7Ci0gICAgfkxvbmdMaXZlZFN0YXRlKCk7Ci0gICAgCi0gICAgdm9pZCBzaHJp
bmtUb0ZpdCgpOwotICAgIAotICAgIE5vZGVBbGxvY2F0b3IgbV9hbGxvY2F0b3I7Ci19OwotCi19
IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCi0KLSNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKLQot
I2VuZGlmIC8vIERGR0xvbmdMaXZlZFN0YXRlX2gKLQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZS5jcHAKaW5kZXggNDhmMWQ1NTI0MDQzNTVhYzdiYTNmMTgyYTMwZTljZDgxY2QxMGMwOC4u
NDRiMjg0NWNkZTBkZWNkZTZlYmQ1MzE0OTE3YTQ5ZTExN2EzYjhkNiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGUuY3BwCkBAIC0yOSw3ICsyOSw2IEBACiAjaWYgRU5BQkxFKERGR19K
SVQpCiAKICNpbmNsdWRlICJERkdHcmFwaC5oIgotI2luY2x1ZGUgIkRGR05vZGVBbGxvY2F0b3Iu
aCIKICNpbmNsdWRlICJERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lu
bGluZXMuaCIKIApAQCAtNjQsMTEgKzYzLDYgQEAgdm9pZCBCcmFuY2hUYXJnZXQ6OmR1bXAoUHJp
bnRTdHJlYW0mIG91dCkgY29uc3QKICAgICAgICAgb3V0LnByaW50KCIvdzoiLCBjb3VudCk7CiB9
CiAKLXVuc2lnbmVkIE5vZGU6OmluZGV4KCkgY29uc3QKLXsKLSAgICByZXR1cm4gTm9kZUFsbG9j
YXRvcjo6YWxsb2NhdG9yT2YodGhpcyktPmluZGV4T2YodGhpcyk7Ci19Ci0KIGJvb2wgTm9kZTo6
aGFzVmFyaWFibGVBY2Nlc3NEYXRhKEdyYXBoJiBncmFwaCkKIHsKICAgICBzd2l0Y2ggKG9wKCkp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5kZXggNTYwZGE0YjkyODYzNGVjMjVi
MDVlMDMzYThjZmM4ZDlhOGZmN2E5Zi4uNWM0OGNmMTc0NjE3ZWI0ZmFjMzYwZDEwNzZmN2VmNjky
MGY1ZGM5MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKQEAgLTI4LDYgKzI4LDcg
QEAKIAogI2lmIEVOQUJMRShERkdfSklUKQogCisjaW5jbHVkZSAiQjNTcGFyc2VDb2xsZWN0aW9u
LmgiCiAjaW5jbHVkZSAiQmFzaWNCbG9ja0xvY2F0aW9uLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2Nr
LmgiCiAjaW5jbHVkZSAiREZHQWJzdHJhY3RWYWx1ZS5oIgpAQCAtMjMwLDYgKzIzMSw4IEBAIHN0
cnVjdCBTdGFja0FjY2Vzc0RhdGEgewogLy8KIC8vIE5vZGUgcmVwcmVzZW50cyBhIHNpbmdsZSBv
cGVyYXRpb24gaW4gdGhlIGRhdGEgZmxvdyBncmFwaC4KIHN0cnVjdCBOb2RlIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKICAgICBlbnVtIFZhckFyZ1RhZyB7IFZhckFy
ZyB9OwogICAgIAogICAgIE5vZGUoKSB7IH0KQEAgLTM0Niw5ICszNDksOCBAQCBzdHJ1Y3QgTm9k
ZSB7CiAgICAgCiAgICAgTm9kZVR5cGUgb3AoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxO
b2RlVHlwZT4obV9vcCk7IH0KICAgICBOb2RlRmxhZ3MgZmxhZ3MoKSBjb25zdCB7IHJldHVybiBt
X2ZsYWdzOyB9Ci0gICAgCi0gICAgLy8gVGhpcyBpcyBub3QgYSBmYXN0IG1ldGhvZC4KLSAgICB1
bnNpZ25lZCBpbmRleCgpIGNvbnN0OworCisgICAgdW5zaWduZWQgaW5kZXgoKSBjb25zdCB7IHJl
dHVybiBtX2luZGV4OyB9CiAgICAgCiAgICAgdm9pZCBzZXRPcChOb2RlVHlwZSBvcCkKICAgICB7
CkBAIC0yMzQ0LDYgKzIzNDYsOSBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgQWRqYWNlbmN5TGlzdCBj
aGlsZHJlbjsKIAogcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgQjM6OlNwYXJzZUNvbGxlY3Rp
b248Tm9kZT47CisKKyAgICB1bnNpZ25lZCBtX2luZGV4IHsgc3RkOjpudW1lcmljX2xpbWl0czx1
bnNpZ25lZD46Om1heCgpIH07CiAgICAgdW5zaWduZWQgbV9vcCA6IDEwOyAvLyByZWFsIHR5cGUg
aXMgTm9kZVR5cGUKICAgICB1bnNpZ25lZCBtX2ZsYWdzIDogMjA7CiAgICAgLy8gVGhlIHZpcnR1
YWwgcmVnaXN0ZXIgbnVtYmVyIChzcGlsbCBsb2NhdGlvbikgYXNzb2NpYXRlZCB3aXRoIHRoaXMg
LgpAQCAtMjM1MSw3ICsyMzU2LDcgQEAgcHJpdmF0ZToKICAgICAvLyBUaGUgbnVtYmVyIG9mIHVz
ZXMgb2YgdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbiAoKzEgZm9yICdtdXN0IGdlbmVyYXRl
JyBub2Rlcywgd2hpY2ggaGF2ZSBzaWRlLWVmZmVjdHMpLgogICAgIHVuc2lnbmVkIG1fcmVmQ291
bnQ7CiAgICAgLy8gVGhlIHByZWRpY3Rpb24gYXNjcmliZWQgdG8gdGhpcyBub2RlIGFmdGVyIHBy
b3BhZ2F0aW9uLgotICAgIFNwZWN1bGF0ZWRUeXBlIG1fcHJlZGljdGlvbjsKKyAgICBTcGVjdWxh
dGVkVHlwZSBtX3ByZWRpY3Rpb24geyBTcGVjTm9uZSB9OwogICAgIC8vIEltbWVkaWF0ZSB2YWx1
ZXMsIGFjY2Vzc2VzIHR5cGUtY2hlY2tlZCB2aWEgYWNjZXNzb3JzIGFib3ZlLiBUaGUgZmlyc3Qg
b25lIGlzCiAgICAgLy8gYmlnIGVub3VnaCB0byBzdG9yZSBhIHBvaW50ZXIuCiAgICAgdWludHB0
cl90IG1fb3BJbmZvOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlQWxsb2NhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVBbGxvY2F0
b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTkwMjRjYzE5MWEwYjk3OTE3YTM2
ZmM5OTdlNDA4YmE1YWU2M2U5MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVBbGxvY2F0b3IuaAor
KysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBERkdOb2RlQWxsb2NhdG9yX2gKLSNkZWZpbmUg
REZHTm9kZUFsbG9jYXRvcl9oCi0KLSNpZiBFTkFCTEUoREZHX0pJVCkKLQotI2luY2x1ZGUgIkRG
R0FsbG9jYXRvci5oIgotI2luY2x1ZGUgIkRGR05vZGUuaCIKLQotbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBERkcgewotCi10eXBlZGVmIEFsbG9jYXRvcjxOb2RlPiBOb2RlQWxsb2NhdG9yOwot
Ci19IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCi0KLWlubGluZSB2b2lkKiBvcGVyYXRvciBuZXcg
KHNpemVfdCBzaXplLCBKU0M6OkRGRzo6Tm9kZUFsbG9jYXRvciYgYWxsb2NhdG9yKQotewotICAg
IEFTU0VSVF9VTlVTRUQoc2l6ZSwgc2l6ZSA9PSBzaXplb2YoSlNDOjpERkc6Ok5vZGUpKTsKLSAg
ICByZXR1cm4gYWxsb2NhdG9yLmFsbG9jYXRlKCk7Ci19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoREZH
X0pJVCkKLQotI2VuZGlmIC8vIERGR05vZGVBbGxvY2F0b3JfaAotCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1Bo
YXNlLmNwcAppbmRleCA5OGNjNWJmYzNmODc2NWIwNzMyMmJiYzBiMjg4Mzk5N2E5YWViODQwLi40
ZDM0NzMwYWE3ZmU4ZWY5NzY3YTJhNDMyZmYyZjZlMWY2NmMyZWI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtp
bmdQaGFzZS5jcHAKQEAgLTIxMDIsNyArMjEwMiw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgZGF0YS0+aWRlbnRpZmllck51bWJlciA9IGlkZW50aWZpZXJOdW1iZXI7CiAKICAgICAgICAg
ICAgICAgICByZXR1cm4gbV9ncmFwaC5hZGROb2RlKAotICAgICAgICAgICAgICAgICAgICBTcGVj
Tm9uZSwKICAgICAgICAgICAgICAgICAgICAgUHV0QnlPZmZzZXQsCiAgICAgICAgICAgICAgICAg
ICAgIG9yaWdpbi50YWtlVmFsaWRFeGl0KGNhbkV4aXQpLAogICAgICAgICAgICAgICAgICAgICBP
cEluZm8oZGF0YSksCkBAIC0yMTM3LDcgKzIxMzYsNiBAQCBwcml2YXRlOgogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICByZXR1cm4gbV9ncmFwaC5hZGROb2RlKAotICAgICAgICAgICAgICAg
IFNwZWNOb25lLAogICAgICAgICAgICAgICAgIE11bHRpUHV0QnlPZmZzZXQsCiAgICAgICAgICAg
ICAgICAgb3JpZ2luLnRha2VWYWxpZEV4aXQoY2FuRXhpdCksCiAgICAgICAgICAgICAgICAgT3BJ
bmZvKGRhdGEpLApAQCAtMjE0OCw3ICsyMTQ2LDYgQEAgcHJpdmF0ZToKIAogICAgICAgICBjYXNl
IENsb3N1cmVWYXJQTG9jOiB7CiAgICAgICAgICAgICByZXR1cm4gbV9ncmFwaC5hZGROb2RlKAot
ICAgICAgICAgICAgICAgIFNwZWNOb25lLAogICAgICAgICAgICAgICAgIFB1dENsb3N1cmVWYXIs
CiAgICAgICAgICAgICAgICAgb3JpZ2luLnRha2VWYWxpZEV4aXQoY2FuRXhpdCksCiAgICAgICAg
ICAgICAgICAgT3BJbmZvKGxvY2F0aW9uLmluZm8oKSksCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQbGFuLmNwcAppbmRleCA4YmZmMDhmOWU0MDY3NjM3ZDY3ZTAwNWRkOGZhMzNkNGMwMTNhZjdi
Li5iNGY4NjNhNjY4NDBkYWM0ZDQ1ZDU2YmIyZTIyYjY1NzI4ZDQwYzE5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUGxhbi5jcHAKQEAgLTE3MCw3ICsxNzAsNyBAQCBib29sIFBsYW46OnJl
cG9ydENvbXBpbGVUaW1lcygpIGNvbnN0CiAgICAgICAgIHx8IChPcHRpb25zOjpyZXBvcnRGVExD
b21waWxlVGltZXMoKSAmJiBpc0ZUTChtb2RlKSk7CiB9CiAKLXZvaWQgUGxhbjo6Y29tcGlsZUlu
VGhyZWFkKExvbmdMaXZlZFN0YXRlJiBsb25nTGl2ZWRTdGF0ZSwgVGhyZWFkRGF0YSogdGhyZWFk
RGF0YSkKK3ZvaWQgUGxhbjo6Y29tcGlsZUluVGhyZWFkKFRocmVhZERhdGEqIHRocmVhZERhdGEp
CiB7CiAgICAgdGhpcy0+dGhyZWFkRGF0YSA9IHRocmVhZERhdGE7CiAgICAgCkBAIC0xODYsNyAr
MTg2LDcgQEAgdm9pZCBQbGFuOjpjb21waWxlSW5UaHJlYWQoTG9uZ0xpdmVkU3RhdGUmIGxvbmdM
aXZlZFN0YXRlLCBUaHJlYWREYXRhKiB0aHJlYWREYXQKICAgICBpZiAobG9nQ29tcGlsYXRpb25D
aGFuZ2VzKG1vZGUpKQogICAgICAgICBkYXRhTG9nKCJERkcoUGxhbikgY29tcGlsaW5nICIsICpj
b2RlQmxvY2ssICIgd2l0aCAiLCBtb2RlLCAiLCBudW1iZXIgb2YgaW5zdHJ1Y3Rpb25zID0gIiwg
Y29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCksICJcbiIpOwogCi0gICAgQ29tcGlsYXRpb25Q
YXRoIHBhdGggPSBjb21waWxlSW5UaHJlYWRJbXBsKGxvbmdMaXZlZFN0YXRlKTsKKyAgICBDb21w
aWxhdGlvblBhdGggcGF0aCA9IGNvbXBpbGVJblRocmVhZEltcGwoKTsKIAogICAgIFJFTEVBU0Vf
QVNTRVJUKHBhdGggPT0gQ2FuY2VsUGF0aCB8fCBmaW5hbGl6ZXIpOwogICAgIFJFTEVBU0VfQVNT
RVJUKChwYXRoID09IENhbmNlbFBhdGgpID09IChzdGFnZSA9PSBDYW5jZWxsZWQpKTsKQEAgLTIz
Niw3ICsyMzYsNyBAQCB2b2lkIFBsYW46OmNvbXBpbGVJblRocmVhZChMb25nTGl2ZWRTdGF0ZSYg
bG9uZ0xpdmVkU3RhdGUsIFRocmVhZERhdGEqIHRocmVhZERhdAogICAgIH0KIH0KIAotUGxhbjo6
Q29tcGlsYXRpb25QYXRoIFBsYW46OmNvbXBpbGVJblRocmVhZEltcGwoTG9uZ0xpdmVkU3RhdGUm
IGxvbmdMaXZlZFN0YXRlKQorUGxhbjo6Q29tcGlsYXRpb25QYXRoIFBsYW46OmNvbXBpbGVJblRo
cmVhZEltcGwoKQogewogICAgIGNsZWFuTXVzdEhhbmRsZVZhbHVlc0lmTmVjZXNzYXJ5KCk7CiAg
ICAgCkBAIC0yNDYsNyArMjQ2LDcgQEAgUGxhbjo6Q29tcGlsYXRpb25QYXRoIFBsYW46OmNvbXBp
bGVJblRocmVhZEltcGwoTG9uZ0xpdmVkU3RhdGUmIGxvbmdMaXZlZFN0YXRlKQogICAgICAgICBk
YXRhTG9nKCJcbiIpOwogICAgIH0KICAgICAKLSAgICBHcmFwaCBkZmcoKnZtLCAqdGhpcywgbG9u
Z0xpdmVkU3RhdGUpOworICAgIEdyYXBoIGRmZygqdm0sICp0aGlzKTsKICAgICAKICAgICBpZiAo
IXBhcnNlKGRmZykpIHsKICAgICAgICAgZmluYWxpemVyID0gc3RkOjptYWtlX3VuaXF1ZTxGYWls
ZWRGaW5hbGl6ZXI+KCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUGxhbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmgKaW5kZXgg
OTU5NGRmZjJmMzAzZDYwM2I3ZjkxOGEzMzExMDc1YTUxZTc3NmZkMy4uNmUzNTI2ODVjY2IxNmUz
YmI1OTU0ZTMyODFmNjUzMDYxOTNhZDFlZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQbGFuLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFu
LmgKQEAgLTQ4LDcgKzQ4LDYgQEAgY2xhc3MgU2xvdFZpc2l0b3I7CiAKIG5hbWVzcGFjZSBERkcg
ewogCi1jbGFzcyBMb25nTGl2ZWRTdGF0ZTsKIGNsYXNzIFRocmVhZERhdGE7CiAKICNpZiBFTkFC
TEUoREZHX0pJVCkKQEAgLTYwLDcgKzU5LDcgQEAgc3RydWN0IFBsYW4gOiBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8UGxhbj4gewogICAgICAgICBjb25zdCBPcGVyYW5kczxKU1ZhbHVlPiYg
bXVzdEhhbmRsZVZhbHVlcyk7CiAgICAgflBsYW4oKTsKIAotICAgIHZvaWQgY29tcGlsZUluVGhy
ZWFkKExvbmdMaXZlZFN0YXRlJiwgVGhyZWFkRGF0YSopOworICAgIHZvaWQgY29tcGlsZUluVGhy
ZWFkKFRocmVhZERhdGEqKTsKICAgICAKICAgICBDb21waWxhdGlvblJlc3VsdCBmaW5hbGl6ZVdp
dGhvdXROb3RpZnlpbmdDYWxsYmFjaygpOwogICAgIHZvaWQgZmluYWxpemVBbmROb3RpZnlDYWxs
YmFjaygpOwpAQCAtMTIxLDcgKzEyMCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCByZXBvcnRDb21w
aWxlVGltZXMoKSBjb25zdDsKICAgICAKICAgICBlbnVtIENvbXBpbGF0aW9uUGF0aCB7IEZhaWxQ
YXRoLCBERkdQYXRoLCBGVExQYXRoLCBDYW5jZWxQYXRoIH07Ci0gICAgQ29tcGlsYXRpb25QYXRo
IGNvbXBpbGVJblRocmVhZEltcGwoTG9uZ0xpdmVkU3RhdGUmKTsKKyAgICBDb21waWxhdGlvblBh
dGggY29tcGlsZUluVGhyZWFkSW1wbCgpOwogICAgIAogICAgIGJvb2wgaXNTdGlsbFZhbGlkKCk7
CiAgICAgdm9pZCByZWFsbHlBZGQoQ29tbW9uRGF0YSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwCmluZGV4IGZlOTliYTA5ZTE5
NGRlZTI0NmUxYjZhNGE0ZDk5MTc3NzMzZDMyZWEuLmNkZTA3NDAwN2M5NjU3NDFiM2ZhYjczNDQy
YmUwMWFmZjhjNWJkNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U1NBQ29udmVyc2lvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NTQUNvbnZlcnNpb25QaGFzZS5jcHAKQEAgLTM3Myw3ICszNzMsNyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICBpZiAoIWJsb2NrKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBwaGlJbmRleCA9IGJsb2NrLT5waGlzLnNpemUoKTsgcGhpSW5kZXgt
LTspCi0gICAgICAgICAgICAgICAgbV9ncmFwaC5tX2FsbG9jYXRvci5mcmVlKGJsb2NrLT5waGlz
W3BoaUluZGV4XSk7CisgICAgICAgICAgICAgICAgbV9ncmFwaC5kZWxldGVOb2RlKGJsb2NrLT5w
aGlzW3BoaUluZGV4XSk7CiAgICAgICAgICAgICBibG9jay0+cGhpcy5jbGVhcigpOwogICAgICAg
ICAgICAgYmxvY2stPnZhcmlhYmxlc0F0SGVhZC5jbGVhcigpOwogICAgICAgICAgICAgYmxvY2st
PnZhcmlhYmxlc0F0VGFpbC5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dv
cmtsaXN0LmNwcAppbmRleCBkNTI4ZTE0M2QxYWRkN2E3ODQ2NTQxMTk4YWNiM2QxNGQzZDcyMTUz
Li45YjZkMmMzYzY2YjU4NDJhMmI4ODk1MjY1Njk1ZjYwYTEyZmIwMTMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0LmNwcApAQCAtMzAsNyArMzAsNiBAQAogCiAjaW5j
bHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiRGVmZXJHQy5oIgotI2luY2x1ZGUgIkRGR0xv
bmdMaXZlZFN0YXRlLmgiCiAjaW5jbHVkZSAiREZHU2FmZXBvaW50LmgiCiAjaW5jbHVkZSAiSlND
SW5saW5lcy5oIgogI2luY2x1ZGUgPG11dGV4PgpAQCAtMzYyLDggKzM2MSw2IEBAIHZvaWQgV29y
a2xpc3Q6OnJ1blRocmVhZChUaHJlYWREYXRhKiBkYXRhKQogICAgIGlmIChPcHRpb25zOjp2ZXJi
b3NlQ29tcGlsYXRpb25RdWV1ZSgpKQogICAgICAgICBkYXRhTG9nKCp0aGlzLCAiOiBUaHJlYWQg
c3RhcnRlZFxuIik7CiAgICAgCi0gICAgTG9uZ0xpdmVkU3RhdGUgbG9uZ0xpdmVkU3RhdGU7Ci0g
ICAgCiAgICAgZm9yICg7OykgewogICAgICAgICBSZWZQdHI8UGxhbj4gcGxhbjsKICAgICAgICAg
ewpAQCAtMzk5LDcgKzM5Niw3IEBAIHZvaWQgV29ya2xpc3Q6OnJ1blRocmVhZChUaHJlYWREYXRh
KiBkYXRhKQogICAgICAgICAgICAgICAgIGRhdGFMb2coKnRoaXMsICI6IENvbXBpbGluZyAiLCBw
bGFuLT5rZXkoKSwgIiBhc3luY2hyb25vdXNseVxuIik7CiAgICAgICAgIAogICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQoIXBsYW4tPnZtLT5oZWFwLmlzQ29sbGVjdGluZygpKTsKLSAgICAgICAg
ICAgIHBsYW4tPmNvbXBpbGVJblRocmVhZChsb25nTGl2ZWRTdGF0ZSwgZGF0YSk7CisgICAgICAg
ICAgICBwbGFuLT5jb21waWxlSW5UaHJlYWQoZGF0YSk7CiAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChwbGFuLT5zdGFnZSA9PSBQbGFuOjpDYW5jZWxsZWQgfHwgIXBsYW4tPnZtLT5oZWFwLmlz
Q29sbGVjdGluZygpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IGIxZmY0MjQ4YTM0ODRhNGNiYmMyMDVjMzJkNGQwNGMx
NjA2MGNhYzYuLjk0MTZlYTk0YWI3ZmI5ODU4ZmI5YWU1YmNkZDZlYTQ1MGNhYTQwYmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTM4LDcgKzM4LDYgQEAKICNpbmNsdWRl
ICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkNvbW1vblNsb3dQYXRocy5oIgogI2lu
Y2x1ZGUgIkN1c3RvbUdldHRlclNldHRlci5oIgotI2luY2x1ZGUgIkRGR0xvbmdMaXZlZFN0YXRl
LmgiCiAjaW5jbHVkZSAiREZHV29ya2xpc3QuaCIKICNpbmNsdWRlICJEaXNhc3NlbWJsZXIuaCIK
ICNpbmNsdWRlICJFcnJvckluc3RhbmNlLmgiCkBAIC0yOTAsMTEgKzI4OSw2IEBAIFZNOjpWTShW
TVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICB9CiAKICAgICBjYWxsRnJhbWVG
b3JDYXRjaCA9IG51bGxwdHI7Ci0KLSNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBpZiAoY2FuVXNl
SklUKCkpCi0gICAgICAgIGRmZ1N0YXRlID0gc3RkOjptYWtlX3VuaXF1ZTxERkc6OkxvbmdMaXZl
ZFN0YXRlPigpOwotI2VuZGlmCiAgICAgCiAgICAgLy8gSW5pdGlhbGl6ZSB0aGlzIGxhc3QsIGFz
IGEgZnJlZSB3YXkgb2YgYXNzZXJ0aW5nIHRoYXQgVk0gaW5pdGlhbGl6YXRpb24gaXRzZWxmCiAg
ICAgLy8gd29uJ3QgdXNlIHRoaXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCBm
MGRlMTUxMzVhOTA3ODc4YjQ3YTFkMzQzNGY2ODI5MWNiNWRjNzNlLi40ZTlmMjFjMGU5MzM2MGY3
NTU0ZGYyYzRjMTUzYzFiNDU4ZWMzZWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgK
QEAgLTExOSwxMSArMTE5LDYgQEAgY2xhc3MgV2F0Y2hkb2c7CiBjbGFzcyBXYXRjaHBvaW50Owog
Y2xhc3MgV2F0Y2hwb2ludFNldDsKIAotI2lmIEVOQUJMRShERkdfSklUKQotbmFtZXNwYWNlIERG
RyB7Ci1jbGFzcyBMb25nTGl2ZWRTdGF0ZTsKLX0KLSNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkK
ICNpZiBFTkFCTEUoRlRMX0pJVCkKIG5hbWVzcGFjZSBGVEwgewogY2xhc3MgVGh1bmtzOwpAQCAt
MjcxLDEwICsyNjYsNiBAQCBwdWJsaWM6CiAgICAgLy8gZGVzdHJ1Y3RlZCBhZnRlciBhbGwgdGhl
IG9iamVjdHMgdGhhdCByZWZlcmVuY2UgaXQuCiAgICAgSGVhcCBoZWFwOwogCi0jaWYgRU5BQkxF
KERGR19KSVQpCi0gICAgc3RkOjp1bmlxdWVfcHRyPERGRzo6TG9uZ0xpdmVkU3RhdGU+IGRmZ1N0
YXRlOwotI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQotCiAgICAgVk1UeXBlIHZtVHlwZTsKICAg
ICBDbGllbnREYXRhKiBjbGllbnREYXRhOwogICAgIFZNRW50cnlGcmFtZSogdG9wVk1FbnRyeUZy
YW1lOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309948</attachid>
            <date>2017-05-12 14:56:46 -0700</date>
            <delta_ts>2017-05-12 15:47:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160098-20170512145645.patch</filename>
            <type>text/plain</type>
            <size>37859</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjE2NzkyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ0IEBA
CisyMDE3LTA1LTEyICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgW0pTQ10gREZHOjpOb2RlIHNob3VsZCBub3QgaGF2ZSBpdHMgb3duIGFsbG9jYXRvcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwMDk4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSSBqdXN0IHJlYmFz
ZWQgdGhlIHBhdGNoIGZyb20gPGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzIwMzgw
OD4uCisKKyAgICAgICAgSSByYW4gT2N0YW5lIGFuZCBKZXRTdHJlYW0gbG9jYWxseSBvbiBhIE1h
Y0Jvb2sgQWlyIGFuZCBJIHdhc24ndCBhYmxlIHRvCisgICAgICAgIHJlcHJvZHVjZSBhIHJlZ3Jl
c3Npb24uIExldCdzIGxhbmQgdGhpcyBhZ2FpbiBhbmQgc2VlIHdoYXQgdGhlIGJvdHMgc2F5Lgor
CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBiMy9CM1NwYXJzZUNvbGxlY3Rpb24uaDoKKyAgICAgICAgKEpTQzo6QjM6OlNwYXJz
ZUNvbGxlY3Rpb246OnBhY2tJbmRpY2VzKToKKyAgICAgICAgKiBkZmcvREZHQWxsb2NhdG9yLmg6
IFJlbW92ZWQuCisgICAgICAgICogZGZnL0RGR0RyaXZlci5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6Y29tcGlsZUltcGwpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6R3JhcGg6OkdyYXBoKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6fkdyYXBo
KToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6ZGVsZXRlTm9kZSk6CisgICAgICAgIChKU0M6
OkRGRzo6R3JhcGg6OnBhY2tOb2RlSW5kaWNlcyk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6
OmFkZE5vZGVUb01hcEJ5SW5kZXgpOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5o
OgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjphZGROb2RlKToKKyAgICAgICAgKEpTQzo6REZH
OjpHcmFwaDo6bWF4Tm9kZUNvdW50KToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6bm9kZUF0
KToKKyAgICAgICAgKiBkZmcvREZHTG9uZ0xpdmVkU3RhdGUuY3BwOiBSZW1vdmVkLgorICAgICAg
ICAqIGRmZy9ERkdMb25nTGl2ZWRTdGF0ZS5oOiBSZW1vdmVkLgorICAgICAgICAqIGRmZy9ERkdO
b2RlLmg6CisgICAgICAgICogZGZnL0RGR05vZGVBbGxvY2F0b3IuaDoKKyAgICAgICAgKiBkZmcv
REZHUGxhbi5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UGxhbjo6Y29tcGlsZUluVGhyZWFkKToK
KyAgICAgICAgKEpTQzo6REZHOjpQbGFuOjpjb21waWxlSW5UaHJlYWRJbXBsKToKKyAgICAgICAg
KiBkZmcvREZHUGxhbi5oOgorICAgICAgICAqIGRmZy9ERkdXb3JrbGlzdC5jcHA6CisgICAgICAg
ICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgICogcnVu
dGltZS9WTS5oOgorCiAyMDE3LTA1LTEyICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNv
bT4KIAogICAgICAgICBDbGVhbnVwOiBNYWtlIFF1ZXVlVGFza1RvRXZlbnRMb29wRnVuY3Rpb25Q
dHIgdGFrZSBKU0dsb2JhbE9iamVjdCYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiAyMTY1MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtOTk5LDggKzk5
OSw2IEBACiAJCTBGRUZDOUFCMTY4MUEzQjYwMDU2N0Y1MyAvKiBERkdPU1JFeGl0SnVtcFBsYWNl
aG9sZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RkVGQzlBODE2ODFBM0IwMDA1NjdGNTMgLyogREZHT1NSRXhpdEp1bXBQbGFjZWhvbGRlci5oICov
OyB9OwogCQkwRkYwNTRGOTFBQzM1QjQ0MDBFNUJFNTcgLyogRXhlY3V0YWJsZUFsbG9jYXRpb25G
dXp6LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
RjA1NEY3MUFDMzVCNDQwMEU1QkU1NyAvKiBFeGVjdXRhYmxlQWxsb2NhdGlvbkZ1enouY3BwICov
OyB9OwogCQkwRkYwNTRGQTFBQzM1QjQ0MDBFNUJFNTcgLyogRXhlY3V0YWJsZUFsbG9jYXRpb25G
dXp6LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkYw
NTRGODFBQzM1QjQ0MDBFNUJFNTcgLyogRXhlY3V0YWJsZUFsbG9jYXRpb25GdXp6LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMEZGMEYxOTkxNkI3
MjlGNjAwNURGOTVCIC8qIERGR0xvbmdMaXZlZFN0YXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjRCNTFDMTZCNjI3NzIwMDNGNjk2QiAvKiBE
RkdMb25nTGl2ZWRTdGF0ZS5jcHAgKi87IH07Ci0JCTBGRjBGMTlCMTZCNzI5RkEwMDVERjk1QiAv
KiBERkdMb25nTGl2ZWRTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEZCNEI1MUQxNkI2Mjc3MjAwM0Y2OTZCIC8qIERGR0xvbmdMaXZlZFN0YXRl
LmggKi87IH07CiAJCTBGRjBGMTlDMTZCNzJBMDMwMDVERjk1QiAvKiBERkdOb2RlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjRCNTFFMTZCNjI3
NzIwMDNGNjk2QiAvKiBERkdOb2RlLmNwcCAqLzsgfTsKIAkJMEZGMEYxOUQxNkI3MkEwODAwNURG
OTVCIC8qIERGR0NvbW1vbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRkI0QjUxQTE2QjYyNzcyMDAzRjY5NkIgLyogREZHQ29tbW9uLmNwcCAqLzsg
fTsKIAkJMEZGMEYxOUUxNkI3MkEwQjAwNURGOTVCIC8qIERGR0VkZ2UuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCNEI1MUIxNkI2Mjc3MjAwM0Y2
OTZCIC8qIERGR0VkZ2UuY3BwICovOyB9OwpAQCAtMTA1OSw5ICsxMDU3LDcgQEAKIAkJMEZGQTU0
OTgxNkI4ODM1MzAwQjNBOTgyIC8qIEE2NERPcGNvZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1MkEzQTIzMTY1MUM2OTcwMEE4MEFGRSAvKiBBNjRE
T3Bjb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMEZGQjZDMzgxQUY0OEREQzAwREIxQkY3IC8qIFR5cGVvZlR5cGUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGQjZDMzYxQUY0OEREQzAwREIx
QkY3IC8qIFR5cGVvZlR5cGUuY3BwICovOyB9OwogCQkwRkZCNkMzOTFBRjQ4RERDMDBEQjFCRjcg
LyogVHlwZW9mVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEZGQjZDMzcxQUY0OEREQzAwREIxQkY3IC8qIFR5cGVvZlR5cGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkwRkZCOTIxODE2RDAyRUIy
MDA1NUE1REIgLyogREZHQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRkI0QjUxOTE2QjYyNzcyMDAzRjY5NkIgLyogREZHQWxsb2NhdG9y
LmggKi87IH07CiAJCTBGRkI5MjFBMTZEMDJFQzUwMDU1QTVEQiAvKiBERkdCYXNpY0Jsb2NrSW5s
aW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZE
NTY1MjIxNkFCNzgwQTAwMTk3NjUzIC8qIERGR0Jhc2ljQmxvY2tJbmxpbmVzLmggKi87IH07Ci0J
CTBGRkI5MjFCMTZEMDJGMDEwMDU1QTVEQiAvKiBERkdOb2RlQWxsb2NhdG9yLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkI0QjUxRjE2QjYyNzcyMDAz
RjY5NkIgLyogREZHTm9kZUFsbG9jYXRvci5oICovOyB9OwogCQkwRkZCOTIxQzE2RDAyRjExMDA1
NUE1REIgLyogREZHT1NSRXhpdENvbXBpbGF0aW9uSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU5ODdGMkMxNjdGRTg0QjAwM0MyRjhEIC8qIERG
R09TUkV4aXRDb21waWxhdGlvbkluZm8uaCAqLzsgfTsKIAkJMEZGQjkyMUQxNkQwMkYzMDAwNTVB
NURCIC8qIERGR1Nsb3dQYXRoR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjFFM0E1MDE1MzdDMkNCMDAwRjk0NTYgLyogREZHU2xvd1Bh
dGhHZW5lcmF0b3IuaCAqLzsgfTsKIAkJMEZGQjkyMjAxNkQwMzNCNzAwNTVBNURCIC8qIE5vZGVD
b25zdHJ1Y3RvcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDkzMERBRDAzMEZCMUVCMUEwMDgyRDIwNSAvKiBOb2RlQ29uc3RydWN0b3JzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTMyNjUsMTMgKzMy
NjEsOSBAQAogCQkwRkI0NzY3QzFEOTlBRUE3MDA4RUE2Q0IgLyogR0NEZWZlcnJhbENvbnRleHQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR0NEZWZlcnJhbENvbnRleHQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZCNDc2N0QxRDk5QUVBNzAwOEVBNkNCIC8q
IEdDRGVmZXJyYWxDb250ZXh0SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBHQ0RlZmVycmFsQ29udGV4dElubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEZCNEI1MTAxNkIzQTk2NDAwM0Y2OTZCIC8qIERGR01pbmlmaWVkSUQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHTWluaWZpZWRJRC5oOyBwYXRoID0gZGZnL0RG
R01pbmlmaWVkSUQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEZCNEI1MTkxNkI2
Mjc3MjAwM0Y2OTZCIC8qIERGR0FsbG9jYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBERkdBbGxvY2F0b3IuaDsgcGF0aCA9IGRmZy9ERkdBbGxvY2F0b3IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZCNEI1MUExNkI2Mjc3MjAwM0Y2OTZCIC8qIERGR0Nv
bW1vbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdDb21tb24u
Y3BwOyBwYXRoID0gZGZnL0RGR0NvbW1vbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGQjRCNTFCMTZCNjI3NzIwMDNGNjk2QiAvKiBERkdFZGdlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0VkZ2UuY3BwOyBwYXRoID0gZGZnL0RGR0VkZ2Uu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRkI0QjUxQzE2QjYyNzcyMDAzRjY5
NkIgLyogREZHTG9uZ0xpdmVkU3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gREZHTG9uZ0xpdmVkU3RhdGUuY3BwOyBwYXRoID0gZGZnL0RGR0xvbmdMaXZlZFN0
YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEZCNEI1MUQxNkI2Mjc3MjAw
M0Y2OTZCIC8qIERGR0xvbmdMaXZlZFN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IERGR0xvbmdMaXZlZFN0YXRlLmg7IHBhdGggPSBkZmcvREZHTG9uZ0xpdmVkU3RhdGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZCNEI1MUUxNkI2Mjc3MjAwM0Y2OTZC
IC8qIERGR05vZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZH
Tm9kZS5jcHA7IHBhdGggPSBkZmcvREZHTm9kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTBGQjRCNTFGMTZCNjI3NzIwMDNGNjk2QiAvKiBERkdOb2RlQWxsb2NhdG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR05vZGVBbGxvY2F0b3IuaDsgcGF0aCA9
IGRmZy9ERkdOb2RlQWxsb2NhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
QjRCNTIxMTZCNjI3OEQwMDNGNjk2QiAvKiBGdW5jdGlvbkV4ZWN1dGFibGVEdW1wLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZ1bmN0aW9uRXhlY3V0YWJsZUR1bXAu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkI0QjUyMjE2QjYyNzhEMDAzRjY5
NkIgLyogRnVuY3Rpb25FeGVjdXRhYmxlRHVtcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBGdW5jdGlvbkV4ZWN1dGFibGVEdW1wLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGQjRGQjcwMUJDODQzMTQwMDI1Q0E1QSAvKiBGVExMYXp5U2xvd1BhdGguY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRlRMTGF6eVNsb3dQYXRoLmNwcDsg
cGF0aCA9IGZ0bC9GVExMYXp5U2xvd1BhdGguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNzE5NCw3ICs3MTg2LDYgQEAKIAkJCQkwRjE4RDNDRDFCNTVBNkUwMDAyQzVDOUYgLyog
REZHQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcCAqLywKIAkJCQkwRjE4RDNDRTFCNTVB
NkUwMDAyQzVDOUYgLyogREZHQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmggKi8sCiAJCQkJ
MEY2NkUxNjgxNERGM0YxMzAwQjdCMkU0IC8qIERGR0FkamFjZW5jeUxpc3QuaCAqLywKLQkJCQkw
RkI0QjUxOTE2QjYyNzcyMDAzRjY5NkIgLyogREZHQWxsb2NhdG9yLmggKi8sCiAJCQkJMEYxRTNB
NDMxNTM0Q0JBRDAwMEY5NDU2IC8qIERGR0FyZ3VtZW50UG9zaXRpb24uaCAqLywKIAkJCQkwRjJE
RDgwQzFBQjNEOEJFMDBCQkI4RTggLyogREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAg
Ki8sCiAJCQkJMEYyREQ4MEQxQUIzRDhCRTAwQkJCOEU4IC8qIERGR0FyZ3VtZW50c0VsaW1pbmF0
aW9uUGhhc2UuaCAqLywKQEAgLTczNDksOCArNzM0MCw2IEBACiAJCQkJNzlDNEIxNUMxQkEyMTU4
RjAwRkQ1OTJFIC8qIERGR0xpdmVDYXRjaFZhcmlhYmxlUHJlc2VydmF0aW9uUGhhc2UuaCAqLywK
IAkJCQlBN0Q4OUNFQzE3QTBCOENDMDA3NzNBRDggLyogREZHTGl2ZW5lc3NBbmFseXNpc1BoYXNl
LmNwcCAqLywKIAkJCQlBN0Q4OUNFRDE3QTBCOENDMDA3NzNBRDggLyogREZHTGl2ZW5lc3NBbmFs
eXNpc1BoYXNlLmggKi8sCi0JCQkJMEZCNEI1MUMxNkI2Mjc3MjAwM0Y2OTZCIC8qIERGR0xvbmdM
aXZlZFN0YXRlLmNwcCAqLywKLQkJCQkwRkI0QjUxRDE2QjYyNzcyMDAzRjY5NkIgLyogREZHTG9u
Z0xpdmVkU3RhdGUuaCAqLywKIAkJCQlBNzY3QjVCMzE3QTBCOTY1MDA2M0Q5NDAgLyogREZHTG9v
cFByZUhlYWRlckNyZWF0aW9uUGhhc2UuY3BwICovLAogCQkJCUE3NjdCNUI0MTdBMEI5NjUwMDYz
RDk0MCAvKiBERkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5oICovLAogCQkJCTc5RjhGQzFD
MUI5RkVEMEYwMENBNjZBQiAvKiBERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5jcHAgKi8s
CkBAIC03MzcyLDcgKzczNjEsNiBAQAogCQkJCTg2RUNBM0U5MTMyREVGMUMwMDJCMkFENyAvKiBE
RkdOb2RlLmggKi8sCiAJCQkJMEYyMDE3ODcxRENCOTQyMjAwRUE1OTUwIC8qIERGR05vZGVBYnN0
cmFjdFZhbHVlUGFpci5jcHAgKi8sCiAJCQkJMEYyMDE3ODgxRENCOTQyMjAwRUE1OTUwIC8qIERG
R05vZGVBYnN0cmFjdFZhbHVlUGFpci5oICovLAotCQkJCTBGQjRCNTFGMTZCNjI3NzIwMDNGNjk2
QiAvKiBERkdOb2RlQWxsb2NhdG9yLmggKi8sCiAJCQkJMEZBNTgxQjcxNTBFOTUyQTAwQjlBMkQ5
IC8qIERGR05vZGVGbGFncy5jcHAgKi8sCiAJCQkJMEZBNTgxQjgxNTBFOTUyQTAwQjlBMkQ5IC8q
IERGR05vZGVGbGFncy5oICovLAogCQkJCTBGMjAxNzgzMURDQUUxNDcwMEVBNTk1MCAvKiBERkdO
b2RlRmxvd1Byb2plY3Rpb24uY3BwICovLApAQCAtODUwNSw3ICs4NDkzLDYgQEAKIAkJCQkwRkQz
RTQwMjFCNjE4QUFGMDBDODBFMUUgLyogREZHQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVX
YXRjaHBvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjE4RDNEMDFCNTVBNkUwMDAyQzVDOUYg
LyogREZHQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjY2RTE2QjE0REYzRjE2MDBCN0IyRTQgLyogREZHQWRqYWNlbmN5TGlzdC5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJMEZGQjkyMTgxNkQwMkVCMjAwNTVBNURCIC8qIERGR0FsbG9jYXRvci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEYxRTNBNDYxNTM0Q0JBRjAwMEY5NDU2IC8qIERGR0FyZ3VtZW50UG9z
aXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkREODEyMUFCM0Q4QkUwMEJCQjhFOCAvKiBE
RkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJERDgx
NDFBQjNEOEJFMDBCQkI4RTggLyogREZHQXJndW1lbnRzVXRpbGl0aWVzLmggaW4gSGVhZGVycyAq
LywKQEAgLTg2MDMsNyArODU5MCw2IEBACiAJCQkJQTdEOUEyOTgxN0EwQkM3NDAwRUUyNjE4IC8q
IERGR0xJQ01QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzlDNEIxNUUxQkEyMTU4RjAwRkQ1
OTJFIC8qIERGR0xpdmVDYXRjaFZhcmlhYmxlUHJlc2VydmF0aW9uUGhhc2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE3RDg5Q0ZDMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdMaXZlbmVzc0FuYWx5c2lz
UGhhc2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGRjBGMTlCMTZCNzI5RkEwMDVERjk1QiAvKiBE
RkdMb25nTGl2ZWRTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc2N0I1QjYxN0EwQjk2NTAw
NjNEOTQwIC8qIERGR0xvb3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywK
IAkJCQk3OUY4RkMxRjFCOUZFRDBGMDBDQTY2QUIgLyogREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9u
UGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTg3NEVFMTk0RkVCMTIwMEFBQjJDMSAvKiBE
RkdNYXlFeGl0LmggaW4gSGVhZGVycyAqLywKQEAgLTg2MTUsNyArODYwMSw2IEBACiAJCQkJQTcz
NzgxMEUxNzk5RUEyRTAwODE3NTMzIC8qIERGR05hdHVyYWxMb29wcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJODZFQ0EzRUExMzJERUYxQzAwMkIyQUQ3IC8qIERGR05vZGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGMjAxNzg5MURDQjk0MjQwMEVBNTk1MCAvKiBERkdOb2RlQWJzdHJhY3RWYWx1ZVBh
aXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGRkI5MjFCMTZEMDJGMDEwMDU1QTVEQiAvKiBERkdO
b2RlQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkE1ODFCQjE1MEU5NTMwMDBCOUEy
RDkgLyogREZHTm9kZUZsYWdzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIwMTc4NTFEQ0FFMTQ5
MDBFQTU5NTAgLyogREZHTm9kZUZsb3dQcm9qZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjMwMEI3ODE4QUIwNTExMDBBNkQ3MkUgLyogREZHTm9kZU9yaWdpbi5oIGluIEhlYWRlcnMgKi8s
CkBAIC0xMDM3NCw3ICsxMDM1OSw2IEBACiAJCQkJQTdEOUEyOTcxN0EwQkM3NDAwRUUyNjE4IC8q
IERGR0xJQ01QaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3OUM0QjE1RDFCQTIxNThGMDBG
RDU5MkUgLyogREZHTGl2ZUNhdGNoVmFyaWFibGVQcmVzZXJ2YXRpb25QaGFzZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBN0Q4OUNGQjE3QTBCOENDMDA3NzNBRDggLyogREZHTGl2ZW5lc3NBbmFs
eXNpc1BoYXNlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTBGRjBGMTk5MTZCNzI5RjYwMDVERjk1
QiAvKiBERkdMb25nTGl2ZWRTdGF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzY3QjVCNTE3
QTBCOTY1MDA2M0Q5NDAgLyogREZHTG9vcFByZUhlYWRlckNyZWF0aW9uUGhhc2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNzlGOEZDMUUxQjlGRUQwRjAwQ0E2NkFCIC8qIERGR01heGltYWxGbHVz
aEluc2VydGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNTg3NEVEMTk0RkVCMTIw
MEFBQjJDMSAvKiBERkdNYXlFeGl0LmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzU3BhcnNlQ29sbGVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1NwYXJzZUNvbGxlY3Rpb24uaAkocmV2aXNpb24gMjE2NTI4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3BhcnNlQ29sbGVjdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03NSw2ICs3NSw0MiBAQCBwdWJsaWM6CiAgICAgICAgIG1fdmVjdG9yW3Zh
bHVlLT5tX2luZGV4XSA9IG51bGxwdHI7CiAgICAgfQogCisgICAgdm9pZCBwYWNrSW5kaWNlcygp
CisgICAgeworICAgICAgICBpZiAobV9pbmRleEZyZWVMaXN0LmlzRW1wdHkoKSkKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICB1bnNpZ25lZCBob2xlSW5kZXggPSAwOworICAgICAgICB1
bnNpZ25lZCBlbmRJbmRleCA9IG1fdmVjdG9yLnNpemUoKTsKKworICAgICAgICB3aGlsZSAodHJ1
ZSkgeworICAgICAgICAgICAgd2hpbGUgKGhvbGVJbmRleCA8IGVuZEluZGV4ICYmIG1fdmVjdG9y
W2hvbGVJbmRleF0pCisgICAgICAgICAgICAgICAgKytob2xlSW5kZXg7CisKKyAgICAgICAgICAg
IGlmIChob2xlSW5kZXggPT0gZW5kSW5kZXgpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBBU1NFUlQoaG9sZUluZGV4IDwgbV92ZWN0b3Iuc2l6ZSgpKTsKKyAgICAgICAgICAg
IEFTU0VSVCghbV92ZWN0b3JbaG9sZUluZGV4XSk7CisKKyAgICAgICAgICAgIGRvIHsKKyAgICAg
ICAgICAgICAgICAtLWVuZEluZGV4OworICAgICAgICAgICAgfSB3aGlsZSAoIW1fdmVjdG9yW2Vu
ZEluZGV4XSAmJiBlbmRJbmRleCA+IGhvbGVJbmRleCk7CisKKyAgICAgICAgICAgIGlmIChob2xl
SW5kZXggPT0gZW5kSW5kZXgpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBB
U1NFUlQoZW5kSW5kZXggPiBob2xlSW5kZXgpOworICAgICAgICAgICAgQVNTRVJUKG1fdmVjdG9y
W2VuZEluZGV4XSk7CisKKyAgICAgICAgICAgIGF1dG8mIHZhbHVlID0gbV92ZWN0b3JbZW5kSW5k
ZXhdOworICAgICAgICAgICAgdmFsdWUtPm1faW5kZXggPSBob2xlSW5kZXg7CisgICAgICAgICAg
ICBtX3ZlY3Rvcltob2xlSW5kZXhdID0gV1RGTW92ZSh2YWx1ZSk7CisgICAgICAgICAgICArK2hv
bGVJbmRleDsKKyAgICAgICAgfQorCisgICAgICAgIG1faW5kZXhGcmVlTGlzdC5yZXNpemUoMCk7
CisgICAgICAgIG1fdmVjdG9yLnJlc2l6ZShlbmRJbmRleCk7CisgICAgfQorCiAgICAgdW5zaWdu
ZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmVjdG9yLnNpemUoKTsgfQogICAgIGJvb2wgaXNF
bXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fdmVjdG9yLmlzRW1wdHkoKTsgfQogICAgIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBbGxvY2F0b3IuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FsbG9jYXRvci5oCShyZXZpc2lvbiAyMTY1Mjgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FsbG9jYXRvci5oCShub25leGlzdGVu
dCkKQEAgLTEsMjM1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoREZHX0pJVCkKLQotI2luY2x1
ZGUgIkRGR0NvbW1vbi5oIgotI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KLQotbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewotCi0vLyBDdXN0b20gcG9vbCBhbGxvY2F0b3IgZm9y
IGV4YWN0bHkgb25lIHR5cGUgKHR5cGUgVCkuIEl0IGhhcyBmYXN0IChPKDEpLCBvbmx5IGEgZmV3
Ci0vLyBpbnN0cnVjdGlvbnMpIGFsbG9jYXRvciwgYW5kIGEgc2ltaWxhcmx5IGZhc3QgZnJlZSgp
LiBSZWN5Y2xpbmcgd29ya3MgaWYgZWl0aGVyIG9mCi0vLyB0aGUgZm9sbG93aW5nIGlzIHRydWU6
Ci0vLyAtIFQgaGFzIGEgdHJpdmlhbCBkZXN0cnVjdG9yLiBJbiB0aGF0IGNhc2UgeW91IGRvbid0
IGhhdmUgdG8gZXZlciBjYWxsIGZyZWUoKSBvbgotLy8gICBhbnl0aGluZy4gWW91IGNhbiBqdXN0
IGNhbGwgZnJlZUFsbCgpIGluc3RlYWQuCi0vLyAtIFlvdSBjYWxsIGZyZWUoKSBvbiBhbGwgVCdz
IHRoYXQgeW91IGFsbG9jYXRlZCwgYW5kIG5ldmVyIHVzZSBmcmVlQWxsKCkuCi0KLXRlbXBsYXRl
PHR5cGVuYW1lIFQ+Ci1jbGFzcyBBbGxvY2F0b3IgewotcHVibGljOgotICAgIEFsbG9jYXRvcigp
OwotICAgIH5BbGxvY2F0b3IoKTsKLSAgICAKLSAgICB2b2lkKiBhbGxvY2F0ZSgpOyAvLyBVc2Ug
cGxhY2VtZW50IG5ldyB0byBhbGxvY2F0ZSwgYW5kIGF2b2lkIHVzaW5nIHRoaXMgbWV0aG9kLgot
ICAgIHZvaWQgZnJlZShUKik7IC8vIENhbGwgdGhpcyBtZXRob2QgdG8gZGVsZXRlOyBuZXZlciB1
c2UgJ2RlbGV0ZScgZGlyZWN0bHkuCi0gICAgCi0gICAgdm9pZCBmcmVlQWxsKCk7IC8vIE9ubHkg
Y2FsbCB0aGlzIGlmIHlvdSd2ZSBlaXRoZXIgZnJlZWQgZXZlcnl0aGluZyBvciBpZiBUIGhhcyBh
IHRyaXZpYWwgZGVzdHJ1Y3Rvci4KLSAgICB2b2lkIHJlc2V0KCk7IC8vIExpa2UgZnJlZUFsbCgp
LCBidXQgYWxzbyByZXR1cm5zIGFsbCBtZW1vcnkgdG8gdGhlIE9TLgotICAgIAotICAgIHVuc2ln
bmVkIGluZGV4T2YoY29uc3QgVCopOwotICAgIAotICAgIHN0YXRpYyBBbGxvY2F0b3IqIGFsbG9j
YXRvck9mKGNvbnN0IFQqKTsKLSAgICAKLXByaXZhdGU6Ci0gICAgdm9pZCogYnVtcEFsbG9jYXRl
KCk7Ci0gICAgdm9pZCogZnJlZUxpc3RBbGxvY2F0ZSgpOwotICAgIHZvaWQqIGFsbG9jYXRlU2xv
dygpOwotCi0gICAgc3RydWN0IFJlZ2lvbiB7Ci0gICAgICAgIHN0YXRpYyBzaXplX3Qgc2l6ZSgp
IHsgcmV0dXJuIDY0ICogS0I7IH0KLSAgICAgICAgc3RhdGljIHNpemVfdCBoZWFkZXJTaXplKCkg
eyByZXR1cm4gc3RkOjptYXgoc2l6ZW9mKFJlZ2lvbiksIHNpemVvZihUKSk7IH0KLSAgICAgICAg
c3RhdGljIHVuc2lnbmVkIG51bWJlck9mVGhpbmdzUGVyUmVnaW9uKCkgeyByZXR1cm4gKHNpemUo
KSAtIGhlYWRlclNpemUoKSkgLyBzaXplb2YoVCk7IH0KLSAgICAgICAgVCogZGF0YSgpIHsgcmV0
dXJuIGJpdHdpc2VfY2FzdDxUKj4oYml0d2lzZV9jYXN0PGNoYXIqPih0aGlzKSArIGhlYWRlclNp
emUoKSk7IH0KLSAgICAgICAgYm9vbCBpc0luVGhpc1JlZ2lvbihjb25zdCBUKiBwb2ludGVyKSB7
IHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocG9pbnRlciAtIGRhdGEoKSkgPCBudW1iZXJP
ZlRoaW5nc1BlclJlZ2lvbigpOyB9Ci0gICAgICAgIHN0YXRpYyBSZWdpb24qIHJlZ2lvbkZvcihj
b25zdCBUKiBwb2ludGVyKSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8UmVnaW9uKj4oYml0d2lzZV9j
YXN0PHVpbnRwdHJfdD4ocG9pbnRlcikgJiB+KHNpemUoKSAtIDEpKTsgfQotICAgICAgICAKLSAg
ICAgICAgdm9pZCogbV9hbGxvY2F0aW9uOwotICAgICAgICBBbGxvY2F0b3IqIG1fYWxsb2NhdG9y
OwotICAgICAgICBSZWdpb24qIG1fbmV4dDsKLSAgICB9OwotICAgIAotICAgIHZvaWQgZnJlZVJl
Z2lvbnNTdGFydGluZ0F0KFJlZ2lvbiopOwotICAgIHZvaWQgc3RhcnRCdW1waW5nSW4oUmVnaW9u
Kik7Ci0gICAgCi0gICAgUmVnaW9uKiBtX3JlZ2lvbkhlYWQ7Ci0gICAgdm9pZCoqIG1fZnJlZUxp
c3RIZWFkOwotICAgIFQqIG1fYnVtcEVuZDsKLSAgICB1bnNpZ25lZCBtX2J1bXBSZW1haW5pbmc7
Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotaW5saW5lIEFsbG9jYXRvcjxUPjo6QWxsb2Nh
dG9yKCkKLSAgICA6IG1fcmVnaW9uSGVhZCgwKQotICAgICwgbV9mcmVlTGlzdEhlYWQoMCkKLSAg
ICAsIG1fYnVtcFJlbWFpbmluZygwKQotewotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotaW5s
aW5lIEFsbG9jYXRvcjxUPjo6fkFsbG9jYXRvcigpCi17Ci0gICAgcmVzZXQoKTsKLX0KLQotdGVt
cGxhdGU8dHlwZW5hbWUgVD4KLUFMV0FZU19JTkxJTkUgdm9pZCogQWxsb2NhdG9yPFQ+OjphbGxv
Y2F0ZSgpCi17Ci0gICAgdm9pZCogcmVzdWx0ID0gYnVtcEFsbG9jYXRlKCk7Ci0gICAgaWYgKExJ
S0VMWSghIXJlc3VsdCkpCi0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgcmV0dXJuIGZyZWVM
aXN0QWxsb2NhdGUoKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXZvaWQgQWxsb2NhdG9y
PFQ+OjpmcmVlKFQqIG9iamVjdCkKLXsKLSAgICBvYmplY3QtPn5UKCk7Ci0gICAgCi0gICAgdm9p
ZCoqIGNlbGwgPSBiaXR3aXNlX2Nhc3Q8dm9pZCoqPihvYmplY3QpOwotICAgICpjZWxsID0gbV9m
cmVlTGlzdEhlYWQ7Ci0gICAgbV9mcmVlTGlzdEhlYWQgPSBjZWxsOwotfQotCi10ZW1wbGF0ZTx0
eXBlbmFtZSBUPgotdm9pZCBBbGxvY2F0b3I8VD46OmZyZWVBbGwoKQotewotICAgIGlmICghbV9y
ZWdpb25IZWFkKSB7Ci0gICAgICAgIEFTU0VSVCghbV9idW1wUmVtYWluaW5nKTsKLSAgICAgICAg
QVNTRVJUKCFtX2ZyZWVMaXN0SGVhZCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0g
ICAgLy8gU2luY2UgdGhlIGNhbGxlciBpcyBvcHRpbmcgb3V0IG9mIGNhbGxpbmcgdGhlIGRlc3Ry
dWN0b3IgZm9yIGFueSBhbGxvY2F0ZWQgdGhpbmcsCi0gICAgLy8gd2UgaGF2ZSB0d28gY2hvaWNl
cywgcGx1cyBhIGNvbnRpbnV1bSBiZXR3ZWVuOiB3ZSBjYW4gZWl0aGVyIGp1c3QgZGVsZXRlIGFs
bCByZWdpb25zCi0gICAgLy8gKGkuZS4gY2FsbCByZXNldCgpKSwgb3Igd2UgY2FuIG1ha2UgYWxs
IHJlZ2lvbnMgYXZhaWxhYmxlIGZvciByZXVzZS4gV2UgZG8gc29tZXRoaW5nCi0gICAgLy8gdGhh
dCBvcHRpbWl6ZXMgZm9yIChhKSBzcGVlZCBvZiBmcmVlQWxsKCksIChiKSB0aGUgYXNzdW1wdGlv
biB0aGF0IGlmIHRoZSB1c2VyIGNhbGxzCi0gICAgLy8gZnJlZUFsbCgpIHRoZW4gdGhleSB3aWxs
IHByb2JhYmx5IGJlIGNhbGxpbmcgYWxsb2NhdGUoKSBpbiB0aGUgbmVhciBmdXR1cmUuIE5hbWVs
eSwKLSAgICAvLyB3ZSBmcmVlIGFsbCBidXQgb25lIHJlZ2lvbiwgYW5kIG1ha2UgdGhlIHJlbWFp
bmluZyByZWdpb24gYSBidW1wIGFsbG9jYXRpb24gcmVnaW9uLgotICAgIAotICAgIGZyZWVSZWdp
b25zU3RhcnRpbmdBdChtX3JlZ2lvbkhlYWQtPm1fbmV4dCk7Ci0gICAgCi0gICAgbV9yZWdpb25I
ZWFkLT5tX25leHQgPSAwOwotICAgIG1fZnJlZUxpc3RIZWFkID0gMDsKLSAgICBzdGFydEJ1bXBp
bmdJbihtX3JlZ2lvbkhlYWQpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotdm9pZCBBbGxv
Y2F0b3I8VD46OnJlc2V0KCkKLXsKLSAgICBmcmVlUmVnaW9uc1N0YXJ0aW5nQXQobV9yZWdpb25I
ZWFkKTsKLSAgICAKLSAgICBtX3JlZ2lvbkhlYWQgPSAwOwotICAgIG1fZnJlZUxpc3RIZWFkID0g
MDsKLSAgICBtX2J1bXBSZW1haW5pbmcgPSAwOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgot
dW5zaWduZWQgQWxsb2NhdG9yPFQ+OjppbmRleE9mKGNvbnN0IFQqIG9iamVjdCkKLXsKLSAgICB1
bnNpZ25lZCBudW1SZWdpb25zID0gMDsKLSAgICBmb3IgKFJlZ2lvbiogcmVnaW9uID0gbV9yZWdp
b25IZWFkOyByZWdpb247IHJlZ2lvbiA9IHJlZ2lvbi0+bV9uZXh0KQotICAgICAgICBudW1SZWdp
b25zKys7Ci0gICAgdW5zaWduZWQgcmVnaW9uSW5kZXggPSAwOwotICAgIGZvciAoUmVnaW9uKiBy
ZWdpb24gPSBtX3JlZ2lvbkhlYWQ7IHJlZ2lvbjsgcmVnaW9uID0gcmVnaW9uLT5tX25leHQpIHsK
LSAgICAgICAgaWYgKHJlZ2lvbi0+aXNJblRoaXNSZWdpb24ob2JqZWN0KSkKLSAgICAgICAgICAg
IHJldHVybiAobnVtUmVnaW9ucyAtIDEgLSByZWdpb25JbmRleCkgKiBSZWdpb246Om51bWJlck9m
VGhpbmdzUGVyUmVnaW9uKCkgKyAob2JqZWN0IC0gcmVnaW9uLT5kYXRhKCkpOwotICAgICAgICBy
ZWdpb25JbmRleCsrOwotICAgIH0KLSAgICBDUkFTSCgpOwotICAgIHJldHVybiAwOwotfQotCi10
ZW1wbGF0ZTx0eXBlbmFtZSBUPgotQWxsb2NhdG9yPFQ+KiBBbGxvY2F0b3I8VD46OmFsbG9jYXRv
ck9mKGNvbnN0IFQqIG9iamVjdCkKLXsKLSAgICByZXR1cm4gUmVnaW9uOjpyZWdpb25Gb3Iob2Jq
ZWN0KS0+bV9hbGxvY2F0b3I7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1BTFdBWVNfSU5M
SU5FIHZvaWQqIEFsbG9jYXRvcjxUPjo6YnVtcEFsbG9jYXRlKCkKLXsKLSAgICBpZiAodW5zaWdu
ZWQgcmVtYWluaW5nID0gbV9idW1wUmVtYWluaW5nKSB7Ci0gICAgICAgIHJlbWFpbmluZy0tOwot
ICAgICAgICBtX2J1bXBSZW1haW5pbmcgPSByZW1haW5pbmc7Ci0gICAgICAgIHJldHVybiBtX2J1
bXBFbmQgLSAocmVtYWluaW5nICsgMSk7Ci0gICAgfQotICAgIHJldHVybiAwOwotfQotCi10ZW1w
bGF0ZTx0eXBlbmFtZSBUPgotdm9pZCogQWxsb2NhdG9yPFQ+OjpmcmVlTGlzdEFsbG9jYXRlKCkK
LXsKLSAgICB2b2lkKiogcmVzdWx0ID0gbV9mcmVlTGlzdEhlYWQ7Ci0gICAgaWYgKFVOTElLRUxZ
KCFyZXN1bHQpKQotICAgICAgICByZXR1cm4gYWxsb2NhdGVTbG93KCk7Ci0gICAgbV9mcmVlTGlz
dEhlYWQgPSBiaXR3aXNlX2Nhc3Q8dm9pZCoqPigqcmVzdWx0KTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotdm9pZCogQWxsb2NhdG9yPFQ+OjphbGxvY2F0
ZVNsb3coKQotewotICAgIEFTU0VSVCghbV9mcmVlTGlzdEhlYWQpOwotICAgIEFTU0VSVCghbV9i
dW1wUmVtYWluaW5nKTsKLSAgICAKLSAgICBpZiAobG9nQ29tcGlsYXRpb25DaGFuZ2VzKCkpCi0g
ICAgICAgIGRhdGFMb2coIkFsbG9jYXRpbmcgYW5vdGhlciBhbGxvY2F0b3IgcmVnaW9uLlxuIik7
Ci0KLSAgICB2b2lkKiBhbGxvY2F0aW9uID0gZmFzdEFsaWduZWRNYWxsb2MoUmVnaW9uOjpzaXpl
KCksIFJlZ2lvbjo6c2l6ZSgpKTsKLSAgICBSZWdpb24qIHJlZ2lvbiA9IHN0YXRpY19jYXN0PFJl
Z2lvbio+KGFsbG9jYXRpb24pOwotICAgIHJlZ2lvbi0+bV9hbGxvY2F0aW9uID0gYWxsb2NhdGlv
bjsKLSAgICByZWdpb24tPm1fYWxsb2NhdG9yID0gdGhpczsKLSAgICBzdGFydEJ1bXBpbmdJbihy
ZWdpb24pOwotICAgIHJlZ2lvbi0+bV9uZXh0ID0gbV9yZWdpb25IZWFkOwotICAgIG1fcmVnaW9u
SGVhZCA9IHJlZ2lvbjsKLSAgICAKLSAgICB2b2lkKiByZXN1bHQgPSBidW1wQWxsb2NhdGUoKTsK
LSAgICBBU1NFUlQocmVzdWx0KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi10ZW1wbGF0ZTx0
eXBlbmFtZSBUPgotdm9pZCBBbGxvY2F0b3I8VD46OmZyZWVSZWdpb25zU3RhcnRpbmdBdCh0eXBl
bmFtZSBBbGxvY2F0b3I8VD46OlJlZ2lvbiogcmVnaW9uKQotewotICAgIHdoaWxlIChyZWdpb24p
IHsKLSAgICAgICAgUmVnaW9uKiBuZXh0UmVnaW9uID0gcmVnaW9uLT5tX25leHQ7Ci0gICAgICAg
IGZhc3RBbGlnbmVkRnJlZShyZWdpb24tPm1fYWxsb2NhdGlvbik7Ci0gICAgICAgIHJlZ2lvbiA9
IG5leHRSZWdpb247Ci0gICAgfQotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotdm9pZCBBbGxv
Y2F0b3I8VD46OnN0YXJ0QnVtcGluZ0luKHR5cGVuYW1lIEFsbG9jYXRvcjxUPjo6UmVnaW9uKiBy
ZWdpb24pCi17Ci0gICAgbV9idW1wRW5kID0gcmVnaW9uLT5kYXRhKCkgKyBSZWdpb246Om51bWJl
ck9mVGhpbmdzUGVyUmVnaW9uKCk7Ci0gICAgbV9idW1wUmVtYWluaW5nID0gUmVnaW9uOjpudW1i
ZXJPZlRoaW5nc1BlclJlZ2lvbigpOwotfQotCi19IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCi0K
LSNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRHJpdmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0RyaXZlci5jcHAJKHJldmlzaW9uIDIxNjUyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRHJpdmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA4LDcgKzEwOCw3IEBAIHN0
YXRpYyBDb21waWxhdGlvblJlc3VsdCBjb21waWxlSW1wbCgKICAgICAgICAgcmV0dXJuIENvbXBp
bGF0aW9uRGVmZXJyZWQ7CiAgICAgfQogICAgIAotICAgIHBsYW4tPmNvbXBpbGVJblRocmVhZCgq
dm0uZGZnU3RhdGUsIDApOworICAgIHBsYW4tPmNvbXBpbGVJblRocmVhZChudWxscHRyKTsKICAg
ICByZXR1cm4gcGxhbi0+ZmluYWxpemVXaXRob3V0Tm90aWZ5aW5nQ2FsbGJhY2soKTsKIH0KICNl
bHNlIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdHcmFwaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdH
cmFwaC5jcHAJKHJldmlzaW9uIDIxNjUyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHR3JhcGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OCwxMiArNjgsMTEgQEAgc3RhdGljIGNv
bnN0IGNoYXIqIGRmZ09wTmFtZXNbXSA9IHsKICN1bmRlZiBTVFJJTkdJWkVfREZHX09QX0VOVU0K
IH07CiAKLUdyYXBoOjpHcmFwaChWTSYgdm0sIFBsYW4mIHBsYW4sIExvbmdMaXZlZFN0YXRlJiBs
b25nTGl2ZWRTdGF0ZSkKK0dyYXBoOjpHcmFwaChWTSYgdm0sIFBsYW4mIHBsYW4pCiAgICAgOiBt
X3ZtKHZtKQogICAgICwgbV9wbGFuKHBsYW4pCiAgICAgLCBtX2NvZGVCbG9jayhtX3BsYW4uY29k
ZUJsb2NrKQogICAgICwgbV9wcm9maWxlZEJsb2NrKG1fY29kZUJsb2NrLT5hbHRlcm5hdGl2ZSgp
KQotICAgICwgbV9hbGxvY2F0b3IobG9uZ0xpdmVkU3RhdGUubV9hbGxvY2F0b3IpCiAgICAgLCBt
X2NmZyhzdGQ6Om1ha2VfdW5pcXVlPENGRz4oKnRoaXMpKQogICAgICwgbV9uZXh0TWFjaGluZUxv
Y2FsKDApCiAgICAgLCBtX2ZpeHBvaW50U3RhdGUoQmVmb3JlRml4cG9pbnQpCkBAIC05NiwxNyAr
OTUsNiBAQCBHcmFwaDo6R3JhcGgoVk0mIHZtLCBQbGFuJiBwbGFuLCBMb25nTGl2CiAKIEdyYXBo
Ojp+R3JhcGgoKQogewotICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gbnVtQmxvY2tz
KCk7IGJsb2NrSW5kZXgtLTspIHsKLSAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSB0aGlzLT5i
bG9jayhibG9ja0luZGV4KTsKLSAgICAgICAgaWYgKCFibG9jaykKLSAgICAgICAgICAgIGNvbnRp
bnVlOwotCi0gICAgICAgIGZvciAodW5zaWduZWQgcGhpSW5kZXggPSBibG9jay0+cGhpcy5zaXpl
KCk7IHBoaUluZGV4LS07KQotICAgICAgICAgICAgbV9hbGxvY2F0b3IuZnJlZShibG9jay0+cGhp
c1twaGlJbmRleF0pOwotICAgICAgICBmb3IgKHVuc2lnbmVkIG5vZGVJbmRleCA9IGJsb2NrLT5z
aXplKCk7IG5vZGVJbmRleC0tOykKLSAgICAgICAgICAgIG1fYWxsb2NhdG9yLmZyZWUoYmxvY2st
PmF0KG5vZGVJbmRleCkpOwotICAgIH0KLSAgICBtX2FsbG9jYXRvci5mcmVlQWxsKCk7CiB9CiAK
IGNvbnN0IGNoYXIgKkdyYXBoOjpvcE5hbWUoTm9kZVR5cGUgb3ApCkBAIC01OTksMTkgKzU4Nyw2
IEBAIHZvaWQgR3JhcGg6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCwgRHVtcEMKICAgICB9CiB9CiAK
LXZvaWQgR3JhcGg6OmFkZE5vZGVUb01hcEJ5SW5kZXgoTm9kZSogbm9kZSkKLXsKLSAgICBpZiAo
bV9ub2RlSW5kZXhGcmVlTGlzdC5pc0VtcHR5KCkpIHsKLSAgICAgICAgbm9kZS0+bV9pbmRleCA9
IG1fbm9kZXNCeUluZGV4LnNpemUoKTsKLSAgICAgICAgbV9ub2Rlc0J5SW5kZXguYXBwZW5kKG5v
ZGUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIHVuc2lnbmVkIGluZGV4ID0gbV9ub2Rl
SW5kZXhGcmVlTGlzdC50YWtlTGFzdCgpOwotICAgIG5vZGUtPm1faW5kZXggPSBpbmRleDsKLSAg
ICBBU1NFUlQoIW1fbm9kZXNCeUluZGV4W2luZGV4XSk7Ci0gICAgbV9ub2Rlc0J5SW5kZXhbaW5k
ZXhdID0gbm9kZTsKLX0KLQogdm9pZCBHcmFwaDo6ZGVsZXRlTm9kZShOb2RlKiBub2RlKQogewog
ICAgIGlmICh2YWxpZGF0aW9uRW5hYmxlZCgpICYmIG1fZm9ybSA9PSBTU0EpIHsKQEAgLTYyMSw0
OCArNTk2LDEyIEBAIHZvaWQgR3JhcGg6OmRlbGV0ZU5vZGUoTm9kZSogbm9kZSkKICAgICAgICAg
fQogICAgIH0KIAotICAgIFJFTEVBU0VfQVNTRVJUKG1fbm9kZXNCeUluZGV4W25vZGUtPm1faW5k
ZXhdID09IG5vZGUpOwotICAgIHVuc2lnbmVkIG5vZGVJbmRleCA9IG5vZGUtPm1faW5kZXg7Ci0g
ICAgbV9ub2Rlc0J5SW5kZXhbbm9kZUluZGV4XSA9IG51bGxwdHI7Ci0gICAgbV9ub2RlSW5kZXhG
cmVlTGlzdC5hcHBlbmQobm9kZUluZGV4KTsKLQotICAgIG1fYWxsb2NhdG9yLmZyZWUobm9kZSk7
CisgICAgbV9ub2Rlcy5yZW1vdmUobm9kZSk7CiB9CiAKIHZvaWQgR3JhcGg6OnBhY2tOb2RlSW5k
aWNlcygpCiB7Ci0gICAgaWYgKG1fbm9kZUluZGV4RnJlZUxpc3QuaXNFbXB0eSgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICB1bnNpZ25lZCBob2xlSW5kZXggPSAwOwotICAgIHVuc2lnbmVkIGVu
ZEluZGV4ID0gbV9ub2Rlc0J5SW5kZXguc2l6ZSgpOwotCi0gICAgd2hpbGUgKHRydWUpIHsKLSAg
ICAgICAgd2hpbGUgKGhvbGVJbmRleCA8IGVuZEluZGV4ICYmIG1fbm9kZXNCeUluZGV4W2hvbGVJ
bmRleF0pCi0gICAgICAgICAgICArK2hvbGVJbmRleDsKLQotICAgICAgICBpZiAoaG9sZUluZGV4
ID09IGVuZEluZGV4KQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIEFTU0VSVChob2xlSW5k
ZXggPCBtX25vZGVzQnlJbmRleC5zaXplKCkpOwotICAgICAgICBBU1NFUlQoIW1fbm9kZXNCeUlu
ZGV4W2hvbGVJbmRleF0pOwotCi0gICAgICAgIGRvIHsKLSAgICAgICAgICAgIC0tZW5kSW5kZXg7
Ci0gICAgICAgIH0gd2hpbGUgKCFtX25vZGVzQnlJbmRleFtlbmRJbmRleF0gJiYgZW5kSW5kZXgg
PiBob2xlSW5kZXgpOwotCi0gICAgICAgIGlmIChob2xlSW5kZXggPT0gZW5kSW5kZXgpCi0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgQVNTRVJUKGVuZEluZGV4ID4gaG9sZUluZGV4KTsKLSAg
ICAgICAgQVNTRVJUKG1fbm9kZXNCeUluZGV4W2VuZEluZGV4XSk7Ci0KLSAgICAgICAgYXV0byYg
dmFsdWUgPSBtX25vZGVzQnlJbmRleFtlbmRJbmRleF07Ci0gICAgICAgIHZhbHVlLT5tX2luZGV4
ID0gaG9sZUluZGV4OwotICAgICAgICBtX25vZGVzQnlJbmRleFtob2xlSW5kZXhdID0gV1RGTW92
ZSh2YWx1ZSk7Ci0gICAgICAgICsraG9sZUluZGV4OwotICAgIH0KLQotICAgIG1fbm9kZUluZGV4
RnJlZUxpc3QucmVzaXplKDApOwotICAgIG1fbm9kZXNCeUluZGV4LnJlc2l6ZShlbmRJbmRleCk7
CisgICAgbV9ub2Rlcy5wYWNrSW5kaWNlcygpOwogfQogCiB2b2lkIEdyYXBoOjpkZXRocmVhZCgp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCShyZXZpc2lvbiAyMTY1Mjgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMzLDkgKzMzLDcgQEAKICNpbmNsdWRlICJERkdBcmd1bWVudFBvc2l0aW9uLmgiCiAjaW5j
bHVkZSAiREZHQmFzaWNCbG9jay5oIgogI2luY2x1ZGUgIkRGR0Zyb3plblZhbHVlLmgiCi0jaW5j
bHVkZSAiREZHTG9uZ0xpdmVkU3RhdGUuaCIKICNpbmNsdWRlICJERkdOb2RlLmgiCi0jaW5jbHVk
ZSAiREZHTm9kZUFsbG9jYXRvci5oIgogI2luY2x1ZGUgIkRGR1BsYW4uaCIKICNpbmNsdWRlICJE
RkdQcm9wZXJ0eVR5cGVLZXkuaCIKICNpbmNsdWRlICJERkdTY2FubmFibGUuaCIKQEAgLTEyNiw3
ICsxMjQsNyBAQCBlbnVtIEFkZFNwZWN1bGF0aW9uTW9kZSB7CiAvLyBOb2RlcyB0aGF0IGFyZSAn
ZGVhZCcgcmVtYWluIGluIHRoZSB2ZWN0b3Igd2l0aCByZWZDb3VudCAwLgogY2xhc3MgR3JhcGgg
OiBwdWJsaWMgdmlydHVhbCBTY2FubmFibGUgewogcHVibGljOgotICAgIEdyYXBoKFZNJiwgUGxh
biYsIExvbmdMaXZlZFN0YXRlJik7CisgICAgR3JhcGgoVk0mLCBQbGFuJik7CiAgICAgfkdyYXBo
KCk7CiAgICAgCiAgICAgdm9pZCBjaGFuZ2VDaGlsZChFZGdlJiBlZGdlLCBOb2RlKiBuZXdOb2Rl
KQpAQCAtMTg2LDIyICsxODQsMjIgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4u
IFBhcmFtcz4KICAgICBOb2RlKiBhZGROb2RlKFBhcmFtcy4uLiBwYXJhbXMpCiAgICAgewotICAg
ICAgICBOb2RlKiBub2RlID0gbmV3IChtX2FsbG9jYXRvcikgTm9kZShwYXJhbXMuLi4pOwotICAg
ICAgICBhZGROb2RlVG9NYXBCeUluZGV4KG5vZGUpOworICAgICAgICBOb2RlKiBub2RlID0gbmV3
IE5vZGUocGFyYW1zLi4uKTsKKyAgICAgICAgbV9ub2Rlcy5hZGQoc3RkOjp1bmlxdWVfcHRyPE5v
ZGU+KG5vZGUpKTsKICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgfQogICAgIHRlbXBsYXRlPHR5
cGVuYW1lLi4uIFBhcmFtcz4KICAgICBOb2RlKiBhZGROb2RlKFNwZWN1bGF0ZWRUeXBlIHR5cGUs
IFBhcmFtcy4uLiBwYXJhbXMpCiAgICAgewotICAgICAgICBOb2RlKiBub2RlID0gbmV3IChtX2Fs
bG9jYXRvcikgTm9kZShwYXJhbXMuLi4pOworICAgICAgICBOb2RlKiBub2RlID0gbmV3IE5vZGUo
cGFyYW1zLi4uKTsKICAgICAgICAgbm9kZS0+cHJlZGljdCh0eXBlKTsKLSAgICAgICAgYWRkTm9k
ZVRvTWFwQnlJbmRleChub2RlKTsKKyAgICAgICAgbV9ub2Rlcy5hZGQoc3RkOjp1bmlxdWVfcHRy
PE5vZGU+KG5vZGUpKTsKICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgfQogCiAgICAgdm9pZCBk
ZWxldGVOb2RlKE5vZGUqKTsKLSAgICB1bnNpZ25lZCBtYXhOb2RlQ291bnQoKSBjb25zdCB7IHJl
dHVybiBtX25vZGVzQnlJbmRleC5zaXplKCk7IH0KLSAgICBOb2RlKiBub2RlQXQodW5zaWduZWQg
aW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZXNCeUluZGV4W2luZGV4XTsgfQorICAgIHVuc2ln
bmVkIG1heE5vZGVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZXMuc2l6ZSgpOyB9CisgICAg
Tm9kZSogbm9kZUF0KHVuc2lnbmVkIGluZGV4KSBjb25zdCB7IHJldHVybiBtX25vZGVzW2luZGV4
XTsgfQogICAgIHZvaWQgcGFja05vZGVJbmRpY2VzKCk7CiAKICAgICB2b2lkIGRldGhyZWFkKCk7
CkBAIC05MjMsOCArOTIxLDYgQEAgcHVibGljOgogICAgIENvZGVCbG9jayogbV9jb2RlQmxvY2s7
CiAgICAgQ29kZUJsb2NrKiBtX3Byb2ZpbGVkQmxvY2s7CiAgICAgCi0gICAgTm9kZUFsbG9jYXRv
ciYgbV9hbGxvY2F0b3I7Ci0KICAgICBWZWN0b3I8IFJlZlB0cjxCYXNpY0Jsb2NrPiAsIDg+IG1f
YmxvY2tzOwogICAgIFZlY3RvcjxFZGdlLCAxNj4gbV92YXJBcmdDaGlsZHJlbjsKIApAQCAtMTAy
MCw4ICsxMDE2LDYgQEAgcHVibGljOgogICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3ltYm9sU3Ry
dWN0dXJlOwogCiBwcml2YXRlOgotICAgIHZvaWQgYWRkTm9kZVRvTWFwQnlJbmRleChOb2RlKik7
Ci0KICAgICBib29sIGlzU3RyaW5nUHJvdG90eXBlTWV0aG9kU2FuZShKU0dsb2JhbE9iamVjdCos
IFVuaXF1ZWRTdHJpbmdJbXBsKik7CiAKICAgICB2b2lkIGhhbmRsZVN1Y2Nlc3NvcihWZWN0b3I8
QmFzaWNCbG9jayosIDE2PiYgd29ya2xpc3QsIEJhc2ljQmxvY2sqLCBCYXNpY0Jsb2NrKiBzdWNj
ZXNzb3IpOwpAQCAtMTA1NCw4ICsxMDQ4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIGJ5
dGVjb2RlQ2FuVHJ1bmNhdGVJbnRlZ2VyKGFkZC0+YXJpdGhOb2RlRmxhZ3MoKSkgPyBTcGVjdWxh
dGVJbnQzMkFuZFRydW5jYXRlQ29uc3RhbnRzIDogRG9udFNwZWN1bGF0ZUludDMyOwogICAgIH0K
IAotICAgIFZlY3RvcjxOb2RlKiwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+IG1fbm9kZXNCeUlu
ZGV4OwotICAgIFZlY3Rvcjx1bnNpZ25lZCwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+IG1fbm9k
ZUluZGV4RnJlZUxpc3Q7CisgICAgQjM6OlNwYXJzZUNvbGxlY3Rpb248Tm9kZT4gbV9ub2RlczsK
ICAgICBTZWdtZW50ZWRWZWN0b3I8UmVnaXN0ZXJlZFN0cnVjdHVyZVNldCwgMTY+IG1fc3RydWN0
dXJlU2V0czsKIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTG9uZ0xp
dmVkU3RhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
TG9uZ0xpdmVkU3RhdGUuY3BwCShyZXZpc2lvbiAyMTY1MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0xvbmdMaXZlZFN0YXRlLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDUxICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
LSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkRGR0xvbmdMaXZlZFN0YXRlLmgiCi0KLSNpZiBF
TkFCTEUoREZHX0pJVCkKLQotI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKLQotbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBERkcgewotCi1Mb25nTGl2ZWRTdGF0ZTo6TG9uZ0xpdmVkU3RhdGUoKQot
ewotfQotCi1Mb25nTGl2ZWRTdGF0ZTo6fkxvbmdMaXZlZFN0YXRlKCkKLXsKLX0KLQotdm9pZCBM
b25nTGl2ZWRTdGF0ZTo6c2hyaW5rVG9GaXQoKQotewotICAgIG1fYWxsb2NhdG9yLnJlc2V0KCk7
Ci19Ci0KLX0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKLQotI2VuZGlmIC8vIEVOQUJMRShERkdf
SklUKQotCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xvbmdMaXZlZFN0YXRl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMb25nTGl2ZWRT
dGF0ZS5oCShyZXZpc2lvbiAyMTY1MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0xvbmdMaXZlZFN0YXRlLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw0OSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNwcmFnbWEgb25jZQotCi0j
aWYgRU5BQkxFKERGR19KSVQpCi0KLSNpbmNsdWRlICJERkdOb2RlQWxsb2NhdG9yLmgiCi0jaW5j
bHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLQot
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewotCi1jbGFzcyBMb25nTGl2ZWRTdGF0ZSB7
Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7IFdURl9NQUtFX05PTkNPUFlBQkxFKExvbmdM
aXZlZFN0YXRlKTsKLXB1YmxpYzoKLSAgICBMb25nTGl2ZWRTdGF0ZSgpOwotICAgIH5Mb25nTGl2
ZWRTdGF0ZSgpOwotICAgIAotICAgIHZvaWQgc2hyaW5rVG9GaXQoKTsKLSAgICAKLSAgICBOb2Rl
QWxsb2NhdG9yIG1fYWxsb2NhdG9yOwotfTsKLQotfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwot
Ci0jZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGUuaAkocmV2aXNpb24gMjE2NTI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShE
RkdfSklUKQogCisjaW5jbHVkZSAiQjNTcGFyc2VDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiQmFz
aWNCbG9ja0xvY2F0aW9uLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiREZH
QWJzdHJhY3RWYWx1ZS5oIgpAQCAtMjQ2LDYgKzI0Nyw3IEBAIHN0cnVjdCBDYWxsRE9NR2V0dGVy
RGF0YSB7CiAvLwogLy8gTm9kZSByZXByZXNlbnRzIGEgc2luZ2xlIG9wZXJhdGlvbiBpbiB0aGUg
ZGF0YSBmbG93IGdyYXBoLgogc3RydWN0IE5vZGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBjaGFyIEhhc2hTZXRUZW1wbGF0ZUluc3Rh
bnRpYXRpb25TdHJpbmdbXTsKICAgICAKQEAgLTI1MzMsNyArMjUzNSw3IEBAIHB1YmxpYzoKICAg
ICBBZGphY2VuY3lMaXN0IGNoaWxkcmVuOwogCiBwcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBH
cmFwaDsKKyAgICBmcmllbmQgY2xhc3MgQjM6OlNwYXJzZUNvbGxlY3Rpb248Tm9kZT47CiAKICAg
ICB1bnNpZ25lZCBtX2luZGV4IHsgc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgp
IH07CiAgICAgdW5zaWduZWQgbV9vcCA6IDEwOyAvLyByZWFsIHR5cGUgaXMgTm9kZVR5cGUKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZUFsbG9jYXRvci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZUFsbG9jYXRvci5oCShyZXZp
c2lvbiAyMTY1MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVBbGxvY2F0
b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNiBAQAogCiAjaWYgRU5BQkxFKERGR19K
SVQpCiAKLSNpbmNsdWRlICJERkdBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJERkdOb2RlLmgiCiAK
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUGxhbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQbGFuLmNwcAkocmV2aXNpb24gMjE2NTI4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQbGFuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY5LDcgKzE2OSw3IEBAIGJv
b2wgUGxhbjo6cmVwb3J0Q29tcGlsZVRpbWVzKCkgY29uc3QKICAgICAgICAgfHwgKE9wdGlvbnM6
OnJlcG9ydEZUTENvbXBpbGVUaW1lcygpICYmIGlzRlRMKG1vZGUpKTsKIH0KIAotdm9pZCBQbGFu
Ojpjb21waWxlSW5UaHJlYWQoTG9uZ0xpdmVkU3RhdGUmIGxvbmdMaXZlZFN0YXRlLCBUaHJlYWRE
YXRhKiB0aHJlYWREYXRhKQordm9pZCBQbGFuOjpjb21waWxlSW5UaHJlYWQoVGhyZWFkRGF0YSog
dGhyZWFkRGF0YSkKIHsKICAgICB0aGlzLT50aHJlYWREYXRhID0gdGhyZWFkRGF0YTsKICAgICAK
QEAgLTE4NSw3ICsxODUsNyBAQCB2b2lkIFBsYW46OmNvbXBpbGVJblRocmVhZChMb25nTGl2ZWRT
dGF0CiAgICAgaWYgKGxvZ0NvbXBpbGF0aW9uQ2hhbmdlcyhtb2RlKSB8fCBPcHRpb25zOjpyZXBv
cnRERkdQaGFzZVRpbWVzKCkpCiAgICAgICAgIGRhdGFMb2coIkRGRyhQbGFuKSBjb21waWxpbmcg
IiwgKmNvZGVCbG9jaywgIiB3aXRoICIsIG1vZGUsICIsIG51bWJlciBvZiBpbnN0cnVjdGlvbnMg
PSAiLCBjb2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKSwgIlxuIik7CiAKLSAgICBDb21waWxh
dGlvblBhdGggcGF0aCA9IGNvbXBpbGVJblRocmVhZEltcGwobG9uZ0xpdmVkU3RhdGUpOworICAg
IENvbXBpbGF0aW9uUGF0aCBwYXRoID0gY29tcGlsZUluVGhyZWFkSW1wbCgpOwogCiAgICAgUkVM
RUFTRV9BU1NFUlQocGF0aCA9PSBDYW5jZWxQYXRoIHx8IGZpbmFsaXplcik7CiAgICAgUkVMRUFT
RV9BU1NFUlQoKHBhdGggPT0gQ2FuY2VsUGF0aCkgPT0gKHN0YWdlID09IENhbmNlbGxlZCkpOwpA
QCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgUGxhbjo6Y29tcGlsZUluVGhyZWFkKExvbmdMaXZlZFN0
YXQKICAgICB9CiB9CiAKLVBsYW46OkNvbXBpbGF0aW9uUGF0aCBQbGFuOjpjb21waWxlSW5UaHJl
YWRJbXBsKExvbmdMaXZlZFN0YXRlJiBsb25nTGl2ZWRTdGF0ZSkKK1BsYW46OkNvbXBpbGF0aW9u
UGF0aCBQbGFuOjpjb21waWxlSW5UaHJlYWRJbXBsKCkKIHsKICAgICBjbGVhbk11c3RIYW5kbGVW
YWx1ZXNJZk5lY2Vzc2FyeSgpOwogICAgIApAQCAtMjQ1LDcgKzI0NSw3IEBAIFBsYW46OkNvbXBp
bGF0aW9uUGF0aCBQbGFuOjpjb21waWxlSW5UaHIKICAgICAgICAgZGF0YUxvZygiXG4iKTsKICAg
ICB9CiAgICAgCi0gICAgR3JhcGggZGZnKCp2bSwgKnRoaXMsIGxvbmdMaXZlZFN0YXRlKTsKKyAg
ICBHcmFwaCBkZmcoKnZtLCAqdGhpcyk7CiAgICAgCiAgICAgaWYgKCFwYXJzZShkZmcpKSB7CiAg
ICAgICAgIGZpbmFsaXplciA9IHN0ZDo6bWFrZV91bmlxdWU8RmFpbGVkRmluYWxpemVyPigqdGhp
cyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uaAkocmV2aXNpb24gMjE2NTI4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ3LDcgKzQ3LDYgQEAgY2xhc3MgU2xvdFZpc2l0b3I7CiAKIG5hbWVzcGFjZSBERkcgewog
Ci1jbGFzcyBMb25nTGl2ZWRTdGF0ZTsKIGNsYXNzIFRocmVhZERhdGE7CiAKICNpZiBFTkFCTEUo
REZHX0pJVCkKQEAgLTU5LDcgKzU4LDcgQEAgc3RydWN0IFBsYW4gOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZQogICAgICAgICBjb25zdCBPcGVyYW5kczxKU1ZhbHVlPiYgbXVzdEhhbmRsZVZh
bHVlcyk7CiAgICAgflBsYW4oKTsKIAotICAgIHZvaWQgY29tcGlsZUluVGhyZWFkKExvbmdMaXZl
ZFN0YXRlJiwgVGhyZWFkRGF0YSopOworICAgIHZvaWQgY29tcGlsZUluVGhyZWFkKFRocmVhZERh
dGEqKTsKICAgICAKICAgICBDb21waWxhdGlvblJlc3VsdCBmaW5hbGl6ZVdpdGhvdXROb3RpZnlp
bmdDYWxsYmFjaygpOwogICAgIHZvaWQgZmluYWxpemVBbmROb3RpZnlDYWxsYmFjaygpOwpAQCAt
MTIyLDcgKzEyMSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCByZXBvcnRDb21waWxlVGltZXMoKSBj
b25zdDsKICAgICAKICAgICBlbnVtIENvbXBpbGF0aW9uUGF0aCB7IEZhaWxQYXRoLCBERkdQYXRo
LCBGVExQYXRoLCBDYW5jZWxQYXRoIH07Ci0gICAgQ29tcGlsYXRpb25QYXRoIGNvbXBpbGVJblRo
cmVhZEltcGwoTG9uZ0xpdmVkU3RhdGUmKTsKKyAgICBDb21waWxhdGlvblBhdGggY29tcGlsZUlu
VGhyZWFkSW1wbCgpOwogICAgIAogICAgIGJvb2wgaXNTdGlsbFZhbGlkKCk7CiAgICAgdm9pZCBy
ZWFsbHlBZGQoQ29tbW9uRGF0YSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdXb3JrbGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdXb3JrbGlzdC5jcHAJKHJldmlzaW9uIDIxNjUyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHV29ya2xpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw2IEBACiAj
aW5jbHVkZSAiREZHV29ya2xpc3QuaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgotI2luY2x1
ZGUgIkRGR0xvbmdMaXZlZFN0YXRlLmgiCiAjaW5jbHVkZSAiREZHU2FmZXBvaW50LmgiCiAjaW5j
bHVkZSAiRGVmZXJHQy5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKQEAgLTEwOSw3ICsxMDgs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICAgICBkYXRhTG9nKCJIZWFwIGlzIHN0b3BlZCBidXQg
aGVyZSB3ZSBhcmUhICgxKVxuIik7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgICAgICB9Ci0gICAgICAgIG1fcGxhbi0+Y29tcGlsZUluVGhyZWFkKCptX2xv
bmdMaXZlZFN0YXRlLCAmbV9kYXRhKTsKKyAgICAgICAgbV9wbGFuLT5jb21waWxlSW5UaHJlYWQo
Jm1fZGF0YSk7CiAgICAgICAgIGlmIChtX3BsYW4tPnN0YWdlICE9IFBsYW46OkNhbmNlbGxlZCkg
ewogICAgICAgICAgICAgaWYgKG1fcGxhbi0+dm0tPmhlYXAuY29sbGVjdG9yQmVsaWV2ZXNUaGF0
VGhlV29ybGRJc1N0b3BwZWQoKSkgewogICAgICAgICAgICAgICAgIGRhdGFMb2coIkhlYXAgaXMg
c3RvcHBlZCBidXQgaGVyZSB3ZSBhcmUhICgyKVxuIik7CkBAIC0xNDcsNyArMTQ2LDYgQEAgcHJv
dGVjdGVkOgogICAgICAgICAgICAgVGhyZWFkOjpjdXJyZW50KCkuY2hhbmdlUHJpb3JpdHkobV9y
ZWxhdGl2ZVByaW9yaXR5KTsKICAgICAgICAgCiAgICAgICAgIG1fY29tcGlsYXRpb25TY29wZSA9
IHN0ZDo6bWFrZV91bmlxdWU8Q29tcGlsYXRpb25TY29wZT4oKTsKLSAgICAgICAgbV9sb25nTGl2
ZWRTdGF0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8TG9uZ0xpdmVkU3RhdGU+KCk7CiAgICAgfQogICAg
IAogICAgIHZvaWQgdGhyZWFkSXNTdG9wcGluZyhjb25zdCBBYnN0cmFjdExvY2tlciYpIG92ZXJy
aWRlCkBAIC0xNjAsNyArMTU4LDYgQEAgcHJvdGVjdGVkOgogICAgICAgICBBU1NFUlQoIW1fcGxh
bik7CiAgICAgICAgIAogICAgICAgICBtX2NvbXBpbGF0aW9uU2NvcGUgPSBudWxscHRyOwotICAg
ICAgICBtX2xvbmdMaXZlZFN0YXRlID0gbnVsbHB0cjsKICAgICAgICAgbV9wbGFuID0gbnVsbHB0
cjsKICAgICB9CiAgICAgCkBAIC0xNjksNyArMTY2LDYgQEAgcHJpdmF0ZToKICAgICBUaHJlYWRE
YXRhJiBtX2RhdGE7CiAgICAgaW50IG1fcmVsYXRpdmVQcmlvcml0eTsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8Q29tcGlsYXRpb25TY29wZT4gbV9jb21waWxhdGlvblNjb3BlOwotICAgIHN0ZDo6dW5p
cXVlX3B0cjxMb25nTGl2ZWRTdGF0ZT4gbV9sb25nTGl2ZWRTdGF0ZTsKICAgICBSZWZQdHI8UGxh
bj4gbV9wbGFuOwogfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAko
cmV2aXNpb24gMjE2NTI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw2IEBACiAjaW5jbHVkZSAiQ29tbW9uSWRlbnRp
ZmllcnMuaCIKICNpbmNsdWRlICJDb21tb25TbG93UGF0aHMuaCIKICNpbmNsdWRlICJDdXN0b21H
ZXR0ZXJTZXR0ZXIuaCIKLSNpbmNsdWRlICJERkdMb25nTGl2ZWRTdGF0ZS5oIgogI2luY2x1ZGUg
IkRGR1dvcmtsaXN0LmgiCiAjaW5jbHVkZSAiRGlzYXNzZW1ibGVyLmgiCiAjaW5jbHVkZSAiRXJy
b3JJbnN0YW5jZS5oIgpAQCAtMzE1LDExICszMTQsNiBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwg
SGVhcFR5cGUgaGVhcFR5cGUpCiAKICAgICBjYWxsRnJhbWVGb3JDYXRjaCA9IG51bGxwdHI7CiAK
LSNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBpZiAoY2FuVXNlSklUKCkpCi0gICAgICAgIGRmZ1N0
YXRlID0gc3RkOjptYWtlX3VuaXF1ZTxERkc6OkxvbmdMaXZlZFN0YXRlPigpOwotI2VuZGlmCi0g
ICAgCiAgICAgLy8gSW5pdGlhbGl6ZSB0aGlzIGxhc3QsIGFzIGEgZnJlZSB3YXkgb2YgYXNzZXJ0
aW5nIHRoYXQgVk0gaW5pdGlhbGl6YXRpb24gaXRzZWxmCiAgICAgLy8gd29uJ3QgdXNlIHRoaXMu
CiAgICAgbV90eXBlZEFycmF5Q29udHJvbGxlciA9IGFkb3B0UmVmKG5ldyBTaW1wbGVUeXBlZEFy
cmF5Q29udHJvbGxlcigpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkocmV2
aXNpb24gMjE2NTI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkod29y
a2luZyBjb3B5KQpAQCAtMTQxLDExICsxNDEsNiBAQCBjbGFzcyBXYXRjaGRvZzsKIGNsYXNzIFdh
dGNocG9pbnQ7CiBjbGFzcyBXYXRjaHBvaW50U2V0OwogCi0jaWYgRU5BQkxFKERGR19KSVQpCi1u
YW1lc3BhY2UgREZHIHsKLWNsYXNzIExvbmdMaXZlZFN0YXRlOwotfQotI2VuZGlmIC8vIEVOQUJM
RShERkdfSklUKQogI2lmIEVOQUJMRShGVExfSklUKQogbmFtZXNwYWNlIEZUTCB7CiBjbGFzcyBU
aHVua3M7CkBAIC0zMDAsMTAgKzI5NSw2IEBAIHB1YmxpYzoKICAgICBKU1dlYkFzc2VtYmx5Q29k
ZUJsb2NrU3Vic3BhY2Ugd2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZTsKICNlbmRpZgogCi0jaWYg
RU5BQkxFKERGR19KSVQpCi0gICAgc3RkOjp1bmlxdWVfcHRyPERGRzo6TG9uZ0xpdmVkU3RhdGU+
IGRmZ1N0YXRlOwotI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQotCiAgICAgVk1UeXBlIHZtVHlw
ZTsKICAgICBDbGllbnREYXRhKiBjbGllbnREYXRhOwogICAgIFZNRW50cnlGcmFtZSogdG9wVk1F
bnRyeUZyYW1lOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309957</attachid>
            <date>2017-05-12 15:47:35 -0700</date>
            <delta_ts>2017-05-12 17:37:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160098-20170512154734.patch</filename>
            <type>text/plain</type>
            <size>38106</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjE2NzkyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ0IEBA
CisyMDE3LTA1LTEyICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgW0pTQ10gREZHOjpOb2RlIHNob3VsZCBub3QgaGF2ZSBpdHMgb3duIGFsbG9jYXRvcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwMDk4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSSBqdXN0IHJlYmFz
ZWQgdGhlIHBhdGNoIGZyb20gPGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzIwMzgw
OD4uCisKKyAgICAgICAgSSByYW4gT2N0YW5lIGFuZCBKZXRTdHJlYW0gbG9jYWxseSBvbiBhIE1h
Y0Jvb2sgQWlyIGFuZCBJIHdhc24ndCBhYmxlIHRvCisgICAgICAgIHJlcHJvZHVjZSBhIHJlZ3Jl
c3Npb24uIExldCdzIGxhbmQgdGhpcyBhZ2FpbiBhbmQgc2VlIHdoYXQgdGhlIGJvdHMgc2F5Lgor
CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBiMy9CM1NwYXJzZUNvbGxlY3Rpb24uaDoKKyAgICAgICAgKEpTQzo6QjM6OlNwYXJz
ZUNvbGxlY3Rpb246OnBhY2tJbmRpY2VzKToKKyAgICAgICAgKiBkZmcvREZHQWxsb2NhdG9yLmg6
IFJlbW92ZWQuCisgICAgICAgICogZGZnL0RGR0RyaXZlci5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6Y29tcGlsZUltcGwpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6R3JhcGg6OkdyYXBoKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6fkdyYXBo
KToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6ZGVsZXRlTm9kZSk6CisgICAgICAgIChKU0M6
OkRGRzo6R3JhcGg6OnBhY2tOb2RlSW5kaWNlcyk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6
OmFkZE5vZGVUb01hcEJ5SW5kZXgpOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5o
OgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjphZGROb2RlKToKKyAgICAgICAgKEpTQzo6REZH
OjpHcmFwaDo6bWF4Tm9kZUNvdW50KToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6bm9kZUF0
KToKKyAgICAgICAgKiBkZmcvREZHTG9uZ0xpdmVkU3RhdGUuY3BwOiBSZW1vdmVkLgorICAgICAg
ICAqIGRmZy9ERkdMb25nTGl2ZWRTdGF0ZS5oOiBSZW1vdmVkLgorICAgICAgICAqIGRmZy9ERkdO
b2RlLmg6CisgICAgICAgICogZGZnL0RGR05vZGVBbGxvY2F0b3IuaDoKKyAgICAgICAgKiBkZmcv
REZHUGxhbi5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UGxhbjo6Y29tcGlsZUluVGhyZWFkKToK
KyAgICAgICAgKEpTQzo6REZHOjpQbGFuOjpjb21waWxlSW5UaHJlYWRJbXBsKToKKyAgICAgICAg
KiBkZmcvREZHUGxhbi5oOgorICAgICAgICAqIGRmZy9ERkdXb3JrbGlzdC5jcHA6CisgICAgICAg
ICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgICogcnVu
dGltZS9WTS5oOgorCiAyMDE3LTA1LTEyICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNv
bT4KIAogICAgICAgICBDbGVhbnVwOiBNYWtlIFF1ZXVlVGFza1RvRXZlbnRMb29wRnVuY3Rpb25Q
dHIgdGFrZSBKU0dsb2JhbE9iamVjdCYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiAyMTY1MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtOTk5LDggKzk5
OSw2IEBACiAJCTBGRUZDOUFCMTY4MUEzQjYwMDU2N0Y1MyAvKiBERkdPU1JFeGl0SnVtcFBsYWNl
aG9sZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RkVGQzlBODE2ODFBM0IwMDA1NjdGNTMgLyogREZHT1NSRXhpdEp1bXBQbGFjZWhvbGRlci5oICov
OyB9OwogCQkwRkYwNTRGOTFBQzM1QjQ0MDBFNUJFNTcgLyogRXhlY3V0YWJsZUFsbG9jYXRpb25G
dXp6LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
RjA1NEY3MUFDMzVCNDQwMEU1QkU1NyAvKiBFeGVjdXRhYmxlQWxsb2NhdGlvbkZ1enouY3BwICov
OyB9OwogCQkwRkYwNTRGQTFBQzM1QjQ0MDBFNUJFNTcgLyogRXhlY3V0YWJsZUFsbG9jYXRpb25G
dXp6LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkYw
NTRGODFBQzM1QjQ0MDBFNUJFNTcgLyogRXhlY3V0YWJsZUFsbG9jYXRpb25GdXp6LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMEZGMEYxOTkxNkI3
MjlGNjAwNURGOTVCIC8qIERGR0xvbmdMaXZlZFN0YXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjRCNTFDMTZCNjI3NzIwMDNGNjk2QiAvKiBE
RkdMb25nTGl2ZWRTdGF0ZS5jcHAgKi87IH07Ci0JCTBGRjBGMTlCMTZCNzI5RkEwMDVERjk1QiAv
KiBERkdMb25nTGl2ZWRTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEZCNEI1MUQxNkI2Mjc3MjAwM0Y2OTZCIC8qIERGR0xvbmdMaXZlZFN0YXRl
LmggKi87IH07CiAJCTBGRjBGMTlDMTZCNzJBMDMwMDVERjk1QiAvKiBERkdOb2RlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjRCNTFFMTZCNjI3
NzIwMDNGNjk2QiAvKiBERkdOb2RlLmNwcCAqLzsgfTsKIAkJMEZGMEYxOUQxNkI3MkEwODAwNURG
OTVCIC8qIERGR0NvbW1vbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRkI0QjUxQTE2QjYyNzcyMDAzRjY5NkIgLyogREZHQ29tbW9uLmNwcCAqLzsg
fTsKIAkJMEZGMEYxOUUxNkI3MkEwQjAwNURGOTVCIC8qIERGR0VkZ2UuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCNEI1MUIxNkI2Mjc3MjAwM0Y2
OTZCIC8qIERGR0VkZ2UuY3BwICovOyB9OwpAQCAtMTA1OSw5ICsxMDU3LDcgQEAKIAkJMEZGQTU0
OTgxNkI4ODM1MzAwQjNBOTgyIC8qIEE2NERPcGNvZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1MkEzQTIzMTY1MUM2OTcwMEE4MEFGRSAvKiBBNjRE
T3Bjb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMEZGQjZDMzgxQUY0OEREQzAwREIxQkY3IC8qIFR5cGVvZlR5cGUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGQjZDMzYxQUY0OEREQzAwREIx
QkY3IC8qIFR5cGVvZlR5cGUuY3BwICovOyB9OwogCQkwRkZCNkMzOTFBRjQ4RERDMDBEQjFCRjcg
LyogVHlwZW9mVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEZGQjZDMzcxQUY0OEREQzAwREIxQkY3IC8qIFR5cGVvZlR5cGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkwRkZCOTIxODE2RDAyRUIy
MDA1NUE1REIgLyogREZHQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRkI0QjUxOTE2QjYyNzcyMDAzRjY5NkIgLyogREZHQWxsb2NhdG9y
LmggKi87IH07CiAJCTBGRkI5MjFBMTZEMDJFQzUwMDU1QTVEQiAvKiBERkdCYXNpY0Jsb2NrSW5s
aW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZE
NTY1MjIxNkFCNzgwQTAwMTk3NjUzIC8qIERGR0Jhc2ljQmxvY2tJbmxpbmVzLmggKi87IH07Ci0J
CTBGRkI5MjFCMTZEMDJGMDEwMDU1QTVEQiAvKiBERkdOb2RlQWxsb2NhdG9yLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkI0QjUxRjE2QjYyNzcyMDAz
RjY5NkIgLyogREZHTm9kZUFsbG9jYXRvci5oICovOyB9OwogCQkwRkZCOTIxQzE2RDAyRjExMDA1
NUE1REIgLyogREZHT1NSRXhpdENvbXBpbGF0aW9uSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU5ODdGMkMxNjdGRTg0QjAwM0MyRjhEIC8qIERG
R09TUkV4aXRDb21waWxhdGlvbkluZm8uaCAqLzsgfTsKIAkJMEZGQjkyMUQxNkQwMkYzMDAwNTVB
NURCIC8qIERGR1Nsb3dQYXRoR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjFFM0E1MDE1MzdDMkNCMDAwRjk0NTYgLyogREZHU2xvd1Bh
dGhHZW5lcmF0b3IuaCAqLzsgfTsKIAkJMEZGQjkyMjAxNkQwMzNCNzAwNTVBNURCIC8qIE5vZGVD
b25zdHJ1Y3RvcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDkzMERBRDAzMEZCMUVCMUEwMDgyRDIwNSAvKiBOb2RlQ29uc3RydWN0b3JzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTMyNjUsMTMgKzMy
NjEsOSBAQAogCQkwRkI0NzY3QzFEOTlBRUE3MDA4RUE2Q0IgLyogR0NEZWZlcnJhbENvbnRleHQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR0NEZWZlcnJhbENvbnRleHQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZCNDc2N0QxRDk5QUVBNzAwOEVBNkNCIC8q
IEdDRGVmZXJyYWxDb250ZXh0SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBHQ0RlZmVycmFsQ29udGV4dElubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEZCNEI1MTAxNkIzQTk2NDAwM0Y2OTZCIC8qIERGR01pbmlmaWVkSUQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHTWluaWZpZWRJRC5oOyBwYXRoID0gZGZnL0RG
R01pbmlmaWVkSUQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEZCNEI1MTkxNkI2
Mjc3MjAwM0Y2OTZCIC8qIERGR0FsbG9jYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBERkdBbGxvY2F0b3IuaDsgcGF0aCA9IGRmZy9ERkdBbGxvY2F0b3IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZCNEI1MUExNkI2Mjc3MjAwM0Y2OTZCIC8qIERGR0Nv
bW1vbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdDb21tb24u
Y3BwOyBwYXRoID0gZGZnL0RGR0NvbW1vbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGQjRCNTFCMTZCNjI3NzIwMDNGNjk2QiAvKiBERkdFZGdlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0VkZ2UuY3BwOyBwYXRoID0gZGZnL0RGR0VkZ2Uu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRkI0QjUxQzE2QjYyNzcyMDAzRjY5
NkIgLyogREZHTG9uZ0xpdmVkU3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gREZHTG9uZ0xpdmVkU3RhdGUuY3BwOyBwYXRoID0gZGZnL0RGR0xvbmdMaXZlZFN0
YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEZCNEI1MUQxNkI2Mjc3MjAw
M0Y2OTZCIC8qIERGR0xvbmdMaXZlZFN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IERGR0xvbmdMaXZlZFN0YXRlLmg7IHBhdGggPSBkZmcvREZHTG9uZ0xpdmVkU3RhdGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZCNEI1MUUxNkI2Mjc3MjAwM0Y2OTZC
IC8qIERGR05vZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZH
Tm9kZS5jcHA7IHBhdGggPSBkZmcvREZHTm9kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTBGQjRCNTFGMTZCNjI3NzIwMDNGNjk2QiAvKiBERkdOb2RlQWxsb2NhdG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR05vZGVBbGxvY2F0b3IuaDsgcGF0aCA9
IGRmZy9ERkdOb2RlQWxsb2NhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
QjRCNTIxMTZCNjI3OEQwMDNGNjk2QiAvKiBGdW5jdGlvbkV4ZWN1dGFibGVEdW1wLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZ1bmN0aW9uRXhlY3V0YWJsZUR1bXAu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkI0QjUyMjE2QjYyNzhEMDAzRjY5
NkIgLyogRnVuY3Rpb25FeGVjdXRhYmxlRHVtcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBGdW5jdGlvbkV4ZWN1dGFibGVEdW1wLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGQjRGQjcwMUJDODQzMTQwMDI1Q0E1QSAvKiBGVExMYXp5U2xvd1BhdGguY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRlRMTGF6eVNsb3dQYXRoLmNwcDsg
cGF0aCA9IGZ0bC9GVExMYXp5U2xvd1BhdGguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNzE5NCw3ICs3MTg2LDYgQEAKIAkJCQkwRjE4RDNDRDFCNTVBNkUwMDAyQzVDOUYgLyog
REZHQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcCAqLywKIAkJCQkwRjE4RDNDRTFCNTVB
NkUwMDAyQzVDOUYgLyogREZHQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmggKi8sCiAJCQkJ
MEY2NkUxNjgxNERGM0YxMzAwQjdCMkU0IC8qIERGR0FkamFjZW5jeUxpc3QuaCAqLywKLQkJCQkw
RkI0QjUxOTE2QjYyNzcyMDAzRjY5NkIgLyogREZHQWxsb2NhdG9yLmggKi8sCiAJCQkJMEYxRTNB
NDMxNTM0Q0JBRDAwMEY5NDU2IC8qIERGR0FyZ3VtZW50UG9zaXRpb24uaCAqLywKIAkJCQkwRjJE
RDgwQzFBQjNEOEJFMDBCQkI4RTggLyogREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAg
Ki8sCiAJCQkJMEYyREQ4MEQxQUIzRDhCRTAwQkJCOEU4IC8qIERGR0FyZ3VtZW50c0VsaW1pbmF0
aW9uUGhhc2UuaCAqLywKQEAgLTczNDksOCArNzM0MCw2IEBACiAJCQkJNzlDNEIxNUMxQkEyMTU4
RjAwRkQ1OTJFIC8qIERGR0xpdmVDYXRjaFZhcmlhYmxlUHJlc2VydmF0aW9uUGhhc2UuaCAqLywK
IAkJCQlBN0Q4OUNFQzE3QTBCOENDMDA3NzNBRDggLyogREZHTGl2ZW5lc3NBbmFseXNpc1BoYXNl
LmNwcCAqLywKIAkJCQlBN0Q4OUNFRDE3QTBCOENDMDA3NzNBRDggLyogREZHTGl2ZW5lc3NBbmFs
eXNpc1BoYXNlLmggKi8sCi0JCQkJMEZCNEI1MUMxNkI2Mjc3MjAwM0Y2OTZCIC8qIERGR0xvbmdM
aXZlZFN0YXRlLmNwcCAqLywKLQkJCQkwRkI0QjUxRDE2QjYyNzcyMDAzRjY5NkIgLyogREZHTG9u
Z0xpdmVkU3RhdGUuaCAqLywKIAkJCQlBNzY3QjVCMzE3QTBCOTY1MDA2M0Q5NDAgLyogREZHTG9v
cFByZUhlYWRlckNyZWF0aW9uUGhhc2UuY3BwICovLAogCQkJCUE3NjdCNUI0MTdBMEI5NjUwMDYz
RDk0MCAvKiBERkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5oICovLAogCQkJCTc5RjhGQzFD
MUI5RkVEMEYwMENBNjZBQiAvKiBERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5jcHAgKi8s
CkBAIC03MzcyLDcgKzczNjEsNiBAQAogCQkJCTg2RUNBM0U5MTMyREVGMUMwMDJCMkFENyAvKiBE
RkdOb2RlLmggKi8sCiAJCQkJMEYyMDE3ODcxRENCOTQyMjAwRUE1OTUwIC8qIERGR05vZGVBYnN0
cmFjdFZhbHVlUGFpci5jcHAgKi8sCiAJCQkJMEYyMDE3ODgxRENCOTQyMjAwRUE1OTUwIC8qIERG
R05vZGVBYnN0cmFjdFZhbHVlUGFpci5oICovLAotCQkJCTBGQjRCNTFGMTZCNjI3NzIwMDNGNjk2
QiAvKiBERkdOb2RlQWxsb2NhdG9yLmggKi8sCiAJCQkJMEZBNTgxQjcxNTBFOTUyQTAwQjlBMkQ5
IC8qIERGR05vZGVGbGFncy5jcHAgKi8sCiAJCQkJMEZBNTgxQjgxNTBFOTUyQTAwQjlBMkQ5IC8q
IERGR05vZGVGbGFncy5oICovLAogCQkJCTBGMjAxNzgzMURDQUUxNDcwMEVBNTk1MCAvKiBERkdO
b2RlRmxvd1Byb2plY3Rpb24uY3BwICovLApAQCAtODUwNSw3ICs4NDkzLDYgQEAKIAkJCQkwRkQz
RTQwMjFCNjE4QUFGMDBDODBFMUUgLyogREZHQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVX
YXRjaHBvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjE4RDNEMDFCNTVBNkUwMDAyQzVDOUYg
LyogREZHQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjY2RTE2QjE0REYzRjE2MDBCN0IyRTQgLyogREZHQWRqYWNlbmN5TGlzdC5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJMEZGQjkyMTgxNkQwMkVCMjAwNTVBNURCIC8qIERGR0FsbG9jYXRvci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEYxRTNBNDYxNTM0Q0JBRjAwMEY5NDU2IC8qIERGR0FyZ3VtZW50UG9z
aXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkREODEyMUFCM0Q4QkUwMEJCQjhFOCAvKiBE
RkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJERDgx
NDFBQjNEOEJFMDBCQkI4RTggLyogREZHQXJndW1lbnRzVXRpbGl0aWVzLmggaW4gSGVhZGVycyAq
LywKQEAgLTg2MDMsNyArODU5MCw2IEBACiAJCQkJQTdEOUEyOTgxN0EwQkM3NDAwRUUyNjE4IC8q
IERGR0xJQ01QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzlDNEIxNUUxQkEyMTU4RjAwRkQ1
OTJFIC8qIERGR0xpdmVDYXRjaFZhcmlhYmxlUHJlc2VydmF0aW9uUGhhc2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE3RDg5Q0ZDMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdMaXZlbmVzc0FuYWx5c2lz
UGhhc2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGRjBGMTlCMTZCNzI5RkEwMDVERjk1QiAvKiBE
RkdMb25nTGl2ZWRTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc2N0I1QjYxN0EwQjk2NTAw
NjNEOTQwIC8qIERGR0xvb3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywK
IAkJCQk3OUY4RkMxRjFCOUZFRDBGMDBDQTY2QUIgLyogREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9u
UGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTg3NEVFMTk0RkVCMTIwMEFBQjJDMSAvKiBE
RkdNYXlFeGl0LmggaW4gSGVhZGVycyAqLywKQEAgLTg2MTUsNyArODYwMSw2IEBACiAJCQkJQTcz
NzgxMEUxNzk5RUEyRTAwODE3NTMzIC8qIERGR05hdHVyYWxMb29wcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJODZFQ0EzRUExMzJERUYxQzAwMkIyQUQ3IC8qIERGR05vZGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGMjAxNzg5MURDQjk0MjQwMEVBNTk1MCAvKiBERkdOb2RlQWJzdHJhY3RWYWx1ZVBh
aXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGRkI5MjFCMTZEMDJGMDEwMDU1QTVEQiAvKiBERkdO
b2RlQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkE1ODFCQjE1MEU5NTMwMDBCOUEy
RDkgLyogREZHTm9kZUZsYWdzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIwMTc4NTFEQ0FFMTQ5
MDBFQTU5NTAgLyogREZHTm9kZUZsb3dQcm9qZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjMwMEI3ODE4QUIwNTExMDBBNkQ3MkUgLyogREZHTm9kZU9yaWdpbi5oIGluIEhlYWRlcnMgKi8s
CkBAIC0xMDM3NCw3ICsxMDM1OSw2IEBACiAJCQkJQTdEOUEyOTcxN0EwQkM3NDAwRUUyNjE4IC8q
IERGR0xJQ01QaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3OUM0QjE1RDFCQTIxNThGMDBG
RDU5MkUgLyogREZHTGl2ZUNhdGNoVmFyaWFibGVQcmVzZXJ2YXRpb25QaGFzZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBN0Q4OUNGQjE3QTBCOENDMDA3NzNBRDggLyogREZHTGl2ZW5lc3NBbmFs
eXNpc1BoYXNlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTBGRjBGMTk5MTZCNzI5RjYwMDVERjk1
QiAvKiBERkdMb25nTGl2ZWRTdGF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzY3QjVCNTE3
QTBCOTY1MDA2M0Q5NDAgLyogREZHTG9vcFByZUhlYWRlckNyZWF0aW9uUGhhc2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNzlGOEZDMUUxQjlGRUQwRjAwQ0E2NkFCIC8qIERGR01heGltYWxGbHVz
aEluc2VydGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNTg3NEVEMTk0RkVCMTIw
MEFBQjJDMSAvKiBERkdNYXlFeGl0LmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzU3BhcnNlQ29sbGVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1NwYXJzZUNvbGxlY3Rpb24uaAkocmV2aXNpb24gMjE2NTI4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3BhcnNlQ29sbGVjdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYgRU5BQkxF
KEIzX0pJVCkKKyNpZiBFTkFCTEUoREZHX0pJVCkKIAogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRy
YXMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC03NSw2ICs3NSw0MiBAQCBwdWJsaWM6
CiAgICAgICAgIG1fdmVjdG9yW3ZhbHVlLT5tX2luZGV4XSA9IG51bGxwdHI7CiAgICAgfQogCisg
ICAgdm9pZCBwYWNrSW5kaWNlcygpCisgICAgeworICAgICAgICBpZiAobV9pbmRleEZyZWVMaXN0
LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB1bnNpZ25lZCBob2xl
SW5kZXggPSAwOworICAgICAgICB1bnNpZ25lZCBlbmRJbmRleCA9IG1fdmVjdG9yLnNpemUoKTsK
KworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgd2hpbGUgKGhvbGVJbmRleCA8
IGVuZEluZGV4ICYmIG1fdmVjdG9yW2hvbGVJbmRleF0pCisgICAgICAgICAgICAgICAgKytob2xl
SW5kZXg7CisKKyAgICAgICAgICAgIGlmIChob2xlSW5kZXggPT0gZW5kSW5kZXgpCisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBBU1NFUlQoaG9sZUluZGV4IDwgbV92ZWN0b3Iu
c2l6ZSgpKTsKKyAgICAgICAgICAgIEFTU0VSVCghbV92ZWN0b3JbaG9sZUluZGV4XSk7CisKKyAg
ICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICAtLWVuZEluZGV4OworICAgICAgICAgICAg
fSB3aGlsZSAoIW1fdmVjdG9yW2VuZEluZGV4XSAmJiBlbmRJbmRleCA+IGhvbGVJbmRleCk7CisK
KyAgICAgICAgICAgIGlmIChob2xlSW5kZXggPT0gZW5kSW5kZXgpCisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBBU1NFUlQoZW5kSW5kZXggPiBob2xlSW5kZXgpOworICAgICAg
ICAgICAgQVNTRVJUKG1fdmVjdG9yW2VuZEluZGV4XSk7CisKKyAgICAgICAgICAgIGF1dG8mIHZh
bHVlID0gbV92ZWN0b3JbZW5kSW5kZXhdOworICAgICAgICAgICAgdmFsdWUtPm1faW5kZXggPSBo
b2xlSW5kZXg7CisgICAgICAgICAgICBtX3ZlY3Rvcltob2xlSW5kZXhdID0gV1RGTW92ZSh2YWx1
ZSk7CisgICAgICAgICAgICArK2hvbGVJbmRleDsKKyAgICAgICAgfQorCisgICAgICAgIG1faW5k
ZXhGcmVlTGlzdC5yZXNpemUoMCk7CisgICAgICAgIG1fdmVjdG9yLnJlc2l6ZShlbmRJbmRleCk7
CisgICAgfQorCiAgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmVjdG9yLnNp
emUoKTsgfQogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fdmVjdG9yLmlzRW1w
dHkoKTsgfQogICAgIApAQCAtMTM5LDQgKzE3NSw0IEBAIHByaXZhdGU6CiAKIH0gfSAvLyBuYW1l
c3BhY2UgSlNDOjpCMwogCi0jZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKKyNlbmRpZiAvLyBFTkFC
TEUoREZHX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWxsb2NhdG9y
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBbGxvY2F0b3Iu
aAkocmV2aXNpb24gMjE2NTI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBbGxv
Y2F0b3IuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDIzNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxF
KERGR19KSVQpCi0KLSNpbmNsdWRlICJERkdDb21tb24uaCIKLSNpbmNsdWRlIDx3dGYvU3RkTGli
RXh0cmFzLmg+Ci0KLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKLQotLy8gQ3VzdG9t
IHBvb2wgYWxsb2NhdG9yIGZvciBleGFjdGx5IG9uZSB0eXBlICh0eXBlIFQpLiBJdCBoYXMgZmFz
dCAoTygxKSwgb25seSBhIGZldwotLy8gaW5zdHJ1Y3Rpb25zKSBhbGxvY2F0b3IsIGFuZCBhIHNp
bWlsYXJseSBmYXN0IGZyZWUoKS4gUmVjeWNsaW5nIHdvcmtzIGlmIGVpdGhlciBvZgotLy8gdGhl
IGZvbGxvd2luZyBpcyB0cnVlOgotLy8gLSBUIGhhcyBhIHRyaXZpYWwgZGVzdHJ1Y3Rvci4gSW4g
dGhhdCBjYXNlIHlvdSBkb24ndCBoYXZlIHRvIGV2ZXIgY2FsbCBmcmVlKCkgb24KLS8vICAgYW55
dGhpbmcuIFlvdSBjYW4ganVzdCBjYWxsIGZyZWVBbGwoKSBpbnN0ZWFkLgotLy8gLSBZb3UgY2Fs
bCBmcmVlKCkgb24gYWxsIFQncyB0aGF0IHlvdSBhbGxvY2F0ZWQsIGFuZCBuZXZlciB1c2UgZnJl
ZUFsbCgpLgotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY2xhc3MgQWxsb2NhdG9yIHsKLXB1Ymxp
YzoKLSAgICBBbGxvY2F0b3IoKTsKLSAgICB+QWxsb2NhdG9yKCk7Ci0gICAgCi0gICAgdm9pZCog
YWxsb2NhdGUoKTsgLy8gVXNlIHBsYWNlbWVudCBuZXcgdG8gYWxsb2NhdGUsIGFuZCBhdm9pZCB1
c2luZyB0aGlzIG1ldGhvZC4KLSAgICB2b2lkIGZyZWUoVCopOyAvLyBDYWxsIHRoaXMgbWV0aG9k
IHRvIGRlbGV0ZTsgbmV2ZXIgdXNlICdkZWxldGUnIGRpcmVjdGx5LgotICAgIAotICAgIHZvaWQg
ZnJlZUFsbCgpOyAvLyBPbmx5IGNhbGwgdGhpcyBpZiB5b3UndmUgZWl0aGVyIGZyZWVkIGV2ZXJ5
dGhpbmcgb3IgaWYgVCBoYXMgYSB0cml2aWFsIGRlc3RydWN0b3IuCi0gICAgdm9pZCByZXNldCgp
OyAvLyBMaWtlIGZyZWVBbGwoKSwgYnV0IGFsc28gcmV0dXJucyBhbGwgbWVtb3J5IHRvIHRoZSBP
Uy4KLSAgICAKLSAgICB1bnNpZ25lZCBpbmRleE9mKGNvbnN0IFQqKTsKLSAgICAKLSAgICBzdGF0
aWMgQWxsb2NhdG9yKiBhbGxvY2F0b3JPZihjb25zdCBUKik7Ci0gICAgCi1wcml2YXRlOgotICAg
IHZvaWQqIGJ1bXBBbGxvY2F0ZSgpOwotICAgIHZvaWQqIGZyZWVMaXN0QWxsb2NhdGUoKTsKLSAg
ICB2b2lkKiBhbGxvY2F0ZVNsb3coKTsKLQotICAgIHN0cnVjdCBSZWdpb24gewotICAgICAgICBz
dGF0aWMgc2l6ZV90IHNpemUoKSB7IHJldHVybiA2NCAqIEtCOyB9Ci0gICAgICAgIHN0YXRpYyBz
aXplX3QgaGVhZGVyU2l6ZSgpIHsgcmV0dXJuIHN0ZDo6bWF4KHNpemVvZihSZWdpb24pLCBzaXpl
b2YoVCkpOyB9Ci0gICAgICAgIHN0YXRpYyB1bnNpZ25lZCBudW1iZXJPZlRoaW5nc1BlclJlZ2lv
bigpIHsgcmV0dXJuIChzaXplKCkgLSBoZWFkZXJTaXplKCkpIC8gc2l6ZW9mKFQpOyB9Ci0gICAg
ICAgIFQqIGRhdGEoKSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8VCo+KGJpdHdpc2VfY2FzdDxjaGFy
Kj4odGhpcykgKyBoZWFkZXJTaXplKCkpOyB9Ci0gICAgICAgIGJvb2wgaXNJblRoaXNSZWdpb24o
Y29uc3QgVCogcG9pbnRlcikgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHBvaW50ZXIg
LSBkYXRhKCkpIDwgbnVtYmVyT2ZUaGluZ3NQZXJSZWdpb24oKTsgfQotICAgICAgICBzdGF0aWMg
UmVnaW9uKiByZWdpb25Gb3IoY29uc3QgVCogcG9pbnRlcikgeyByZXR1cm4gYml0d2lzZV9jYXN0
PFJlZ2lvbio+KGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHBvaW50ZXIpICYgfihzaXplKCkgLSAx
KSk7IH0KLSAgICAgICAgCi0gICAgICAgIHZvaWQqIG1fYWxsb2NhdGlvbjsKLSAgICAgICAgQWxs
b2NhdG9yKiBtX2FsbG9jYXRvcjsKLSAgICAgICAgUmVnaW9uKiBtX25leHQ7Ci0gICAgfTsKLSAg
ICAKLSAgICB2b2lkIGZyZWVSZWdpb25zU3RhcnRpbmdBdChSZWdpb24qKTsKLSAgICB2b2lkIHN0
YXJ0QnVtcGluZ0luKFJlZ2lvbiopOwotICAgIAotICAgIFJlZ2lvbiogbV9yZWdpb25IZWFkOwot
ICAgIHZvaWQqKiBtX2ZyZWVMaXN0SGVhZDsKLSAgICBUKiBtX2J1bXBFbmQ7Ci0gICAgdW5zaWdu
ZWQgbV9idW1wUmVtYWluaW5nOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWlubGluZSBB
bGxvY2F0b3I8VD46OkFsbG9jYXRvcigpCi0gICAgOiBtX3JlZ2lvbkhlYWQoMCkKLSAgICAsIG1f
ZnJlZUxpc3RIZWFkKDApCi0gICAgLCBtX2J1bXBSZW1haW5pbmcoMCkKLXsKLX0KLQotdGVtcGxh
dGU8dHlwZW5hbWUgVD4KLWlubGluZSBBbGxvY2F0b3I8VD46On5BbGxvY2F0b3IoKQotewotICAg
IHJlc2V0KCk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1BTFdBWVNfSU5MSU5FIHZvaWQq
IEFsbG9jYXRvcjxUPjo6YWxsb2NhdGUoKQotewotICAgIHZvaWQqIHJlc3VsdCA9IGJ1bXBBbGxv
Y2F0ZSgpOwotICAgIGlmIChMSUtFTFkoISFyZXN1bHQpKQotICAgICAgICByZXR1cm4gcmVzdWx0
OwotICAgIHJldHVybiBmcmVlTGlzdEFsbG9jYXRlKCk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1l
IFQ+Ci12b2lkIEFsbG9jYXRvcjxUPjo6ZnJlZShUKiBvYmplY3QpCi17Ci0gICAgb2JqZWN0LT5+
VCgpOwotICAgIAotICAgIHZvaWQqKiBjZWxsID0gYml0d2lzZV9jYXN0PHZvaWQqKj4ob2JqZWN0
KTsKLSAgICAqY2VsbCA9IG1fZnJlZUxpc3RIZWFkOwotICAgIG1fZnJlZUxpc3RIZWFkID0gY2Vs
bDsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXZvaWQgQWxsb2NhdG9yPFQ+OjpmcmVlQWxs
KCkKLXsKLSAgICBpZiAoIW1fcmVnaW9uSGVhZCkgewotICAgICAgICBBU1NFUlQoIW1fYnVtcFJl
bWFpbmluZyk7Ci0gICAgICAgIEFTU0VSVCghbV9mcmVlTGlzdEhlYWQpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIAotICAgIC8vIFNpbmNlIHRoZSBjYWxsZXIgaXMgb3B0aW5nIG91dCBv
ZiBjYWxsaW5nIHRoZSBkZXN0cnVjdG9yIGZvciBhbnkgYWxsb2NhdGVkIHRoaW5nLAotICAgIC8v
IHdlIGhhdmUgdHdvIGNob2ljZXMsIHBsdXMgYSBjb250aW51dW0gYmV0d2Vlbjogd2UgY2FuIGVp
dGhlciBqdXN0IGRlbGV0ZSBhbGwgcmVnaW9ucwotICAgIC8vIChpLmUuIGNhbGwgcmVzZXQoKSks
IG9yIHdlIGNhbiBtYWtlIGFsbCByZWdpb25zIGF2YWlsYWJsZSBmb3IgcmV1c2UuIFdlIGRvIHNv
bWV0aGluZwotICAgIC8vIHRoYXQgb3B0aW1pemVzIGZvciAoYSkgc3BlZWQgb2YgZnJlZUFsbCgp
LCAoYikgdGhlIGFzc3VtcHRpb24gdGhhdCBpZiB0aGUgdXNlciBjYWxscwotICAgIC8vIGZyZWVB
bGwoKSB0aGVuIHRoZXkgd2lsbCBwcm9iYWJseSBiZSBjYWxsaW5nIGFsbG9jYXRlKCkgaW4gdGhl
IG5lYXIgZnV0dXJlLiBOYW1lbHksCi0gICAgLy8gd2UgZnJlZSBhbGwgYnV0IG9uZSByZWdpb24s
IGFuZCBtYWtlIHRoZSByZW1haW5pbmcgcmVnaW9uIGEgYnVtcCBhbGxvY2F0aW9uIHJlZ2lvbi4K
LSAgICAKLSAgICBmcmVlUmVnaW9uc1N0YXJ0aW5nQXQobV9yZWdpb25IZWFkLT5tX25leHQpOwot
ICAgIAotICAgIG1fcmVnaW9uSGVhZC0+bV9uZXh0ID0gMDsKLSAgICBtX2ZyZWVMaXN0SGVhZCA9
IDA7Ci0gICAgc3RhcnRCdW1waW5nSW4obV9yZWdpb25IZWFkKTsKLX0KLQotdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KLXZvaWQgQWxsb2NhdG9yPFQ+OjpyZXNldCgpCi17Ci0gICAgZnJlZVJlZ2lvbnNT
dGFydGluZ0F0KG1fcmVnaW9uSGVhZCk7Ci0gICAgCi0gICAgbV9yZWdpb25IZWFkID0gMDsKLSAg
ICBtX2ZyZWVMaXN0SGVhZCA9IDA7Ci0gICAgbV9idW1wUmVtYWluaW5nID0gMDsKLX0KLQotdGVt
cGxhdGU8dHlwZW5hbWUgVD4KLXVuc2lnbmVkIEFsbG9jYXRvcjxUPjo6aW5kZXhPZihjb25zdCBU
KiBvYmplY3QpCi17Ci0gICAgdW5zaWduZWQgbnVtUmVnaW9ucyA9IDA7Ci0gICAgZm9yIChSZWdp
b24qIHJlZ2lvbiA9IG1fcmVnaW9uSGVhZDsgcmVnaW9uOyByZWdpb24gPSByZWdpb24tPm1fbmV4
dCkKLSAgICAgICAgbnVtUmVnaW9ucysrOwotICAgIHVuc2lnbmVkIHJlZ2lvbkluZGV4ID0gMDsK
LSAgICBmb3IgKFJlZ2lvbiogcmVnaW9uID0gbV9yZWdpb25IZWFkOyByZWdpb247IHJlZ2lvbiA9
IHJlZ2lvbi0+bV9uZXh0KSB7Ci0gICAgICAgIGlmIChyZWdpb24tPmlzSW5UaGlzUmVnaW9uKG9i
amVjdCkpCi0gICAgICAgICAgICByZXR1cm4gKG51bVJlZ2lvbnMgLSAxIC0gcmVnaW9uSW5kZXgp
ICogUmVnaW9uOjpudW1iZXJPZlRoaW5nc1BlclJlZ2lvbigpICsgKG9iamVjdCAtIHJlZ2lvbi0+
ZGF0YSgpKTsKLSAgICAgICAgcmVnaW9uSW5kZXgrKzsKLSAgICB9Ci0gICAgQ1JBU0goKTsKLSAg
ICByZXR1cm4gMDsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLUFsbG9jYXRvcjxUPiogQWxs
b2NhdG9yPFQ+OjphbGxvY2F0b3JPZihjb25zdCBUKiBvYmplY3QpCi17Ci0gICAgcmV0dXJuIFJl
Z2lvbjo6cmVnaW9uRm9yKG9iamVjdCktPm1fYWxsb2NhdG9yOwotfQotCi10ZW1wbGF0ZTx0eXBl
bmFtZSBUPgotQUxXQVlTX0lOTElORSB2b2lkKiBBbGxvY2F0b3I8VD46OmJ1bXBBbGxvY2F0ZSgp
Ci17Ci0gICAgaWYgKHVuc2lnbmVkIHJlbWFpbmluZyA9IG1fYnVtcFJlbWFpbmluZykgewotICAg
ICAgICByZW1haW5pbmctLTsKLSAgICAgICAgbV9idW1wUmVtYWluaW5nID0gcmVtYWluaW5nOwot
ICAgICAgICByZXR1cm4gbV9idW1wRW5kIC0gKHJlbWFpbmluZyArIDEpOwotICAgIH0KLSAgICBy
ZXR1cm4gMDsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXZvaWQqIEFsbG9jYXRvcjxUPjo6
ZnJlZUxpc3RBbGxvY2F0ZSgpCi17Ci0gICAgdm9pZCoqIHJlc3VsdCA9IG1fZnJlZUxpc3RIZWFk
OwotICAgIGlmIChVTkxJS0VMWSghcmVzdWx0KSkKLSAgICAgICAgcmV0dXJuIGFsbG9jYXRlU2xv
dygpOwotICAgIG1fZnJlZUxpc3RIZWFkID0gYml0d2lzZV9jYXN0PHZvaWQqKj4oKnJlc3VsdCk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXZvaWQqIEFs
bG9jYXRvcjxUPjo6YWxsb2NhdGVTbG93KCkKLXsKLSAgICBBU1NFUlQoIW1fZnJlZUxpc3RIZWFk
KTsKLSAgICBBU1NFUlQoIW1fYnVtcFJlbWFpbmluZyk7Ci0gICAgCi0gICAgaWYgKGxvZ0NvbXBp
bGF0aW9uQ2hhbmdlcygpKQotICAgICAgICBkYXRhTG9nKCJBbGxvY2F0aW5nIGFub3RoZXIgYWxs
b2NhdG9yIHJlZ2lvbi5cbiIpOwotCi0gICAgdm9pZCogYWxsb2NhdGlvbiA9IGZhc3RBbGlnbmVk
TWFsbG9jKFJlZ2lvbjo6c2l6ZSgpLCBSZWdpb246OnNpemUoKSk7Ci0gICAgUmVnaW9uKiByZWdp
b24gPSBzdGF0aWNfY2FzdDxSZWdpb24qPihhbGxvY2F0aW9uKTsKLSAgICByZWdpb24tPm1fYWxs
b2NhdGlvbiA9IGFsbG9jYXRpb247Ci0gICAgcmVnaW9uLT5tX2FsbG9jYXRvciA9IHRoaXM7Ci0g
ICAgc3RhcnRCdW1waW5nSW4ocmVnaW9uKTsKLSAgICByZWdpb24tPm1fbmV4dCA9IG1fcmVnaW9u
SGVhZDsKLSAgICBtX3JlZ2lvbkhlYWQgPSByZWdpb247Ci0gICAgCi0gICAgdm9pZCogcmVzdWx0
ID0gYnVtcEFsbG9jYXRlKCk7Ci0gICAgQVNTRVJUKHJlc3VsdCk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXZvaWQgQWxsb2NhdG9yPFQ+OjpmcmVlUmVn
aW9uc1N0YXJ0aW5nQXQodHlwZW5hbWUgQWxsb2NhdG9yPFQ+OjpSZWdpb24qIHJlZ2lvbikKLXsK
LSAgICB3aGlsZSAocmVnaW9uKSB7Ci0gICAgICAgIFJlZ2lvbiogbmV4dFJlZ2lvbiA9IHJlZ2lv
bi0+bV9uZXh0OwotICAgICAgICBmYXN0QWxpZ25lZEZyZWUocmVnaW9uLT5tX2FsbG9jYXRpb24p
OwotICAgICAgICByZWdpb24gPSBuZXh0UmVnaW9uOwotICAgIH0KLX0KLQotdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KLXZvaWQgQWxsb2NhdG9yPFQ+OjpzdGFydEJ1bXBpbmdJbih0eXBlbmFtZSBBbGxv
Y2F0b3I8VD46OlJlZ2lvbiogcmVnaW9uKQotewotICAgIG1fYnVtcEVuZCA9IHJlZ2lvbi0+ZGF0
YSgpICsgUmVnaW9uOjpudW1iZXJPZlRoaW5nc1BlclJlZ2lvbigpOwotICAgIG1fYnVtcFJlbWFp
bmluZyA9IFJlZ2lvbjo6bnVtYmVyT2ZUaGluZ3NQZXJSZWdpb24oKTsKLX0KLQotfSB9IC8vIG5h
bWVzcGFjZSBKU0M6OkRGRwotCi0jZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCShyZXZpc2lvbiAyMTY1MjgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEwOCw3ICsxMDgsNyBAQCBzdGF0aWMgQ29tcGlsYXRpb25SZXN1bHQgY29tcGlsZUltcGwoCiAg
ICAgICAgIHJldHVybiBDb21waWxhdGlvbkRlZmVycmVkOwogICAgIH0KICAgICAKLSAgICBwbGFu
LT5jb21waWxlSW5UaHJlYWQoKnZtLmRmZ1N0YXRlLCAwKTsKKyAgICBwbGFuLT5jb21waWxlSW5U
aHJlYWQobnVsbHB0cik7CiAgICAgcmV0dXJuIHBsYW4tPmZpbmFsaXplV2l0aG91dE5vdGlmeWlu
Z0NhbGxiYWNrKCk7CiB9CiAjZWxzZSAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCShyZXZpc2lvbiAyMTY1MjgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjgsMTIg
KzY4LDExIEBAIHN0YXRpYyBjb25zdCBjaGFyKiBkZmdPcE5hbWVzW10gPSB7CiAjdW5kZWYgU1RS
SU5HSVpFX0RGR19PUF9FTlVNCiB9OwogCi1HcmFwaDo6R3JhcGgoVk0mIHZtLCBQbGFuJiBwbGFu
LCBMb25nTGl2ZWRTdGF0ZSYgbG9uZ0xpdmVkU3RhdGUpCitHcmFwaDo6R3JhcGgoVk0mIHZtLCBQ
bGFuJiBwbGFuKQogICAgIDogbV92bSh2bSkKICAgICAsIG1fcGxhbihwbGFuKQogICAgICwgbV9j
b2RlQmxvY2sobV9wbGFuLmNvZGVCbG9jaykKICAgICAsIG1fcHJvZmlsZWRCbG9jayhtX2NvZGVC
bG9jay0+YWx0ZXJuYXRpdmUoKSkKLSAgICAsIG1fYWxsb2NhdG9yKGxvbmdMaXZlZFN0YXRlLm1f
YWxsb2NhdG9yKQogICAgICwgbV9jZmcoc3RkOjptYWtlX3VuaXF1ZTxDRkc+KCp0aGlzKSkKICAg
ICAsIG1fbmV4dE1hY2hpbmVMb2NhbCgwKQogICAgICwgbV9maXhwb2ludFN0YXRlKEJlZm9yZUZp
eHBvaW50KQpAQCAtOTYsMTcgKzk1LDYgQEAgR3JhcGg6OkdyYXBoKFZNJiB2bSwgUGxhbiYgcGxh
biwgTG9uZ0xpdgogCiBHcmFwaDo6fkdyYXBoKCkKIHsKLSAgICBmb3IgKEJsb2NrSW5kZXggYmxv
Y2tJbmRleCA9IG51bUJsb2NrcygpOyBibG9ja0luZGV4LS07KSB7Ci0gICAgICAgIEJhc2ljQmxv
Y2sqIGJsb2NrID0gdGhpcy0+YmxvY2soYmxvY2tJbmRleCk7Ci0gICAgICAgIGlmICghYmxvY2sp
Ci0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBmb3IgKHVuc2lnbmVkIHBoaUluZGV4
ID0gYmxvY2stPnBoaXMuc2l6ZSgpOyBwaGlJbmRleC0tOykKLSAgICAgICAgICAgIG1fYWxsb2Nh
dG9yLmZyZWUoYmxvY2stPnBoaXNbcGhpSW5kZXhdKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBu
b2RlSW5kZXggPSBibG9jay0+c2l6ZSgpOyBub2RlSW5kZXgtLTspCi0gICAgICAgICAgICBtX2Fs
bG9jYXRvci5mcmVlKGJsb2NrLT5hdChub2RlSW5kZXgpKTsKLSAgICB9Ci0gICAgbV9hbGxvY2F0
b3IuZnJlZUFsbCgpOwogfQogCiBjb25zdCBjaGFyICpHcmFwaDo6b3BOYW1lKE5vZGVUeXBlIG9w
KQpAQCAtNTk5LDE5ICs1ODcsNiBAQCB2b2lkIEdyYXBoOjpkdW1wKFByaW50U3RyZWFtJiBvdXQs
IER1bXBDCiAgICAgfQogfQogCi12b2lkIEdyYXBoOjphZGROb2RlVG9NYXBCeUluZGV4KE5vZGUq
IG5vZGUpCi17Ci0gICAgaWYgKG1fbm9kZUluZGV4RnJlZUxpc3QuaXNFbXB0eSgpKSB7Ci0gICAg
ICAgIG5vZGUtPm1faW5kZXggPSBtX25vZGVzQnlJbmRleC5zaXplKCk7Ci0gICAgICAgIG1fbm9k
ZXNCeUluZGV4LmFwcGVuZChub2RlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICB1bnNp
Z25lZCBpbmRleCA9IG1fbm9kZUluZGV4RnJlZUxpc3QudGFrZUxhc3QoKTsKLSAgICBub2RlLT5t
X2luZGV4ID0gaW5kZXg7Ci0gICAgQVNTRVJUKCFtX25vZGVzQnlJbmRleFtpbmRleF0pOwotICAg
IG1fbm9kZXNCeUluZGV4W2luZGV4XSA9IG5vZGU7Ci19Ci0KIHZvaWQgR3JhcGg6OmRlbGV0ZU5v
ZGUoTm9kZSogbm9kZSkKIHsKICAgICBpZiAodmFsaWRhdGlvbkVuYWJsZWQoKSAmJiBtX2Zvcm0g
PT0gU1NBKSB7CkBAIC02MjEsNDggKzU5NiwxMiBAQCB2b2lkIEdyYXBoOjpkZWxldGVOb2RlKE5v
ZGUqIG5vZGUpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBSRUxFQVNFX0FTU0VSVChtX25vZGVz
QnlJbmRleFtub2RlLT5tX2luZGV4XSA9PSBub2RlKTsKLSAgICB1bnNpZ25lZCBub2RlSW5kZXgg
PSBub2RlLT5tX2luZGV4OwotICAgIG1fbm9kZXNCeUluZGV4W25vZGVJbmRleF0gPSBudWxscHRy
OwotICAgIG1fbm9kZUluZGV4RnJlZUxpc3QuYXBwZW5kKG5vZGVJbmRleCk7Ci0KLSAgICBtX2Fs
bG9jYXRvci5mcmVlKG5vZGUpOworICAgIG1fbm9kZXMucmVtb3ZlKG5vZGUpOwogfQogCiB2b2lk
IEdyYXBoOjpwYWNrTm9kZUluZGljZXMoKQogewotICAgIGlmIChtX25vZGVJbmRleEZyZWVMaXN0
LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgdW5zaWduZWQgaG9sZUluZGV4ID0g
MDsKLSAgICB1bnNpZ25lZCBlbmRJbmRleCA9IG1fbm9kZXNCeUluZGV4LnNpemUoKTsKLQotICAg
IHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIHdoaWxlIChob2xlSW5kZXggPCBlbmRJbmRleCAmJiBt
X25vZGVzQnlJbmRleFtob2xlSW5kZXhdKQotICAgICAgICAgICAgKytob2xlSW5kZXg7Ci0KLSAg
ICAgICAgaWYgKGhvbGVJbmRleCA9PSBlbmRJbmRleCkKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBBU1NFUlQoaG9sZUluZGV4IDwgbV9ub2Rlc0J5SW5kZXguc2l6ZSgpKTsKLSAgICAgICAg
QVNTRVJUKCFtX25vZGVzQnlJbmRleFtob2xlSW5kZXhdKTsKLQotICAgICAgICBkbyB7Ci0gICAg
ICAgICAgICAtLWVuZEluZGV4OwotICAgICAgICB9IHdoaWxlICghbV9ub2Rlc0J5SW5kZXhbZW5k
SW5kZXhdICYmIGVuZEluZGV4ID4gaG9sZUluZGV4KTsKLQotICAgICAgICBpZiAoaG9sZUluZGV4
ID09IGVuZEluZGV4KQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIEFTU0VSVChlbmRJbmRl
eCA+IGhvbGVJbmRleCk7Ci0gICAgICAgIEFTU0VSVChtX25vZGVzQnlJbmRleFtlbmRJbmRleF0p
OwotCi0gICAgICAgIGF1dG8mIHZhbHVlID0gbV9ub2Rlc0J5SW5kZXhbZW5kSW5kZXhdOwotICAg
ICAgICB2YWx1ZS0+bV9pbmRleCA9IGhvbGVJbmRleDsKLSAgICAgICAgbV9ub2Rlc0J5SW5kZXhb
aG9sZUluZGV4XSA9IFdURk1vdmUodmFsdWUpOwotICAgICAgICArK2hvbGVJbmRleDsKLSAgICB9
Ci0KLSAgICBtX25vZGVJbmRleEZyZWVMaXN0LnJlc2l6ZSgwKTsKLSAgICBtX25vZGVzQnlJbmRl
eC5yZXNpemUoZW5kSW5kZXgpOworICAgIG1fbm9kZXMucGFja0luZGljZXMoKTsKIH0KIAogdm9p
ZCBHcmFwaDo6ZGV0aHJlYWQoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdH
cmFwaC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGgu
aAkocmV2aXNpb24gMjE2NTI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFw
aC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw5ICszMyw3IEBACiAjaW5jbHVkZSAiREZHQXJndW1l
bnRQb3NpdGlvbi5oIgogI2luY2x1ZGUgIkRGR0Jhc2ljQmxvY2suaCIKICNpbmNsdWRlICJERkdG
cm96ZW5WYWx1ZS5oIgotI2luY2x1ZGUgIkRGR0xvbmdMaXZlZFN0YXRlLmgiCiAjaW5jbHVkZSAi
REZHTm9kZS5oIgotI2luY2x1ZGUgIkRGR05vZGVBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJERkdQ
bGFuLmgiCiAjaW5jbHVkZSAiREZHUHJvcGVydHlUeXBlS2V5LmgiCiAjaW5jbHVkZSAiREZHU2Nh
bm5hYmxlLmgiCkBAIC0xMjYsNyArMTI0LDcgQEAgZW51bSBBZGRTcGVjdWxhdGlvbk1vZGUgewog
Ly8gTm9kZXMgdGhhdCBhcmUgJ2RlYWQnIHJlbWFpbiBpbiB0aGUgdmVjdG9yIHdpdGggcmVmQ291
bnQgMC4KIGNsYXNzIEdyYXBoIDogcHVibGljIHZpcnR1YWwgU2Nhbm5hYmxlIHsKIHB1YmxpYzoK
LSAgICBHcmFwaChWTSYsIFBsYW4mLCBMb25nTGl2ZWRTdGF0ZSYpOworICAgIEdyYXBoKFZNJiwg
UGxhbiYpOwogICAgIH5HcmFwaCgpOwogICAgIAogICAgIHZvaWQgY2hhbmdlQ2hpbGQoRWRnZSYg
ZWRnZSwgTm9kZSogbmV3Tm9kZSkKQEAgLTE4NiwyMiArMTg0LDIyIEBAIHB1YmxpYzoKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZS4uLiBQYXJhbXM+CiAgICAgTm9kZSogYWRkTm9kZShQYXJhbXMuLi4g
cGFyYW1zKQogICAgIHsKLSAgICAgICAgTm9kZSogbm9kZSA9IG5ldyAobV9hbGxvY2F0b3IpIE5v
ZGUocGFyYW1zLi4uKTsKLSAgICAgICAgYWRkTm9kZVRvTWFwQnlJbmRleChub2RlKTsKKyAgICAg
ICAgTm9kZSogbm9kZSA9IG5ldyBOb2RlKHBhcmFtcy4uLik7CisgICAgICAgIG1fbm9kZXMuYWRk
KHN0ZDo6dW5pcXVlX3B0cjxOb2RlPihub2RlKSk7CiAgICAgICAgIHJldHVybiBub2RlOwogICAg
IH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBQYXJhbXM+CiAgICAgTm9kZSogYWRkTm9kZShT
cGVjdWxhdGVkVHlwZSB0eXBlLCBQYXJhbXMuLi4gcGFyYW1zKQogICAgIHsKLSAgICAgICAgTm9k
ZSogbm9kZSA9IG5ldyAobV9hbGxvY2F0b3IpIE5vZGUocGFyYW1zLi4uKTsKKyAgICAgICAgTm9k
ZSogbm9kZSA9IG5ldyBOb2RlKHBhcmFtcy4uLik7CiAgICAgICAgIG5vZGUtPnByZWRpY3QodHlw
ZSk7Ci0gICAgICAgIGFkZE5vZGVUb01hcEJ5SW5kZXgobm9kZSk7CisgICAgICAgIG1fbm9kZXMu
YWRkKHN0ZDo6dW5pcXVlX3B0cjxOb2RlPihub2RlKSk7CiAgICAgICAgIHJldHVybiBub2RlOwog
ICAgIH0KIAogICAgIHZvaWQgZGVsZXRlTm9kZShOb2RlKik7Ci0gICAgdW5zaWduZWQgbWF4Tm9k
ZUNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9ub2Rlc0J5SW5kZXguc2l6ZSgpOyB9Ci0gICAgTm9k
ZSogbm9kZUF0KHVuc2lnbmVkIGluZGV4KSBjb25zdCB7IHJldHVybiBtX25vZGVzQnlJbmRleFtp
bmRleF07IH0KKyAgICB1bnNpZ25lZCBtYXhOb2RlQ291bnQoKSBjb25zdCB7IHJldHVybiBtX25v
ZGVzLnNpemUoKTsgfQorICAgIE5vZGUqIG5vZGVBdCh1bnNpZ25lZCBpbmRleCkgY29uc3QgeyBy
ZXR1cm4gbV9ub2Rlc1tpbmRleF07IH0KICAgICB2b2lkIHBhY2tOb2RlSW5kaWNlcygpOwogCiAg
ICAgdm9pZCBkZXRocmVhZCgpOwpAQCAtOTIzLDggKzkyMSw2IEBAIHB1YmxpYzoKICAgICBDb2Rl
QmxvY2sqIG1fY29kZUJsb2NrOwogICAgIENvZGVCbG9jayogbV9wcm9maWxlZEJsb2NrOwogICAg
IAotICAgIE5vZGVBbGxvY2F0b3ImIG1fYWxsb2NhdG9yOwotCiAgICAgVmVjdG9yPCBSZWZQdHI8
QmFzaWNCbG9jaz4gLCA4PiBtX2Jsb2NrczsKICAgICBWZWN0b3I8RWRnZSwgMTY+IG1fdmFyQXJn
Q2hpbGRyZW47CiAKQEAgLTEwMjAsOCArMTAxNiw2IEBAIHB1YmxpYzoKICAgICBSZWdpc3RlcmVk
U3RydWN0dXJlIHN5bWJvbFN0cnVjdHVyZTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGFkZE5vZGVU
b01hcEJ5SW5kZXgoTm9kZSopOwotCiAgICAgYm9vbCBpc1N0cmluZ1Byb3RvdHlwZU1ldGhvZFNh
bmUoSlNHbG9iYWxPYmplY3QqLCBVbmlxdWVkU3RyaW5nSW1wbCopOwogCiAgICAgdm9pZCBoYW5k
bGVTdWNjZXNzb3IoVmVjdG9yPEJhc2ljQmxvY2sqLCAxNj4mIHdvcmtsaXN0LCBCYXNpY0Jsb2Nr
KiwgQmFzaWNCbG9jayogc3VjY2Vzc29yKTsKQEAgLTEwNTQsOCArMTA0OCw3IEBAIHByaXZhdGU6
CiAgICAgICAgIHJldHVybiBieXRlY29kZUNhblRydW5jYXRlSW50ZWdlcihhZGQtPmFyaXRoTm9k
ZUZsYWdzKCkpID8gU3BlY3VsYXRlSW50MzJBbmRUcnVuY2F0ZUNvbnN0YW50cyA6IERvbnRTcGVj
dWxhdGVJbnQzMjsKICAgICB9CiAKLSAgICBWZWN0b3I8Tm9kZSosIDAsIFVuc2FmZVZlY3Rvck92
ZXJmbG93PiBtX25vZGVzQnlJbmRleDsKLSAgICBWZWN0b3I8dW5zaWduZWQsIDAsIFVuc2FmZVZl
Y3Rvck92ZXJmbG93PiBtX25vZGVJbmRleEZyZWVMaXN0OworICAgIEIzOjpTcGFyc2VDb2xsZWN0
aW9uPE5vZGU+IG1fbm9kZXM7CiAgICAgU2VnbWVudGVkVmVjdG9yPFJlZ2lzdGVyZWRTdHJ1Y3R1
cmVTZXQsIDE2PiBtX3N0cnVjdHVyZVNldHM7CiB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0xvbmdMaXZlZFN0YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0xvbmdMaXZlZFN0YXRlLmNwcAkocmV2aXNpb24gMjE2NTI4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMb25nTGl2ZWRTdGF0ZS5jcHAJKG5vbmV4
aXN0ZW50KQpAQCAtMSw1MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJERkdMb25nTGl2
ZWRTdGF0ZS5oIgotCi0jaWYgRU5BQkxFKERGR19KSVQpCi0KLSNpbmNsdWRlICJKU0NJbmxpbmVz
LmgiCi0KLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKLQotTG9uZ0xpdmVkU3RhdGU6
OkxvbmdMaXZlZFN0YXRlKCkKLXsKLX0KLQotTG9uZ0xpdmVkU3RhdGU6On5Mb25nTGl2ZWRTdGF0
ZSgpCi17Ci19Ci0KLXZvaWQgTG9uZ0xpdmVkU3RhdGU6OnNocmlua1RvRml0KCkKLXsKLSAgICBt
X2FsbG9jYXRvci5yZXNldCgpOwotfQotCi19IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCi0KLSNl
bmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdMb25nTGl2ZWRTdGF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTG9uZ0xpdmVkU3RhdGUuaAkocmV2aXNpb24gMjE2NTI4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdMb25nTGl2ZWRTdGF0ZS5oCShub25leGlzdGVudCkKQEAgLTEs
NDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwot
Ci0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShERkdfSklUKQotCi0jaW5jbHVkZSAiREZHTm9k
ZUFsbG9jYXRvci5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlLmg+Ci0KLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKLQotY2xh
c3MgTG9uZ0xpdmVkU3RhdGUgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOyBXVEZfTUFL
RV9OT05DT1BZQUJMRShMb25nTGl2ZWRTdGF0ZSk7Ci1wdWJsaWM6Ci0gICAgTG9uZ0xpdmVkU3Rh
dGUoKTsKLSAgICB+TG9uZ0xpdmVkU3RhdGUoKTsKLSAgICAKLSAgICB2b2lkIHNocmlua1RvRml0
KCk7Ci0gICAgCi0gICAgTm9kZUFsbG9jYXRvciBtX2FsbG9jYXRvcjsKLX07Ci0KLX0gfSAvLyBu
YW1lc3BhY2UgSlNDOjpERkcKLQotI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJldmlzaW9uIDIxNjUyOCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3
IEBACiAKICNpZiBFTkFCTEUoREZHX0pJVCkKIAorI2luY2x1ZGUgIkIzU3BhcnNlQ29sbGVjdGlv
bi5oIgogI2luY2x1ZGUgIkJhc2ljQmxvY2tMb2NhdGlvbi5oIgogI2luY2x1ZGUgIkNvZGVCbG9j
ay5oIgogI2luY2x1ZGUgIkRGR0Fic3RyYWN0VmFsdWUuaCIKQEAgLTI0Niw2ICsyNDcsNyBAQCBz
dHJ1Y3QgQ2FsbERPTUdldHRlckRhdGEgewogLy8KIC8vIE5vZGUgcmVwcmVzZW50cyBhIHNpbmds
ZSBvcGVyYXRpb24gaW4gdGhlIGRhdGEgZmxvdyBncmFwaC4KIHN0cnVjdCBOb2RlIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgY2hhciBI
YXNoU2V0VGVtcGxhdGVJbnN0YW50aWF0aW9uU3RyaW5nW107CiAgICAgCkBAIC0yNTMzLDcgKzI1
MzUsNyBAQCBwdWJsaWM6CiAgICAgQWRqYWNlbmN5TGlzdCBjaGlsZHJlbjsKIAogcHJpdmF0ZToK
LSAgICBmcmllbmQgY2xhc3MgR3JhcGg7CisgICAgZnJpZW5kIGNsYXNzIEIzOjpTcGFyc2VDb2xs
ZWN0aW9uPE5vZGU+OwogCiAgICAgdW5zaWduZWQgbV9pbmRleCB7IHN0ZDo6bnVtZXJpY19saW1p
dHM8dW5zaWduZWQ+OjptYXgoKSB9OwogICAgIHVuc2lnbmVkIG1fb3AgOiAxMDsgLy8gcmVhbCB0
eXBlIGlzIE5vZGVUeXBlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVB
bGxvY2F0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGVBbGxvY2F0b3IuaAkocmV2aXNpb24gMjE2NTI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlQWxsb2NhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDYgQEAK
IAogI2lmIEVOQUJMRShERkdfSklUKQogCi0jaW5jbHVkZSAiREZHQWxsb2NhdG9yLmgiCiAjaW5j
bHVkZSAiREZHTm9kZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJKHJldmlzaW9uIDIxNjUyOCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE2OSw3ICsxNjksNyBAQCBib29sIFBsYW46OnJlcG9ydENvbXBpbGVUaW1lcygpIGNvbnN0CiAg
ICAgICAgIHx8IChPcHRpb25zOjpyZXBvcnRGVExDb21waWxlVGltZXMoKSAmJiBpc0ZUTChtb2Rl
KSk7CiB9CiAKLXZvaWQgUGxhbjo6Y29tcGlsZUluVGhyZWFkKExvbmdMaXZlZFN0YXRlJiBsb25n
TGl2ZWRTdGF0ZSwgVGhyZWFkRGF0YSogdGhyZWFkRGF0YSkKK3ZvaWQgUGxhbjo6Y29tcGlsZUlu
VGhyZWFkKFRocmVhZERhdGEqIHRocmVhZERhdGEpCiB7CiAgICAgdGhpcy0+dGhyZWFkRGF0YSA9
IHRocmVhZERhdGE7CiAgICAgCkBAIC0xODUsNyArMTg1LDcgQEAgdm9pZCBQbGFuOjpjb21waWxl
SW5UaHJlYWQoTG9uZ0xpdmVkU3RhdAogICAgIGlmIChsb2dDb21waWxhdGlvbkNoYW5nZXMobW9k
ZSkgfHwgT3B0aW9uczo6cmVwb3J0REZHUGhhc2VUaW1lcygpKQogICAgICAgICBkYXRhTG9nKCJE
RkcoUGxhbikgY29tcGlsaW5nICIsICpjb2RlQmxvY2ssICIgd2l0aCAiLCBtb2RlLCAiLCBudW1i
ZXIgb2YgaW5zdHJ1Y3Rpb25zID0gIiwgY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCksICJc
biIpOwogCi0gICAgQ29tcGlsYXRpb25QYXRoIHBhdGggPSBjb21waWxlSW5UaHJlYWRJbXBsKGxv
bmdMaXZlZFN0YXRlKTsKKyAgICBDb21waWxhdGlvblBhdGggcGF0aCA9IGNvbXBpbGVJblRocmVh
ZEltcGwoKTsKIAogICAgIFJFTEVBU0VfQVNTRVJUKHBhdGggPT0gQ2FuY2VsUGF0aCB8fCBmaW5h
bGl6ZXIpOwogICAgIFJFTEVBU0VfQVNTRVJUKChwYXRoID09IENhbmNlbFBhdGgpID09IChzdGFn
ZSA9PSBDYW5jZWxsZWQpKTsKQEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIFBsYW46OmNvbXBpbGVJ
blRocmVhZChMb25nTGl2ZWRTdGF0CiAgICAgfQogfQogCi1QbGFuOjpDb21waWxhdGlvblBhdGgg
UGxhbjo6Y29tcGlsZUluVGhyZWFkSW1wbChMb25nTGl2ZWRTdGF0ZSYgbG9uZ0xpdmVkU3RhdGUp
CitQbGFuOjpDb21waWxhdGlvblBhdGggUGxhbjo6Y29tcGlsZUluVGhyZWFkSW1wbCgpCiB7CiAg
ICAgY2xlYW5NdXN0SGFuZGxlVmFsdWVzSWZOZWNlc3NhcnkoKTsKICAgICAKQEAgLTI0NSw3ICsy
NDUsNyBAQCBQbGFuOjpDb21waWxhdGlvblBhdGggUGxhbjo6Y29tcGlsZUluVGhyCiAgICAgICAg
IGRhdGFMb2coIlxuIik7CiAgICAgfQogICAgIAotICAgIEdyYXBoIGRmZygqdm0sICp0aGlzLCBs
b25nTGl2ZWRTdGF0ZSk7CisgICAgR3JhcGggZGZnKCp2bSwgKnRoaXMpOwogICAgIAogICAgIGlm
ICghcGFyc2UoZGZnKSkgewogICAgICAgICBmaW5hbGl6ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZh
aWxlZEZpbmFsaXplcj4oKnRoaXMpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQbGFuLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFu
LmgJKHJldmlzaW9uIDIxNjUyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxh
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw2IEBAIGNsYXNzIFNsb3RWaXNpdG9yOwog
CiBuYW1lc3BhY2UgREZHIHsKIAotY2xhc3MgTG9uZ0xpdmVkU3RhdGU7CiBjbGFzcyBUaHJlYWRE
YXRhOwogCiAjaWYgRU5BQkxFKERGR19KSVQpCkBAIC01OSw3ICs1OCw3IEBAIHN0cnVjdCBQbGFu
IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGUKICAgICAgICAgY29uc3QgT3BlcmFuZHM8SlNW
YWx1ZT4mIG11c3RIYW5kbGVWYWx1ZXMpOwogICAgIH5QbGFuKCk7CiAKLSAgICB2b2lkIGNvbXBp
bGVJblRocmVhZChMb25nTGl2ZWRTdGF0ZSYsIFRocmVhZERhdGEqKTsKKyAgICB2b2lkIGNvbXBp
bGVJblRocmVhZChUaHJlYWREYXRhKik7CiAgICAgCiAgICAgQ29tcGlsYXRpb25SZXN1bHQgZmlu
YWxpemVXaXRob3V0Tm90aWZ5aW5nQ2FsbGJhY2soKTsKICAgICB2b2lkIGZpbmFsaXplQW5kTm90
aWZ5Q2FsbGJhY2soKTsKQEAgLTEyMiw3ICsxMjEsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgcmVw
b3J0Q29tcGlsZVRpbWVzKCkgY29uc3Q7CiAgICAgCiAgICAgZW51bSBDb21waWxhdGlvblBhdGgg
eyBGYWlsUGF0aCwgREZHUGF0aCwgRlRMUGF0aCwgQ2FuY2VsUGF0aCB9OwotICAgIENvbXBpbGF0
aW9uUGF0aCBjb21waWxlSW5UaHJlYWRJbXBsKExvbmdMaXZlZFN0YXRlJik7CisgICAgQ29tcGls
YXRpb25QYXRoIGNvbXBpbGVJblRocmVhZEltcGwoKTsKICAgICAKICAgICBib29sIGlzU3RpbGxW
YWxpZCgpOwogICAgIHZvaWQgcmVhbGx5QWRkKENvbW1vbkRhdGEqKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xpc3QuY3BwCShyZXZpc2lvbiAyMTY1MjgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUgIkRGR1dvcmtsaXN0LmgiCiAKICNpbmNsdWRlICJD
b2RlQmxvY2suaCIKLSNpbmNsdWRlICJERkdMb25nTGl2ZWRTdGF0ZS5oIgogI2luY2x1ZGUgIkRG
R1NhZmVwb2ludC5oIgogI2luY2x1ZGUgIkRlZmVyR0MuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVz
LmgiCkBAIC0xMDksNyArMTA4LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICAgICAgZGF0YUxvZygi
SGVhcCBpcyBzdG9wZWQgYnV0IGhlcmUgd2UgYXJlISAoMSlcbiIpOwogICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQotICAgICAgICBtX3BsYW4tPmNv
bXBpbGVJblRocmVhZCgqbV9sb25nTGl2ZWRTdGF0ZSwgJm1fZGF0YSk7CisgICAgICAgIG1fcGxh
bi0+Y29tcGlsZUluVGhyZWFkKCZtX2RhdGEpOwogICAgICAgICBpZiAobV9wbGFuLT5zdGFnZSAh
PSBQbGFuOjpDYW5jZWxsZWQpIHsKICAgICAgICAgICAgIGlmIChtX3BsYW4tPnZtLT5oZWFwLmNv
bGxlY3RvckJlbGlldmVzVGhhdFRoZVdvcmxkSXNTdG9wcGVkKCkpIHsKICAgICAgICAgICAgICAg
ICBkYXRhTG9nKCJIZWFwIGlzIHN0b3BwZWQgYnV0IGhlcmUgd2UgYXJlISAoMilcbiIpOwpAQCAt
MTQ3LDcgKzE0Niw2IEBAIHByb3RlY3RlZDoKICAgICAgICAgICAgIFRocmVhZDo6Y3VycmVudCgp
LmNoYW5nZVByaW9yaXR5KG1fcmVsYXRpdmVQcmlvcml0eSk7CiAgICAgICAgIAogICAgICAgICBt
X2NvbXBpbGF0aW9uU2NvcGUgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbXBpbGF0aW9uU2NvcGU+KCk7
Ci0gICAgICAgIG1fbG9uZ0xpdmVkU3RhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPExvbmdMaXZlZFN0
YXRlPigpOwogICAgIH0KICAgICAKICAgICB2b2lkIHRocmVhZElzU3RvcHBpbmcoY29uc3QgQWJz
dHJhY3RMb2NrZXImKSBvdmVycmlkZQpAQCAtMTYwLDcgKzE1OCw2IEBAIHByb3RlY3RlZDoKICAg
ICAgICAgQVNTRVJUKCFtX3BsYW4pOwogICAgICAgICAKICAgICAgICAgbV9jb21waWxhdGlvblNj
b3BlID0gbnVsbHB0cjsKLSAgICAgICAgbV9sb25nTGl2ZWRTdGF0ZSA9IG51bGxwdHI7CiAgICAg
ICAgIG1fcGxhbiA9IG51bGxwdHI7CiAgICAgfQogICAgIApAQCAtMTY5LDcgKzE2Niw2IEBAIHBy
aXZhdGU6CiAgICAgVGhyZWFkRGF0YSYgbV9kYXRhOwogICAgIGludCBtX3JlbGF0aXZlUHJpb3Jp
dHk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPENvbXBpbGF0aW9uU2NvcGU+IG1fY29tcGlsYXRpb25T
Y29wZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8TG9uZ0xpdmVkU3RhdGU+IG1fbG9uZ0xpdmVkU3Rh
dGU7CiAgICAgUmVmUHRyPFBsYW4+IG1fcGxhbjsKIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5jcHAJKHJldmlzaW9uIDIxNjUyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNiBAQAogI2lu
Y2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiQ29tbW9uU2xvd1BhdGhzLmgi
CiAjaW5jbHVkZSAiQ3VzdG9tR2V0dGVyU2V0dGVyLmgiCi0jaW5jbHVkZSAiREZHTG9uZ0xpdmVk
U3RhdGUuaCIKICNpbmNsdWRlICJERkdXb3JrbGlzdC5oIgogI2luY2x1ZGUgIkRpc2Fzc2VtYmxl
ci5oIgogI2luY2x1ZGUgIkVycm9ySW5zdGFuY2UuaCIKQEAgLTMxNSwxMSArMzE0LDYgQEAgVk06
OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogCiAgICAgY2FsbEZyYW1lRm9y
Q2F0Y2ggPSBudWxscHRyOwogCi0jaWYgRU5BQkxFKERGR19KSVQpCi0gICAgaWYgKGNhblVzZUpJ
VCgpKQotICAgICAgICBkZmdTdGF0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8REZHOjpMb25nTGl2ZWRT
dGF0ZT4oKTsKLSNlbmRpZgotICAgIAogICAgIC8vIEluaXRpYWxpemUgdGhpcyBsYXN0LCBhcyBh
IGZyZWUgd2F5IG9mIGFzc2VydGluZyB0aGF0IFZNIGluaXRpYWxpemF0aW9uIGl0c2VsZgogICAg
IC8vIHdvbid0IHVzZSB0aGlzLgogICAgIG1fdHlwZWRBcnJheUNvbnRyb2xsZXIgPSBhZG9wdFJl
ZihuZXcgU2ltcGxlVHlwZWRBcnJheUNvbnRyb2xsZXIoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmgJKHJldmlzaW9uIDIxNjUyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0MSwxMSArMTQxLDYgQEAgY2xhc3Mg
V2F0Y2hkb2c7CiBjbGFzcyBXYXRjaHBvaW50OwogY2xhc3MgV2F0Y2hwb2ludFNldDsKIAotI2lm
IEVOQUJMRShERkdfSklUKQotbmFtZXNwYWNlIERGRyB7Ci1jbGFzcyBMb25nTGl2ZWRTdGF0ZTsK
LX0KLSNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKICNpZiBFTkFCTEUoRlRMX0pJVCkKIG5hbWVz
cGFjZSBGVEwgewogY2xhc3MgVGh1bmtzOwpAQCAtMzAwLDEwICsyOTUsNiBAQCBwdWJsaWM6CiAg
ICAgSlNXZWJBc3NlbWJseUNvZGVCbG9ja1N1YnNwYWNlIHdlYkFzc2VtYmx5Q29kZUJsb2NrU3Bh
Y2U7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShERkdfSklUKQotICAgIHN0ZDo6dW5pcXVlX3B0cjxE
Rkc6OkxvbmdMaXZlZFN0YXRlPiBkZmdTdGF0ZTsKLSNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkK
LQogICAgIFZNVHlwZSB2bVR5cGU7CiAgICAgQ2xpZW50RGF0YSogY2xpZW50RGF0YTsKICAgICBW
TUVudHJ5RnJhbWUqIHRvcFZNRW50cnlGcmFtZTsK
</data>
<flag name="review"
          id="331125"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309976</attachid>
            <date>2017-05-12 17:36:01 -0700</date>
            <delta_ts>2017-05-12 17:38:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160098-20170512173600.patch</filename>
            <type>text/plain</type>
            <size>38612</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjE2NzkyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ0IEBA
CisyMDE3LTA1LTEyICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgW0pTQ10gREZHOjpOb2RlIHNob3VsZCBub3QgaGF2ZSBpdHMgb3duIGFsbG9jYXRvcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwMDk4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSSBqdXN0IHJlYmFz
ZWQgdGhlIHBhdGNoIGZyb20gPGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzIwMzgw
OD4uCisKKyAgICAgICAgSSByYW4gT2N0YW5lIGFuZCBKZXRTdHJlYW0gbG9jYWxseSBvbiBhIE1h
Y0Jvb2sgQWlyIGFuZCBJIHdhc24ndCBhYmxlIHRvCisgICAgICAgIHJlcHJvZHVjZSBhIHJlZ3Jl
c3Npb24uIExldCdzIGxhbmQgdGhpcyBhZ2FpbiBhbmQgc2VlIHdoYXQgdGhlIGJvdHMgc2F5Lgor
CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBiMy9CM1NwYXJzZUNvbGxlY3Rpb24uaDoKKyAgICAgICAgKEpTQzo6QjM6OlNwYXJz
ZUNvbGxlY3Rpb246OnBhY2tJbmRpY2VzKToKKyAgICAgICAgKiBkZmcvREZHQWxsb2NhdG9yLmg6
IFJlbW92ZWQuCisgICAgICAgICogZGZnL0RGR0RyaXZlci5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6Y29tcGlsZUltcGwpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6R3JhcGg6OkdyYXBoKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6fkdyYXBo
KToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6ZGVsZXRlTm9kZSk6CisgICAgICAgIChKU0M6
OkRGRzo6R3JhcGg6OnBhY2tOb2RlSW5kaWNlcyk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6
OmFkZE5vZGVUb01hcEJ5SW5kZXgpOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5o
OgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjphZGROb2RlKToKKyAgICAgICAgKEpTQzo6REZH
OjpHcmFwaDo6bWF4Tm9kZUNvdW50KToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6bm9kZUF0
KToKKyAgICAgICAgKiBkZmcvREZHTG9uZ0xpdmVkU3RhdGUuY3BwOiBSZW1vdmVkLgorICAgICAg
ICAqIGRmZy9ERkdMb25nTGl2ZWRTdGF0ZS5oOiBSZW1vdmVkLgorICAgICAgICAqIGRmZy9ERkdO
b2RlLmg6CisgICAgICAgICogZGZnL0RGR05vZGVBbGxvY2F0b3IuaDoKKyAgICAgICAgKiBkZmcv
REZHUGxhbi5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UGxhbjo6Y29tcGlsZUluVGhyZWFkKToK
KyAgICAgICAgKEpTQzo6REZHOjpQbGFuOjpjb21waWxlSW5UaHJlYWRJbXBsKToKKyAgICAgICAg
KiBkZmcvREZHUGxhbi5oOgorICAgICAgICAqIGRmZy9ERkdXb3JrbGlzdC5jcHA6CisgICAgICAg
ICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgICogcnVu
dGltZS9WTS5oOgorCiAyMDE3LTA1LTEyICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNv
bT4KIAogICAgICAgICBDbGVhbnVwOiBNYWtlIFF1ZXVlVGFza1RvRXZlbnRMb29wRnVuY3Rpb25Q
dHIgdGFrZSBKU0dsb2JhbE9iamVjdCYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFr
ZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQJKHJldmlzaW9uIDIxNjUyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzU3LDcgKzM1Nyw2IEBAIHNldChKYXZhU2NyaXB0
Q29yZV9TT1VSQ0VTCiAgICAgZGZnL0RGR0xhenlKU1ZhbHVlLmNwcAogICAgIGRmZy9ERkdMYXp5
Tm9kZS5jcHAKICAgICBkZmcvREZHTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmNwcAotICAgIGRmZy9E
RkdMb25nTGl2ZWRTdGF0ZS5jcHAKICAgICBkZmcvREZHTG9vcFByZUhlYWRlckNyZWF0aW9uUGhh
c2UuY3BwCiAgICAgZGZnL0RGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNlLmNwcAogICAgIGRm
Zy9ERkdNYXlFeGl0LmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlz
aW9uIDIxNjUyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC05OTksOCArOTk5LDYgQEAK
IAkJMEZFRkM5QUIxNjgxQTNCNjAwNTY3RjUzIC8qIERGR09TUkV4aXRKdW1wUGxhY2Vob2xkZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUZDOUE4
MTY4MUEzQjAwMDU2N0Y1MyAvKiBERkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVyLmggKi87IH07CiAJ
CTBGRjA1NEY5MUFDMzVCNDQwMEU1QkU1NyAvKiBFeGVjdXRhYmxlQWxsb2NhdGlvbkZ1enouY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGMDU0Rjcx
QUMzNUI0NDAwRTVCRTU3IC8qIEV4ZWN1dGFibGVBbGxvY2F0aW9uRnV6ei5jcHAgKi87IH07CiAJ
CTBGRjA1NEZBMUFDMzVCNDQwMEU1QkU1NyAvKiBFeGVjdXRhYmxlQWxsb2NhdGlvbkZ1enouaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRjA1NEY4MUFD
MzVCNDQwMEU1QkU1NyAvKiBFeGVjdXRhYmxlQWxsb2NhdGlvbkZ1enouaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkwRkYwRjE5OTE2QjcyOUY2MDA1
REY5NUIgLyogREZHTG9uZ0xpdmVkU3RhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCNEI1MUMxNkI2Mjc3MjAwM0Y2OTZCIC8qIERGR0xvbmdM
aXZlZFN0YXRlLmNwcCAqLzsgfTsKLQkJMEZGMEYxOUIxNkI3MjlGQTAwNURGOTVCIC8qIERGR0xv
bmdMaXZlZFN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRkI0QjUxRDE2QjYyNzcyMDAzRjY5NkIgLyogREZHTG9uZ0xpdmVkU3RhdGUuaCAqLzsg
fTsKIAkJMEZGMEYxOUMxNkI3MkEwMzAwNURGOTVCIC8qIERGR05vZGUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCNEI1MUUxNkI2Mjc3MjAwM0Y2
OTZCIC8qIERGR05vZGUuY3BwICovOyB9OwogCQkwRkYwRjE5RDE2QjcyQTA4MDA1REY5NUIgLyog
REZHQ29tbW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGQjRCNTFBMTZCNjI3NzIwMDNGNjk2QiAvKiBERkdDb21tb24uY3BwICovOyB9OwogCQkw
RkYwRjE5RTE2QjcyQTBCMDA1REY5NUIgLyogREZHRWRnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkI0QjUxQjE2QjYyNzcyMDAzRjY5NkIgLyog
REZHRWRnZS5jcHAgKi87IH07CkBAIC0xMDU5LDkgKzEwNTcsNyBAQAogCQkwRkZBNTQ5ODE2Qjg4
MzUzMDBCM0E5ODIgLyogQTY0RE9wY29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNjUyQTNBMjMxNjUxQzY5NzAwQTgwQUZFIC8qIEE2NERPcGNvZGUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkZC
NkMzODFBRjQ4RERDMDBEQjFCRjcgLyogVHlwZW9mVHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkZCNkMzNjFBRjQ4RERDMDBEQjFCRjcgLyog
VHlwZW9mVHlwZS5jcHAgKi87IH07CiAJCTBGRkI2QzM5MUFGNDhEREMwMERCMUJGNyAvKiBUeXBl
b2ZUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RkZCNkMzNzFBRjQ4RERDMDBEQjFCRjcgLyogVHlwZW9mVHlwZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTBGRkI5MjE4MTZEMDJFQjIwMDU1QTVE
QiAvKiBERkdBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGQjRCNTE5MTZCNjI3NzIwMDNGNjk2QiAvKiBERkdBbGxvY2F0b3IuaCAqLzsg
fTsKIAkJMEZGQjkyMUExNkQwMkVDNTAwNTVBNURCIC8qIERGR0Jhc2ljQmxvY2tJbmxpbmVzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkQ1NjUyMjE2
QUI3ODBBMDAxOTc2NTMgLyogREZHQmFzaWNCbG9ja0lubGluZXMuaCAqLzsgfTsKLQkJMEZGQjky
MUIxNkQwMkYwMTAwNTVBNURCIC8qIERGR05vZGVBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjRCNTFGMTZCNjI3NzIwMDNGNjk2QiAv
KiBERkdOb2RlQWxsb2NhdG9yLmggKi87IH07CiAJCTBGRkI5MjFDMTZEMDJGMTEwMDU1QTVEQiAv
KiBERkdPU1JFeGl0Q29tcGlsYXRpb25JbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA2NTk4N0YyQzE2N0ZFODRCMDAzQzJGOEQgLyogREZHT1NSRXhp
dENvbXBpbGF0aW9uSW5mby5oICovOyB9OwogCQkwRkZCOTIxRDE2RDAyRjMwMDA1NUE1REIgLyog
REZHU2xvd1BhdGhHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGMUUzQTUwMTUzN0MyQ0IwMDBGOTQ1NiAvKiBERkdTbG93UGF0aEdlbmVy
YXRvci5oICovOyB9OwogCQkwRkZCOTIyMDE2RDAzM0I3MDA1NUE1REIgLyogTm9kZUNvbnN0cnVj
dG9ycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMw
REFEMDMwRkIxRUIxQTAwODJEMjA1IC8qIE5vZGVDb25zdHJ1Y3RvcnMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzI2NSwxMyArMzI2MSw5IEBA
CiAJCTBGQjQ3NjdDMUQ5OUFFQTcwMDhFQTZDQiAvKiBHQ0RlZmVycmFsQ29udGV4dC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHQ0RlZmVycmFsQ29udGV4dC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRkI0NzY3RDFEOTlBRUE3MDA4RUE2Q0IgLyogR0NEZWZl
cnJhbENvbnRleHRJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdD
RGVmZXJyYWxDb250ZXh0SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RkI0QjUxMDE2QjNBOTY0MDAzRjY5NkIgLyogREZHTWluaWZpZWRJRC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBERkdNaW5pZmllZElELmg7IHBhdGggPSBkZmcvREZHTWluaWZp
ZWRJRC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRkI0QjUxOTE2QjYyNzcyMDAz
RjY5NkIgLyogREZHQWxsb2NhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IERGR0FsbG9jYXRvci5oOyBwYXRoID0gZGZnL0RGR0FsbG9jYXRvci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRkI0QjUxQTE2QjYyNzcyMDAzRjY5NkIgLyogREZHQ29tbW9uLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0NvbW1vbi5jcHA7IHBh
dGggPSBkZmcvREZHQ29tbW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZC
NEI1MUIxNkI2Mjc3MjAwM0Y2OTZCIC8qIERGR0VkZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gREZHRWRnZS5jcHA7IHBhdGggPSBkZmcvREZHRWRnZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGQjRCNTFDMTZCNjI3NzIwMDNGNjk2QiAvKiBE
RkdMb25nTGl2ZWRTdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBERkdMb25nTGl2ZWRTdGF0ZS5jcHA7IHBhdGggPSBkZmcvREZHTG9uZ0xpdmVkU3RhdGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRkI0QjUxRDE2QjYyNzcyMDAzRjY5NkIg
LyogREZHTG9uZ0xpdmVkU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
REZHTG9uZ0xpdmVkU3RhdGUuaDsgcGF0aCA9IGRmZy9ERkdMb25nTGl2ZWRTdGF0ZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkI0QjUxRTE2QjYyNzcyMDAzRjY5NkIgLyogREZH
Tm9kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdOb2RlLmNw
cDsgcGF0aCA9IGRmZy9ERkdOb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
MEZCNEI1MUYxNkI2Mjc3MjAwM0Y2OTZCIC8qIERGR05vZGVBbGxvY2F0b3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHTm9kZUFsbG9jYXRvci5oOyBwYXRoID0gZGZnL0RG
R05vZGVBbGxvY2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZCNEI1MjEx
NkI2Mjc4RDAwM0Y2OTZCIC8qIEZ1bmN0aW9uRXhlY3V0YWJsZUR1bXAuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRnVuY3Rpb25FeGVjdXRhYmxlRHVtcC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQjRCNTIyMTZCNjI3OEQwMDNGNjk2QiAvKiBG
dW5jdGlvbkV4ZWN1dGFibGVEdW1wLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEZ1bmN0aW9uRXhlY3V0YWJsZUR1bXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEZCNEZCNzAxQkM4NDMxNDAwMjVDQTVBIC8qIEZUTExhenlTbG93UGF0aC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGVExMYXp5U2xvd1BhdGguY3BwOyBwYXRoID0g
ZnRsL0ZUTExhenlTbG93UGF0aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03
MTk0LDcgKzcxODYsNiBAQAogCQkJCTBGMThEM0NEMUI1NUE2RTAwMDJDNUM5RiAvKiBERkdBZGFw
dGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwICovLAogCQkJCTBGMThEM0NFMUI1NUE2RTAwMDJD
NUM5RiAvKiBERkdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaCAqLywKIAkJCQkwRjY2RTE2
ODE0REYzRjEzMDBCN0IyRTQgLyogREZHQWRqYWNlbmN5TGlzdC5oICovLAotCQkJCTBGQjRCNTE5
MTZCNjI3NzIwMDNGNjk2QiAvKiBERkdBbGxvY2F0b3IuaCAqLywKIAkJCQkwRjFFM0E0MzE1MzRD
QkFEMDAwRjk0NTYgLyogREZHQXJndW1lbnRQb3NpdGlvbi5oICovLAogCQkJCTBGMkREODBDMUFC
M0Q4QkUwMEJCQjhFOCAvKiBERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcCAqLywKIAkJ
CQkwRjJERDgwRDFBQjNEOEJFMDBCQkI4RTggLyogREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFz
ZS5oICovLApAQCAtNzM0OSw4ICs3MzQwLDYgQEAKIAkJCQk3OUM0QjE1QzFCQTIxNThGMDBGRDU5
MkUgLyogREZHTGl2ZUNhdGNoVmFyaWFibGVQcmVzZXJ2YXRpb25QaGFzZS5oICovLAogCQkJCUE3
RDg5Q0VDMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdMaXZlbmVzc0FuYWx5c2lzUGhhc2UuY3BwICov
LAogCQkJCUE3RDg5Q0VEMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdMaXZlbmVzc0FuYWx5c2lzUGhh
c2UuaCAqLywKLQkJCQkwRkI0QjUxQzE2QjYyNzcyMDAzRjY5NkIgLyogREZHTG9uZ0xpdmVkU3Rh
dGUuY3BwICovLAotCQkJCTBGQjRCNTFEMTZCNjI3NzIwMDNGNjk2QiAvKiBERkdMb25nTGl2ZWRT
dGF0ZS5oICovLAogCQkJCUE3NjdCNUIzMTdBMEI5NjUwMDYzRDk0MCAvKiBERkdMb29wUHJlSGVh
ZGVyQ3JlYXRpb25QaGFzZS5jcHAgKi8sCiAJCQkJQTc2N0I1QjQxN0EwQjk2NTAwNjNEOTQwIC8q
IERGR0xvb3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmggKi8sCiAJCQkJNzlGOEZDMUMxQjlGRUQw
RjAwQ0E2NkFCIC8qIERGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNlLmNwcCAqLywKQEAgLTcz
NzIsNyArNzM2MSw2IEBACiAJCQkJODZFQ0EzRTkxMzJERUYxQzAwMkIyQUQ3IC8qIERGR05vZGUu
aCAqLywKIAkJCQkwRjIwMTc4NzFEQ0I5NDIyMDBFQTU5NTAgLyogREZHTm9kZUFic3RyYWN0VmFs
dWVQYWlyLmNwcCAqLywKIAkJCQkwRjIwMTc4ODFEQ0I5NDIyMDBFQTU5NTAgLyogREZHTm9kZUFi
c3RyYWN0VmFsdWVQYWlyLmggKi8sCi0JCQkJMEZCNEI1MUYxNkI2Mjc3MjAwM0Y2OTZCIC8qIERG
R05vZGVBbGxvY2F0b3IuaCAqLywKIAkJCQkwRkE1ODFCNzE1MEU5NTJBMDBCOUEyRDkgLyogREZH
Tm9kZUZsYWdzLmNwcCAqLywKIAkJCQkwRkE1ODFCODE1MEU5NTJBMDBCOUEyRDkgLyogREZHTm9k
ZUZsYWdzLmggKi8sCiAJCQkJMEYyMDE3ODMxRENBRTE0NzAwRUE1OTUwIC8qIERGR05vZGVGbG93
UHJvamVjdGlvbi5jcHAgKi8sCkBAIC04NTA1LDcgKzg0OTMsNiBAQAogCQkJCTBGRDNFNDAyMUI2
MThBQUYwMEM4MEUxRSAvKiBERkdBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9p
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMThEM0QwMUI1NUE2RTAwMDJDNUM5RiAvKiBERkdB
ZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjZFMTZC
MTRERjNGMTYwMEI3QjJFNCAvKiBERkdBZGphY2VuY3lMaXN0LmggaW4gSGVhZGVycyAqLywKLQkJ
CQkwRkZCOTIxODE2RDAyRUIyMDA1NUE1REIgLyogREZHQWxsb2NhdG9yLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjFFM0E0NjE1MzRDQkFGMDAwRjk0NTYgLyogREZHQXJndW1lbnRQb3NpdGlvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyREQ4MTIxQUIzRDhCRTAwQkJCOEU4IC8qIERGR0FyZ3Vt
ZW50c0VsaW1pbmF0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkREODE0MUFCM0Q4
QkUwMEJCQjhFOCAvKiBERkdBcmd1bWVudHNVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLApAQCAt
ODYwMyw3ICs4NTkwLDYgQEAKIAkJCQlBN0Q5QTI5ODE3QTBCQzc0MDBFRTI2MTggLyogREZHTElD
TVBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3OUM0QjE1RTFCQTIxNThGMDBGRDU5MkUgLyog
REZHTGl2ZUNhdGNoVmFyaWFibGVQcmVzZXJ2YXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTdEODlDRkMxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0xpdmVuZXNzQW5hbHlzaXNQaGFzZS5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJMEZGMEYxOUIxNkI3MjlGQTAwNURGOTVCIC8qIERGR0xvbmdM
aXZlZFN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzY3QjVCNjE3QTBCOTY1MDA2M0Q5NDAg
LyogREZHTG9vcFByZUhlYWRlckNyZWF0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTc5
RjhGQzFGMUI5RkVEMEYwMENBNjZBQiAvKiBERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1ODc0RUUxOTRGRUIxMjAwQUFCMkMxIC8qIERGR01heUV4
aXQuaCBpbiBIZWFkZXJzICovLApAQCAtODYxNSw3ICs4NjAxLDYgQEAKIAkJCQlBNzM3ODEwRTE3
OTlFQTJFMDA4MTc1MzMgLyogREZHTmF0dXJhbExvb3BzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4
NkVDQTNFQTEzMkRFRjFDMDAyQjJBRDcgLyogREZHTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEYyMDE3ODkxRENCOTQyNDAwRUE1OTUwIC8qIERGR05vZGVBYnN0cmFjdFZhbHVlUGFpci5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJMEZGQjkyMUIxNkQwMkYwMTAwNTVBNURCIC8qIERGR05vZGVBbGxv
Y2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQTU4MUJCMTUwRTk1MzAwMEI5QTJEOSAvKiBE
RkdOb2RlRmxhZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjAxNzg1MURDQUUxNDkwMEVBNTk1
MCAvKiBERkdOb2RlRmxvd1Byb2plY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMzAwQjc4
MThBQjA1MTEwMEE2RDcyRSAvKiBERkdOb2RlT3JpZ2luLmggaW4gSGVhZGVycyAqLywKQEAgLTEw
Mzc0LDcgKzEwMzU5LDYgQEAKIAkJCQlBN0Q5QTI5NzE3QTBCQzc0MDBFRTI2MTggLyogREZHTElD
TVBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTc5QzRCMTVEMUJBMjE1OEYwMEZENTkyRSAv
KiBERkdMaXZlQ2F0Y2hWYXJpYWJsZVByZXNlcnZhdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUE3RDg5Q0ZCMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdMaXZlbmVzc0FuYWx5c2lzUGhh
c2UuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMEZGMEYxOTkxNkI3MjlGNjAwNURGOTVCIC8qIERG
R0xvbmdMaXZlZFN0YXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3NjdCNUI1MTdBMEI5NjUw
MDYzRDk0MCAvKiBERkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk3OUY4RkMxRTFCOUZFRDBGMDBDQTY2QUIgLyogREZHTWF4aW1hbEZsdXNoSW5zZXJ0
aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1ODc0RUQxOTRGRUIxMjAwQUFCMkMx
IC8qIERGR01heUV4aXQuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNTcGFyc2VDb2xsZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzU3BhcnNlQ29sbGVjdGlvbi5oCShyZXZpc2lvbiAyMTY1MjgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTcGFyc2VDb2xsZWN0aW9uLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBFTkFCTEUoQjNfSklU
KQorI2lmIEVOQUJMRShERkdfSklUKQogCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTc1LDYgKzc1LDQyIEBAIHB1YmxpYzoKICAgICAg
ICAgbV92ZWN0b3JbdmFsdWUtPm1faW5kZXhdID0gbnVsbHB0cjsKICAgICB9CiAKKyAgICB2b2lk
IHBhY2tJbmRpY2VzKCkKKyAgICB7CisgICAgICAgIGlmIChtX2luZGV4RnJlZUxpc3QuaXNFbXB0
eSgpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHVuc2lnbmVkIGhvbGVJbmRleCA9
IDA7CisgICAgICAgIHVuc2lnbmVkIGVuZEluZGV4ID0gbV92ZWN0b3Iuc2l6ZSgpOworCisgICAg
ICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICB3aGlsZSAoaG9sZUluZGV4IDwgZW5kSW5k
ZXggJiYgbV92ZWN0b3JbaG9sZUluZGV4XSkKKyAgICAgICAgICAgICAgICArK2hvbGVJbmRleDsK
KworICAgICAgICAgICAgaWYgKGhvbGVJbmRleCA9PSBlbmRJbmRleCkKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIEFTU0VSVChob2xlSW5kZXggPCBtX3ZlY3Rvci5zaXplKCkp
OworICAgICAgICAgICAgQVNTRVJUKCFtX3ZlY3Rvcltob2xlSW5kZXhdKTsKKworICAgICAgICAg
ICAgZG8geworICAgICAgICAgICAgICAgIC0tZW5kSW5kZXg7CisgICAgICAgICAgICB9IHdoaWxl
ICghbV92ZWN0b3JbZW5kSW5kZXhdICYmIGVuZEluZGV4ID4gaG9sZUluZGV4KTsKKworICAgICAg
ICAgICAgaWYgKGhvbGVJbmRleCA9PSBlbmRJbmRleCkKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIEFTU0VSVChlbmRJbmRleCA+IGhvbGVJbmRleCk7CisgICAgICAgICAgICBB
U1NFUlQobV92ZWN0b3JbZW5kSW5kZXhdKTsKKworICAgICAgICAgICAgYXV0byYgdmFsdWUgPSBt
X3ZlY3RvcltlbmRJbmRleF07CisgICAgICAgICAgICB2YWx1ZS0+bV9pbmRleCA9IGhvbGVJbmRl
eDsKKyAgICAgICAgICAgIG1fdmVjdG9yW2hvbGVJbmRleF0gPSBXVEZNb3ZlKHZhbHVlKTsKKyAg
ICAgICAgICAgICsraG9sZUluZGV4OworICAgICAgICB9CisKKyAgICAgICAgbV9pbmRleEZyZWVM
aXN0LnJlc2l6ZSgwKTsKKyAgICAgICAgbV92ZWN0b3IucmVzaXplKGVuZEluZGV4KTsKKyAgICB9
CisKICAgICB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV92ZWN0b3Iuc2l6ZSgpOyB9
CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV92ZWN0b3IuaXNFbXB0eSgpOyB9
CiAgICAgCkBAIC0xMzksNCArMTc1LDQgQEAgcHJpdmF0ZToKIAogfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OkIzCiAKLSNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQorI2VuZGlmIC8vIEVOQUJMRShERkdf
SklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBbGxvY2F0b3IuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FsbG9jYXRvci5oCShyZXZp
c2lvbiAyMTY1MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FsbG9jYXRvci5o
CShub25leGlzdGVudCkKQEAgLTEsMjM1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoREZHX0pJ
VCkKLQotI2luY2x1ZGUgIkRGR0NvbW1vbi5oIgotI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMu
aD4KLQotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewotCi0vLyBDdXN0b20gcG9vbCBh
bGxvY2F0b3IgZm9yIGV4YWN0bHkgb25lIHR5cGUgKHR5cGUgVCkuIEl0IGhhcyBmYXN0IChPKDEp
LCBvbmx5IGEgZmV3Ci0vLyBpbnN0cnVjdGlvbnMpIGFsbG9jYXRvciwgYW5kIGEgc2ltaWxhcmx5
IGZhc3QgZnJlZSgpLiBSZWN5Y2xpbmcgd29ya3MgaWYgZWl0aGVyIG9mCi0vLyB0aGUgZm9sbG93
aW5nIGlzIHRydWU6Ci0vLyAtIFQgaGFzIGEgdHJpdmlhbCBkZXN0cnVjdG9yLiBJbiB0aGF0IGNh
c2UgeW91IGRvbid0IGhhdmUgdG8gZXZlciBjYWxsIGZyZWUoKSBvbgotLy8gICBhbnl0aGluZy4g
WW91IGNhbiBqdXN0IGNhbGwgZnJlZUFsbCgpIGluc3RlYWQuCi0vLyAtIFlvdSBjYWxsIGZyZWUo
KSBvbiBhbGwgVCdzIHRoYXQgeW91IGFsbG9jYXRlZCwgYW5kIG5ldmVyIHVzZSBmcmVlQWxsKCku
Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1jbGFzcyBBbGxvY2F0b3IgewotcHVibGljOgotICAg
IEFsbG9jYXRvcigpOwotICAgIH5BbGxvY2F0b3IoKTsKLSAgICAKLSAgICB2b2lkKiBhbGxvY2F0
ZSgpOyAvLyBVc2UgcGxhY2VtZW50IG5ldyB0byBhbGxvY2F0ZSwgYW5kIGF2b2lkIHVzaW5nIHRo
aXMgbWV0aG9kLgotICAgIHZvaWQgZnJlZShUKik7IC8vIENhbGwgdGhpcyBtZXRob2QgdG8gZGVs
ZXRlOyBuZXZlciB1c2UgJ2RlbGV0ZScgZGlyZWN0bHkuCi0gICAgCi0gICAgdm9pZCBmcmVlQWxs
KCk7IC8vIE9ubHkgY2FsbCB0aGlzIGlmIHlvdSd2ZSBlaXRoZXIgZnJlZWQgZXZlcnl0aGluZyBv
ciBpZiBUIGhhcyBhIHRyaXZpYWwgZGVzdHJ1Y3Rvci4KLSAgICB2b2lkIHJlc2V0KCk7IC8vIExp
a2UgZnJlZUFsbCgpLCBidXQgYWxzbyByZXR1cm5zIGFsbCBtZW1vcnkgdG8gdGhlIE9TLgotICAg
IAotICAgIHVuc2lnbmVkIGluZGV4T2YoY29uc3QgVCopOwotICAgIAotICAgIHN0YXRpYyBBbGxv
Y2F0b3IqIGFsbG9jYXRvck9mKGNvbnN0IFQqKTsKLSAgICAKLXByaXZhdGU6Ci0gICAgdm9pZCog
YnVtcEFsbG9jYXRlKCk7Ci0gICAgdm9pZCogZnJlZUxpc3RBbGxvY2F0ZSgpOwotICAgIHZvaWQq
IGFsbG9jYXRlU2xvdygpOwotCi0gICAgc3RydWN0IFJlZ2lvbiB7Ci0gICAgICAgIHN0YXRpYyBz
aXplX3Qgc2l6ZSgpIHsgcmV0dXJuIDY0ICogS0I7IH0KLSAgICAgICAgc3RhdGljIHNpemVfdCBo
ZWFkZXJTaXplKCkgeyByZXR1cm4gc3RkOjptYXgoc2l6ZW9mKFJlZ2lvbiksIHNpemVvZihUKSk7
IH0KLSAgICAgICAgc3RhdGljIHVuc2lnbmVkIG51bWJlck9mVGhpbmdzUGVyUmVnaW9uKCkgeyBy
ZXR1cm4gKHNpemUoKSAtIGhlYWRlclNpemUoKSkgLyBzaXplb2YoVCk7IH0KLSAgICAgICAgVCog
ZGF0YSgpIHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxUKj4oYml0d2lzZV9jYXN0PGNoYXIqPih0aGlz
KSArIGhlYWRlclNpemUoKSk7IH0KLSAgICAgICAgYm9vbCBpc0luVGhpc1JlZ2lvbihjb25zdCBU
KiBwb2ludGVyKSB7IHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocG9pbnRlciAtIGRhdGEo
KSkgPCBudW1iZXJPZlRoaW5nc1BlclJlZ2lvbigpOyB9Ci0gICAgICAgIHN0YXRpYyBSZWdpb24q
IHJlZ2lvbkZvcihjb25zdCBUKiBwb2ludGVyKSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8UmVnaW9u
Kj4oYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4ocG9pbnRlcikgJiB+KHNpemUoKSAtIDEpKTsgfQot
ICAgICAgICAKLSAgICAgICAgdm9pZCogbV9hbGxvY2F0aW9uOwotICAgICAgICBBbGxvY2F0b3Iq
IG1fYWxsb2NhdG9yOwotICAgICAgICBSZWdpb24qIG1fbmV4dDsKLSAgICB9OwotICAgIAotICAg
IHZvaWQgZnJlZVJlZ2lvbnNTdGFydGluZ0F0KFJlZ2lvbiopOwotICAgIHZvaWQgc3RhcnRCdW1w
aW5nSW4oUmVnaW9uKik7Ci0gICAgCi0gICAgUmVnaW9uKiBtX3JlZ2lvbkhlYWQ7Ci0gICAgdm9p
ZCoqIG1fZnJlZUxpc3RIZWFkOwotICAgIFQqIG1fYnVtcEVuZDsKLSAgICB1bnNpZ25lZCBtX2J1
bXBSZW1haW5pbmc7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotaW5saW5lIEFsbG9jYXRv
cjxUPjo6QWxsb2NhdG9yKCkKLSAgICA6IG1fcmVnaW9uSGVhZCgwKQotICAgICwgbV9mcmVlTGlz
dEhlYWQoMCkKLSAgICAsIG1fYnVtcFJlbWFpbmluZygwKQotewotfQotCi10ZW1wbGF0ZTx0eXBl
bmFtZSBUPgotaW5saW5lIEFsbG9jYXRvcjxUPjo6fkFsbG9jYXRvcigpCi17Ci0gICAgcmVzZXQo
KTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLUFMV0FZU19JTkxJTkUgdm9pZCogQWxsb2Nh
dG9yPFQ+OjphbGxvY2F0ZSgpCi17Ci0gICAgdm9pZCogcmVzdWx0ID0gYnVtcEFsbG9jYXRlKCk7
Ci0gICAgaWYgKExJS0VMWSghIXJlc3VsdCkpCi0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAg
cmV0dXJuIGZyZWVMaXN0QWxsb2NhdGUoKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXZv
aWQgQWxsb2NhdG9yPFQ+OjpmcmVlKFQqIG9iamVjdCkKLXsKLSAgICBvYmplY3QtPn5UKCk7Ci0g
ICAgCi0gICAgdm9pZCoqIGNlbGwgPSBiaXR3aXNlX2Nhc3Q8dm9pZCoqPihvYmplY3QpOwotICAg
ICpjZWxsID0gbV9mcmVlTGlzdEhlYWQ7Ci0gICAgbV9mcmVlTGlzdEhlYWQgPSBjZWxsOwotfQot
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotdm9pZCBBbGxvY2F0b3I8VD46OmZyZWVBbGwoKQotewot
ICAgIGlmICghbV9yZWdpb25IZWFkKSB7Ci0gICAgICAgIEFTU0VSVCghbV9idW1wUmVtYWluaW5n
KTsKLSAgICAgICAgQVNTRVJUKCFtX2ZyZWVMaXN0SGVhZCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgCi0gICAgLy8gU2luY2UgdGhlIGNhbGxlciBpcyBvcHRpbmcgb3V0IG9mIGNhbGxp
bmcgdGhlIGRlc3RydWN0b3IgZm9yIGFueSBhbGxvY2F0ZWQgdGhpbmcsCi0gICAgLy8gd2UgaGF2
ZSB0d28gY2hvaWNlcywgcGx1cyBhIGNvbnRpbnV1bSBiZXR3ZWVuOiB3ZSBjYW4gZWl0aGVyIGp1
c3QgZGVsZXRlIGFsbCByZWdpb25zCi0gICAgLy8gKGkuZS4gY2FsbCByZXNldCgpKSwgb3Igd2Ug
Y2FuIG1ha2UgYWxsIHJlZ2lvbnMgYXZhaWxhYmxlIGZvciByZXVzZS4gV2UgZG8gc29tZXRoaW5n
Ci0gICAgLy8gdGhhdCBvcHRpbWl6ZXMgZm9yIChhKSBzcGVlZCBvZiBmcmVlQWxsKCksIChiKSB0
aGUgYXNzdW1wdGlvbiB0aGF0IGlmIHRoZSB1c2VyIGNhbGxzCi0gICAgLy8gZnJlZUFsbCgpIHRo
ZW4gdGhleSB3aWxsIHByb2JhYmx5IGJlIGNhbGxpbmcgYWxsb2NhdGUoKSBpbiB0aGUgbmVhciBm
dXR1cmUuIE5hbWVseSwKLSAgICAvLyB3ZSBmcmVlIGFsbCBidXQgb25lIHJlZ2lvbiwgYW5kIG1h
a2UgdGhlIHJlbWFpbmluZyByZWdpb24gYSBidW1wIGFsbG9jYXRpb24gcmVnaW9uLgotICAgIAot
ICAgIGZyZWVSZWdpb25zU3RhcnRpbmdBdChtX3JlZ2lvbkhlYWQtPm1fbmV4dCk7Ci0gICAgCi0g
ICAgbV9yZWdpb25IZWFkLT5tX25leHQgPSAwOwotICAgIG1fZnJlZUxpc3RIZWFkID0gMDsKLSAg
ICBzdGFydEJ1bXBpbmdJbihtX3JlZ2lvbkhlYWQpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBU
Pgotdm9pZCBBbGxvY2F0b3I8VD46OnJlc2V0KCkKLXsKLSAgICBmcmVlUmVnaW9uc1N0YXJ0aW5n
QXQobV9yZWdpb25IZWFkKTsKLSAgICAKLSAgICBtX3JlZ2lvbkhlYWQgPSAwOwotICAgIG1fZnJl
ZUxpc3RIZWFkID0gMDsKLSAgICBtX2J1bXBSZW1haW5pbmcgPSAwOwotfQotCi10ZW1wbGF0ZTx0
eXBlbmFtZSBUPgotdW5zaWduZWQgQWxsb2NhdG9yPFQ+OjppbmRleE9mKGNvbnN0IFQqIG9iamVj
dCkKLXsKLSAgICB1bnNpZ25lZCBudW1SZWdpb25zID0gMDsKLSAgICBmb3IgKFJlZ2lvbiogcmVn
aW9uID0gbV9yZWdpb25IZWFkOyByZWdpb247IHJlZ2lvbiA9IHJlZ2lvbi0+bV9uZXh0KQotICAg
ICAgICBudW1SZWdpb25zKys7Ci0gICAgdW5zaWduZWQgcmVnaW9uSW5kZXggPSAwOwotICAgIGZv
ciAoUmVnaW9uKiByZWdpb24gPSBtX3JlZ2lvbkhlYWQ7IHJlZ2lvbjsgcmVnaW9uID0gcmVnaW9u
LT5tX25leHQpIHsKLSAgICAgICAgaWYgKHJlZ2lvbi0+aXNJblRoaXNSZWdpb24ob2JqZWN0KSkK
LSAgICAgICAgICAgIHJldHVybiAobnVtUmVnaW9ucyAtIDEgLSByZWdpb25JbmRleCkgKiBSZWdp
b246Om51bWJlck9mVGhpbmdzUGVyUmVnaW9uKCkgKyAob2JqZWN0IC0gcmVnaW9uLT5kYXRhKCkp
OwotICAgICAgICByZWdpb25JbmRleCsrOwotICAgIH0KLSAgICBDUkFTSCgpOwotICAgIHJldHVy
biAwOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotQWxsb2NhdG9yPFQ+KiBBbGxvY2F0b3I8
VD46OmFsbG9jYXRvck9mKGNvbnN0IFQqIG9iamVjdCkKLXsKLSAgICByZXR1cm4gUmVnaW9uOjpy
ZWdpb25Gb3Iob2JqZWN0KS0+bV9hbGxvY2F0b3I7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+
Ci1BTFdBWVNfSU5MSU5FIHZvaWQqIEFsbG9jYXRvcjxUPjo6YnVtcEFsbG9jYXRlKCkKLXsKLSAg
ICBpZiAodW5zaWduZWQgcmVtYWluaW5nID0gbV9idW1wUmVtYWluaW5nKSB7Ci0gICAgICAgIHJl
bWFpbmluZy0tOwotICAgICAgICBtX2J1bXBSZW1haW5pbmcgPSByZW1haW5pbmc7Ci0gICAgICAg
IHJldHVybiBtX2J1bXBFbmQgLSAocmVtYWluaW5nICsgMSk7Ci0gICAgfQotICAgIHJldHVybiAw
OwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotdm9pZCogQWxsb2NhdG9yPFQ+OjpmcmVlTGlz
dEFsbG9jYXRlKCkKLXsKLSAgICB2b2lkKiogcmVzdWx0ID0gbV9mcmVlTGlzdEhlYWQ7Ci0gICAg
aWYgKFVOTElLRUxZKCFyZXN1bHQpKQotICAgICAgICByZXR1cm4gYWxsb2NhdGVTbG93KCk7Ci0g
ICAgbV9mcmVlTGlzdEhlYWQgPSBiaXR3aXNlX2Nhc3Q8dm9pZCoqPigqcmVzdWx0KTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotdm9pZCogQWxsb2NhdG9y
PFQ+OjphbGxvY2F0ZVNsb3coKQotewotICAgIEFTU0VSVCghbV9mcmVlTGlzdEhlYWQpOwotICAg
IEFTU0VSVCghbV9idW1wUmVtYWluaW5nKTsKLSAgICAKLSAgICBpZiAobG9nQ29tcGlsYXRpb25D
aGFuZ2VzKCkpCi0gICAgICAgIGRhdGFMb2coIkFsbG9jYXRpbmcgYW5vdGhlciBhbGxvY2F0b3Ig
cmVnaW9uLlxuIik7Ci0KLSAgICB2b2lkKiBhbGxvY2F0aW9uID0gZmFzdEFsaWduZWRNYWxsb2Mo
UmVnaW9uOjpzaXplKCksIFJlZ2lvbjo6c2l6ZSgpKTsKLSAgICBSZWdpb24qIHJlZ2lvbiA9IHN0
YXRpY19jYXN0PFJlZ2lvbio+KGFsbG9jYXRpb24pOwotICAgIHJlZ2lvbi0+bV9hbGxvY2F0aW9u
ID0gYWxsb2NhdGlvbjsKLSAgICByZWdpb24tPm1fYWxsb2NhdG9yID0gdGhpczsKLSAgICBzdGFy
dEJ1bXBpbmdJbihyZWdpb24pOwotICAgIHJlZ2lvbi0+bV9uZXh0ID0gbV9yZWdpb25IZWFkOwot
ICAgIG1fcmVnaW9uSGVhZCA9IHJlZ2lvbjsKLSAgICAKLSAgICB2b2lkKiByZXN1bHQgPSBidW1w
QWxsb2NhdGUoKTsKLSAgICBBU1NFUlQocmVzdWx0KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotdm9pZCBBbGxvY2F0b3I8VD46OmZyZWVSZWdpb25zU3Rh
cnRpbmdBdCh0eXBlbmFtZSBBbGxvY2F0b3I8VD46OlJlZ2lvbiogcmVnaW9uKQotewotICAgIHdo
aWxlIChyZWdpb24pIHsKLSAgICAgICAgUmVnaW9uKiBuZXh0UmVnaW9uID0gcmVnaW9uLT5tX25l
eHQ7Ci0gICAgICAgIGZhc3RBbGlnbmVkRnJlZShyZWdpb24tPm1fYWxsb2NhdGlvbik7Ci0gICAg
ICAgIHJlZ2lvbiA9IG5leHRSZWdpb247Ci0gICAgfQotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBU
Pgotdm9pZCBBbGxvY2F0b3I8VD46OnN0YXJ0QnVtcGluZ0luKHR5cGVuYW1lIEFsbG9jYXRvcjxU
Pjo6UmVnaW9uKiByZWdpb24pCi17Ci0gICAgbV9idW1wRW5kID0gcmVnaW9uLT5kYXRhKCkgKyBS
ZWdpb246Om51bWJlck9mVGhpbmdzUGVyUmVnaW9uKCk7Ci0gICAgbV9idW1wUmVtYWluaW5nID0g
UmVnaW9uOjpudW1iZXJPZlRoaW5nc1BlclJlZ2lvbigpOwotfQotCi19IH0gLy8gbmFtZXNwYWNl
IEpTQzo6REZHCi0KLSNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAJKHJldmlzaW9uIDIxNjUyOCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA4LDcg
KzEwOCw3IEBAIHN0YXRpYyBDb21waWxhdGlvblJlc3VsdCBjb21waWxlSW1wbCgKICAgICAgICAg
cmV0dXJuIENvbXBpbGF0aW9uRGVmZXJyZWQ7CiAgICAgfQogICAgIAotICAgIHBsYW4tPmNvbXBp
bGVJblRocmVhZCgqdm0uZGZnU3RhdGUsIDApOworICAgIHBsYW4tPmNvbXBpbGVJblRocmVhZChu
dWxscHRyKTsKICAgICByZXR1cm4gcGxhbi0+ZmluYWxpemVXaXRob3V0Tm90aWZ5aW5nQ2FsbGJh
Y2soKTsKIH0KICNlbHNlIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHcmFwaC5jcHAJKHJldmlzaW9uIDIxNjUyOCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OCwxMiArNjgsMTEg
QEAgc3RhdGljIGNvbnN0IGNoYXIqIGRmZ09wTmFtZXNbXSA9IHsKICN1bmRlZiBTVFJJTkdJWkVf
REZHX09QX0VOVU0KIH07CiAKLUdyYXBoOjpHcmFwaChWTSYgdm0sIFBsYW4mIHBsYW4sIExvbmdM
aXZlZFN0YXRlJiBsb25nTGl2ZWRTdGF0ZSkKK0dyYXBoOjpHcmFwaChWTSYgdm0sIFBsYW4mIHBs
YW4pCiAgICAgOiBtX3ZtKHZtKQogICAgICwgbV9wbGFuKHBsYW4pCiAgICAgLCBtX2NvZGVCbG9j
ayhtX3BsYW4uY29kZUJsb2NrKQogICAgICwgbV9wcm9maWxlZEJsb2NrKG1fY29kZUJsb2NrLT5h
bHRlcm5hdGl2ZSgpKQotICAgICwgbV9hbGxvY2F0b3IobG9uZ0xpdmVkU3RhdGUubV9hbGxvY2F0
b3IpCiAgICAgLCBtX2NmZyhzdGQ6Om1ha2VfdW5pcXVlPENGRz4oKnRoaXMpKQogICAgICwgbV9u
ZXh0TWFjaGluZUxvY2FsKDApCiAgICAgLCBtX2ZpeHBvaW50U3RhdGUoQmVmb3JlRml4cG9pbnQp
CkBAIC05NiwxNyArOTUsNiBAQCBHcmFwaDo6R3JhcGgoVk0mIHZtLCBQbGFuJiBwbGFuLCBMb25n
TGl2CiAKIEdyYXBoOjp+R3JhcGgoKQogewotICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4
ID0gbnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgtLTspIHsKLSAgICAgICAgQmFzaWNCbG9jayogYmxv
Y2sgPSB0aGlzLT5ibG9jayhibG9ja0luZGV4KTsKLSAgICAgICAgaWYgKCFibG9jaykKLSAgICAg
ICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGZvciAodW5zaWduZWQgcGhpSW5kZXggPSBibG9j
ay0+cGhpcy5zaXplKCk7IHBoaUluZGV4LS07KQotICAgICAgICAgICAgbV9hbGxvY2F0b3IuZnJl
ZShibG9jay0+cGhpc1twaGlJbmRleF0pOwotICAgICAgICBmb3IgKHVuc2lnbmVkIG5vZGVJbmRl
eCA9IGJsb2NrLT5zaXplKCk7IG5vZGVJbmRleC0tOykKLSAgICAgICAgICAgIG1fYWxsb2NhdG9y
LmZyZWUoYmxvY2stPmF0KG5vZGVJbmRleCkpOwotICAgIH0KLSAgICBtX2FsbG9jYXRvci5mcmVl
QWxsKCk7CiB9CiAKIGNvbnN0IGNoYXIgKkdyYXBoOjpvcE5hbWUoTm9kZVR5cGUgb3ApCkBAIC01
OTksMTkgKzU4Nyw2IEBAIHZvaWQgR3JhcGg6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCwgRHVtcEMK
ICAgICB9CiB9CiAKLXZvaWQgR3JhcGg6OmFkZE5vZGVUb01hcEJ5SW5kZXgoTm9kZSogbm9kZSkK
LXsKLSAgICBpZiAobV9ub2RlSW5kZXhGcmVlTGlzdC5pc0VtcHR5KCkpIHsKLSAgICAgICAgbm9k
ZS0+bV9pbmRleCA9IG1fbm9kZXNCeUluZGV4LnNpemUoKTsKLSAgICAgICAgbV9ub2Rlc0J5SW5k
ZXguYXBwZW5kKG5vZGUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIHVuc2lnbmVkIGlu
ZGV4ID0gbV9ub2RlSW5kZXhGcmVlTGlzdC50YWtlTGFzdCgpOwotICAgIG5vZGUtPm1faW5kZXgg
PSBpbmRleDsKLSAgICBBU1NFUlQoIW1fbm9kZXNCeUluZGV4W2luZGV4XSk7Ci0gICAgbV9ub2Rl
c0J5SW5kZXhbaW5kZXhdID0gbm9kZTsKLX0KLQogdm9pZCBHcmFwaDo6ZGVsZXRlTm9kZShOb2Rl
KiBub2RlKQogewogICAgIGlmICh2YWxpZGF0aW9uRW5hYmxlZCgpICYmIG1fZm9ybSA9PSBTU0Ep
IHsKQEAgLTYyMSw0OCArNTk2LDEyIEBAIHZvaWQgR3JhcGg6OmRlbGV0ZU5vZGUoTm9kZSogbm9k
ZSkKICAgICAgICAgfQogICAgIH0KIAotICAgIFJFTEVBU0VfQVNTRVJUKG1fbm9kZXNCeUluZGV4
W25vZGUtPm1faW5kZXhdID09IG5vZGUpOwotICAgIHVuc2lnbmVkIG5vZGVJbmRleCA9IG5vZGUt
Pm1faW5kZXg7Ci0gICAgbV9ub2Rlc0J5SW5kZXhbbm9kZUluZGV4XSA9IG51bGxwdHI7Ci0gICAg
bV9ub2RlSW5kZXhGcmVlTGlzdC5hcHBlbmQobm9kZUluZGV4KTsKLQotICAgIG1fYWxsb2NhdG9y
LmZyZWUobm9kZSk7CisgICAgbV9ub2Rlcy5yZW1vdmUobm9kZSk7CiB9CiAKIHZvaWQgR3JhcGg6
OnBhY2tOb2RlSW5kaWNlcygpCiB7Ci0gICAgaWYgKG1fbm9kZUluZGV4RnJlZUxpc3QuaXNFbXB0
eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICB1bnNpZ25lZCBob2xlSW5kZXggPSAwOwotICAg
IHVuc2lnbmVkIGVuZEluZGV4ID0gbV9ub2Rlc0J5SW5kZXguc2l6ZSgpOwotCi0gICAgd2hpbGUg
KHRydWUpIHsKLSAgICAgICAgd2hpbGUgKGhvbGVJbmRleCA8IGVuZEluZGV4ICYmIG1fbm9kZXNC
eUluZGV4W2hvbGVJbmRleF0pCi0gICAgICAgICAgICArK2hvbGVJbmRleDsKLQotICAgICAgICBp
ZiAoaG9sZUluZGV4ID09IGVuZEluZGV4KQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIEFT
U0VSVChob2xlSW5kZXggPCBtX25vZGVzQnlJbmRleC5zaXplKCkpOwotICAgICAgICBBU1NFUlQo
IW1fbm9kZXNCeUluZGV4W2hvbGVJbmRleF0pOwotCi0gICAgICAgIGRvIHsKLSAgICAgICAgICAg
IC0tZW5kSW5kZXg7Ci0gICAgICAgIH0gd2hpbGUgKCFtX25vZGVzQnlJbmRleFtlbmRJbmRleF0g
JiYgZW5kSW5kZXggPiBob2xlSW5kZXgpOwotCi0gICAgICAgIGlmIChob2xlSW5kZXggPT0gZW5k
SW5kZXgpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgQVNTRVJUKGVuZEluZGV4ID4gaG9s
ZUluZGV4KTsKLSAgICAgICAgQVNTRVJUKG1fbm9kZXNCeUluZGV4W2VuZEluZGV4XSk7Ci0KLSAg
ICAgICAgYXV0byYgdmFsdWUgPSBtX25vZGVzQnlJbmRleFtlbmRJbmRleF07Ci0gICAgICAgIHZh
bHVlLT5tX2luZGV4ID0gaG9sZUluZGV4OwotICAgICAgICBtX25vZGVzQnlJbmRleFtob2xlSW5k
ZXhdID0gV1RGTW92ZSh2YWx1ZSk7Ci0gICAgICAgICsraG9sZUluZGV4OwotICAgIH0KLQotICAg
IG1fbm9kZUluZGV4RnJlZUxpc3QucmVzaXplKDApOwotICAgIG1fbm9kZXNCeUluZGV4LnJlc2l6
ZShlbmRJbmRleCk7CisgICAgbV9ub2Rlcy5wYWNrSW5kaWNlcygpOwogfQogCiB2b2lkIEdyYXBo
OjpkZXRocmVhZCgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCShyZXZp
c2lvbiAyMTY1MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMzLDkgKzMzLDcgQEAKICNpbmNsdWRlICJERkdBcmd1bWVudFBvc2l0
aW9uLmgiCiAjaW5jbHVkZSAiREZHQmFzaWNCbG9jay5oIgogI2luY2x1ZGUgIkRGR0Zyb3plblZh
bHVlLmgiCi0jaW5jbHVkZSAiREZHTG9uZ0xpdmVkU3RhdGUuaCIKICNpbmNsdWRlICJERkdOb2Rl
LmgiCi0jaW5jbHVkZSAiREZHTm9kZUFsbG9jYXRvci5oIgogI2luY2x1ZGUgIkRGR1BsYW4uaCIK
ICNpbmNsdWRlICJERkdQcm9wZXJ0eVR5cGVLZXkuaCIKICNpbmNsdWRlICJERkdTY2FubmFibGUu
aCIKQEAgLTEyNiw3ICsxMjQsNyBAQCBlbnVtIEFkZFNwZWN1bGF0aW9uTW9kZSB7CiAvLyBOb2Rl
cyB0aGF0IGFyZSAnZGVhZCcgcmVtYWluIGluIHRoZSB2ZWN0b3Igd2l0aCByZWZDb3VudCAwLgog
Y2xhc3MgR3JhcGggOiBwdWJsaWMgdmlydHVhbCBTY2FubmFibGUgewogcHVibGljOgotICAgIEdy
YXBoKFZNJiwgUGxhbiYsIExvbmdMaXZlZFN0YXRlJik7CisgICAgR3JhcGgoVk0mLCBQbGFuJik7
CiAgICAgfkdyYXBoKCk7CiAgICAgCiAgICAgdm9pZCBjaGFuZ2VDaGlsZChFZGdlJiBlZGdlLCBO
b2RlKiBuZXdOb2RlKQpAQCAtMTg2LDIyICsxODQsMjIgQEAgcHVibGljOgogICAgIHRlbXBsYXRl
PHR5cGVuYW1lLi4uIFBhcmFtcz4KICAgICBOb2RlKiBhZGROb2RlKFBhcmFtcy4uLiBwYXJhbXMp
CiAgICAgewotICAgICAgICBOb2RlKiBub2RlID0gbmV3IChtX2FsbG9jYXRvcikgTm9kZShwYXJh
bXMuLi4pOwotICAgICAgICBhZGROb2RlVG9NYXBCeUluZGV4KG5vZGUpOworICAgICAgICBOb2Rl
KiBub2RlID0gbmV3IE5vZGUocGFyYW1zLi4uKTsKKyAgICAgICAgbV9ub2Rlcy5hZGQoc3RkOjp1
bmlxdWVfcHRyPE5vZGU+KG5vZGUpKTsKICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgfQogICAg
IHRlbXBsYXRlPHR5cGVuYW1lLi4uIFBhcmFtcz4KICAgICBOb2RlKiBhZGROb2RlKFNwZWN1bGF0
ZWRUeXBlIHR5cGUsIFBhcmFtcy4uLiBwYXJhbXMpCiAgICAgewotICAgICAgICBOb2RlKiBub2Rl
ID0gbmV3IChtX2FsbG9jYXRvcikgTm9kZShwYXJhbXMuLi4pOworICAgICAgICBOb2RlKiBub2Rl
ID0gbmV3IE5vZGUocGFyYW1zLi4uKTsKICAgICAgICAgbm9kZS0+cHJlZGljdCh0eXBlKTsKLSAg
ICAgICAgYWRkTm9kZVRvTWFwQnlJbmRleChub2RlKTsKKyAgICAgICAgbV9ub2Rlcy5hZGQoc3Rk
Ojp1bmlxdWVfcHRyPE5vZGU+KG5vZGUpKTsKICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgfQog
CiAgICAgdm9pZCBkZWxldGVOb2RlKE5vZGUqKTsKLSAgICB1bnNpZ25lZCBtYXhOb2RlQ291bnQo
KSBjb25zdCB7IHJldHVybiBtX25vZGVzQnlJbmRleC5zaXplKCk7IH0KLSAgICBOb2RlKiBub2Rl
QXQodW5zaWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZXNCeUluZGV4W2luZGV4XTsg
fQorICAgIHVuc2lnbmVkIG1heE5vZGVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZXMuc2l6
ZSgpOyB9CisgICAgTm9kZSogbm9kZUF0KHVuc2lnbmVkIGluZGV4KSBjb25zdCB7IHJldHVybiBt
X25vZGVzW2luZGV4XTsgfQogICAgIHZvaWQgcGFja05vZGVJbmRpY2VzKCk7CiAKICAgICB2b2lk
IGRldGhyZWFkKCk7CkBAIC05MjMsOCArOTIxLDYgQEAgcHVibGljOgogICAgIENvZGVCbG9jayog
bV9jb2RlQmxvY2s7CiAgICAgQ29kZUJsb2NrKiBtX3Byb2ZpbGVkQmxvY2s7CiAgICAgCi0gICAg
Tm9kZUFsbG9jYXRvciYgbV9hbGxvY2F0b3I7Ci0KICAgICBWZWN0b3I8IFJlZlB0cjxCYXNpY0Js
b2NrPiAsIDg+IG1fYmxvY2tzOwogICAgIFZlY3RvcjxFZGdlLCAxNj4gbV92YXJBcmdDaGlsZHJl
bjsKIApAQCAtMTAyMCw4ICsxMDE2LDYgQEAgcHVibGljOgogICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1
cmUgc3ltYm9sU3RydWN0dXJlOwogCiBwcml2YXRlOgotICAgIHZvaWQgYWRkTm9kZVRvTWFwQnlJ
bmRleChOb2RlKik7Ci0KICAgICBib29sIGlzU3RyaW5nUHJvdG90eXBlTWV0aG9kU2FuZShKU0ds
b2JhbE9iamVjdCosIFVuaXF1ZWRTdHJpbmdJbXBsKik7CiAKICAgICB2b2lkIGhhbmRsZVN1Y2Nl
c3NvcihWZWN0b3I8QmFzaWNCbG9jayosIDE2PiYgd29ya2xpc3QsIEJhc2ljQmxvY2sqLCBCYXNp
Y0Jsb2NrKiBzdWNjZXNzb3IpOwpAQCAtMTA1NCw4ICsxMDQ4LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgcmV0dXJuIGJ5dGVjb2RlQ2FuVHJ1bmNhdGVJbnRlZ2VyKGFkZC0+YXJpdGhOb2RlRmxhZ3Mo
KSkgPyBTcGVjdWxhdGVJbnQzMkFuZFRydW5jYXRlQ29uc3RhbnRzIDogRG9udFNwZWN1bGF0ZUlu
dDMyOwogICAgIH0KIAotICAgIFZlY3RvcjxOb2RlKiwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+
IG1fbm9kZXNCeUluZGV4OwotICAgIFZlY3Rvcjx1bnNpZ25lZCwgMCwgVW5zYWZlVmVjdG9yT3Zl
cmZsb3c+IG1fbm9kZUluZGV4RnJlZUxpc3Q7CisgICAgQjM6OlNwYXJzZUNvbGxlY3Rpb248Tm9k
ZT4gbV9ub2RlczsKICAgICBTZWdtZW50ZWRWZWN0b3I8UmVnaXN0ZXJlZFN0cnVjdHVyZVNldCwg
MTY+IG1fc3RydWN0dXJlU2V0czsKIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTG9uZ0xpdmVkU3RhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTG9uZ0xpdmVkU3RhdGUuY3BwCShyZXZpc2lvbiAyMTY1MjgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xvbmdMaXZlZFN0YXRlLmNwcAkobm9uZXhpc3RlbnQp
CkBAIC0xLDUxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkRGR0xvbmdMaXZlZFN0YXRl
LmgiCi0KLSNpZiBFTkFCTEUoREZHX0pJVCkKLQotI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKLQot
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewotCi1Mb25nTGl2ZWRTdGF0ZTo6TG9uZ0xp
dmVkU3RhdGUoKQotewotfQotCi1Mb25nTGl2ZWRTdGF0ZTo6fkxvbmdMaXZlZFN0YXRlKCkKLXsK
LX0KLQotdm9pZCBMb25nTGl2ZWRTdGF0ZTo6c2hyaW5rVG9GaXQoKQotewotICAgIG1fYWxsb2Nh
dG9yLnJlc2V0KCk7Ci19Ci0KLX0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKLQotI2VuZGlmIC8v
IEVOQUJMRShERkdfSklUKQotCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xv
bmdMaXZlZFN0YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdMb25nTGl2ZWRTdGF0ZS5oCShyZXZpc2lvbiAyMTY1MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0xvbmdMaXZlZFN0YXRlLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw0OSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNwcmFn
bWEgb25jZQotCi0jaWYgRU5BQkxFKERGR19KSVQpCi0KLSNpbmNsdWRlICJERkdOb2RlQWxsb2Nh
dG9yLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29w
eWFibGUuaD4KLQotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewotCi1jbGFzcyBMb25n
TGl2ZWRTdGF0ZSB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7IFdURl9NQUtFX05PTkNP
UFlBQkxFKExvbmdMaXZlZFN0YXRlKTsKLXB1YmxpYzoKLSAgICBMb25nTGl2ZWRTdGF0ZSgpOwot
ICAgIH5Mb25nTGl2ZWRTdGF0ZSgpOwotICAgIAotICAgIHZvaWQgc2hyaW5rVG9GaXQoKTsKLSAg
ICAKLSAgICBOb2RlQWxsb2NhdG9yIG1fYWxsb2NhdG9yOwotfTsKLQotfSB9IC8vIG5hbWVzcGFj
ZSBKU0M6OkRGRwotCi0jZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMjE2NTI4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKIAog
I2lmIEVOQUJMRShERkdfSklUKQogCisjaW5jbHVkZSAiQjNTcGFyc2VDb2xsZWN0aW9uLmgiCiAj
aW5jbHVkZSAiQmFzaWNCbG9ja0xvY2F0aW9uLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAj
aW5jbHVkZSAiREZHQWJzdHJhY3RWYWx1ZS5oIgpAQCAtMjQ2LDYgKzI0Nyw3IEBAIHN0cnVjdCBD
YWxsRE9NR2V0dGVyRGF0YSB7CiAvLwogLy8gTm9kZSByZXByZXNlbnRzIGEgc2luZ2xlIG9wZXJh
dGlvbiBpbiB0aGUgZGF0YSBmbG93IGdyYXBoLgogc3RydWN0IE5vZGUgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBjaGFyIEhhc2hTZXRU
ZW1wbGF0ZUluc3RhbnRpYXRpb25TdHJpbmdbXTsKICAgICAKQEAgLTI1MzMsNyArMjUzNSw3IEBA
IHB1YmxpYzoKICAgICBBZGphY2VuY3lMaXN0IGNoaWxkcmVuOwogCiBwcml2YXRlOgotICAgIGZy
aWVuZCBjbGFzcyBHcmFwaDsKKyAgICBmcmllbmQgY2xhc3MgQjM6OlNwYXJzZUNvbGxlY3Rpb248
Tm9kZT47CiAKICAgICB1bnNpZ25lZCBtX2luZGV4IHsgc3RkOjpudW1lcmljX2xpbWl0czx1bnNp
Z25lZD46Om1heCgpIH07CiAgICAgdW5zaWduZWQgbV9vcCA6IDEwOyAvLyByZWFsIHR5cGUgaXMg
Tm9kZVR5cGUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZUFsbG9jYXRv
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZUFsbG9j
YXRvci5oCShyZXZpc2lvbiAyMTY1MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGVBbGxvY2F0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNiBAQAogCiAjaWYg
RU5BQkxFKERGR19KSVQpCiAKLSNpbmNsdWRlICJERkdBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJE
RkdOb2RlLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAkocmV2aXNpb24gMjE2NTI4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY5LDcg
KzE2OSw3IEBAIGJvb2wgUGxhbjo6cmVwb3J0Q29tcGlsZVRpbWVzKCkgY29uc3QKICAgICAgICAg
fHwgKE9wdGlvbnM6OnJlcG9ydEZUTENvbXBpbGVUaW1lcygpICYmIGlzRlRMKG1vZGUpKTsKIH0K
IAotdm9pZCBQbGFuOjpjb21waWxlSW5UaHJlYWQoTG9uZ0xpdmVkU3RhdGUmIGxvbmdMaXZlZFN0
YXRlLCBUaHJlYWREYXRhKiB0aHJlYWREYXRhKQordm9pZCBQbGFuOjpjb21waWxlSW5UaHJlYWQo
VGhyZWFkRGF0YSogdGhyZWFkRGF0YSkKIHsKICAgICB0aGlzLT50aHJlYWREYXRhID0gdGhyZWFk
RGF0YTsKICAgICAKQEAgLTE4NSw3ICsxODUsNyBAQCB2b2lkIFBsYW46OmNvbXBpbGVJblRocmVh
ZChMb25nTGl2ZWRTdGF0CiAgICAgaWYgKGxvZ0NvbXBpbGF0aW9uQ2hhbmdlcyhtb2RlKSB8fCBP
cHRpb25zOjpyZXBvcnRERkdQaGFzZVRpbWVzKCkpCiAgICAgICAgIGRhdGFMb2coIkRGRyhQbGFu
KSBjb21waWxpbmcgIiwgKmNvZGVCbG9jaywgIiB3aXRoICIsIG1vZGUsICIsIG51bWJlciBvZiBp
bnN0cnVjdGlvbnMgPSAiLCBjb2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKSwgIlxuIik7CiAK
LSAgICBDb21waWxhdGlvblBhdGggcGF0aCA9IGNvbXBpbGVJblRocmVhZEltcGwobG9uZ0xpdmVk
U3RhdGUpOworICAgIENvbXBpbGF0aW9uUGF0aCBwYXRoID0gY29tcGlsZUluVGhyZWFkSW1wbCgp
OwogCiAgICAgUkVMRUFTRV9BU1NFUlQocGF0aCA9PSBDYW5jZWxQYXRoIHx8IGZpbmFsaXplcik7
CiAgICAgUkVMRUFTRV9BU1NFUlQoKHBhdGggPT0gQ2FuY2VsUGF0aCkgPT0gKHN0YWdlID09IENh
bmNlbGxlZCkpOwpAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgUGxhbjo6Y29tcGlsZUluVGhyZWFk
KExvbmdMaXZlZFN0YXQKICAgICB9CiB9CiAKLVBsYW46OkNvbXBpbGF0aW9uUGF0aCBQbGFuOjpj
b21waWxlSW5UaHJlYWRJbXBsKExvbmdMaXZlZFN0YXRlJiBsb25nTGl2ZWRTdGF0ZSkKK1BsYW46
OkNvbXBpbGF0aW9uUGF0aCBQbGFuOjpjb21waWxlSW5UaHJlYWRJbXBsKCkKIHsKICAgICBjbGVh
bk11c3RIYW5kbGVWYWx1ZXNJZk5lY2Vzc2FyeSgpOwogICAgIApAQCAtMjQ1LDcgKzI0NSw3IEBA
IFBsYW46OkNvbXBpbGF0aW9uUGF0aCBQbGFuOjpjb21waWxlSW5UaHIKICAgICAgICAgZGF0YUxv
ZygiXG4iKTsKICAgICB9CiAgICAgCi0gICAgR3JhcGggZGZnKCp2bSwgKnRoaXMsIGxvbmdMaXZl
ZFN0YXRlKTsKKyAgICBHcmFwaCBkZmcoKnZtLCAqdGhpcyk7CiAgICAgCiAgICAgaWYgKCFwYXJz
ZShkZmcpKSB7CiAgICAgICAgIGZpbmFsaXplciA9IHN0ZDo6bWFrZV91bmlxdWU8RmFpbGVkRmlu
YWxpemVyPigqdGhpcyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uaAkocmV2
aXNpb24gMjE2NTI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDYgQEAgY2xhc3MgU2xvdFZpc2l0b3I7CiAKIG5hbWVz
cGFjZSBERkcgewogCi1jbGFzcyBMb25nTGl2ZWRTdGF0ZTsKIGNsYXNzIFRocmVhZERhdGE7CiAK
ICNpZiBFTkFCTEUoREZHX0pJVCkKQEAgLTU5LDcgKzU4LDcgQEAgc3RydWN0IFBsYW4gOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZQogICAgICAgICBjb25zdCBPcGVyYW5kczxKU1ZhbHVlPiYg
bXVzdEhhbmRsZVZhbHVlcyk7CiAgICAgflBsYW4oKTsKIAotICAgIHZvaWQgY29tcGlsZUluVGhy
ZWFkKExvbmdMaXZlZFN0YXRlJiwgVGhyZWFkRGF0YSopOworICAgIHZvaWQgY29tcGlsZUluVGhy
ZWFkKFRocmVhZERhdGEqKTsKICAgICAKICAgICBDb21waWxhdGlvblJlc3VsdCBmaW5hbGl6ZVdp
dGhvdXROb3RpZnlpbmdDYWxsYmFjaygpOwogICAgIHZvaWQgZmluYWxpemVBbmROb3RpZnlDYWxs
YmFjaygpOwpAQCAtMTIyLDcgKzEyMSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCByZXBvcnRDb21w
aWxlVGltZXMoKSBjb25zdDsKICAgICAKICAgICBlbnVtIENvbXBpbGF0aW9uUGF0aCB7IEZhaWxQ
YXRoLCBERkdQYXRoLCBGVExQYXRoLCBDYW5jZWxQYXRoIH07Ci0gICAgQ29tcGlsYXRpb25QYXRo
IGNvbXBpbGVJblRocmVhZEltcGwoTG9uZ0xpdmVkU3RhdGUmKTsKKyAgICBDb21waWxhdGlvblBh
dGggY29tcGlsZUluVGhyZWFkSW1wbCgpOwogICAgIAogICAgIGJvb2wgaXNTdGlsbFZhbGlkKCk7
CiAgICAgdm9pZCByZWFsbHlBZGQoQ29tbW9uRGF0YSopOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAJKHJldmlzaW9uIDIxNjUyOCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3
ICsyNyw2IEBACiAjaW5jbHVkZSAiREZHV29ya2xpc3QuaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9j
ay5oIgotI2luY2x1ZGUgIkRGR0xvbmdMaXZlZFN0YXRlLmgiCiAjaW5jbHVkZSAiREZHU2FmZXBv
aW50LmgiCiAjaW5jbHVkZSAiRGVmZXJHQy5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKQEAg
LTEwOSw3ICsxMDgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICAgICBkYXRhTG9nKCJIZWFwIGlz
IHN0b3BlZCBidXQgaGVyZSB3ZSBhcmUhICgxKVxuIik7CiAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9Ci0gICAgICAgIG1fcGxhbi0+Y29tcGlsZUlu
VGhyZWFkKCptX2xvbmdMaXZlZFN0YXRlLCAmbV9kYXRhKTsKKyAgICAgICAgbV9wbGFuLT5jb21w
aWxlSW5UaHJlYWQoJm1fZGF0YSk7CiAgICAgICAgIGlmIChtX3BsYW4tPnN0YWdlICE9IFBsYW46
OkNhbmNlbGxlZCkgewogICAgICAgICAgICAgaWYgKG1fcGxhbi0+dm0tPmhlYXAuY29sbGVjdG9y
QmVsaWV2ZXNUaGF0VGhlV29ybGRJc1N0b3BwZWQoKSkgewogICAgICAgICAgICAgICAgIGRhdGFM
b2coIkhlYXAgaXMgc3RvcHBlZCBidXQgaGVyZSB3ZSBhcmUhICgyKVxuIik7CkBAIC0xNDcsNyAr
MTQ2LDYgQEAgcHJvdGVjdGVkOgogICAgICAgICAgICAgVGhyZWFkOjpjdXJyZW50KCkuY2hhbmdl
UHJpb3JpdHkobV9yZWxhdGl2ZVByaW9yaXR5KTsKICAgICAgICAgCiAgICAgICAgIG1fY29tcGls
YXRpb25TY29wZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q29tcGlsYXRpb25TY29wZT4oKTsKLSAgICAg
ICAgbV9sb25nTGl2ZWRTdGF0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8TG9uZ0xpdmVkU3RhdGU+KCk7
CiAgICAgfQogICAgIAogICAgIHZvaWQgdGhyZWFkSXNTdG9wcGluZyhjb25zdCBBYnN0cmFjdExv
Y2tlciYpIG92ZXJyaWRlCkBAIC0xNjAsNyArMTU4LDYgQEAgcHJvdGVjdGVkOgogICAgICAgICBB
U1NFUlQoIW1fcGxhbik7CiAgICAgICAgIAogICAgICAgICBtX2NvbXBpbGF0aW9uU2NvcGUgPSBu
dWxscHRyOwotICAgICAgICBtX2xvbmdMaXZlZFN0YXRlID0gbnVsbHB0cjsKICAgICAgICAgbV9w
bGFuID0gbnVsbHB0cjsKICAgICB9CiAgICAgCkBAIC0xNjksNyArMTY2LDYgQEAgcHJpdmF0ZToK
ICAgICBUaHJlYWREYXRhJiBtX2RhdGE7CiAgICAgaW50IG1fcmVsYXRpdmVQcmlvcml0eTsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8Q29tcGlsYXRpb25TY29wZT4gbV9jb21waWxhdGlvblNjb3BlOwot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxMb25nTGl2ZWRTdGF0ZT4gbV9sb25nTGl2ZWRTdGF0ZTsKICAg
ICBSZWZQdHI8UGxhbj4gbV9wbGFuOwogfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmNwcAkocmV2aXNpb24gMjE2NTI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw2IEBACiAjaW5jbHVkZSAi
Q29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJDb21tb25TbG93UGF0aHMuaCIKICNpbmNs
dWRlICJDdXN0b21HZXR0ZXJTZXR0ZXIuaCIKLSNpbmNsdWRlICJERkdMb25nTGl2ZWRTdGF0ZS5o
IgogI2luY2x1ZGUgIkRGR1dvcmtsaXN0LmgiCiAjaW5jbHVkZSAiRGlzYXNzZW1ibGVyLmgiCiAj
aW5jbHVkZSAiRXJyb3JJbnN0YW5jZS5oIgpAQCAtMzE1LDExICszMTQsNiBAQCBWTTo6Vk0oVk1U
eXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAKICAgICBjYWxsRnJhbWVGb3JDYXRjaCA9
IG51bGxwdHI7CiAKLSNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBpZiAoY2FuVXNlSklUKCkpCi0g
ICAgICAgIGRmZ1N0YXRlID0gc3RkOjptYWtlX3VuaXF1ZTxERkc6OkxvbmdMaXZlZFN0YXRlPigp
OwotI2VuZGlmCi0gICAgCiAgICAgLy8gSW5pdGlhbGl6ZSB0aGlzIGxhc3QsIGFzIGEgZnJlZSB3
YXkgb2YgYXNzZXJ0aW5nIHRoYXQgVk0gaW5pdGlhbGl6YXRpb24gaXRzZWxmCiAgICAgLy8gd29u
J3QgdXNlIHRoaXMuCiAgICAgbV90eXBlZEFycmF5Q29udHJvbGxlciA9IGFkb3B0UmVmKG5ldyBT
aW1wbGVUeXBlZEFycmF5Q29udHJvbGxlcigpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uaAkocmV2aXNpb24gMjE2NTI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uaAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDExICsxNDEsNiBAQCBjbGFzcyBXYXRjaGRv
ZzsKIGNsYXNzIFdhdGNocG9pbnQ7CiBjbGFzcyBXYXRjaHBvaW50U2V0OwogCi0jaWYgRU5BQkxF
KERGR19KSVQpCi1uYW1lc3BhY2UgREZHIHsKLWNsYXNzIExvbmdMaXZlZFN0YXRlOwotfQotI2Vu
ZGlmIC8vIEVOQUJMRShERkdfSklUKQogI2lmIEVOQUJMRShGVExfSklUKQogbmFtZXNwYWNlIEZU
TCB7CiBjbGFzcyBUaHVua3M7CkBAIC0zMDAsMTAgKzI5NSw2IEBAIHB1YmxpYzoKICAgICBKU1dl
YkFzc2VtYmx5Q29kZUJsb2NrU3Vic3BhY2Ugd2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZTsKICNl
bmRpZgogCi0jaWYgRU5BQkxFKERGR19KSVQpCi0gICAgc3RkOjp1bmlxdWVfcHRyPERGRzo6TG9u
Z0xpdmVkU3RhdGU+IGRmZ1N0YXRlOwotI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQotCiAgICAg
Vk1UeXBlIHZtVHlwZTsKICAgICBDbGllbnREYXRhKiBjbGllbnREYXRhOwogICAgIFZNRW50cnlG
cmFtZSogdG9wVk1FbnRyeUZyYW1lOwo=
</data>
<flag name="review"
          id="331124"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>