<?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>148666</bug_id>
          
          <creation_ts>2015-08-31 18:05:38 -0700</creation_ts>
          <short_desc>Add support for Callee-Saves registers</short_desc>
          <delta_ts>2024-11-26 19:06:32 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>Other</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=171266</see_also>
          <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>149044</dependson>
    
    <dependson>149061</dependson>
    
    <dependson>151486</dependson>
    
    <dependson>151855</dependson>
          <blocked>148661</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Saboff">msaboff</reporter>
          <assigned_to name="Michael Saboff">msaboff</assigned_to>
          <cc>basile_clement</cc>
    
    <cc>commit-queue</cc>
    
    <cc>izma143</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1122401</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-08-31 18:05:38 -0700</bug_when>
    <thetext>Save and restore platform callee save registers.  We only do this for 64 bit builds as it isn&apos;t needed nor expected to be profitable for 32 bit builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122403</commentid>
    <comment_count>1</comment_count>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-08-31 18:07:55 -0700</bug_when>
    <thetext>*** Bug 146845 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122405</commentid>
    <comment_count>2</comment_count>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-08-31 18:08:17 -0700</bug_when>
    <thetext>*** Bug 147639 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122407</commentid>
    <comment_count>3</comment_count>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-08-31 18:08:21 -0700</bug_when>
    <thetext>*** Bug 146854 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122409</commentid>
    <comment_count>4</comment_count>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-08-31 18:08:52 -0700</bug_when>
    <thetext>*** Bug 148076 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122411</commentid>
    <comment_count>5</comment_count>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-08-31 18:09:56 -0700</bug_when>
    <thetext>*** Bug 148167 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122413</commentid>
    <comment_count>6</comment_count>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-08-31 18:10:10 -0700</bug_when>
    <thetext>*** Bug 148246 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122417</commentid>
    <comment_count>7</comment_count>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-08-31 18:10:42 -0700</bug_when>
    <thetext>*** Bug 147747 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122419</commentid>
    <comment_count>8</comment_count>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-08-31 18:10:46 -0700</bug_when>
    <thetext>*** Bug 148345 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122421</commentid>
    <comment_count>9</comment_count>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-08-31 18:11:03 -0700</bug_when>
    <thetext>*** Bug 148099 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122423</commentid>
    <comment_count>10</comment_count>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-08-31 18:11:45 -0700</bug_when>
    <thetext>*** Bug 148494 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122425</commentid>
    <comment_count>11</comment_count>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-08-31 18:12:48 -0700</bug_when>
    <thetext>*** Bug 148547 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122427</commentid>
    <comment_count>12</comment_count>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-08-31 18:13:03 -0700</bug_when>
    <thetext>*** Bug 148652 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1124656</commentid>
    <comment_count>13</comment_count>
      <attachid>260867</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-09-09 12:27:38 -0700</bug_when>
    <thetext>Created attachment 260867
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1124657</commentid>
    <comment_count>14</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-09-09 12:29:22 -0700</bug_when>
    <thetext>Performance results look neutral overall.

Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, JSRegress, AsmBench, and CompressionBench on msaboff-pro (MacPro5,1).

VMs tested:
&quot;Baseline&quot; at /Volumes/Data/src/webkit.baseline/WebKitBuild/Release/JavaScriptCore.framework/Versions/A/Resources/jsc
&quot;CalleeSaves&quot; at /Volumes/Data/src/webkit/WebKitBuild/Release/JavaScriptCore.framework/Versions/A/Resources/jsc

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

                                                         Baseline                CalleeSaves                                    
SunSpider:
   3d-cube                                            7.9928+-0.4418     ?      8.0573+-0.3016        ?
   3d-morph                                           7.8198+-0.2064     ?      8.0786+-0.1460        ? might be 1.0331x slower
   3d-raytrace                                        8.6527+-0.3001     ?      8.9567+-0.3644        ? might be 1.0351x slower
   access-binary-trees                                3.0626+-0.1847     ?      3.1015+-0.2635        ? might be 1.0127x slower
   access-fannkuch                                    8.5485+-0.2050            8.5142+-0.1279        
   access-nbody                                       4.2827+-0.0651     ?      4.3107+-0.1841        ?
   access-nsieve                                      4.5638+-0.0972     ?      4.6740+-0.0964        ? might be 1.0241x slower
   bitops-3bit-bits-in-byte                           1.6876+-0.1365            1.6575+-0.0725          might be 1.0181x faster
   bitops-bits-in-byte                                5.6458+-0.1243            5.6010+-0.1283        
   bitops-bitwise-and                                 2.9431+-0.1517            2.7435+-0.1104          might be 1.0728x faster
   bitops-nsieve-bits                                 4.5085+-0.1361            4.3542+-0.1537          might be 1.0355x faster
   controlflow-recursive                              3.0344+-0.1344     ?      3.3735+-0.2282        ? might be 1.1118x slower
   crypto-aes                                         6.0410+-0.0531     !      6.4158+-0.2965        ! definitely 1.0620x slower
   crypto-md5                                         3.8271+-0.2802     ?      4.0269+-0.0675        ? might be 1.0522x slower
   crypto-sha1                                        3.1725+-0.1627     !      3.4653+-0.0666        ! definitely 1.0923x slower
   date-format-tofte                                 12.5102+-0.3102     ?     12.8682+-0.1895        ? might be 1.0286x slower
   date-format-xparb                                  7.4270+-0.3769     ?      7.8649+-0.4083        ? might be 1.0590x slower
   math-cordic                                        4.1630+-0.0970     !      4.4160+-0.0998        ! definitely 1.0608x slower
   math-partial-sums                                  9.9321+-0.2271     ?      9.9799+-0.2850        ?
   math-spectral-norm                                 2.8958+-0.1702     ?      3.0941+-0.2078        ? might be 1.0685x slower
   regexp-dna                                        10.4353+-0.2928            9.9435+-0.5145          might be 1.0495x faster
   string-base64                                      6.4023+-0.2319     ?      6.7002+-0.1694        ? might be 1.0465x slower
   string-fasta                                       9.2318+-0.2312     ?      9.2417+-0.1361        ?
   string-tagcloud                                   13.4342+-0.0910           13.4091+-0.4617        
   string-unpack-code                                28.4358+-0.8923           28.2206+-0.7995        
   string-validate-input                              6.7042+-0.1720     ?      6.8822+-0.2946        ? might be 1.0266x slower

   &lt;arithmetic&gt;                                       7.2059+-0.0608     ?      7.3058+-0.0908        ? might be 1.0139x slower

                                                         Baseline                CalleeSaves                                    
LongSpider:
   3d-cube                                         1229.5276+-4.5635     ^   1214.8652+-4.2533        ^ definitely 1.0121x faster
   3d-morph                                        1958.8052+-0.4651         1955.5404+-6.7737        
   3d-raytrace                                     1069.6393+-22.1067    ?   1072.5795+-6.7612        ?
   access-binary-trees                             1458.8109+-7.8321         1456.6381+-4.0488        
   access-fannkuch                                  475.9203+-22.1500         465.2122+-8.4168          might be 1.0230x faster
   access-nbody                                    1063.2477+-0.4884     !   1066.5579+-0.3716        ! definitely 1.0031x slower
   access-nsieve                                    692.5743+-5.8187     ?    702.3073+-10.7159       ? might be 1.0141x slower
   bitops-3bit-bits-in-byte                          46.0367+-0.3634     ?     46.2672+-0.3989        ?
   bitops-bits-in-byte                              338.2800+-1.5229     !    353.9699+-0.9432        ! definitely 1.0464x slower
   bitops-nsieve-bits                               651.5029+-1.4822          649.5268+-4.0606        
   controlflow-recursive                            778.1221+-1.1681     ^    761.5012+-1.6372        ^ definitely 1.0218x faster
   crypto-aes                                       967.4644+-4.5063     ^    916.2629+-6.4824        ^ definitely 1.0559x faster
   crypto-md5                                       755.6978+-10.5913    !    822.7208+-7.2924        ! definitely 1.0887x slower
   crypto-sha1                                     1100.9877+-5.9601     ?   1106.9943+-9.4179        ?
   date-format-tofte                               1012.4187+-25.6304    ?   1022.3882+-44.6001       ?
   date-format-xparb                               1127.9755+-19.5947        1116.1700+-10.5657         might be 1.0106x faster
   hash-map                                         243.5212+-5.9469          242.9580+-1.7979        
   math-cordic                                      667.8378+-2.1462     !    673.4316+-1.1607        ! definitely 1.0084x slower
   math-partial-sums                               1187.1393+-2.2919         1183.5071+-4.3602        
   math-spectral-norm                              1107.2436+-1.6854     !   1112.6567+-2.0757        ! definitely 1.0049x slower
   string-base64                                    571.9952+-2.2776     ^    560.1119+-4.1459        ^ definitely 1.0212x faster
   string-fasta                                     611.4389+-10.9670    ?    621.0126+-6.5266        ? might be 1.0157x slower
   string-tagcloud                                  305.0017+-3.0116          303.4891+-3.8870        

   &lt;geometric&gt;                                      693.0835+-2.6120     ?    694.3070+-2.3016        ? might be 1.0018x slower

                                                         Baseline                CalleeSaves                                    
V8Spider:
   crypto                                            72.1155+-0.6185     ?     73.1060+-0.5313        ? might be 1.0137x slower
   deltablue                                         89.5450+-4.5465     ?     92.2560+-1.8653        ? might be 1.0303x slower
   earley-boyer                                      64.7399+-0.6215     ?     65.4130+-0.7159        ? might be 1.0104x slower
   raytrace                                          38.5266+-0.8855     !     40.3173+-0.6300        ! definitely 1.0465x slower
   regexp                                           107.5262+-1.9210     ?    108.1299+-0.3159        ?
   richards                                          87.1683+-0.6084           85.0622+-1.5047          might be 1.0248x faster
   splay                                             58.4373+-5.4030     ?     59.6768+-3.5955        ? might be 1.0212x slower

   &lt;geometric&gt;                                       70.6774+-1.4831     ?     71.7166+-0.7746        ? might be 1.0147x slower

                                                         Baseline                CalleeSaves                                    
Octane:
   encrypt                                           0.32057+-0.00181    !     0.32331+-0.00055       ! definitely 1.0085x slower
   decrypt                                           5.76899+-0.00655    !     5.98170+-0.02201       ! definitely 1.0369x slower
   deltablue                                x2       0.27321+-0.00335          0.26939+-0.01367         might be 1.0142x faster
   earley                                            0.52280+-0.00371    ?     0.53235+-0.01193       ? might be 1.0183x slower
   boyer                                             8.93618+-0.12509    ?     9.00151+-0.03944       ?
   navier-stokes                            x2       6.65805+-0.00402          6.65748+-0.00945       
   raytrace                                 x2       1.86555+-0.08120          1.76718+-0.07563         might be 1.0557x faster
   richards                                 x2       0.17912+-0.00078    ?     0.17956+-0.00169       ?
   splay                                    x2       0.58201+-0.02368          0.57364+-0.00153         might be 1.0146x faster
   regexp                                   x2      40.71020+-2.18233         40.22243+-0.47877         might be 1.0121x faster
   pdfjs                                    x2      62.12309+-0.09826    !    62.61260+-0.04944       ! definitely 1.0079x slower
   mandreel                                 x2      74.44370+-0.50687    ^    72.03175+-0.59141       ^ definitely 1.0335x faster
   gbemu                                    x2      65.41352+-8.28463         65.30056+-4.68395       
   closure                                           0.95444+-0.00702    ?     0.96803+-0.00662       ? might be 1.0142x slower
   jquery                                           12.34563+-0.09954    !    12.50699+-0.05801       ! definitely 1.0131x slower
   box2d                                    x2      18.16747+-0.21236    ?    18.48016+-0.24023       ? might be 1.0172x slower
   zlib                                     x2     595.81270+-1.17158    ?   595.82015+-5.84225       ?
   typescript                               x2    1122.74829+-43.75787   ?  1144.47345+-30.79251      ? might be 1.0193x slower

   &lt;geometric&gt;                                       9.58870+-0.14266          9.56771+-0.03056         might be 1.0022x faster

                                                         Baseline                CalleeSaves                                    
Kraken:
   ai-astar                                          344.650+-2.273      ?     345.034+-2.323         ?
   audio-beat-detection                               83.158+-0.550      ?      84.296+-0.933         ? might be 1.0137x slower
   audio-dft                                         134.926+-2.578      ?     135.372+-0.938         ?
   audio-fft                                          60.561+-0.182      !      62.335+-0.239         ! definitely 1.0293x slower
   audio-oscillator                                  106.950+-1.188            106.733+-0.325         
   imaging-darkroom                                  101.962+-3.985            100.198+-0.083           might be 1.0176x faster
   imaging-desaturate                                 92.843+-0.567      ?      93.488+-1.128         ?
   imaging-gaussian-blur                             149.884+-2.237      ?     150.696+-0.519         ?
   json-parse-financial                               72.237+-0.915      ?      73.339+-0.390         ? might be 1.0153x slower
   json-stringify-tinderbox                           42.226+-0.149      ?      42.571+-0.411         ?
   stanford-crypto-aes                                68.734+-0.605             67.520+-1.111           might be 1.0180x faster
   stanford-crypto-ccm                                60.556+-0.795      ?      62.197+-2.645         ? might be 1.0271x slower
   stanford-crypto-pbkdf2                            150.639+-5.810            149.016+-0.581           might be 1.0109x faster
   stanford-crypto-sha256-iterative                   59.062+-0.396      ?      59.803+-0.523         ? might be 1.0125x slower

   &lt;arithmetic&gt;                                      109.170+-0.744      ?     109.471+-0.268         ? might be 1.0028x slower

                                                         Baseline                CalleeSaves                                    
JSRegress:
   abc-forward-loop-equal                            57.4637+-0.1535     ?     57.4824+-0.3048        ?
   abc-postfix-backward-loop                         57.0211+-0.1585           56.8592+-0.3777        
   abc-simple-backward-loop                          56.4916+-0.3372           56.4890+-0.3533        
   abc-simple-forward-loop                           56.8463+-0.3065           56.6793+-0.3358        
   abc-skippy-loop                                   39.0104+-0.2135     ?     39.1538+-0.3967        ?
   abs-boolean                                        3.8511+-0.0910     ?      3.8779+-0.1921        ?
   adapt-to-double-divide                            17.4612+-0.8959           17.4203+-0.9335        
   aliased-arguments-getbyval                         1.6136+-0.3038     ?      1.6536+-0.2916        ? might be 1.0247x slower
   allocate-big-object                                3.8900+-0.2990     ?      3.9271+-0.2164        ?
   arguments-named-and-reflective                    14.6088+-0.4831     ?     14.6970+-0.1325        ?
   arguments-out-of-bounds                           14.3838+-0.5382     ?     14.8004+-0.3796        ? might be 1.0290x slower
   arguments-strict-mode                             12.8257+-0.6247           12.6533+-0.9900          might be 1.0136x faster
   arguments                                         11.6955+-0.2463           11.3489+-0.2943          might be 1.0305x faster
   arity-mismatch-inlining                            1.2043+-0.1028     ?      1.3431+-0.1305        ? might be 1.1153x slower
   array-access-polymorphic-structure                 9.4614+-0.2135     ?      9.6665+-0.1912        ? might be 1.0217x slower
   array-nonarray-polymorhpic-access                 43.1016+-1.3879           42.0618+-1.6629          might be 1.0247x faster
   array-prototype-every                            131.8005+-1.8360     ^    124.6719+-1.2164        ^ definitely 1.0572x faster
   array-prototype-forEach                          129.6708+-2.0563          124.1695+-4.3603          might be 1.0443x faster
   array-prototype-map                              143.2799+-1.2371     ^    139.6074+-1.1489        ^ definitely 1.0263x faster
   array-prototype-reduce                           120.7306+-1.1592          119.0132+-1.9228          might be 1.0144x faster
   array-prototype-reduceRight                      120.9698+-0.9027     ^    117.1212+-0.9645        ^ definitely 1.0329x faster
   array-prototype-some                             139.8691+-18.1322         125.2195+-2.2101          might be 1.1170x faster
   array-splice-contiguous                           33.5990+-0.6575     ?     34.3202+-0.5973        ? might be 1.0215x slower
   array-with-double-add                              5.6039+-0.1317            5.5160+-0.1921          might be 1.0159x faster
   array-with-double-increment                        4.2315+-0.1578            4.1865+-0.1160          might be 1.0107x faster
   array-with-double-mul-add                          7.2401+-0.2039     ?      7.2661+-0.1716        ?
   array-with-double-sum                              4.3999+-0.1135     ?      4.4050+-0.1727        ?
   array-with-int32-add-sub                           9.9252+-0.4224            9.5164+-0.1942          might be 1.0430x faster
   array-with-int32-or-double-sum                     4.5858+-0.0914            4.4927+-0.1830          might be 1.0207x faster
   ArrayBuffer-DataView-alloc-large-long-lived   
                                                     48.4656+-0.6353           48.3635+-1.2376        
   ArrayBuffer-DataView-alloc-long-lived             18.9482+-2.1025           18.9379+-0.6554        
   ArrayBuffer-Int32Array-byteOffset                  5.7285+-0.1574            5.6353+-0.2835          might be 1.0165x faster
   ArrayBuffer-Int8Array-alloc-large-long-lived   
                                                     49.7737+-2.4798           48.9855+-0.2753          might be 1.0161x faster
   ArrayBuffer-Int8Array-alloc-long-lived-buffer   
                                                     30.2004+-0.8061     ?     30.3832+-0.4264        ?
   ArrayBuffer-Int8Array-alloc-long-lived            17.4227+-0.2891     ?     17.5327+-0.2787        ?
   ArrayBuffer-Int8Array-alloc                       15.7516+-3.6616           14.5201+-0.2835          might be 1.0848x faster
   arrowfunction-call                                14.4292+-0.1504     !     15.3791+-0.1894        ! definitely 1.0658x slower
   asmjs_bool_bug                                     9.5934+-0.1091     !      9.9169+-0.1385        ! definitely 1.0337x slower
   assign-custom-setter-polymorphic                   4.1573+-0.0583            4.1500+-0.1118        
   assign-custom-setter                               5.6197+-0.1882     ?      5.6782+-0.1799        ? might be 1.0104x slower
   basic-set                                         11.3558+-0.7437     ?     11.3623+-0.3560        ?
   big-int-mul                                        5.8637+-0.0585            5.8287+-0.1480        
   boolean-test                                       4.4430+-0.1707     ?      4.6170+-0.3020        ? might be 1.0392x slower
   branch-fold                                        4.6981+-0.1084     ?      4.8550+-0.0807        ? might be 1.0334x slower
   branch-on-string-as-boolean                       22.9683+-0.6107     ?     23.2860+-1.1213        ? might be 1.0138x slower
   by-val-generic                                     3.7207+-0.2876     ?      3.8499+-0.2322        ? might be 1.0347x slower
   call-spread-apply                                 39.5907+-3.7338           38.7917+-0.6637          might be 1.0206x faster
   call-spread-call                                  31.6939+-0.6873           31.5374+-0.4019        
   captured-assignments                               0.7217+-0.1201     ?      0.7405+-0.1477        ? might be 1.0260x slower
   cast-int-to-double                                 8.5120+-0.1173     ?      8.6293+-0.0719        ? might be 1.0138x slower
   cell-argument                                      8.1620+-0.1957     ?      8.5125+-0.1951        ? might be 1.0429x slower
   cfg-simplify                                       3.6982+-0.1284     ?      3.8566+-0.1310        ? might be 1.0428x slower
   chain-getter-access                               10.4148+-0.3420     ?     10.4205+-0.3246        ?
   cmpeq-obj-to-obj-other                            14.2186+-0.7248     ?     15.0137+-0.9113        ? might be 1.0559x slower
   constant-test                                      8.2130+-0.0900            8.2058+-0.0900        
   create-lots-of-functions                          16.4976+-0.5080     ?     16.7747+-0.5280        ? might be 1.0168x slower
   cse-new-array-buffer                               3.2420+-0.1045     ?      3.3469+-0.1637        ? might be 1.0324x slower
   cse-new-array                                      3.3073+-0.3591     ?      3.5261+-0.1066        ? might be 1.0662x slower
   DataView-custom-properties                        55.4885+-0.7051     ?     55.5548+-0.8008        ?
   delay-tear-off-arguments-strictmode               19.1107+-0.3742     ?     19.2010+-0.5850        ?
   deltablue-varargs                                271.5906+-2.7678     !    283.4049+-5.3153        ! definitely 1.0435x slower
   destructuring-arguments                          250.2731+-2.6080     ?    256.1074+-17.4655       ? might be 1.0233x slower
   destructuring-parameters-overridden-by-function   
                                                      0.7210+-0.0897     ?      0.7313+-0.1439        ? might be 1.0143x slower
   destructuring-swap                                 7.7993+-0.1432     ?      7.8676+-0.1209        ?
   direct-arguments-getbyval                          1.7081+-0.1999     ?      1.7970+-0.3495        ? might be 1.0520x slower
   div-boolean-double                                 5.5656+-0.1442            5.5406+-0.0820        
   div-boolean                                       10.0630+-0.0362     ?     10.1185+-0.0867        ?
   double-get-by-val-out-of-bounds                    6.0363+-0.1436     ?      6.2393+-0.3184        ? might be 1.0336x slower
   double-pollution-getbyval                          9.9256+-0.1049     ?      9.9445+-0.0734        ?
   double-pollution-putbyoffset                       5.8484+-0.2747            5.6714+-0.2870          might be 1.0312x faster
   double-real-use                                   40.8811+-0.1017           40.8345+-0.2169        
   double-to-int32-typed-array-no-inline              2.8983+-0.1429     ?      3.1149+-0.1102        ? might be 1.0747x slower
   double-to-int32-typed-array                        2.7859+-0.1478     !      3.0312+-0.0880        ! definitely 1.0881x slower
   double-to-uint32-typed-array-no-inline             2.8902+-0.1357     ?      3.1694+-0.1659        ? might be 1.0966x slower
   double-to-uint32-typed-array                       2.7601+-0.0767     ?      2.9251+-0.1796        ? might be 1.0598x slower
   elidable-new-object-dag                           56.5925+-0.7505           55.9567+-0.9370          might be 1.0114x faster
   elidable-new-object-roflcopter                    55.3993+-0.4653           55.2256+-1.1887        
   elidable-new-object-then-call                     50.5293+-1.4065     ?     50.6087+-0.4833        ?
   elidable-new-object-tree                          66.0302+-1.2662           65.6547+-1.6497        
   empty-string-plus-int                              7.6779+-0.2948     ?      7.6995+-0.1271        ?
   emscripten-cube2hash                              46.2324+-0.4627     ?     46.7122+-0.3559        ? might be 1.0104x slower
   exit-length-on-plain-object                       19.2318+-0.9856     ?     19.5887+-0.5774        ? might be 1.0186x slower
   external-arguments-getbyval                        1.5742+-0.0550     ?      1.8683+-0.3749        ? might be 1.1868x slower
   external-arguments-putbyval                        3.2278+-0.2269     ?      3.3053+-0.1864        ? might be 1.0240x slower
   fixed-typed-array-storage-var-index                1.6376+-0.1282     ?      1.7123+-0.0758        ? might be 1.0456x slower
   fixed-typed-array-storage                          1.2587+-0.1419     ?      1.3677+-0.1125        ? might be 1.0867x slower
   Float32Array-matrix-mult                           6.0018+-0.2626     ?      6.1035+-0.2487        ? might be 1.0169x slower
   Float32Array-to-Float64Array-set                  81.3908+-1.3784     ?     81.5637+-0.9782        ?
   Float64Array-alloc-long-lived                    105.6177+-0.3884          102.7424+-3.7488          might be 1.0280x faster
   Float64Array-to-Int16Array-set                    95.7855+-1.2433     !    102.4429+-1.1428        ! definitely 1.0695x slower
   fold-double-to-int                                19.3105+-0.3111     ?     19.6115+-0.6105        ? might be 1.0156x slower
   fold-get-by-id-to-multi-get-by-offset-rare-int   
                                                     11.9613+-0.3138           11.9172+-0.5720        
   fold-get-by-id-to-multi-get-by-offset              9.8408+-0.2025            9.8124+-0.3589        
   fold-multi-get-by-offset-to-get-by-offset   
                                                      8.9713+-0.6212     ?      9.8940+-0.8659        ? might be 1.1028x slower
   fold-multi-get-by-offset-to-poly-get-by-offset   
                                                      8.8856+-0.0590     !      9.2404+-0.0661        ! definitely 1.0399x slower
   fold-multi-put-by-offset-to-poly-put-by-offset   
                                                      9.2551+-0.1393     ?      9.3527+-0.6546        ? might be 1.0105x slower
   fold-multi-put-by-offset-to-put-by-offset   
                                                      8.7441+-0.6125            8.3320+-0.5114          might be 1.0495x faster
   fold-multi-put-by-offset-to-replace-or-transition-put-by-offset   
                                                     14.6318+-0.3571     ?     14.6726+-1.0454        ?
   fold-put-by-id-to-multi-put-by-offset             10.1969+-0.8448     ?     10.3048+-0.4124        ? might be 1.0106x slower
   fold-put-by-val-with-string-to-multi-put-by-offset   
                                                     10.7410+-0.9617     ?     10.7936+-0.7428        ?
   fold-put-by-val-with-symbol-to-multi-put-by-offset   
                                                     10.6995+-0.9572     ?     11.0486+-0.6894        ? might be 1.0326x slower
   fold-put-structure                                 8.0551+-0.5198            7.8500+-0.1415          might be 1.0261x faster
   for-of-iterate-array-entries                      16.7467+-0.4121     ?     16.9798+-0.3959        ? might be 1.0139x slower
   for-of-iterate-array-keys                          5.1378+-0.1157     ?      5.3023+-0.3667        ? might be 1.0320x slower
   for-of-iterate-array-values                        5.0558+-0.1167     ?      5.3209+-0.2651        ? might be 1.0524x slower
   fround                                            19.8099+-0.6871           19.0956+-0.4008          might be 1.0374x faster
   ftl-library-inlining-dataview                    102.6085+-6.3498           97.7753+-1.7214          might be 1.0494x faster
   ftl-library-inlining                             115.5441+-9.3333     ?    117.2675+-11.0986       ? might be 1.0149x slower
   function-call                                     14.4835+-0.2895     !     15.4243+-0.1648        ! definitely 1.0650x slower
   function-dot-apply                                 2.9910+-0.1213     ?      3.2222+-0.1309        ? might be 1.0773x slower
   function-test                                      4.3750+-0.1026     ?      4.5165+-0.2005        ? might be 1.0323x slower
   function-with-eval                               162.6516+-3.3443     ^    152.2882+-0.8766        ^ definitely 1.0681x faster
   gcse-poly-get-less-obvious                        25.6691+-0.1924           25.4257+-0.3659        
   gcse-poly-get                                     25.5782+-0.1257     ?     25.5798+-0.2315        ?
   gcse                                               6.6815+-0.1137     ^      6.3845+-0.1405        ^ definitely 1.0465x faster
   get-by-id-bimorphic-check-structure-elimination-simple   
                                                      3.4348+-0.1736            3.2612+-0.1268          might be 1.0532x faster
   get-by-id-bimorphic-check-structure-elimination   
                                                      8.5407+-0.0198     ^      8.4349+-0.0716        ^ definitely 1.0125x faster
   get-by-id-chain-from-try-block                     6.8230+-0.1437     ?      6.8412+-0.1416        ?
   get-by-id-check-structure-elimination              7.8732+-0.0706     ?      8.1191+-0.2068        ? might be 1.0312x slower
   get-by-id-proto-or-self                           21.2505+-2.6854     ?     21.6962+-2.8278        ? might be 1.0210x slower
   get-by-id-quadmorphic-check-structure-elimination-simple   
                                                      4.0224+-0.0724            3.8651+-0.0986          might be 1.0407x faster
   get-by-id-self-or-proto                           20.2454+-0.0647     ?     20.5469+-1.2043        ? might be 1.0149x slower
   get-by-val-out-of-bounds                           5.7097+-0.0431     !      6.0152+-0.0931        ! definitely 1.0535x slower
   get-by-val-with-string-bimorphic-check-structure-elimination-simple   
                                                      3.9435+-0.1096     !      4.2890+-0.1375        ! definitely 1.0876x slower
   get-by-val-with-string-bimorphic-check-structure-elimination   
                                                     10.2433+-0.1130     ?     10.2726+-0.0936        ?
   get-by-val-with-string-chain-from-try-block   
                                                      8.0193+-0.1578            7.9427+-0.1430        
   get-by-val-with-string-check-structure-elimination   
                                                      9.2685+-0.0900            9.2280+-0.1137        
   get-by-val-with-string-proto-or-self              20.5448+-0.4667           20.5339+-0.5956        
   get-by-val-with-string-quadmorphic-check-structure-elimination-simple   
                                                      4.7150+-0.1187     ?      4.8143+-0.0954        ? might be 1.0211x slower
   get-by-val-with-string-self-or-proto              21.3663+-2.9338           20.5157+-0.4628          might be 1.0415x faster
   get-by-val-with-symbol-bimorphic-check-structure-elimination-simple   
                                                      5.2325+-0.1164     ^      4.7810+-0.0939        ^ definitely 1.0944x faster
   get-by-val-with-symbol-bimorphic-check-structure-elimination   
                                                     19.9676+-0.0890           19.8419+-0.1909        
   get-by-val-with-symbol-chain-from-try-block   
                                                      8.1800+-0.0900            7.9712+-0.3803          might be 1.0262x faster
   get-by-val-with-symbol-check-structure-elimination   
                                                     18.7361+-0.2072           18.7320+-0.1964        
   get-by-val-with-symbol-proto-or-self              20.4343+-0.4354     ?     20.5740+-0.5204        ?
   get-by-val-with-symbol-quadmorphic-check-structure-elimination-simple   
                                                      5.8936+-0.1011            5.7819+-0.1352          might be 1.0193x faster
   get-by-val-with-symbol-self-or-proto              21.5933+-4.1419     ?     21.6102+-2.6039        ?
   get_callee_monomorphic                             3.5992+-0.2105     ?      3.8408+-0.2613        ? might be 1.0671x slower
   get_callee_polymorphic                             4.7248+-0.1203     ?      4.8846+-0.1026        ? might be 1.0338x slower
   getter-no-activation                               5.9008+-0.0548     ?      5.9603+-0.1036        ? might be 1.0101x slower
   getter-prototype                                  14.3041+-0.2040     ?     14.3926+-0.1590        ?
   getter-richards                                  134.7499+-11.6333         132.7054+-5.2519          might be 1.0154x faster
   getter                                             7.5412+-0.0462     ?      7.5735+-0.1087        ?
   global-object-access-with-mutating-structure   
                                                      7.8518+-0.3283     !      8.6069+-0.4020        ! definitely 1.0962x slower
   global-var-const-infer-fire-from-opt               1.1312+-0.1610     ?      1.2531+-0.1472        ? might be 1.1077x slower
   global-var-const-infer                             1.0692+-0.3143     ?      1.2686+-0.2811        ? might be 1.1864x slower
   hard-overflow-check-equal                         63.1798+-0.1275           62.8108+-0.5283        
   hard-overflow-check                               62.2134+-0.5140     ?     62.2148+-0.3334        ?
   HashMap-put-get-iterate-keys                      33.9208+-0.2968     ?     34.4658+-0.5530        ? might be 1.0161x slower
   HashMap-put-get-iterate                           33.5223+-0.2477     ?     33.9028+-0.3534        ? might be 1.0114x slower
   HashMap-string-put-get-iterate                    37.1035+-0.5784     ?     37.9288+-0.6525        ? might be 1.0222x slower
   hoist-make-rope                                   12.1094+-1.5804     ?     13.0396+-1.8299        ? might be 1.0768x slower
   hoist-poly-check-structure-effectful-loop   
                                                      6.9391+-0.1021            6.7838+-0.0632          might be 1.0229x faster
   hoist-poly-check-structure                         4.9158+-0.1595     ?      4.9972+-0.0907        ? might be 1.0166x slower
   imul-double-only                                   9.0599+-1.6840     ?      9.2332+-0.5450        ? might be 1.0191x slower
   imul-int-only                                     10.6528+-0.1494           10.6392+-0.2105        
   imul-mixed                                         8.0228+-0.2160     ?      8.1086+-0.2113        ? might be 1.0107x slower
   in-four-cases                                     26.8654+-0.0916           26.3740+-0.5325          might be 1.0186x faster
   in-one-case-false                                 14.6883+-0.1511     !     15.0634+-0.0812        ! definitely 1.0255x slower
   in-one-case-true                                  14.6577+-0.0993     !     15.1116+-0.0343        ! definitely 1.0310x slower
   in-two-cases                                      15.0054+-0.0999     !     15.8110+-0.0714        ! definitely 1.0537x slower
   indexed-properties-in-objects                      3.8033+-0.0892     ?      3.8242+-0.1132        ?
   infer-closure-const-then-mov-no-inline             4.5505+-0.1352     !      4.9445+-0.1074        ! definitely 1.0866x slower
   infer-closure-const-then-mov                      22.0650+-0.3204     ?     22.2925+-1.0257        ? might be 1.0103x slower
   infer-closure-const-then-put-to-scope-no-inline   
                                                     16.5456+-0.1151     ^     16.0999+-0.2817        ^ definitely 1.0277x faster
   infer-closure-const-then-put-to-scope             32.2249+-0.8107     ^     28.9426+-0.1814        ^ definitely 1.1134x faster
   infer-closure-const-then-reenter-no-inline   
                                                     73.5766+-0.1130     ?     73.7523+-0.1903        ?
   infer-closure-const-then-reenter                  29.2811+-0.2670     !     33.6271+-0.5488        ! definitely 1.1484x slower
   infer-constant-global-property                     4.8559+-0.1981     ?      4.8755+-0.1590        ?
   infer-constant-property                            3.3730+-0.1281     ?      3.4031+-0.1743        ?
   infer-one-time-closure-ten-vars                   11.4488+-0.5075     ?     11.4883+-0.3861        ?
   infer-one-time-closure-two-vars                   10.5666+-0.5031     ?     10.8598+-0.5470        ? might be 1.0277x slower
   infer-one-time-closure                            10.7338+-0.4007     ?     10.8314+-0.3708        ?
   infer-one-time-deep-closure                       18.3307+-0.4676     ?     18.3795+-0.7555        ?
   inline-arguments-access                            6.0157+-0.2040     ?      6.1884+-0.1502        ? might be 1.0287x slower
   inline-arguments-aliased-access                    5.9899+-0.1854     ?      6.0927+-0.2045        ? might be 1.0172x slower
   inline-arguments-local-escape                      6.1934+-0.1644            6.1177+-0.2515          might be 1.0124x faster
   inline-get-scoped-var                              5.7775+-0.1014            5.7613+-0.1625        
   inlined-put-by-id-transition                      16.9377+-0.9904     ?     17.5311+-0.4235        ? might be 1.0350x slower
   inlined-put-by-val-with-string-transition   
                                                    115.9766+-4.6604     ?    118.2582+-0.7623        ? might be 1.0197x slower
   inlined-put-by-val-with-symbol-transition   
                                                    116.1178+-9.2058          111.8193+-3.4399          might be 1.0384x faster
   int-or-other-abs-then-get-by-val                   6.6205+-0.1375            6.6116+-0.0961        
   int-or-other-abs-zero-then-get-by-val             27.9443+-0.3387     !     28.6569+-0.0720        ! definitely 1.0255x slower
   int-or-other-add-then-get-by-val                   6.4609+-0.2168     ^      6.0954+-0.1024        ^ definitely 1.0600x faster
   int-or-other-add                                   8.0981+-0.0873     ?      8.3215+-0.1585        ? might be 1.0276x slower
   int-or-other-div-then-get-by-val                   5.1602+-0.1357            5.1204+-0.1832        
   int-or-other-max-then-get-by-val                   5.2025+-0.1517            5.1430+-0.1186          might be 1.0116x faster
   int-or-other-min-then-get-by-val                   4.9172+-0.1269     ?      5.1097+-0.1221        ? might be 1.0391x slower
   int-or-other-mod-then-get-by-val                   4.8389+-0.1115     ?      4.9512+-0.1267        ? might be 1.0232x slower
   int-or-other-mul-then-get-by-val                   4.8830+-0.0997     !      5.1963+-0.1902        ! definitely 1.0642x slower
   int-or-other-neg-then-get-by-val                   5.8771+-0.1878            5.7354+-0.1138          might be 1.0247x faster
   int-or-other-neg-zero-then-get-by-val             28.4772+-0.5556     ?     28.8906+-0.2789        ? might be 1.0145x slower
   int-or-other-sub-then-get-by-val                   6.3408+-0.1286            6.1497+-0.2341          might be 1.0311x faster
   int-or-other-sub                                   5.2796+-0.1462     ?      5.3297+-0.1275        ?
   int-overflow-local                                 6.0464+-0.1756     ?      6.1123+-0.1043        ? might be 1.0109x slower
   Int16Array-alloc-long-lived                       73.1450+-0.6687     ^     70.6293+-1.7710        ^ definitely 1.0356x faster
   Int16Array-bubble-sort-with-byteLength            36.2930+-0.2179           36.2793+-0.1688        
   Int16Array-bubble-sort                            36.3560+-0.1658     ?     36.3572+-0.1189        ?
   Int16Array-load-int-mul                            2.0249+-0.0839     ?      2.0892+-0.1268        ? might be 1.0317x slower
   Int16Array-to-Int32Array-set                      75.2527+-1.0461     ?     76.0354+-2.3263        ? might be 1.0104x slower
   Int32Array-alloc-large                            34.0490+-0.6453           34.0247+-0.4496        
   Int32Array-alloc-long-lived                       83.9536+-0.9694     ^     80.3480+-0.6572        ^ definitely 1.0449x faster
   Int32Array-alloc                                   4.6527+-0.0933            4.5983+-0.1536          might be 1.0118x faster
   Int32Array-Int8Array-view-alloc                    9.4547+-0.1914            9.2758+-0.1606          might be 1.0193x faster
   int52-spill                                        7.1092+-0.2788     ?      7.4572+-0.3038        ? might be 1.0490x slower
   Int8Array-alloc-long-lived                        62.4456+-1.0135           61.8785+-0.4414        
   Int8Array-load-with-byteLength                     4.8836+-0.1476     ?      4.8891+-0.1560        ?
   Int8Array-load                                     4.7660+-0.0898     ?      4.8127+-0.1423        ?
   integer-divide                                    14.4896+-0.2894           14.4017+-0.1396        
   integer-modulo                                     2.5833+-0.1265     ?      2.8496+-0.1693        ? might be 1.1031x slower
   is-boolean-fold-tricky                             5.6358+-0.1100     ?      5.6436+-0.0808        ?
   is-boolean-fold                                    4.0234+-0.1344     ?      4.0401+-0.1631        ?
   is-function-fold-tricky-internal-function   
                                                     14.9022+-0.1281     ?     15.0947+-0.1039        ? might be 1.0129x slower
   is-function-fold-tricky                            5.7598+-0.2073     ?      5.8295+-0.1177        ? might be 1.0121x slower
   is-function-fold                                   4.0471+-0.1252            4.0319+-0.1155        
   is-number-fold-tricky                              5.5890+-0.1767     ?      5.6860+-0.1026        ? might be 1.0174x slower
   is-number-fold                                     4.0576+-0.1135            4.0408+-0.2196        
   is-object-or-null-fold-functions                   4.1698+-0.1452            4.1517+-0.1200        
   is-object-or-null-fold-less-tricky                 5.7382+-0.0864     ?      5.8142+-0.2127        ? might be 1.0132x slower
   is-object-or-null-fold-tricky                      7.9645+-0.0806     ^      7.5443+-0.0219        ^ definitely 1.0557x faster
   is-object-or-null-fold                             4.0462+-0.1518     ?      4.0738+-0.1225        ?
   is-object-or-null-trickier-function                5.8414+-0.1284     ?      5.9112+-0.1415        ? might be 1.0119x slower
   is-object-or-null-trickier-internal-function   
                                                     15.9977+-0.1393           15.9005+-0.1369        
   is-object-or-null-tricky-function                  5.8483+-0.0732     ?      5.8807+-0.1432        ?
   is-object-or-null-tricky-internal-function   
                                                     11.6266+-0.1952     ?     11.6637+-0.1279        ?
   is-string-fold-tricky                              5.7305+-0.1891            5.6989+-0.2431        
   is-string-fold                                     4.0202+-0.0796     ?      4.0502+-0.1546        ?
   is-undefined-fold-tricky                           4.6782+-0.0384     ?      4.7892+-0.1314        ? might be 1.0237x slower
   is-undefined-fold                                  3.9955+-0.0925     ?      4.0780+-0.1226        ? might be 1.0206x slower
   JSONP-negative-0                                   0.4296+-0.0835     ?      0.4580+-0.0976        ? might be 1.0662x slower
   large-int-captured                                 6.7280+-0.1849     ?      6.8324+-0.4333        ? might be 1.0155x slower
   large-int-neg                                     20.5817+-0.5005           20.3121+-0.1341          might be 1.0133x faster
   large-int                                         18.1785+-0.1337           17.9862+-0.3516          might be 1.0107x faster
   load-varargs-elimination                          30.3342+-1.5321     ?     31.1136+-1.6447        ? might be 1.0257x slower
   logical-not-weird-types                            4.8497+-0.1385     !      5.3120+-0.2154        ! definitely 1.0953x slower
   logical-not                                        6.3973+-0.0877            6.3329+-0.0860          might be 1.0102x faster
   lots-of-fields                                    16.5394+-0.3302           16.3987+-0.1260        
   make-indexed-storage                               4.3118+-0.3296     ?      4.3774+-0.2267        ? might be 1.0152x slower
   make-rope-cse                                      6.5509+-0.0895     ?      6.7700+-0.1543        ? might be 1.0334x slower
   marsaglia-larger-ints                             55.3673+-0.3913           55.3395+-0.2292        
   marsaglia-osr-entry                               27.2646+-0.8140     ?     27.3532+-0.3308        ?
   math-with-out-of-bounds-array-values              34.4394+-0.3097     ^     33.3499+-0.4460        ^ definitely 1.0327x faster
   max-boolean                                        3.4333+-0.0515            3.4300+-0.1135        
   method-on-number                                  24.7396+-1.8520           23.6125+-0.4997          might be 1.0477x faster
   min-boolean                                        3.3873+-0.1673            3.3449+-0.1917          might be 1.0127x faster
   minus-boolean-double                               4.3489+-0.2352            4.2557+-0.0988          might be 1.0219x faster
   minus-boolean                                      3.3536+-0.1464     ?      3.3582+-0.1640        ?
   misc-strict-eq                                    47.7599+-0.6006           47.7305+-0.5065        
   mod-boolean-double                                12.1165+-0.1183           12.0612+-0.1305        
   mod-boolean                                        9.2465+-0.0688            9.2065+-0.1301        
   mul-boolean-double                                 4.9010+-0.1478     ?      4.9648+-0.0899        ? might be 1.0130x slower
   mul-boolean                                        3.5518+-0.1723     ?      3.5878+-0.1431        ? might be 1.0101x slower
   neg-boolean                                        4.3962+-0.1260            4.3745+-0.1854        
   negative-zero-divide                               0.6478+-0.1229            0.5942+-0.1275          might be 1.0901x faster
   negative-zero-modulo                               0.5836+-0.0845            0.5787+-0.1289        
   negative-zero-negate                               0.5790+-0.1422     ?      0.6148+-0.1273        ? might be 1.0619x slower
   nested-function-parsing                           75.7827+-2.0952     ?     77.3315+-1.0766        ? might be 1.0204x slower
   new-array-buffer-dead                            152.5742+-1.4982     ?    153.7525+-0.9765        ?
   new-array-buffer-push                              9.8525+-0.1195     !     10.2212+-0.0460        ! definitely 1.0374x slower
   new-array-dead                                    18.9433+-0.1127     ?     19.3508+-1.5242        ? might be 1.0215x slower
   new-array-push                                     5.4170+-0.2796     ?      5.5687+-0.1923        ? might be 1.0280x slower
   no-inline-constructor                             53.5675+-0.3636     ^     52.2318+-0.5637        ^ definitely 1.0256x faster
   number-test                                        4.3919+-0.1116     ?      4.4415+-0.0880        ? might be 1.0113x slower
   object-closure-call                                8.1253+-0.2568            8.0228+-0.0383          might be 1.0128x faster
   object-get-own-property-symbols-on-large-array   
                                                      5.5113+-0.5720            5.4760+-0.6202        
   object-test                                        4.1956+-0.1358     ?      4.2693+-0.1002        ? might be 1.0176x slower
   obvious-sink-pathology-taken                     182.4713+-0.8855          181.1935+-2.9969        
   obvious-sink-pathology                           167.8666+-4.3850          166.0779+-2.4580          might be 1.0108x faster
   obviously-elidable-new-object                     44.2720+-0.7644           44.2031+-1.8942        
   plus-boolean-arith                                 3.4180+-0.0574            3.3808+-0.1496          might be 1.0110x faster
   plus-boolean-double                                4.2617+-0.1186     ?      4.3085+-0.1207        ? might be 1.0110x slower
   plus-boolean                                       3.2759+-0.1022     ?      3.2868+-0.1734        ?
   poly-chain-access-different-prototypes-simple   
                                                      4.8352+-0.0633     !      5.1346+-0.2249        ! definitely 1.0619x slower
   poly-chain-access-different-prototypes             5.3225+-0.0671     ^      5.1052+-0.0862        ^ definitely 1.0426x faster
   poly-chain-access-simpler                          4.9485+-0.0256     !      5.1453+-0.1577        ! definitely 1.0398x slower
   poly-chain-access                                  5.2739+-0.1800            4.9586+-0.1838          might be 1.0636x faster
   poly-stricteq                                     78.6915+-0.1928     !     82.1193+-0.2212        ! definitely 1.0436x slower
   polymorphic-array-call                             1.8667+-0.2376            1.8623+-0.2726        
   polymorphic-get-by-id                              4.1716+-0.1100            3.9703+-0.1156          might be 1.0507x faster
   polymorphic-put-by-id                             38.7449+-2.8137           38.4503+-4.0655        
   polymorphic-put-by-val-with-string                37.2924+-1.0188     ?     40.3384+-3.7451        ? might be 1.0817x slower
   polymorphic-put-by-val-with-symbol                39.3906+-4.3728     ?     40.4742+-3.8606        ? might be 1.0275x slower
   polymorphic-structure                             25.8304+-0.1406     ^     24.2927+-0.0713        ^ definitely 1.0633x faster
   polyvariant-monomorphic-get-by-id                 11.4945+-0.6282     ?     11.7067+-0.3635        ? might be 1.0185x slower
   proto-getter-access                               10.1514+-0.1512     ?     10.3228+-0.2461        ? might be 1.0169x slower
   prototype-access-with-mutating-prototype           7.6656+-0.6158     ?      8.1954+-0.3658        ? might be 1.0691x slower
   put-by-id-replace-and-transition                  12.5414+-0.3397     ?     12.9879+-0.2502        ? might be 1.0356x slower
   put-by-id-slightly-polymorphic                     3.6099+-0.1486            3.5972+-0.0818        
   put-by-id                                         18.7042+-0.2377           18.4930+-0.2698          might be 1.0114x faster
   put-by-val-direct                                  0.5768+-0.1012     ?      0.6157+-0.1123        ? might be 1.0674x slower
   put-by-val-large-index-blank-indexing-type   
                                                      8.4625+-0.4363     ?      8.6149+-0.2175        ? might be 1.0180x slower
   put-by-val-machine-int                             3.4620+-0.2369     ?      3.6968+-0.0885        ? might be 1.0678x slower
   put-by-val-with-string-replace-and-transition   
                                                     18.9994+-0.5041     ?     19.3070+-0.4401        ? might be 1.0162x slower
   put-by-val-with-string-slightly-polymorphic   
                                                      4.4488+-0.1892     ?      4.6313+-0.1743        ? might be 1.0410x slower
   put-by-val-with-string                            19.2207+-0.3108     ?     19.6606+-0.3324        ? might be 1.0229x slower
   put-by-val-with-symbol-replace-and-transition   
                                                     20.7763+-0.5414     !     21.8465+-0.3135        ! definitely 1.0515x slower
   put-by-val-with-symbol-slightly-polymorphic   
                                                      4.8909+-0.1281            4.6638+-0.1186          might be 1.0487x faster
   put-by-val-with-symbol                            19.5458+-0.1263     ?     20.0519+-0.5946        ? might be 1.0259x slower
   rare-osr-exit-on-local                            16.9884+-0.1463           16.8224+-0.0587        
   register-pressure-from-osr                        27.8571+-0.1132     ?     28.1307+-0.1672        ?
   repeat-multi-get-by-offset                        30.0745+-0.2501     ?     30.3157+-0.1658        ?
   setter-prototype                                  11.2128+-0.3063     ?     11.6188+-0.4451        ? might be 1.0362x slower
   setter                                             7.1215+-0.2129            6.8160+-0.1308          might be 1.0448x faster
   simple-activation-demo                            35.2613+-0.1259     ^     34.6395+-0.2107        ^ definitely 1.0180x faster
   simple-getter-access                              14.0087+-0.0789     ?     14.4598+-0.4887        ? might be 1.0322x slower
   simple-poly-call-nested                            8.5064+-0.1297     !      9.2664+-0.2655        ! definitely 1.0893x slower
   simple-poly-call                                   1.6828+-0.1348     ?      1.8630+-0.1044        ? might be 1.1071x slower
   sin-boolean                                       21.3919+-0.9346           20.5170+-0.4942          might be 1.0426x faster
   singleton-scope                                   90.3631+-0.9858     ^     87.5920+-0.2499        ^ definitely 1.0316x faster
   sink-function                                     13.5897+-0.2451     ?     13.8952+-0.1970        ? might be 1.0225x slower
   sink-huge-activation                              21.1929+-0.7882     ?     21.4627+-0.5573        ? might be 1.0127x slower
   sinkable-new-object-dag                           87.9745+-1.7556           87.6378+-1.6548        
   sinkable-new-object-taken                         69.4991+-0.5855     ?     69.6013+-0.5169        ?
   sinkable-new-object                               48.3228+-0.8083     ?     49.4448+-2.6720        ? might be 1.0232x slower
   slow-array-profile-convergence                     3.9591+-0.2655            3.8532+-0.2752          might be 1.0275x faster
   slow-convergence                                   3.6533+-0.2022     ?      3.8285+-0.1742        ? might be 1.0479x slower
   slow-ternaries                                    32.9897+-0.0626     !     34.0713+-0.3212        ! definitely 1.0328x slower
   sorting-benchmark                                 25.5718+-0.7325     ?     26.6539+-1.0240        ? might be 1.0423x slower
   sparse-conditional                                 1.6493+-0.1244     ?      1.7526+-0.1109        ? might be 1.0626x slower
   splice-to-remove                                  20.0781+-0.4161           19.8680+-0.2761          might be 1.0106x faster
   string-char-code-at                               20.6995+-0.1747     !     21.3597+-0.1136        ! definitely 1.0319x slower
   string-concat-object                               3.2504+-0.0899     ?      3.3731+-0.1358        ? might be 1.0378x slower
   string-concat-pair-object                          3.1163+-0.1525     ?      3.4258+-0.2881        ? might be 1.0993x slower
   string-concat-pair-simple                         17.2665+-0.2706     ?     17.5527+-0.1602        ? might be 1.0166x slower
   string-concat-simple                              18.0414+-0.4277           18.0045+-0.7267        
   string-cons-repeat                                11.6718+-0.1587     !     12.0123+-0.0694        ! definitely 1.0292x slower
   string-cons-tower                                 11.1043+-0.1615           10.9380+-0.0552          might be 1.0152x faster
   string-equality                                   25.3095+-0.0891     ^     23.3574+-0.1021        ^ definitely 1.0836x faster
   string-get-by-val-big-char                         9.9627+-0.3243     !     10.9963+-0.3312        ! definitely 1.1037x slower
   string-get-by-val-out-of-bounds-insane             5.1257+-0.2642            5.0955+-0.2916        
   string-get-by-val-out-of-bounds                    6.9218+-0.0982     ?      6.9869+-0.1603        ?
   string-get-by-val                                  4.8026+-0.1040     ?      4.8405+-0.1285        ?
   string-hash                                        2.8820+-0.0512     ?      2.8932+-0.3495        ?
   string-long-ident-equality                        20.6058+-0.2778     ^     19.1530+-0.2745        ^ definitely 1.0759x faster
   string-out-of-bounds                              15.0514+-0.0887     !     15.5713+-0.4121        ! definitely 1.0345x slower
   string-repeat-arith                               46.3447+-1.1603           44.9937+-1.7432          might be 1.0300x faster
   string-sub                                        89.1478+-1.8926           88.8824+-2.3440        
   string-test                                        4.3516+-0.2229     ?      4.5216+-0.1996        ? might be 1.0391x slower
   string-var-equality                               46.4541+-0.1841     !     61.1758+-1.8536        ! definitely 1.3169x slower
   structure-hoist-over-transitions                   3.3184+-0.1690     !      3.6569+-0.0667        ! definitely 1.1020x slower
   substring-concat-weird                            59.9553+-0.6730     ?     61.1544+-1.1429        ? might be 1.0200x slower
   substring-concat                                  65.3174+-0.2529     !     66.1031+-0.3448        ! definitely 1.0120x slower
   substring                                         71.8577+-0.2806     ?     72.2153+-0.6596        ?
   switch-char-constant                               3.3586+-0.1165     ?      3.3975+-0.1435        ? might be 1.0116x slower
   switch-char                                        8.0619+-0.1467            7.9807+-0.1040          might be 1.0102x faster
   switch-constant                                   14.2111+-2.0979           13.6503+-0.2539          might be 1.0411x faster
   switch-string-basic-big-var                       32.1525+-0.2322     ?     32.4703+-0.6062        ?
   switch-string-basic-big                           30.6976+-0.7711           29.0456+-1.1405          might be 1.0569x faster
   switch-string-basic-var                           29.6719+-0.8855     !     32.8151+-1.3267        ! definitely 1.1059x slower
   switch-string-basic                               19.8212+-0.6875     ?     22.0967+-1.5976        ? might be 1.1148x slower
   switch-string-big-length-tower-var                27.9340+-0.1611     !     28.6083+-0.4354        ! definitely 1.0241x slower
   switch-string-length-tower-var                    21.3177+-0.4208     ?     21.4591+-0.0749        ?
   switch-string-length-tower                        14.8754+-0.1755     ?     15.4775+-0.4466        ? might be 1.0405x slower
   switch-string-short                               14.8463+-0.0715     !     15.3393+-0.1337        ! definitely 1.0332x slower
   switch                                            17.3847+-2.4054           17.2663+-1.9261        
   tear-off-arguments-simple                          4.4540+-0.2295            4.4034+-0.2286          might be 1.0115x faster
   tear-off-arguments                                 6.4727+-0.5658     ?      6.7120+-0.3017        ? might be 1.0370x slower
   temporal-structure                                18.0623+-0.2414     ^     16.9745+-0.2993        ^ definitely 1.0641x faster
   to-int32-boolean                                  21.6496+-0.1473     ?     21.6923+-0.2134        ?
   try-catch-get-by-val-cloned-arguments             20.9556+-0.2850     ?     20.9960+-0.0663        ?
   try-catch-get-by-val-direct-arguments              9.8060+-0.1460     ?     10.1013+-0.2921        ? might be 1.0301x slower
   try-catch-get-by-val-scoped-arguments             11.6102+-0.5341           11.3101+-0.3027          might be 1.0265x faster
   typed-array-get-set-by-val-profiling              35.5653+-1.1196     ^     33.4606+-0.7347        ^ definitely 1.0629x faster
   undefined-property-access                        482.5085+-3.7222     !    491.7103+-4.4446        ! definitely 1.0191x slower
   undefined-test                                     4.6265+-0.3027     ?      4.6274+-0.1438        ?
   unprofiled-licm                                   24.3152+-0.1487     ?     24.3284+-0.0950        ?
   varargs-call                                      18.3865+-0.1909     !     18.9517+-0.3574        ! definitely 1.0307x slower
   varargs-construct-inline                          37.1505+-1.0489     ?     37.2438+-0.1649        ?
   varargs-construct                                 30.1803+-0.4591     !     30.9513+-0.2914        ! definitely 1.0255x slower
   varargs-inline                                    12.1935+-0.2009     !     12.6351+-0.2187        ! definitely 1.0362x slower
   varargs-strict-mode                               14.1397+-0.0786     !     15.0109+-0.1786        ! definitely 1.0616x slower
   varargs                                           14.0467+-0.2247     !     14.8665+-0.0940        ! definitely 1.0584x slower
   weird-inlining-const-prop                          2.8640+-0.1563     ?      3.0890+-0.1133        ? might be 1.0786x slower

   &lt;geometric&gt;                                       11.8475+-0.0334     !     11.9817+-0.0319        ! definitely 1.0113x slower

                                                         Baseline                CalleeSaves                                    
AsmBench:
   bigfib.cpp                                       700.0009+-6.5306     ?    706.4688+-4.3543        ?
   cray.c                                           650.5345+-9.2952          647.0410+-3.2439        
   dry.c                                            716.3133+-0.7882          691.8907+-81.1479         might be 1.0353x faster
   FloatMM.c                                        960.8315+-1.6982          959.8122+-1.1292        
   gcc-loops.cpp                                   6222.5687+-4.7303     ?   6227.8917+-22.8899       ?
   n-body.c                                        1745.5381+-1.6220         1745.1699+-1.1878        
   Quicksort.c                                      594.2045+-12.2319    ?    595.1923+-9.2675        ?
   stepanov_container.cpp                          5130.1576+-24.2332        5067.3857+-42.9528         might be 1.0124x faster
   Towers.c                                         427.0610+-3.6739     ^    419.5034+-1.3993        ^ definitely 1.0180x faster

   &lt;geometric&gt;                                     1179.8745+-0.8660         1171.8219+-16.0531         might be 1.0069x faster

                                                         Baseline                CalleeSaves                                    
CompressionBench:
   huffman                                           85.0293+-3.4450     ?     85.4495+-2.1356        ?
   arithmetic-simple                                452.6348+-1.5141     ^    449.1195+-1.2334        ^ definitely 1.0078x faster
   arithmetic-precise                               379.4055+-7.3183          378.2310+-3.5969        
   arithmetic-complex-precise                       375.4926+-1.2018     ?    376.4345+-2.7825        ?
   arithmetic-precise-order-0                       462.6586+-1.1742     ^    460.2200+-1.0859        ^ definitely 1.0053x faster
   arithmetic-precise-order-1                       448.5193+-4.0628     ^    433.0286+-2.6180        ^ definitely 1.0358x faster
   arithmetic-precise-order-2                       511.0580+-5.8973          502.1868+-7.1247          might be 1.0177x faster
   arithmetic-simple-order-1                        524.5217+-3.1771          519.0538+-5.7873          might be 1.0105x faster
   arithmetic-simple-order-2                        590.3109+-2.0380     ^    576.4360+-3.0474        ^ definitely 1.0241x faster
   lz-string                                        439.1639+-9.8846     ?    446.5676+-8.0396        ? might be 1.0169x slower

   &lt;geometric&gt;                                      388.8524+-2.4690          385.8004+-1.2727          might be 1.0079x faster

                                                         Baseline                CalleeSaves                                    
Geomean of preferred means:
   &lt;scaled-result&gt;                                   81.8188+-0.3020     ?     82.0980+-0.2888        ? might be 1.0034x slower</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1124658</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-09 12:29:44 -0700</bug_when>
    <thetext>Attachment 260867 did not pass style-queue:


ERROR: Source/JavaScriptCore/jit/JIT.cpp:497:  One space before end of line comments  [whitespace/comments] [5]
Total errors found: 1 in 59 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1124659</commentid>
    <comment_count>16</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-09-09 12:33:53 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; Attachment 260867 [details] did not pass style-queue:
&gt; 
&gt; 
&gt; ERROR: Source/JavaScriptCore/jit/JIT.cpp:497:  One space before end of line
&gt; comments  [whitespace/comments] [5]
&gt; Total errors found: 1 in 59 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against
&gt; check-webkit-style.

Fixed locally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1124665</commentid>
    <comment_count>17</comment_count>
      <attachid>260867</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-09-09 12:56:02 -0700</bug_when>
    <thetext>Comment on attachment 260867
Patch

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

&gt; Source/JavaScriptCore/ftl/FTLLink.cpp:58
&gt;      // FIXME: Need to know the real frame register count.
&gt;      // https://bugs.webkit.org/show_bug.cgi?id=125727
&gt; -    state.jitCode-&gt;common.frameRegisterCount = 1000;
&gt; +    state.jitCode-&gt;common.frameRegisterCount = state.jitCode-&gt;stackmaps.stackSizeForLocals() / sizeof(void*);

Does this change resolve the FIXME above?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1124666</commentid>
    <comment_count>18</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-09-09 12:58:30 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; Comment on attachment 260867 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=260867&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/ftl/FTLLink.cpp:58
&gt; &gt;      // FIXME: Need to know the real frame register count.
&gt; &gt;      // https://bugs.webkit.org/show_bug.cgi?id=125727
&gt; &gt; -    state.jitCode-&gt;common.frameRegisterCount = 1000;
&gt; &gt; +    state.jitCode-&gt;common.frameRegisterCount = state.jitCode-&gt;stackmaps.stackSizeForLocals() / sizeof(void*);
&gt; 
&gt; Does this change resolve the FIXME above?

Yes, it does.  The change was also posted to https://bugs.webkit.org/show_bug.cgi?id=125727.  I&apos;ll remove the FIXME comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1124715</commentid>
    <comment_count>19</comment_count>
      <attachid>260880</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-09-09 15:18:21 -0700</bug_when>
    <thetext>Created attachment 260880
Patch with suggested fixes and fix for win32 build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1124922</commentid>
    <comment_count>20</comment_count>
      <attachid>260880</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-09-10 10:01:04 -0700</bug_when>
    <thetext>Comment on attachment 260880
Patch with suggested fixes and fix for win32 build

I buy it!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1124943</commentid>
    <comment_count>21</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-09-10 10:47:24 -0700</bug_when>
    <thetext>Committed r189575: &lt;http://trac.webkit.org/changeset/189575&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260867</attachid>
            <date>2015-09-09 12:27:38 -0700</date>
            <delta_ts>2015-09-09 15:18:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>148666.patch</filename>
            <type>text/plain</type>
            <size>195042</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg5NTQzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwNyBA
QAorMjAxNS0wOS0wOSAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KKworICAg
ICAgICBBZGQgc3VwcG9ydCBmb3IgQ2FsbGVlLVNhdmVzIHJlZ2lzdGVycworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NjY2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2Ugc2F2ZSBwbGF0Zm9ybSBjYWxs
ZWUgc2F2ZSByZWdpc3RlcnMgcmlnaHQgYmVsb3cgdGhlIGNhbGwgZnJhbWUgaGVhZGVyLAorICAg
ICAgICBpbiB0aGUgbG9jYXRpb24ocykgc3RhcnRpbmcgd2l0aCBWaXJ0dWFsUmVnaXN0ZXIgMC4g
IFRoaXMgbG9jYWwgc3BhY2UgaXMKKyAgICAgICAgYWxsb2NhdGVkIGluIHRoZSBieXRlY29kZSBj
b21waWxlci4gIFRoaXMgc3BhY2UgaXMgdGhlIG1heGltdW0gc3BhY2UKKyAgICAgICAgbmVlZGVk
IGZvciB0aGUgY2FsbGVlIHJlZ2lzdGVycyB0aGF0IHRoZSBMTEludCBhbmQgYmFzZWxpbmUgSklU
IHVzZSwKKyAgICAgICAgcm91bmRlZCB1cCB0byBhIHN0YWNrIGFsaWduZWQgbnVtYmVyIG9mIFZp
cnR1YWxSZWdpc3RlcnMuCisgICAgICAgIFRoZSBMTEludCBleHBsaWNpdGx5IHNhdmVzIGFuZCBy
ZXN0b3JlcyB0aGUgcmVnaXN0ZXJzIGluIHRoZSBtYWNyb3MKKyAgICAgICAgcHJlc2VydmVDYWxs
ZWVTYXZlc1VzZWRCeUxMSW50IGFuZCByZXN0b3JlQ2FsbGVlU2F2ZXNVc2VkQnlMTEludC4KKyAg
ICAgICAgVGhlIEpJVHMgc2F2ZXMgYW5kIHJlc3RvcmVzIGNhbGxlZSBzYXZlcyByZWdpc3RlcnMg
Ynkgd2hhdCByZWdpc3RlcnMKKyAgICAgICAgYXJlIGluY2x1ZGVkIGluIG1fY2FsbGVlU2F2ZVJl
Z2lzdGVycyBpbiB0aGUgY29kZSBibG9jay4KKworICAgICAgICBBZGRlZCBoYW5kbGluZyBvZiBj
YWxsZWUgc2F2ZSByZWdpc3RlciByZXN0b3JhdGlvbiB0byBleGNlcHRpb24gaGFuZGxpbmcuCisg
ICAgICAgIFRoZSBiYXNpYyBmbG93IGlzIHdoZW4gYW4gZXhjZXB0aW9uIGlzIHRocm93biBvciBv
bmUgaXMgcmVjb2duaXplZCB0bworICAgICAgICBoYXZlIGJlZW4gZ2VuZXJhdGVkIGluIEMrKyBj
b2RlLCB3ZSBzYXZlIHRoZSBjdXJyZW50IHN0YXRlIG9mIGFsbAorICAgICAgICBjYWxsZWUgc2F2
ZSByZWdpc3RlcnMgdG8gVk06OmNhbGxlZVNhdmVSZWdpc3RlcnNCdWZmZXIuICBBcyB3ZSB1bndp
bmQKKyAgICAgICAgbG9va2luZyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2F0Y2gsIHdlIGNvcHkg
dGhlIGNhbGxlZSBzYXZlcyBmcm9tIGNhbGwgCisgICAgICAgIGZyYW1lcyB0byB0aGUgc2FtZSBW
TTo6Y2FsbGVlU2F2ZVJlZ2lzdGVyc0J1ZmZlci4gIFRoaXMgaXMgZG9uZSBmb3IgYWxsCisgICAg
ICAgIGNhbGwgZnJhbWVzIG9uIHRoZSBzdGFjayB1cCB0byBidXQgbm90IGluY2x1ZGluZyB0aGUg
Y2FsbCBmcmFtZSB0aGF0IGhhcworICAgICAgICB0aGUgY29ycmVzcG9uZGluZyBjYXRjaCBibG9j
ay4gIFdoZW4gd2UgcHJvY2VzcyB0aGUgY2F0Y2gsIHdlIHJlc3RvcmUKKyAgICAgICAgdGhlIGNh
bGxlZSBzYXZlIHJlZ2lzdGVycyB3aXRoIHRoZSBjb250ZW50cyBvZiBWTTo6Y2FsbGVlU2F2ZVJl
Z2lzdGVyc0J1ZmZlci4KKyAgICAgICAgSWYgdGhlcmUgaXNuJ3QgYSBjYXRjaCwgdGhlbiBoYW5k
bGVVbmNhdWdodEV4Y2VwdGlvbiB3aWxsIHJlc3RvcmUgY2FsbGVlCisgICAgICAgIHNhdmVzIGJl
Zm9yZSBpdCByZXR1cm5zIGJhY2sgdG8gdGhlIGNhbGxpbmcgQysrLgorCisgICAgICAgIEVsaW1p
bmF0ZWQgY2FsbGVlIHNhdmVzIHJlZ2lzdGVycyBhcyBmcmVlIHJlZ2lzdGVycyBmb3IgdmFyaW91
cyB0aHVuaworICAgICAgICBnZW5lcmF0b3JzIGFzIHRoZSBjYWxsZWUgc2F2ZXMgbWF5IG5vdCBo
YXZlIGJlZW4gc2F2ZWQgYnkgdGhlIGZ1bmN0aW9uCisgICAgICAgIGNhbGxpbmcgdGhlIHRodW5r
LgorCisgICAgICAgIEFkZGVkIGNvZGUgdG8gdHJhbnNpdGlvbiBjYWxsZWUgc2F2ZXMgZnJvbSBv
bmUgVk0ncyBmb3JtYXQgdG8gdGhlIGFub3RoZXIKKyAgICAgICAgYXMgcGFydCBvZiBPU1IgZW50
cnkgYW5kIE9TUiBleGl0LgorCisgICAgICAgIENsZWFuZWQgdXAgdGhlIHN0YXRpYyBSZWdpc3Rl
clNldCdzIGluY2x1ZGluZyBhZGRpbmcgb25lIGZvciBMTEludCBhbmQgCisgICAgICAgIGJhc2Vs
aW5lIEpJVCBjYWxsZWUgc2F2ZXMgYW5kIG9uZSB0byBiZSB1c2VkIHRvIGFsbG9jYXRlIGxvY2Fs
IHJlZ2lzdGVycworICAgICAgICBub3QgaW5jbHVkaW5nIHRoZSBjYWxsZWUgc2F2ZXMgb3Igb3Ro
ZXIgc3BlY2lhbCByZWdpc3RlcnMuCisKKyAgICAgICAgTW92ZWQgZnRsL0ZUTFJlZ2lzdGVyQXRP
ZmZzZXQue2NwcCxofSB0byBqaXQvUmVnaXN0ZXJBdE9mZnNldC57Y3BwLGh9LgorICAgICAgICBG
YWN0b3JlZCBvdXQgdGhlIHZlY3RvciBvZiBSZWdpc3RlckF0T2Zmc2V0cyBpbiBmdGwvRlRMVW53
aW5kSW5mby57Y3BwLGh9CisgICAgICAgIGludG8gYSBuZXcgY2xhc3MgaW4gaml0L1JlZ2lzdGVy
QXRPZmZzZXRMaXN0LntjcHAsaH0uCisgICAgICAgIEVsaW1pbnRlZCBVbndpbmRJbmZvIGFuZCBj
aGFuZ2VkIFVud2luZEluZm86OnBhcnNlKCkgaW50byBhIHN0YW5kYWxvbmUKKyAgICAgICAgZnVu
Y3Rpb24gbmFtZWQgcGFyc2VVbndpbmRJbmZvLiAgVGhhdCBzdGFuZGFsb25lIGZ1bmN0aW9uIG5v
dyByZXR1cm5zCisgICAgICAgIHRoZSBjYWxsZWUgc2F2ZXMgUmVnaXN0ZXJBdE9mZnNldExpc3Qu
ICBUaGlzIGlzIHN0b3JlZCBpbiB0aGUgQ29kZUJsb2NrCisgICAgICAgIGFuZCB1c2VkIGluc3Rl
YWQgb2YgVW53aW5kSW5mby4KKworICAgICAgICBUdXJuZWQgb2ZmIHJlZ2lzdGVyIHByZXNlcnZh
dGlvbiB0aHVua3MgZm9yIG91dGdvaW5nIGNhbGxzIGZyb20gRlRMCisgICAgICAgIGdlbmVyYXRl
ZCBjb2RlLiAgVEhleSdsbCBiZSByZW1vdmVkIGluIGEgc3Vic2VxdWVudCBwYXRjaC4KKworICAg
ICAgICBDaGFuZ2VkIHNwZWNpYWxpemVkIHRoaW5rcyB0byBzYXZlIGFuZCByZXN0b3JlIHRoZSBj
b250ZW50cyBvZgorICAgICAgICB0YWdUeXBlTnVtYmVyUmVnaXN0ZXIgYW5kIHRhZ01hc2tSZWdp
c3RlciBhcyB0aGV5IGNhbiBiZSBjYWxsZWQgYnkgRlRMCisgICAgICAgIGNvbXBpbGVkIGZ1bmN0
aW9ucy4gIFdlIG1hdGVyaWFsaXplIHRob3NlIHRhZyByZWdpc3RlcnMgZm9yIHRoZSB0aHVuaydz
CisgICAgICAgIHVzZSBhbmQgdGhlbiByZXN0b3JlIHRoZSBwcmlvciBjb250ZW50cyBvbiBmdW5j
dGlvbiBleGl0LgorCisgICAgICAgIEFsc28gcmVtb3ZlZCB0aGUgYXJpdHkgY2hlY2sgZmFpbCBy
ZXR1cm4gdGh1bmsgc2luY2UgaXQgaXMgbm93IHRoZQorICAgICAgICBjYWxsZXIncyByZXNwb25z
aWJpbGl0eSB0byByZXN0b3JlIHRoZSBzdGFjayBwb2ludGVyLgorCisgICAgICAgIFJlbW92ZWQg
c2F2aW5nIG9mIGNhbGxlZSBzYXZlIHJlZ2lzdGVycyBhbmQgbWF0ZXJpYWxpemF0aW9uIG9mIHNw
ZWNpYWwKKyAgICAgICAgdGFnIHJlZ2lzdGVycyBmb3IgNjQgYml0IHBsYXRmb3JtcyBmcm9tIHZt
RW50cnlUb0phdmFTY3JpcHQgYW5kCisgICAgICAgIHZtRW50cnlUb05hdGl2ZS4KKworICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2
YVNjcmlwdENvcmUudmN4cHJvajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGZ0bC9GVExKSVRDb2RlLmg6Cisg
ICAgICAgICogZnRsL0ZUTFJlZ2lzdGVyQXRPZmZzZXQuY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IGZ0bC9GVExSZWdpc3RlckF0T2Zmc2V0Lmg6IFJlbW92ZWQuCisgICAgICAgICogZnRsL0ZUTFVu
d2luZEluZm8uY3BwOgorICAgICAgICAoSlNDOjpGVEw6OnBhcnNlVW53aW5kSW5mbyk6CisgICAg
ICAgIChKU0M6OkZUTDo6VW53aW5kSW5mbzo6VW53aW5kSW5mbyk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkZUTDo6VW53aW5kSW5mbzo6flVud2luZEluZm8pOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpGVEw6OlVud2luZEluZm86OnBhcnNlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRM
OjpVbndpbmRJbmZvOjpkdW1wKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpVbndpbmRJ
bmZvOjpmaW5kKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpVbndpbmRJbmZvOjppbmRl
eE9mKTogRGVsZXRlZC4KKyAgICAgICAgKiBmdGwvRlRMVW53aW5kSW5mby5oOgorICAgICAgICAo
SlNDOjpSZWdpc3RlckF0T2Zmc2V0OjpkdW1wKToKKyAgICAgICAgKiBqaXQvUmVnaXN0ZXJBdE9m
ZnNldC5jcHA6IEFkZGVkLgorICAgICAgICAqIGppdC9SZWdpc3RlckF0T2Zmc2V0Lmg6IEFkZGVk
LgorICAgICAgICAoSlNDOjpSZWdpc3RlckF0T2Zmc2V0OjpSZWdpc3RlckF0T2Zmc2V0KToKKyAg
ICAgICAgKEpTQzo6UmVnaXN0ZXJBdE9mZnNldDo6b3BlcmF0b3IhKToKKyAgICAgICAgKEpTQzo6
UmVnaXN0ZXJBdE9mZnNldDo6cmVnKToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJBdE9mZnNldDo6
b2Zmc2V0KToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJBdE9mZnNldDo6b2Zmc2V0QXNJbmRleCk6
CisgICAgICAgIChKU0M6OlJlZ2lzdGVyQXRPZmZzZXQ6Om9wZXJhdG9yPT0pOgorICAgICAgICAo
SlNDOjpSZWdpc3RlckF0T2Zmc2V0OjpvcGVyYXRvcjwpOgorICAgICAgICAoSlNDOjpSZWdpc3Rl
ckF0T2Zmc2V0OjpnZXRSZWcpOgorICAgICAgICAqIGppdC9SZWdpc3RlckF0T2Zmc2V0TGlzdC5j
cHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpSZWdpc3RlckF0T2Zmc2V0TGlzdDo6UmVnaXN0ZXJB
dE9mZnNldExpc3QpOgorICAgICAgICAoSlNDOjpSZWdpc3RlckF0T2Zmc2V0TGlzdDo6c29ydCk6
CisgICAgICAgIChKU0M6OlJlZ2lzdGVyQXRPZmZzZXRMaXN0OjpkdW1wKToKKyAgICAgICAgKEpT
Qzo6UmVnaXN0ZXJBdE9mZnNldExpc3Q6OmZpbmQpOgorICAgICAgICAoSlNDOjpSZWdpc3RlckF0
T2Zmc2V0TGlzdDo6aW5kZXhPZik6CisgICAgICAgICogaml0L1JlZ2lzdGVyQXRPZmZzZXRMaXN0
Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpSZWdpc3RlckF0T2Zmc2V0TGlzdDo6Y2xlYXIpOgor
ICAgICAgICAoSlNDOjpSZWdpc3RlckF0T2Zmc2V0TGlzdDo6c2l6ZSk6CisgICAgICAgIChKU0M6
OlJlZ2lzdGVyQXRPZmZzZXRMaXN0OjphdCk6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyQXRPZmZz
ZXRMaXN0OjphcHBlbmQpOgorICAgICAgICBNb3ZlIGFuZCByZWZhY3RvcmVkIHVzZSBvZiBGVExS
ZWdpc3RlckF0T2Zmc2V0IHRvIFJlZ2lzdGVyQXRPZmZzZXQuCisgICAgICAgIEFkZGVkIFJlZ2lz
dGVyQXRPZmZzZXQgYW5kIFJlZ2lzdGVyQXRPZmZzZXRMaXN0IHRvIGJ1aWxkIGNvbmZpZ3VyYXRp
b25zLgorICAgICAgICBSZW1vdmUgRlRMUmVnaXN0ZXJBdE9mZnNldCBmaWxlcy4KKworICAgICAg
ICAqIGJ5dGVjb2RlL0NhbGxMaW5rSW5mby5oOgorICAgICAgICAoSlNDOjpDYWxsTGlua0luZm86
OnNldFVwQ2FsbEZyb21GVEwpOgorICAgICAgICBUdXJuZWQgb2ZmIEZUTCByZWdpc3RlciBwcmVz
ZXJ2YXRpb24gdGh1bmtzLgorCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6OnNldENhbGxlZVNhdmVSZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpyb3VuZENhbGxlZVNh
dmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGxp
bnRCYXNlbGluZUNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycyk6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6Y2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKToKKyAgICAg
ICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpudW1i
ZXJPZkxMSW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpjYWxsZWVTYXZlUmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjps
bGludEJhc2VsaW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKToKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjpvcHRpbWl6ZUFmdGVyV2FybVVwKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpudW1iZXJPZkRGR0NvbXBpbGVzKToKKyAgICAgICAgTWV0aG9kcyB0byBtYW5hZ2Ug
YSBzZXQgb2YgY2FsbGVlIHNhdmUgcmVnaXN0ZXJzLiAgQWxzbyB0byBhbGxvY2F0ZSB0aGUgYXBw
cm9wcmlhdGUKKyAgICAgICAgbnVtYmVyIG9mIFZpcnR1YWxSZWdpc3RlcnMgZm9yIGNhbGxlZSBz
YXZlcy4KKworICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjphbGxvY2F0ZUNhbGxlZVNhdmVTcGFjZSk6Cisg
ICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIEFsbG9j
YXRlIHRoZSBhcHByb3ByaWF0ZSBudW1iZXIgb2YgVmlydHVhbFJlZ2lzdGVycyBmb3IgY2FsbGVl
IHNhdmVzIG5lZWRlZCBieSBMTEludCBvciBiYXNlbGluZSBKSVQuCisKKyAgICAgICAgKiBkZmcv
REZHSklUQ29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpjb21w
aWxlRW50cnkpOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpjb21waWxlU2V0dXBS
ZWdpc3RlcnNGb3JFbnRyeSk6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBp
bGVCb2R5KToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZUV4Y2VwdGlv
bkhhbmRsZXJzKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbik6CisgICAgICAg
ICogZGZnL0RGR0pJVENvbXBpbGVyLmg6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuY3BwOgorICAgICAgICAoSlNDOjpVbndpbmRGdW5jdG9yOjpvcGVyYXRvcigpKToKKyAgICAg
ICAgKEpTQzo6VW53aW5kRnVuY3Rvcjo6Y29weUNhbGxlZVNhdmVzVG9WTUNhbGxlZVNhdmVzQnVm
ZmVyKToKKyAgICAgICAgKiBkZmcvREZHUGxhbi5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UGxh
bjo6Y29tcGlsZUluVGhyZWFkSW1wbCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6dXNlZFJlZ2lzdGVycyk6
CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3Vs
YXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUpOgorICAgICAgICAqIGRmZy9ERkdTdGFja0xheW91dFBoYXNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpTdGFja0xheW91dFBoYXNlOjpydW4pOgorICAgICAgICAqIGZ0bC9GVExDb21waWxl
LmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpmaXhGdW5jdGlvbkJhc2VkT25TdGFja01hcHMpOgor
ICAgICAgICAoSlNDOjpGVEw6OmNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMaW5rLmNwcDoK
KyAgICAgICAgKEpTQzo6RlRMOjpsaW5rKToKKyAgICAgICAgKiBmdGwvRlRMT1NSRXhpdENvbXBp
bGVyLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjb21waWxlU3R1Yik6CisgICAgICAgICogZnRs
L0ZUTFRodW5rcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6b3NyRXhpdEdlbmVyYXRpb25UaHVu
a0dlbmVyYXRvcik6CisgICAgICAgICogaml0L0FyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzLmNw
cDogUmVtb3ZlZC4KKyAgICAgICAgKiBqaXQvQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3MuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
RW50ZXJPcHRpbWl6YXRpb25DaGVjayk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBp
bGUpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlRXhjZXB0aW9uSGFuZGxlcnMp
OgorICAgICAgICAqIGppdC9KSVRDYWxsMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfcmV0KToKKyAgICAgICAgKiBqaXQvSklURXhjZXB0aW9ucy5jcHA6CisgICAgICAgIChK
U0M6OmdlbmVyaWNVbndpbmQpOgorICAgICAgICAqIGppdC9KSVRFeGNlcHRpb25zLmg6CisgICAg
ICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZW5k
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3JldCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF90aHJvdyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jYXRjaCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lbnRlcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNs
b3dfb3BfbG9vcF9oaW50KToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX2VuZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF90aHJvdyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jYXRjaCk6CisgICAgICAgICog
aml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAg
ICAgKEpTQzo6Z2VuZXJhdGVCeUlkU3R1Yik6CisgICAgICAgICogaml0L1RodW5rR2VuZXJhdG9y
cy5jcHA6CisgICAgICAgICogbGxpbnQvTExJbnREYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6TExJ
bnQ6OkRhdGE6OnBlcmZvcm1Bc3NlcnRpb25zKToKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQ
YXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6Cisg
ICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbElu
dGVycHJldGVyNjQuYXNtOgorICAgICAgICAoSlNDOjp0aHJvd0V4Y2VwdGlvbkZyb21DYWxsU2xv
d1BhdGhHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjphcml0eUZpeHVwR2VuZXJhdG9yKToKKyAg
ICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OnNldHVw
QXJpdHlDaGVja0RhdGEpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6Cisg
ICAgICAgIChKU0M6OkNvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0Zvcik6CisgICAgICAgIEVt
aXQgY29kZSB0byBzYXZlIGFuZCByZXN0b3JlIGNhbGxlZSBzYXZlIHJlZ2lzdGVycyBhbmQgbWF0
ZXJpYWxpemUgdGFnVHlwZU51bWJlclJlZ2lzdGVyCisgICAgICAgIGFuZCB0YWdNYXNrUmVnaXN0
ZXIuCisgICAgICAgIEhhbmRsZSBjYWxsZWUgc2F2ZXMgd2hlbiB0aWVyaW5nIHVwLgorICAgICAg
ICBDb3B5IGNhbGxlZSBzYXZlcyByZWdpc3RlciBjb250ZW50cyB0byBWTTo6Y2FsbGVlU2F2ZVJl
Z2lzdGVyc0J1ZmZlciBhdCBiZWdpbm5pbmcgb2YKKyAgICAgICAgZXhjZXB0aW9uIHByb2Nlc3Np
bmcuCisgICAgICAgIFByb2Nlc3MgY2FsbGVlIHNhdmUgcmVnaXN0ZXJzIGluIGZyYW1lcyB3aGVu
IHVud2luZGluZyBmcm9tIGFuIGV4Y2VwdGlvbi4KKyAgICAgICAgUmVzdG9yZSBjYWxsZWUgc2F2
ZXMgcmVnaXN0ZXIgY29udGVudHMgZnJvbSBWTTo6Y2FsbGVlU2F2ZVJlZ2lzdGVyc0J1ZmZlciBv
biBjYXRjaC4KKyAgICAgICAgVXNlIGFwcHJvcHJpYXRlIHJlZ2lzdGVyIHNldCB0byBtYWtlIHN1
cmUgd2UgZG9uJ3QgYWxsb2NhdGUgYSBjYWxsZWUgc2F2ZSByZWdpc3RlciB3aGVuCisgICAgICAg
IGNvbXBpbGluZyBhIHRodW5rLgorICAgICAgICBIZWxwZXIgdG8gcG9wdWxhdGUgdGFnVHlwZU51
bWJlclJlZ2lzdGVyIGFuZCB0YWdNYXNrUmVnaXN0ZXIgd2l0aCB0aGUgYXBwcm9wcmlhdGUKKyAg
ICAgICAgY29uc3RhbnRzLgorICAgICAgICBSZW1vdmVkIGFyaXR5IGZpeHVwIHJldHVybiB0aHVu
a3MuCisKKyAgICAgICAgKiBkZmcvREZHT1NSRW50cnkuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OnByZXBhcmVPU1JFbnRyeSk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRDb21waWxlcjMyXzY0
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KToK
KyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6Ok9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQpOgorICAgICAgICAqIGRmZy9ERkdPU1JF
eGl0Q29tcGlsZXJDb21tb24uY3BwOgorICAgICAgICAoSlNDOjpERkc6OnJlaWZ5SW5saW5lZENh
bGxGcmFtZXMpOgorICAgICAgICAoSlNDOjpERkc6OmFkanVzdEFuZEp1bXBUb1RhcmdldCk6Cisg
ICAgICAgIFJlc3RvcmUgY2FsbGVlIHNhdmVzIGZyb20gdGhlIERGRyBhbmQgc2F2ZSB0aGUgYXBw
cm9wcmlhdGUgb25lcyBmb3IgdGhlIGJhc2VsaW5lIEpJVC4KKyAgICAgICAgTWF0ZXJpYWxpemUg
dGhlIHRhZyByZWdpc3RlcnMgb24gNjQgYml0IHBsYXRmb3Jtcy4KKworICAgICAgICAqIGppdC9B
c3NlbWJseUhlbHBlcnMuaDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0U2F2
ZUNhbGxlZVNhdmVzRm9yKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0UmVz
dG9yZUNhbGxlZVNhdmVzRm9yKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0
U2F2ZUNhbGxlZVNhdmVzKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0UmVz
dG9yZUNhbGxlZVNhdmVzKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpjb3B5Q2Fs
bGVlU2F2ZXNUb1ZNQ2FsbGVlU2F2ZXNCdWZmZXIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhl
bHBlcnM6OnJlc3RvcmVDYWxsZWVTYXZlc0Zyb21WTUNhbGxlZVNhdmVzQnVmZmVyKToKKyAgICAg
ICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpjb3B5Q2FsbGVlU2F2ZXNGcm9tRnJhbWVPclJlZ2lz
dGVyVG9WTUNhbGxlZVNhdmVzQnVmZmVyKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJz
OjplbWl0TWF0ZXJpYWxpemVUYWdDaGVja1JlZ2lzdGVycyk6CisgICAgICAgIE5ldyBoZWxwZXJz
IHRvIHNhdmUgYW5kIHJlc3RvcmUgY2FsbGVlIHNhdmVzIGFzIHdlbGwgYXMgbWF0ZXJpYWxpemUg
dGhlIHRhZyByZWdpc3RlcnMKKyAgICAgICAgY29udGVudHMuCisKKyAgICAgICAgKiBqaXQvRlBS
SW5mby5oOgorICAgICAgICAqIGppdC9HUFJJbmZvLmg6CisgICAgICAgIChKU0M6OkdQUkluZm86
OnRvUmVnaXN0ZXIpOgorICAgICAgICBVcGRhdGVkIHRvIGluY2x1ZGUgRlAgY2FsbGVlIHNhdmUg
cmVnaXN0ZXJzLiAgQWRkZWQgbnVtYmVyIG9mIGNhbGxlZSBzYXZlcyByZWdpc3RlcnMgYW5kCisg
ICAgICAgIGNsZWFudXAgcmVnaXN0ZXIgYWxpYXNlcyB0aGF0IGNvbGxpZGUgd2l0aCBjYWxsZWUg
c2F2ZSByZWdpc3RlcnMuCisKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRHZXRCeVZhbFdpdGhDYWNoZWRJZCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX2dldF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQp
OgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0R2V0QnlWYWxXaXRoQ2FjaGVkSWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRQdXRCeVZhbFdpdGhDYWNoZWRJZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRf
YnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKToKKyAgICAgICAg
VXNlcyBuZXcgc3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzIHJlZ2lzdGVyIHNldCB0byBsaW1pdCB3
aGF0IHJlZ2lzdGVycyBhcmUgYXZhaWxhYmxlIGZvciAKKyAgICAgICAgdGVtcG9yYXJpZXMuCisK
KyAgICAgICAgKiBqaXQvUmVnaXN0ZXJTZXQuY3BwOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNl
dDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6
OmNhbGxlZVNhdmVSZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6bGxpbnRC
YXNlbGluZUNhbGxlZVNhdmVSZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6
ZGZnQ2FsbGVlU2F2ZVJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0OjpmdGxD
YWxsZWVTYXZlUmVnaXN0ZXJzKToKKyAgICAgICAgKiBqaXQvUmVnaXN0ZXJTZXQuaDoKKyAgICAg
ICAgTmV3IHJlZ2lzdGVyIHNldHMgd2l0aCB0aGUgY2FsbGVlIHNhdmVzIHVzZWQgYnkgdmFyaW91
cyB0aWVycyBhcyB3ZWxsIGFzIG9uZSBsaXN0aW5nIHJlZ2lzdGVycworICAgICAgICBub3QgYXZh
aWxibGUgdG8gc3R1YiBjb2RlLgorCisgICAgICAgICogaml0L1NwZWNpYWxpemVkVGh1bmtKSVQu
aDoKKyAgICAgICAgKEpTQzo6U3BlY2lhbGl6ZWRUaHVua0pJVDo6U3BlY2lhbGl6ZWRUaHVua0pJ
VCk6CisgICAgICAgIChKU0M6OlNwZWNpYWxpemVkVGh1bmtKSVQ6OmxvYWREb3VibGVBcmd1bWVu
dCk6CisgICAgICAgIChKU0M6OlNwZWNpYWxpemVkVGh1bmtKSVQ6OnJldHVybkpTVmFsdWUpOgor
ICAgICAgICAoSlNDOjpTcGVjaWFsaXplZFRodW5rSklUOjpyZXR1cm5Eb3VibGUpOgorICAgICAg
ICAoSlNDOjpTcGVjaWFsaXplZFRodW5rSklUOjpyZXR1cm5JbnQzMik6CisgICAgICAgIChKU0M6
OlNwZWNpYWxpemVkVGh1bmtKSVQ6OnJldHVybkpTQ2VsbCk6CisgICAgICAgIChKU0M6OlNwZWNp
YWxpemVkVGh1bmtKSVQ6OmNhbGxEb3VibGVUb0RvdWJsZVByZXNlcnZpbmdSZXR1cm4pOgorICAg
ICAgICAoSlNDOjpTcGVjaWFsaXplZFRodW5rSklUOjplbWl0U2F2ZVRoZW5NYXRlcmlhbGl6ZVRh
Z1JlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OlNwZWNpYWxpemVkVGh1bmtKSVQ6OmVtaXRSZXN0
b3JlU2F2ZWRUYWdSZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpTcGVjaWFsaXplZFRodW5rSklU
Ojp0YWdSZXR1cm5Bc0ludDMyKToKKyAgICAgICAgKiBqaXQvVGh1bmtHZW5lcmF0b3JzLmNwcDoK
KyAgICAgICAgKEpTQzo6bmF0aXZlRm9yR2VuZXJhdG9yKToKKyAgICAgICAgQ2hhbmdlZCB0byBz
YXZlIGFuZCByZXN0b3JlIGV4aXN0aW5nIHRhZyByZWdpc3RlciBjb250ZW50cyBhcyB0aGUgbWF5
IGNvbnRhaW4gb3RoZXIgdmFsdWVzLgorICAgICAgICBBZnRlciBzYXZpbmcgdGhlIGV4aXN0aW5n
IHZhbHVlcywgd2UgbWF0ZXJpYWxpemUgdGhlIHRhZyBjb25zdGFudHMuCisKKyAgICAgICAgKiBq
aXQvVGVtcFJlZ2lzdGVyU2V0Lmg6CisgICAgICAgIChKU0M6OlRlbXBSZWdpc3RlclNldDo6Z2V0
RlBSQnlJbmRleCk6CisgICAgICAgIChKU0M6OlRlbXBSZWdpc3RlclNldDo6Z2V0RnJlZUZQUik6
CisgICAgICAgIChKU0M6OlRlbXBSZWdpc3RlclNldDo6c2V0QnlJbmRleCk6CisgICAgICAgICog
b2ZmbGluZWFzbS9hcm02NC5yYjoKKyAgICAgICAgKiBvZmZsaW5lYXNtL3JlZ2lzdGVycy5yYjoK
KyAgICAgICAgQWRkZWQgbWV0aG9kcyBmb3IgZmxvYXRpbmcgcG9pbnQgcmVnaXN0ZXJzIHRvIHN1
cHBvcnQgY2FsbGVlIHNhdmUgRlAgcmVnaXN0ZXJzLgorCisgICAgICAgICogaml0L0pJVEFyaXRo
bWV0aWMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9tb2QpOgorICAgICAg
ICBSZW1vdmVkIHVubmVjZXNzYXJ5ICNpZiBDUFUoWDg2XzY0KSBjaGVjayB0byB0aGlzIDMyIGJp
dCBvbmx5IGZpbGUuCisKKyAgICAgICAgKiBvZmZsaW5lYXNtL3g4Ni5yYjoKKyAgICAgICAgRml4
ZWQgV2luZG93cyBjYWxsZWUgc2F2ZXMgbmFtaW5nLgorCisgICAgICAgICogcnVudGltZS9WTS5j
cHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAg
ICAgICAoSlNDOjpWTTo6Y2FsbGVlU2F2ZVJlZ2lzdGVyc0J1ZmZlck9mZnNldCk6CisgICAgICAg
IChKU0M6OlZNOjpnZXRBbGxDYWxsZWVTYXZlUmVnaXN0ZXJzTWFwKToKKyAgICAgICAgUHJvdmlk
ZSBhIFJlZ2lzdGVyU2F2ZU1hcCB0aGF0IGhhcyBhbGwgcmVnaXN0ZXJzIHRoYXQgbWlnaHQgYmUg
c2F2ZWQuICBBZGRlZCBhIGNhbGxlZSBzYXZlIGJ1ZmZlciB0byBiZQorICAgICAgICB1c2VkIGZv
ciBPU1IgZXhpdCBhbmQgZm9yIGV4Y2VwdGlvbiBwcm9jZXNzaW5nIGluIGEgZnV0dXJlIHBhdGNo
LgorCiAyMDE1LTA5LTA4ICBTdWtvbHNhayBTYWtzaHV3b25nICA8c3Vrb2xzYWtAZ21haWwuY29t
PgogCiAgICAgICAgIFJlZmFjdG9yIHRoZSB0ZXN0IGZvciB0aGUgYXJpdGhtZXRpYyBpbnN0cnVj
dGlvbnMgaW4gV2ViQXNzZW1ibHkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50
eHQJKHJldmlzaW9uIDE4OTU0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3Rz
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzU3LDcgKzM1Nyw2IEBAIHNldChKYXZhU2NyaXB0Q29y
ZV9TT1VSQ0VTCiAgICAgaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcAogCiAgICAgaml0L0Fj
Y2Vzc29yQ2FsbEpJVFN0dWJSb3V0aW5lLmNwcAotICAgIGppdC9Bcml0eUNoZWNrRmFpbFJldHVy
blRodW5rcy5jcHAKICAgICBqaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAogICAgIGppdC9CaW5hcnlT
d2l0Y2guY3BwCiAgICAgaml0L0V4ZWN1dGFibGVBbGxvY2F0aW9uRnV6ei5jcHAKQEAgLTM4NSw2
ICszODQsOCBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGppdC9KSVRUb0RGR0Rl
ZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5jcHAKICAgICBqaXQvUG9seW1vcnBoaWNDYWxsU3R1
YlJvdXRpbmUuY3BwCiAgICAgaml0L1JlZy5jcHAKKyAgICBqaXQvUmVnaXN0ZXJBdE9mZnNldC5j
cHAKKyAgICBqaXQvUmVnaXN0ZXJBdE9mZnNldExpc3QuY3BwCiAgICAgaml0L1JlZ2lzdGVyUHJl
c2VydmF0aW9uV3JhcHBlckdlbmVyYXRvci5jcHAKICAgICBqaXQvUmVnaXN0ZXJTZXQuY3BwCiAg
ICAgaml0L1JlcGF0Y2guY3BwCkBAIC05MDMsNyArOTA0LDYgQEAgaWYgKEVOQUJMRV9GVExfSklU
KQogICAgICAgICBmdGwvRlRMT3BlcmF0aW9ucy5jcHAKICAgICAgICAgZnRsL0ZUTE91dHB1dC5j
cHAKICAgICAgICAgZnRsL0ZUTFJlY292ZXJ5T3Bjb2RlLmNwcAotICAgICAgICBmdGwvRlRMUmVn
aXN0ZXJBdE9mZnNldC5jcHAKICAgICAgICAgZnRsL0ZUTFNhdmVSZXN0b3JlLmNwcAogICAgICAg
ICBmdGwvRlRMU2xvd1BhdGhDYWxsLmNwcAogICAgICAgICBmdGwvRlRMU2xvd1BhdGhDYWxsS2V5
LmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ov
SmF2YVNjcmlwdENvcmUudmN4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCShyZXZpc2lv
biAxODk1NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJv
ai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC01NDQsNyArNTQ0LDYg
QEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGZ0bFxGVExPcGVyYXRpb25zLmNwcCIgLz4K
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGZ0bFxGVExPdXRwdXQuY3BwIiAvPgogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5cZnRsXEZUTFJlY292ZXJ5T3Bjb2RlLmNwcCIgLz4KLSAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGZ0bFxGVExSZWdpc3RlckF0T2Zmc2V0LmNwcCIgLz4KICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGZ0bFxGVExTYXZlUmVzdG9yZS5jcHAiIC8+CiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxmdGxcRlRMU2xvd1BhdGhDYWxsLmNwcCIgLz4KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGZ0bFxGVExTbG93UGF0aENhbGxLZXkuY3BwIiAvPgpAQCAt
NjE4LDcgKzYxNyw2IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRlclxQ
cm90b0NhbGxGcmFtZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnRlcnBy
ZXRlclxTdGFja1Zpc2l0b3IuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caml0
XEFjY2Vzc29yQ2FsbEpJVFN0dWJSb3V0aW5lLmNwcCIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXGppdFxBcml0eUNoZWNrRmFpbFJldHVyblRodW5rcy5jcHAiIC8+CiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxqaXRcQXNzZW1ibHlIZWxwZXJzLmNwcCIgLz4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXGppdFxCaW5hcnlTd2l0Y2guY3BwIiAvPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5caml0XEV4ZWN1dGFibGVBbGxvY2F0aW9uRnV6ei5jcHAiIC8+CkBAIC02NDgs
NiArNjQ2LDggQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGppdFxTZXR1cFZhcmFyZ3NG
cmFtZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxqaXRcUG9seW1vcnBoaWND
YWxsU3R1YlJvdXRpbmUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caml0XFJl
Zy5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxqaXRcUmVnaXN0ZXJBdE9mZnNl
dC5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxqaXRcUmVnaXN0ZXJBdE9mZnNl
dExpc3QuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caml0XFJlZ2lzdGVyUHJl
c2VydmF0aW9uV3JhcHBlckdlbmVyYXRvci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxqaXRcUmVnaXN0ZXJTZXQuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
aml0XFJlcGF0Y2guY3BwIiAvPgpAQCAtMTI5NSw3ICsxMjk1LDYgQEAKICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGZ0bFxGVExPcGVyYXRpb25zLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxmdGxcRlRMT3V0cHV0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxm
dGxcRlRMUmVjb3ZlcnlPcGNvZGUuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGZ0
bFxGVExSZWdpc3RlckF0T2Zmc2V0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxm
dGxcRlRMU2F2ZVJlc3RvcmUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGZ0bFxG
VExTbG93UGF0aENhbGwuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGZ0bFxGVExT
bG93UGF0aENhbGxLZXkuaCIgLz4KQEAgLTE0MTcsNyArMTQxNiw2IEBACiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRlclxSZWdpc3Rlci5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5caW50ZXJwcmV0ZXJcU3RhY2tWaXNpdG9yLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxqaXRcQWNjZXNzb3JDYWxsSklUU3R1YlJvdXRpbmUuaCIgLz4KLSAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGppdFxBcml0eUNoZWNrRmFpbFJldHVyblRodW5rcy5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caml0XEFzc2VtYmx5SGVscGVycy5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caml0XEJpbmFyeVN3aXRjaC5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5caml0XENDYWxsSGVscGVycy5oIiAvPgpAQCAtMTQ0OCw2ICsx
NDQ2LDggQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGppdFxTZXR1cFZhcmFyZ3NGcmFt
ZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caml0XFBvbHltb3JwaGljQ2FsbFN0
dWJSb3V0aW5lLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxqaXRcUmVnLmgiIC8+
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxqaXRcUmVnaXN0ZXJBdE9mZnNldC5oIiAvPgor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caml0XFJlZ2lzdGVyQXRPZmZzZXRMaXN0LmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxqaXRcUmVnaXN0ZXJNYXAuaCIgLz4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGppdFxSZWdpc3RlclByZXNlcnZhdGlvbldyYXBwZXJHZW5l
cmF0b3IuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGppdFxSZWdpc3RlclNldC5o
IiAvPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ov
SmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ou
ZmlsdGVycwkocmV2aXNpb24gMTg5NTQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDkxLDkgKzE0OTEsNiBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChD
b25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVj
dE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3RvclByb3RvY29sT2JqZWN0cy5jcHAiPgogICAg
ICAgPEZpbHRlcj5EZXJpdmVkIFNvdXJjZXM8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KLSAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGppdFxBcml0eUNoZWNrRmFpbFJldHVyblRodW5rcy5j
cHAiPgotICAgICAgPEZpbHRlcj5qaXQ8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGppdFxSZWdpc3RlclByZXNlcnZhdGlvbldyYXBwZXJHZW5l
cmF0b3IuY3BwIj4KICAgICAgIDxGaWx0ZXI+aml0PC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+
CkBAIC00MDM0LDkgKzQwMzEsNiBAQAogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAg
ICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25C
dWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZl
ZFNvdXJjZXNcSlNEYXRhVmlld1Byb3RvdHlwZS5sdXQuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGppdFxBcml0eUNoZWNrRmFpbFJldHVyblRodW5rcy5oIj4KLSAgICAgIDxGaWx0
ZXI+aml0PC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxqaXRcUmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVyR2VuZXJhdG9yLmgiPgogICAgICAg
PEZpbHRlcj5qaXQ8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxODk1NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtMzgyLDEyICszODIsOCBAQAogCQkwRjZCMUNCQTE4NjEyNDRDMDA4NDVEOTcgLyogUmVn
aXN0ZXJQcmVzZXJ2YXRpb25Nb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjZCMUNCODE4NjEyNDRDMDA4NDVEOTcgLyogUmVnaXN0ZXJQcmVzZXJ2
YXRpb25Nb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMEY2QjFDQkQxODYxMjQ2QTAwODQ1RDk3IC8qIFJlZ2lzdGVyUHJlc2VydmF0aW9uV3Jh
cHBlckdlbmVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjZCMUNCQjE4NjEyNDZBMDA4NDVEOTcgLyogUmVnaXN0ZXJQcmVzZXJ2YXRpb25X
cmFwcGVyR2VuZXJhdG9yLmNwcCAqLzsgfTsKIAkJMEY2QjFDQkUxODYxMjQ2QTAwODQ1RDk3IC8q
IFJlZ2lzdGVyUHJlc2VydmF0aW9uV3JhcHBlckdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2QjFDQkMxODYxMjQ2QTAwODQ1RDk3IC8q
IFJlZ2lzdGVyUHJlc2VydmF0aW9uV3JhcHBlckdlbmVyYXRvci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTBGNkIxQ0MzMTg2MkM0NzgwMDg0NUQ5
NyAvKiBGVExSZWdpc3RlckF0T2Zmc2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGNkIxQ0JGMTg2MkM0NzgwMDg0NUQ5NyAvKiBGVExSZWdpc3Rl
ckF0T2Zmc2V0LmNwcCAqLzsgfTsKLQkJMEY2QjFDQzQxODYyQzQ3ODAwODQ1RDk3IC8qIEZUTFJl
Z2lzdGVyQXRPZmZzZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGNkIxQ0MwMTg2MkM0NzgwMDg0NUQ5NyAvKiBGVExSZWdpc3RlckF0T2Zmc2V0Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY2QjFD
QzUxODYyQzQ3ODAwODQ1RDk3IC8qIEZUTFVud2luZEluZm8uY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2QjFDQzExODYyQzQ3ODAwODQ1RDk3IC8q
IEZUTFVud2luZEluZm8uY3BwICovOyB9OwogCQkwRjZCMUNDNjE4NjJDNDc4MDA4NDVEOTcgLyog
RlRMVW53aW5kSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY2QjFDQzIxODYyQzQ3ODAwODQ1RDk3IC8qIEZUTFVud2luZEluZm8uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkwRjZCMUNDOTE4NjQx
REY4MDA4NDVEOTcgLyogQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3MuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2QjFDQzcxODY0MURGODAwODQ1
RDk3IC8qIEFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzLmNwcCAqLzsgfTsKLQkJMEY2QjFDQ0Ex
ODY0MURGODAwODQ1RDk3IC8qIEFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjZCMUNDODE4NjQxREY4MDA4
NDVEOTcgLyogQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjZDNzM1MDFBQzlGOTlGMDBCRTE2ODIg
LyogVmFyaWFibGVXcml0ZUZpcmVEZXRhaWwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2QzczNEUxQUM5Rjk5RjAwQkUxNjgyIC8qIFZhcmlhYmxl
V3JpdGVGaXJlRGV0YWlsLmNwcCAqLzsgfTsKIAkJMEY2QzczNTExQUM5Rjk5RjAwQkUxNjgyIC8q
IFZhcmlhYmxlV3JpdGVGaXJlRGV0YWlsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjZDNzM0RjFBQzlGOTlGMDBCRTE2ODIgLyogVmFyaWFibGVXcml0
ZUZpcmVEZXRhaWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwRjZFODQ1QTE5MDMwQkVGMDA1NjI3NDEgLyogREZHVmFyaWFibGVBY2Nlc3NEYXRh
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNkU4
NDU5MTkwMzBCRUYwMDU2Mjc0MSAvKiBERkdWYXJpYWJsZUFjY2Vzc0RhdGEuY3BwICovOyB9OwpA
QCAtOTg3LDYgKzk4Myw4IEBACiAJCTY1MTEyMzA3MTQwNDZCMEEwMDJCMTAxRCAvKiB0ZXN0UmVn
RXhwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1
MTEyMkU1MTQwNDY5QkEwMDJCMTAxRCAvKiB0ZXN0UmVnRXhwLmNwcCAqLzsgfTsKIAkJNjUxNEYy
MTkxOEIzRTE2NzAwOThGRjhCIC8qIEJ5dGVjb2Rlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjUxNEYyMTcxOEIzRTE2NzAwOThGRjhCIC8qIEJ5dGVj
b2Rlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTY1MzAzRDY0MTQ0N0I5RTEwMEQzRjkwNCAvKiBQYXJzZXJUb2tlbnMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1MzAzRDYzMTQ0N0I5RTEwMEQzRjkw
NCAvKiBQYXJzZXJUb2tlbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQk2NTQwQzdBMDFCODJFMUMzMDAwRjZCNzkgLyogUmVnaXN0ZXJBdE9mZnNl
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTQw
Qzc5RTFCODJEOUNFMDAwRjZCNzkgLyogUmVnaXN0ZXJBdE9mZnNldC5jcHAgKi87IH07CisJCTY1
NDBDN0ExMUI4MkUxQzMwMDBGNkI3OSAvKiBSZWdpc3RlckF0T2Zmc2V0TGlzdC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTQwQzc5QzFCODJEOTlE
MDAwRjZCNzkgLyogUmVnaXN0ZXJBdE9mZnNldExpc3QuY3BwICovOyB9OwogCQk2NTQ2RjUyMTFB
MzJCMzEzMDA2RjA3RDUgLyogTnVsbEdldHRlckZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NDZGNTFGMUEzMkE1OUMwMDZGMDdENSAv
KiBOdWxsR2V0dGVyRnVuY3Rpb24uY3BwICovOyB9OwogCQk2NTUyNUZDNTFBNkREODAxMDA3QjU0
OTUgLyogTnVsbFNldHRlckZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDY1NTI1RkMzMUE2REQzQjMwMDdCNTQ5NSAvKiBOdWxsU2V0dGVy
RnVuY3Rpb24uY3BwICovOyB9OwogCQk2NTUzQTMzMTE3QTFGMUVFMDA4Q0Y2RjMgLyogQ29tbW9u
U2xvd1BhdGhzRXhjZXB0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA2NTUzQTMyRjE3QTFGMUVFMDA4Q0Y2RjMgLyogQ29tbW9uU2xvd1BhdGhz
RXhjZXB0aW9ucy5jcHAgKi87IH07CkBAIC0yMjE0LDEyICsyMjEyLDggQEAKIAkJMEY2QjFDQjgx
ODYxMjQ0QzAwODQ1RDk3IC8qIFJlZ2lzdGVyUHJlc2VydmF0aW9uTW9kZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdpc3RlclByZXNlcnZhdGlvbk1vZGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY2QjFDQkIxODYxMjQ2QTAwODQ1RDk3IC8qIFJlZ2lz
dGVyUHJlc2VydmF0aW9uV3JhcHBlckdlbmVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBSZWdpc3RlclByZXNlcnZhdGlvbldyYXBwZXJHZW5lcmF0b3IuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjZCMUNCQzE4NjEyNDZBMDA4NDVEOTcg
LyogUmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVyR2VuZXJhdG9yLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ2lzdGVyUHJlc2VydmF0aW9uV3JhcHBlckdlbmVyYXRvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRjZCMUNCRjE4NjJDNDc4MDA4NDVEOTcg
LyogRlRMUmVnaXN0ZXJBdE9mZnNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBGVExSZWdpc3RlckF0T2Zmc2V0LmNwcDsgcGF0aCA9IGZ0bC9GVExSZWdpc3RlckF0
T2Zmc2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEY2QjFDQzAxODYyQzQ3
ODAwODQ1RDk3IC8qIEZUTFJlZ2lzdGVyQXRPZmZzZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gRlRMUmVnaXN0ZXJBdE9mZnNldC5oOyBwYXRoID0gZnRsL0ZUTFJlZ2lzdGVy
QXRPZmZzZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY2QjFDQzExODYyQzQ3
ODAwODQ1RDk3IC8qIEZUTFVud2luZEluZm8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gRlRMVW53aW5kSW5mby5jcHA7IHBhdGggPSBmdGwvRlRMVW53aW5kSW5mby5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNkIxQ0MyMTg2MkM0NzgwMDg0NUQ5
NyAvKiBGVExVbndpbmRJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZU
TFVud2luZEluZm8uaDsgcGF0aCA9IGZ0bC9GVExVbndpbmRJbmZvLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTBGNkIxQ0M3MTg2NDFERjgwMDg0NUQ5NyAvKiBBcml0eUNoZWNrRmFp
bFJldHVyblRodW5rcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBB
cml0eUNoZWNrRmFpbFJldHVyblRodW5rcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTBGNkIxQ0M4MTg2NDFERjgwMDg0NUQ5NyAvKiBBcml0eUNoZWNrRmFpbFJldHVyblRodW5r
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcml0eUNoZWNrRmFpbFJldHVy
blRodW5rcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjZDNzM0RTFBQzlGOTlG
MDBCRTE2ODIgLyogVmFyaWFibGVXcml0ZUZpcmVEZXRhaWwuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gVmFyaWFibGVXcml0ZUZpcmVEZXRhaWwuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRjZDNzM0RjFBQzlGOTlGMDBCRTE2ODIgLyogVmFyaWFi
bGVXcml0ZUZpcmVEZXRhaWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmFy
aWFibGVXcml0ZUZpcmVEZXRhaWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY2
RTg0NTkxOTAzMEJFRjAwNTYyNzQxIC8qIERGR1ZhcmlhYmxlQWNjZXNzRGF0YS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdWYXJpYWJsZUFjY2Vzc0RhdGEuY3Bw
OyBwYXRoID0gZGZnL0RGR1ZhcmlhYmxlQWNjZXNzRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0yNzk5LDYgKzI3OTMsMTAgQEAKIAkJNjUyQTNBMjMxNjUxQzY5NzAwQTgw
QUZFIC8qIEE2NERPcGNvZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQTY0
RE9wY29kZS5oOyBwYXRoID0gZGlzYXNzZW1ibGVyL0FSTTY0L0E2NERPcGNvZGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjUzMDNENjMxNDQ3QjlFMTAwRDNGOTA0IC8qIFBhcnNl
clRva2Vucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYXJzZXJUb2tlbnMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU0MDBDMTAwQTY5QkFGMjAwNTA5ODg3
IC8qIFByb3BlcnR5TmFtZUFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBQcm9wZXJ0eU5hbWVBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2NTQw
Qzc5QzFCODJEOTlEMDAwRjZCNzkgLyogUmVnaXN0ZXJBdE9mZnNldExpc3QuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVnaXN0ZXJBdE9mZnNldExpc3QuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2NTQwQzc5RDFCODJEOTlEMDAwRjZCNzkgLyog
UmVnaXN0ZXJBdE9mZnNldExpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVnaXN0ZXJBdE9mZnNldExpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjU0
MEM3OUUxQjgyRDlDRTAwMEY2Qjc5IC8qIFJlZ2lzdGVyQXRPZmZzZXQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVnaXN0ZXJBdE9mZnNldC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTY1NDBDNzlGMUI4MkQ5Q0UwMDBGNkI3OSAvKiBSZWdpc3Rl
ckF0T2Zmc2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ2lzdGVyQXRP
ZmZzZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU0NkY1MUYxQTMyQTU5QzAw
NkYwN0Q1IC8qIE51bGxHZXR0ZXJGdW5jdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IGxpbmVFbmRpbmcgPSAwOyBwYXRoID0gTnVsbEdldHRlckZ1bmN0aW9uLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgeGNMYW5ndWFnZVNwZWNpZmljYXRpb25JZGVudGlmaWVyID0g
eGNvZGUubGFuZy5jcHA7IH07CiAJCTY1NDZGNTIwMUEzMkE1OUMwMDZGMDdENSAvKiBOdWxsR2V0
dGVyRnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTnVsbEdldHRl
ckZ1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1NTI1RkMzMUE2REQz
QjMwMDdCNTQ5NSAvKiBOdWxsU2V0dGVyRnVuY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTnVsbFNldHRlckZ1bmN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTM5NjgsOCArMzk2Niw2IEBACiAJCQkJMEZFQTBBMDYxNzA1MTNEQjAw
QkI3MjJDIC8qIEZUTE91dHB1dC5oICovLAogCQkJCTBGNDg1MzI1MTg3REZERUMwMDgzQjY4NyAv
KiBGVExSZWNvdmVyeU9wY29kZS5jcHAgKi8sCiAJCQkJMEY0ODUzMjYxODdERkRFQzAwODNCNjg3
IC8qIEZUTFJlY292ZXJ5T3Bjb2RlLmggKi8sCi0JCQkJMEY2QjFDQkYxODYyQzQ3ODAwODQ1RDk3
IC8qIEZUTFJlZ2lzdGVyQXRPZmZzZXQuY3BwICovLAotCQkJCTBGNkIxQ0MwMTg2MkM0NzgwMDg0
NUQ5NyAvKiBGVExSZWdpc3RlckF0T2Zmc2V0LmggKi8sCiAJCQkJMEZDRUZBQTkxODA0QzEzRTAw
NDcyQ0U0IC8qIEZUTFNhdmVSZXN0b3JlLmNwcCAqLywKIAkJCQkwRkNFRkFBQTE4MDRDMTNFMDA0
NzJDRTQgLyogRlRMU2F2ZVJlc3RvcmUuaCAqLywKIAkJCQkwRjI1RjFBQTE4MTYzNUYzMDA1MjJG
MzkgLyogRlRMU2xvd1BhdGhDYWxsLmNwcCAqLywKQEAgLTQxMDAsOCArNDA5Niw2IEBACiAJCQkJ
MEZGMDU0RjgxQUMzNUI0NDAwRTVCRTU3IC8qIEV4ZWN1dGFibGVBbGxvY2F0aW9uRnV6ei5oICov
LAogCQkJCTBGNzU3NkQwMThFMUZFRTkwMDJFRjRDRCAvKiBBY2Nlc3NvckNhbGxKSVRTdHViUm91
dGluZS5jcHAgKi8sCiAJCQkJMEY3NTc2RDExOEUxRkVFOTAwMkVGNENEIC8qIEFjY2Vzc29yQ2Fs
bEpJVFN0dWJSb3V0aW5lLmggKi8sCi0JCQkJMEY2QjFDQzcxODY0MURGODAwODQ1RDk3IC8qIEFy
aXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzLmNwcCAqLywKLQkJCQkwRjZCMUNDODE4NjQxREY4MDA4
NDVEOTcgLyogQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3MuaCAqLywKIAkJCQkwRjI0RTUzQjE3
RUE5RjU5MDBBQkIyMTcgLyogQXNzZW1ibHlIZWxwZXJzLmNwcCAqLywKIAkJCQkwRjI0RTUzQzE3
RUE5RjU5MDBBQkIyMTcgLyogQXNzZW1ibHlIZWxwZXJzLmggKi8sCiAJCQkJMEY2NEIyNkYxQTc4
NEJBRjAwNkU0RTY2IC8qIEJpbmFyeVN3aXRjaC5jcHAgKi8sCkBAIC00MTU0LDEyICs0MTQ4LDE0
IEBACiAJCQkJMEZDNzEyRTExN0NEODc4RjAwOENDOTNDIC8qIEpJVFRvREZHRGVmZXJyZWRDb21w
aWxhdGlvbkNhbGxiYWNrLmggKi8sCiAJCQkJQTc2RjU0QTIxM0IyOEFBQjAwRUYyQkNFIC8qIEpJ
VFdyaXRlQmFycmllci5oICovLAogCQkJCUE3NkM1MTc0MTE4Mjc0OEQwMDcxNUIwNSAvKiBKU0lu
dGVyZmFjZUpJVC5oICovLAotCQkJCTBGRUU5ODQyMUE4OTIyNzUwMDc1NEU5MyAvKiBTZXR1cFZh
cmFyZ3NGcmFtZS5jcHAgKi8sCi0JCQkJMEZFRTk4NDAxQTg4NjVCNjAwNzU0RTkzIC8qIFNldHVw
VmFyYXJnc0ZyYW1lLmggKi8sCiAJCQkJMEZFODM0MTUxQTZFRjk3QjAwRDA0ODQ3IC8qIFBvbHlt
b3JwaGljQ2FsbFN0dWJSb3V0aW5lLmNwcCAqLywKIAkJCQkwRkU4MzQxNjFBNkVGOTdCMDBEMDQ4
NDcgLyogUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuaCAqLywKIAkJCQkwRkE3QThFOTE4QjQx
M0M4MDA1MjM3MUQgLyogUmVnLmNwcCAqLywKIAkJCQkwRkE3QThFQTE4QjQxM0M4MDA1MjM3MUQg
LyogUmVnLmggKi8sCisJCQkJNjU0MEM3OUUxQjgyRDlDRTAwMEY2Qjc5IC8qIFJlZ2lzdGVyQXRP
ZmZzZXQuY3BwICovLAorCQkJCTY1NDBDNzlGMUI4MkQ5Q0UwMDBGNkI3OSAvKiBSZWdpc3RlckF0
T2Zmc2V0LmggKi8sCisJCQkJNjU0MEM3OUMxQjgyRDk5RDAwMEY2Qjc5IC8qIFJlZ2lzdGVyQXRP
ZmZzZXRMaXN0LmNwcCAqLywKKwkJCQk2NTQwQzc5RDFCODJEOTlEMDAwRjZCNzkgLyogUmVnaXN0
ZXJBdE9mZnNldExpc3QuaCAqLywKIAkJCQk2MjNBMzdFQjFCODdBN0JEMDA3NTQyMDkgLyogUmVn
aXN0ZXJNYXAuaCAqLywKIAkJCQkwRjZCMUNCQjE4NjEyNDZBMDA4NDVEOTcgLyogUmVnaXN0ZXJQ
cmVzZXJ2YXRpb25XcmFwcGVyR2VuZXJhdG9yLmNwcCAqLywKIAkJCQkwRjZCMUNCQzE4NjEyNDZB
MDA4NDVEOTcgLyogUmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVyR2VuZXJhdG9yLmggKi8sCkBA
IC00MTY5LDYgKzQxNjUsOCBAQAogCQkJCTBGMjRFNTRBMTdFRTI3NDkwMEFCQjIxNyAvKiBSZXBh
dGNoLmggKi8sCiAJCQkJMEZBN0E4RUQxOENFNEZEODAwNTIzNzFEIC8qIFNjcmF0Y2hSZWdpc3Rl
ckFsbG9jYXRvci5jcHAgKi8sCiAJCQkJMEYyNEU1NEIxN0VFMjc0OTAwQUJCMjE3IC8qIFNjcmF0
Y2hSZWdpc3RlckFsbG9jYXRvci5oICovLAorCQkJCTBGRUU5ODQyMUE4OTIyNzUwMDc1NEU5MyAv
KiBTZXR1cFZhcmFyZ3NGcmFtZS5jcHAgKi8sCisJCQkJMEZFRTk4NDAxQTg4NjVCNjAwNzU0RTkz
IC8qIFNldHVwVmFyYXJnc0ZyYW1lLmggKi8sCiAJCQkJQTcwOUYyRUYxN0EwQUMwNDAwNTEyRTk4
IC8qIFNsb3dQYXRoQ2FsbC5oICovLAogCQkJCUE3Mzg2NTUxMTE4Njk3QjQwMDU0MDI3OSAvKiBT
cGVjaWFsaXplZFRodW5rSklULmggKi8sCiAJCQkJQTdGRjY0N0ExOEM1MkU4NTAwQjU1MzA3IC8q
IFNwaWxsUmVnaXN0ZXJzTW9kZS5oICovLApAQCAtNTkxOSw3ICs1OTE3LDYgQEAKIAkJCQlCQzE4
QzNFNTBFMTZGNUNEMDBCMzQ0NjAgLyogQVBJQ2FzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNG
NjA1MTQwRTIwM0VGODAwQjlBNjREIC8qIEFyZ0xpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTJB
ODgwNjc5MTkxMDdENTUwMENCMEJCQiAvKiBERkdGdW5jdGlvbldoaXRlbGlzdC5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJMEY2QjFDQ0ExODY0MURGODAwODQ1RDk3IC8qIEFyaXR5Q2hlY2tGYWlsUmV0
dXJuVGh1bmtzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjZCMUNCOTE4NjEyNDRDMDA4NDVEOTcg
LyogQXJpdHlDaGVja01vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUExQTAwOUMxMTgzMUEyNkUw
MENGODcxMSAvKiBBUk02NEFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY4OThGMzIx
QjI3Njg5RjAwODNBMzNDIC8qIERGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmggaW4g
SGVhZGVycyAqLywKQEAgLTYzMTgsNyArNjMxNSw2IEBACiAJCQkJOUU3Mjk0MEIxOTBGMDUxNDAw
MUE5MUI1IC8qIEJ1bmRsZVBhdGguaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDg1MzJBMTg3REZE
RUMwMDgzQjY4NyAvKiBGVExSZWNvdmVyeU9wY29kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTM3
OTRFNzYxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggaW4gSGVhZGVycyAqLywK
LQkJCQkwRjZCMUNDNDE4NjJDNDc4MDA4NDVEOTcgLyogRlRMUmVnaXN0ZXJBdE9mZnNldC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEZDRUZBQUMxODA0QzEzRTAwNDcyQ0U0IC8qIEZUTFNhdmVSZXN0
b3JlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjI1RjFCMjE4MTYzNUYzMDA1MjJGMzkgLyogRlRM
U2xvd1BhdGhDYWxsLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzU0NjIyQjFCNjA2NUQxMDA1NDUz
ODYgLyogQ29uc3RydWN0QWJpbGl0eS5oIGluIEhlYWRlcnMgKi8sCkBAIC03Mzg1LDcgKzczODEs
NiBAQAogCQkJCTBGRTA1MDE1MUFBOTA5MTEwMEQzM0IzMyAvKiBEaXJlY3RBcmd1bWVudHNPZmZz
ZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1NUYwRjQxNEQxMDYzOTAwQUM3NjQ5IC8qIEFi
c3RyYWN0UEMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5QkQxMDdFQzM3NjAwNDI3QTQ4
IC8qIEFyZ0xpc3QuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMEY2QjFDQzkxODY0MURGODAwODQ1
RDk3IC8qIEFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTc5N0UwN0E5MUI4RkNGQjkwMDg0MDBCQSAvKiBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlFMzc5NEU3NTFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxl
QW5hbHl6ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY3NDNCQUExNkI4ODI0OTAwOUY5Mjc3
IC8qIEFSTTY0RGlzYXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNzY0OCw3ICs3NjQz
LDYgQEAKIAkJCQk4QjBGNDI0QzFBQkQ2REUyMDAzOTE3RUEgLyogSlNBcnJvd0Z1bmN0aW9uLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUEwQTJBMTcwOTYyOTYwMEJCNzIyQyAvKiBGVExPdXRw
dXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0ODUzMjkxODdERkRFQzAwODNCNjg3IC8qIEZU
TFJlY292ZXJ5T3Bjb2RlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTBGNkIxQ0MzMTg2MkM0Nzgw
MDg0NUQ5NyAvKiBGVExSZWdpc3RlckF0T2Zmc2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
Q0VGQUFCMTgwNEMxM0UwMDQ3MkNFNCAvKiBGVExTYXZlUmVzdG9yZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRjI1RjFCMTE4MTYzNUYzMDA1MjJGMzkgLyogRlRMU2xvd1BhdGhDYWxsLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGMjVGMUIzMTgxNjM1RjMwMDUyMkYzOSAvKiBGVExTbG93UGF0
aENhbGxLZXkuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC03OTE5LDYgKzc5MTMsOCBAQAogCQkJCTBG
M0UwMUFBMTlEMzUzQTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGRjYwQUMzMTY3NDBGODgwMDAyOTc3OSAvKiBSZWR1Y2VXaGl0ZXNwYWNl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQTdBOEVCMThCNDEzQzgwMDUyMzcxRCAvKiBSZWcu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNjU0MEM3QTExQjgyRTFDMzAwMEY2Qjc5IC8qIFJlZ2lz
dGVyQXRPZmZzZXRMaXN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTY1NDBDN0EwMUI4MkUxQzMw
MDBGNkI3OSAvKiBSZWdpc3RlckF0T2Zmc2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0Mjgw
ODQxMTA3RUMwOTMwMDEzRTdCMiAvKiBSZWdFeHAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTE3
MTJCM0IxMUM3QjIxMjAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGRTA1MDJDMUFBOTA5NTYwMEQzM0IzMyAvKiBWYXJPZmZzZXQuY3BwIGluIFNvdXJjZXMg
Ki8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5m
by5oCShyZXZpc2lvbiAxODk1NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q2FsbExpbmtJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNyw3ICsxMTcsNyBAQCBwdWJsaWM6
CiAgICAgICAgIENvZGVMb2NhdGlvbk5lYXJDYWxsIGNhbGxSZXR1cm5Mb2NhdGlvbiwgQ29kZUxv
Y2F0aW9uRGF0YUxhYmVsUHRyIGhvdFBhdGhCZWdpbiwKICAgICAgICAgQ29kZUxvY2F0aW9uTmVh
ckNhbGwgaG90UGF0aE90aGVyLCB1bnNpZ25lZCBjYWxsZWVHUFIpCiAgICAgewotICAgICAgICBt
X3JlZ2lzdGVyUHJlc2VydmF0aW9uTW9kZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihNdXN0UHJl
c2VydmVSZWdpc3RlcnMpOworICAgICAgICBtX3JlZ2lzdGVyUHJlc2VydmF0aW9uTW9kZSA9IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihSZWdpc3RlclByZXNlcnZhdGlvbk5vdFJlcXVpcmVkKTsKICAg
ICAgICAgbV9jYWxsVHlwZSA9IGNhbGxUeXBlOwogICAgICAgICBtX2NvZGVPcmlnaW4gPSBjb2Rl
T3JpZ2luOwogICAgICAgICBtX2NhbGxSZXR1cm5Mb2NhdGlvbiA9IGNhbGxSZXR1cm5Mb2NhdGlv
bjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
CShyZXZpc2lvbiAxODk1NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksNiArNjksMTAgQEAKICNpbmNsdWRlIDx3
dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9VbmlxdWVkU3RyaW5n
SW1wbC5oPgogCisjaWYgRU5BQkxFKEpJVCkKKyNpbmNsdWRlICJSZWdpc3RlckF0T2Zmc2V0TGlz
dC5oIgorI2VuZGlmCisKICNpZiBFTkFCTEUoREZHX0pJVCkKICNpbmNsdWRlICJERkdPcGVyYXRp
b25zLmgiCiAjZW5kaWYKQEAgLTE4ODksNiArMTg5MywxMCBAQCBDb2RlQmxvY2s6OkNvZGVCbG9j
ayhTY3JpcHRFeGVjdXRhYmxlKiBvCiAgICAgaWYgKHNpemVfdCBzaXplID0gdW5saW5rZWRDb2Rl
QmxvY2stPm51bWJlck9mT2JqZWN0QWxsb2NhdGlvblByb2ZpbGVzKCkpCiAgICAgICAgIG1fb2Jq
ZWN0QWxsb2NhdGlvblByb2ZpbGVzLnJlc2l6ZVRvRml0KHNpemUpOwogCisjaWYgRU5BQkxFKEpJ
VCkKKyAgICBzZXRDYWxsZWVTYXZlUmVnaXN0ZXJzKFJlZ2lzdGVyU2V0OjpsbGludEJhc2VsaW5l
Q2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKKyNlbmRpZgorCiAgICAgLy8gQ29weSBhbmQgdHJhbnNs
YXRlIHRoZSBVbmxpbmtlZEluc3RydWN0aW9ucwogICAgIHVuc2lnbmVkIGluc3RydWN0aW9uQ291
bnQgPSB1bmxpbmtlZENvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuY291bnQoKTsKICAgICBVbmxp
bmtlZEluc3RydWN0aW9uU3RyZWFtOjpSZWFkZXIgaW5zdHJ1Y3Rpb25SZWFkZXIodW5saW5rZWRD
b2RlQmxvY2stPmluc3RydWN0aW9ucygpKTsKQEAgLTMzMDUsNiArMzMxMywzMyBAQCB1bnNpZ25l
ZCBDb2RlQmxvY2s6OnJlb3B0aW1pemF0aW9uUmV0cnlDCiB9CiAKICNpZiBFTkFCTEUoSklUKQor
dm9pZCBDb2RlQmxvY2s6OnNldENhbGxlZVNhdmVSZWdpc3RlcnMoUmVnaXN0ZXJTZXQgY2FsbGVl
U2F2ZVJlZ2lzdGVycykKK3sKKyAgICBtX2NhbGxlZVNhdmVSZWdpc3RlcnMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFJlZ2lzdGVyQXRPZmZzZXRMaXN0PihjYWxsZWVTYXZlUmVnaXN0ZXJzKTsKK30KKwor
dm9pZCBDb2RlQmxvY2s6OnNldENhbGxlZVNhdmVSZWdpc3RlcnMoc3RkOjp1bmlxdWVfcHRyPFJl
Z2lzdGVyQXRPZmZzZXRMaXN0PiByZWdpc3RlckF0T2Zmc2V0TGlzdCkKK3sKKyAgICBtX2NhbGxl
ZVNhdmVSZWdpc3RlcnMgPSBXVEY6Om1vdmUocmVnaXN0ZXJBdE9mZnNldExpc3QpOworfQorICAg
IAorc3RhdGljIHNpemVfdCByb3VuZENhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycyhz
aXplX3QgY2FsbGVlU2F2ZVJlZ2lzdGVycykKK3sKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
Y3B1UmVnaXN0ZXJTaXplID0gc2l6ZW9mKHZvaWQqKTsKKyAgICByZXR1cm4gKFdURjo6cm91bmRV
cFRvTXVsdGlwbGVPZihzaXplb2YoUmVnaXN0ZXIpLCBjYWxsZWVTYXZlUmVnaXN0ZXJzICogY3B1
UmVnaXN0ZXJTaXplKSAvIHNpemVvZihSZWdpc3RlcikpOworCit9CisKK3NpemVfdCBDb2RlQmxv
Y2s6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKQorewor
ICAgIHJldHVybiByb3VuZENhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycyhudW1iZXJP
ZkxMSW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOworfQorCitzaXplX3QgQ29kZUJs
b2NrOjpjYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKQoreworICAgIHJldHVybiBy
b3VuZENhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycyhtX2NhbGxlZVNhdmVSZWdpc3Rl
cnMtPnNpemUoKSk7Cit9CisKIHZvaWQgQ29kZUJsb2NrOjpjb3VudFJlb3B0aW1pemF0aW9uKCkK
IHsKICAgICBtX3Jlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyKys7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAxODk1NDMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkK
QEAgLTgwLDYgKzgwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEV4ZWNTdGF0ZTsKIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKK2NsYXNzIFJlZ2lzdGVyQXRPZmZzZXRMaXN0Owog
Y2xhc3MgVHlwZUxvY2F0aW9uOwogY2xhc3MgSlNNb2R1bGVFbnZpcm9ubWVudDsKIApAQCAtNzI5
LDYgKzczMCwxMCBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdW5zaWduZWQgcmVv
cHRpbWl6YXRpb25SZXRyeUNvdW50ZXIoKSBjb25zdDsKICAgICB2b2lkIGNvdW50UmVvcHRpbWl6
YXRpb24oKTsKICNpZiBFTkFCTEUoSklUKQorICAgIHN0YXRpYyB1bnNpZ25lZCBudW1iZXJPZkxM
SW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCkgeyByZXR1cm4gUmVnaXN0ZXJTZXQ6Omxs
aW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCkubnVtYmVyT2ZTZXRSZWdpc3RlcnMoKTsg
fQorICAgIHN0YXRpYyBzaXplX3QgbGxpbnRCYXNlbGluZUNhbGxlZVNhdmVTcGFjZUFzVmlydHVh
bFJlZ2lzdGVycygpOworICAgIHNpemVfdCBjYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3Rl
cnMoKTsKKwogICAgIHVuc2lnbmVkIG51bWJlck9mREZHQ29tcGlsZXMoKTsKIAogICAgIGludDMy
X3QgY29kZVR5cGVUaHJlc2hvbGRNdWx0aXBsaWVyKCkgY29uc3Q7CkBAIC04MTQsNyArODE5LDE0
IEBAIHB1YmxpYzoKICAgICB1aW50MzJfdCBleGl0Q291bnRUaHJlc2hvbGRGb3JSZW9wdGltaXph
dGlvbkZyb21Mb29wKCk7CiAgICAgYm9vbCBzaG91bGRSZW9wdGltaXplTm93KCk7CiAgICAgYm9v
bCBzaG91bGRSZW9wdGltaXplRnJvbUxvb3BOb3coKTsKKworICAgIHZvaWQgc2V0Q2FsbGVlU2F2
ZVJlZ2lzdGVycyhSZWdpc3RlclNldCk7CisgICAgdm9pZCBzZXRDYWxsZWVTYXZlUmVnaXN0ZXJz
KHN0ZDo6dW5pcXVlX3B0cjxSZWdpc3RlckF0T2Zmc2V0TGlzdD4pOworICAgIAorICAgIFJlZ2lz
dGVyQXRPZmZzZXRMaXN0KiBjYWxsZWVTYXZlUmVnaXN0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9j
YWxsZWVTYXZlUmVnaXN0ZXJzLmdldCgpOyB9CiAjZWxzZSAvLyBObyBKSVQKKyAgICBzdGF0aWMg
dW5zaWduZWQgbnVtYmVyT2ZMTEludEJhc2VsaW5lQ2FsbGVlU2F2ZVJlZ2lzdGVycygpIHsgcmV0
dXJuIDA7IH0KKyAgICBzdGF0aWMgc2l6ZV90IGxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VB
c1ZpcnR1YWxSZWdpc3RlcnMoKSB7IHJldHVybiAwOyB9OwogICAgIHZvaWQgb3B0aW1pemVBZnRl
cldhcm1VcCgpIHsgfQogICAgIHVuc2lnbmVkIG51bWJlck9mREZHQ29tcGlsZXMoKSB7IHJldHVy
biAwOyB9CiAjZW5kaWYKQEAgLTg1Myw2ICs4NjUsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgLy8g
RklYTUU6IE1ha2UgdGhlc2UgcmVtYWluaW5nIG1lbWJlcnMgcHJpdmF0ZS4KIAorICAgIGludCBt
X251bUxvY2FsUmVnaXN0ZXJzRm9yQ2FsbGVlU2F2ZXM7CiAgICAgaW50IG1fbnVtQ2FsbGVlUmVn
aXN0ZXJzOwogICAgIGludCBtX251bVZhcnM7CiAgICAgYm9vbCBtX2lzQ29uc3RydWN0b3IgOiAx
OwpAQCAtMTAxMyw2ICsxMDI2LDcgQEAgcHJpdmF0ZToKICAgICBTZW50aW5lbExpbmtlZExpc3Q8
TExJbnRDYWxsTGlua0luZm8sIEJhc2ljUmF3U2VudGluZWxOb2RlPExMSW50Q2FsbExpbmtJbmZv
Pj4gbV9pbmNvbWluZ0xMSW50Q2FsbHM7CiAgICAgUmVmUHRyPEpJVENvZGU+IG1faml0Q29kZTsK
ICNpZiBFTkFCTEUoSklUKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWdpc3RlckF0T2Zmc2V0TGlz
dD4gbV9jYWxsZWVTYXZlUmVnaXN0ZXJzOwogICAgIEJhZzxTdHJ1Y3R1cmVTdHViSW5mbz4gbV9z
dHViSW5mb3M7CiAgICAgQmFnPEJ5VmFsSW5mbz4gbV9ieVZhbEluZm9zOwogICAgIEJhZzxDYWxs
TGlua0luZm8+IG1fY2FsbExpbmtJbmZvczsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lv
biAxODk1NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU4LDYgKzE1OCw4IEBAIEJ5dGVjb2Rl
R2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYKICAgICBmb3IgKGF1dG8mIGNvbnN0YW50
UmVnaXN0ZXIgOiBtX2xpbmtUaW1lQ29uc3RhbnRSZWdpc3RlcnMpCiAgICAgICAgIGNvbnN0YW50
UmVnaXN0ZXIgPSBudWxscHRyOwogCisgICAgYWxsb2NhdGVDYWxsZWVTYXZlU3BhY2UoKTsKKwog
ICAgIG1fY29kZUJsb2NrLT5zZXROdW1QYXJhbWV0ZXJzKDEpOyAvLyBBbGxvY2F0ZSBzcGFjZSBm
b3IgInRoaXMiCiAKICAgICBlbWl0T3Bjb2RlKG9wX2VudGVyKTsKQEAgLTE5OCw2ICsyMDAsOCBA
QCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mCiAKICAgICBpZiAobV9p
c0J1aWx0aW5GdW5jdGlvbikKICAgICAgICAgbV9zaG91bGRFbWl0RGVidWdIb29rcyA9IGZhbHNl
OworCisgICAgYWxsb2NhdGVDYWxsZWVTYXZlU3BhY2UoKTsKICAgICAKICAgICBTeW1ib2xUYWJs
ZSogZnVuY3Rpb25TeW1ib2xUYWJsZSA9IFN5bWJvbFRhYmxlOjpjcmVhdGUoKm1fdm0pOwogICAg
IGZ1bmN0aW9uU3ltYm9sVGFibGUtPnNldFVzZXNOb25TdHJpY3RFdmFsKG1fdXNlc05vblN0cmlj
dEV2YWwpOwpAQCAtNDkzLDYgKzQ5Nyw4IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdl
bmVyYXRvcihWTSYKICAgICBmb3IgKGF1dG8mIGNvbnN0YW50UmVnaXN0ZXIgOiBtX2xpbmtUaW1l
Q29uc3RhbnRSZWdpc3RlcnMpCiAgICAgICAgIGNvbnN0YW50UmVnaXN0ZXIgPSBudWxscHRyOwog
CisgICAgYWxsb2NhdGVDYWxsZWVTYXZlU3BhY2UoKTsKKwogICAgIG1fY29kZUJsb2NrLT5zZXRO
dW1QYXJhbWV0ZXJzKDEpOwogCiAgICAgZW1pdE9wY29kZShvcF9lbnRlcik7CkBAIC01MzcsNiAr
NTQzLDggQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJgogICAgIGlm
IChtX2lzQnVpbHRpbkZ1bmN0aW9uKQogICAgICAgICBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzID0g
ZmFsc2U7CiAKKyAgICBhbGxvY2F0ZUNhbGxlZVNhdmVTcGFjZSgpOworCiAgICAgU3ltYm9sVGFi
bGUqIG1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUgPSBTeW1ib2xUYWJsZTo6Y3JlYXRlKCpt
X3ZtKTsKICAgICBtb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlLT5zZXRVc2VzTm9uU3RyaWN0
RXZhbChtX3VzZXNOb25TdHJpY3RFdmFsKTsKICAgICBtb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRh
YmxlLT5zZXRTY29wZVR5cGUoU3ltYm9sVGFibGU6OlNjb3BlVHlwZTo6TGV4aWNhbFNjb3BlKTsK
QEAgLTMwNjQsNiArMzA3MiwxNyBAQCBMYWJlbFNjb3BlUHRyIEJ5dGVjb2RlR2VuZXJhdG9yOjpj
b250aW51CiAgICAgcmV0dXJuIExhYmVsU2NvcGVQdHI6Om51bGwoKTsKIH0KIAordm9pZCBCeXRl
Y29kZUdlbmVyYXRvcjo6YWxsb2NhdGVDYWxsZWVTYXZlU3BhY2UoKQoreworICAgIHNpemVfdCB2
aXJ0dWFsUmVnaXN0ZXJDb3VudEZvckNhbGxlZVNhdmVzID0gQ29kZUJsb2NrOjpsbGludEJhc2Vs
aW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCk7CisKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHZpcnR1YWxSZWdpc3RlckNvdW50Rm9yQ2FsbGVlU2F2ZXM7IGkrKykgewor
ICAgICAgICBSZWdpc3RlcklEKiBsb2NhbFJlZ2lzdGVyID0gYWRkVmFyKCk7CisgICAgICAgIGxv
Y2FsUmVnaXN0ZXItPnJlZigpOworICAgICAgICBtX2xvY2FsUmVnaXN0ZXJzRm9yQ2FsbGVlU2F2
ZVJlZ2lzdGVycy5hcHBlbmQobG9jYWxSZWdpc3Rlcik7CisgICAgfQorfQorCiB2b2lkIEJ5dGVj
b2RlR2VuZXJhdG9yOjphbGxvY2F0ZUFuZEVtaXRTY29wZSgpCiB7CiAgICAgbV9zY29wZVJlZ2lz
dGVyID0gYWRkVmFyKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCShyZXZpc2lvbiAxODk1NDMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHdv
cmtpbmcgY29weSkKQEAgLTY5Nyw2ICs2OTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
QUxXQVlTX0lOTElORSB2b2lkIHJld2luZEJpbmFyeU9wKCk7CiAgICAgICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCByZXdpbmRVbmFyeU9wKCk7CiAKKyAgICAgICAgdm9pZCBhbGxvY2F0ZUNhbGxlZVNh
dmVTcGFjZSgpOwogICAgICAgICB2b2lkIGFsbG9jYXRlQW5kRW1pdFNjb3BlKCk7CiAgICAgICAg
IFJlZ2lzdGVySUQqIGVtaXRMb2FkQXJyb3dGdW5jdGlvblRoaXMoUmVnaXN0ZXJJRCopOwogICAg
ICAgICB2b2lkIGVtaXRDb21wbGV4UG9wU2NvcGVzKFJlZ2lzdGVySUQqLCBDb250cm9sRmxvd0Nv
bnRleHQqIHRvcFNjb3BlLCBDb250cm9sRmxvd0NvbnRleHQqIGJvdHRvbVNjb3BlKTsKQEAgLTgx
MCw2ICs4MTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogbV9uZXdU
YXJnZXRSZWdpc3RlciB7IG51bGxwdHIgfTsKICAgICAgICAgUmVnaXN0ZXJJRCogbV9saW5rVGlt
ZUNvbnN0YW50UmVnaXN0ZXJzW0xpbmtUaW1lQ29uc3RhbnRDb3VudF07CiAKKyAgICAgICAgU2Vn
bWVudGVkVmVjdG9yPFJlZ2lzdGVySUQqLCAxNj4gbV9sb2NhbFJlZ2lzdGVyc0ZvckNhbGxlZVNh
dmVSZWdpc3RlcnM7CiAgICAgICAgIFNlZ21lbnRlZFZlY3RvcjxSZWdpc3RlcklELCAzMj4gbV9j
b25zdGFudFBvb2xSZWdpc3RlcnM7CiAgICAgICAgIFNlZ21lbnRlZFZlY3RvcjxSZWdpc3RlcklE
LCAzMj4gbV9jYWxsZWVSZWdpc3RlcnM7CiAgICAgICAgIFNlZ21lbnRlZFZlY3RvcjxSZWdpc3Rl
cklELCAzMj4gbV9wYXJhbWV0ZXJzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdKSVRDb21waWxlci5jcHAJKHJldmlzaW9uIDE4OTU0MykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsy
OCw2IEBACiAKICNpZiBFTkFCTEUoREZHX0pJVCkKIAotI2luY2x1ZGUgIkFyaXR5Q2hlY2tGYWls
UmV0dXJuVGh1bmtzLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiREZHRmFp
bGVkRmluYWxpemVyLmgiCiAjaW5jbHVkZSAiREZHSW5saW5lQ2FjaGVXcmFwcGVySW5saW5lcy5o
IgpAQCAtMTAyLDcgKzEwMSwxMiBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRW50cnkoKQog
ICAgIC8vIGJvdGggbm9ybWFsIHJldHVybiBjb2RlIGFuZCB3aGVuIGp1bXBpbmcgdG8gYW4gZXhj
ZXB0aW9uIGhhbmRsZXIpLgogICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CiAgICAgZW1pdFB1
dEltbWVkaWF0ZVRvQ2FsbEZyYW1lSGVhZGVyKG1fY29kZUJsb2NrLCBKU1N0YWNrOjpDb2RlQmxv
Y2spOwotICAgIGppdEFzc2VydFRhZ3NJblBsYWNlKCk7Cit9CisKK3ZvaWQgSklUQ29tcGlsZXI6
OmNvbXBpbGVTZXR1cFJlZ2lzdGVyc0ZvckVudHJ5KCkKK3sKKyAgICBlbWl0U2F2ZUNhbGxlZVNh
dmVzKCk7CisgICAgZW1pdE1hdGVyaWFsaXplVGFnQ2hlY2tSZWdpc3RlcnMoKTsgICAgCiB9CiAK
IHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVCb2R5KCkKQEAgLTExOSw2ICsxMjMsOCBAQCB2b2lk
IEpJVENvbXBpbGVyOjpjb21waWxlRXhjZXB0aW9uSGFuZGxlCiAgICAgaWYgKCFtX2V4Y2VwdGlv
bkNoZWNrc1dpdGhDYWxsRnJhbWVSb2xsYmFjay5lbXB0eSgpKSB7CiAgICAgICAgIG1fZXhjZXB0
aW9uQ2hlY2tzV2l0aENhbGxGcmFtZVJvbGxiYWNrLmxpbmsodGhpcyk7CiAKKyAgICAgICAgY29w
eUNhbGxlZVNhdmVzVG9WTUNhbGxlZVNhdmVzQnVmZmVyKCk7CisKICAgICAgICAgLy8gbG9va3Vw
RXhjZXB0aW9uSGFuZGxlckZyb21DYWxsZXJGcmFtZSBpcyBwYXNzZWQgdHdvIGFyZ3VtZW50cywg
dGhlIFZNIGFuZCB0aGUgZXhlYyAodGhlIENhbGxGcmFtZSopLgogICAgICAgICBtb3ZlKFRydXN0
ZWRJbW1QdHIodm0oKSksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAgICAgIG1vdmUoR1BS
SW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CkBAIC0xMzcs
NiArMTQzLDggQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZUV4Y2VwdGlvbkhhbmRsZQogICAg
IGlmICghbV9leGNlcHRpb25DaGVja3MuZW1wdHkoKSkgewogICAgICAgICBtX2V4Y2VwdGlvbkNo
ZWNrcy5saW5rKHRoaXMpOwogCisgICAgICAgIGNvcHlDYWxsZWVTYXZlc1RvVk1DYWxsZWVTYXZl
c0J1ZmZlcigpOworCiAgICAgICAgIC8vIGxvb2t1cEV4Y2VwdGlvbkhhbmRsZXIgaXMgcGFzc2Vk
IHR3byBhcmd1bWVudHMsIHRoZSBWTSBhbmQgdGhlIGV4ZWMgKHRoZSBDYWxsRnJhbWUqKS4KICAg
ICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKHZtKCkpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwog
ICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjEpOwpAQCAtMjk0LDYgKzMwMiw3IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGUoKQog
CiAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihtX2dyYXBoLnN0YWNrUG9pbnRlck9mZnNldCgpICog
c2l6ZW9mKFJlZ2lzdGVyKSksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBzdGFja1BvaW50
ZXJSZWdpc3Rlcik7CiAgICAgY2hlY2tTdGFja1BvaW50ZXJBbGlnbm1lbnQoKTsKKyAgICBjb21w
aWxlU2V0dXBSZWdpc3RlcnNGb3JFbnRyeSgpOwogICAgIGNvbXBpbGVCb2R5KCk7CiAgICAgc2V0
RW5kT2ZNYWluUGF0aCgpOwogCkBAIC0zNTgsNiArMzY3LDggQEAgdm9pZCBKSVRDb21waWxlcjo6
Y29tcGlsZUZ1bmN0aW9uKCkKICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKG1fZ3JhcGguc3RhY2tQ
b2ludGVyT2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVn
aXN0ZXIsIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKICAgICBjaGVja1N0YWNrUG9pbnRlckFsaWdu
bWVudCgpOwogCisgICAgY29tcGlsZVNldHVwUmVnaXN0ZXJzRm9yRW50cnkoKTsKKwogICAgIC8v
ID09PSBGdW5jdGlvbiBib2R5IGNvZGUgZ2VuZXJhdGlvbiA9PT0KICAgICBtX3NwZWN1bGF0aXZl
ID0gc3RkOjptYWtlX3VuaXF1ZTxTcGVjdWxhdGl2ZUpJVD4oKnRoaXMpOwogICAgIGNvbXBpbGVC
b2R5KCk7CkBAIC0zOTcsMTEgKzQwOCw2IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVGdW5j
dGlvbigpCiAgICAgICAgIGFkZFB0cihUcnVzdGVkSW1tMzIobWF4RnJhbWVFeHRlbnRGb3JTbG93
UGF0aENhbGwpLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAgICAgYnJhbmNoVGVzdDMyKFplcm8s
IEdQUkluZm86OnJldHVyblZhbHVlR1BSKS5saW5rVG8oZnJvbUFyaXR5Q2hlY2ssIHRoaXMpOwog
ICAgIGVtaXRTdG9yZUNvZGVPcmlnaW4oQ29kZU9yaWdpbigwKSk7Ci0gICAgR1BSUmVnIHRodW5r
UmVnID0gR1BSSW5mbzo6YXJndW1lbnRHUFIxOwotICAgIENvZGVMb2NhdGlvbkxhYmVsKiBhcml0
eVRodW5rTGFiZWxzID0KLSAgICAgICAgbV92bS0+YXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3Mt
PnJldHVyblBDc0ZvcigqbV92bSwgbV9jb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSk7Ci0gICAg
bW92ZShUcnVzdGVkSW1tUHRyKGFyaXR5VGh1bmtMYWJlbHMpLCB0aHVua1JlZyk7Ci0gICAgbG9h
ZFB0cihCYXNlSW5kZXgodGh1bmtSZWcsIEdQUkluZm86OnJldHVyblZhbHVlR1BSLCB0aW1lc1B0
cigpKSwgdGh1bmtSZWcpOwogICAgIG1vdmUoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCk7CiAgICAgbV9jYWxsQXJpdHlGaXh1cCA9IGNhbGwoKTsKICAgICBq
dW1wKGZyb21Bcml0eUNoZWNrKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SklUQ29tcGlsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0pJVENvbXBpbGVyLmgJKHJldmlzaW9uIDE4OTU0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHSklUQ29tcGlsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjY1LDYgKzI2NSw3IEBA
IHByaXZhdGU6CiAgICAgCiAgICAgLy8gSW50ZXJuYWwgaW1wbGVtZW50YXRpb24gdG8gY29tcGls
ZS4KICAgICB2b2lkIGNvbXBpbGVFbnRyeSgpOworICAgIHZvaWQgY29tcGlsZVNldHVwUmVnaXN0
ZXJzRm9yRW50cnkoKTsKICAgICB2b2lkIGNvbXBpbGVCb2R5KCk7CiAgICAgdm9pZCBsaW5rKExp
bmtCdWZmZXImKTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NS
RW50cnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NS
RW50cnkuY3BwCShyZXZpc2lvbiAxODk1NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkVudHJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA4LDggKzMwOCwyMyBAQCB2b2lk
KiBwcmVwYXJlT1NSRW50cnkoRXhlY1N0YXRlKiBleGVjLCBDCiAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgcGl2b3RbaV0gPSBKU1ZhbHVlKCk7CiAgICAgfQorCisgICAgLy8gNikgQ29w
eSBvdXIgY2FsbGVlIHNhdmVzIHRvIGJ1ZmZlci4KKyAgICBSZWdpc3RlckF0T2Zmc2V0TGlzdCog
cmVnaXN0ZXJTYXZlTG9jYXRpb25zID0gY29kZUJsb2NrLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCk7
CisgICAgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGFsbENhbGxlZVNhdmVzID0gdm0tPmdldEFsbENh
bGxlZVNhdmVSZWdpc3Rlck9mZnNldHMoKTsKKyAgICBSZWdpc3RlclNldCBkb250U2F2ZVJlZ2lz
dGVycyA9IFJlZ2lzdGVyU2V0KFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpLCBSZWdpc3Rl
clNldDo6YWxsRlBScygpKTsKKworICAgIHVuc2lnbmVkIHJlZ2lzdGVyQ291bnQgPSByZWdpc3Rl
clNhdmVMb2NhdGlvbnMtPnNpemUoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVn
aXN0ZXJDb3VudDsgaSsrKSB7CisgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQgY3VycmVudEVudHJ5
ID0gcmVnaXN0ZXJTYXZlTG9jYXRpb25zLT5hdChpKTsKKyAgICAgICAgaWYgKGRvbnRTYXZlUmVn
aXN0ZXJzLmdldChjdXJyZW50RW50cnkucmVnKCkpKQorICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQqIHZtQ2FsbGVlU2F2ZXNFbnRyeSA9IGFsbENhbGxlZVNh
dmVzLT5maW5kKGN1cnJlbnRFbnRyeS5yZWcoKSk7CisgICAgICAgIAorICAgICAgICAqKGJpdHdp
c2VfY2FzdDxpbnRwdHJfdCo+KHBpdm90IC0gMSkgLSBjdXJyZW50RW50cnkub2Zmc2V0QXNJbmRl
eCgpKSA9IHZtLT5jYWxsZWVTYXZlUmVnaXN0ZXJzQnVmZmVyW3ZtQ2FsbGVlU2F2ZXNFbnRyeS0+
b2Zmc2V0QXNJbmRleCgpXTsKKyAgICB9CiAgICAgCi0gICAgLy8gNikgRml4IHRoZSBjYWxsIGZy
YW1lIHRvIGhhdmUgdGhlIHJpZ2h0IGNvZGUgYmxvY2suCisgICAgLy8gNykgRml4IHRoZSBjYWxs
IGZyYW1lIHRvIGhhdmUgdGhlIHJpZ2h0IGNvZGUgYmxvY2suCiAgICAgCiAgICAgKmJpdHdpc2Vf
Y2FzdDxDb2RlQmxvY2sqKj4ocGl2b3QgLSAxIC0gSlNTdGFjazo6Q29kZUJsb2NrKSA9IGNvZGVC
bG9jazsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENv
bXBpbGVyMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwCShyZXZpc2lvbiAxODk1NDMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjMyXzY0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjQ0LDEyICsyNDQsMjEgQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVF
eGl0KGNvbnN0IAogICAgICAgICAgICAgLW1faml0LmNvZGVCbG9jaygpLT5qaXRDb2RlKCktPmRm
Z0NvbW1vbigpLT5yZXF1aXJlZFJlZ2lzdGVyQ291bnRGb3JFeGl0ICogc2l6ZW9mKFJlZ2lzdGVy
KSksCiAgICAgICAgIENDYWxsSGVscGVyczo6ZnJhbWVQb2ludGVyUmVnaXN0ZXIsIENDYWxsSGVs
cGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgIAorICAgIC8vIFJlc3RvcmUgdGhlIERG
RyBjYWxsZWUgc2F2ZXMgYW5kIHRoZW4gc2F2ZSB0aGUgb25lcyB0aGUgYmFzZWxpbmUgSklUIHVz
ZXMuCisgICAgbV9qaXQuZW1pdFJlc3RvcmVDYWxsZWVTYXZlcygpOworICAgIG1faml0LmVtaXRT
YXZlQ2FsbGVlU2F2ZXNGb3IobV9qaXQuYmFzZWxpbmVDb2RlQmxvY2soKSk7CisKICAgICAvLyBE
byBhbGwgZGF0YSBmb3JtYXQgY29udmVyc2lvbnMgYW5kIHN0b3JlIHRoZSByZXN1bHRzIGludG8g
dGhlIHN0YWNrLgogICAgIAogICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBvcGVy
YW5kcy5zaXplKCk7ICsraW5kZXgpIHsKICAgICAgICAgY29uc3QgVmFsdWVSZWNvdmVyeSYgcmVj
b3ZlcnkgPSBvcGVyYW5kc1tpbmRleF07Ci0gICAgICAgIGludCBvcGVyYW5kID0gb3BlcmFuZHMu
b3BlcmFuZEZvckluZGV4KGluZGV4KTsKLSAgICAgICAgCisgICAgICAgIFZpcnR1YWxSZWdpc3Rl
ciByZWcgPSBvcGVyYW5kcy52aXJ0dWFsUmVnaXN0ZXJGb3JJbmRleChpbmRleCk7CisKKyAgICAg
ICAgaWYgKHJlZy5pc0xvY2FsKCkgJiYgcmVnLnRvTG9jYWwoKSA8IHN0YXRpY19jYXN0PGludD4o
bV9qaXQuYmFzZWxpbmVDb2RlQmxvY2soKS0+Y2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0
ZXJzKCkpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaW50IG9wZXJhbmQgPSBy
ZWcub2Zmc2V0KCk7CisKICAgICAgICAgc3dpdGNoIChyZWNvdmVyeS50ZWNobmlxdWUoKSkgewog
ICAgICAgICBjYXNlIEluUGFpcjoKICAgICAgICAgY2FzZSBEaXNwbGFjZWRJbkpTU3RhY2s6Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjY0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxl
cjY0LmNwcAkocmV2aXNpb24gMTg5NTQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMiw3ICsyMDIsNyBA
QCB2b2lkIE9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoY29uc3QgCiAgICAgfQogICAgIAog
ICAgIC8vIEFuZCB2b2lsYSwgYWxsIEdQUnMgYXJlIGZyZWUgdG8gcmV1c2UuCi0gICAgCisKICAg
ICAvLyBTYXZlIGFsbCBzdGF0ZSBmcm9tIEZQUnMgaW50byB0aGUgc2NyYXRjaCBidWZmZXIuCiAg
ICAgCiAgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG9wZXJhbmRzLnNpemUoKTsg
KytpbmRleCkgewpAQCAtMjU0LDEyICsyNTQsMjQgQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNv
bXBpbGVFeGl0KGNvbnN0IAogICAgICAgICAgICAgLW1faml0LmNvZGVCbG9jaygpLT5qaXRDb2Rl
KCktPmRmZ0NvbW1vbigpLT5yZXF1aXJlZFJlZ2lzdGVyQ291bnRGb3JFeGl0ICogc2l6ZW9mKFJl
Z2lzdGVyKSksCiAgICAgICAgIENDYWxsSGVscGVyczo6ZnJhbWVQb2ludGVyUmVnaXN0ZXIsIEND
YWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgIAorICAgIC8vIFJlc3RvcmUg
dGhlIERGRyBjYWxsZWUgc2F2ZXMgYW5kIHRoZW4gc2F2ZSB0aGUgb25lcyB0aGUgYmFzZWxpbmUg
SklUIHVzZXMuCisgICAgbV9qaXQuZW1pdFJlc3RvcmVDYWxsZWVTYXZlcygpOworICAgIG1faml0
LmVtaXRTYXZlQ2FsbGVlU2F2ZXNGb3IobV9qaXQuYmFzZWxpbmVDb2RlQmxvY2soKSk7CisKKyAg
ICAvLyBUaGUgdGFnIHJlZ2lzdGVycyBhcmUgbmVlZGVkIHRvIG1hdGVyaWFsaXplIHJlY292ZXJp
ZXMgYmVsb3cuCisgICAgbV9qaXQuZW1pdE1hdGVyaWFsaXplVGFnQ2hlY2tSZWdpc3RlcnMoKTsK
KwogICAgIC8vIERvIGFsbCBkYXRhIGZvcm1hdCBjb252ZXJzaW9ucyBhbmQgc3RvcmUgdGhlIHJl
c3VsdHMgaW50byB0aGUgc3RhY2suCiAgICAgCiAgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBp
bmRleCA8IG9wZXJhbmRzLnNpemUoKTsgKytpbmRleCkgewogICAgICAgICBjb25zdCBWYWx1ZVJl
Y292ZXJ5JiByZWNvdmVyeSA9IG9wZXJhbmRzW2luZGV4XTsKLSAgICAgICAgaW50IG9wZXJhbmQg
PSBvcGVyYW5kcy5vcGVyYW5kRm9ySW5kZXgoaW5kZXgpOwotICAgICAgICAKKyAgICAgICAgVmly
dHVhbFJlZ2lzdGVyIHJlZyA9IG9wZXJhbmRzLnZpcnR1YWxSZWdpc3RlckZvckluZGV4KGluZGV4
KTsKKworICAgICAgICBpZiAocmVnLmlzTG9jYWwoKSAmJiByZWcudG9Mb2NhbCgpIDwgc3RhdGlj
X2Nhc3Q8aW50PihtX2ppdC5iYXNlbGluZUNvZGVCbG9jaygpLT5jYWxsZWVTYXZlU3BhY2VBc1Zp
cnR1YWxSZWdpc3RlcnMoKSkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpbnQg
b3BlcmFuZCA9IHJlZy5vZmZzZXQoKTsKKwogICAgICAgICBzd2l0Y2ggKHJlY292ZXJ5LnRlY2hu
aXF1ZSgpKSB7CiAgICAgICAgIGNhc2UgSW5HUFI6CiAgICAgICAgIGNhc2UgVW5ib3hlZENlbGxJ
bkdQUjoKQEAgLTMyMCw3ICszMzIsNyBAQCB2b2lkIE9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4
aXQoY29uc3QgCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KLSAgICAKKwog
ICAgIC8vIE5vdyB0aGF0IHRoaW5ncyBvbiB0aGUgc3RhY2sgYXJlIHJlY292ZXJlZCwgZG8gdGhl
IGFyZ3VtZW50cyByZWNvdmVyeS4gV2UgYXNzdW1lIHRoYXQgYXJndW1lbnRzCiAgICAgLy8gcmVj
b3ZlcmllcyBkb24ndCByZWN1cnNpdmVseSByZWZlciB0byBlYWNoIG90aGVyLiBCdXQsIHdlIGRv
bid0IHRyeSB0byBhc3N1bWUgdGhhdCB0aGV5IG9ubHkKICAgICAvLyByZWZlciB0byBjZXJ0YWlu
IHJhbmdlcyBvZiBsb2NhbHMuIEhlbmNlIHdoeSB3ZSBuZWVkIHRvIGRvIHRoaXMgaGVyZSwgb25j
ZSB0aGUgc3RhY2sgaXMgc2Vuc2libGUuCkBAIC0zNzAsNyArMzgyLDcgQEAgdm9pZCBPU1JFeGl0
Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IAogICAgIC8vIFJlaWZ5IGlubGluZWQgY2FsbCBm
cmFtZXMuCiAgICAgCiAgICAgcmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyhtX2ppdCwgZXhpdCk7Ci0g
ICAgCisKICAgICAvLyBBbmQgZmluaXNoLgogICAgIGFkanVzdEFuZEp1bXBUb1RhcmdldChtX2pp
dCwgZXhpdCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRD
b21waWxlckNvbW1vbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCShyZXZpc2lvbiAxODk1NDMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE5Nyw2ICsxOTcsNyBAQCB2b2lkIHJlaWZ5SW5saW5lZENhbGxGcmFtZXMo
Q0NhbGxIZWxwZXJzCiAgICAgICAgICAgICBqaXQuc3RvcmVQdHIoQXNzZW1ibHlIZWxwZXJzOjpU
cnVzdGVkSW1tUHRyKHRydWVSZXR1cm5QQyksIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0Zvcihp
bmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQo
aW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpKS5vZmZzZXQoKSkpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgIAogICAgICAgICBqaXQuc3RvcmVQdHIoQXNzZW1ibHlIZWxwZXJzOjpU
cnVzdGVkSW1tUHRyKGJhc2VsaW5lQ29kZUJsb2NrKSwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNz
Rm9yKChWaXJ0dWFsUmVnaXN0ZXIpKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBKU1N0
YWNrOjpDb2RlQmxvY2spKSk7CisgICAgICAgIGppdC5lbWl0U2F2ZUNhbGxlZVNhdmVzRm9yKGJh
c2VsaW5lQ29kZUJsb2NrLCBzdGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KGlubGluZUNhbGxG
cmFtZS0+c3RhY2tPZmZzZXQpKTsKICAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUtPmlzVmFy
YXJncygpKQogICAgICAgICAgICAgaml0LnN0b3JlMzIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVk
SW1tMzIoaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpKSwgQXNzZW1ibHlIZWxwZXJz
OjpwYXlsb2FkRm9yKChWaXJ0dWFsUmVnaXN0ZXIpKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZz
ZXQgKyBKU1N0YWNrOjpBcmd1bWVudENvdW50KSkpOwogI2lmIFVTRShKU1ZBTFVFNjQpCkBAIC0y
NTAsMTQgKzI1MSwxNCBAQCBzdGF0aWMgdm9pZCBvc3JXcml0ZUJhcnJpZXIoQ0NhbGxIZWxwZXJz
CiB2b2lkIGFkanVzdEFuZEp1bXBUb1RhcmdldChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgT1NS
RXhpdEJhc2UmIGV4aXQpCiB7CiAjaWYgRU5BQkxFKEdHQykgCi0gICAgaml0Lm1vdmUoQXNzZW1i
bHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGppdC5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxl
KCkpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKLSAgICBvc3JXcml0ZUJhcnJpZXIoaml0LCBHUFJJ
bmZvOjpub25BcmdHUFIwLCBHUFJJbmZvOjpub25BcmdHUFIxKTsKKyAgICBqaXQubW92ZShBc3Nl
bWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoaml0LmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFi
bGUoKSksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgb3NyV3JpdGVCYXJyaWVyKGppdCwg
R1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKICAgICBJbmxpbmVD
YWxsRnJhbWVTZXQqIGlubGluZUNhbGxGcmFtZXMgPSBqaXQuY29kZUJsb2NrKCktPmppdENvZGUo
KS0+ZGZnQ29tbW9uKCktPmlubGluZUNhbGxGcmFtZXMuZ2V0KCk7CiAgICAgaWYgKGlubGluZUNh
bGxGcmFtZXMpIHsKICAgICAgICAgZm9yIChJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFt
ZSA6ICppbmxpbmVDYWxsRnJhbWVzKSB7CiAgICAgICAgICAgICBTY3JpcHRFeGVjdXRhYmxlKiBv
d25lckV4ZWN1dGFibGUgPSBpbmxpbmVDYWxsRnJhbWUtPmV4ZWN1dGFibGUuZ2V0KCk7Ci0gICAg
ICAgICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIob3duZXJFeGVj
dXRhYmxlKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7IAotICAgICAgICAgICAgb3NyV3JpdGVCYXJy
aWVyKGppdCwgR1BSSW5mbzo6bm9uQXJnR1BSMCwgR1BSSW5mbzo6bm9uQXJnR1BSMSk7CisgICAg
ICAgICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIob3duZXJFeGVj
dXRhYmxlKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgICAgIG9zcldyaXRlQmFy
cmllcihqaXQsIEdQUkluZm86OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAg
ICAgICAgIH0KICAgICB9CiAjZW5kaWYKQEAgLTI3Nyw4ICsyNzgsNiBAQCB2b2lkIGFkanVzdEFu
ZEp1bXBUb1RhcmdldChDQ2FsbEhlbHBlcnMmCiAKICAgICBqaXQuYWRkUHRyKEFzc2VtYmx5SGVs
cGVyczo6VHJ1c3RlZEltbTMyKEpJVDo6c3RhY2tQb2ludGVyT2Zmc2V0Rm9yKGJhc2VsaW5lQ29k
ZUJsb2NrKSAqIHNpemVvZihSZWdpc3RlcikpLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwg
QXNzZW1ibHlIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAgICAgCi0gICAgaml0Lmpp
dEFzc2VydFRhZ3NJblBsYWNlKCk7Ci0KICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIoanVtcFRhcmdldCksIEdQUkluZm86OnJlZ1QyKTsKICAgICBqaXQuanVtcChH
UFJJbmZvOjpyZWdUMik7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Bs
YW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5j
cHAJKHJldmlzaW9uIDE4OTU0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxh
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0MSw2ICsyNDEsOCBAQCBQbGFuOjpDb21waWxhdGlv
blBhdGggUGxhbjo6Y29tcGlsZUluVGhyCiAgICAgICAgIGZpbmFsaXplciA9IHN0ZDo6bWFrZV91
bmlxdWU8RmFpbGVkRmluYWxpemVyPigqdGhpcyk7CiAgICAgICAgIHJldHVybiBGYWlsUGF0aDsK
ICAgICB9CisKKyAgICBjb2RlQmxvY2stPnNldENhbGxlZVNhdmVSZWdpc3RlcnMoUmVnaXN0ZXJT
ZXQ6OmRmZ0NhbGxlZVNhdmVSZWdpc3RlcnMoKSk7CiAgICAgCiAgICAgLy8gQnkgdGhpcyBwb2lu
dCB0aGUgREZHIGJ5dGVjb2RlIHBhcnNlciB3aWxsIGhhdmUgcG90ZW50aWFsbHkgbXV0YXRlZCB2
YXJpb3VzIHRhYmxlcwogICAgIC8vIGluIHRoZSBDb2RlQmxvY2suIFRoaXMgaXMgYSBnb29kIHRp
bWUgdG8gcGVyZm9ybSBhbiBlYXJseSBzaHJpbmssIHdoaWNoIGlzIG1vcmUKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cAkocmV2aXNpb24gMTg5NTQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEzMSw2ICszMTMxLDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAKKyAgICAgICAgbV9qaXQuZW1pdFJlc3RvcmVDYWxsZWVTYXZlcygpOwogICAg
ICAgICBtX2ppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOwogICAgICAgICBtX2ppdC5yZXQoKTsK
ICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDE4OTU0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxOTAs
NiArMzE5MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICAgICAgSlNWYWx1ZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAg
bV9qaXQubW92ZShvcDEuZ3ByKCksIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKIAorICAgICAg
ICBtX2ppdC5lbWl0UmVzdG9yZUNhbGxlZVNhdmVzKCk7CiAgICAgICAgIG1faml0LmVtaXRGdW5j
dGlvbkVwaWxvZ3VlKCk7CiAgICAgICAgIG1faml0LnJldCgpOwogICAgICAgICAKQEAgLTQ3OTAs
NiArNDc5MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICAgICAgICAgIFRydXN0ZWRJbW0zMihtX3N0cmVhbS0+c2l6ZSgpKSk7CiAgICAgICAgIGFwcGVu
ZENhbGxTZXRSZXN1bHQodHJpZ2dlck9TUkVudHJ5Tm93LCB0ZW1wR1BSKTsKICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6Okp1bXAgZG9udEVudGVyID0gbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fz
c2VtYmxlcjo6WmVybywgdGVtcEdQUik7CisgICAgICAgIG1faml0LmVtaXRSZXN0b3JlQ2FsbGVl
U2F2ZXMoKTsKICAgICAgICAgbV9qaXQuanVtcCh0ZW1wR1BSKTsKICAgICAgICAgZG9udEVudGVy
LmxpbmsoJm1faml0KTsKICAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycyh0ZW1wR1BSKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwCShyZXZpc2lvbiAxODk1NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzExLDcgKzMxMSw3IEBAIFJlZ2lz
dGVyU2V0IFNwZWN1bGF0aXZlSklUOjp1c2VkUmVnaXN0ZXIKICAgICAgICAgICAgIHJlc3VsdC5z
ZXQoZnByKTsKICAgICB9CiAgICAgCi0gICAgcmVzdWx0Lm1lcmdlKFJlZ2lzdGVyU2V0OjpzcGVj
aWFsUmVnaXN0ZXJzKCkpOworICAgIHJlc3VsdC5tZXJnZShSZWdpc3RlclNldDo6c3R1YlVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCkpOwogICAgIAogICAgIHJldHVybiByZXN1bHQ7CiB9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0YWNrTGF5b3V0UGhhc2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhY2tMYXlvdXRQaGFzZS5jcHAJ
KHJldmlzaW9uIDE4OTU0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhY2tM
YXlvdXRQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyOSw3ICsxMjksNyBAQCBwdWJsaWM6
CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIFZlY3Rvcjx1bnNpZ25lZD4gYWxsb2NhdGlv
bih1c2VkTG9jYWxzLnNpemUoKSk7Ci0gICAgICAgIG1fZ3JhcGgubV9uZXh0TWFjaGluZUxvY2Fs
ID0gMDsKKyAgICAgICAgbV9ncmFwaC5tX25leHRNYWNoaW5lTG9jYWwgPSBjb2RlQmxvY2soKS0+
Y2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCk7CiAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCB1c2VkTG9jYWxzLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBpZiAo
IXVzZWRMb2NhbHMuZ2V0KGkpKSB7CiAgICAgICAgICAgICAgICAgYWxsb2NhdGlvbltpXSA9IFVJ
TlRfTUFYOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCShy
ZXZpc2lvbiAxODk1NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjksNyArMzI5LDcgQEAgdm9pZCBhZGp1c3RDYWxsSUNz
Rm9yU3RhY2ttYXBzKFZlY3RvcjxDYQogCiBzdGF0aWMgdm9pZCBmaXhGdW5jdGlvbkJhc2VkT25T
dGFja01hcHMoCiAgICAgU3RhdGUmIHN0YXRlLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSklUQ29k
ZSogaml0Q29kZSwgR2VuZXJhdGVkRnVuY3Rpb24gZ2VuZXJhdGVkRnVuY3Rpb24sCi0gICAgU3Rh
Y2tNYXBzOjpSZWNvcmRNYXAmIHJlY29yZE1hcCwgYm9vbCBkaWRTZWVVbndpbmRJbmZvKQorICAg
IFN0YWNrTWFwczo6UmVjb3JkTWFwJiByZWNvcmRNYXApCiB7CiAgICAgR3JhcGgmIGdyYXBoID0g
c3RhdGUuZ3JhcGg7CiAgICAgVk0mIHZtID0gZ3JhcGgubV92bTsKQEAgLTM2NSwxMiArMzY1LDE0
IEBAIHN0YXRpYyB2b2lkIGZpeEZ1bmN0aW9uQmFzZWRPblN0YWNrTWFwcygKICAgICAgICAgCiAg
ICAgICAgIC8vIEF0IHRoaXMgcG9pbnQgaXQncyBwZXJmZWN0bHkgZmFpciB0byBqdXN0IGJsb3cg
YXdheSBhbGwgc3RhdGUgYW5kIHJlc3RvcmUgdGhlCiAgICAgICAgIC8vIEpTIEpJVCB2aWV3IG9m
IHRoZSB1bml2ZXJzZS4KKyAgICAgICAgY2hlY2tKSVQuY29weUNhbGxlZVNhdmVzVG9WTUNhbGxl
ZVNhdmVzQnVmZmVyKCk7CiAgICAgICAgIGNoZWNrSklULm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW1QdHIoJnZtKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICAgICAgY2hlY2tK
SVQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIx
KTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbExvb2t1cEV4Y2VwdGlvbkhhbmRs
ZXIgPSBjaGVja0pJVC5jYWxsKCk7CiAgICAgICAgIGNoZWNrSklULmp1bXBUb0V4Y2VwdGlvbkhh
bmRsZXIoKTsKIAogICAgICAgICBzdGFja092ZXJmbG93RXhjZXB0aW9uID0gY2hlY2tKSVQubGFi
ZWwoKTsKKyAgICAgICAgY2hlY2tKSVQuY29weUNhbGxlZVNhdmVzVG9WTUNhbGxlZVNhdmVzQnVm
ZmVyKCk7CiAgICAgICAgIGNoZWNrSklULm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1Q
dHIoJnZtKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICAgICAgY2hlY2tKSVQubW92ZShH
UFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbExvb2t1cEV4Y2VwdGlvbkhhbmRsZXJGcm9tQ2Fs
bGVyRnJhbWUgPSBjaGVja0pJVC5jYWxsKCk7CkBAIC0zOTIsNyArMzk0LDYgQEAgc3RhdGljIHZv
aWQgZml4RnVuY3Rpb25CYXNlZE9uU3RhY2tNYXBzKAogICAgIGV4aXRUaHVua0dlbmVyYXRvci5l
bWl0VGh1bmtzKCk7CiAgICAgaWYgKGV4aXRUaHVua0dlbmVyYXRvci5kaWRUaGluZ3MoKSkgewog
ICAgICAgICBSRUxFQVNFX0FTU0VSVChzdGF0ZS5maW5hbGl6ZXItPm9zckV4aXQuc2l6ZSgpKTsK
LSAgICAgICAgUkVMRUFTRV9BU1NFUlQoZGlkU2VlVW53aW5kSW5mbyk7CiAgICAgICAgIAogICAg
ICAgICBhdXRvIGxpbmtCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPExpbmtCdWZmZXI+KAogICAg
ICAgICAgICAgdm0sIGV4aXRUaHVua0dlbmVyYXRvciwgY29kZUJsb2NrLCBKSVRDb21waWxhdGlv
bkNhbkZhaWwpOwpAQCAtODE0LDE2ICs4MTUsMTQgQEAgdm9pZCBjb21waWxlKFN0YXRlJiBzdGF0
ZSwgU2FmZXBvaW50OjpSZQogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIGJvb2wgZGlkU2Vl
VW53aW5kSW5mbyA9IHN0YXRlLmppdENvZGUtPnVud2luZEluZm8ucGFyc2UoCisgICAgc3RkOjp1
bmlxdWVfcHRyPFJlZ2lzdGVyQXRPZmZzZXRMaXN0PiByZWdpc3Rlck9mZnNldHMgPSBwYXJzZVVu
d2luZEluZm8oCiAgICAgICAgIHN0YXRlLnVud2luZERhdGFTZWN0aW9uLCBzdGF0ZS51bndpbmRE
YXRhU2VjdGlvblNpemUsCiAgICAgICAgIHN0YXRlLmdlbmVyYXRlZEZ1bmN0aW9uKTsKICAgICBp
ZiAoc2hvdWxkU2hvd0Rpc2Fzc2VtYmx5KCkpIHsKICAgICAgICAgZGF0YUxvZygiVW53aW5kIGlu
Zm8gZm9yICIsIENvZGVCbG9ja1dpdGhKSVRUeXBlKHN0YXRlLmdyYXBoLm1fY29kZUJsb2NrLCBK
SVRDb2RlOjpGVExKSVQpLCAiOlxuIik7Ci0gICAgICAgIGlmIChkaWRTZWVVbndpbmRJbmZvKQot
ICAgICAgICAgICAgZGF0YUxvZygiICAgICIsIHN0YXRlLmppdENvZGUtPnVud2luZEluZm8sICJc
biIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBkYXRhTG9nKCIgICAgPG5vIHVud2luZCBp
bmZvPlxuIik7CisgICAgICAgIGRhdGFMb2coIiAgICAiLCAqcmVnaXN0ZXJPZmZzZXRzLCAiXG4i
KTsKICAgICB9CisgICAgc3RhdGUuZ3JhcGgubV9jb2RlQmxvY2stPnNldENhbGxlZVNhdmVSZWdp
c3RlcnMoV1RGOjptb3ZlKHJlZ2lzdGVyT2Zmc2V0cykpOwogICAgIAogICAgIGlmIChzdGF0ZS5z
dGFja21hcHNTZWN0aW9uICYmIHN0YXRlLnN0YWNrbWFwc1NlY3Rpb24tPnNpemUoKSkgewogICAg
ICAgICBpZiAoc2hvdWxkU2hvd0Rpc2Fzc2VtYmx5KCkpIHsKQEAgLTg0Niw3ICs4NDUsNyBAQCB2
b2lkIGNvbXBpbGUoU3RhdGUmIHN0YXRlLCBTYWZlcG9pbnQ6OlJlCiAgICAgICAgIFN0YWNrTWFw
czo6UmVjb3JkTWFwIHJlY29yZE1hcCA9IHN0YXRlLmppdENvZGUtPnN0YWNrbWFwcy5jb21wdXRl
UmVjb3JkTWFwKCk7CiAgICAgICAgIGZpeEZ1bmN0aW9uQmFzZWRPblN0YWNrTWFwcygKICAgICAg
ICAgICAgIHN0YXRlLCBzdGF0ZS5ncmFwaC5tX2NvZGVCbG9jaywgc3RhdGUuaml0Q29kZS5nZXQo
KSwgc3RhdGUuZ2VuZXJhdGVkRnVuY3Rpb24sCi0gICAgICAgICAgICByZWNvcmRNYXAsIGRpZFNl
ZVVud2luZEluZm8pOworICAgICAgICAgICAgcmVjb3JkTWFwKTsKICAgICAgICAgaWYgKHN0YXRl
LmFsbG9jYXRpb25GYWlsZWQpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRDb2RlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRDb2RlLmgJKHJldmlzaW9uIDE4OTU0MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklUQ29kZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC04NCw3ICs4NCw2IEBAIHB1YmxpYzoKICAgICBERkc6OkNvbW1vbkRhdGEgY29tbW9uOwogICAg
IFNlZ21lbnRlZFZlY3RvcjxPU1JFeGl0LCA4PiBvc3JFeGl0OwogICAgIFN0YWNrTWFwcyBzdGFj
a21hcHM7Ci0gICAgVW53aW5kSW5mbyB1bndpbmRJbmZvOwogICAgIAogcHJpdmF0ZToKICAgICBW
ZWN0b3I8UmVmUHRyPERhdGFTZWN0aW9uPj4gbV9kYXRhU2VjdGlvbnM7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAJKHJldmlzaW9uIDE4OTU0MykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4
LDYgQEAKIAogI2lmIEVOQUJMRShGVExfSklUKQogCi0jaW5jbHVkZSAiQXJpdHlDaGVja0ZhaWxS
ZXR1cm5UaHVua3MuaCIKICNpbmNsdWRlICJDQ2FsbEhlbHBlcnMuaCIKICNpbmNsdWRlICJDb2Rl
QmxvY2tXaXRoSklUVHlwZS5oIgogI2luY2x1ZGUgIkRGR0NvbW1vbi5oIgpAQCAtNTYsNyArNTUs
NyBAQCB2b2lkIGxpbmsoU3RhdGUmIHN0YXRlKQogICAgIAogICAgIC8vIEZJWE1FOiBOZWVkIHRv
IGtub3cgdGhlIHJlYWwgZnJhbWUgcmVnaXN0ZXIgY291bnQuCiAgICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNTcyNwotICAgIHN0YXRlLmppdENvZGUtPmNv
bW1vbi5mcmFtZVJlZ2lzdGVyQ291bnQgPSAxMDAwOworICAgIHN0YXRlLmppdENvZGUtPmNvbW1v
bi5mcmFtZVJlZ2lzdGVyQ291bnQgPSBzdGF0ZS5qaXRDb2RlLT5zdGFja21hcHMuc3RhY2tTaXpl
Rm9yTG9jYWxzKCkgLyBzaXplb2Yodm9pZCopOwogICAgIAogICAgIHN0YXRlLmppdENvZGUtPmNv
bW1vbi5yZXF1aXJlZFJlZ2lzdGVyQ291bnRGb3JFeGl0ID0gZ3JhcGgucmVxdWlyZWRSZWdpc3Rl
ckNvdW50Rm9yRXhpdCgpOwogICAgIApAQCAtMTY5LDEwICsxNjgsNiBAQCB2b2lkIGxpbmsoU3Rh
dGUmIHN0YXRlKQogICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKICAgICAgICAg
bWFpblBhdGhKdW1wcy5hcHBlbmQoaml0LmJyYW5jaFRlc3QzMihDQ2FsbEhlbHBlcnM6Olplcm8s
IEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwogICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uUHJvbG9n
dWUoKTsKLSAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWwqIGFyaXR5VGh1bmtMYWJlbHMgPQotICAg
ICAgICAgICAgdm0uYXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3MtPnJldHVyblBDc0Zvcih2bSwg
Y29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpOwotICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIoYXJpdHlUaHVua0xhYmVscyksIEdQUkluZm86OmFyZ3VtZW50R1BS
MSk7Ci0gICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QmFzZUluZGV4KEdQUkluZm86
OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBDQ2FsbEhlbHBlcnM6OnRpbWVz
UHRyKCkpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6OkNh
bGwgY2FsbEFyaXR5Rml4dXAgPSBqaXQuY2FsbCgpOwogICAgICAgICBqaXQuZW1pdEZ1bmN0aW9u
RXBpbG9ndWUoKTsKICAgICAgICAgbWFpblBhdGhKdW1wcy5hcHBlbmQoaml0Lmp1bXAoKSk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIu
Y3BwCShyZXZpc2lvbiAxODk1NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9T
UkV4aXRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMSw3ICsyMTEsNyBAQCBzdGF0
aWMgdm9pZCBjb21waWxlU3R1YigKICAgICAgICAgc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAqICgK
ICAgICAgICAgICAgIGV4aXQubV92YWx1ZXMuc2l6ZSgpICsgbnVtTWF0ZXJpYWxpemF0aW9ucyAr
IG1heE1hdGVyaWFsaXphdGlvbk51bUFyZ3VtZW50cykgKwogICAgICAgICByZXF1aXJlZFNjcmF0
Y2hNZW1vcnlTaXplSW5CeXRlcygpICsKLSAgICAgICAgaml0Q29kZS0+dW53aW5kSW5mby5tX3Jl
Z2lzdGVycy5zaXplKCkgKiBzaXplb2YodWludDY0X3QpKTsKKyAgICAgICAgY29kZUJsb2NrLT5j
YWxsZWVTYXZlUmVnaXN0ZXJzKCktPnNpemUoKSAqIHNpemVvZih1aW50NjRfdCkpOwogICAgIEVu
Y29kZWRKU1ZhbHVlKiBzY3JhdGNoID0gc2NyYXRjaEJ1ZmZlciA/IHN0YXRpY19jYXN0PEVuY29k
ZWRKU1ZhbHVlKj4oc2NyYXRjaEJ1ZmZlci0+ZGF0YUJ1ZmZlcigpKSA6IDA7CiAgICAgRW5jb2Rl
ZEpTVmFsdWUqIG1hdGVyaWFsaXphdGlvblBvaW50ZXJzID0gc2NyYXRjaCArIGV4aXQubV92YWx1
ZXMuc2l6ZSgpOwogICAgIEVuY29kZWRKU1ZhbHVlKiBtYXRlcmlhbGl6YXRpb25Bcmd1bWVudHMg
PSBtYXRlcmlhbGl6YXRpb25Qb2ludGVycyArIG51bU1hdGVyaWFsaXphdGlvbnM7CkBAIC0zODQs
OCArMzg0LDggQEAgc3RhdGljIHZvaWQgY29tcGlsZVN0dWIoCiAgICAgCiAgICAgLy8gQmVmb3Jl
IHdlIHN0YXJ0IG1lc3Npbmcgd2l0aCB0aGUgZnJhbWUsIHdlIG5lZWQgdG8gc2V0IGFzaWRlIGFu
eSByZWdpc3RlcnMgdGhhdCB0aGUKICAgICAvLyBGVEwgY29kZSB3YXMgcHJlc2VydmluZy4KLSAg
ICBmb3IgKHVuc2lnbmVkIGkgPSBqaXRDb2RlLT51bndpbmRJbmZvLm1fcmVnaXN0ZXJzLnNpemUo
KTsgaS0tOykgewotICAgICAgICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5ID0gaml0Q29kZS0+dW53
aW5kSW5mby5tX3JlZ2lzdGVyc1tpXTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBjb2RlQmxvY2st
PmNhbGxlZVNhdmVSZWdpc3RlcnMoKS0+c2l6ZSgpOyBpLS07KSB7CisgICAgICAgIFJlZ2lzdGVy
QXRPZmZzZXQgZW50cnkgPSBjb2RlQmxvY2stPmNhbGxlZVNhdmVSZWdpc3RlcnMoKS0+YXQoaSk7
CiAgICAgICAgIGppdC5sb2FkNjQoCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhNYWNyb0Fzc2VtYmxlcjo6ZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGVudHJ5Lm9mZnNldCgpKSwK
ICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwKTsKQEAgLTQzMiwxMCArNDMyLDEyIEBAIHN0YXRp
YyB2b2lkIGNvbXBpbGVTdHViKAogICAgIGppdC5hZGQzMihHUFJJbmZvOjpyZWdUMywgR1BSSW5m
bzo6cmVnVDIpOwogICAgIGFyaXR5SW50YWN0LmxpbmsoJmppdCk7CiAKKyAgICBDb2RlQmxvY2sq
IGJhc2VsaW5lQ29kZUJsb2NrID0gaml0LmJhc2VsaW5lQ29kZUJsb2NrRm9yKGV4aXQubV9jb2Rl
T3JpZ2luKTsKKwogICAgIC8vIEZpcnN0IHNldCB1cCBTUCBzbyB0aGF0IG91ciBkYXRhIGRvZXNu
J3QgZ2V0IGNsb2JiZXJlZCBieSBzaWduYWxzLgogICAgIHVuc2lnbmVkIGNvbnNlcnZhdGl2ZVN0
YWNrRGVsdGEgPQogICAgICAgICByZWdpc3RlclByZXNlcnZhdGlvbk9mZnNldCgpICsKLSAgICAg
ICAgZXhpdC5tX3ZhbHVlcy5udW1iZXJPZkxvY2FscygpICogc2l6ZW9mKFJlZ2lzdGVyKSArCisg
ICAgICAgIChleGl0Lm1fdmFsdWVzLm51bWJlck9mTG9jYWxzKCkgKyBiYXNlbGluZUNvZGVCbG9j
ay0+Y2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCkpICogc2l6ZW9mKFJlZ2lzdGVy
KSArCiAgICAgICAgIG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsOwogICAgIGNvbnNlcnZh
dGl2ZVN0YWNrRGVsdGEgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2YoCiAgICAgICAgIHN0YWNr
QWxpZ25tZW50Qnl0ZXMoKSwgY29uc2VydmF0aXZlU3RhY2tEZWx0YSk7CkBAIC00NTcsNjcgKzQ1
OSw1OSBAQCBzdGF0aWMgdm9pZCBjb21waWxlU3R1YigKICAgICBqaXQuc3RvcmU2NChHUFJJbmZv
OjpyZWdUMCwgR1BSSW5mbzo6cmVnVDEpOwogICAgIGppdC5hZGRQdHIoTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW0zMihzaXplb2YoUmVnaXN0ZXIpKSwgR1BSSW5mbzo6cmVnVDEpOwogICAgIGpp
dC5icmFuY2hUZXN0MzIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIEdQUkluZm86OnJlZ1QyKS5s
aW5rVG8obG9vcCwgJmppdCk7Ci0gICAgCi0gICAgLy8gQXQgdGhpcyBwb2ludCByZWdUMSBwb2lu
dHMgdG8gd2hlcmUgd2Ugd291bGQgc2F2ZSBvdXIgcmVnaXN0ZXJzLiBTYXZlIHRoZW0gaGVyZS4K
LSAgICBwdHJkaWZmX3QgY3VycmVudE9mZnNldCA9IDA7CisKKyAgICBSZWdpc3RlckF0T2Zmc2V0
TGlzdCogYmFzZWxpbmVDYWxsZWVTYXZlcyA9IGJhc2VsaW5lQ29kZUJsb2NrLT5jYWxsZWVTYXZl
UmVnaXN0ZXJzKCk7CisKICAgICBmb3IgKFJlZyByZWcgPSBSZWc6OmZpcnN0KCk7IHJlZyA8PSBS
ZWc6Omxhc3QoKTsgcmVnID0gcmVnLm5leHQoKSkgewotICAgICAgICBpZiAoIXRvU2F2ZS5nZXQo
cmVnKSkKKyAgICAgICAgaWYgKCF0b1NhdmUuZ2V0KHJlZykgfHwgIXJlZy5pc0dQUigpKQogICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGN1cnJlbnRPZmZzZXQgKz0gc2l6ZW9mKFJlZ2lz
dGVyKTsKLSAgICAgICAgdW5zaWduZWQgdW53aW5kSW5kZXggPSBqaXRDb2RlLT51bndpbmRJbmZv
LmluZGV4T2YocmVnKTsKLSAgICAgICAgaWYgKHVud2luZEluZGV4ID09IFVJTlRfTUFYKSB7Ci0g
ICAgICAgICAgICAvLyBUaGUgRlRMIGNvbXBpbGF0aW9uIGRpZG4ndCBwcmVzZXJ2ZSB0aGlzIHJl
Z2lzdGVyLiBUaGlzIG1lYW5zIHRoYXQgaXQgYWxzbwotICAgICAgICAgICAgLy8gZGlkbid0IHVz
ZSB0aGUgcmVnaXN0ZXIuIFNvIGl0cyB2YWx1ZSBhdCB0aGUgYmVnaW5uaW5nIG9mIE9TUiBleGl0
IHNob3VsZCBiZQotICAgICAgICAgICAgLy8gcHJlc2VydmVkIGJ5IHRoZSB0aHVuay4gTHVja2ls
eSwgd2Ugc2F2ZWQgYWxsIHJlZ2lzdGVycyBpbnRvIHRoZSByZWdpc3RlcgotICAgICAgICAgICAg
Ly8gc2NyYXRjaCBidWZmZXIsIHNvIHdlIGNhbiByZXN0b3JlIHRoZW0gZnJvbSB0aGVyZS4KLSAg
ICAgICAgICAgIGppdC5sb2FkNjQocmVnaXN0ZXJTY3JhdGNoICsgb2Zmc2V0T2ZSZWcocmVnKSwg
R1BSSW5mbzo6cmVnVDApOworICAgICAgICB1bnNpZ25lZCB1bndpbmRJbmRleCA9IGNvZGVCbG9j
ay0+Y2FsbGVlU2F2ZVJlZ2lzdGVycygpLT5pbmRleE9mKHJlZyk7CisgICAgICAgIFJlZ2lzdGVy
QXRPZmZzZXQqIGJhc2VsaW5lUmVnaXN0ZXJPZmZzZXQgPSBiYXNlbGluZUNhbGxlZVNhdmVzLT5m
aW5kKHJlZyk7CisKKyAgICAgICAgaWYgKHJlZy5pc0dQUigpKSB7CisgICAgICAgICAgICBHUFJS
ZWcgcmVnVG9Mb2FkID0gYmFzZWxpbmVSZWdpc3Rlck9mZnNldCA/IEdQUkluZm86OnJlZ1QwIDog
cmVnLmdwcigpOworCisgICAgICAgICAgICBpZiAodW53aW5kSW5kZXggPT0gVUlOVF9NQVgpIHsK
KyAgICAgICAgICAgICAgICAvLyBUaGUgRlRMIGNvbXBpbGF0aW9uIGRpZG4ndCBwcmVzZXJ2ZSB0
aGlzIHJlZ2lzdGVyLiBUaGlzIG1lYW5zIHRoYXQgaXQgYWxzbworICAgICAgICAgICAgICAgIC8v
IGRpZG4ndCB1c2UgdGhlIHJlZ2lzdGVyLiBTbyBpdHMgdmFsdWUgYXQgdGhlIGJlZ2lubmluZyBv
ZiBPU1IgZXhpdCBzaG91bGQgYmUKKyAgICAgICAgICAgICAgICAvLyBwcmVzZXJ2ZWQgYnkgdGhl
IHRodW5rLiBMdWNraWx5LCB3ZSBzYXZlZCBhbGwgcmVnaXN0ZXJzIGludG8gdGhlIHJlZ2lzdGVy
CisgICAgICAgICAgICAgICAgLy8gc2NyYXRjaCBidWZmZXIsIHNvIHdlIGNhbiByZXN0b3JlIHRo
ZW0gZnJvbSB0aGVyZS4KKyAgICAgICAgICAgICAgICBqaXQubG9hZDY0KHJlZ2lzdGVyU2NyYXRj
aCArIG9mZnNldE9mUmVnKHJlZyksIHJlZ1RvTG9hZCk7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIC8vIFRoZSBGVEwgY29tcGlsYXRpb24gcHJlc2VydmVkIHRoZSByZWdp
c3Rlci4gSXRzIG5ldyB2YWx1ZSBpcyB0aGVyZWZvcmUKKyAgICAgICAgICAgICAgICAvLyBpcnJl
bGV2YW50LCBidXQgd2UgY2FuIGdldCB0aGUgdmFsdWUgdGhhdCB3YXMgcHJlc2VydmVkIGJ5IHVz
aW5nIHRoZSB1bndpbmQKKyAgICAgICAgICAgICAgICAvLyBkYXRhLiBXZSd2ZSBhbHJlYWR5IGNv
cGllZCBhbGwgdW53aW5kLWFibGUgcHJlc2VydmVkIHJlZ2lzdGVycyBpbnRvIHRoZSB1bndpbmQK
KyAgICAgICAgICAgICAgICAvLyBzY3JhdGNoIGJ1ZmZlciwgc28gd2UgY2FuIGdldCBpdCBmcm9t
IHRoZXJlLgorICAgICAgICAgICAgICAgIGppdC5sb2FkNjQodW53aW5kU2NyYXRjaCArIHVud2lu
ZEluZGV4LCByZWdUb0xvYWQpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoYmFz
ZWxpbmVSZWdpc3Rlck9mZnNldCkKKyAgICAgICAgICAgICAgICBqaXQuc3RvcmU2NChyZWdUb0xv
YWQsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKE1hY3JvQXNzZW1ibGVyOjpmcmFtZVBvaW50ZXJS
ZWdpc3RlciwgYmFzZWxpbmVSZWdpc3Rlck9mZnNldC0+b2Zmc2V0KCkpKTsKICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIC8vIFRoZSBGVEwgY29tcGlsYXRpb24gcHJlc2VydmVkIHRoZSBy
ZWdpc3Rlci4gSXRzIG5ldyB2YWx1ZSBpcyB0aGVyZWZvcmUKLSAgICAgICAgICAgIC8vIGlycmVs
ZXZhbnQsIGJ1dCB3ZSBjYW4gZ2V0IHRoZSB2YWx1ZSB0aGF0IHdhcyBwcmVzZXJ2ZWQgYnkgdXNp
bmcgdGhlIHVud2luZAotICAgICAgICAgICAgLy8gZGF0YS4gV2UndmUgYWxyZWFkeSBjb3BpZWQg
YWxsIHVud2luZC1hYmxlIHByZXNlcnZlZCByZWdpc3RlcnMgaW50byB0aGUgdW53aW5kCi0gICAg
ICAgICAgICAvLyBzY3JhdGNoIGJ1ZmZlciwgc28gd2UgY2FuIGdldCBpdCBmcm9tIHRoZXJlLgot
ICAgICAgICAgICAgaml0LmxvYWQ2NCh1bndpbmRTY3JhdGNoICsgdW53aW5kSW5kZXgsIEdQUklu
Zm86OnJlZ1QwKTsKKyAgICAgICAgICAgIEZQUlJlZyBmcFJlZ1RvTG9hZCA9IGJhc2VsaW5lUmVn
aXN0ZXJPZmZzZXQgPyBGUFJJbmZvOjpmcFJlZ1QwIDogcmVnLmZwcigpOworCisgICAgICAgICAg
ICBpZiAodW53aW5kSW5kZXggPT0gVUlOVF9NQVgpCisgICAgICAgICAgICAgICAgaml0LmxvYWRE
b3VibGUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIocmVnaXN0ZXJTY3JhdGNoICsgb2Zm
c2V0T2ZSZWcocmVnKSksIGZwUmVnVG9Mb2FkKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICBqaXQubG9hZERvdWJsZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cih1bndp
bmRTY3JhdGNoICsgdW53aW5kSW5kZXgpLCBmcFJlZ1RvTG9hZCk7CisKKyAgICAgICAgICAgIGlm
IChiYXNlbGluZVJlZ2lzdGVyT2Zmc2V0KQorICAgICAgICAgICAgICAgIGppdC5zdG9yZURvdWJs
ZShmcFJlZ1RvTG9hZCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoTWFjcm9Bc3NlbWJsZXI6OmZy
YW1lUG9pbnRlclJlZ2lzdGVyLCBiYXNlbGluZVJlZ2lzdGVyT2Zmc2V0LT5vZmZzZXQoKSkpOwog
ICAgICAgICB9Ci0gICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBBc3NlbWJseUhl
bHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDEsIGN1cnJlbnRPZmZzZXQpKTsKICAgICB9Ci0g
ICAgCi0gICAgLy8gV2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB3ZSByZXR1cm4gaW50byB0aGUg
cmVnaXN0ZXIgcmVzdG9yYXRpb24gdGh1bmsuIFRoaXMgd29ya3MKLSAgICAvLyBkaWZmZXJlbnRs
eSBkZXBlbmRpbmcgb24gd2hldGhlciBvciBub3Qgd2UgaGFkIGFyaXR5IGlzc3Vlcy4KLSAgICBN
YWNyb0Fzc2VtYmxlcjo6SnVtcCBhcml0eUludGFjdEZvclJldHVyblBDID0gaml0LmJyYW5jaDMy
KAotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6R3JlYXRlclRoYW5PckVxdWFsLAotICAgICAgICBD
Q2FsbEhlbHBlcnM6OnBheWxvYWRGb3IoSlNTdGFjazo6QXJndW1lbnRDb3VudCksCi0gICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkp
KTsKLSAgICAKLSAgICAvLyBUaGUgcmV0dXJuIFBDIGluIHRoZSBjYWxsIGZyYW1lIGhlYWRlciBw
b2ludHMgYXQgZXhhY3RseSB0aGUgcmlnaHQgYXJpdHkgcmVzdG9yYXRpb24KLSAgICAvLyB0aHVu
ay4gV2UgZG9uJ3Qgd2FudCB0byBjaGFuZ2UgdGhhdC4gQnV0IHRoZSBhcml0eSByZXN0b3JhdGlv
biB0aHVuaydzIGZyYW1lIGhhcyBhCi0gICAgLy8gcmV0dXJuIFBDIGFuZCB3ZSB3YW50IHRvIHJl
cm91dGUgdGhhdCB0byBvdXIgcmVnaXN0ZXIgcmVzdG9yYXRpb24gdGh1bmsuIFRoZSBhcml0eQot
ICAgIC8vIHJlc3RvcmF0aW9uJ3MgcmV0dXJuIFBDIGp1c3QganVzdCBiZWxvdyByZWdUMSwgYW5k
IHRoZSByZWdpc3RlciByZXN0b3JhdGlvbidzIHJldHVybiBQQwotICAgIC8vIGlzIHJpZ2h0IGF0
IHJlZ1QxLgotICAgIGppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86
OnJlZ1QxLCAtc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihzaXplb2YoUmVnaXN0ZXIpKSksIEdQUklu
Zm86OnJlZ1QwKTsKLSAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJl
Z1QxKTsKLSAgICBqaXQuc3RvcmVQdHIoCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tUHRyKHZtLT5nZXRDVElTdHViKHJlZ2lzdGVyUmVzdG9yYXRpb25UaHVua0dlbmVyYXRvciku
Y29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpLAotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhHUFJJbmZvOjpyZWdUMSwgLXN0YXRpY19jYXN0PHB0cmRpZmZfdD4oc2l6ZW9mKFJlZ2lz
dGVyKSkpKTsKLSAgICAKLSAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBhcml0eVJldHVyblBDUmVh
ZHkgPSBqaXQuanVtcCgpOwotCi0gICAgYXJpdHlJbnRhY3RGb3JSZXR1cm5QQy5saW5rKCZqaXQp
OwotICAgIAotICAgIGppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKE1hY3JvQXNz
ZW1ibGVyOjpmcmFtZVBvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lOjpyZXR1cm5QQ09mZnNldCgp
KSwgR1BSSW5mbzo6cmVnVDApOwotICAgIGppdC5zdG9yZVB0cihHUFJJbmZvOjpyZWdUMCwgR1BS
SW5mbzo6cmVnVDEpOwotICAgIGppdC5zdG9yZVB0cigKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW1QdHIodm0tPmdldENUSVN0dWIocmVnaXN0ZXJSZXN0b3JhdGlvblRodW5rR2Vu
ZXJhdG9yKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSksCi0gICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKE1hY3JvQXNzZW1ibGVyOjpmcmFtZVBvaW50ZXJSZWdpc3RlciwgQ2FsbEZy
YW1lOjpyZXR1cm5QQ09mZnNldCgpKSk7Ci0gICAgCi0gICAgYXJpdHlSZXR1cm5QQ1JlYWR5Lmxp
bmsoJmppdCk7Ci0gICAgCisKKyAgICBzaXplX3QgYmFzZWxpbmVWaXJ0dWFsUmVnaXN0ZXJzRm9y
Q2FsbGVlU2F2ZXMgPSBiYXNlbGluZUNvZGVCbG9jay0+Y2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFs
UmVnaXN0ZXJzKCk7CisKICAgICAvLyBOb3cgZ2V0IHN0YXRlIG91dCBvZiB0aGUgc2NyYXRjaCBi
dWZmZXIgYW5kIHBsYWNlIGl0IGJhY2sgaW50byB0aGUgc3RhY2suIFRoZSB2YWx1ZXMgYXJlCiAg
ICAgLy8gYWxyZWFkeSByZWJveGVkIHNvIHdlIGp1c3QgbW92ZSB0aGVtLgogICAgIGZvciAodW5z
aWduZWQgaW5kZXggPSBleGl0Lm1fdmFsdWVzLnNpemUoKTsgaW5kZXgtLTspIHsKLSAgICAgICAg
aW50IG9wZXJhbmQgPSBleGl0Lm1fdmFsdWVzLm9wZXJhbmRGb3JJbmRleChpbmRleCk7Ci0gICAg
ICAgIAorICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVnID0gZXhpdC5tX3ZhbHVlcy52aXJ0dWFs
UmVnaXN0ZXJGb3JJbmRleChpbmRleCk7CisKKyAgICAgICAgaWYgKHJlZy5pc0xvY2FsKCkgJiYg
cmVnLnRvTG9jYWwoKSA8IHN0YXRpY19jYXN0PGludD4oYmFzZWxpbmVWaXJ0dWFsUmVnaXN0ZXJz
Rm9yQ2FsbGVlU2F2ZXMpKQorICAgICAgICAgICAgY29udGludWU7CisKICAgICAgICAgaml0Lmxv
YWQ2NChzY3JhdGNoICsgaW5kZXgsIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgaml0LnN0b3Jl
NjQoR1BSSW5mbzo6cmVnVDAsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihzdGF0aWNfY2Fz
dDxWaXJ0dWFsUmVnaXN0ZXI+KG9wZXJhbmQpKSk7CisgICAgICAgIGppdC5zdG9yZTY0KEdQUklu
Zm86OnJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3IocmVnKSk7CiAgICAgfQogICAg
IAogICAgIGhhbmRsZUV4aXRDb3VudHMoaml0LCBleGl0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMUmVnaXN0ZXJBdE9mZnNldC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExSZWdpc3RlckF0T2Zmc2V0LmNwcAkocmV2aXNpb24gMTg5
NTQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExSZWdpc3RlckF0T2Zmc2V0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw0MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJGVExSZWdpc3RlckF0T2Zmc2V0LmgiCi0KLSNpZiBFTkFCTEUoRlRMX0pJVCkKLQotbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewotCi12b2lkIFJlZ2lzdGVyQXRPZmZzZXQ6OmR1
bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKLXsKLSAgICBvdXQucHJpbnQocmVnKCksICIgYXQg
Iiwgb2Zmc2V0KCkpOwotfQotCi19IH0gLy8gbmFtZXNwYWNlIEpTQzo6RlRMCi0KLSNlbmRpZiAv
LyBFTkFCTEUoRlRMX0pJVCkKLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExS
ZWdpc3RlckF0T2Zmc2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExSZWdpc3RlckF0T2Zmc2V0LmgJKHJldmlzaW9uIDE4OTU0MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMUmVnaXN0ZXJBdE9mZnNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDgwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
Ci0gKi8KLQotI2lmbmRlZiBGVExSZWdpc3RlckF0T2Zmc2V0X2gKLSNkZWZpbmUgRlRMUmVnaXN0
ZXJBdE9mZnNldF9oCi0KLSNpZiBFTkFCTEUoRlRMX0pJVCkKLQotI2luY2x1ZGUgIlJlZy5oIgot
I2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgotCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IEZUTCB7Ci0KLWNsYXNzIFJlZ2lzdGVyQXRPZmZzZXQgewotcHVibGljOgotICAgIFJlZ2lzdGVy
QXRPZmZzZXQoKQotICAgICAgICA6IG1fb2Zmc2V0KDApCi0gICAgewotICAgIH0KLSAgICAKLSAg
ICBSZWdpc3RlckF0T2Zmc2V0KFJlZyByZWcsIHB0cmRpZmZfdCBvZmZzZXQpCi0gICAgICAgIDog
bV9yZWcocmVnKQotICAgICAgICAsIG1fb2Zmc2V0KG9mZnNldCkKLSAgICB7Ci0gICAgfQotICAg
IAotICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fcmVnOyB9Ci0gICAgCi0g
ICAgUmVnIHJlZygpIGNvbnN0IHsgcmV0dXJuIG1fcmVnOyB9Ci0gICAgcHRyZGlmZl90IG9mZnNl
dCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXQmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0
dXJuIHJlZygpID09IG90aGVyLnJlZygpICYmIG9mZnNldCgpID09IG90aGVyLm9mZnNldCgpOwot
ICAgIH0KLSAgICAKLSAgICBib29sIG9wZXJhdG9yPChjb25zdCBSZWdpc3RlckF0T2Zmc2V0JiBv
dGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmIChyZWcoKSAhPSBvdGhlci5yZWcoKSkKLSAg
ICAgICAgICAgIHJldHVybiByZWcoKSA8IG90aGVyLnJlZygpOwotICAgICAgICByZXR1cm4gb2Zm
c2V0KCkgPCBvdGhlci5vZmZzZXQoKTsKLSAgICB9Ci0gICAgCi0gICAgc3RhdGljIFJlZyBnZXRS
ZWcoUmVnaXN0ZXJBdE9mZnNldCogdmFsdWUpIHsgcmV0dXJuIHZhbHVlLT5yZWcoKTsgfQotICAg
IAotICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKLQotcHJpdmF0ZToKLSAg
ICBSZWcgbV9yZWc7Ci0gICAgcHRyZGlmZl90IG1fb2Zmc2V0OwotfTsKLQotfSB9IC8vIG5hbWVz
cGFjZSBKU0M6OkZUTAotCi0jZW5kaWYgLy8gRU5BQkxFKEZUTF9KSVQpCi0KLSNlbmRpZiAvLyBG
VExSZWdpc3RlckF0T2Zmc2V0X2gKLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExUaHVua3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
VGh1bmtzLmNwcAkocmV2aXNpb24gMTg5NTQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExUaHVua3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Niw4ICs2Niw4IEBAIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZiBvc3JFeGl0R2VuZXJhdGlvblQKICAgICBzYXZlQWxsUmVnaXN0ZXJzKGpp
dCwgYnVmZmVyKTsKICAgICAKICAgICAvLyBUZWxsIEdDIG1hcmsgcGhhc2UgaG93IG11Y2ggb2Yg
dGhlIHNjcmF0Y2ggYnVmZmVyIGlzIGFjdGl2ZSBkdXJpbmcgY2FsbC4KLSAgICBqaXQubW92ZShN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihzY3JhdGNoQnVmZmVyLT5hY3RpdmVMZW5ndGhQ
dHIoKSksIEdQUkluZm86Om5vbkFyZ0dQUjEpOwotICAgIGppdC5zdG9yZVB0cihNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbVB0cihyZXF1aXJlZFNjcmF0Y2hNZW1vcnlTaXplSW5CeXRlcygpKSwg
R1BSSW5mbzo6bm9uQXJnR1BSMSk7CisgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW1QdHIoc2NyYXRjaEJ1ZmZlci0+YWN0aXZlTGVuZ3RoUHRyKCkpLCBHUFJJbmZvOjpub25B
cmdHUFIwKTsKKyAgICBqaXQuc3RvcmVQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
cmVxdWlyZWRTY3JhdGNoTWVtb3J5U2l6ZUluQnl0ZXMoKSksIEdQUkluZm86Om5vbkFyZ0dQUjAp
OwogCiAgICAgaml0LmxvYWRQdHIoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86
OmFyZ3VtZW50R1BSMCk7CiAgICAgaml0LnBlZWsoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTFVud2luZEluZm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMVW53aW5kSW5mby5jcHAJKHJldmlzaW9uIDE4OTU0MykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMVW53aW5kSW5mby5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk0
LDYgKzk0LDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJGVExVbndpbmRJbmZv
LmgiCiAKKyNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJSZWdpc3RlckF0T2Zmc2V0
TGlzdC5oIgorCiAjaWYgRU5BQkxFKEZUTF9KSVQpCiAKICNpZiBPUyhEQVJXSU4pCkBAIC0xMDMs
MTAgKzEwNiw2IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKIAotVW53aW5k
SW5mbzo6VW53aW5kSW5mbygpIHsgfQotVW53aW5kSW5mbzo6flVud2luZEluZm8oKSB7IH0KLQot
CiBuYW1lc3BhY2UgewogI2lmIE9TKERBUldJTikKIHN0cnVjdCBDb21wYWN0VW53aW5kIHsKQEAg
LTY1NCwxMiArNjUzLDExIEBAIHN0YXRpYyB2b2lkIHBhcnNlRkRFSW5zdHJ1Y3Rpb25zKGNvbnN0
IEYKICNlbmRpZgogfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKLWJvb2wgVW53aW5kSW5mbzo6
cGFyc2Uodm9pZCogc2VjdGlvbiwgc2l6ZV90IHNpemUsIEdlbmVyYXRlZEZ1bmN0aW9uIGdlbmVy
YXRlZEZ1bmN0aW9uKQorc3RkOjp1bmlxdWVfcHRyPFJlZ2lzdGVyQXRPZmZzZXRMaXN0PiBwYXJz
ZVVud2luZEluZm8odm9pZCogc2VjdGlvbiwgc2l6ZV90IHNpemUsIEdlbmVyYXRlZEZ1bmN0aW9u
IGdlbmVyYXRlZEZ1bmN0aW9uKQogewotICAgIG1fcmVnaXN0ZXJzLmNsZWFyKCk7CiAgICAgUkVM
RUFTRV9BU1NFUlQoISFzZWN0aW9uKTsKLSAgICBpZiAoIXNlY3Rpb24pCi0gICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWdpc3RlckF0T2Zmc2V0TGlzdD4gcmVn
aXN0ZXJPZmZzZXRzID0gc3RkOjptYWtlX3VuaXF1ZTxSZWdpc3RlckF0T2Zmc2V0TGlzdD4oKTsK
IAogI2lmIE9TKERBUldJTikKICAgICBSRUxFQVNFX0FTU0VSVChzaXplID49IHNpemVvZihDb21w
YWN0VW53aW5kKSk7CkBAIC02ODksMjcgKzY4NywyNyBAQCBib29sIFVud2luZEluZm86OnBhcnNl
KHZvaWQqIHNlY3Rpb24sIHNpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAg
ICAgICBjYXNlIFVOV0lORF9YODZfNjRfUkVHX1JCWDoKLSAgICAgICAgICAgIG1fcmVnaXN0ZXJz
LmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KFg4NlJlZ2lzdGVyczo6ZWJ4LCBvZmZzZXQpKTsKKyAg
ICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoWDg2UmVn
aXN0ZXJzOjplYngsIG9mZnNldCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAK
ICAgICAgICAgY2FzZSBVTldJTkRfWDg2XzY0X1JFR19SMTI6Ci0gICAgICAgICAgICBtX3JlZ2lz
dGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChYODZSZWdpc3RlcnM6OnIxMiwgb2Zmc2V0KSk7
CisgICAgICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KFg4
NlJlZ2lzdGVyczo6cjEyLCBvZmZzZXQpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgCiAgICAgICAgIGNhc2UgVU5XSU5EX1g4Nl82NF9SRUdfUjEzOgotICAgICAgICAgICAgbV9y
ZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoWDg2UmVnaXN0ZXJzOjpyMTMsIG9mZnNl
dCkpOworICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNl
dChYODZSZWdpc3RlcnM6OnIxMywgb2Zmc2V0KSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIAogICAgICAgICBjYXNlIFVOV0lORF9YODZfNjRfUkVHX1IxNDoKLSAgICAgICAgICAg
IG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KFg4NlJlZ2lzdGVyczo6cjE0LCBv
ZmZzZXQpKTsKKyAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRP
ZmZzZXQoWDg2UmVnaXN0ZXJzOjpyMTQsIG9mZnNldCkpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAKICAgICAgICAgY2FzZSBVTldJTkRfWDg2XzY0X1JFR19SMTU6Ci0gICAgICAg
ICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChYODZSZWdpc3RlcnM6OnIx
NSwgb2Zmc2V0KSk7CisgICAgICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3Rl
ckF0T2Zmc2V0KFg4NlJlZ2lzdGVyczo6cjE1LCBvZmZzZXQpKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgVU5XSU5EX1g4Nl82NF9SRUdfUkJQOgotICAg
ICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoWDg2UmVnaXN0ZXJz
OjplYnAsIG9mZnNldCkpOworICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVn
aXN0ZXJBdE9mZnNldChYODZSZWdpc3RlcnM6OmVicCwgb2Zmc2V0KSk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIAogICAgICAgICBkZWZhdWx0OgpAQCAtNzIxLDQ0ICs3MTksNDQg
QEAgYm9vbCBVbndpbmRJbmZvOjpwYXJzZSh2b2lkKiBzZWN0aW9uLCBzaQogI2VsaWYgQ1BVKEFS
TTY0KQogICAgIFJFTEVBU0VfQVNTRVJUKChlbmNvZGluZyAmIFVOV0lORF9BUk02NF9NT0RFX01B
U0spID09IFVOV0lORF9BUk02NF9NT0RFX0ZSQU1FKTsKICAgICAKLSAgICBtX3JlZ2lzdGVycy5h
cHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6ZnAsIDApKTsKKyAgICByZWdp
c3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpmcCwg
MCkpOwogICAgIAogICAgIGludDMyX3Qgb2Zmc2V0ID0gMDsKICAgICBpZiAoZW5jb2RpbmcgJiBV
TldJTkRfQVJNNjRfRlJBTUVfWDE5X1gyMF9QQUlSKSB7Ci0gICAgICAgIG1fcmVnaXN0ZXJzLmFw
cGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MTksIG9mZnNldCAtPSA4KSk7
Ci0gICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0
ZXJzOjp4MjAsIG9mZnNldCAtPSA4KSk7CisgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5k
KFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OngxOSwgb2Zmc2V0IC09IDgpKTsKKyAg
ICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lz
dGVyczo6eDIwLCBvZmZzZXQgLT0gOCkpOwogICAgIH0KICAgICBpZiAoZW5jb2RpbmcgJiBVTldJ
TkRfQVJNNjRfRlJBTUVfWDIxX1gyMl9QQUlSKSB7Ci0gICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVu
ZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MjEsIG9mZnNldCAtPSA4KSk7Ci0g
ICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJz
Ojp4MjIsIG9mZnNldCAtPSA4KSk7CisgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJl
Z2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OngyMSwgb2Zmc2V0IC09IDgpKTsKKyAgICAg
ICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVy
czo6eDIyLCBvZmZzZXQgLT0gOCkpOwogICAgIH0KICAgICBpZiAoZW5jb2RpbmcgJiBVTldJTkRf
QVJNNjRfRlJBTUVfWDIzX1gyNF9QQUlSKSB7Ci0gICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChS
ZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MjMsIG9mZnNldCAtPSA4KSk7Ci0gICAg
ICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4
MjQsIG9mZnNldCAtPSA4KSk7CisgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lz
dGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OngyMywgb2Zmc2V0IC09IDgpKTsKKyAgICAgICAg
cmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6
eDI0LCBvZmZzZXQgLT0gOCkpOwogICAgIH0KICAgICBpZiAoZW5jb2RpbmcgJiBVTldJTkRfQVJN
NjRfRlJBTUVfWDI1X1gyNl9QQUlSKSB7Ci0gICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdp
c3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MjUsIG9mZnNldCAtPSA4KSk7Ci0gICAgICAg
IG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MjYs
IG9mZnNldCAtPSA4KSk7CisgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVy
QXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OngyNSwgb2Zmc2V0IC09IDgpKTsKKyAgICAgICAgcmVn
aXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDI2
LCBvZmZzZXQgLT0gOCkpOwogICAgIH0KICAgICBpZiAoZW5jb2RpbmcgJiBVTldJTkRfQVJNNjRf
RlJBTUVfWDI3X1gyOF9QQUlSKSB7Ci0gICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3Rl
ckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MjcsIG9mZnNldCAtPSA4KSk7Ci0gICAgICAgIG1f
cmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MjgsIG9m
ZnNldCAtPSA4KSk7CisgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRP
ZmZzZXQoQVJNNjRSZWdpc3RlcnM6OngyNywgb2Zmc2V0IC09IDgpKTsKKyAgICAgICAgcmVnaXN0
ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDI4LCBv
ZmZzZXQgLT0gOCkpOwogICAgIH0KICAgICBpZiAoZW5jb2RpbmcgJiBVTldJTkRfQVJNNjRfRlJB
TUVfRDhfRDlfUEFJUikgewotICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9m
ZnNldChBUk02NFJlZ2lzdGVyczo6cTgsIG9mZnNldCAtPSA4KSk7Ci0gICAgICAgIG1fcmVnaXN0
ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxOSwgb2Zmc2V0IC09
IDgpKTsKKyAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChB
Uk02NFJlZ2lzdGVyczo6cTgsIG9mZnNldCAtPSA4KSk7CisgICAgICAgIHJlZ2lzdGVyT2Zmc2V0
cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnE5LCBvZmZzZXQgLT0g
OCkpOwogICAgIH0KICAgICBpZiAoZW5jb2RpbmcgJiBVTldJTkRfQVJNNjRfRlJBTUVfRDEwX0Qx
MV9QQUlSKSB7Ci0gICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFS
TTY0UmVnaXN0ZXJzOjpxMTAsIG9mZnNldCAtPSA4KSk7Ci0gICAgICAgIG1fcmVnaXN0ZXJzLmFw
cGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxMTEsIG9mZnNldCAtPSA4KSk7
CisgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRS
ZWdpc3RlcnM6OnExMCwgb2Zmc2V0IC09IDgpKTsKKyAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5h
cHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTExLCBvZmZzZXQgLT0gOCkp
OwogICAgIH0KICAgICBpZiAoZW5jb2RpbmcgJiBVTldJTkRfQVJNNjRfRlJBTUVfRDEyX0QxM19Q
QUlSKSB7Ci0gICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0
UmVnaXN0ZXJzOjpxMTIsIG9mZnNldCAtPSA4KSk7Ci0gICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVu
ZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxMTMsIG9mZnNldCAtPSA4KSk7Cisg
ICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdp
c3RlcnM6OnExMiwgb2Zmc2V0IC09IDgpKTsKKyAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBl
bmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTEzLCBvZmZzZXQgLT0gOCkpOwog
ICAgIH0KICAgICBpZiAoZW5jb2RpbmcgJiBVTldJTkRfQVJNNjRfRlJBTUVfRDE0X0QxNV9QQUlS
KSB7Ci0gICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVn
aXN0ZXJzOjpxMTQsIG9mZnNldCAtPSA4KSk7Ci0gICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChS
ZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxMTUsIG9mZnNldCAtPSA4KSk7CisgICAg
ICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3Rl
cnM6OnExNCwgb2Zmc2V0IC09IDgpKTsKKyAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQo
UmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTE1LCBvZmZzZXQgLT0gOCkpOwogICAg
IH0KICNlbHNlCiAjZXJyb3IgIlVucmVjb2duaXplZCBhcmNoaXRlY3R1cmUiCkBAIC03ODIsMjIg
Kzc4MCwyMiBAQCBib29sIFVud2luZEluZm86OnBhcnNlKHZvaWQqIHNlY3Rpb24sIHNpCiAgICAg
ICAgIGlmIChwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0uc2F2ZWQpIHsKICAgICAgICAgICAgIHN3
aXRjaCAoaSkgewogICAgICAgICAgICAgY2FzZSBVTldfWDg2XzY0X3JieDoKLSAgICAgICAgICAg
ICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChYODZSZWdpc3RlcnM6OmVi
eCwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9m
ZnNldCkpOworICAgICAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVy
QXRPZmZzZXQoWDg2UmVnaXN0ZXJzOjplYngsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZz
ZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIGNhc2UgVU5XX1g4Nl82NF9yMTI6Ci0gICAgICAgICAgICAgICAgbV9yZWdp
c3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoWDg2UmVnaXN0ZXJzOjpyMTIsIHByb2xvZy5z
YXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAg
ICAgICAgICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KFg4
NlJlZ2lzdGVyczo6cjEyLCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9n
LmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICBjYXNlIFVOV19YODZfNjRfcjEzOgotICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVu
ZChSZWdpc3RlckF0T2Zmc2V0KFg4NlJlZ2lzdGVyczo6cjEzLCBwcm9sb2cuc2F2ZWRSZWdpc3Rl
cnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAg
ICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChYODZSZWdpc3RlcnM6
OnIxMywgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rl
ck9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVTldf
WDg2XzY0X3IxNDoKLSAgICAgICAgICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJB
dE9mZnNldChYODZSZWdpc3RlcnM6OnIxNCwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNl
dCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAgICAgIHJlZ2lzdGVy
T2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoWDg2UmVnaXN0ZXJzOjpyMTQsIHByb2xv
Zy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVU5XX1g4Nl82NF9yMTU6
Ci0gICAgICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoWDg2
UmVnaXN0ZXJzOjpyMTUsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cu
Y2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFw
cGVuZChSZWdpc3RlckF0T2Zmc2V0KFg4NlJlZ2lzdGVyczo6cjE1LCBwcm9sb2cuc2F2ZWRSZWdp
c3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVOV19YODZfNjRfcmJwOgotICAgICAgICAg
ICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KFg4NlJlZ2lzdGVyczo6
ZWJwLCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVy
T2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0
ZXJBdE9mZnNldChYODZSZWdpc3RlcnM6OmVicCwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9m
ZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgY2FzZSBEV19YODZfNjRfUkVUX2FkZHI6CiAgICAgICAgICAgICAgICAg
YnJlYWs7CkBAIC04MTYsMTk2ICs4MTQsMTk2IEBAIGJvb2wgVW53aW5kSW5mbzo6cGFyc2Uodm9p
ZCogc2VjdGlvbiwgc2kKICAgICAgICAgaWYgKHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5zYXZl
ZCkgewogICAgICAgICAgICAgc3dpdGNoIChpKSB7CiAgICAgICAgICAgICBjYXNlIFVOV19BUk02
NF94MDoKLSAgICAgICAgICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNl
dChBUk02NFJlZ2lzdGVyczo6eDAsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBw
cm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICByZWdpc3Rlck9mZnNl
dHMtPmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MCwgcHJvbG9nLnNh
dmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVTldfQVJNNjRfeDE6Ci0gICAg
ICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdp
c3RlcnM6OngxLCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJl
Z2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQo
UmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDEsIHByb2xvZy5zYXZlZFJlZ2lzdGVy
c1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVU5XX0FSTTY0X3gyOgotICAgICAgICAgICAgICAg
IG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4Miwg
cHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNl
dCkpOworICAgICAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRP
ZmZzZXQoQVJNNjRSZWdpc3RlcnM6OngyLCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0
ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICBjYXNlIFVOV19BUk02NF94MzoKLSAgICAgICAgICAgICAgICBtX3JlZ2lzdGVy
cy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDMsIHByb2xvZy5zYXZl
ZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAg
ICAgICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0
UmVnaXN0ZXJzOjp4MywgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5j
ZmFSZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
Y2FzZSBVTldfQVJNNjRfeDQ6Ci0gICAgICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJl
Z2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6Ong0LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNb
aV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAg
cmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6
eDQsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJP
ZmZzZXQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVU5XX0FS
TTY0X3g1OgotICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zm
c2V0KEFSTTY0UmVnaXN0ZXJzOjp4NSwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCAr
IHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAgICAgIHJlZ2lzdGVyT2Zm
c2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6Ong1LCBwcm9sb2cu
c2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVOV19BUk02NF94NjoKLSAg
ICAgICAgICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJl
Z2lzdGVyczo6eDYsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2Zh
UmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVu
ZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4NiwgcHJvbG9nLnNhdmVkUmVnaXN0
ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVTldfQVJNNjRfeDc6Ci0gICAgICAgICAgICAg
ICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6Ong3
LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zm
c2V0KSk7CisgICAgICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0ZXJB
dE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDcsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZz
ZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIGNhc2UgVU5XX0FSTTY0X3g4OgotICAgICAgICAgICAgICAgIG1fcmVnaXN0
ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4OCwgcHJvbG9nLnNh
dmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOworICAg
ICAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJN
NjRSZWdpc3RlcnM6Ong4LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9n
LmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICBjYXNlIFVOV19BUk02NF94OToKLSAgICAgICAgICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQo
UmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDksIHByb2xvZy5zYXZlZFJlZ2lzdGVy
c1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAg
ICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJz
Ojp4OSwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rl
ck9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVTldf
QVJNNjRfeDEwOgotICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0
T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MTAsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZz
ZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICByZWdpc3Rl
ck9mZnNldHMtPmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MTAsIHBy
b2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQp
KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVU5XX0FSTTY0X3gx
MToKLSAgICAgICAgICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChB
Uk02NFJlZ2lzdGVyczo6eDExLCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJv
bG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXRz
LT5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDExLCBwcm9sb2cuc2F2
ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVOV19BUk02NF94MTI6Ci0gICAg
ICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdp
c3RlcnM6OngxMiwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFS
ZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5k
KFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OngxMiwgcHJvbG9nLnNhdmVkUmVnaXN0
ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVTldfQVJNNjRfeDEzOgotICAgICAgICAgICAg
ICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4
MTMsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJP
ZmZzZXQpKTsKKyAgICAgICAgICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3Rl
ckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MTMsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5v
ZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIGNhc2UgVU5XX0FSTTY0X3gxNDoKLSAgICAgICAgICAgICAgICBtX3Jl
Z2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDE0LCBwcm9s
b2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7
CisgICAgICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNl
dChBUk02NFJlZ2lzdGVyczo6eDE0LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsg
cHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICBjYXNlIFVOV19BUk02NF94MTU6Ci0gICAgICAgICAgICAgICAgbV9yZWdpc3RlcnMu
YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OngxNSwgcHJvbG9nLnNhdmVk
UmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOworICAgICAg
ICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRS
ZWdpc3RlcnM6OngxNSwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5j
ZmFSZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
Y2FzZSBVTldfQVJNNjRfeDE2OgotICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChS
ZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MTYsIHByb2xvZy5zYXZlZFJlZ2lzdGVy
c1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAg
ICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJz
Ojp4MTYsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0
ZXJPZmZzZXQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVU5X
X0FSTTY0X3gxNzoKLSAgICAgICAgICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJB
dE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDE3LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zm
c2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgcmVnaXN0
ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDE3LCBw
cm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0
KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVOV19BUk02NF94
MTg6Ci0gICAgICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQo
QVJNNjRSZWdpc3RlcnM6OngxOCwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHBy
b2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0
cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OngxOCwgcHJvbG9nLnNh
dmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVTldfQVJNNjRfeDE5OgotICAg
ICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVn
aXN0ZXJzOjp4MTksIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2Zh
UmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVu
ZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MTksIHByb2xvZy5zYXZlZFJlZ2lz
dGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVU5XX0FSTTY0X3gyMDoKLSAgICAgICAgICAg
ICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6
eDIwLCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVy
T2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0
ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDIwLCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0u
b2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBjYXNlIFVOV19BUk02NF94MjE6Ci0gICAgICAgICAgICAgICAgbV9y
ZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OngyMSwgcHJv
bG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkp
OworICAgICAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZz
ZXQoQVJNNjRSZWdpc3RlcnM6OngyMSwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCAr
IHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgY2FzZSBVTldfQVJNNjRfeDIyOgotICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJz
LmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MjIsIHByb2xvZy5zYXZl
ZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAg
ICAgICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0
UmVnaXN0ZXJzOjp4MjIsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cu
Y2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IGNhc2UgVU5XX0FSTTY0X3gyMzoKLSAgICAgICAgICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQo
UmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDIzLCBwcm9sb2cuc2F2ZWRSZWdpc3Rl
cnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAg
ICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVy
czo6eDIzLCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lz
dGVyT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVO
V19BUk02NF94MjQ6Ci0gICAgICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVy
QXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OngyNCwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9m
ZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAgICAgIHJlZ2lz
dGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OngyNCwg
cHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNl
dCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVTldfQVJNNjRf
eDI1OgotICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0
KEFSTTY0UmVnaXN0ZXJzOjp4MjUsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBw
cm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICByZWdpc3Rlck9mZnNl
dHMtPmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MjUsIHByb2xvZy5z
YXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVU5XX0FSTTY0X3gyNjoKLSAg
ICAgICAgICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJl
Z2lzdGVyczo6eDI2LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNm
YVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBl
bmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDI2LCBwcm9sb2cuc2F2ZWRSZWdp
c3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVOV19BUk02NF94Mjc6Ci0gICAgICAgICAg
ICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6
OngyNywgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rl
ck9mZnNldCkpOworICAgICAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lz
dGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OngyNywgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ld
Lm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgY2FzZSBVTldfQVJNNjRfeDI4OgotICAgICAgICAgICAgICAgIG1f
cmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MjgsIHBy
b2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQp
KTsKKyAgICAgICAgICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3RlckF0T2Zm
c2V0KEFSTTY0UmVnaXN0ZXJzOjp4MjgsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQg
KyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGNhc2UgVU5XX0FSTTY0X2ZwOgotICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJz
LmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpmcCwgcHJvbG9nLnNhdmVk
UmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOworICAgICAg
ICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRS
ZWdpc3RlcnM6OmZwLCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNm
YVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBj
YXNlIFVOV19BUk02NF94MzA6Ci0gICAgICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJl
Z2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OngzMCwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJz
W2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAgICAg
IHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6
OngzMCwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rl
ck9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVTldf
QVJNNjRfc3A6Ci0gICAgICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRP
ZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnNwLCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0
ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgcmVnaXN0ZXJP
ZmZzZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6c3AsIHByb2xv
Zy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVU5XX0FSTTY0X3YwOgot
ICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0
UmVnaXN0ZXJzOjpxMCwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5j
ZmFSZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBw
ZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnEwLCBwcm9sb2cuc2F2ZWRSZWdp
c3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVOV19BUk02NF92MToKLSAgICAgICAgICAg
ICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6
cTEsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJP
ZmZzZXQpKTsKKyAgICAgICAgICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3Rl
ckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxMSwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9m
ZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgY2FzZSBVTldfQVJNNjRfdjI6Ci0gICAgICAgICAgICAgICAgbV9yZWdp
c3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnEyLCBwcm9sb2cu
c2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7Cisg
ICAgICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChB
Uk02NFJlZ2lzdGVyczo6cTIsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9s
b2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIGNhc2UgVU5XX0FSTTY0X3YzOgotICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVu
ZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxMywgcHJvbG9nLnNhdmVkUmVnaXN0
ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAg
ICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3Rl
cnM6OnEzLCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lz
dGVyT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVO
V19BUk02NF92NDoKLSAgICAgICAgICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJB
dE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTQsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZz
ZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICByZWdpc3Rl
ck9mZnNldHMtPmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxNCwgcHJv
bG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkp
OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVTldfQVJNNjRfdjU6
Ci0gICAgICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJN
NjRSZWdpc3RlcnM6OnE1LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9n
LmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5h
cHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTUsIHByb2xvZy5zYXZlZFJl
Z2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVU5XX0FSTTY0X3Y2OgotICAgICAgICAg
ICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJz
OjpxNiwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rl
ck9mZnNldCkpOworICAgICAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lz
dGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnE2LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0u
b2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBjYXNlIFVOV19BUk02NF92NzoKLSAgICAgICAgICAgICAgICBtX3Jl
Z2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTcsIHByb2xv
Zy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsK
KyAgICAgICAgICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0
KEFSTTY0UmVnaXN0ZXJzOjpxNywgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHBy
b2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgY2FzZSBVTldfQVJNNjRfdjg6Ci0gICAgICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBw
ZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnE4LCBwcm9sb2cuc2F2ZWRSZWdp
c3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAg
ICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lz
dGVyczo6cTgsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVn
aXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2Ug
VU5XX0FSTTY0X3Y5OgotICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3Rl
ckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxOSwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9m
ZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAgICAgIHJlZ2lz
dGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnE5LCBw
cm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0
KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVOV19BUk02NF92
MTA6Ci0gICAgICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQo
QVJNNjRSZWdpc3RlcnM6OnExMCwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHBy
b2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0
cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnExMCwgcHJvbG9nLnNh
dmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVTldfQVJNNjRfdjExOgotICAg
ICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVn
aXN0ZXJzOjpxMTEsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2Zh
UmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVu
ZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxMTEsIHByb2xvZy5zYXZlZFJlZ2lz
dGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVU5XX0FSTTY0X3YxMjoKLSAgICAgICAgICAg
ICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6
cTEyLCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVy
T2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0
ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTEyLCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0u
b2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBjYXNlIFVOV19BUk02NF92MTM6Ci0gICAgICAgICAgICAgICAgbV9y
ZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnExMywgcHJv
bG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkp
OworICAgICAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZz
ZXQoQVJNNjRSZWdpc3RlcnM6OnExMywgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCAr
IHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgY2FzZSBVTldfQVJNNjRfdjE0OgotICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJz
LmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxMTQsIHByb2xvZy5zYXZl
ZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAg
ICAgICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0
UmVnaXN0ZXJzOjpxMTQsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cu
Y2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IGNhc2UgVU5XX0FSTTY0X3YxNToKLSAgICAgICAgICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQo
UmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTE1LCBwcm9sb2cuc2F2ZWRSZWdpc3Rl
cnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAg
ICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVy
czo6cTE1LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lz
dGVyT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVO
V19BUk02NF92MTY6Ci0gICAgICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVy
QXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnExNiwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9m
ZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAgICAgIHJlZ2lz
dGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnExNiwg
cHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNl
dCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVTldfQVJNNjRf
djE3OgotICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0
KEFSTTY0UmVnaXN0ZXJzOjpxMTcsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBw
cm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICByZWdpc3Rlck9mZnNl
dHMtPmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxMTcsIHByb2xvZy5z
YXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVU5XX0FSTTY0X3YxODoKLSAg
ICAgICAgICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJl
Z2lzdGVyczo6cTE4LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNm
YVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBl
bmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTE4LCBwcm9sb2cuc2F2ZWRSZWdp
c3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVOV19BUk02NF92MTk6Ci0gICAgICAgICAg
ICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6
OnExOSwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rl
ck9mZnNldCkpOworICAgICAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lz
dGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnExOSwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ld
Lm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgY2FzZSBVTldfQVJNNjRfdjIwOgotICAgICAgICAgICAgICAgIG1f
cmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxMjAsIHBy
b2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQp
KTsKKyAgICAgICAgICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3RlckF0T2Zm
c2V0KEFSTTY0UmVnaXN0ZXJzOjpxMjAsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQg
KyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGNhc2UgVU5XX0FSTTY0X3YyMToKLSAgICAgICAgICAgICAgICBtX3JlZ2lzdGVy
cy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTIxLCBwcm9sb2cuc2F2
ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAg
ICAgICAgICAgICAgYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnEyMSwg
cHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNl
dCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVTldfQVJNNjRf
djIyOgotICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0
KEFSTTY0UmVnaXN0ZXJzOjpxMjIsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBw
cm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICByZWdpc3Rlck9mZnNl
dHMtPmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxMjIsIHByb2xvZy5z
YXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVU5XX0FSTTY0X3YyMzoKLSAg
ICAgICAgICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJl
Z2lzdGVyczo6cTIzLCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNm
YVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBl
bmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTIzLCBwcm9sb2cuc2F2ZWRSZWdp
c3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVOV19BUk02NF92MjQ6Ci0gICAgICAgICAg
ICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6
OnEyNCwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rl
ck9mZnNldCkpOworICAgICAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lz
dGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnEyNCwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ld
Lm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgY2FzZSBVTldfQVJNNjRfdjI1OgotICAgICAgICAgICAgICAgIG1f
cmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxMjUsIHBy
b2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQp
KTsKKyAgICAgICAgICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3RlckF0T2Zm
c2V0KEFSTTY0UmVnaXN0ZXJzOjpxMjUsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQg
KyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGNhc2UgVU5XX0FSTTY0X3YyNjoKLSAgICAgICAgICAgICAgICBtX3JlZ2lzdGVy
cy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTI2LCBwcm9sb2cuc2F2
ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAg
ICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02
NFJlZ2lzdGVyczo6cTI2LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9n
LmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICBjYXNlIFVOV19BUk02NF92Mjc6Ci0gICAgICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5k
KFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnEyNywgcHJvbG9nLnNhdmVkUmVnaXN0
ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAg
ICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3Rl
cnM6OnEyNywgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdp
c3Rlck9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBV
TldfQVJNNjRfdjI4OgotICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3Rl
ckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxMjgsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5v
ZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICByZWdp
c3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxMjgs
IHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZz
ZXQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVU5XX0FSTTY0
X3YyOToKLSAgICAgICAgICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNl
dChBUk02NFJlZ2lzdGVyczo6cTI5LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsg
cHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgcmVnaXN0ZXJPZmZz
ZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTI5LCBwcm9sb2cu
c2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVOV19BUk02NF92MzA6Ci0g
ICAgICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRS
ZWdpc3RlcnM6OnEzMCwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5j
ZmFSZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBw
ZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnEzMCwgcHJvbG9nLnNhdmVkUmVn
aXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVTldfQVJNNjRfdjMxOgotICAgICAgICAg
ICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJz
OjpxMzEsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0
ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdp
c3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxMzEsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tp
XS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsgLy8gbm9uLXN0YW5kYXJkIHJlZ2lzdGVyIGJlaW5nIHNhdmVkIGlu
IHByb2xvZwpAQCAtMTAxNywyNSArMTAxNSw4IEBAIGJvb2wgVW53aW5kSW5mbzo6cGFyc2Uodm9p
ZCogc2VjdGlvbiwgc2kKICNlbmRpZgogCiAjZW5kaWYKLSAgICBzdGQ6OnNvcnQobV9yZWdpc3Rl
cnMuYmVnaW4oKSwgbV9yZWdpc3RlcnMuZW5kKCkpOwotICAgIHJldHVybiB0cnVlOwotfQotCi12
b2lkIFVud2luZEluZm86OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKLXsKLSAgICBvdXQu
cHJpbnQobGlzdER1bXAobV9yZWdpc3RlcnMpKTsKLX0KLQotUmVnaXN0ZXJBdE9mZnNldCogVW53
aW5kSW5mbzo6ZmluZChSZWcgcmVnKSBjb25zdAotewotICAgIHJldHVybiB0cnlCaW5hcnlTZWFy
Y2g8UmVnaXN0ZXJBdE9mZnNldCwgUmVnPihtX3JlZ2lzdGVycywgbV9yZWdpc3RlcnMuc2l6ZSgp
LCByZWcsIFJlZ2lzdGVyQXRPZmZzZXQ6OmdldFJlZyk7Ci19Ci0KLXVuc2lnbmVkIFVud2luZElu
Zm86OmluZGV4T2YoUmVnIHJlZykgY29uc3QKLXsKLSAgICBpZiAoUmVnaXN0ZXJBdE9mZnNldCog
cG9pbnRlciA9IGZpbmQocmVnKSkKLSAgICAgICAgcmV0dXJuIHBvaW50ZXIgLSBtX3JlZ2lzdGVy
cy5iZWdpbigpOwotICAgIHJldHVybiBVSU5UX01BWDsKKyAgICByZWdpc3Rlck9mZnNldHMtPnNv
cnQoKTsKKyAgICByZXR1cm4gV1RGOjptb3ZlKHJlZ2lzdGVyT2Zmc2V0cyk7CiB9CiAKIH0gfSAv
LyBuYW1lc3BhY2UgSlNDOjpGVEwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
VW53aW5kSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
VW53aW5kSW5mby5oCShyZXZpc2lvbiAxODk1NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTFVud2luZEluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMzEsMjMgKzMxLDExIEBACiAj
aWYgRU5BQkxFKEZUTF9KSVQpCiAKICNpbmNsdWRlICJGVExHZW5lcmF0ZWRGdW5jdGlvbi5oIgot
I2luY2x1ZGUgIkZUTFJlZ2lzdGVyQXRPZmZzZXQuaCIKK2NsYXNzIFJlZ2lzdGVyQXRPZmZzZXRM
aXN0OwogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAKLXN0cnVjdCBVbndpbmRJ
bmZvIHsKLSAgICBVbndpbmRJbmZvKCk7Ci0gICAgflVud2luZEluZm8oKTsKLSAgICAKLSAgICBi
b29sIHBhcnNlKHZvaWQqLCBzaXplX3QsIEdlbmVyYXRlZEZ1bmN0aW9uKTsKLSAgICAKLSAgICB2
b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKLSAgICAKLSAgICBSZWdpc3RlckF0T2Zmc2V0
KiBmaW5kKFJlZykgY29uc3Q7Ci0gICAgdW5zaWduZWQgaW5kZXhPZihSZWcpIGNvbnN0OyAvLyBS
ZXR1cm5zIFVJTlRfTUFYIGlmIG5vdCBmb3VuZC4KLSAgICAKLSAgICBWZWN0b3I8UmVnaXN0ZXJB
dE9mZnNldD4gbV9yZWdpc3RlcnM7Ci19Oworc3RkOjp1bmlxdWVfcHRyPFJlZ2lzdGVyQXRPZmZz
ZXRMaXN0PiAgcGFyc2VVbndpbmRJbmZvKHZvaWQqLCBzaXplX3QsIEdlbmVyYXRlZEZ1bmN0aW9u
KTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkZUTAogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDE4OTU0
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTY1MCwxNSArNjUwLDUyIEBAIHB1YmxpYzoKICAgICAgICAgICAg
IGlmICghdW53aW5kQ2FsbEZyYW1lKHZpc2l0b3IpKSB7CiAgICAgICAgICAgICAgICAgaWYgKExl
Z2FjeVByb2ZpbGVyKiBwcm9maWxlciA9IHZtLmVuYWJsZWRQcm9maWxlcigpKQogICAgICAgICAg
ICAgICAgICAgICBwcm9maWxlci0+ZXhjZXB0aW9uVW53aW5kKG1fY2FsbEZyYW1lKTsKKworICAg
ICAgICAgICAgICAgIGNvcHlDYWxsZWVTYXZlc1RvVk1DYWxsZWVTYXZlc0J1ZmZlcih2aXNpdG9y
KTsKKwogICAgICAgICAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkRvbmU7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6
RG9uZTsKIAorICAgICAgICBjb3B5Q2FsbGVlU2F2ZXNUb1ZNQ2FsbGVlU2F2ZXNCdWZmZXIodmlz
aXRvcik7CisKICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6Q29udGludWU7CiAgICAgfQog
CiBwcml2YXRlOgorICAgIHZvaWQgY29weUNhbGxlZVNhdmVzVG9WTUNhbGxlZVNhdmVzQnVmZmVy
KFN0YWNrVmlzaXRvciYgdmlzaXRvcikKKyAgICB7CisjaWYgRU5BQkxFKEpJVCkKKyAgICAgICAg
aWYgKCF2aXNpdG9yLT5pc0pTRnJhbWUoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworI2lmIEVO
QUJMRShERkdfSklUKQorICAgICAgICBpZiAodmlzaXRvci0+aW5saW5lQ2FsbEZyYW1lKCkpCisg
ICAgICAgICAgICByZXR1cm47CisjZW5kaWYKKyAgICAgICAgUmVnaXN0ZXJBdE9mZnNldExpc3Qq
IGN1cnJlbnRDYWxsZWVTYXZlcyA9IG1fY29kZUJsb2NrID8gbV9jb2RlQmxvY2stPmNhbGxlZVNh
dmVSZWdpc3RlcnMoKSA6IG51bGxwdHI7CisKKyAgICAgICAgaWYgKCFjdXJyZW50Q2FsbGVlU2F2
ZXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgVk0mIHZtID0gbV9jYWxsRnJhbWUt
PnZtKCk7CisgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBhbGxDYWxsZWVTYXZlcyA9IHZt
LmdldEFsbENhbGxlZVNhdmVSZWdpc3Rlck9mZnNldHMoKTsKKyAgICAgICAgUmVnaXN0ZXJTZXQg
ZG9udENvcHlSZWdpc3RlcnMgPSBSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKTsKKyAgICAg
ICAgaW50cHRyX3QqIGZyYW1lID0gcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdCo+KG1fY2FsbEZy
YW1lLT5yZWdpc3RlcnMoKSk7CisKKyAgICAgICAgdW5zaWduZWQgcmVnaXN0ZXJDb3VudCA9IGN1
cnJlbnRDYWxsZWVTYXZlcy0+c2l6ZSgpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgcmVnaXN0ZXJDb3VudDsgaSsrKSB7CisgICAgICAgICAgICBSZWdpc3RlckF0T2Zmc2V0IGN1
cnJlbnRFbnRyeSA9IGN1cnJlbnRDYWxsZWVTYXZlcy0+YXQoaSk7CisgICAgICAgICAgICBpZiAo
ZG9udENvcHlSZWdpc3RlcnMuZ2V0KGN1cnJlbnRFbnRyeS5yZWcoKSkpCisgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICBSZWdpc3RlckF0T2Zmc2V0KiB2bUNhbGxlZVNhdmVz
RW50cnkgPSBhbGxDYWxsZWVTYXZlcy0+ZmluZChjdXJyZW50RW50cnkucmVnKCkpOworICAgICAg
ICAgICAgCisgICAgICAgICAgICB2bS5jYWxsZWVTYXZlUmVnaXN0ZXJzQnVmZmVyW3ZtQ2FsbGVl
U2F2ZXNFbnRyeS0+b2Zmc2V0QXNJbmRleCgpXSA9ICooZnJhbWUgKyBjdXJyZW50RW50cnkub2Zm
c2V0QXNJbmRleCgpKTsKKyAgICAgICAgfQorI2VuZGlmCisgICAgfQorCiAgICAgQ2FsbEZyYW1l
KiYgbV9jYWxsRnJhbWU7CiAgICAgYm9vbCBtX2lzVGVybWluYXRpb247CiAgICAgQ29kZUJsb2Nr
KiYgbV9jb2RlQmxvY2s7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0FyaXR5Q2hl
Y2tGYWlsUmV0dXJuVGh1bmtzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0FyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzLmNwcAkocmV2aXNpb24gMTg5NTQzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bcml0eUNoZWNrRmFpbFJldHVyblRodW5rcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMTM1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IkFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzLmgiCi0KLSNpZiBFTkFCTEUoSklUKQotCi0jaW5j
bHVkZSAiQXNzZW1ibHlIZWxwZXJzLmgiCi0jaW5jbHVkZSAiTGlua0J1ZmZlci5oIgotI2luY2x1
ZGUgIkpTQ0lubGluZXMuaCIKLSNpbmNsdWRlICJTdGFja0FsaWdubWVudC5oIgotCi1uYW1lc3Bh
Y2UgSlNDIHsKLQotQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3M6OkFyaXR5Q2hlY2tGYWlsUmV0
dXJuVGh1bmtzKCkKLSAgICA6IG1fbmV4dFNpemUoMCkKLXsKLX0KLQotQXJpdHlDaGVja0ZhaWxS
ZXR1cm5UaHVua3M6On5Bcml0eUNoZWNrRmFpbFJldHVyblRodW5rcygpIHsgfQotCi1Db2RlTG9j
YXRpb25MYWJlbCogQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3M6OnJldHVyblBDc0ZvcigKLSAg
ICBWTSYgdm0sIHVuc2lnbmVkIG51bUV4cGVjdGVkQXJndW1lbnRzSW5jbHVkaW5nVGhpcykKLXsK
LSAgICBBU1NFUlQobnVtRXhwZWN0ZWRBcmd1bWVudHNJbmNsdWRpbmdUaGlzID49IDEpOwotICAg
IAotICAgIG51bUV4cGVjdGVkQXJndW1lbnRzSW5jbHVkaW5nVGhpcyA9IFdURjo6cm91bmRVcFRv
TXVsdGlwbGVPZigKLSAgICAgICAgc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwgbnVtRXhwZWN0
ZWRBcmd1bWVudHNJbmNsdWRpbmdUaGlzKTsKLSAgICAKLSAgICB7Ci0gICAgICAgIENvbmN1cnJl
bnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAgICAgIGlmIChudW1FeHBlY3RlZEFyZ3Vt
ZW50c0luY2x1ZGluZ1RoaXMgPCBtX25leHRTaXplKQotICAgICAgICAgICAgcmV0dXJuIG1fcmV0
dXJuUENBcnJheXMubGFzdCgpLmdldCgpOwotICAgIH0KLSAgICAKLSAgICBBU1NFUlQoIWlzQ29t
cGlsYXRpb25UaHJlYWQoKSk7Ci0gICAgCi0gICAgbnVtRXhwZWN0ZWRBcmd1bWVudHNJbmNsdWRp
bmdUaGlzID0gc3RkOjptYXgobnVtRXhwZWN0ZWRBcmd1bWVudHNJbmNsdWRpbmdUaGlzLCBtX25l
eHRTaXplICogMik7Ci0gICAgCi0gICAgQXNzZW1ibHlIZWxwZXJzIGppdCgmdm0sIDApOwotICAg
IAotICAgIFZlY3RvcjxBc3NlbWJseUhlbHBlcnM6OkxhYmVsPiBsYWJlbHM7Ci0gICAgCi0gICAg
Zm9yICh1bnNpZ25lZCBzaXplID0gbV9uZXh0U2l6ZTsgc2l6ZSA8PSBudW1FeHBlY3RlZEFyZ3Vt
ZW50c0luY2x1ZGluZ1RoaXM7IHNpemUgKz0gc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSkgewot
ICAgICAgICBsYWJlbHMuYXBwZW5kKGppdC5sYWJlbCgpKTsKLSAgICAgICAgCi0gICAgICAgIGpp
dC5sb2FkMzIoCi0gICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoCi0gICAgICAg
ICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3RlciwKLSAgICAgICAg
ICAgICAgICAoSlNTdGFjazo6QXJndW1lbnRDb3VudCAtIEpTU3RhY2s6OkNhbGxlckZyYW1lQW5k
UENTaXplKSAqIHNpemVvZihSZWdpc3RlcikgKwotICAgICAgICAgICAgICAgIFBheWxvYWRPZmZz
ZXQpLAotICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDQpOwotICAgICAgICBqaXQuYWRkMzIoCi0g
ICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMigKLSAgICAgICAgICAgICAg
ICBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplIC0gSlNTdGFjazo6Q2FsbGVyRnJhbWVBbmRQ
Q1NpemUgKyBzaXplIC0gMSksCi0gICAgICAgICAgICBHUFJJbmZvOjpyZWdUNCwgR1BSSW5mbzo6
cmVnVDIpOwotICAgICAgICBqaXQubHNoaWZ0MzIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1t
MzIoMyksIEdQUkluZm86OnJlZ1QyKTsKLSAgICAgICAgaml0LmFkZFB0cihBc3NlbWJseUhlbHBl
cnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBHUFJJbmZvOjpyZWdUMik7Ci0gICAgICAgIGppdC5s
b2FkUHRyKEdQUkluZm86OnJlZ1QyLCBHUFJJbmZvOjpyZWdUMik7Ci0gICAgICAgIAotICAgICAg
ICBqaXQuYWRkUHRyKAotICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
c2l6ZSAqIHNpemVvZihSZWdpc3RlcikpLAotICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpz
dGFja1BvaW50ZXJSZWdpc3Rlcik7Ci0gICAgICAgIAotICAgICAgICAvLyBUaHVua3MgbGlrZSBv
dXJzIHdhbnQgdG8gdXNlIHRoZSByZXR1cm4gUEMgdG8gZmlndXJlIG91dCB3aGVyZSB0aGluZ3MK
LSAgICAgICAgLy8gd2VyZSBzYXZlZC4gU28sIHdlIHBheSBpdCBmb3J3YXJkLgotICAgICAgICBq
aXQuc3RvcmUzMigKLSAgICAgICAgICAgIEdQUkluZm86OnJlZ1Q0LAotICAgICAgICAgICAgQXNz
ZW1ibHlIZWxwZXJzOjpBZGRyZXNzKAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6
c3RhY2tQb2ludGVyUmVnaXN0ZXIsCi0gICAgICAgICAgICAgICAgKEpTU3RhY2s6OkFyZ3VtZW50
Q291bnQgLSBKU1N0YWNrOjpDYWxsZXJGcmFtZUFuZFBDU2l6ZSkgKiBzaXplb2YoUmVnaXN0ZXIp
ICsKLSAgICAgICAgICAgICAgICBQYXlsb2FkT2Zmc2V0KSk7Ci0gICAgICAgIAotICAgICAgICBq
aXQuanVtcChHUFJJbmZvOjpyZWdUMik7Ci0gICAgfQotICAgIAotICAgIC8vIFNhZGx5LCB3ZSBj
YW5ub3QgZmFpbCBoZXJlIGJlY2F1c2UgdGhlIExMSW50IG1heSBuZWVkIHVzLgotICAgIExpbmtC
dWZmZXIgbGlua0J1ZmZlcih2bSwgaml0LCBHTE9CQUxfVEhVTktfSUQsIEpJVENvbXBpbGF0aW9u
TXVzdFN1Y2NlZWQpOwotICAgIAotICAgIHVuc2lnbmVkIHJldHVyblBDc1NpemUgPSBudW1FeHBl
Y3RlZEFyZ3VtZW50c0luY2x1ZGluZ1RoaXMgLyBzdGFja0FsaWdubWVudFJlZ2lzdGVycygpICsg
MTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29kZUxvY2F0aW9uTGFiZWxbXT4gcmV0dXJuUENzID0K
LSAgICAgICAgc3RkOjptYWtlX3VuaXF1ZTxDb2RlTG9jYXRpb25MYWJlbFtdPihyZXR1cm5QQ3NT
aXplKTsKLSAgICBmb3IgKHVuc2lnbmVkIHNpemUgPSAwOyBzaXplIDw9IG51bUV4cGVjdGVkQXJn
dW1lbnRzSW5jbHVkaW5nVGhpczsgc2l6ZSArPSBzdGFja0FsaWdubWVudFJlZ2lzdGVycygpKSB7
Ci0gICAgICAgIHVuc2lnbmVkIGluZGV4ID0gc2l6ZSAvIHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJz
KCk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGluZGV4IDwgcmV0dXJuUENzU2l6ZSk7Ci0gICAg
ICAgIGlmIChzaXplIDwgbV9uZXh0U2l6ZSkKLSAgICAgICAgICAgIHJldHVyblBDc1tpbmRleF0g
PSBtX3JldHVyblBDQXJyYXlzLmxhc3QoKVtpbmRleF07Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIHJldHVyblBDc1tpbmRleF0gPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2YobGFiZWxzWyhzaXpl
IC0gbV9uZXh0U2l6ZSkgLyBzdGFja0FsaWdubWVudFJlZ2lzdGVycygpXSk7Ci0gICAgfQotCi0g
ICAgQ29kZUxvY2F0aW9uTGFiZWwqIHJlc3VsdCA9IHJldHVyblBDcy5nZXQoKTsKLQotICAgIHsK
LSAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9sb2NrKTsKLSAgICAgICAgbV9y
ZXR1cm5QQ0FycmF5cy5hcHBlbmQoV1RGOjptb3ZlKHJldHVyblBDcykpOwotICAgICAgICBtX3Jl
ZnMuYXBwZW5kKEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgKCJBcml0eSBjaGVjayBmYWlsIHJl
dHVybiB0aHVua3MgZm9yIHVwIHRvIG51bUFyZ3MgPSAldSIsIG51bUV4cGVjdGVkQXJndW1lbnRz
SW5jbHVkaW5nVGhpcykpKTsKLSAgICAgICAgbV9uZXh0U2l6ZSA9IG51bUV4cGVjdGVkQXJndW1l
bnRzSW5jbHVkaW5nVGhpcyArIHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCk7Ci0gICAgfQotICAg
IAotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLUNvZGVMb2NhdGlvbkxhYmVsIEFyaXR5Q2hlY2tG
YWlsUmV0dXJuVGh1bmtzOjpyZXR1cm5QQ0ZvcihWTSYgdm0sIHVuc2lnbmVkIHNsb3RzVG9BZGQp
Ci17Ci0gICAgcmV0dXJuIHJldHVyblBDc0Zvcih2bSwgc2xvdHNUb0FkZClbc2xvdHNUb0FkZCAv
IHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCldOwotfQotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQot
I2VuZGlmIC8vIEVOQUJMRShKSVQpCi0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
QXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0FyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzLmgJKHJldmlzaW9uIDE4OTU0
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVu
a3MuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgQXJpdHlDaGVja0ZhaWxSZXR1cm5U
aHVua3NfaAotI2RlZmluZSBBcml0eUNoZWNrRmFpbFJldHVyblRodW5rc19oCi0KLSNpZiBFTkFC
TEUoSklUKQotCi0jaW5jbHVkZSAiQ29kZUxvY2F0aW9uLmgiCi0jaW5jbHVkZSAiQ29uY3VycmVu
dEpJVExvY2suaCIKLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotCi1uYW1lc3BhY2UgSlNDIHsK
LQotY2xhc3MgQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3MgewotcHVibGljOgotICAgIEFyaXR5
Q2hlY2tGYWlsUmV0dXJuVGh1bmtzKCk7Ci0gICAgfkFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtz
KCk7Ci0gICAgCi0gICAgLy8gUmV0dXJucyBhIHBvaW50ZXIgdG8gYW4gYXJyYXkgb2YgcmV0dXJu
IGxhYmVscyBpbmRleGVkIGJ5IG1pc3NpbmdBcmdzLgotICAgIENvZGVMb2NhdGlvbkxhYmVsKiBy
ZXR1cm5QQ3NGb3IoVk0mLCB1bnNpZ25lZCBudW1FeHBlY3RlZEFyZ3VtZW50c0luY2x1ZGluZ1Ro
aXMpOwotICAgIAotICAgIENvZGVMb2NhdGlvbkxhYmVsIHJldHVyblBDRm9yKFZNJiwgdW5zaWdu
ZWQgc2xvdHNUb0FkZCk7Ci0gICAgCi1wcml2YXRlOgotICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9w
dHI8Q29kZUxvY2F0aW9uTGFiZWxbXT4+IG1fcmV0dXJuUENBcnJheXM7Ci0gICAgdW5zaWduZWQg
bV9uZXh0U2l6ZTsKLSAgICBWZWN0b3I8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPiBtX3JlZnM7Ci0g
ICAgQ29uY3VycmVudEpJVExvY2sgbV9sb2NrOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0K
LSNlbmRpZiAvLyBFTkFCTEUoSklUKQotCi0jZW5kaWYgLy8gQXJpdHlDaGVja0ZhaWxSZXR1cm5U
aHVua3NfaAotCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVy
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxw
ZXJzLmgJKHJldmlzaW9uIDE4OTU0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNz
ZW1ibHlIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDggQEAKICNpbmNsdWRl
ICJJbmxpbmVDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJKSVRDb2RlLmgiCiAjaW5jbHVkZSAiTWFj
cm9Bc3NlbWJsZXIuaCIKKyNpbmNsdWRlICJSZWdpc3RlckF0T2Zmc2V0TGlzdC5oIgorI2luY2x1
ZGUgIlJlZ2lzdGVyU2V0LmgiCiAjaW5jbHVkZSAiVHlwZW9mVHlwZS5oIgogI2luY2x1ZGUgIlZN
LmgiCiAKQEAgLTE3NSw2ICsxNzcsMTQ3IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIH0KIAorICAg
IHZvaWQgZW1pdFNhdmVDYWxsZWVTYXZlc0ZvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmlydHVh
bFJlZ2lzdGVyIG9mZnNldFZpcnR1YWxSZWdpc3RlciA9IHN0YXRpY19jYXN0PFZpcnR1YWxSZWdp
c3Rlcj4oMCkpCisgICAgeworICAgICAgICBBU1NFUlQoY29kZUJsb2NrKTsKKworICAgICAgICBS
ZWdpc3RlckF0T2Zmc2V0TGlzdCogY2FsbGVlU2F2ZXMgPSBjb2RlQmxvY2stPmNhbGxlZVNhdmVS
ZWdpc3RlcnMoKTsKKyAgICAgICAgUmVnaXN0ZXJTZXQgZG9udFNhdmVSZWdpc3RlcnMgPSBSZWdp
c3RlclNldChSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKSwgUmVnaXN0ZXJTZXQ6OmFsbEZQ
UnMoKSk7CisgICAgICAgIHVuc2lnbmVkIHJlZ2lzdGVyQ291bnQgPSBjYWxsZWVTYXZlcy0+c2l6
ZSgpOworCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZWdpc3RlckNvdW50OyBp
KyspIHsKKyAgICAgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50cnkgPSBjYWxsZWVTYXZlcy0+
YXQoaSk7CisgICAgICAgICAgICBpZiAoZG9udFNhdmVSZWdpc3RlcnMuZ2V0KGVudHJ5LnJlZygp
KSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIHN0b3JlUHRyKGVudHJ5
LnJlZygpLmdwcigpLCBBZGRyZXNzKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBvZmZzZXRWaXJ0dWFs
UmVnaXN0ZXIub2Zmc2V0SW5CeXRlcygpICsgZW50cnkub2Zmc2V0KCkpKTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIHZvaWQgZW1pdFJlc3RvcmVDYWxsZWVTYXZlc0ZvcihDb2RlQmxvY2sqIGNv
ZGVCbG9jaykKKyAgICB7CisgICAgICAgIEFTU0VSVChjb2RlQmxvY2spOworCisgICAgICAgIFJl
Z2lzdGVyQXRPZmZzZXRMaXN0KiBjYWxsZWVTYXZlcyA9IGNvZGVCbG9jay0+Y2FsbGVlU2F2ZVJl
Z2lzdGVycygpOworICAgICAgICBSZWdpc3RlclNldCBkb250UmVzdG9yZVJlZ2lzdGVycyA9IFJl
Z2lzdGVyU2V0KFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpLCBSZWdpc3RlclNldDo6YWxs
RlBScygpKTsKKyAgICAgICAgdW5zaWduZWQgcmVnaXN0ZXJDb3VudCA9IGNhbGxlZVNhdmVzLT5z
aXplKCk7CisgICAgICAgIAorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVnaXN0
ZXJDb3VudDsgaSsrKSB7CisgICAgICAgICAgICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5ID0gY2Fs
bGVlU2F2ZXMtPmF0KGkpOworICAgICAgICAgICAgaWYgKGRvbnRSZXN0b3JlUmVnaXN0ZXJzLmdl
dChlbnRyeS5yZWcoKSkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBs
b2FkUHRyKEFkZHJlc3MoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGVudHJ5Lm9mZnNldCgpKSwgZW50
cnkucmVnKCkuZ3ByKCkpOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBlbWl0U2F2ZUNh
bGxlZVNhdmVzKCkKKyAgICB7CisgICAgICAgIGVtaXRTYXZlQ2FsbGVlU2F2ZXNGb3IoY29kZUJs
b2NrKCkpOworICAgIH0KKworICAgIHZvaWQgZW1pdFJlc3RvcmVDYWxsZWVTYXZlcygpCisgICAg
eworICAgICAgICBlbWl0UmVzdG9yZUNhbGxlZVNhdmVzRm9yKGNvZGVCbG9jaygpKTsKKyAgICB9
CisKKyAgICB2b2lkIGNvcHlDYWxsZWVTYXZlc1RvVk1DYWxsZWVTYXZlc0J1ZmZlcihjb25zdCBU
ZW1wUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMgPSB7IFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFp
bGFibGVSZWdpc3RlcnMoKSB9KQorICAgIHsKKyAgICAgICAgR1BSUmVnIHRlbXAxID0gdXNlZFJl
Z2lzdGVycy5nZXRGcmVlR1BSKDApOworCisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihtX3Zt
LT5jYWxsZWVTYXZlUmVnaXN0ZXJzQnVmZmVyKSwgdGVtcDEpOworCisgICAgICAgIFJlZ2lzdGVy
QXRPZmZzZXRMaXN0KiBhbGxDYWxsZWVTYXZlcyA9IG1fdm0tPmdldEFsbENhbGxlZVNhdmVSZWdp
c3Rlck9mZnNldHMoKTsKKyAgICAgICAgUmVnaXN0ZXJTZXQgZG9udENvcHlSZWdpc3RlcnMgPSBS
ZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKTsKKyAgICAgICAgdW5zaWduZWQgcmVnaXN0ZXJD
b3VudCA9IGFsbENhbGxlZVNhdmVzLT5zaXplKCk7CisgICAgICAgIAorICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgcmVnaXN0ZXJDb3VudDsgaSsrKSB7CisgICAgICAgICAgICBSZWdp
c3RlckF0T2Zmc2V0IGVudHJ5ID0gYWxsQ2FsbGVlU2F2ZXMtPmF0KGkpOworICAgICAgICAgICAg
aWYgKGRvbnRDb3B5UmVnaXN0ZXJzLmdldChlbnRyeS5yZWcoKSkpCisgICAgICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgICAgICBpZiAoZW50cnkucmVnKCkuaXNHUFIoKSkKKyAgICAgICAg
ICAgICAgICBzdG9yZVB0cihlbnRyeS5yZWcoKS5ncHIoKSwgQWRkcmVzcyh0ZW1wMSwgZW50cnku
b2Zmc2V0KCkpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzdG9yZURvdWJs
ZShlbnRyeS5yZWcoKS5mcHIoKSwgQWRkcmVzcyh0ZW1wMSwgZW50cnkub2Zmc2V0KCkpKTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIHZvaWQgcmVzdG9yZUNhbGxlZVNhdmVzRnJvbVZNQ2FsbGVl
U2F2ZXNCdWZmZXIoY29uc3QgVGVtcFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzID0geyBSZWdp
c3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCkgfSkKKyAgICB7CisgICAgICAgIEdQ
UlJlZyB0ZW1wMSA9IHVzZWRSZWdpc3RlcnMuZ2V0RnJlZUdQUigwKTsKKyAgICAgICAgCisgICAg
ICAgIG1vdmUoVHJ1c3RlZEltbVB0cihtX3ZtLT5jYWxsZWVTYXZlUmVnaXN0ZXJzQnVmZmVyKSwg
dGVtcDEpOworCisgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBhbGxDYWxsZWVTYXZlcyA9
IG1fdm0tPmdldEFsbENhbGxlZVNhdmVSZWdpc3Rlck9mZnNldHMoKTsKKyAgICAgICAgUmVnaXN0
ZXJTZXQgZG9udFJlc3RvcmVSZWdpc3RlcnMgPSBSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMo
KTsKKyAgICAgICAgdW5zaWduZWQgcmVnaXN0ZXJDb3VudCA9IGFsbENhbGxlZVNhdmVzLT5zaXpl
KCk7CisgICAgICAgIAorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVnaXN0ZXJD
b3VudDsgaSsrKSB7CisgICAgICAgICAgICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5ID0gYWxsQ2Fs
bGVlU2F2ZXMtPmF0KGkpOworICAgICAgICAgICAgaWYgKGRvbnRSZXN0b3JlUmVnaXN0ZXJzLmdl
dChlbnRyeS5yZWcoKSkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBp
ZiAoZW50cnkucmVnKCkuaXNHUFIoKSkKKyAgICAgICAgICAgICAgICBsb2FkUHRyKEFkZHJlc3Mo
dGVtcDEsIGVudHJ5Lm9mZnNldCgpKSwgZW50cnkucmVnKCkuZ3ByKCkpOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIGxvYWREb3VibGUoQWRkcmVzcyh0ZW1wMSwgZW50cnkub2Zm
c2V0KCkpLCBlbnRyeS5yZWcoKS5mcHIoKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAg
dm9pZCBjb3B5Q2FsbGVlU2F2ZXNGcm9tRnJhbWVPclJlZ2lzdGVyVG9WTUNhbGxlZVNhdmVzQnVm
ZmVyKGNvbnN0IFRlbXBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycyA9IHsgUmVnaXN0ZXJTZXQ6
OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpIH0pCisgICAgeworICAgICAgICBHUFJSZWcgdGVt
cDEgPSB1c2VkUmVnaXN0ZXJzLmdldEZyZWVHUFIoMCk7CisgICAgICAgIEdQUlJlZyB0ZW1wMiA9
IHVzZWRSZWdpc3RlcnMuZ2V0RnJlZUdQUigxKTsKKyAgICAgICAgRlBSUmVnIGZwVGVtcCA9IHVz
ZWRSZWdpc3RlcnMuZ2V0RnJlZUZQUigpOworICAgICAgICBBU1NFUlQodGVtcDIgIT0gSW52YWxp
ZEdQUlJlZyk7CisKKyAgICAgICAgQVNTRVJUKGNvZGVCbG9jaygpKTsKKworICAgICAgICAvLyBD
b3B5IHNhdmVkIGNhbGxlZVNhdmVzIG9uIHN0YWNrIG9yIHVuc2F2ZWQgY2FsbGVlU2F2ZXMgaW4g
cmVnaXN0ZXIgdG8gdm0gY2FsbGVlU2F2ZSBidWZmZXIKKyAgICAgICAgbW92ZShUcnVzdGVkSW1t
UHRyKG1fdm0tPmNhbGxlZVNhdmVSZWdpc3RlcnNCdWZmZXIpLCB0ZW1wMSk7CisKKyAgICAgICAg
UmVnaXN0ZXJBdE9mZnNldExpc3QqIGFsbENhbGxlZVNhdmVzID0gbV92bS0+Z2V0QWxsQ2FsbGVl
U2F2ZVJlZ2lzdGVyT2Zmc2V0cygpOworICAgICAgICBSZWdpc3RlckF0T2Zmc2V0TGlzdCogY3Vy
cmVudENhbGxlZVNhdmVzID0gY29kZUJsb2NrKCktPmNhbGxlZVNhdmVSZWdpc3RlcnMoKTsKKyAg
ICAgICAgUmVnaXN0ZXJTZXQgZG9udENvcHlSZWdpc3RlcnMgPSBSZWdpc3RlclNldDo6c3RhY2tS
ZWdpc3RlcnMoKTsKKyAgICAgICAgdW5zaWduZWQgcmVnaXN0ZXJDb3VudCA9IGFsbENhbGxlZVNh
dmVzLT5zaXplKCk7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlZ2lzdGVy
Q291bnQ7IGkrKykgeworICAgICAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCB2bUVudHJ5ID0gYWxs
Q2FsbGVlU2F2ZXMtPmF0KGkpOworICAgICAgICAgICAgaWYgKGRvbnRDb3B5UmVnaXN0ZXJzLmdl
dCh2bUVudHJ5LnJlZygpKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAg
IFJlZ2lzdGVyQXRPZmZzZXQqIGN1cnJlbnRGcmFtZUVudHJ5ID0gY3VycmVudENhbGxlZVNhdmVz
LT5maW5kKHZtRW50cnkucmVnKCkpOworCisgICAgICAgICAgICBpZiAodm1FbnRyeS5yZWcoKS5p
c0dQUigpKSB7CisgICAgICAgICAgICAgICAgR1BSUmVnIHJlZ1RvU3RvcmU7CisgICAgICAgICAg
ICAgICAgaWYgKGN1cnJlbnRGcmFtZUVudHJ5KSB7CisgICAgICAgICAgICAgICAgICAgIC8vIExv
YWQgY2FsbGVlU2F2ZSBmcm9tIHN0YWNrIGludG8gdGVtcCByZWdpc3RlcgorICAgICAgICAgICAg
ICAgICAgICByZWdUb1N0b3JlID0gdGVtcDI7CisgICAgICAgICAgICAgICAgICAgIGxvYWRQdHIo
QWRkcmVzcyhmcmFtZVBvaW50ZXJSZWdpc3RlciwgY3VycmVudEZyYW1lRW50cnktPm9mZnNldCgp
KSwgcmVnVG9TdG9yZSk7CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAg
ICAgIC8vIEp1c3Qgc3RvcmUgY2FsbGVlIHNhdmUgZGlyZWN0bHkKKyAgICAgICAgICAgICAgICAg
ICAgcmVnVG9TdG9yZSA9IHZtRW50cnkucmVnKCkuZ3ByKCk7CisKKyAgICAgICAgICAgICAgICBz
dG9yZVB0cihyZWdUb1N0b3JlLCBBZGRyZXNzKHRlbXAxLCB2bUVudHJ5Lm9mZnNldCgpKSk7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIEZQUlJlZyBmcFJlZ1RvU3RvcmU7
CisgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRGcmFtZUVudHJ5KSB7CisgICAgICAgICAgICAg
ICAgICAgIC8vIExvYWQgY2FsbGVlU2F2ZSBmcm9tIHN0YWNrIGludG8gdGVtcCByZWdpc3Rlcgor
ICAgICAgICAgICAgICAgICAgICBmcFJlZ1RvU3RvcmUgPSBmcFRlbXA7CisgICAgICAgICAgICAg
ICAgICAgIGxvYWREb3VibGUoQWRkcmVzcyhmcmFtZVBvaW50ZXJSZWdpc3RlciwgY3VycmVudEZy
YW1lRW50cnktPm9mZnNldCgpKSwgZnBSZWdUb1N0b3JlKTsKKyAgICAgICAgICAgICAgICB9IGVs
c2UKKyAgICAgICAgICAgICAgICAgICAgLy8gSnVzdCBzdG9yZSBjYWxsZWUgc2F2ZSBkaXJlY3Rs
eQorICAgICAgICAgICAgICAgICAgICBmcFJlZ1RvU3RvcmUgPSB2bUVudHJ5LnJlZygpLmZwcigp
OworCisgICAgICAgICAgICAgICAgc3RvcmVEb3VibGUoZnBSZWdUb1N0b3JlLCBBZGRyZXNzKHRl
bXAxLCB2bUVudHJ5Lm9mZnNldCgpKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
CisKKyAgICB2b2lkIGVtaXRNYXRlcmlhbGl6ZVRhZ0NoZWNrUmVnaXN0ZXJzKCkKKyAgICB7Cisj
aWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgbW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bTY0KFRhZ1R5cGVOdW1iZXIpLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOworICAg
ICAgICBvclB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKFRhZ0JpdFR5cGVPdGhlciks
IEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVy
KTsKKyNlbmRpZgorICAgIH0KKwogI2lmIENQVShYODZfNjQpIHx8IENQVShYODYpCiAgICAgc3Rh
dGljIHNpemVfdCBwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkKICAgICB7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0ZQUkluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0ZQUkluZm8uaAkocmV2aXNpb24gMTg5NTQzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9GUFJJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwOCw2ICsyMDgs
MTQgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUMjAgPSBBUk02NFJl
Z2lzdGVyczo6cTI4OwogICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUMjEgPSBBUk02NFJl
Z2lzdGVyczo6cTI5OwogICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUMjIgPSBBUk02NFJl
Z2lzdGVyczo6cTMwOworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdDUzAgPSBBUk02NFJl
Z2lzdGVyczo6cTg7CisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBmcFJlZ0NTMSA9IEFSTTY0UmVn
aXN0ZXJzOjpxOTsKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnQ1MyID0gQVJNNjRSZWdp
c3RlcnM6OnExMDsKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnQ1MzID0gQVJNNjRSZWdp
c3RlcnM6OnExMTsKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnQ1M0ID0gQVJNNjRSZWdp
c3RlcnM6OnExMjsKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnQ1M1ID0gQVJNNjRSZWdp
c3RlcnM6OnExMzsKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnQ1M2ID0gQVJNNjRSZWdp
c3RlcnM6OnExNDsKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnQ1M3ID0gQVJNNjRSZWdp
c3RlcnM6OnExNTsKIAogICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgYXJndW1lbnRGUFIwID0gQVJN
NjRSZWdpc3RlcnM6OnEwOyAvLyBmcFJlZ1QwCiAgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBhcmd1
bWVudEZQUjEgPSBBUk02NFJlZ2lzdGVyczo6cTE7IC8vIGZwUmVnVDEKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvR1BSSW5mby5oCShyZXZpc2lvbiAxODk1NDMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0dQUkluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMzM2LDEwICszMzYsMTAg
QEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIyID0gWDg2UmVn
aXN0ZXJzOjplYXg7IC8vIHJlZ1QwCiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQ
UjMgPSBYODZSZWdpc3RlcnM6OmVieDsgLy8gcmVnVDMKICAgICBzdGF0aWMgY29uc3QgR1BSUmVn
IG5vbkFyZ0dQUjAgPSBYODZSZWdpc3RlcnM6OmVzaTsgLy8gcmVnVDQKLSAgICBzdGF0aWMgY29u
c3QgR1BSUmVnIG5vbkFyZ0dQUjEgPSBYODZSZWdpc3RlcnM6OmVkaTsgLy8gcmVnVDUKICAgICBz
dGF0aWMgY29uc3QgR1BSUmVnIHJldHVyblZhbHVlR1BSID0gWDg2UmVnaXN0ZXJzOjplYXg7IC8v
IHJlZ1QwCiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZXR1cm5WYWx1ZUdQUjIgPSBYODZSZWdp
c3RlcnM6OmVkeDsgLy8gcmVnVDEKICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vblByZXNlcnZl
ZE5vblJldHVybkdQUiA9IFg4NlJlZ2lzdGVyczo6ZWN4OworICAgIHN0YXRpYyBjb25zdCBpbnQg
bnVtYmVyQ2FsbGVlU2F2ZVJlZ2lzdGVycyA9IDA7CiAKICAgICBzdGF0aWMgR1BSUmVnIHRvUmVn
aXN0ZXIodW5zaWduZWQgaW5kZXgpCiAgICAgewpAQCAtNDQ1LDEyICs0NDUsMTYgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIzID0gWDg2UmVnaXN0ZXJzOjpy
OTsgLy8gcmVnVDMKICNlbmRpZgogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJnR1BSMCA9
IFg4NlJlZ2lzdGVyczo6cjEwOyAvLyByZWdUNSAocmVnVDQgb24gV2luZG93cykKLSAgICBzdGF0
aWMgY29uc3QgR1BSUmVnIG5vbkFyZ0dQUjEgPSBYODZSZWdpc3RlcnM6OmVieDsgLy8gQ2FsbGVl
IHNhdmUKICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJldHVyblZhbHVlR1BSID0gWDg2UmVnaXN0
ZXJzOjplYXg7IC8vIHJlZ1QwCiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZXR1cm5WYWx1ZUdQ
UjIgPSBYODZSZWdpc3RlcnM6OmVkeDsgLy8gcmVnVDEgb3IgcmVnVDIKICAgICBzdGF0aWMgY29u
c3QgR1BSUmVnIG5vblByZXNlcnZlZE5vblJldHVybkdQUiA9IFg4NlJlZ2lzdGVyczo6cjEwOyAv
LyByZWdUNSAocmVnVDQgb24gV2luZG93cykKICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vblBy
ZXNlcnZlZE5vbkFyZ3VtZW50R1BSID0gWDg2UmVnaXN0ZXJzOjpyMTA7IC8vIHJlZ1Q1IChyZWdU
NCBvbiBXaW5kb3dzKQogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcGF0Y2hwb2ludFNjcmF0Y2hS
ZWdpc3RlciA9IE1hY3JvQXNzZW1ibGVyOjpzY3JhdGNoUmVnaXN0ZXI7CisjaWYgIU9TKFdJTkRP
V1MpCisgICAgc3RhdGljIGNvbnN0IGludCBudW1iZXJDYWxsZWVTYXZlUmVnaXN0ZXJzID0gNTsK
KyNlbHNlCisgICAgc3RhdGljIGNvbnN0IGludCBudW1iZXJDYWxsZWVTYXZlUmVnaXN0ZXJzID0g
NzsKKyNlbmRpZgogCiAgICAgc3RhdGljIEdQUlJlZyB0b1JlZ2lzdGVyKHVuc2lnbmVkIGluZGV4
KQogICAgIHsKQEAgLTUzNiwxMCArNTQwLDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3Qg
R1BSUmVnIGFyZ3VtZW50R1BSMyA9IEFSTVJlZ2lzdGVyczo6cjM7IC8vIHJlZ1QzCiAgICAgc3Rh
dGljIGNvbnN0IEdQUlJlZyBub25BcmdHUFIwID0gQVJNUmVnaXN0ZXJzOjpyNDsgLy8gcmVnVDgK
ICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vbkFyZ0dQUjEgPSBBUk1SZWdpc3RlcnM6OnI4OyAv
LyByZWdUNAotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJnR1BSMiA9IEFSTVJlZ2lzdGVy
czo6cjk7IC8vIHJlZ1Q1CiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZXR1cm5WYWx1ZUdQUiA9
IEFSTVJlZ2lzdGVyczo6cjA7IC8vIHJlZ1QwCiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZXR1
cm5WYWx1ZUdQUjIgPSBBUk1SZWdpc3RlcnM6OnIxOyAvLyByZWdUMQogICAgIHN0YXRpYyBjb25z
dCBHUFJSZWcgbm9uUHJlc2VydmVkTm9uUmV0dXJuR1BSID0gQVJNUmVnaXN0ZXJzOjpyNTsKKyAg
ICBzdGF0aWMgY29uc3QgaW50IG51bWJlckNhbGxlZVNhdmVSZWdpc3RlcnMgPSAwOwogCiAgICAg
c3RhdGljIEdQUlJlZyB0b1JlZ2lzdGVyKHVuc2lnbmVkIGluZGV4KQogICAgIHsKQEAgLTYxNyw5
ICs2MjEsMTYgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDEzID0gQVJN
NjRSZWdpc3RlcnM6OngxMzsKICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QxNCA9IEFSTTY0
UmVnaXN0ZXJzOjp4MTQ7CiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUMTUgPSBBUk02NFJl
Z2lzdGVyczo6eDE1OwotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnQ1MwID0gQVJNNjRSZWdp
c3RlcnM6OngyNjsgLy8gVXNlZCBieSBMTEludCBvbmx5Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJl
ZyByZWdDUzEgPSBBUk02NFJlZ2lzdGVyczo6eDI3OyAvLyB0YWdUeXBlTnVtYmVyCi0gICAgc3Rh
dGljIGNvbnN0IEdQUlJlZyByZWdDUzIgPSBBUk02NFJlZ2lzdGVyczo6eDI4OyAvLyB0YWdNYXNr
CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdDUzAgPSBBUk02NFJlZ2lzdGVyczo6eDE5OyAv
LyBVc2VkIGJ5IEZUTCBvbmx5CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdDUzEgPSBBUk02
NFJlZ2lzdGVyczo6eDIwOyAvLyBVc2VkIGJ5IEZUTCBvbmx5CisgICAgc3RhdGljIGNvbnN0IEdQ
UlJlZyByZWdDUzIgPSBBUk02NFJlZ2lzdGVyczo6eDIxOyAvLyBVc2VkIGJ5IEZUTCBvbmx5Cisg
ICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdDUzMgPSBBUk02NFJlZ2lzdGVyczo6eDIyOyAvLyBV
c2VkIGJ5IEZUTCBvbmx5CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdDUzQgPSBBUk02NFJl
Z2lzdGVyczo6eDIzOyAvLyBVc2VkIGJ5IEZUTCBvbmx5CisgICAgc3RhdGljIGNvbnN0IEdQUlJl
ZyByZWdDUzUgPSBBUk02NFJlZ2lzdGVyczo6eDI0OyAvLyBVc2VkIGJ5IEZUTCBvbmx5CisgICAg
c3RhdGljIGNvbnN0IEdQUlJlZyByZWdDUzYgPSBBUk02NFJlZ2lzdGVyczo6eDI1OyAvLyBVc2Vk
IGJ5IEZUTCBvbmx5CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdDUzcgPSBBUk02NFJlZ2lz
dGVyczo6eDI2OworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnQ1M4ID0gQVJNNjRSZWdpc3Rl
cnM6OngyNzsgLy8gdGFnVHlwZU51bWJlcgorICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnQ1M5
ID0gQVJNNjRSZWdpc3RlcnM6OngyODsgLy8gdGFnTWFzawogICAgIC8vIFRoZXNlIGNvbnN0YW50
cyBwcm92aWRlIHRoZSBuYW1lcyBmb3IgdGhlIGdlbmVyYWwgcHVycG9zZSBhcmd1bWVudCAmIHJl
dHVybiB2YWx1ZSByZWdpc3RlcnMuCiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQ
UjAgPSBBUk02NFJlZ2lzdGVyczo6eDA7IC8vIHJlZ1QwCiAgICAgc3RhdGljIGNvbnN0IEdQUlJl
ZyBhcmd1bWVudEdQUjEgPSBBUk02NFJlZ2lzdGVyczo6eDE7IC8vIHJlZ1QxCkBAIC02MzYsOCAr
NjQ3LDkgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uUHJlc2VydmVkTm9u
UmV0dXJuR1BSID0gQVJNNjRSZWdpc3RlcnM6OngyOwogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcg
bm9uUHJlc2VydmVkTm9uQXJndW1lbnRHUFIgPSBBUk02NFJlZ2lzdGVyczo6eDg7CiAgICAgc3Rh
dGljIGNvbnN0IEdQUlJlZyBwYXRjaHBvaW50U2NyYXRjaFJlZ2lzdGVyID0gQVJNNjRSZWdpc3Rl
cnM6OmlwMDsKKyAgICBzdGF0aWMgY29uc3QgaW50IG51bWJlckNhbGxlZVNhdmVSZWdpc3RlcnMg
PSAxODsgLy8geDE5Li54MjggYW5kIHE4Li5xMTUKIAotICAgIC8vIEdQUlJlZyBtYXBwaW5nIGlz
IGRpcmVjdCwgdGhlIG1hY2hpbmUgcmVnc2l0ZXIgbnVtYmVycyBjYW4KKyAgICAvLyBHUFJSZWcg
bWFwcGluZyBpcyBkaXJlY3QsIHRoZSBtYWNoaW5lIHJlZ2lzdGVyIG51bWJlcnMgY2FuCiAgICAg
Ly8gYmUgdXNlZCBkaXJlY3RseSBhcyBpbmRpY2VzIGludG8gdGhlIEdQUiBSZWdpc3RlckJhbmsu
CiAgICAgQ09NUElMRV9BU1NFUlQoQVJNNjRSZWdpc3RlcnM6OnEwID09IDAsIHEwX2lzXzApOwog
ICAgIENPTVBJTEVfQVNTRVJUKEFSTTY0UmVnaXN0ZXJzOjpxMSA9PSAxLCBxMV9pc18xKTsKQEAg
LTcxOSwxMCArNzMxLDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3Vt
ZW50R1BSMiA9IE1JUFNSZWdpc3RlcnM6OmEyOwogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJn
dW1lbnRHUFIzID0gTUlQU1JlZ2lzdGVyczo6YTM7CiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBu
b25BcmdHUFIwID0gcmVnVDA7Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25BcmdHUFIxID0g
cmVnVDE7CiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZXR1cm5WYWx1ZUdQUiA9IHJlZ1QwOwog
ICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmV0dXJuVmFsdWVHUFIyID0gcmVnVDE7CiAgICAgc3Rh
dGljIGNvbnN0IEdQUlJlZyBub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIgPSByZWdUMjsKKyAgICBz
dGF0aWMgY29uc3QgaW50IG51bWJlckNhbGxlZVNhdmVSZWdpc3RlcnMgPSAwOwogCiAgICAgc3Rh
dGljIEdQUlJlZyB0b1JlZ2lzdGVyKHVuc2lnbmVkIGluZGV4KQogICAgIHsKQEAgLTc5MywxMCAr
ODA1LDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMiA9
IFNINFJlZ2lzdGVyczo6cjY7IC8vIHJlZ1QyCiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1
bWVudEdQUjMgPSBTSDRSZWdpc3RlcnM6OnI3OyAvLyByZWdUMwogICAgIHN0YXRpYyBjb25zdCBH
UFJSZWcgbm9uQXJnR1BSMCA9IHJlZ1Q0OwotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJn
R1BSMSA9IHJlZ1Q1OwogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmV0dXJuVmFsdWVHUFIgPSBy
ZWdUMDsKICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJldHVyblZhbHVlR1BSMiA9IHJlZ1QxOwog
ICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uUHJlc2VydmVkTm9uUmV0dXJuR1BSID0gcmVnVDI7
CisgICAgc3RhdGljIGNvbnN0IGludCBudW1iZXJDYWxsZWVTYXZlUmVnaXN0ZXJzID0gMDsKIAog
ICAgIHN0YXRpYyBHUFJSZWcgdG9SZWdpc3Rlcih1bnNpZ25lZCBpbmRleCkKICAgICB7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCShyZXZpc2lvbiAxODk1NDMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDYg
QEAKIAogI2luY2x1ZGUgIkpJVC5oIgogCi0jaW5jbHVkZSAiQXJpdHlDaGVja0ZhaWxSZXR1cm5U
aHVua3MuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJDb2RlQmxvY2tXaXRo
SklUVHlwZS5oIgogI2luY2x1ZGUgIkRGR0NhcGFiaWxpdGllcy5oIgpAQCAtODUsNiArODQsOSBA
QCB2b2lkIEpJVDo6ZW1pdEVudGVyT3B0aW1pemF0aW9uQ2hlY2soKQogICAgIAogICAgIHNraXBP
cHRpbWl6ZS5hcHBlbmQoYnJhbmNoQWRkMzIoU2lnbmVkLCBUcnVzdGVkSW1tMzIoT3B0aW9uczo6
ZXhlY3V0aW9uQ291bnRlckluY3JlbWVudEZvckVudHJ5KCkpLCBBYnNvbHV0ZUFkZHJlc3MobV9j
b2RlQmxvY2stPmFkZHJlc3NPZkpJVEV4ZWN1dGVDb3VudGVyKCkpKSk7CiAgICAgQVNTRVJUKCFt
X2J5dGVjb2RlT2Zmc2V0KTsKKworICAgIGNvcHlDYWxsZWVTYXZlc0Zyb21GcmFtZU9yUmVnaXN0
ZXJUb1ZNQ2FsbGVlU2F2ZXNCdWZmZXIoKTsKKwogICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
T3B0aW1pemUsIG1fYnl0ZWNvZGVPZmZzZXQpOwogICAgIHNraXBPcHRpbWl6ZS5hcHBlbmQoYnJh
bmNoVGVzdFB0cihaZXJvLCByZXR1cm5WYWx1ZUdQUikpOwogICAgIG1vdmUocmV0dXJuVmFsdWVH
UFIyLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CkBAIC00OTIsNiArNDk0LDggQEAgQ29tcGlsYXRp
b25SZXN1bHQgSklUOjpwcml2YXRlQ29tcGlsZShKSQogICAgICAgICBicmVhazsKICAgICB9CiAK
KyAgICBtX2NvZGVCbG9jay0+c2V0Q2FsbGVlU2F2ZVJlZ2lzdGVycyhSZWdpc3RlclNldDo6bGxp
bnRCYXNlbGluZUNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7ICAvLyBNaWdodCBiZSBhYmxlIHRvIHJl
bW92ZSBhcyB0aGlzIGlzIHByb2JhYmx5IGFscmVhZHkgc2V0IHRvIHRoaXMgdmFsdWUuCisKICAg
ICAvLyBUaGlzIGVuc3VyZXMgdGhhdCB3ZSBoYXZlIHRoZSBtb3N0IHVwIHRvIGRhdGUgdHlwZSBp
bmZvcm1hdGlvbiB3aGVuIHBlcmZvcm1pbmcgdHlwZWNoZWNrIG9wdGltaXphdGlvbnMgZm9yIG9w
X3Byb2ZpbGVfdHlwZS4KICAgICBpZiAobV92bS0+dHlwZVByb2ZpbGVyKCkpCiAgICAgICAgIG1f
dm0tPnR5cGVQcm9maWxlckxvZygpLT5wcm9jZXNzTG9nRW50cmllcyhBU0NJSUxpdGVyYWwoIlBy
ZXBhcmluZyBmb3IgSklUIGNvbXBpbGF0aW9uLiIpKTsKQEAgLTU0OSw2ICs1NTMsOSBAQCBDb21w
aWxhdGlvblJlc3VsdCBKSVQ6OnByaXZhdGVDb21waWxlKEpJCiAgICAgbW92ZShyZWdUMSwgc3Rh
Y2tQb2ludGVyUmVnaXN0ZXIpOwogICAgIGNoZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50KCk7CiAK
KyAgICBlbWl0U2F2ZUNhbGxlZVNhdmVzKCk7CisgICAgZW1pdE1hdGVyaWFsaXplVGFnQ2hlY2tS
ZWdpc3RlcnMoKTsKKwogICAgIHByaXZhdGVDb21waWxlTWFpblBhc3MoKTsKICAgICBwcml2YXRl
Q29tcGlsZUxpbmtQYXNzKCk7CiAgICAgcHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKTsKQEAgLTU4
MCwxMSArNTg3LDYgQEAgQ29tcGlsYXRpb25SZXN1bHQgSklUOjpwcml2YXRlQ29tcGlsZShKSQog
ICAgICAgICBpZiAobWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwpCiAgICAgICAgICAgICBh
ZGRQdHIoVHJ1c3RlZEltbTMyKG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKSwgc3RhY2tQ
b2ludGVyUmVnaXN0ZXIpOwogICAgICAgICBicmFuY2hUZXN0MzIoWmVybywgcmV0dXJuVmFsdWVH
UFIpLmxpbmtUbyhiZWdpbkxhYmVsLCB0aGlzKTsKLSAgICAgICAgR1BSUmVnIHRodW5rUmVnID0g
R1BSSW5mbzo6YXJndW1lbnRHUFIxOwotICAgICAgICBDb2RlTG9jYXRpb25MYWJlbCogZmFpbFRo
dW5rTGFiZWxzID0KLSAgICAgICAgICAgIG1fdm0tPmFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtz
LT5yZXR1cm5QQ3NGb3IoKm1fdm0sIG1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpOwotICAg
ICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoZmFpbFRodW5rTGFiZWxzKSwgdGh1bmtSZWcpOwotICAg
ICAgICBsb2FkUHRyKEJhc2VJbmRleCh0aHVua1JlZywgcmV0dXJuVmFsdWVHUFIsIHRpbWVzUHRy
KCkpLCB0aHVua1JlZyk7CiAgICAgICAgIG1vdmUocmV0dXJuVmFsdWVHUFIsIEdQUkluZm86OmFy
Z3VtZW50R1BSMCk7CiAgICAgICAgIGVtaXROYWtlZENhbGwobV92bS0+Z2V0Q1RJU3R1Yihhcml0
eUZpeHVwR2VuZXJhdG9yKS5jb2RlKCkpOwogCkBAIC03MjIsNiArNzI0LDggQEAgdm9pZCBKSVQ6
OnByaXZhdGVDb21waWxlRXhjZXB0aW9uSGFuZGxlcgogICAgIGlmICghbV9leGNlcHRpb25DaGVj
a3NXaXRoQ2FsbEZyYW1lUm9sbGJhY2suZW1wdHkoKSkgewogICAgICAgICBtX2V4Y2VwdGlvbkNo
ZWNrc1dpdGhDYWxsRnJhbWVSb2xsYmFjay5saW5rKHRoaXMpOwogCisgICAgICAgIGNvcHlDYWxs
ZWVTYXZlc1RvVk1DYWxsZWVTYXZlc0J1ZmZlcigpOworCiAgICAgICAgIC8vIGxvb2t1cEV4Y2Vw
dGlvbkhhbmRsZXJGcm9tQ2FsbGVyRnJhbWUgaXMgcGFzc2VkIHR3byBhcmd1bWVudHMsIHRoZSBW
TSBhbmQgdGhlIGV4ZWMgKHRoZSBDYWxsRnJhbWUqKS4KIAogICAgICAgICBtb3ZlKFRydXN0ZWRJ
bW1QdHIodm0oKSksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CkBAIC03MzksNiArNzQzLDggQEAg
dm9pZCBKSVQ6OnByaXZhdGVDb21waWxlRXhjZXB0aW9uSGFuZGxlcgogICAgIGlmICghbV9leGNl
cHRpb25DaGVja3MuZW1wdHkoKSkgewogICAgICAgICBtX2V4Y2VwdGlvbkNoZWNrcy5saW5rKHRo
aXMpOwogCisgICAgICAgIGNvcHlDYWxsZWVTYXZlc1RvVk1DYWxsZWVTYXZlc0J1ZmZlcigpOwor
CiAgICAgICAgIC8vIGxvb2t1cEV4Y2VwdGlvbkhhbmRsZXIgaXMgcGFzc2VkIHR3byBhcmd1bWVu
dHMsIHRoZSBWTSBhbmQgdGhlIGV4ZWMgKHRoZSBDYWxsRnJhbWUqKS4KICAgICAgICAgbW92ZShU
cnVzdGVkSW1tUHRyKHZtKCkpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgICAgICBtb3Zl
KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljMzJfNjQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYzMyXzY0LmNw
cAkocmV2aXNpb24gMTg5NTQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0
aG1ldGljMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDY5LDcgKzEwNjksNyBAQCB2b2lk
IEpJVDo6ZW1pdFNsb3dfb3BfZGl2KEluc3RydWN0aW9uKiBjCiAKIHZvaWQgSklUOjplbWl0X29w
X21vZChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotI2lmIENQVShYODYpIHx8
IENQVShYODZfNjQpCisjaWYgQ1BVKFg4NikKICAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0
aW9uWzFdLnUub3BlcmFuZDsKICAgICBpbnQgb3AxID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUu
b3BlcmFuZDsKICAgICBpbnQgb3AyID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAJKHJldmlz
aW9uIDE4OTU0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9yZXQo
SW5zdHJ1Y3Rpb24qIGN1cnJlCiAgICAgZW1pdExvYWQoZHN0LCByZWdUMSwgcmVnVDApOwogCiAg
ICAgY2hlY2tTdGFja1BvaW50ZXJBbGlnbm1lbnQoKTsKKyAgICBlbWl0UmVzdG9yZUNhbGxlZVNh
dmVzKCk7CiAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKICAgICByZXQoKTsKIH0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHJldmlz
aW9uIDE4OTU0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ4LDYgKzE0OCw3IEBAIHZvaWQgSklUOjplbWl0X29w
X2VuZChJbnN0cnVjdGlvbiogY3VycmUKIHsKICAgICBBU1NFUlQocmV0dXJuVmFsdWVHUFIgIT0g
Y2FsbEZyYW1lUmVnaXN0ZXIpOwogICAgIGVtaXRMb2FkKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQsIHJlZ1QxLCByZXR1cm5WYWx1ZUdQUik7CisgICAgZW1pdFJlc3RvcmVDYWxsZWVT
YXZlcygpOwogICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CiAgICAgcmV0KCk7CiB9CkBAIC03
NDEsNiArNzQyLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbmVxX251bGwoSW5zdHJ1Y3Rpb24qIAog
dm9pZCBKSVQ6OmVtaXRfb3BfdGhyb3coSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
IHsKICAgICBBU1NFUlQocmVnVDAgPT0gcmV0dXJuVmFsdWVHUFIpOworICAgIGNvcHlDYWxsZWVT
YXZlc1RvVk1DYWxsZWVTYXZlc0J1ZmZlcigpOwogICAgIGVtaXRMb2FkKGN1cnJlbnRJbnN0cnVj
dGlvblsxXS51Lm9wZXJhbmQsIHJlZ1QxLCByZWdUMCk7CiAgICAgY2FsbE9wZXJhdGlvbk5vRXhj
ZXB0aW9uQ2hlY2sob3BlcmF0aW9uVGhyb3csIHJlZ1QxLCByZWdUMCk7CiAgICAganVtcFRvRXhj
ZXB0aW9uSGFuZGxlcigpOwpAQCAtODAwLDYgKzgwMiw4IEBAIHZvaWQgSklUOjplbWl0U2xvd19v
cF90b19zdHJpbmcoSW5zdHJ1Y3QKIAogdm9pZCBKSVQ6OmVtaXRfb3BfY2F0Y2goSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKKyAgICByZXN0b3JlQ2FsbGVlU2F2ZXNGcm9tVk1D
YWxsZWVTYXZlc0J1ZmZlcigpOworCiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKG1fdm0pLCByZWdU
Myk7CiAgICAgLy8gb3BlcmF0aW9uVGhyb3cgcmV0dXJucyB0aGUgY2FsbEZyYW1lIGZvciB0aGUg
aGFuZGxlci4KICAgICBsb2FkMzIoQWRkcmVzcyhyZWdUMywgVk06OmNhbGxGcmFtZUZvclRocm93
T2Zmc2V0KCkpLCBjYWxsRnJhbWVSZWdpc3Rlcik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wY29kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHJldmlzaW9uIDE4OTU0MykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDYgKzcwLDcg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfZW5kKEluc3RydWN0aW9uKiBjdXJyZQogewogICAgIFJFTEVB
U0VfQVNTRVJUKHJldHVyblZhbHVlR1BSICE9IGNhbGxGcmFtZVJlZ2lzdGVyKTsKICAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIHJldHVy
blZhbHVlR1BSKTsKKyAgICBlbWl0UmVzdG9yZUNhbGxlZVNhdmVzKCk7CiAgICAgZW1pdEZ1bmN0
aW9uRXBpbG9ndWUoKTsKICAgICByZXQoKTsKIH0KQEAgLTI1NSw2ICsyNTYsNyBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9yZXQoSW5zdHJ1Y3Rpb24qIGN1cnJlCiAgICAgZW1pdEdldFZpcnR1YWxSZWdp
c3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCByZXR1cm5WYWx1ZUdQUik7CiAK
ICAgICBjaGVja1N0YWNrUG9pbnRlckFsaWdubWVudCgpOworICAgIGVtaXRSZXN0b3JlQ2FsbGVl
U2F2ZXMoKTsKICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOwogICAgIHJldCgpOwogfQpAQCAt
NDE5LDYgKzQyMSw3IEBAIHZvaWQgSklUOjplbWl0X29wX2JpdG9yKEluc3RydWN0aW9uKiBjdXIK
IHZvaWQgSklUOjplbWl0X29wX3Rocm93KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiB7CiAgICAgQVNTRVJUKHJlZ1QwID09IHJldHVyblZhbHVlR1BSKTsKKyAgICBjb3B5Q2FsbGVl
U2F2ZXNUb1ZNQ2FsbGVlU2F2ZXNCdWZmZXIoKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVy
KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIHJlZ1QwKTsKICAgICBjYWxsT3BlcmF0
aW9uTm9FeGNlcHRpb25DaGVjayhvcGVyYXRpb25UaHJvdywgcmVnVDApOwogICAgIGp1bXBUb0V4
Y2VwdGlvbkhhbmRsZXIoKTsKQEAgLTQ5NCwxMSArNDk3LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
dG9fc3RyaW5nKEluc3RydWN0aW9uKgogCiB2b2lkIEpJVDo6ZW1pdF9vcF9jYXRjaChJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIC8vIEdvdHRhIHJlc3RvcmUgdGhlIHRh
ZyByZWdpc3RlcnMuIFdlIGNvdWxkIGJlIHRocm93aW5nIGZyb20gRlRMLCB3aGljaCBtYXkKLSAg
ICAvLyBjbG9iYmVyIHRoZW0uCi0gICAgbW92ZShUcnVzdGVkSW1tNjQoVGFnVHlwZU51bWJlciks
IHRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7Ci0gICAgbW92ZShUcnVzdGVkSW1tNjQoVGFnTWFzayks
IHRhZ01hc2tSZWdpc3Rlcik7Ci0gICAgCisgICAgcmVzdG9yZUNhbGxlZVNhdmVzRnJvbVZNQ2Fs
bGVlU2F2ZXNCdWZmZXIoKTsKKwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihtX3ZtKSwgcmVnVDMp
OwogICAgIGxvYWQ2NChBZGRyZXNzKHJlZ1QzLCBWTTo6Y2FsbEZyYW1lRm9yVGhyb3dPZmZzZXQo
KSksIGNhbGxGcmFtZVJlZ2lzdGVyKTsKIApAQCAtNjU2LDcgKzY1Niw3IEBAIHZvaWQgSklUOjpl
bWl0X29wX2VudGVyKEluc3RydWN0aW9uKikKICAgICAvLyByZWdpc3RlcnMgdG8gemFwIHN0YWxl
IHBvaW50ZXJzLCB0byBhdm9pZCB1bm5lY2Vzc2FyaWx5IHByb2xvbmdpbmcKICAgICAvLyBvYmpl
Y3QgbGlmZXRpbWUgYW5kIGluY3JlYXNpbmcgR0MgcHJlc3N1cmUuCiAgICAgc2l6ZV90IGNvdW50
ID0gbV9jb2RlQmxvY2stPm1fbnVtVmFyczsKLSAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IGNv
dW50OyArK2opCisgICAgZm9yIChzaXplX3QgaiA9IENvZGVCbG9jazo6bGxpbnRCYXNlbGluZUNh
bGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpOyBqIDwgY291bnQ7ICsraikKICAgICAg
ICAgZW1pdEluaXRSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChqKS5vZmZzZXQoKSk7
CiAKICAgICBlbWl0V3JpdGVCYXJyaWVyKG1fY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSk7
CkBAIC05MjIsNyArOTIyLDkgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2xvb3BfaGludChJbnN0
cnVjdAogICAgIC8vIEVtaXQgdGhlIHNsb3cgcGF0aCBmb3IgdGhlIEpJVCBvcHRpbWl6YXRpb24g
Y2hlY2s6CiAgICAgaWYgKGNhbkJlT3B0aW1pemVkKCkpIHsKICAgICAgICAgbGlua1Nsb3dDYXNl
KGl0ZXIpOwotICAgICAgICAKKworICAgICAgICBjb3B5Q2FsbGVlU2F2ZXNGcm9tRnJhbWVPclJl
Z2lzdGVyVG9WTUNhbGxlZVNhdmVzQnVmZmVyKCk7CisKICAgICAgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25PcHRpbWl6ZSwgbV9ieXRlY29kZU9mZnNldCk7CiAgICAgICAgIEp1bXAgbm9PcHRp
bWl6ZWRFbnRyeSA9IGJyYW5jaFRlc3RQdHIoWmVybywgcmV0dXJuVmFsdWVHUFIpOwogICAgICAg
ICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxODk1NDMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzM0LDgg
KzEzMzQsMTEgQEAgU2xvd1BhdGhSZXR1cm5UeXBlIEpJVF9PUEVSQVRJT04gb3BlcmF0aQogICAg
ICAgICBlbHNlCiAgICAgICAgICAgICBudW1WYXJzV2l0aFZhbHVlcyA9IDA7CiAgICAgICAgIE9w
ZXJhbmRzPEpTVmFsdWU+IG11c3RIYW5kbGVWYWx1ZXMoY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJz
KCksIG51bVZhcnNXaXRoVmFsdWVzKTsKKyAgICAgICAgaW50IGxvY2Fsc1VzZWRGb3JDYWxsZWVT
YXZlcyA9IHN0YXRpY19jYXN0PGludD4oQ29kZUJsb2NrOjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2
ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCkpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG11c3RIYW5kbGVWYWx1ZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIGludCBvcGVy
YW5kID0gbXVzdEhhbmRsZVZhbHVlcy5vcGVyYW5kRm9ySW5kZXgoaSk7CisgICAgICAgICAgICBp
ZiAob3BlcmFuZElzTG9jYWwob3BlcmFuZCkgJiYgVmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQpLnRv
TG9jYWwoKSA8IGxvY2Fsc1VzZWRGb3JDYWxsZWVTYXZlcykKKyAgICAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgICAgIG11c3RIYW5kbGVWYWx1ZXNbaV0gPSBleGVjLT51bmNoZWNrZWRS
KG9wZXJhbmQpLmpzVmFsdWUoKTsKICAgICAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJKHJldmlzaW9u
IDE4OTU0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3Mz
Ml82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4Miw3ICsyODIsNyBAQCBKSVRHZXRCeUlkR2Vu
ZXJhdG9yIEpJVDo6ZW1pdEdldEJ5VmFsV2l0CiAgICAgZW1pdElkZW50aWZpZXJDaGVjayhyZWdU
MiwgcmVnVDQsIHByb3BlcnR5TmFtZSwgc2xvd0Nhc2VzKTsKIAogICAgIEpJVEdldEJ5SWRHZW5l
cmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlT2Zm
c2V0KSwgQ2FsbFNpdGVJbmRleChjdXJyZW50SW5zdHJ1Y3Rpb24pLCBSZWdpc3RlclNldDo6c3Bl
Y2lhbFJlZ2lzdGVycygpLAorICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVj
b2RlT2Zmc2V0KSwgQ2FsbFNpdGVJbmRleChjdXJyZW50SW5zdHJ1Y3Rpb24pLCBSZWdpc3RlclNl
dDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXls
b2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCksIERvbnRTcGlsbCk7CiAg
ICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogCkBAIC00OTQsNyArNDk0LDcgQEAgSklU
UHV0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRQdXRCeVZhbFdpdAogICAgIGVtaXRMb2FkKHZhbHVl
LCByZWdUMywgcmVnVDIpOwogCiAgICAgSklUUHV0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAg
IG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVPZmZzZXQpLCBDYWxsU2l0ZUluZGV4
KGN1cnJlbnRJbnN0cnVjdGlvbiksIFJlZ2lzdGVyU2V0OjpzcGVjaWFsUmVnaXN0ZXJzKCksCisg
ICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVPZmZzZXQpLCBDYWxsU2l0
ZUluZGV4KGN1cnJlbnRJbnN0cnVjdGlvbiksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwKICAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNW
YWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwgcmVnVDEsIERvbnRTcGlsbCwgbV9jb2RlQmxvY2stPmVj
bWFNb2RlKCksIHB1dEtpbmQpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAg
ICBkb25lQ2FzZXMuYXBwZW5kKGp1bXAoKSk7CkBAIC01ODcsNyArNTg3LDcgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfZ2V0X2J5X2lkKEluc3RydWN0aW9uKgogICAgICAgICBlbWl0QXJyYXlQcm9maWxp
bmdTaXRlRm9yQnl0ZWNvZGVJbmRleFdpdGhDZWxsKHJlZ1QwLCByZWdUMiwgbV9ieXRlY29kZU9m
ZnNldCk7CiAKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxv
Y2ssIENvZGVPcmlnaW4obV9ieXRlY29kZU9mZnNldCksIENhbGxTaXRlSW5kZXgoY3VycmVudElu
c3RydWN0aW9uKSwgUmVnaXN0ZXJTZXQ6OnNwZWNpYWxSZWdpc3RlcnMoKSwKKyAgICAgICAgbV9j
b2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZU9mZnNldCksIENhbGxTaXRlSW5kZXgoY3Vy
cmVudEluc3RydWN0aW9uKSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygp
LAogICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhy
ZWdUMSwgcmVnVDApLCBEb250U3BpbGwpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlz
KTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwpAQCAtNjMyLDcgKzYzMiw3
IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9pZChJbnN0cnVjdGlvbioKICAgICBlbWl0SnVt
cFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZSwgcmVnVDEpOwogCiAgICAgSklUUHV0QnlJZEdlbmVy
YXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVPZmZz
ZXQpLCBDYWxsU2l0ZUluZGV4KGN1cnJlbnRJbnN0cnVjdGlvbiksIFJlZ2lzdGVyU2V0OjpzcGVj
aWFsUmVnaXN0ZXJzKCksCisgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNv
ZGVPZmZzZXQpLCBDYWxsU2l0ZUluZGV4KGN1cnJlbnRJbnN0cnVjdGlvbiksIFJlZ2lzdGVyU2V0
OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKICAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxv
YWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwKICAgICAgICAgcmVnVDEs
IERvbnRTcGlsbCwgbV9jb2RlQmxvY2stPmVjbWFNb2RlKCksIGRpcmVjdCA/IERpcmVjdCA6IE5v
dERpcmVjdCk7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3Bl
cnR5QWNjZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFByb3BlcnR5QWNjZXNzLmNwcAkocmV2aXNpb24gMTg5NTQzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMyw3
ICsyMTMsNyBAQCBKSVRHZXRCeUlkR2VuZXJhdG9yIEpJVDo6ZW1pdEdldEJ5VmFsV2l0CiAgICAg
ZW1pdElkZW50aWZpZXJDaGVjayhyZWdUMSwgcmVnVDMsIHByb3BlcnR5TmFtZSwgc2xvd0Nhc2Vz
KTsKIAogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywg
Q29kZU9yaWdpbihtX2J5dGVjb2RlT2Zmc2V0KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlT2Zm
c2V0KSwgUmVnaXN0ZXJTZXQ6OnNwZWNpYWxSZWdpc3RlcnMoKSwKKyAgICAgICAgbV9jb2RlQmxv
Y2ssIENvZGVPcmlnaW4obV9ieXRlY29kZU9mZnNldCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29k
ZU9mZnNldCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKICAgICAg
ICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMCksIERvbnRTcGlsbCk7CiAg
ICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogCkBAIC00NDYsNyArNDQ2LDcgQEAgSklU
UHV0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRQdXRCeVZhbFdpdAogICAgIGVtaXRHZXRWaXJ0dWFs
UmVnaXN0ZXJzKGJhc2UsIHJlZ1QwLCB2YWx1ZSwgcmVnVDEpOwogCiAgICAgSklUUHV0QnlJZEdl
bmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVP
ZmZzZXQpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVPZmZzZXQpLCBSZWdpc3RlclNldDo6c3Bl
Y2lhbFJlZ2lzdGVycygpLAorICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVj
b2RlT2Zmc2V0KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlT2Zmc2V0KSwgUmVnaXN0ZXJTZXQ6
OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAogICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCks
IEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDIsIERvbnRTcGlsbCwgbV9jb2RlQmxvY2stPmVjbWFN
b2RlKCksIHB1dEtpbmQpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBk
b25lQ2FzZXMuYXBwZW5kKGp1bXAoKSk7CkBAIC01NzQsNyArNTc0LDcgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfZ2V0X2J5X2lkKEluc3RydWN0aW9uKgogICAgICAgICBlbWl0QXJyYXlQcm9maWxpbmdT
aXRlRm9yQnl0ZWNvZGVJbmRleFdpdGhDZWxsKHJlZ1QwLCByZWdUMSwgbV9ieXRlY29kZU9mZnNl
dCk7CiAKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ss
IENvZGVPcmlnaW4obV9ieXRlY29kZU9mZnNldCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZU9m
ZnNldCksIFJlZ2lzdGVyU2V0OjpzcGVjaWFsUmVnaXN0ZXJzKCksCisgICAgICAgIG1fY29kZUJs
b2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVPZmZzZXQpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNv
ZGVPZmZzZXQpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAg
ICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBEb250U3BpbGwpOwog
ICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xv
d1BhdGhKdW1wKCkpOwpAQCAtNjIxLDcgKzYyMSw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9i
eV9pZChJbnN0cnVjdGlvbioKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAs
IGJhc2VWUmVnKTsKIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2Nv
ZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlT2Zmc2V0KSwgQ2FsbFNpdGVJbmRleChtX2J5
dGVjb2RlT2Zmc2V0KSwgUmVnaXN0ZXJTZXQ6OnNwZWNpYWxSZWdpc3RlcnMoKSwKKyAgICAgICAg
bV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZU9mZnNldCksIENhbGxTaXRlSW5kZXgo
bV9ieXRlY29kZU9mZnNldCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwKICAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1Qy
LCBEb250U3BpbGwsIG1fY29kZUJsb2NrLT5lY21hTW9kZSgpLAogICAgICAgICBkaXJlY3QgPyBE
aXJlY3QgOiBOb3REaXJlY3QpOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9SZWdpc3RlckF0T2Zmc2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1JlZ2lzdGVyQXRPZmZzZXQuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9SZWdpc3RlckF0T2Zmc2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlZ2lzdGVyQXRPZmZzZXQuaCIK
KworI2lmIEVOQUJMRShKSVQpCisKK25hbWVzcGFjZSBKU0MgeworCit2b2lkIFJlZ2lzdGVyQXRP
ZmZzZXQ6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3sKKyAgICBvdXQucHJpbnQocmVn
KCksICIgYXQgIiwgb2Zmc2V0KCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlm
IC8vIEVOQUJMRShKSVQpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0
ZXJBdE9mZnNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVn
aXN0ZXJBdE9mZnNldC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9SZWdpc3RlckF0T2Zmc2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4MSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYg
UmVnaXN0ZXJBdE9mZnNldF9oCisjZGVmaW5lIFJlZ2lzdGVyQXRPZmZzZXRfaAorCisjaWYgRU5B
QkxFKEpJVCkKKworI2luY2x1ZGUgIlJlZy5oIgorI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5o
PgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgUmVnaXN0ZXJBdE9mZnNldCB7CitwdWJsaWM6
CisgICAgUmVnaXN0ZXJBdE9mZnNldCgpCisgICAgICAgIDogbV9vZmZzZXQoMCkKKyAgICB7Cisg
ICAgfQorICAgIAorICAgIFJlZ2lzdGVyQXRPZmZzZXQoUmVnIHJlZywgcHRyZGlmZl90IG9mZnNl
dCkKKyAgICAgICAgOiBtX3JlZyhyZWcpCisgICAgICAgICwgbV9vZmZzZXQob2Zmc2V0KQorICAg
IHsKKyAgICB9CisgICAgCisgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9y
ZWc7IH0KKyAgICAKKyAgICBSZWcgcmVnKCkgY29uc3QgeyByZXR1cm4gbV9yZWc7IH0KKyAgICBw
dHJkaWZmX3Qgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KKyAgICBpbnQgb2Zm
c2V0QXNJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG9mZnNldCgpIC8gc2l6ZW9mKHZvaWQqKTsgfQor
ICAgIAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZWdpc3RlckF0T2Zmc2V0JiBvdGhlcikg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiByZWcoKSA9PSBvdGhlci5yZWcoKSAmJiBvZmZz
ZXQoKSA9PSBvdGhlci5vZmZzZXQoKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBvcGVyYXRvcjwo
Y29uc3QgUmVnaXN0ZXJBdE9mZnNldCYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICBpZiAo
cmVnKCkgIT0gb3RoZXIucmVnKCkpCisgICAgICAgICAgICByZXR1cm4gcmVnKCkgPCBvdGhlci5y
ZWcoKTsKKyAgICAgICAgcmV0dXJuIG9mZnNldCgpIDwgb3RoZXIub2Zmc2V0KCk7CisgICAgfQor
ICAgIAorICAgIHN0YXRpYyBSZWcgZ2V0UmVnKFJlZ2lzdGVyQXRPZmZzZXQqIHZhbHVlKSB7IHJl
dHVybiB2YWx1ZS0+cmVnKCk7IH0KKyAgICAKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91
dCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgUmVnIG1fcmVnOworICAgIHB0cmRpZmZfdCBtX29m
ZnNldDsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkK
KworI2VuZGlmIC8vIFJlZ2lzdGVyQXRPZmZzZXRfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1JlZ2lzdGVyQXRPZmZzZXRMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyQXRPZmZzZXRMaXN0LmNwcAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJBdE9mZnNldExpc3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlZ2lz
dGVyQXRPZmZzZXRMaXN0LmgiCisKKyNpZiBFTkFCTEUoSklUKQorCisjaW5jbHVkZSA8d3RmL0xp
c3REdW1wLmg+CisKK25hbWVzcGFjZSBKU0MgeworICAgIAorUmVnaXN0ZXJBdE9mZnNldExpc3Q6
OlJlZ2lzdGVyQXRPZmZzZXRMaXN0KCkgeyB9CisKK1JlZ2lzdGVyQXRPZmZzZXRMaXN0OjpSZWdp
c3RlckF0T2Zmc2V0TGlzdChSZWdpc3RlclNldCByZWdpc3RlclNldCwgT2Zmc2V0QmFzZVR5cGUg
b2Zmc2V0QmFzZVR5cGUpCit7CisgICAgc2l6ZV90IG51bWJlck9mUmVnaXN0ZXJzID0gcmVnaXN0
ZXJTZXQubnVtYmVyT2ZTZXRSZWdpc3RlcnMoKTsKKyAgICBwdHJkaWZmX3Qgb2Zmc2V0ID0gMDsK
KyAgICAKKyAgICBpZiAob2Zmc2V0QmFzZVR5cGUgPT0gRnJhbWVQb2ludGVyQmFzZWQpCisgICAg
ICAgIG9mZnNldCA9IC0oc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihudW1iZXJPZlJlZ2lzdGVycykg
KiBzaXplb2Yodm9pZCopKTsKKworICAgIGZvciAoUmVnIHJlZyA9IFJlZzo6Zmlyc3QoKTsgcmVn
IDw9IFJlZzo6bGFzdCgpO3JlZyA9IHJlZy5uZXh0KCkpIHsKKyAgICAgICAgaWYgKHJlZ2lzdGVy
U2V0LmdldChyZWcpKSB7CisgICAgICAgICAgICBhcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChyZWcs
IG9mZnNldCkpOworICAgICAgICAgICAgb2Zmc2V0ICs9IHNpemVvZih2b2lkKik7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBzb3J0KCk7Cit9CisKK3ZvaWQgUmVnaXN0ZXJBdE9mZnNldExpc3Q6
OnNvcnQoKQoreworICAgIHN0ZDo6c29ydChtX3JlZ2lzdGVycy5iZWdpbigpLCBtX3JlZ2lzdGVy
cy5lbmQoKSk7Cit9CisKK3ZvaWQgUmVnaXN0ZXJBdE9mZnNldExpc3Q6OmR1bXAoUHJpbnRTdHJl
YW0mIG91dCkgY29uc3QKK3sKKyAgICBvdXQucHJpbnQobGlzdER1bXAobV9yZWdpc3RlcnMpKTsK
K30KKworUmVnaXN0ZXJBdE9mZnNldCogUmVnaXN0ZXJBdE9mZnNldExpc3Q6OmZpbmQoUmVnIHJl
ZykgY29uc3QKK3sKKyAgICByZXR1cm4gdHJ5QmluYXJ5U2VhcmNoPFJlZ2lzdGVyQXRPZmZzZXQs
IFJlZz4obV9yZWdpc3RlcnMsIG1fcmVnaXN0ZXJzLnNpemUoKSwgcmVnLCBSZWdpc3RlckF0T2Zm
c2V0OjpnZXRSZWcpOworfQorCit1bnNpZ25lZCBSZWdpc3RlckF0T2Zmc2V0TGlzdDo6aW5kZXhP
ZihSZWcgcmVnKSBjb25zdAoreworICAgIGlmIChSZWdpc3RlckF0T2Zmc2V0KiBwb2ludGVyID0g
ZmluZChyZWcpKQorICAgICAgICByZXR1cm4gcG9pbnRlciAtIG1fcmVnaXN0ZXJzLmJlZ2luKCk7
CisgICAgcmV0dXJuIFVJTlRfTUFYOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlm
IC8vIEVOQUJMRShKSVQpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0
ZXJBdE9mZnNldExpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1JlZ2lzdGVyQXRPZmZzZXRMaXN0LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1JlZ2lzdGVyQXRPZmZzZXRMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aWZuZGVmIFJlZ2lzdGVyQXRPZmZzZXRMaXN0X2gKKyNkZWZpbmUgUmVnaXN0ZXJBdE9mZnNldExp
c3RfaAorCisjaWYgRU5BQkxFKEpJVCkKKworI2luY2x1ZGUgIlJlZ2lzdGVyQXRPZmZzZXQuaCIK
KyNpbmNsdWRlICJSZWdpc3RlclNldC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgUmVn
aXN0ZXJBdE9mZnNldExpc3QgeworcHVibGljOgorICAgIGVudW0gT2Zmc2V0QmFzZVR5cGUgeyBG
cmFtZVBvaW50ZXJCYXNlZCwgWmVyb0Jhc2VkIH07CisKKyAgICBSZWdpc3RlckF0T2Zmc2V0TGlz
dCgpOworICAgIFJlZ2lzdGVyQXRPZmZzZXRMaXN0KFJlZ2lzdGVyU2V0LCBPZmZzZXRCYXNlVHlw
ZSA9IEZyYW1lUG9pbnRlckJhc2VkKTsKKworICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNv
bnN0OworCisgICAgdm9pZCBjbGVhcigpCisgICAgeworICAgICAgICBtX3JlZ2lzdGVycy5jbGVh
cigpOworICAgIH0KKworICAgIHNpemVfdCBzaXplKCkKKyAgICB7CisgICAgICAgIHJldHVybiBt
X3JlZ2lzdGVycy5zaXplKCk7CisgICAgfQorCisgICAgUmVnaXN0ZXJBdE9mZnNldCYgYXQoc2l6
ZV90IGluZGV4KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fcmVnaXN0ZXJzLmF0KGluZGV4KTsK
KyAgICB9CisgICAgCisgICAgdm9pZCBhcHBlbmQoUmVnaXN0ZXJBdE9mZnNldCByZWdpc3RlckF0
T2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKHJlZ2lzdGVyQXRPZmZz
ZXQpOworICAgIH0KKworICAgIHZvaWQgc29ydCgpOworICAgIFJlZ2lzdGVyQXRPZmZzZXQqIGZp
bmQoUmVnKSBjb25zdDsKKyAgICB1bnNpZ25lZCBpbmRleE9mKFJlZykgY29uc3Q7IC8vIFJldHVy
bnMgVUlOVF9NQVggaWYgbm90IGZvdW5kLgorCitwcml2YXRlOgorICAgIFZlY3RvcjxSZWdpc3Rl
ckF0T2Zmc2V0PiBtX3JlZ2lzdGVyczsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5k
aWYgLy8gRU5BQkxFKEpJVCkKKworI2VuZGlmIC8vIFJlZ2lzdGVyQXRPZmZzZXRMaXN0X2gKKwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5jcHAJKHJldmlzaW9u
IDE4OTU0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJTZXQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02Niw2ICs2NiwxMSBAQCBSZWdpc3RlclNldCBSZWdpc3RlclNldDo6
c3BlY2lhbFJlZ2lzdGVyCiAgICAgICAgIHN0YWNrUmVnaXN0ZXJzKCksIHJlc2VydmVkSGFyZHdh
cmVSZWdpc3RlcnMoKSwgcnVudGltZVJlZ2lzdGVycygpKTsKIH0KIAorUmVnaXN0ZXJTZXQgUmVn
aXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpCit7CisgICAgcmV0dXJuIFJlZ2lz
dGVyU2V0KHNwZWNpYWxSZWdpc3RlcnMoKSwgdm1DYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOworfQor
CiBSZWdpc3RlclNldCBSZWdpc3RlclNldDo6Y2FsbGVlU2F2ZVJlZ2lzdGVycygpCiB7CiAgICAg
UmVnaXN0ZXJTZXQgcmVzdWx0OwpAQCAtMTIyLDYgKzEyNywxNTMgQEAgUmVnaXN0ZXJTZXQgUmVn
aXN0ZXJTZXQ6OmNhbGxlZVNhdmVSZWdpcwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK1JlZ2lz
dGVyU2V0IFJlZ2lzdGVyU2V0Ojp2bUNhbGxlZVNhdmVSZWdpc3RlcnMoKQoreworICAgIFJlZ2lz
dGVyU2V0IHJlc3VsdDsKKyNpZiBDUFUoWDg2XzY0KQorICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6
cmVnQ1MwKTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMSk7CisgICAgcmVzdWx0LnNl
dChHUFJJbmZvOjpyZWdDUzIpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MzKTsKKyAg
ICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNCk7CisjaWYgT1MoV0lORE9XUykKKyAgICByZXN1
bHQuc2V0KEdQUkluZm86OnJlZ0NTNSk7CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzYp
OworI2VuZGlmCisjZWxpZiBDUFUoQVJNNjQpCisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdD
UzApOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MxKTsKKyAgICByZXN1bHQuc2V0KEdQ
UkluZm86OnJlZ0NTMik7CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzMpOworICAgIHJl
c3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M0KTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NT
NSk7CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzYpOworICAgIHJlc3VsdC5zZXQoR1BS
SW5mbzo6cmVnQ1M3KTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTOCk7CisgICAgcmVz
dWx0LnNldChHUFJJbmZvOjpyZWdDUzkpOworICAgIHJlc3VsdC5zZXQoRlBSSW5mbzo6ZnBSZWdD
UzApOworICAgIHJlc3VsdC5zZXQoRlBSSW5mbzo6ZnBSZWdDUzEpOworICAgIHJlc3VsdC5zZXQo
RlBSSW5mbzo6ZnBSZWdDUzIpOworICAgIHJlc3VsdC5zZXQoRlBSSW5mbzo6ZnBSZWdDUzMpOwor
ICAgIHJlc3VsdC5zZXQoRlBSSW5mbzo6ZnBSZWdDUzQpOworICAgIHJlc3VsdC5zZXQoRlBSSW5m
bzo6ZnBSZWdDUzUpOworICAgIHJlc3VsdC5zZXQoRlBSSW5mbzo6ZnBSZWdDUzYpOworICAgIHJl
c3VsdC5zZXQoRlBSSW5mbzo6ZnBSZWdDUzcpOworI2VuZGlmCisgICAgcmV0dXJuIHJlc3VsdDsK
K30KKworUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVn
aXN0ZXJzKCkKK3sKKyAgICBSZWdpc3RlclNldCByZXN1bHQ7CisjaWYgQ1BVKFg4NikKKyNlbGlm
IENQVShYODZfNjQpCisjaWYgIU9TKFdJTkRPV1MpCisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpy
ZWdDUzIpOworICAgIEFTU0VSVChHUFJJbmZvOjpyZWdDUzMgPT0gR1BSSW5mbzo6dGFnVHlwZU51
bWJlclJlZ2lzdGVyKTsKKyAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1M0ID09IEdQUkluZm86OnRh
Z01hc2tSZWdpc3Rlcik7CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzMpOworICAgIHJl
c3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M0KTsKKyNlbHNlCisgICAgcmVzdWx0LnNldChHUFJJbmZv
OjpyZWdDUzQpOworICAgIEFTU0VSVChHUFJJbmZvOjpyZWdDUzUgPT0gR1BSSW5mbzo6dGFnVHlw
ZU51bWJlclJlZ2lzdGVyKTsKKyAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1M2ID09IEdQUkluZm86
OnRhZ01hc2tSZWdpc3Rlcik7CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzUpOworICAg
IHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M2KTsKKyNlbmRpZgorI2VsaWYgQ1BVKEFSTV9USFVN
QjIpCisjZWxpZiBDUFUoQVJNX1RSQURJVElPTkFMKQorI2VsaWYgQ1BVKEFSTTY0KQorICAgIHJl
c3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M3KTsKKyAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1M4ID09
IEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7CisgICAgQVNTRVJUKEdQUkluZm86OnJl
Z0NTOSA9PSBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOworICAgIHJlc3VsdC5zZXQoR1BSSW5m
bzo6cmVnQ1M4KTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTOSk7CisjZWxpZiBDUFUo
TUlQUykKKyNlbGlmIENQVShTSDQpCisjZWxzZQorICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9S
TSgpOworI2VuZGlmCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworUmVnaXN0ZXJTZXQgUmVnaXN0
ZXJTZXQ6OmRmZ0NhbGxlZVNhdmVSZWdpc3RlcnMoKQoreworICAgIFJlZ2lzdGVyU2V0IHJlc3Vs
dDsKKyNpZiBDUFUoWDg2KQorI2VsaWYgQ1BVKFg4Nl82NCkKKyAgICByZXN1bHQuc2V0KEdQUklu
Zm86OnJlZ0NTMCk7CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzEpOworICAgIHJlc3Vs
dC5zZXQoR1BSSW5mbzo6cmVnQ1MyKTsKKyNpZiAhT1MoV0lORE9XUykKKyAgICBBU1NFUlQoR1BS
SW5mbzo6cmVnQ1MzID09IEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7CisgICAgQVNT
RVJUKEdQUkluZm86OnJlZ0NTNCA9PSBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOworICAgIHJl
c3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MzKTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NT
NCk7CisjZWxzZQorICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MzKTsKKyAgICByZXN1bHQu
c2V0KEdQUkluZm86OnJlZ0NTNCk7CisgICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTNSA9PSBHUFJJ
bmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOworICAgIEFTU0VSVChHUFJJbmZvOjpyZWdDUzYg
PT0gR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJl
Z0NTNSk7CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzYpOworI2VuZGlmCisjZWxpZiBD
UFUoQVJNX1RIVU1CMikKKyNlbGlmIENQVShBUk1fVFJBRElUSU9OQUwpCisjZWxpZiBDUFUoQVJN
NjQpCisgICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTOCA9PSBHUFJJbmZvOjp0YWdUeXBlTnVtYmVy
UmVnaXN0ZXIpOworICAgIEFTU0VSVChHUFJJbmZvOjpyZWdDUzkgPT0gR1BSSW5mbzo6dGFnTWFz
a1JlZ2lzdGVyKTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTOCk7CisgICAgcmVzdWx0
LnNldChHUFJJbmZvOjpyZWdDUzkpOworI2VsaWYgQ1BVKE1JUFMpCisjZWxpZiBDUFUoU0g0KQor
I2Vsc2UKKyAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKKyNlbmRpZgorICAgIHJldHVy
biByZXN1bHQ7Cit9CisKK1JlZ2lzdGVyU2V0IFJlZ2lzdGVyU2V0OjpmdGxDYWxsZWVTYXZlUmVn
aXN0ZXJzKCkKK3sKKyAgICBSZWdpc3RlclNldCByZXN1bHQ7CisjaWYgRU5BQkxFKEZUTF9KSVQp
CisjaWYgQ1BVKFg4Nl82NCkgJiYgIU9TKFdJTkRPV1MpCisgICAgcmVzdWx0LnNldChHUFJJbmZv
OjpyZWdDUzApOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MxKTsKKyAgICByZXN1bHQu
c2V0KEdQUkluZm86OnJlZ0NTMik7CisgICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTMyA9PSBHUFJJ
bmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOworICAgIEFTU0VSVChHUFJJbmZvOjpyZWdDUzQg
PT0gR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJl
Z0NTMyk7CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzQpOworI2VsaWYgQ1BVKEFSTTY0
KQorICAgIC8vIExMVk0gbWlnaHQgc2F2ZSBhbmQgdXNlIGFsbCBBUk02NCBjYWxsZWUgc2F2ZXMg
c3BlY2lmaWVkIGluIHRoZSBBQkkuCisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzApOwor
ICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MxKTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86
OnJlZ0NTMik7CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzMpOworICAgIHJlc3VsdC5z
ZXQoR1BSSW5mbzo6cmVnQ1M0KTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNSk7Cisg
ICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzYpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6
cmVnQ1M3KTsKKyAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1M4ID09IEdQUkluZm86OnRhZ1R5cGVO
dW1iZXJSZWdpc3Rlcik7CisgICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTOSA9PSBHUFJJbmZvOjp0
YWdNYXNrUmVnaXN0ZXIpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M4KTsKKyAgICBy
ZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTOSk7CisgICAgcmVzdWx0LnNldChGUFJJbmZvOjpmcFJl
Z0NTMCk7CisgICAgcmVzdWx0LnNldChGUFJJbmZvOjpmcFJlZ0NTMSk7CisgICAgcmVzdWx0LnNl
dChGUFJJbmZvOjpmcFJlZ0NTMik7CisgICAgcmVzdWx0LnNldChGUFJJbmZvOjpmcFJlZ0NTMyk7
CisgICAgcmVzdWx0LnNldChGUFJJbmZvOjpmcFJlZ0NTNCk7CisgICAgcmVzdWx0LnNldChGUFJJ
bmZvOjpmcFJlZ0NTNSk7CisgICAgcmVzdWx0LnNldChGUFJJbmZvOjpmcFJlZ0NTNik7CisgICAg
cmVzdWx0LnNldChGUFJJbmZvOjpmcFJlZ0NTNyk7CisjZWxzZQorICAgIFVOUkVBQ0hBQkxFX0ZP
Ul9QTEFURk9STSgpOworI2VuZGlmCisjZW5kaWYKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBS
ZWdpc3RlclNldCBSZWdpc3RlclNldDo6YWxsR1BScygpCiB7CiAgICAgUmVnaXN0ZXJTZXQgcmVz
dWx0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJTZXQuaAkocmV2aXNp
b24gMTg5NTQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5oCSh3
b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCwxMSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZ2lz
dGVyU2V0IHJ1bnRpbWVSZWdpc3RlcnMoKTsKICAgICBzdGF0aWMgUmVnaXN0ZXJTZXQgc3BlY2lh
bFJlZ2lzdGVycygpOyAvLyBUaGUgdW5pb24gb2Ygc3RhY2ssIHJlc2VydmVkIGhhcmR3YXJlLCBh
bmQgcnVudGltZSByZWdpc3RlcnMuCiAgICAgc3RhdGljIFJlZ2lzdGVyU2V0IGNhbGxlZVNhdmVS
ZWdpc3RlcnMoKTsKKyAgICBzdGF0aWMgUmVnaXN0ZXJTZXQgdm1DYWxsZWVTYXZlUmVnaXN0ZXJz
KCk7IC8vIENhbGxlZSBzYXZlIHJlZ2lzdGVycyB0aGF0IG1pZ2h0IGJlIHNhdmVkIGFuZCB1c2Vk
IGJ5IGFueSB0aWVyLgorICAgIHN0YXRpYyBSZWdpc3RlclNldCBsbGludEJhc2VsaW5lQ2FsbGVl
U2F2ZVJlZ2lzdGVycygpOyAvLyBSZWdpc3RlcnMgc2F2ZWQgYW5kIHVzZWQgYnkgdGhlIExMSW50
LgorICAgIHN0YXRpYyBSZWdpc3RlclNldCBkZmdDYWxsZWVTYXZlUmVnaXN0ZXJzKCk7IC8vIFJl
Z2lzdGVycyBzYXZlZCBhbmQgdXNlZCBieSB0aGUgREZHIEpJVC4KKyAgICBzdGF0aWMgUmVnaXN0
ZXJTZXQgZnRsQ2FsbGVlU2F2ZVJlZ2lzdGVycygpOyAvLyBSZWdpc3RlcnMgdGhhdCBtaWdodCBi
ZSBzYXZlZCBhbmQgdXNlZCBieSB0aGUgRlRMIEpJVC4KKyAgICBzdGF0aWMgUmVnaXN0ZXJTZXQg
c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCk7IC8vIFRoZSB1bmlvbiBvZiBjYWxsZWUgc2F2ZXMg
YW5kIHNwZWNpYWwgcmVnaXN0ZXJzLgogICAgIHN0YXRpYyBSZWdpc3RlclNldCBhbGxHUFJzKCk7
CiAgICAgc3RhdGljIFJlZ2lzdGVyU2V0IGFsbEZQUnMoKTsKICAgICBzdGF0aWMgUmVnaXN0ZXJT
ZXQgYWxsUmVnaXN0ZXJzKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0
Y2guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5j
cHAJKHJldmlzaW9uIDE4OTU0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRj
aC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1NSw3ICs1NTUsOSBAQCBzdGF0aWMgYm9vbCBnZW5l
cmF0ZUJ5SWRTdHViKAogICAgICAgICAgICAgaWYgKGtpbmQgPT0gQ2FsbEN1c3RvbUdldHRlcikK
ICAgICAgICAgICAgICAgICBzdHViSml0LnNldHVwUmVzdWx0cyh2YWx1ZVJlZ3MpOwogICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm9FeGNlcHRpb24gPSBzdHViSml0LmVtaXRFeGNl
cHRpb25DaGVjayhDQ2FsbEhlbHBlcnM6OkludmVydGVkRXhjZXB0aW9uQ2hlY2spOwotICAgICAg
ICAgICAgCisKKyAgICAgICAgICAgIHN0dWJKaXQuY29weUNhbGxlZVNhdmVzVG9WTUNhbGxlZVNh
dmVzQnVmZmVyKCk7CisKICAgICAgICAgICAgIHN0dWJKaXQuc2V0dXBBcmd1bWVudHMoQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHZtKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwog
ICAgICAgICAgICAgaGFuZGxlckNhbGwgPSBzdHViSml0LmNhbGwoKTsKICAgICAgICAgICAgIHN0
dWJKaXQuanVtcFRvRXhjZXB0aW9uSGFuZGxlcigpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9TcGVjaWFsaXplZFRodW5rSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9TcGVjaWFsaXplZFRodW5rSklULmgJKHJldmlzaW9uIDE4OTU0MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lhbGl6ZWRUaHVua0pJVC5oCSh3b3JraW5n
IGNvcHkpCkBAIC00NCw2ICs0NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgOiBK
U0ludGVyZmFjZUpJVCh2bSkKICAgICAgICAgewogICAgICAgICAgICAgZW1pdEZ1bmN0aW9uUHJv
bG9ndWUoKTsKKyAgICAgICAgICAgIGVtaXRTYXZlVGhlbk1hdGVyaWFsaXplVGFnUmVnaXN0ZXJz
KCk7CiAgICAgICAgICAgICAvLyBDaGVjayB0aGF0IHdlIGhhdmUgdGhlIGV4cGVjdGVkIG51bWJl
ciBvZiBhcmd1bWVudHMKICAgICAgICAgICAgIG1fZmFpbHVyZXMuYXBwZW5kKGJyYW5jaDMyKE5v
dEVxdWFsLCBwYXlsb2FkRm9yKEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpLCBUcnVzdGVkSW1tMzIo
ZXhwZWN0ZWRBcmdDb3VudCArIDEpKSk7CiAgICAgICAgIH0KQEAgLTUyLDYgKzUzLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICA6IEpTSW50ZXJmYWNlSklUKHZtKQogICAgICAgICB7
CiAgICAgICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOworICAgICAgICAgICAgZW1pdFNh
dmVUaGVuTWF0ZXJpYWxpemVUYWdSZWdpc3RlcnMoKTsKICAgICAgICAgfQogICAgICAgICAKICAg
ICAgICAgdm9pZCBsb2FkRG91YmxlQXJndW1lbnQoaW50IGFyZ3VtZW50LCBGUFJlZ2lzdGVySUQg
ZHN0LCBSZWdpc3RlcklEIHNjcmF0Y2gpCkBAIC0xMDUsNiArMTA3LDggQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChzcmMgIT0gcmVnVDApCiAgICAgICAgICAg
ICAgICAgbW92ZShzcmMsIHJlZ1QwKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZW1pdFJl
c3RvcmVTYXZlZFRhZ1JlZ2lzdGVycygpOwogICAgICAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9n
dWUoKTsKICAgICAgICAgICAgIHJldCgpOwogICAgICAgICB9CkBAIC0xMTMsNiArMTE3LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQocGF5
bG9hZCwgcGF5bG9hZCA9PSByZWdUMCk7CiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKHRhZywg
dGFnID09IHJlZ1QxKTsKKyAgICAgICAgICAgIGVtaXRSZXN0b3JlU2F2ZWRUYWdSZWdpc3RlcnMo
KTsKICAgICAgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CiAgICAgICAgICAgICByZXQo
KTsKICAgICAgICAgfQpAQCAtMTM3LDYgKzE0Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAgICAgbG93Tm9uWmVyby5saW5rKHRoaXMpOwogICAgICAgICAgICAgaGlnaE5vblplcm8ubGlu
ayh0aGlzKTsKICNlbmRpZgorICAgICAgICAgICAgZW1pdFJlc3RvcmVTYXZlZFRhZ1JlZ2lzdGVy
cygpOwogICAgICAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKICAgICAgICAgICAgIHJl
dCgpOwogICAgICAgICB9CkBAIC0xNDYsNiArMTUyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgICAgICBpZiAoc3JjICE9IHJlZ1QwKQogICAgICAgICAgICAgICAgIG1vdmUoc3JjLCByZWdU
MCk7CiAgICAgICAgICAgICB0YWdSZXR1cm5Bc0ludDMyKCk7CisgICAgICAgICAgICBlbWl0UmVz
dG9yZVNhdmVkVGFnUmVnaXN0ZXJzKCk7CiAgICAgICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1
ZSgpOwogICAgICAgICAgICAgcmV0KCk7CiAgICAgICAgIH0KQEAgLTE1NSw2ICsxNjIsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIGlmIChzcmMgIT0gcmVnVDApCiAgICAgICAgICAg
ICAgICAgbW92ZShzcmMsIHJlZ1QwKTsKICAgICAgICAgICAgIHRhZ1JldHVybkFzSlNDZWxsKCk7
CisgICAgICAgICAgICBlbWl0UmVzdG9yZVNhdmVkVGFnUmVnaXN0ZXJzKCk7CiAgICAgICAgICAg
ICBlbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOwogICAgICAgICAgICAgcmV0KCk7CiAgICAgICAgIH0K
QEAgLTE4NSw3ICsxOTMsMzEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHBy
aXZhdGU6CisgICAgICAgIHZvaWQgZW1pdFNhdmVUaGVuTWF0ZXJpYWxpemVUYWdSZWdpc3RlcnMo
KQorICAgICAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyNpZiBDUFUoQVJNNjQpCisgICAgICAg
ICAgICBwdXNoUGFpcih0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIHRhZ01hc2tSZWdpc3Rlcik7Cisj
ZWxzZQorICAgICAgICAgICAgcHVzaCh0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOworICAgICAgICAg
ICAgcHVzaCh0YWdNYXNrUmVnaXN0ZXIpOworI2VuZGlmCisgICAgICAgICAgICBlbWl0TWF0ZXJp
YWxpemVUYWdDaGVja1JlZ2lzdGVycygpOworI2VuZGlmCisgICAgICAgIH0KIAorICAgICAgICB2
b2lkIGVtaXRSZXN0b3JlU2F2ZWRUYWdSZWdpc3RlcnMoKQorICAgICAgICB7CisjaWYgVVNFKEpT
VkFMVUU2NCkKKyNpZiBDUFUoQVJNNjQpCisgICAgICAgICAgICBwb3BQYWlyKHRhZ1R5cGVOdW1i
ZXJSZWdpc3RlciwgdGFnTWFza1JlZ2lzdGVyKTsKKyNlbHNlCisgICAgICAgICAgICBwb3AodGFn
TWFza1JlZ2lzdGVyKTsKKyAgICAgICAgICAgIHBvcCh0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOwor
I2VuZGlmCisjZW5kaWYKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgdm9pZCB0YWdSZXR1
cm5Bc0ludDMyKCkKICAgICAgICAgewogI2lmIFVTRShKU1ZBTFVFNjQpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1RlbXBSZWdpc3RlclNldC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGVtcFJlZ2lzdGVyU2V0LmgJKHJldmlzaW9uIDE4OTU0MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGVtcFJlZ2lzdGVyU2V0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTExNSw2ICsxMTUsMTYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gZ2V0Qml0
KEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzICsgaW5kZXgpOwogICAgIH0KICAgICAKKyAgICAv
LyBSZXR1cm4gdGhlIGluZGV4J3RoIGZyZWUgRlBSLgorICAgIEZQUlJlZyBnZXRGcmVlRlBSKHVu
c2lnbmVkIGluZGV4ID0gMCkgY29uc3QKKyAgICB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IEZQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyBpLS07KSB7CisgICAgICAgICAgICBpZiAoIWdl
dEZQUkJ5SW5kZXgoaSkgJiYgIWluZGV4LS0pCisgICAgICAgICAgICAgICAgcmV0dXJuIEZQUklu
Zm86OnRvUmVnaXN0ZXIoaSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIEludmFsaWRGUFJS
ZWc7CisgICAgfQorCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQmFua0luZm8+CiAgICAgdm9pZCBz
ZXRCeUluZGV4KHVuc2lnbmVkIGluZGV4KQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAJKHJldmlzaW9uIDE4OTU0MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjYsNiArNjYsOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgdGhyb3dFeGNlcHRpb25G
cm9tCiAgICAgLy8gZXZlbiB0aG91Z2ggd2Ugd29uJ3QgdXNlIGl0LgogICAgIGppdC5wcmVzZXJ2
ZVJldHVybkFkZHJlc3NBZnRlckNhbGwoR1BSSW5mbzo6bm9uUHJlc2VydmVkTm9uUmV0dXJuR1BS
KTsKIAorICAgIGppdC5jb3B5Q2FsbGVlU2F2ZXNUb1ZNQ2FsbGVlU2F2ZXNCdWZmZXIoKTsKKwog
ICAgIGppdC5zZXR1cEFyZ3VtZW50cyhDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIodm0pLCBH
UFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CiAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4obG9va3VwRXhjZXB0aW9uSGFuZGxlcikp
LCBHUFJJbmZvOjpub25BcmdHUFIwKTsKICAgICBlbWl0UG9pbnRlclZhbGlkYXRpb24oaml0LCBH
UFJJbmZvOjpub25BcmdHUFIwKTsKQEAgLTIwOSw2ICsyMTEsMTggQEAgc3RhdGljIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZiBuYXRpdmVGb3JHZQogCiAgICAgaWYgKGVudHJ5VHlwZSA9PSBFbnRlclZp
YUNhbGwpCiAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOworI2lmIFVTRShKU1ZB
TFVFNjQpCisgICAgZWxzZSBpZiAoZW50cnlUeXBlID09IEVudGVyVmlhSnVtcCkgeworICAgICAg
ICAvLyBXZSdyZSBjb21pbmcgZnJvbSBhIHNwZWNpYWxpemVkIHRodW5rIHRoYXQgaGFzIHNhdmVk
IHRoZSBwcmlvciB0YWcgcmVnaXN0ZXJzJyBjb250ZW50cy4KKyAgICAgICAgLy8gUmVzdG9yZSB0
aGVtIG5vdy4KKyNpZiBDUFUoQVJNNjQpCisgICAgICAgIGppdC5wb3BQYWlyKEpTSW50ZXJmYWNl
SklUOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIEpTSW50ZXJmYWNlSklUOjp0YWdNYXNrUmVnaXN0
ZXIpOworI2Vsc2UKKyAgICAgICAgaml0LnBvcChKU0ludGVyZmFjZUpJVDo6dGFnTWFza1JlZ2lz
dGVyKTsKKyAgICAgICAgaml0LnBvcChKU0ludGVyZmFjZUpJVDo6dGFnVHlwZU51bWJlclJlZ2lz
dGVyKTsKKyNlbmRpZgorICAgIH0KKyNlbmRpZgogCiAgICAgaml0LmVtaXRQdXRJbW1lZGlhdGVU
b0NhbGxGcmFtZUhlYWRlcigwLCBKU1N0YWNrOjpDb2RlQmxvY2spOwogICAgIGppdC5zdG9yZVB0
cihKU0ludGVyZmFjZUpJVDo6Y2FsbEZyYW1lUmVnaXN0ZXIsICZ2bS0+dG9wQ2FsbEZyYW1lKTsK
QEAgLTMwNiw2ICszMjAsNyBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG5hdGl2ZUZv
ckdlCiAgICAgLy8gSGFuZGxlIGFuIGV4Y2VwdGlvbgogICAgIGV4Y2VwdGlvbkhhbmRsZXIubGlu
aygmaml0KTsKIAorICAgIGppdC5jb3B5Q2FsbGVlU2F2ZXNUb1ZNQ2FsbGVlU2F2ZXNCdWZmZXIo
KTsKICAgICBqaXQuc3RvcmVQdHIoSlNJbnRlcmZhY2VKSVQ6OmNhbGxGcmFtZVJlZ2lzdGVyLCAm
dm0tPnRvcENhbGxGcmFtZSk7CiAKICNpZiBDUFUoWDg2KSAmJiBVU0UoSlNWQUxVRTMyXzY0KQpA
QCAtMzkxLDEzICs0MDYsNiBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgYXJpdHlGaXh1cEdlbmVy
YXRvCiAgICAgaml0LmFkZFB0cihleHRyYVRlbXAsIEpTSW50ZXJmYWNlSklUOjpjYWxsRnJhbWVS
ZWdpc3Rlcik7CiAgICAgaml0LmFkZFB0cihleHRyYVRlbXAsIEpTSW50ZXJmYWNlSklUOjpzdGFj
a1BvaW50ZXJSZWdpc3Rlcik7CiAKLSAgICAvLyBTYXZlIHRoZSBvcmlnaW5hbCByZXR1cm4gUEMu
Ci0gICAgaml0LmxvYWRQdHIoSlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3MoSlNJbnRlcmZhY2VKSVQ6
OmNhbGxGcmFtZVJlZ2lzdGVyLCBDYWxsRnJhbWU6OnJldHVyblBDT2Zmc2V0KCkpLCBleHRyYVRl
bXApOwotICAgIGppdC5zdG9yZVB0cihleHRyYVRlbXAsIE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5k
ZXgoSlNJbnRlcmZhY2VKSVQ6OnJlZ1QzLCBKU0ludGVyZmFjZUpJVDo6YXJndW1lbnRHUFIwLCBK
U0ludGVyZmFjZUpJVDo6VGltZXNFaWdodCkpOwotCi0gICAgLy8gSW5zdGFsbCB0aGUgbmV3IHJl
dHVybiBQQy4KLSAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBKU0ludGVy
ZmFjZUpJVDo6QWRkcmVzcyhKU0ludGVyZmFjZUpJVDo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENhbGxG
cmFtZTo6cmV0dXJuUENPZmZzZXQoKSkpOwotCiAjICBpZiBDUFUoWDg2XzY0KQogICAgIGppdC5w
dXNoKEpTSW50ZXJmYWNlSklUOjpyZWdUNCk7CiAjICBlbmRpZgpAQCAtNDM5LDEzICs0NDcsNiBA
QCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgYXJpdHlGaXh1cEdlbmVyYXRvCiAgICAgaml0LmFkZFB0
cihKU0ludGVyZmFjZUpJVDo6cmVnVDUsIEpTSW50ZXJmYWNlSklUOjpjYWxsRnJhbWVSZWdpc3Rl
cik7CiAgICAgaml0LmFkZFB0cihKU0ludGVyZmFjZUpJVDo6cmVnVDUsIEpTSW50ZXJmYWNlSklU
OjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAKLSAgICAvLyBTYXZlIHRoZSBvcmlnaW5hbCByZXR1
cm4gUEMuCi0gICAgaml0LmxvYWRQdHIoSlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3MoSlNJbnRlcmZh
Y2VKSVQ6OmNhbGxGcmFtZVJlZ2lzdGVyLCBDYWxsRnJhbWU6OnJldHVyblBDT2Zmc2V0KCkpLCBH
UFJJbmZvOjpyZWdUNSk7Ci0gICAgaml0LnN0b3JlUHRyKEdQUkluZm86OnJlZ1Q1LCBNYWNyb0Fz
c2VtYmxlcjo6QmFzZUluZGV4KEpTSW50ZXJmYWNlSklUOjpyZWdUMywgSlNJbnRlcmZhY2VKSVQ6
OmFyZ3VtZW50R1BSMCwgSlNJbnRlcmZhY2VKSVQ6OlRpbWVzRWlnaHQpKTsKLSAgICAKLSAgICAv
LyBJbnN0YWxsIHRoZSBuZXcgcmV0dXJuIFBDLgotICAgIGppdC5zdG9yZVB0cihHUFJJbmZvOjph
cmd1bWVudEdQUjEsIEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKEpTSW50ZXJmYWNlSklUOjpjYWxs
RnJhbWVSZWdpc3RlciwgQ2FsbEZyYW1lOjpyZXR1cm5QQ09mZnNldCgpKSk7Ci0gICAgCiAjICBp
ZiBDUFUoWDg2KQogICAgIGppdC5wdXNoKEpTSW50ZXJmYWNlSklUOjpyZWdUNCk7CiAjICBlbmRp
ZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAJKHJldmlz
aW9uIDE4OTU0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiTExJbnREYXRhLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVDb252ZW50aW9ucy5oIgor
I2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkNvZGVUeXBlLmgiCiAjaW5jbHVkZSAi
SW5zdHJ1Y3Rpb24uaCIKICNpbmNsdWRlICJKU1Njb3BlLmgiCkBAIC0xMzEsNiArMTMyLDE1IEBA
IHZvaWQgRGF0YTo6cGVyZm9ybUFzc2VydGlvbnMoVk0mIHZtKQogI2VsaWYgQ1BVKFg4Nl82NCkg
JiYgT1MoV0lORE9XUykKICAgICBBU1NFUlQobWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwg
PT0gNjQpOwogI2VuZGlmCisKKyNpZiAhRU5BQkxFKEpJVCkgfHwgVVNFKEpTVkFMVUUzMl82NCkK
KyAgICBBU1NFUlQoIUNvZGVCbG9jazo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVTcGFjZUFzVmly
dHVhbFJlZ2lzdGVycygpKTsKKyNlbGlmIChDUFUoWDg2XzY0KSAmJiAhT1MoV0lORE9XUykpICB8
fCBDUFUoQVJNNjQpCisgICAgQVNTRVJUKENvZGVCbG9jazo6bGxpbnRCYXNlbGluZUNhbGxlZVNh
dmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpID09IDMpOworI2VsaWYgKENQVShYODZfNjQpICYm
IE9TKFdJTkRPV1MpKQorICAgIEFTU0VSVChDb2RlQmxvY2s6OmxsaW50QmFzZWxpbmVDYWxsZWVT
YXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKSA9PSAzKTsKKyNlbmRpZgorICAgIAogICAgIEFT
U0VSVChTdHJpbmdUeXBlID09IDYpOwogICAgIEFTU0VSVChPYmplY3RUeXBlID09IDIxKTsKICAg
ICBBU1NFUlQoRmluYWxPYmplY3RUeXBlID09IDIyKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMTg5NTQzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDg1LDggKzQ4NSw4IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHN0YWNrX2NoZWNr
KQogCiAgICAgdm0udG9wQ2FsbEZyYW1lID0gZXhlYzsKICAgICBFcnJvckhhbmRsaW5nU2NvcGUg
ZXJyb3JTY29wZSh2bSk7Ci0gICAgQ29tbW9uU2xvd1BhdGhzOjppbnRlcnByZXRlclRocm93SW5D
YWxsZXIoZXhlYywgY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpKTsKLSAgICBwYyA9IHJl
dHVyblRvVGhyb3dGb3JUaHJvd25FeGNlcHRpb24oZXhlYyk7CisgICAgdm0udGhyb3dFeGNlcHRp
b24oZXhlYywgY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpKTsKKyAgICBwYyA9IHJldHVy
blRvVGhyb3coZXhlYyk7CiAgICAgTExJTlRfUkVUVVJOX1RXTyhwYywgZXhlYyk7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQu
YXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyMzJfNjQuYXNtCShyZXZpc2lvbiAxODk1NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkod29ya2luZyBjb3B5KQpA
QCAtMzAyLDYgKzMwMiw3IEBAIF9oYW5kbGVVbmNhdWdodEV4Y2VwdGlvbjoKICAgICBsb2FkcCBD
YWxsZWUgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQzCiAgICAgYW5kcCBNYXJrZWRCbG9ja01hc2ss
IHQzCiAgICAgbG9hZHAgTWFya2VkQmxvY2s6Om1fd2Vha1NldCArIFdlYWtTZXQ6Om1fdm1bdDNd
LCB0MworICAgIHJlc3RvcmVDYWxsZWVTYXZlc0Zyb21WTUNhbGxlZVNhdmVzQnVmZmVyKHQzLCB0
MCkKICAgICBsb2FkcCBWTTo6Y2FsbEZyYW1lRm9yVGhyb3dbdDNdLCBjZnIKIAogICAgIGxvYWRw
IENhbGxlckZyYW1lW2Nmcl0sIGNmcgpAQCAtNTkxLDcgKzU5Miw2IEBAIG1hY3JvIGZ1bmN0aW9u
QXJpdHlDaGVjayhkb25lTGFiZWwsIHNsb3cKICAgICBidHB6IHQzLCAucHJvY2VlZElubGluZQog
ICAgIAogICAgIGxvYWRwIENvbW1vblNsb3dQYXRoczo6QXJpdHlDaGVja0RhdGE6OnBhZGRlZFN0
YWNrU3BhY2VbcjFdLCBhMAotICAgIGxvYWRwIENvbW1vblNsb3dQYXRoczo6QXJpdHlDaGVja0Rh
dGE6OnJldHVyblBDW3IxXSwgYTEKICAgICBjYWxsIHQzCiAgICAgaWYgQVNTRVJUX0VOQUJMRUQK
ICAgICAgICAgbG9hZHAgUmV0dXJuUENbY2ZyXSwgdDAKQEAgLTE4NzgsNiArMTg3OCw3IEBAIF9s
bGludF9vcF9jYXRjaDoKICAgICBsb2FkcCBDYWxsZWUgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQz
CiAgICAgYW5kcCBNYXJrZWRCbG9ja01hc2ssIHQzCiAgICAgbG9hZHAgTWFya2VkQmxvY2s6Om1f
d2Vha1NldCArIFdlYWtTZXQ6Om1fdm1bdDNdLCB0MworICAgIHJlc3RvcmVDYWxsZWVTYXZlc0Zy
b21WTUNhbGxlZVNhdmVzQnVmZmVyKHQzLCB0MCkKICAgICBsb2FkcCBWTTo6Y2FsbEZyYW1lRm9y
VGhyb3dbdDNdLCBjZnIKICAgICByZXN0b3JlU3RhY2tQb2ludGVyQWZ0ZXJDYWxsKCkKIApAQCAt
MTkxNiw2ICsxOTE3LDcgQEAgX2xsaW50X3Rocm93X2Zyb21fc2xvd19wYXRoX3RyYW1wb2xpbmU6
CiAgICAgbG9hZHAgQ2FsbGVlW2Nmcl0sIHQxCiAgICAgYW5kcCBNYXJrZWRCbG9ja01hc2ssIHQx
CiAgICAgbG9hZHAgTWFya2VkQmxvY2s6Om1fd2Vha1NldCArIFdlYWtTZXQ6Om1fdm1bdDFdLCB0
MQorICAgIGNvcHlDYWxsZWVTYXZlc1RvVk1DYWxsZWVTYXZlc0J1ZmZlcih0MSwgdDIpCiAgICAg
am1wIFZNOjp0YXJnZXRNYWNoaW5lUENGb3JUaHJvd1t0MV0KIAogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQko
cmV2aXNpb24gMTg5NTQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXI2NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTIxNSw5ICsyMTUsNiBAQCBtYWNy
byBkb1ZNRW50cnkobWFrZUNhbGwpCiAgICAgZW5kCiAgICAgc3RvcmVwIGNmciwgVk06OnRvcFZN
RW50cnlGcmFtZVt2bV0KIAotICAgIG1vdmUgVGFnVHlwZU51bWJlciwgdGFnVHlwZU51bWJlcgot
ICAgIGFkZHAgVGFnQml0VHlwZU90aGVyLCB0YWdUeXBlTnVtYmVyLCB0YWdNYXNrCi0KICAgICBj
aGVja1N0YWNrUG9pbnRlckFsaWdubWVudChleHRyYVRlbXBSZWcsIDB4YmFkMGRjMDIpCiAKICAg
ICBtYWtlQ2FsbChlbnRyeSwgdDMpCkBAIC0yNzcsNiArMjc0LDcgQEAgX2hhbmRsZVVuY2F1Z2h0
RXhjZXB0aW9uOgogICAgIGxvYWRwIENhbGxlZVtjZnJdLCB0MwogICAgIGFuZHAgTWFya2VkQmxv
Y2tNYXNrLCB0MwogICAgIGxvYWRwIE1hcmtlZEJsb2NrOjptX3dlYWtTZXQgKyBXZWFrU2V0Ojpt
X3ZtW3QzXSwgdDMKKyAgICByZXN0b3JlQ2FsbGVlU2F2ZXNGcm9tVk1DYWxsZWVTYXZlc0J1ZmZl
cih0MywgdDApCiAgICAgbG9hZHAgVk06OmNhbGxGcmFtZUZvclRocm93W3QzXSwgY2ZyCiAKICAg
ICBsb2FkcCBDYWxsZXJGcmFtZVtjZnJdLCBjZnIKQEAgLTUwOSwyMCArNTA3LDYgQEAgbWFjcm8g
ZnVuY3Rpb25Bcml0eUNoZWNrKGRvbmVMYWJlbCwgc2xvdwogICAgIGptcCBfbGxpbnRfdGhyb3df
ZnJvbV9zbG93X3BhdGhfdHJhbXBvbGluZQogCiAubm9FcnJvcjoKLSAgICAjIHIxIHBvaW50cyB0
byBBcml0eUNoZWNrRGF0YS4KLSAgICBsb2FkcCBDb21tb25TbG93UGF0aHM6OkFyaXR5Q2hlY2tE
YXRhOjp0aHVua1RvQ2FsbFtyMV0sIHQzCi0gICAgYnRweiB0MywgLnByb2NlZWRJbmxpbmUKLSAg
ICAKLSAgICBsb2FkcCBDb21tb25TbG93UGF0aHM6OkFyaXR5Q2hlY2tEYXRhOjpwYWRkZWRTdGFj
a1NwYWNlW3IxXSwgYTAKLSAgICBsb2FkcCBDb21tb25TbG93UGF0aHM6OkFyaXR5Q2hlY2tEYXRh
OjpyZXR1cm5QQ1tyMV0sIGExCi0gICAgY2FsbCB0MwotICAgIGlmIEFTU0VSVF9FTkFCTEVECi0g
ICAgICAgIGxvYWRwIFJldHVyblBDW2Nmcl0sIHQwCi0gICAgICAgIGxvYWRwIFt0MF0sIHQwCi0g
ICAgZW5kCi0gICAgam1wIC5jb250aW51ZQotCi0ucHJvY2VlZElubGluZToKICAgICBsb2FkaSBD
b21tb25TbG93UGF0aHM6OkFyaXR5Q2hlY2tEYXRhOjpwYWRkZWRTdGFja1NwYWNlW3IxXSwgdDEK
ICAgICBidGl6IHQxLCAuY29udGludWUKIApAQCAtNTMwLDggKzUxNCw5IEBAIG1hY3JvIGZ1bmN0
aW9uQXJpdHlDaGVjayhkb25lTGFiZWwsIHNsb3cKICAgICBsc2hpZnRwIDEsIHQxCiAgICAgbmVn
cSB0MQogICAgIG1vdmUgY2ZyLCB0MworICAgIHN1YnAgQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFs
UmVnaXN0ZXJzICogOCwgdDMKICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0ICsgQXJndW1lbnRDb3Vu
dFtjZnJdLCB0MgotICAgIGFkZGkgQ2FsbEZyYW1lSGVhZGVyU2xvdHMsIHQyCisgICAgYWRkaSBD
YWxsRnJhbWVIZWFkZXJTbG90cyArIENhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycywg
dDIKIC5jb3B5TG9vcDoKICAgICBsb2FkcSBbdDNdLCB0MAogICAgIHN0b3JlcSB0MCwgW3QzLCB0
MSwgOF0KQEAgLTU3NCwxMiArNTU5LDE1IEBAIF9sbGludF9vcF9lbnRlcjoKICAgICBjaGVja1N0
YWNrUG9pbnRlckFsaWdubWVudCh0MiwgMHhkZWFkMDBlMSkKICAgICBsb2FkcCBDb2RlQmxvY2tb
Y2ZyXSwgdDIgICAgICAgICAgICAgICAgLy8gdDI8Q29kZUJsb2NrPiA9IGNmci5Db2RlQmxvY2sK
ICAgICBsb2FkaSBDb2RlQmxvY2s6Om1fbnVtVmFyc1t0Ml0sIHQyICAgICAgLy8gdDI8c2l6ZV90
PiA9IHQyPENvZGVCbG9jaz4ubV9udW1WYXJzCisgICAgc3VicSBDYWxsZWVTYXZlU3BhY2VBc1Zp
cnR1YWxSZWdpc3RlcnMsIHQyCisgICAgbW92ZSBjZnIsIHQxCisgICAgc3VicSBDYWxsZWVTYXZl
U3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMgKiA4LCB0MQogICAgIGJ0aXogdDIsIC5vcEVudGVyRG9u
ZQogICAgIG1vdmUgVmFsdWVVbmRlZmluZWQsIHQwCiAgICAgbmVnaSB0MgogICAgIHN4aTJxIHQy
LCB0MgogLm9wRW50ZXJMb29wOgotICAgIHN0b3JlcSB0MCwgW2NmciwgdDIsIDhdCisgICAgc3Rv
cmVxIHQwLCBbdDEsIHQyLCA4XQogICAgIGFkZHEgMSwgdDIKICAgICBidHFueiB0MiwgLm9wRW50
ZXJMb29wCiAub3BFbnRlckRvbmU6CkBAIC0xNzYxLDExICsxNzQ5LDYgQEAgX2xsaW50X29wX3Rv
X3ByaW1pdGl2ZToKIAogCiBfbGxpbnRfb3BfY2F0Y2g6Ci0gICAgIyBHb3R0YSByZXN0b3JlIHRo
ZSB0YWcgcmVnaXN0ZXJzLiBXZSBjb3VsZCBiZSB0aHJvd2luZyBmcm9tIEZUTCwgd2hpY2ggbWF5
Ci0gICAgIyBjbG9iYmVyIHRoZW0uCi0gICAgbW92ZSBUYWdUeXBlTnVtYmVyLCB0YWdUeXBlTnVt
YmVyCi0gICAgbW92ZSBUYWdNYXNrLCB0YWdNYXNrCi0gICAgCiAgICAgIyBUaGlzIGlzIHdoZXJl
IHdlIGVuZCB1cCBmcm9tIHRoZSBKSVQncyB0aHJvdyB0cmFtcG9saW5lIChiZWNhdXNlIHRoZQog
ICAgICMgbWFjaGluZSBjb2RlIHJldHVybiBhZGRyZXNzIHdpbGwgYmUgc2V0IHRvIF9sbGludF9v
cF9jYXRjaCksIGFuZCBmcm9tCiAgICAgIyB0aGUgaW50ZXJwcmV0ZXIncyB0aHJvdyB0cmFtcG9s
aW5lIChzZWUgX2xsaW50X3Rocm93X3RyYW1wb2xpbmUpLgpAQCAtMTc3NCw2ICsxNzU3LDcgQEAg
X2xsaW50X29wX2NhdGNoOgogICAgIGxvYWRwIENhbGxlZVtjZnJdLCB0MwogICAgIGFuZHAgTWFy
a2VkQmxvY2tNYXNrLCB0MwogICAgIGxvYWRwIE1hcmtlZEJsb2NrOjptX3dlYWtTZXQgKyBXZWFr
U2V0OjptX3ZtW3QzXSwgdDMKKyAgICByZXN0b3JlQ2FsbGVlU2F2ZXNGcm9tVk1DYWxsZWVTYXZl
c0J1ZmZlcih0MywgdDApCiAgICAgbG9hZHAgVk06OmNhbGxGcmFtZUZvclRocm93W3QzXSwgY2Zy
CiAgICAgcmVzdG9yZVN0YWNrUG9pbnRlckFmdGVyQ2FsbCgpCiAKQEAgLTE4MDYsNiArMTc5MCwx
MSBAQCBfbGxpbnRfb3BfZW5kOgogCiAKIF9sbGludF90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFt
cG9saW5lOgorICAgIGxvYWRwIENhbGxlZVtjZnJdLCB0MQorICAgIGFuZHAgTWFya2VkQmxvY2tN
YXNrLCB0MQorICAgIGxvYWRwIE1hcmtlZEJsb2NrOjptX3dlYWtTZXQgKyBXZWFrU2V0OjptX3Zt
W3QxXSwgdDEKKyAgICBjb3B5Q2FsbGVlU2F2ZXNUb1ZNQ2FsbGVlU2F2ZXNCdWZmZXIodDEsIHQy
KQorCiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfaGFuZGxlX2V4Y2VwdGlvbikK
IAogICAgICMgV2hlbiB0aHJvd2luZyBmcm9tIHRoZSBpbnRlcnByZXRlciAoaS5lLiB0aHJvd2lu
ZyBmcm9tIExMSW50U2xvd1BhdGhzKSwgc28KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHJldmlzaW9uIDE4OTU0MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQko
d29ya2luZyBjb3B5KQpAQCAtMTA3LDEwICsxMDcsOSBAQAogIyAgLSB0NCBhbmQgdDUgYXJlIG5l
dmVyIGFyZ3VtZW50IHJlZ2lzdGVycywgdDMgY2FuIG9ubHkgYmUgYTMsIHQxIGNhbiBvbmx5IGJl
CiAjICBhMTsgYnV0IHQwIGFuZCB0MiBjYW4gYmUgZWl0aGVyIGEwIG9yIGEyLgogIwotIyAgLSBP
biA2NCBiaXRzLCBjc3IwLCBjc3IxLCBjc3IyIGFuZCBvcHRpb25hbGx5IGNzcjMsIGNzcjQsIGNz
cjUgYW5kIGNzcjYKLSMgIGFyZSBhdmFpbGFibGUgYXMgY2FsbGVlLXNhdmUgcmVnaXN0ZXJzLgot
IyAgY3NyMCBpcyB1c2VkIHRvIHN0b3JlIHRoZSBQQyBiYXNlLCB3aGlsZSB0aGUgbGFzdCB0d28g
Y3NyIHJlZ2lzdGVycyBhcmUgdXNlZAotIyAgdG8gc3RvcmUgc3BlY2lhbCB0YWcgdmFsdWVzLiBE
b24ndCB1c2UgdGhlbSBmb3IgYW55dGhpbmcgZWxzZS4KKyMgIC0gT24gNjQgYml0cywgdGhlcmUg
YXJlIGNhbGxlZS1zYXZlIHJlZ2lzdGVycyBuYW1lZCBjc3IwLCBjc3IxLCAuLi4gY3NyTi4KKyMg
IFRoZSBsYXN0IHRocmVlIGNzciByZWdpc3RlcnMgYXJlIHVzZWQgdXNlZCB0byBzdG9yZSB0aGUg
UEMgYmFzZSBhbmQKKyMgIHR3byBzcGVjaWFsIHRhZyB2YWx1ZXMuIERvbid0IHVzZSB0aGVtIGZv
ciBhbnl0aGluZyBlbHNlLgogIwogIyBBZGRpdGlvbmFsIHBsYXRmb3JtLXNwZWNpZmljIGRldGFp
bHMgKHlvdSBzaG91bGRuJ3QgcmVseSBvbiB0aGlzIHJlbWFpbmluZwogIyB0cnVlKToKQEAgLTIx
OCw2ICsyMTcsMTUgQEAgZWxzaWYgWDg2XzY0X1dJTgogICAgIGNvbnN0IG1heEZyYW1lRXh0ZW50
Rm9yU2xvd1BhdGhDYWxsID0gNjQKIGVuZAogCitpZiBYODZfNjQgb3IgWDg2XzY0X1dJTiBvciBB
Uk02NAorICAgIGNvbnN0IENhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycyA9IDMKK2Vs
c2UKKyAgICBjb25zdCBDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMgPSAwCitlbmQK
KworY29uc3QgQ2FsbGVlU2F2ZVNwYWNlU3RhY2tBbGlnbmVkID0gKENhbGxlZVNhdmVTcGFjZUFz
VmlydHVhbFJlZ2lzdGVycyAqIFNsb3RTaXplICsgU3RhY2tBbGlnbm1lbnQgLSAxKSAmIH5TdGFj
a0FsaWdubWVudE1hc2sKKworCiAjIFdhdGNocG9pbnQgc3RhdGVzCiBjb25zdCBDbGVhcldhdGNo
cG9pbnQgPSAwCiBjb25zdCBJc1dhdGNoZWQgPSAxCkBAIC0yMzEsMTcgKzIzOSwyMCBAQCBpZiBK
U1ZBTFVFNjQKICAgICAjIC0gQyBjYWxscyBhcmUgc3RpbGwgZ2l2ZW4gdGhlIEluc3RydWN0aW9u
KiByYXRoZXIgdGhhbiB0aGUgUEMgaW5kZXguCiAgICAgIyAgIFRoaXMgcmVxdWlyZXMgYW4gYWRk
IGJlZm9yZSB0aGUgY2FsbCwgYW5kIGEgc3ViIGFmdGVyLgogICAgIGNvbnN0IFBDID0gdDQKLSAg
ICBjb25zdCBQQiA9IGNzcjAKICAgICBpZiBBUk02NAotICAgICAgICBjb25zdCB0YWdUeXBlTnVt
YmVyID0gY3NyMQotICAgICAgICBjb25zdCB0YWdNYXNrID0gY3NyMgorICAgICAgICBjb25zdCBQ
QiA9IGNzcjcKKyAgICAgICAgY29uc3QgdGFnVHlwZU51bWJlciA9IGNzcjgKKyAgICAgICAgY29u
c3QgdGFnTWFzayA9IGNzcjkKICAgICBlbHNpZiBYODZfNjQKKyAgICAgICAgY29uc3QgUEIgPSBj
c3IyCiAgICAgICAgIGNvbnN0IHRhZ1R5cGVOdW1iZXIgPSBjc3IzCiAgICAgICAgIGNvbnN0IHRh
Z01hc2sgPSBjc3I0CiAgICAgZWxzaWYgWDg2XzY0X1dJTgorICAgICAgICBjb25zdCBQQiA9IGNz
cjQKICAgICAgICAgY29uc3QgdGFnVHlwZU51bWJlciA9IGNzcjUKICAgICAgICAgY29uc3QgdGFn
TWFzayA9IGNzcjYKICAgICBlbHNpZiBDX0xPT1AKKyAgICAgICAgY29uc3QgUEIgPSBjc3IwCiAg
ICAgICAgIGNvbnN0IHRhZ1R5cGVOdW1iZXIgPSBjc3IxCiAgICAgICAgIGNvbnN0IHRhZ01hc2sg
PSBjc3IyCiAgICAgZW5kCkBAIC0zOTgsMTggKzQwOSwxNCBAQCBtYWNybyBjaGVja1N0YWNrUG9p
bnRlckFsaWdubWVudCh0ZW1wUmVnCiAgICAgZW5kCiBlbmQKIAotaWYgQ19MT09QCitpZiBDX0xP
T1Agb3IgQVJNNjQgb3IgWDg2XzY0IG9yIFg4Nl82NF9XSU4KICAgICBjb25zdCBDYWxsZWVTYXZl
UmVnaXN0ZXJDb3VudCA9IDAKIGVsc2lmIEFSTSBvciBBUk12N19UUkFESVRJT05BTCBvciBBUk12
NwogICAgIGNvbnN0IENhbGxlZVNhdmVSZWdpc3RlckNvdW50ID0gNwotZWxzaWYgQVJNNjQKLSAg
ICBjb25zdCBDYWxsZWVTYXZlUmVnaXN0ZXJDb3VudCA9IDEwCi1lbHNpZiBTSDQgb3IgWDg2XzY0
IG9yIE1JUFMKK2Vsc2lmIFNINCBvciBNSVBTCiAgICAgY29uc3QgQ2FsbGVlU2F2ZVJlZ2lzdGVy
Q291bnQgPSA1CiBlbHNpZiBYODYgb3IgWDg2X1dJTgogICAgIGNvbnN0IENhbGxlZVNhdmVSZWdp
c3RlckNvdW50ID0gMwotZWxzaWYgWDg2XzY0X1dJTgotICAgIGNvbnN0IENhbGxlZVNhdmVSZWdp
c3RlckNvdW50ID0gNwogZW5kCiAKIGNvbnN0IENhbGxlZVJlZ2lzdGVyU2F2ZVNpemUgPSBDYWxs
ZWVTYXZlUmVnaXN0ZXJDb3VudCAqIFB0clNpemUKQEAgLTQxOSwxNyArNDI2LDExIEBAIGNvbnN0
IENhbGxlZVJlZ2lzdGVyU2F2ZVNpemUgPSBDYWxsZWVTYXYKIGNvbnN0IFZNRW50cnlUb3RhbEZy
YW1lU2l6ZSA9IChDYWxsZWVSZWdpc3RlclNhdmVTaXplICsgc2l6ZW9mIFZNRW50cnlSZWNvcmQg
KyBTdGFja0FsaWdubWVudCAtIDEpICYgflN0YWNrQWxpZ25tZW50TWFzawogCiBtYWNybyBwdXNo
Q2FsbGVlU2F2ZXMoKQotICAgIGlmIENfTE9PUAorICAgIGlmIENfTE9PUCBvciBBUk02NCBvciBY
ODZfNjQgb3IgWDg2XzY0X1dJTgogICAgIGVsc2lmIEFSTSBvciBBUk12N19UUkFESVRJT05BTAog
ICAgICAgICBlbWl0ICJwdXNoIHtyNC1yMTB9IgogICAgIGVsc2lmIEFSTXY3CiAgICAgICAgIGVt
aXQgInB1c2gge3I0LXI2LCByOC1yMTF9IgotICAgIGVsc2lmIEFSTTY0Ci0gICAgICAgIGVtaXQg
InN0cCB4MjAsIHgxOSwgW3NwLCAjLTE2XSEiCi0gICAgICAgIGVtaXQgInN0cCB4MjIsIHgyMSwg
W3NwLCAjLTE2XSEiCi0gICAgICAgIGVtaXQgInN0cCB4MjQsIHgyMywgW3NwLCAjLTE2XSEiCi0g
ICAgICAgIGVtaXQgInN0cCB4MjYsIHgyNSwgW3NwLCAjLTE2XSEiCi0gICAgICAgIGVtaXQgInN0
cCB4MjgsIHgyNywgW3NwLCAjLTE2XSEiCiAgICAgZWxzaWYgTUlQUwogICAgICAgICBlbWl0ICJh
ZGRpdSAkc3AsICRzcCwgLTIwIgogICAgICAgICBlbWl0ICJzdyAkMjAsIDE2KCRzcCkiCkBAIC00
NTEsMzUgKzQ1MiwxNSBAQCBtYWNybyBwdXNoQ2FsbGVlU2F2ZXMoKQogICAgICAgICBlbWl0ICJw
dXNoIGVzaSIKICAgICAgICAgZW1pdCAicHVzaCBlZGkiCiAgICAgICAgIGVtaXQgInB1c2ggZWJ4
IgotICAgIGVsc2lmIFg4Nl82NAotICAgICAgICBlbWl0ICJwdXNoICVyMTIiCi0gICAgICAgIGVt
aXQgInB1c2ggJXIxMyIKLSAgICAgICAgZW1pdCAicHVzaCAlcjE0IgotICAgICAgICBlbWl0ICJw
dXNoICVyMTUiCi0gICAgICAgIGVtaXQgInB1c2ggJXJieCIKLSAgICBlbHNpZiBYODZfNjRfV0lO
Ci0gICAgICAgIGVtaXQgInB1c2ggcjEyIgotICAgICAgICBlbWl0ICJwdXNoIHIxMyIKLSAgICAg
ICAgZW1pdCAicHVzaCByMTQiCi0gICAgICAgIGVtaXQgInB1c2ggcjE1IgotICAgICAgICBlbWl0
ICJwdXNoIHJieCIKLSAgICAgICAgZW1pdCAicHVzaCByZGkiCi0gICAgICAgIGVtaXQgInB1c2gg
cnNpIgogICAgIGVuZAogZW5kCiAKIG1hY3JvIHBvcENhbGxlZVNhdmVzKCkKLSAgICBpZiBDX0xP
T1AKKyAgICBpZiBDX0xPT1Agb3IgQVJNNjQgb3IgWDg2XzY0IG9yIFg4Nl82NF9XSU4KICAgICBl
bHNpZiBBUk0gb3IgQVJNdjdfVFJBRElUSU9OQUwKICAgICAgICAgZW1pdCAicG9wIHtyNC1yMTB9
IgogICAgIGVsc2lmIEFSTXY3CiAgICAgICAgIGVtaXQgInBvcCB7cjQtcjYsIHI4LXIxMX0iCi0g
ICAgZWxzaWYgQVJNNjQKLSAgICAgICAgZW1pdCAibGRwIHgyOCwgeDI3LCBbc3BdLCAjMTYiCi0g
ICAgICAgIGVtaXQgImxkcCB4MjYsIHgyNSwgW3NwXSwgIzE2IgotICAgICAgICBlbWl0ICJsZHAg
eDI0LCB4MjMsIFtzcF0sICMxNiIKLSAgICAgICAgZW1pdCAibGRwIHgyMiwgeDIxLCBbc3BdLCAj
MTYiCi0gICAgICAgIGVtaXQgImxkcCB4MjAsIHgxOSwgW3NwXSwgIzE2IgogICAgIGVsc2lmIE1J
UFMKICAgICAgICAgZW1pdCAibHcgJDE2LCAwKCRzcCkiCiAgICAgICAgIGVtaXQgImx3ICQxNywg
NCgkc3ApIgpAQCAtNTAxLDIwICs0ODIsNiBAQCBtYWNybyBwb3BDYWxsZWVTYXZlcygpCiAgICAg
ICAgIGVtaXQgInBvcCBlYngiCiAgICAgICAgIGVtaXQgInBvcCBlZGkiCiAgICAgICAgIGVtaXQg
InBvcCBlc2kiCi0gICAgZWxzaWYgWDg2XzY0Ci0gICAgICAgIGVtaXQgInBvcCAlcmJ4IgotICAg
ICAgICBlbWl0ICJwb3AgJXIxNSIKLSAgICAgICAgZW1pdCAicG9wICVyMTQiCi0gICAgICAgIGVt
aXQgInBvcCAlcjEzIgotICAgICAgICBlbWl0ICJwb3AgJXIxMiIKLSAgICBlbHNpZiBYODZfNjRf
V0lOCi0gICAgICAgIGVtaXQgInBvcCByc2kiCi0gICAgICAgIGVtaXQgInBvcCByZGkiCi0gICAg
ICAgIGVtaXQgInBvcCByYngiCi0gICAgICAgIGVtaXQgInBvcCByMTUiCi0gICAgICAgIGVtaXQg
InBvcCByMTQiCi0gICAgICAgIGVtaXQgInBvcCByMTMiCi0gICAgICAgIGVtaXQgInBvcCByMTIi
CiAgICAgZW5kCiBlbmQKIApAQCAtNTQ0LDYgKzUxMSwxMzEgQEAgbWFjcm8gcmVzdG9yZUNhbGxl
clBDQW5kQ0ZSKCkKICAgICBlbmQKIGVuZAogCittYWNybyBwcmVzZXJ2ZUNhbGxlZVNhdmVzVXNl
ZEJ5TExJbnQoKQorICAgIHN1YnAgQ2FsbGVlU2F2ZVNwYWNlU3RhY2tBbGlnbmVkLCBzcAorICAg
IGlmIENfTE9PUAorICAgIGVsc2lmIEFSTSBvciBBUk12N19UUkFESVRJT05BTAorICAgIGVsc2lm
IEFSTXY3CisgICAgZWxzaWYgQVJNNjQKKyAgICAgICAgZW1pdCAic3RwIHgyNywgeDI4LCBbZnAs
ICMtMTZdIgorICAgICAgICBlbWl0ICJzdHAgeHpyLCB4MjYsIFtmcCwgIy0zMl0iCisgICAgZWxz
aWYgTUlQUworICAgIGVsc2lmIFNINAorICAgIGVsc2lmIFg4NgorICAgIGVsc2lmIFg4Nl9XSU4K
KyAgICBlbHNpZiBYODZfNjQKKyAgICAgICAgc3RvcmVwIGNzcjQsIC04W2Nmcl0KKyAgICAgICAg
c3RvcmVwIGNzcjMsIC0xNltjZnJdCisgICAgICAgIHN0b3JlcCBjc3IyLCAtMjRbY2ZyXQorICAg
IGVsc2lmIFg4Nl82NF9XSU4KKyAgICAgICAgc3RvcmVwIGNzcjYsIC04W2Nmcl0KKyAgICAgICAg
c3RvcmVwIGNzcjUsIC0xNltjZnJdCisgICAgICAgIHN0b3JlcCBjc3I0LCAtMjRbY2ZyXQorICAg
IGVuZAorZW5kCisKK21hY3JvIHJlc3RvcmVDYWxsZWVTYXZlc1VzZWRCeUxMSW50KCkKKyAgICBp
ZiBDX0xPT1AKKyAgICBlbHNpZiBBUk0gb3IgQVJNdjdfVFJBRElUSU9OQUwKKyAgICBlbHNpZiBB
Uk12NworICAgIGVsc2lmIEFSTTY0CisgICAgICAgIGVtaXQgImxkcCB4enIsIHgyNiwgW2ZwLCAj
LTMyXSIKKyAgICAgICAgZW1pdCAibGRwIHgyNywgeDI4LCBbZnAsICMtMTZdIgorICAgIGVsc2lm
IE1JUFMKKyAgICBlbHNpZiBTSDQKKyAgICBlbHNpZiBYODYKKyAgICBlbHNpZiBYODZfV0lOCisg
ICAgZWxzaWYgWDg2XzY0CisgICAgICAgIGxvYWRwIC0yNFtjZnJdLCBjc3IyCisgICAgICAgIGxv
YWRwIC0xNltjZnJdLCBjc3IzCisgICAgICAgIGxvYWRwIC04W2Nmcl0sIGNzcjQKKyAgICBlbHNp
ZiBYODZfNjRfV0lOCisgICAgICAgIGxvYWRwIC0yNFtjZnJdLCBjc3I0CisgICAgICAgIGxvYWRw
IC0xNltjZnJdLCBjc3I1CisgICAgICAgIGxvYWRwIC04W2Nmcl0sIGNzcjYKKyAgICBlbmQKK2Vu
ZAorCittYWNybyBjb3B5Q2FsbGVlU2F2ZXNUb1ZNQ2FsbGVlU2F2ZXNCdWZmZXIodm0sIHRlbXAp
CisgICAgaWYgQVJNNjQgb3IgWDg2XzY0IG9yIFg4Nl82NF9XSU4KKyAgICAgICAgbGVhcCBWTTo6
Y2FsbGVlU2F2ZVJlZ2lzdGVyc0J1ZmZlclt2bV0sIHRlbXAKKyAgICAgICAgaWYgQVJNNjQKKyAg
ICAgICAgICAgIHN0b3JlcCBjc3IwLCBbdGVtcF0KKyAgICAgICAgICAgIHN0b3JlcCBjc3IxLCA4
W3RlbXBdCisgICAgICAgICAgICBzdG9yZXAgY3NyMiwgMTZbdGVtcF0KKyAgICAgICAgICAgIHN0
b3JlcCBjc3IzLCAyNFt0ZW1wXQorICAgICAgICAgICAgc3RvcmVwIGNzcjQsIDMyW3RlbXBdCisg
ICAgICAgICAgICBzdG9yZXAgY3NyNSwgNDBbdGVtcF0KKyAgICAgICAgICAgIHN0b3JlcCBjc3I2
LCA0OFt0ZW1wXQorICAgICAgICAgICAgc3RvcmVwIGNzcjcsIDU2W3RlbXBdCisgICAgICAgICAg
ICBzdG9yZXAgY3NyOCwgNjRbdGVtcF0KKyAgICAgICAgICAgIHN0b3JlcCBjc3I5LCA3Mlt0ZW1w
XQorICAgICAgICAgICAgc3RvcmVkIGNzZnIwLCA4MFt0ZW1wXQorICAgICAgICAgICAgc3RvcmVk
IGNzZnIxLCA4OFt0ZW1wXQorICAgICAgICAgICAgc3RvcmVkIGNzZnIyLCA5Nlt0ZW1wXQorICAg
ICAgICAgICAgc3RvcmVkIGNzZnIzLCAxMDRbdGVtcF0KKyAgICAgICAgICAgIHN0b3JlZCBjc2Zy
NCwgMTEyW3RlbXBdCisgICAgICAgICAgICBzdG9yZWQgY3NmcjUsIDEyMFt0ZW1wXQorICAgICAg
ICAgICAgc3RvcmVkIGNzZnI2LCAxMjhbdGVtcF0KKyAgICAgICAgICAgIHN0b3JlZCBjc2ZyNywg
MTM2W3RlbXBdCisgICAgICAgIGVsc2lmIFg4Nl82NAorICAgICAgICAgICAgc3RvcmVwIGNzcjAs
IFt0ZW1wXQorICAgICAgICAgICAgc3RvcmVwIGNzcjEsIDhbdGVtcF0KKyAgICAgICAgICAgIHN0
b3JlcCBjc3IyLCAxNlt0ZW1wXQorICAgICAgICAgICAgc3RvcmVwIGNzcjMsIDI0W3RlbXBdCisg
ICAgICAgICAgICBzdG9yZXAgY3NyNCwgMzJbdGVtcF0KKyAgICAgICAgZWxzaWYgWDg2XzY0X1dJ
TgorICAgICAgICAgICAgc3RvcmVwIGNzcjAsIFt0ZW1wXQorICAgICAgICAgICAgc3RvcmVwIGNz
cjEsIDhbdGVtcF0KKyAgICAgICAgICAgIHN0b3JlcCBjc3IyLCAxNlt0ZW1wXQorICAgICAgICAg
ICAgc3RvcmVwIGNzcjMsIDI0W3RlbXBdCisgICAgICAgICAgICBzdG9yZXAgY3NyNCwgMzJbdGVt
cF0KKyAgICAgICAgICAgIHN0b3JlcCBjc3I1LCA0MFt0ZW1wXQorICAgICAgICAgICAgc3RvcmVw
IGNzcjYsIDQ4W3RlbXBdCisgICAgICAgIGVuZAorICAgIGVuZAorZW5kCisKK21hY3JvIHJlc3Rv
cmVDYWxsZWVTYXZlc0Zyb21WTUNhbGxlZVNhdmVzQnVmZmVyKHZtLCB0ZW1wKQorICAgIGlmIEFS
TTY0IG9yIFg4Nl82NCBvciBYODZfNjRfV0lOCisgICAgICAgIGxlYXAgVk06OmNhbGxlZVNhdmVS
ZWdpc3RlcnNCdWZmZXJbdm1dLCB0ZW1wCisgICAgICAgIGlmIEFSTTY0CisgICAgICAgICAgICBs
b2FkcCBbdGVtcF0sIGNzcjAKKyAgICAgICAgICAgIGxvYWRwIDhbdGVtcF0sIGNzcjEKKyAgICAg
ICAgICAgIGxvYWRwIDE2W3RlbXBdLCBjc3IyCisgICAgICAgICAgICBsb2FkcCAyNFt0ZW1wXSwg
Y3NyMworICAgICAgICAgICAgbG9hZHAgMzJbdGVtcF0sIGNzcjQKKyAgICAgICAgICAgIGxvYWRw
IDQwW3RlbXBdLCBjc3I1CisgICAgICAgICAgICBsb2FkcCA0OFt0ZW1wXSwgY3NyNgorICAgICAg
ICAgICAgbG9hZHAgNTZbdGVtcF0sIGNzcjcKKyAgICAgICAgICAgIGxvYWRwIDY0W3RlbXBdLCBj
c3I4CisgICAgICAgICAgICBsb2FkcCA3Mlt0ZW1wXSwgY3NyOQorICAgICAgICAgICAgbG9hZGQg
ODBbdGVtcF0sIGNzZnIwCisgICAgICAgICAgICBsb2FkZCA4OFt0ZW1wXSwgY3NmcjEKKyAgICAg
ICAgICAgIGxvYWRkIDk2W3RlbXBdLCBjc2ZyMgorICAgICAgICAgICAgbG9hZGQgMTA0W3RlbXBd
LCBjc2ZyMworICAgICAgICAgICAgbG9hZGQgMTEyW3RlbXBdLCBjc2ZyNAorICAgICAgICAgICAg
bG9hZGQgMTIwW3RlbXBdLCBjc2ZyNQorICAgICAgICAgICAgbG9hZGQgMTI4W3RlbXBdLCBjc2Zy
NgorICAgICAgICAgICAgbG9hZGQgMTM2W3RlbXBdLCBjc2ZyNworICAgICAgICBlbHNpZiBYODZf
NjQKKyAgICAgICAgICAgIGxvYWRwIFt0ZW1wXSwgY3NyMAorICAgICAgICAgICAgbG9hZHAgOFt0
ZW1wXSwgY3NyMQorICAgICAgICAgICAgbG9hZHAgMTZbdGVtcF0sIGNzcjIKKyAgICAgICAgICAg
IGxvYWRwIDI0W3RlbXBdLCBjc3IzCisgICAgICAgICAgICBsb2FkcCAzMlt0ZW1wXSwgY3NyNAor
ICAgICAgICBlbHNpZiBYODZfNjRfV0lOCisgICAgICAgICAgICBsb2FkcCBbdGVtcF0sIGNzcjAK
KyAgICAgICAgICAgIGxvYWRwIDhbdGVtcF0sIGNzcjEKKyAgICAgICAgICAgIGxvYWRwIDE2W3Rl
bXBdLCBjc3IyCisgICAgICAgICAgICBsb2FkcCAyNFt0ZW1wXSwgY3NyMworICAgICAgICAgICAg
bG9hZHAgMzJbdGVtcF0sIGNzcjQKKyAgICAgICAgICAgIGxvYWRwIDQwW3RlbXBdLCBjc3I1Cisg
ICAgICAgICAgICBsb2FkcCA0OFt0ZW1wXSwgY3NyNgorICAgICAgICBlbmQKKyAgICBlbmQKK2Vu
ZAorCiBtYWNybyBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwoZGVzdGluYXRpb25SZWdp
c3RlcikKICAgICBpZiBDX0xPT1Agb3IgQVJNIG9yIEFSTXY3IG9yIEFSTXY3X1RSQURJVElPTkFM
IG9yIEFSTTY0IG9yIE1JUFMgb3IgU0g0CiAgICAgICAgICMgSW4gQ19MT09QIGNhc2UsIHdlJ3Jl
IG9ubHkgcHJlc2VydmluZyB0aGUgYnl0ZWNvZGUgdlBDLgpAQCAtNTU1LDE3ICs2NDcsNiBAQCBt
YWNybyBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwoZGVzCiAgICAgZW5kCiBlbmQKIAot
bWFjcm8gcmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4oc291cmNlUmVnaXN0ZXIpCi0g
ICAgaWYgQ19MT09QIG9yIEFSTSBvciBBUk12NyBvciBBUk12N19UUkFESVRJT05BTCBvciBBUk02
NCBvciBNSVBTIG9yIFNINAotICAgICAgICAjIEluIENfTE9PUCBjYXNlLCB3ZSdyZSBvbmx5IHJl
c3RvcmluZyB0aGUgYnl0ZWNvZGUgdlBDLgotICAgICAgICBtb3ZlIHNvdXJjZVJlZ2lzdGVyLCBs
cgotICAgIGVsc2lmIFg4NiBvciBYODZfV0lOIG9yIFg4Nl82NCBvciBYODZfNjRfV0lOCi0gICAg
ICAgIHB1c2ggc291cmNlUmVnaXN0ZXIKLSAgICBlbHNlCi0gICAgICAgIGVycm9yCi0gICAgZW5k
Ci1lbmQKLQogbWFjcm8gZnVuY3Rpb25Qcm9sb2d1ZSgpCiAgICAgaWYgWDg2IG9yIFg4Nl9XSU4g
b3IgWDg2XzY0IG9yIFg4Nl82NF9XSU4KICAgICAgICAgcHVzaCBjZnIKQEAgLTc2Myw2ICs4NDQs
OCBAQCBtYWNybyBwcm9sb2d1ZShjb2RlQmxvY2tHZXR0ZXIsIGNvZGVCbG9jCiAKICAgICBjb2Rl
QmxvY2tTZXR0ZXIodDEpCiAKKyAgICBwcmVzZXJ2ZUNhbGxlZVNhdmVzVXNlZEJ5TExJbnQoKQor
CiAgICAgIyBTZXQgdXAgdGhlIFBDLgogICAgIGlmIEpTVkFMVUU2NAogICAgICAgICBsb2FkcCBD
b2RlQmxvY2s6Om1faW5zdHJ1Y3Rpb25zW3QxXSwgUEIKQEAgLTc3OCw3ICs4NjEsOCBAQCBtYWNy
byBwcm9sb2d1ZShjb2RlQmxvY2tHZXR0ZXIsIGNvZGVCbG9jCiAgICAgYnBiZXEgVk06Om1fanNT
dGFja0xpbWl0W3QyXSwgdDAsIC5zdGFja0hlaWdodE9LCiAKICAgICAjIFN0YWNrIGhlaWdodCBj
aGVjayBmYWlsZWQgLSBuZWVkIHRvIGNhbGwgYSBzbG93X3BhdGguCi0gICAgc3VicCBtYXhGcmFt
ZUV4dGVudEZvclNsb3dQYXRoQ2FsbCwgc3AgIyBTZXQgdXAgdGVtcG9yYXJ5IHN0YWNrIHBvaW50
ZXIgZm9yIGNhbGwKKyAgICAjIFNldCB1cCB0ZW1wb3Jhcnkgc3RhY2sgcG9pbnRlciBmb3IgY2Fs
bCBpbmNsdWRpbmcgY2FsbGVlIHNhdmVzCisgICAgc3VicCBtYXhGcmFtZUV4dGVudEZvclNsb3dQ
YXRoQ2FsbCwgc3AKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3N0YWNrX2NoZWNrKQogICAgIGJw
ZXEgcjEsIDAsIC5zdGFja0hlaWdodE9LR2V0Q29kZUJsb2NrCiAgICAgbW92ZSByMSwgY2ZyCkBA
IC03OTMsNiArODc3LDExIEBAIG1hY3JvIHByb2xvZ3VlKGNvZGVCbG9ja0dldHRlciwgY29kZUJs
b2MKIAogLnN0YWNrSGVpZ2h0T0s6CiAgICAgbW92ZSB0MCwgc3AKKworICAgIGlmIEpTVkFMVUU2
NAorICAgICAgICBtb3ZlIFRhZ1R5cGVOdW1iZXIsIHRhZ1R5cGVOdW1iZXIKKyAgICAgICAgYWRk
cCBUYWdCaXRUeXBlT3RoZXIsIHRhZ1R5cGVOdW1iZXIsIHRhZ01hc2sKKyAgICBlbmQKIGVuZAog
CiAjIEV4cGVjdHMgdGhhdCBDb2RlQmxvY2sgaXMgaW4gdDEsIHdoaWNoIGlzIHdoYXQgcHJvbG9n
dWUoKSBsZWF2ZXMgYmVoaW5kLgpAQCAtODQ4LDYgKzkzNyw3IEBAIG1hY3JvIGFsbG9jYXRlSlNP
YmplY3QoYWxsb2NhdG9yLCBzdHJ1Y3QKIGVuZAogCiBtYWNybyBkb1JldHVybigpCisgICAgcmVz
dG9yZUNhbGxlZVNhdmVzVXNlZEJ5TExJbnQoKQogICAgIHJlc3RvcmVDYWxsZXJQQ0FuZENGUigp
CiAgICAgcmV0CiBlbmQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2Fy
bTY0LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2Fy
bTY0LnJiCShyZXZpc2lvbiAxODk1NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGlu
ZWFzbS9hcm02NC5yYgkod29ya2luZyBjb3B5KQpAQCAtNjEsNiArNjEsMTQgQEAgcmVxdWlyZSAi
cmlzYyIKICMgIHEzICA9PiBmdDMsIGZhMwogIyAgcTQgID0+IGZ0NCAgICAgICAgICAodW51c2Vk
IGluIGJhc2VsaW5lKQogIyAgcTUgID0+IGZ0NSAgICAgICAgICAodW51c2VkIGluIGJhc2VsaW5l
KQorIyAgcTggID0+IGNzZnIwICAgICAgICAoT25seSB0aGUgbG93ZXIgNjQgYml0cykKKyMgIHE5
ICA9PiBjc2ZyMSAgICAgICAgKE9ubHkgdGhlIGxvd2VyIDY0IGJpdHMpCisjIHExMCAgPT4gY3Nm
cjIgICAgICAgIChPbmx5IHRoZSBsb3dlciA2NCBiaXRzKQorIyBxMTEgID0+IGNzZnIzICAgICAg
ICAoT25seSB0aGUgbG93ZXIgNjQgYml0cykKKyMgcTEyICA9PiBjc2ZyNCAgICAgICAgKE9ubHkg
dGhlIGxvd2VyIDY0IGJpdHMpCisjIHExMyAgPT4gY3NmcjUgICAgICAgIChPbmx5IHRoZSBsb3dl
ciA2NCBiaXRzKQorIyBxMTQgID0+IGNzZnI2ICAgICAgICAoT25seSB0aGUgbG93ZXIgNjQgYml0
cykKKyMgcTE1ICA9PiBjc2ZyNyAgICAgICAgKE9ubHkgdGhlIGxvd2VyIDY0IGJpdHMpCiAjIHEz
MSAgPT4gc2NyYXRjaAogCiBkZWYgYXJtNjRHUFJOYW1lKG5hbWUsIGtpbmQpCkBAIC0xMTYsMTAg
KzEyNCwyNCBAQCBjbGFzcyBSZWdpc3RlcklECiAgICAgICAgIHdoZW4gJ2NmcicKICAgICAgICAg
ICAgIGFybTY0R1BSTmFtZSgneDI5Jywga2luZCkKICAgICAgICAgd2hlbiAnY3NyMCcKLSAgICAg
ICAgICAgIGFybTY0R1BSTmFtZSgneDI2Jywga2luZCkKKyAgICAgICAgICAgIGFybTY0R1BSTmFt
ZSgneDE5Jywga2luZCkKICAgICAgICAgd2hlbiAnY3NyMScKLSAgICAgICAgICAgIGFybTY0R1BS
TmFtZSgneDI3Jywga2luZCkKKyAgICAgICAgICAgIGFybTY0R1BSTmFtZSgneDIwJywga2luZCkK
ICAgICAgICAgd2hlbiAnY3NyMicKKyAgICAgICAgICAgIGFybTY0R1BSTmFtZSgneDIxJywga2lu
ZCkKKyAgICAgICAgd2hlbiAnY3NyMycKKyAgICAgICAgICAgIGFybTY0R1BSTmFtZSgneDIyJywg
a2luZCkKKyAgICAgICAgd2hlbiAnY3NyNCcKKyAgICAgICAgICAgIGFybTY0R1BSTmFtZSgneDIz
Jywga2luZCkKKyAgICAgICAgd2hlbiAnY3NyNScKKyAgICAgICAgICAgIGFybTY0R1BSTmFtZSgn
eDI0Jywga2luZCkKKyAgICAgICAgd2hlbiAnY3NyNicKKyAgICAgICAgICAgIGFybTY0R1BSTmFt
ZSgneDI1Jywga2luZCkKKyAgICAgICAgd2hlbiAnY3NyNycKKyAgICAgICAgICAgIGFybTY0R1BS
TmFtZSgneDI2Jywga2luZCkKKyAgICAgICAgd2hlbiAnY3NyOCcKKyAgICAgICAgICAgIGFybTY0
R1BSTmFtZSgneDI3Jywga2luZCkKKyAgICAgICAgd2hlbiAnY3NyOScKICAgICAgICAgICAgIGFy
bTY0R1BSTmFtZSgneDI4Jywga2luZCkKICAgICAgICAgd2hlbiAnc3AnCiAgICAgICAgICAgICAn
c3AnCkBAIC0xNDYsNiArMTY4LDIyIEBAIGNsYXNzIEZQUmVnaXN0ZXJJRAogICAgICAgICAgICAg
YXJtNjRGUFJOYW1lKCdxNCcsIGtpbmQpCiAgICAgICAgIHdoZW4gJ2Z0NScKICAgICAgICAgICAg
IGFybTY0RlBSTmFtZSgncTUnLCBraW5kKQorICAgICAgICB3aGVuICdjc2ZyMCcKKyAgICAgICAg
ICAgIGFybTY0RlBSTmFtZSgncTgnLCBraW5kKQorICAgICAgICB3aGVuICdjc2ZyMScKKyAgICAg
ICAgICAgIGFybTY0RlBSTmFtZSgncTknLCBraW5kKQorICAgICAgICB3aGVuICdjc2ZyMicKKyAg
ICAgICAgICAgIGFybTY0RlBSTmFtZSgncTEwJywga2luZCkKKyAgICAgICAgd2hlbiAnY3NmcjMn
CisgICAgICAgICAgICBhcm02NEZQUk5hbWUoJ3ExMScsIGtpbmQpCisgICAgICAgIHdoZW4gJ2Nz
ZnI0JworICAgICAgICAgICAgYXJtNjRGUFJOYW1lKCdxMTInLCBraW5kKQorICAgICAgICB3aGVu
ICdjc2ZyNScKKyAgICAgICAgICAgIGFybTY0RlBSTmFtZSgncTEzJywga2luZCkKKyAgICAgICAg
d2hlbiAnY3NmcjYnCisgICAgICAgICAgICBhcm02NEZQUk5hbWUoJ3ExNCcsIGtpbmQpCisgICAg
ICAgIHdoZW4gJ2NzZnI3JworICAgICAgICAgICAgYXJtNjRGUFJOYW1lKCdxMTUnLCBraW5kKQog
ICAgICAgICBlbHNlICJCYWQgcmVnaXN0ZXIgbmFtZSAje0BuYW1lfSBhdCAje2NvZGVPcmlnaW5T
dHJpbmd9IgogICAgICAgICBlbmQKICAgICBlbmQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL3JlZ2lzdGVycy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvb2ZmbGluZWFzbS9yZWdpc3RlcnMucmIJKHJldmlzaW9uIDE4OTU0MykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3JlZ2lzdGVycy5yYgkod29ya2luZyBjb3B5KQpA
QCAtNDgsNyArNDgsMTAgQEAgR1BSUyA9CiAgICAgICJjc3IzIiwKICAgICAgImNzcjQiLAogICAg
ICAiY3NyNSIsCi0gICAgICJjc3I2IgorICAgICAiY3NyNiIsCisgICAgICJjc3I3IiwKKyAgICAg
ImNzcjgiLAorICAgICAiY3NyOSIKICAgICBdCiAKIEZQUlMgPQpAQCAtNjMsNiArNjYsMTQgQEAg
RlBSUyA9CiAgICAgICJmYTEiLAogICAgICAiZmEyIiwKICAgICAgImZhMyIsCisgICAgICJjc2Zy
MCIsCisgICAgICJjc2ZyMSIsCisgICAgICJjc2ZyMiIsCisgICAgICJjc2ZyMyIsCisgICAgICJj
c2ZyNCIsCisgICAgICJjc2ZyNSIsCisgICAgICJjc2ZyNiIsCisgICAgICJjc2ZyNyIsCiAgICAg
ICJmciIKICAgICBdCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4
Ni5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYu
cmIJKHJldmlzaW9uIDE4OTU0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNt
L3g4Ni5yYgkod29ya2luZyBjb3B5KQpAQCAtMjkwLDE0ICsyOTAsMTMgQEAgY2xhc3MgUmVnaXN0
ZXJJRAogICAgICAgICAgICAgd2hlbiAiY3NyMCIKICAgICAgICAgICAgICAgICAiZWJ4IgogICAg
ICAgICAgICAgd2hlbiAiY3NyMSIKLSAgICAgICAgICAgICAgICAicjEyIgorICAgICAgICAgICAg
ICAgIGlzV2luID8gImVzaSIgOiAicjEyIgogICAgICAgICAgICAgd2hlbiAiY3NyMiIKLSAgICAg
ICAgICAgICAgICAicjEzIgorICAgICAgICAgICAgICAgIGlzV2luID8gImVkaSIgOiAicjEzIgog
ICAgICAgICAgICAgd2hlbiAiY3NyMyIKLSAgICAgICAgICAgICAgICBpc1dpbiA/ICJlc2kiIDog
InIxNCIKKyAgICAgICAgICAgICAgICBpc1dpbiA/ICJyMTIiIDogInIxNCIKICAgICAgICAgICAg
IHdoZW4gImNzcjQiCi0gICAgICAgICAgICAgICAgaXNXaW4gPyAiZWRpIiA6ICJyMTUiCi0gICAg
ICAgICAgICAgICAgInIxNSIKKyAgICAgICAgICAgICAgICBpc1dpbiA/ICJyMTMiIDogInIxNSIK
ICAgICAgICAgICAgIHdoZW4gImNzcjUiCiAgICAgICAgICAgICAgICAgcmFpc2UgImNhbm5vdCB1
c2UgcmVnaXN0ZXIgI3tuYW1lfSBvbiBYODYtNjQiIHVubGVzcyBpc1dpbgogICAgICAgICAgICAg
ICAgICJyMTQiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDE4OTU0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcg
KzI1LDYgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvbW1vblNsb3dQYXRo
cy5oIgotI2luY2x1ZGUgIkFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzLmgiCiAjaW5jbHVkZSAi
QXJyYXlDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkNs
b25lZEFyZ3VtZW50cy5oIgpAQCAtMTY2LDE1ICsxNjUsMTEgQEAgc3RhdGljIENvbW1vblNsb3dQ
YXRoczo6QXJpdHlDaGVja0RhdGEqIAogICAgIENvbW1vblNsb3dQYXRoczo6QXJpdHlDaGVja0Rh
dGEqIHJlc3VsdCA9IHZtLmFyaXR5Q2hlY2tEYXRhLmdldCgpOwogICAgIHJlc3VsdC0+cGFkZGVk
U3RhY2tTcGFjZSA9IHNsb3RzVG9BZGQ7CiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAodm0uY2Fu
VXNlSklUKCkpIHsKKyAgICBpZiAodm0uY2FuVXNlSklUKCkpCiAgICAgICAgIHJlc3VsdC0+dGh1
bmtUb0NhbGwgPSB2bS5nZXRDVElTdHViKGFyaXR5Rml4dXBHZW5lcmF0b3IpLmNvZGUoKS5leGVj
dXRhYmxlQWRkcmVzcygpOwotICAgICAgICByZXN1bHQtPnJldHVyblBDID0gdm0uYXJpdHlDaGVj
a0ZhaWxSZXR1cm5UaHVua3MtPnJldHVyblBDRm9yKHZtLCBzbG90c1RvQWRkICogc3RhY2tBbGln
bm1lbnRSZWdpc3RlcnMoKSkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKLSAgICB9IGVsc2UKKyAgICBl
bHNlCiAjZW5kaWYKLSAgICB7CiAgICAgICAgIHJlc3VsdC0+dGh1bmtUb0NhbGwgPSAwOwotICAg
ICAgICByZXN1bHQtPnJldHVyblBDID0gMDsKLSAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1Bh
dGhzLmgJKHJldmlzaW9uIDE4OTU0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0OSw2IEBAIG5hbWVz
cGFjZSBDb21tb25TbG93UGF0aHMgewogc3RydWN0IEFyaXR5Q2hlY2tEYXRhIHsKICAgICB1bnNp
Z25lZCBwYWRkZWRTdGFja1NwYWNlOwogICAgIHZvaWQqIHRodW5rVG9DYWxsOwotICAgIHZvaWQq
IHJldHVyblBDOwogfTsKIAogQUxXQVlTX0lOTElORSBpbnQgYXJpdHlDaGVja0ZvcihFeGVjU3Rh
dGUqIGV4ZWMsIEpTU3RhY2sqIHN0YWNrLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCShyZXZpc2lvbiAxODk1NDMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJWTS5oIgogCiAjaW5jbHVkZSAiQXJnTGlzdC5oIgot
I2luY2x1ZGUgIkFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzLmgiCiAjaW5jbHVkZSAiQXJyYXlC
dWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmgiCiAjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVz
LmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCkBAIC03Nyw2ICs3Niw3IEBACiAjaW5jbHVkZSAi
UHJvcGVydHlNYXBIYXNoVGFibGUuaCIKICNpbmNsdWRlICJSZWdFeHBDYWNoZS5oIgogI2luY2x1
ZGUgIlJlZ0V4cE9iamVjdC5oIgorI2luY2x1ZGUgIlJlZ2lzdGVyQXRPZmZzZXRMaXN0LmgiCiAj
aW5jbHVkZSAiUnVudGltZVR5cGUuaCIKICNpbmNsdWRlICJTaW1wbGVUeXBlZEFycmF5Q29udHJv
bGxlci5oIgogI2luY2x1ZGUgIlNvdXJjZVByb3ZpZGVyQ2FjaGUuaCIKQEAgLTI1Myw3ICsyNTMs
NyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAKICNpZiBFTkFC
TEUoSklUKQogICAgIGppdFN0dWJzID0gc3RkOjptYWtlX3VuaXF1ZTxKSVRUaHVua3M+KCk7Ci0g
ICAgYXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3MgPSBzdGQ6Om1ha2VfdW5pcXVlPEFyaXR5Q2hl
Y2tGYWlsUmV0dXJuVGh1bmtzPigpOworICAgIGFsbENhbGxlZVNhdmVSZWdpc3Rlck9mZnNldHMg
PSBzdGQ6Om1ha2VfdW5pcXVlPFJlZ2lzdGVyQXRPZmZzZXRMaXN0PihSZWdpc3RlclNldDo6dm1D
YWxsZWVTYXZlUmVnaXN0ZXJzKCksIFJlZ2lzdGVyQXRPZmZzZXRMaXN0OjpaZXJvQmFzZWQpOwog
I2VuZGlmCiAgICAgYXJpdHlDaGVja0RhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbW1vblNsb3dQ
YXRoczo6QXJpdHlDaGVja0RhdGE+KCk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uaAkocmV2aXNpb24gMTg5NTQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsOSBAQAogI2luY2x1ZGUgIkRhdGVJbnN0
YW5jZUNhY2hlLmgiCiAjaW5jbHVkZSAiRXhlY3V0YWJsZUFsbG9jYXRvci5oIgogI2luY2x1ZGUg
IkZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZS5oIgorI2lmIEVOQUJMRShKSVQpCisjaW5jbHVkZSAi
R1BSSW5mby5oIgorI2VuZGlmCiAjaW5jbHVkZSAiSGVhcC5oIgogI2luY2x1ZGUgIkludHJpbnNp
Yy5oIgogI2luY2x1ZGUgIkpJVFRodW5rcy5oIgpAQCAtNzIsNyArNzUsNiBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAotY2xhc3MgQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3M7CiBjbGFzcyBCdWls
dGluRXhlY3V0YWJsZXM7CiBjbGFzcyBDb2RlQmxvY2s7CiBjbGFzcyBDb2RlQ2FjaGU7CkBAIC05
MCw2ICs5Miw3IEBAIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIGNsYXNzIExlZ2FjeVBy
b2ZpbGVyOwogY2xhc3MgTmF0aXZlRXhlY3V0YWJsZTsKIGNsYXNzIFJlZ0V4cENhY2hlOworY2xh
c3MgUmVnaXN0ZXJBdE9mZnNldExpc3Q7CiBjbGFzcyBTY3JpcHRFeGVjdXRhYmxlOwogY2xhc3Mg
U291cmNlUHJvdmlkZXI7CiBjbGFzcyBTb3VyY2VQcm92aWRlckNhY2hlOwpAQCAtMzU3LDE0ICsz
NjAsMjQgQEAgcHVibGljOgogICAgIFNvdXJjZVByb3ZpZGVyQ2FjaGVNYXAgc291cmNlUHJvdmlk
ZXJDYWNoZU1hcDsKICAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXI7CiAjaWYgRU5BQkxFKEpJ
VCkKKyAgICBpbnRwdHJfdCBjYWxsZWVTYXZlUmVnaXN0ZXJzQnVmZmVyW0dQUkluZm86Om51bWJl
ckNhbGxlZVNhdmVSZWdpc3RlcnNdOworCisgICAgc3RhdGljIHB0cmRpZmZfdCBjYWxsZWVTYXZl
UmVnaXN0ZXJzQnVmZmVyT2Zmc2V0KCkKKyAgICB7CisgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZG
U0VUT0YoVk0sIGNhbGxlZVNhdmVSZWdpc3RlcnNCdWZmZXIpOworICAgIH0KKwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxKSVRUaHVua3M+IGppdFN0dWJzOwogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZiBnZXRDVElTdHViKFRodW5rR2VuZXJhdG9yIGdlbmVyYXRvcikKICAgICB7CiAgICAgICAgIHJl
dHVybiBqaXRTdHVicy0+Y3RpU3R1Yih0aGlzLCBnZW5lcmF0b3IpOwogICAgIH0KICAgICBOYXRp
dmVFeGVjdXRhYmxlKiBnZXRIb3N0RnVuY3Rpb24oTmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYyk7
CisgICAgCisgICAgc3RkOjp1bmlxdWVfcHRyPFJlZ2lzdGVyQXRPZmZzZXRMaXN0PiBhbGxDYWxs
ZWVTYXZlUmVnaXN0ZXJPZmZzZXRzOworICAgIAorICAgIFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBn
ZXRBbGxDYWxsZWVTYXZlUmVnaXN0ZXJPZmZzZXRzKCkgeyByZXR1cm4gYWxsQ2FsbGVlU2F2ZVJl
Z2lzdGVyT2Zmc2V0cy5nZXQoKTsgfQogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEFyaXR5Q2hlY2tG
YWlsUmV0dXJuVGh1bmtzPiBhcml0eUNoZWNrRmFpbFJldHVyblRodW5rczsKICNlbmRpZiAvLyBF
TkFCTEUoSklUKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxDb21tb25TbG93UGF0aHM6OkFyaXR5Q2hl
Y2tEYXRhPiBhcml0eUNoZWNrRGF0YTsKICNpZiBFTkFCTEUoRlRMX0pJVCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260880</attachid>
            <date>2015-09-09 15:18:21 -0700</date>
            <delta_ts>2015-09-10 10:01:04 -0700</delta_ts>
            <desc>Patch with suggested fixes and fix for win32 build</desc>
            <filename>148666-2.patch</filename>
            <type>text/plain</type>
            <size>195794</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg5NTQzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwNyBA
QAorMjAxNS0wOS0wOSAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KKworICAg
ICAgICBBZGQgc3VwcG9ydCBmb3IgQ2FsbGVlLVNhdmVzIHJlZ2lzdGVycworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NjY2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2Ugc2F2ZSBwbGF0Zm9ybSBjYWxs
ZWUgc2F2ZSByZWdpc3RlcnMgcmlnaHQgYmVsb3cgdGhlIGNhbGwgZnJhbWUgaGVhZGVyLAorICAg
ICAgICBpbiB0aGUgbG9jYXRpb24ocykgc3RhcnRpbmcgd2l0aCBWaXJ0dWFsUmVnaXN0ZXIgMC4g
IFRoaXMgbG9jYWwgc3BhY2UgaXMKKyAgICAgICAgYWxsb2NhdGVkIGluIHRoZSBieXRlY29kZSBj
b21waWxlci4gIFRoaXMgc3BhY2UgaXMgdGhlIG1heGltdW0gc3BhY2UKKyAgICAgICAgbmVlZGVk
IGZvciB0aGUgY2FsbGVlIHJlZ2lzdGVycyB0aGF0IHRoZSBMTEludCBhbmQgYmFzZWxpbmUgSklU
IHVzZSwKKyAgICAgICAgcm91bmRlZCB1cCB0byBhIHN0YWNrIGFsaWduZWQgbnVtYmVyIG9mIFZp
cnR1YWxSZWdpc3RlcnMuCisgICAgICAgIFRoZSBMTEludCBleHBsaWNpdGx5IHNhdmVzIGFuZCBy
ZXN0b3JlcyB0aGUgcmVnaXN0ZXJzIGluIHRoZSBtYWNyb3MKKyAgICAgICAgcHJlc2VydmVDYWxs
ZWVTYXZlc1VzZWRCeUxMSW50IGFuZCByZXN0b3JlQ2FsbGVlU2F2ZXNVc2VkQnlMTEludC4KKyAg
ICAgICAgVGhlIEpJVHMgc2F2ZXMgYW5kIHJlc3RvcmVzIGNhbGxlZSBzYXZlcyByZWdpc3RlcnMg
Ynkgd2hhdCByZWdpc3RlcnMKKyAgICAgICAgYXJlIGluY2x1ZGVkIGluIG1fY2FsbGVlU2F2ZVJl
Z2lzdGVycyBpbiB0aGUgY29kZSBibG9jay4KKworICAgICAgICBBZGRlZCBoYW5kbGluZyBvZiBj
YWxsZWUgc2F2ZSByZWdpc3RlciByZXN0b3JhdGlvbiB0byBleGNlcHRpb24gaGFuZGxpbmcuCisg
ICAgICAgIFRoZSBiYXNpYyBmbG93IGlzIHdoZW4gYW4gZXhjZXB0aW9uIGlzIHRocm93biBvciBv
bmUgaXMgcmVjb2duaXplZCB0bworICAgICAgICBoYXZlIGJlZW4gZ2VuZXJhdGVkIGluIEMrKyBj
b2RlLCB3ZSBzYXZlIHRoZSBjdXJyZW50IHN0YXRlIG9mIGFsbAorICAgICAgICBjYWxsZWUgc2F2
ZSByZWdpc3RlcnMgdG8gVk06OmNhbGxlZVNhdmVSZWdpc3RlcnNCdWZmZXIuICBBcyB3ZSB1bndp
bmQKKyAgICAgICAgbG9va2luZyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2F0Y2gsIHdlIGNvcHkg
dGhlIGNhbGxlZSBzYXZlcyBmcm9tIGNhbGwgCisgICAgICAgIGZyYW1lcyB0byB0aGUgc2FtZSBW
TTo6Y2FsbGVlU2F2ZVJlZ2lzdGVyc0J1ZmZlci4gIFRoaXMgaXMgZG9uZSBmb3IgYWxsCisgICAg
ICAgIGNhbGwgZnJhbWVzIG9uIHRoZSBzdGFjayB1cCB0byBidXQgbm90IGluY2x1ZGluZyB0aGUg
Y2FsbCBmcmFtZSB0aGF0IGhhcworICAgICAgICB0aGUgY29ycmVzcG9uZGluZyBjYXRjaCBibG9j
ay4gIFdoZW4gd2UgcHJvY2VzcyB0aGUgY2F0Y2gsIHdlIHJlc3RvcmUKKyAgICAgICAgdGhlIGNh
bGxlZSBzYXZlIHJlZ2lzdGVycyB3aXRoIHRoZSBjb250ZW50cyBvZiBWTTo6Y2FsbGVlU2F2ZVJl
Z2lzdGVyc0J1ZmZlci4KKyAgICAgICAgSWYgdGhlcmUgaXNuJ3QgYSBjYXRjaCwgdGhlbiBoYW5k
bGVVbmNhdWdodEV4Y2VwdGlvbiB3aWxsIHJlc3RvcmUgY2FsbGVlCisgICAgICAgIHNhdmVzIGJl
Zm9yZSBpdCByZXR1cm5zIGJhY2sgdG8gdGhlIGNhbGxpbmcgQysrLgorCisgICAgICAgIEVsaW1p
bmF0ZWQgY2FsbGVlIHNhdmVzIHJlZ2lzdGVycyBhcyBmcmVlIHJlZ2lzdGVycyBmb3IgdmFyaW91
cyB0aHVuaworICAgICAgICBnZW5lcmF0b3JzIGFzIHRoZSBjYWxsZWUgc2F2ZXMgbWF5IG5vdCBo
YXZlIGJlZW4gc2F2ZWQgYnkgdGhlIGZ1bmN0aW9uCisgICAgICAgIGNhbGxpbmcgdGhlIHRodW5r
LgorCisgICAgICAgIEFkZGVkIGNvZGUgdG8gdHJhbnNpdGlvbiBjYWxsZWUgc2F2ZXMgZnJvbSBv
bmUgVk0ncyBmb3JtYXQgdG8gdGhlIGFub3RoZXIKKyAgICAgICAgYXMgcGFydCBvZiBPU1IgZW50
cnkgYW5kIE9TUiBleGl0LgorCisgICAgICAgIENsZWFuZWQgdXAgdGhlIHN0YXRpYyBSZWdpc3Rl
clNldCdzIGluY2x1ZGluZyBhZGRpbmcgb25lIGZvciBMTEludCBhbmQgCisgICAgICAgIGJhc2Vs
aW5lIEpJVCBjYWxsZWUgc2F2ZXMgYW5kIG9uZSB0byBiZSB1c2VkIHRvIGFsbG9jYXRlIGxvY2Fs
IHJlZ2lzdGVycworICAgICAgICBub3QgaW5jbHVkaW5nIHRoZSBjYWxsZWUgc2F2ZXMgb3Igb3Ro
ZXIgc3BlY2lhbCByZWdpc3RlcnMuCisKKyAgICAgICAgTW92ZWQgZnRsL0ZUTFJlZ2lzdGVyQXRP
ZmZzZXQue2NwcCxofSB0byBqaXQvUmVnaXN0ZXJBdE9mZnNldC57Y3BwLGh9LgorICAgICAgICBG
YWN0b3JlZCBvdXQgdGhlIHZlY3RvciBvZiBSZWdpc3RlckF0T2Zmc2V0cyBpbiBmdGwvRlRMVW53
aW5kSW5mby57Y3BwLGh9CisgICAgICAgIGludG8gYSBuZXcgY2xhc3MgaW4gaml0L1JlZ2lzdGVy
QXRPZmZzZXRMaXN0LntjcHAsaH0uCisgICAgICAgIEVsaW1pbnRlZCBVbndpbmRJbmZvIGFuZCBj
aGFuZ2VkIFVud2luZEluZm86OnBhcnNlKCkgaW50byBhIHN0YW5kYWxvbmUKKyAgICAgICAgZnVu
Y3Rpb24gbmFtZWQgcGFyc2VVbndpbmRJbmZvLiAgVGhhdCBzdGFuZGFsb25lIGZ1bmN0aW9uIG5v
dyByZXR1cm5zCisgICAgICAgIHRoZSBjYWxsZWUgc2F2ZXMgUmVnaXN0ZXJBdE9mZnNldExpc3Qu
ICBUaGlzIGlzIHN0b3JlZCBpbiB0aGUgQ29kZUJsb2NrCisgICAgICAgIGFuZCB1c2VkIGluc3Rl
YWQgb2YgVW53aW5kSW5mby4KKworICAgICAgICBUdXJuZWQgb2ZmIHJlZ2lzdGVyIHByZXNlcnZh
dGlvbiB0aHVua3MgZm9yIG91dGdvaW5nIGNhbGxzIGZyb20gRlRMCisgICAgICAgIGdlbmVyYXRl
ZCBjb2RlLiAgVEhleSdsbCBiZSByZW1vdmVkIGluIGEgc3Vic2VxdWVudCBwYXRjaC4KKworICAg
ICAgICBDaGFuZ2VkIHNwZWNpYWxpemVkIHRoaW5rcyB0byBzYXZlIGFuZCByZXN0b3JlIHRoZSBj
b250ZW50cyBvZgorICAgICAgICB0YWdUeXBlTnVtYmVyUmVnaXN0ZXIgYW5kIHRhZ01hc2tSZWdp
c3RlciBhcyB0aGV5IGNhbiBiZSBjYWxsZWQgYnkgRlRMCisgICAgICAgIGNvbXBpbGVkIGZ1bmN0
aW9ucy4gIFdlIG1hdGVyaWFsaXplIHRob3NlIHRhZyByZWdpc3RlcnMgZm9yIHRoZSB0aHVuaydz
CisgICAgICAgIHVzZSBhbmQgdGhlbiByZXN0b3JlIHRoZSBwcmlvciBjb250ZW50cyBvbiBmdW5j
dGlvbiBleGl0LgorCisgICAgICAgIEFsc28gcmVtb3ZlZCB0aGUgYXJpdHkgY2hlY2sgZmFpbCBy
ZXR1cm4gdGh1bmsgc2luY2UgaXQgaXMgbm93IHRoZQorICAgICAgICBjYWxsZXIncyByZXNwb25z
aWJpbGl0eSB0byByZXN0b3JlIHRoZSBzdGFjayBwb2ludGVyLgorCisgICAgICAgIFJlbW92ZWQg
c2F2aW5nIG9mIGNhbGxlZSBzYXZlIHJlZ2lzdGVycyBhbmQgbWF0ZXJpYWxpemF0aW9uIG9mIHNw
ZWNpYWwKKyAgICAgICAgdGFnIHJlZ2lzdGVycyBmb3IgNjQgYml0IHBsYXRmb3JtcyBmcm9tIHZt
RW50cnlUb0phdmFTY3JpcHQgYW5kCisgICAgICAgIHZtRW50cnlUb05hdGl2ZS4KKworICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2
YVNjcmlwdENvcmUudmN4cHJvajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGZ0bC9GVExKSVRDb2RlLmg6Cisg
ICAgICAgICogZnRsL0ZUTFJlZ2lzdGVyQXRPZmZzZXQuY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IGZ0bC9GVExSZWdpc3RlckF0T2Zmc2V0Lmg6IFJlbW92ZWQuCisgICAgICAgICogZnRsL0ZUTFVu
d2luZEluZm8uY3BwOgorICAgICAgICAoSlNDOjpGVEw6OnBhcnNlVW53aW5kSW5mbyk6CisgICAg
ICAgIChKU0M6OkZUTDo6VW53aW5kSW5mbzo6VW53aW5kSW5mbyk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkZUTDo6VW53aW5kSW5mbzo6flVud2luZEluZm8pOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpGVEw6OlVud2luZEluZm86OnBhcnNlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRM
OjpVbndpbmRJbmZvOjpkdW1wKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpVbndpbmRJ
bmZvOjpmaW5kKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpVbndpbmRJbmZvOjppbmRl
eE9mKTogRGVsZXRlZC4KKyAgICAgICAgKiBmdGwvRlRMVW53aW5kSW5mby5oOgorICAgICAgICAo
SlNDOjpSZWdpc3RlckF0T2Zmc2V0OjpkdW1wKToKKyAgICAgICAgKiBqaXQvUmVnaXN0ZXJBdE9m
ZnNldC5jcHA6IEFkZGVkLgorICAgICAgICAqIGppdC9SZWdpc3RlckF0T2Zmc2V0Lmg6IEFkZGVk
LgorICAgICAgICAoSlNDOjpSZWdpc3RlckF0T2Zmc2V0OjpSZWdpc3RlckF0T2Zmc2V0KToKKyAg
ICAgICAgKEpTQzo6UmVnaXN0ZXJBdE9mZnNldDo6b3BlcmF0b3IhKToKKyAgICAgICAgKEpTQzo6
UmVnaXN0ZXJBdE9mZnNldDo6cmVnKToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJBdE9mZnNldDo6
b2Zmc2V0KToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJBdE9mZnNldDo6b2Zmc2V0QXNJbmRleCk6
CisgICAgICAgIChKU0M6OlJlZ2lzdGVyQXRPZmZzZXQ6Om9wZXJhdG9yPT0pOgorICAgICAgICAo
SlNDOjpSZWdpc3RlckF0T2Zmc2V0OjpvcGVyYXRvcjwpOgorICAgICAgICAoSlNDOjpSZWdpc3Rl
ckF0T2Zmc2V0OjpnZXRSZWcpOgorICAgICAgICAqIGppdC9SZWdpc3RlckF0T2Zmc2V0TGlzdC5j
cHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpSZWdpc3RlckF0T2Zmc2V0TGlzdDo6UmVnaXN0ZXJB
dE9mZnNldExpc3QpOgorICAgICAgICAoSlNDOjpSZWdpc3RlckF0T2Zmc2V0TGlzdDo6c29ydCk6
CisgICAgICAgIChKU0M6OlJlZ2lzdGVyQXRPZmZzZXRMaXN0OjpkdW1wKToKKyAgICAgICAgKEpT
Qzo6UmVnaXN0ZXJBdE9mZnNldExpc3Q6OmZpbmQpOgorICAgICAgICAoSlNDOjpSZWdpc3RlckF0
T2Zmc2V0TGlzdDo6aW5kZXhPZik6CisgICAgICAgICogaml0L1JlZ2lzdGVyQXRPZmZzZXRMaXN0
Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpSZWdpc3RlckF0T2Zmc2V0TGlzdDo6Y2xlYXIpOgor
ICAgICAgICAoSlNDOjpSZWdpc3RlckF0T2Zmc2V0TGlzdDo6c2l6ZSk6CisgICAgICAgIChKU0M6
OlJlZ2lzdGVyQXRPZmZzZXRMaXN0OjphdCk6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyQXRPZmZz
ZXRMaXN0OjphcHBlbmQpOgorICAgICAgICBNb3ZlIGFuZCByZWZhY3RvcmVkIHVzZSBvZiBGVExS
ZWdpc3RlckF0T2Zmc2V0IHRvIFJlZ2lzdGVyQXRPZmZzZXQuCisgICAgICAgIEFkZGVkIFJlZ2lz
dGVyQXRPZmZzZXQgYW5kIFJlZ2lzdGVyQXRPZmZzZXRMaXN0IHRvIGJ1aWxkIGNvbmZpZ3VyYXRp
b25zLgorICAgICAgICBSZW1vdmUgRlRMUmVnaXN0ZXJBdE9mZnNldCBmaWxlcy4KKworICAgICAg
ICAqIGJ5dGVjb2RlL0NhbGxMaW5rSW5mby5oOgorICAgICAgICAoSlNDOjpDYWxsTGlua0luZm86
OnNldFVwQ2FsbEZyb21GVEwpOgorICAgICAgICBUdXJuZWQgb2ZmIEZUTCByZWdpc3RlciBwcmVz
ZXJ2YXRpb24gdGh1bmtzLgorCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6OnNldENhbGxlZVNhdmVSZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpyb3VuZENhbGxlZVNh
dmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGxp
bnRCYXNlbGluZUNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycyk6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6Y2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKToKKyAgICAg
ICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpudW1i
ZXJPZkxMSW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpjYWxsZWVTYXZlUmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjps
bGludEJhc2VsaW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKToKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjpvcHRpbWl6ZUFmdGVyV2FybVVwKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpudW1iZXJPZkRGR0NvbXBpbGVzKToKKyAgICAgICAgTWV0aG9kcyB0byBtYW5hZ2Ug
YSBzZXQgb2YgY2FsbGVlIHNhdmUgcmVnaXN0ZXJzLiAgQWxzbyB0byBhbGxvY2F0ZSB0aGUgYXBw
cm9wcmlhdGUKKyAgICAgICAgbnVtYmVyIG9mIFZpcnR1YWxSZWdpc3RlcnMgZm9yIGNhbGxlZSBz
YXZlcy4KKworICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjphbGxvY2F0ZUNhbGxlZVNhdmVTcGFjZSk6Cisg
ICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIEFsbG9j
YXRlIHRoZSBhcHByb3ByaWF0ZSBudW1iZXIgb2YgVmlydHVhbFJlZ2lzdGVycyBmb3IgY2FsbGVl
IHNhdmVzIG5lZWRlZCBieSBMTEludCBvciBiYXNlbGluZSBKSVQuCisKKyAgICAgICAgKiBkZmcv
REZHSklUQ29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpjb21w
aWxlRW50cnkpOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpjb21waWxlU2V0dXBS
ZWdpc3RlcnNGb3JFbnRyeSk6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBp
bGVCb2R5KToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZUV4Y2VwdGlv
bkhhbmRsZXJzKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbik6CisgICAgICAg
ICogZGZnL0RGR0pJVENvbXBpbGVyLmg6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuY3BwOgorICAgICAgICAoSlNDOjpVbndpbmRGdW5jdG9yOjpvcGVyYXRvcigpKToKKyAgICAg
ICAgKEpTQzo6VW53aW5kRnVuY3Rvcjo6Y29weUNhbGxlZVNhdmVzVG9WTUNhbGxlZVNhdmVzQnVm
ZmVyKToKKyAgICAgICAgKiBkZmcvREZHUGxhbi5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UGxh
bjo6Y29tcGlsZUluVGhyZWFkSW1wbCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6dXNlZFJlZ2lzdGVycyk6
CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3Vs
YXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUpOgorICAgICAgICAqIGRmZy9ERkdTdGFja0xheW91dFBoYXNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpTdGFja0xheW91dFBoYXNlOjpydW4pOgorICAgICAgICAqIGZ0bC9GVExDb21waWxl
LmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpmaXhGdW5jdGlvbkJhc2VkT25TdGFja01hcHMpOgor
ICAgICAgICAoSlNDOjpGVEw6OmNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMaW5rLmNwcDoK
KyAgICAgICAgKEpTQzo6RlRMOjpsaW5rKToKKyAgICAgICAgKiBmdGwvRlRMT1NSRXhpdENvbXBp
bGVyLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjb21waWxlU3R1Yik6CisgICAgICAgICogZnRs
L0ZUTFRodW5rcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6b3NyRXhpdEdlbmVyYXRpb25UaHVu
a0dlbmVyYXRvcik6CisgICAgICAgICogaml0L0FyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzLmNw
cDogUmVtb3ZlZC4KKyAgICAgICAgKiBqaXQvQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3MuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
RW50ZXJPcHRpbWl6YXRpb25DaGVjayk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBp
bGUpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlRXhjZXB0aW9uSGFuZGxlcnMp
OgorICAgICAgICAqIGppdC9KSVRDYWxsMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfcmV0KToKKyAgICAgICAgKiBqaXQvSklURXhjZXB0aW9ucy5jcHA6CisgICAgICAgIChK
U0M6OmdlbmVyaWNVbndpbmQpOgorICAgICAgICAqIGppdC9KSVRFeGNlcHRpb25zLmg6CisgICAg
ICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZW5k
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3JldCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF90aHJvdyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jYXRjaCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lbnRlcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNs
b3dfb3BfbG9vcF9oaW50KToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX2VuZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF90aHJvdyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jYXRjaCk6CisgICAgICAgICog
aml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAg
ICAgKEpTQzo6Z2VuZXJhdGVCeUlkU3R1Yik6CisgICAgICAgICogaml0L1RodW5rR2VuZXJhdG9y
cy5jcHA6CisgICAgICAgICogbGxpbnQvTExJbnREYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6TExJ
bnQ6OkRhdGE6OnBlcmZvcm1Bc3NlcnRpb25zKToKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQ
YXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6Cisg
ICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbElu
dGVycHJldGVyNjQuYXNtOgorICAgICAgICAoSlNDOjp0aHJvd0V4Y2VwdGlvbkZyb21DYWxsU2xv
d1BhdGhHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjphcml0eUZpeHVwR2VuZXJhdG9yKToKKyAg
ICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OnNldHVw
QXJpdHlDaGVja0RhdGEpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6Cisg
ICAgICAgIChKU0M6OkNvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0Zvcik6CisgICAgICAgIEVt
aXQgY29kZSB0byBzYXZlIGFuZCByZXN0b3JlIGNhbGxlZSBzYXZlIHJlZ2lzdGVycyBhbmQgbWF0
ZXJpYWxpemUgdGFnVHlwZU51bWJlclJlZ2lzdGVyCisgICAgICAgIGFuZCB0YWdNYXNrUmVnaXN0
ZXIuCisgICAgICAgIEhhbmRsZSBjYWxsZWUgc2F2ZXMgd2hlbiB0aWVyaW5nIHVwLgorICAgICAg
ICBDb3B5IGNhbGxlZSBzYXZlcyByZWdpc3RlciBjb250ZW50cyB0byBWTTo6Y2FsbGVlU2F2ZVJl
Z2lzdGVyc0J1ZmZlciBhdCBiZWdpbm5pbmcgb2YKKyAgICAgICAgZXhjZXB0aW9uIHByb2Nlc3Np
bmcuCisgICAgICAgIFByb2Nlc3MgY2FsbGVlIHNhdmUgcmVnaXN0ZXJzIGluIGZyYW1lcyB3aGVu
IHVud2luZGluZyBmcm9tIGFuIGV4Y2VwdGlvbi4KKyAgICAgICAgUmVzdG9yZSBjYWxsZWUgc2F2
ZXMgcmVnaXN0ZXIgY29udGVudHMgZnJvbSBWTTo6Y2FsbGVlU2F2ZVJlZ2lzdGVyc0J1ZmZlciBv
biBjYXRjaC4KKyAgICAgICAgVXNlIGFwcHJvcHJpYXRlIHJlZ2lzdGVyIHNldCB0byBtYWtlIHN1
cmUgd2UgZG9uJ3QgYWxsb2NhdGUgYSBjYWxsZWUgc2F2ZSByZWdpc3RlciB3aGVuCisgICAgICAg
IGNvbXBpbGluZyBhIHRodW5rLgorICAgICAgICBIZWxwZXIgdG8gcG9wdWxhdGUgdGFnVHlwZU51
bWJlclJlZ2lzdGVyIGFuZCB0YWdNYXNrUmVnaXN0ZXIgd2l0aCB0aGUgYXBwcm9wcmlhdGUKKyAg
ICAgICAgY29uc3RhbnRzLgorICAgICAgICBSZW1vdmVkIGFyaXR5IGZpeHVwIHJldHVybiB0aHVu
a3MuCisKKyAgICAgICAgKiBkZmcvREZHT1NSRW50cnkuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OnByZXBhcmVPU1JFbnRyeSk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRDb21waWxlcjMyXzY0
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KToK
KyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6Ok9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQpOgorICAgICAgICAqIGRmZy9ERkdPU1JF
eGl0Q29tcGlsZXJDb21tb24uY3BwOgorICAgICAgICAoSlNDOjpERkc6OnJlaWZ5SW5saW5lZENh
bGxGcmFtZXMpOgorICAgICAgICAoSlNDOjpERkc6OmFkanVzdEFuZEp1bXBUb1RhcmdldCk6Cisg
ICAgICAgIFJlc3RvcmUgY2FsbGVlIHNhdmVzIGZyb20gdGhlIERGRyBhbmQgc2F2ZSB0aGUgYXBw
cm9wcmlhdGUgb25lcyBmb3IgdGhlIGJhc2VsaW5lIEpJVC4KKyAgICAgICAgTWF0ZXJpYWxpemUg
dGhlIHRhZyByZWdpc3RlcnMgb24gNjQgYml0IHBsYXRmb3Jtcy4KKworICAgICAgICAqIGppdC9B
c3NlbWJseUhlbHBlcnMuaDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0U2F2
ZUNhbGxlZVNhdmVzRm9yKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0UmVz
dG9yZUNhbGxlZVNhdmVzRm9yKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0
U2F2ZUNhbGxlZVNhdmVzKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0UmVz
dG9yZUNhbGxlZVNhdmVzKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpjb3B5Q2Fs
bGVlU2F2ZXNUb1ZNQ2FsbGVlU2F2ZXNCdWZmZXIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhl
bHBlcnM6OnJlc3RvcmVDYWxsZWVTYXZlc0Zyb21WTUNhbGxlZVNhdmVzQnVmZmVyKToKKyAgICAg
ICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpjb3B5Q2FsbGVlU2F2ZXNGcm9tRnJhbWVPclJlZ2lz
dGVyVG9WTUNhbGxlZVNhdmVzQnVmZmVyKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJz
OjplbWl0TWF0ZXJpYWxpemVUYWdDaGVja1JlZ2lzdGVycyk6CisgICAgICAgIE5ldyBoZWxwZXJz
IHRvIHNhdmUgYW5kIHJlc3RvcmUgY2FsbGVlIHNhdmVzIGFzIHdlbGwgYXMgbWF0ZXJpYWxpemUg
dGhlIHRhZyByZWdpc3RlcnMKKyAgICAgICAgY29udGVudHMuCisKKyAgICAgICAgKiBqaXQvRlBS
SW5mby5oOgorICAgICAgICAqIGppdC9HUFJJbmZvLmg6CisgICAgICAgIChKU0M6OkdQUkluZm86
OnRvUmVnaXN0ZXIpOgorICAgICAgICBVcGRhdGVkIHRvIGluY2x1ZGUgRlAgY2FsbGVlIHNhdmUg
cmVnaXN0ZXJzLiAgQWRkZWQgbnVtYmVyIG9mIGNhbGxlZSBzYXZlcyByZWdpc3RlcnMgYW5kCisg
ICAgICAgIGNsZWFudXAgcmVnaXN0ZXIgYWxpYXNlcyB0aGF0IGNvbGxpZGUgd2l0aCBjYWxsZWUg
c2F2ZSByZWdpc3RlcnMuCisKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRHZXRCeVZhbFdpdGhDYWNoZWRJZCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX2dldF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQp
OgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0R2V0QnlWYWxXaXRoQ2FjaGVkSWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRQdXRCeVZhbFdpdGhDYWNoZWRJZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRf
YnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKToKKyAgICAgICAg
VXNlcyBuZXcgc3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzIHJlZ2lzdGVyIHNldCB0byBsaW1pdCB3
aGF0IHJlZ2lzdGVycyBhcmUgYXZhaWxhYmxlIGZvciAKKyAgICAgICAgdGVtcG9yYXJpZXMuCisK
KyAgICAgICAgKiBqaXQvUmVnaXN0ZXJTZXQuY3BwOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNl
dDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6
OmNhbGxlZVNhdmVSZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6bGxpbnRC
YXNlbGluZUNhbGxlZVNhdmVSZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6
ZGZnQ2FsbGVlU2F2ZVJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0OjpmdGxD
YWxsZWVTYXZlUmVnaXN0ZXJzKToKKyAgICAgICAgKiBqaXQvUmVnaXN0ZXJTZXQuaDoKKyAgICAg
ICAgTmV3IHJlZ2lzdGVyIHNldHMgd2l0aCB0aGUgY2FsbGVlIHNhdmVzIHVzZWQgYnkgdmFyaW91
cyB0aWVycyBhcyB3ZWxsIGFzIG9uZSBsaXN0aW5nIHJlZ2lzdGVycworICAgICAgICBub3QgYXZh
aWxibGUgdG8gc3R1YiBjb2RlLgorCisgICAgICAgICogaml0L1NwZWNpYWxpemVkVGh1bmtKSVQu
aDoKKyAgICAgICAgKEpTQzo6U3BlY2lhbGl6ZWRUaHVua0pJVDo6U3BlY2lhbGl6ZWRUaHVua0pJ
VCk6CisgICAgICAgIChKU0M6OlNwZWNpYWxpemVkVGh1bmtKSVQ6OmxvYWREb3VibGVBcmd1bWVu
dCk6CisgICAgICAgIChKU0M6OlNwZWNpYWxpemVkVGh1bmtKSVQ6OnJldHVybkpTVmFsdWUpOgor
ICAgICAgICAoSlNDOjpTcGVjaWFsaXplZFRodW5rSklUOjpyZXR1cm5Eb3VibGUpOgorICAgICAg
ICAoSlNDOjpTcGVjaWFsaXplZFRodW5rSklUOjpyZXR1cm5JbnQzMik6CisgICAgICAgIChKU0M6
OlNwZWNpYWxpemVkVGh1bmtKSVQ6OnJldHVybkpTQ2VsbCk6CisgICAgICAgIChKU0M6OlNwZWNp
YWxpemVkVGh1bmtKSVQ6OmNhbGxEb3VibGVUb0RvdWJsZVByZXNlcnZpbmdSZXR1cm4pOgorICAg
ICAgICAoSlNDOjpTcGVjaWFsaXplZFRodW5rSklUOjplbWl0U2F2ZVRoZW5NYXRlcmlhbGl6ZVRh
Z1JlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OlNwZWNpYWxpemVkVGh1bmtKSVQ6OmVtaXRSZXN0
b3JlU2F2ZWRUYWdSZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpTcGVjaWFsaXplZFRodW5rSklU
Ojp0YWdSZXR1cm5Bc0ludDMyKToKKyAgICAgICAgKiBqaXQvVGh1bmtHZW5lcmF0b3JzLmNwcDoK
KyAgICAgICAgKEpTQzo6bmF0aXZlRm9yR2VuZXJhdG9yKToKKyAgICAgICAgQ2hhbmdlZCB0byBz
YXZlIGFuZCByZXN0b3JlIGV4aXN0aW5nIHRhZyByZWdpc3RlciBjb250ZW50cyBhcyB0aGUgbWF5
IGNvbnRhaW4gb3RoZXIgdmFsdWVzLgorICAgICAgICBBZnRlciBzYXZpbmcgdGhlIGV4aXN0aW5n
IHZhbHVlcywgd2UgbWF0ZXJpYWxpemUgdGhlIHRhZyBjb25zdGFudHMuCisKKyAgICAgICAgKiBq
aXQvVGVtcFJlZ2lzdGVyU2V0Lmg6CisgICAgICAgIChKU0M6OlRlbXBSZWdpc3RlclNldDo6Z2V0
RlBSQnlJbmRleCk6CisgICAgICAgIChKU0M6OlRlbXBSZWdpc3RlclNldDo6Z2V0RnJlZUZQUik6
CisgICAgICAgIChKU0M6OlRlbXBSZWdpc3RlclNldDo6c2V0QnlJbmRleCk6CisgICAgICAgICog
b2ZmbGluZWFzbS9hcm02NC5yYjoKKyAgICAgICAgKiBvZmZsaW5lYXNtL3JlZ2lzdGVycy5yYjoK
KyAgICAgICAgQWRkZWQgbWV0aG9kcyBmb3IgZmxvYXRpbmcgcG9pbnQgcmVnaXN0ZXJzIHRvIHN1
cHBvcnQgY2FsbGVlIHNhdmUgRlAgcmVnaXN0ZXJzLgorCisgICAgICAgICogaml0L0pJVEFyaXRo
bWV0aWMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9tb2QpOgorICAgICAg
ICBSZW1vdmVkIHVubmVjZXNzYXJ5ICNpZiBDUFUoWDg2XzY0KSBjaGVjayB0byB0aGlzIDMyIGJp
dCBvbmx5IGZpbGUuCisKKyAgICAgICAgKiBvZmZsaW5lYXNtL3g4Ni5yYjoKKyAgICAgICAgRml4
ZWQgV2luZG93cyBjYWxsZWUgc2F2ZXMgbmFtaW5nLgorCisgICAgICAgICogcnVudGltZS9WTS5j
cHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAg
ICAgICAoSlNDOjpWTTo6Y2FsbGVlU2F2ZVJlZ2lzdGVyc0J1ZmZlck9mZnNldCk6CisgICAgICAg
IChKU0M6OlZNOjpnZXRBbGxDYWxsZWVTYXZlUmVnaXN0ZXJzTWFwKToKKyAgICAgICAgUHJvdmlk
ZSBhIFJlZ2lzdGVyU2F2ZU1hcCB0aGF0IGhhcyBhbGwgcmVnaXN0ZXJzIHRoYXQgbWlnaHQgYmUg
c2F2ZWQuICBBZGRlZCBhIGNhbGxlZSBzYXZlIGJ1ZmZlciB0byBiZQorICAgICAgICB1c2VkIGZv
ciBPU1IgZXhpdCBhbmQgZm9yIGV4Y2VwdGlvbiBwcm9jZXNzaW5nIGluIGEgZnV0dXJlIHBhdGNo
LgorCiAyMDE1LTA5LTA4ICBTdWtvbHNhayBTYWtzaHV3b25nICA8c3Vrb2xzYWtAZ21haWwuY29t
PgogCiAgICAgICAgIFJlZmFjdG9yIHRoZSB0ZXN0IGZvciB0aGUgYXJpdGhtZXRpYyBpbnN0cnVj
dGlvbnMgaW4gV2ViQXNzZW1ibHkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50
eHQJKHJldmlzaW9uIDE4OTU0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3Rz
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzU3LDcgKzM1Nyw2IEBAIHNldChKYXZhU2NyaXB0Q29y
ZV9TT1VSQ0VTCiAgICAgaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcAogCiAgICAgaml0L0Fj
Y2Vzc29yQ2FsbEpJVFN0dWJSb3V0aW5lLmNwcAotICAgIGppdC9Bcml0eUNoZWNrRmFpbFJldHVy
blRodW5rcy5jcHAKICAgICBqaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAogICAgIGppdC9CaW5hcnlT
d2l0Y2guY3BwCiAgICAgaml0L0V4ZWN1dGFibGVBbGxvY2F0aW9uRnV6ei5jcHAKQEAgLTM4NSw2
ICszODQsOCBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGppdC9KSVRUb0RGR0Rl
ZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5jcHAKICAgICBqaXQvUG9seW1vcnBoaWNDYWxsU3R1
YlJvdXRpbmUuY3BwCiAgICAgaml0L1JlZy5jcHAKKyAgICBqaXQvUmVnaXN0ZXJBdE9mZnNldC5j
cHAKKyAgICBqaXQvUmVnaXN0ZXJBdE9mZnNldExpc3QuY3BwCiAgICAgaml0L1JlZ2lzdGVyUHJl
c2VydmF0aW9uV3JhcHBlckdlbmVyYXRvci5jcHAKICAgICBqaXQvUmVnaXN0ZXJTZXQuY3BwCiAg
ICAgaml0L1JlcGF0Y2guY3BwCkBAIC05MDMsNyArOTA0LDYgQEAgaWYgKEVOQUJMRV9GVExfSklU
KQogICAgICAgICBmdGwvRlRMT3BlcmF0aW9ucy5jcHAKICAgICAgICAgZnRsL0ZUTE91dHB1dC5j
cHAKICAgICAgICAgZnRsL0ZUTFJlY292ZXJ5T3Bjb2RlLmNwcAotICAgICAgICBmdGwvRlRMUmVn
aXN0ZXJBdE9mZnNldC5jcHAKICAgICAgICAgZnRsL0ZUTFNhdmVSZXN0b3JlLmNwcAogICAgICAg
ICBmdGwvRlRMU2xvd1BhdGhDYWxsLmNwcAogICAgICAgICBmdGwvRlRMU2xvd1BhdGhDYWxsS2V5
LmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ov
SmF2YVNjcmlwdENvcmUudmN4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCShyZXZpc2lv
biAxODk1NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJv
ai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC01NDQsNyArNTQ0LDYg
QEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGZ0bFxGVExPcGVyYXRpb25zLmNwcCIgLz4K
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGZ0bFxGVExPdXRwdXQuY3BwIiAvPgogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5cZnRsXEZUTFJlY292ZXJ5T3Bjb2RlLmNwcCIgLz4KLSAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGZ0bFxGVExSZWdpc3RlckF0T2Zmc2V0LmNwcCIgLz4KICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGZ0bFxGVExTYXZlUmVzdG9yZS5jcHAiIC8+CiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxmdGxcRlRMU2xvd1BhdGhDYWxsLmNwcCIgLz4KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGZ0bFxGVExTbG93UGF0aENhbGxLZXkuY3BwIiAvPgpAQCAt
NjE4LDcgKzYxNyw2IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRlclxQ
cm90b0NhbGxGcmFtZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnRlcnBy
ZXRlclxTdGFja1Zpc2l0b3IuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caml0
XEFjY2Vzc29yQ2FsbEpJVFN0dWJSb3V0aW5lLmNwcCIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXGppdFxBcml0eUNoZWNrRmFpbFJldHVyblRodW5rcy5jcHAiIC8+CiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxqaXRcQXNzZW1ibHlIZWxwZXJzLmNwcCIgLz4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXGppdFxCaW5hcnlTd2l0Y2guY3BwIiAvPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5caml0XEV4ZWN1dGFibGVBbGxvY2F0aW9uRnV6ei5jcHAiIC8+CkBAIC02NDgs
NiArNjQ2LDggQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGppdFxTZXR1cFZhcmFyZ3NG
cmFtZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxqaXRcUG9seW1vcnBoaWND
YWxsU3R1YlJvdXRpbmUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caml0XFJl
Zy5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxqaXRcUmVnaXN0ZXJBdE9mZnNl
dC5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxqaXRcUmVnaXN0ZXJBdE9mZnNl
dExpc3QuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caml0XFJlZ2lzdGVyUHJl
c2VydmF0aW9uV3JhcHBlckdlbmVyYXRvci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxqaXRcUmVnaXN0ZXJTZXQuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
aml0XFJlcGF0Y2guY3BwIiAvPgpAQCAtMTI5NSw3ICsxMjk1LDYgQEAKICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGZ0bFxGVExPcGVyYXRpb25zLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxmdGxcRlRMT3V0cHV0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxm
dGxcRlRMUmVjb3ZlcnlPcGNvZGUuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGZ0
bFxGVExSZWdpc3RlckF0T2Zmc2V0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxm
dGxcRlRMU2F2ZVJlc3RvcmUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGZ0bFxG
VExTbG93UGF0aENhbGwuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGZ0bFxGVExT
bG93UGF0aENhbGxLZXkuaCIgLz4KQEAgLTE0MTcsNyArMTQxNiw2IEBACiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRlclxSZWdpc3Rlci5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5caW50ZXJwcmV0ZXJcU3RhY2tWaXNpdG9yLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxqaXRcQWNjZXNzb3JDYWxsSklUU3R1YlJvdXRpbmUuaCIgLz4KLSAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGppdFxBcml0eUNoZWNrRmFpbFJldHVyblRodW5rcy5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caml0XEFzc2VtYmx5SGVscGVycy5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caml0XEJpbmFyeVN3aXRjaC5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5caml0XENDYWxsSGVscGVycy5oIiAvPgpAQCAtMTQ0OCw2ICsx
NDQ2LDggQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGppdFxTZXR1cFZhcmFyZ3NGcmFt
ZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caml0XFBvbHltb3JwaGljQ2FsbFN0
dWJSb3V0aW5lLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxqaXRcUmVnLmgiIC8+
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxqaXRcUmVnaXN0ZXJBdE9mZnNldC5oIiAvPgor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caml0XFJlZ2lzdGVyQXRPZmZzZXRMaXN0LmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxqaXRcUmVnaXN0ZXJNYXAuaCIgLz4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGppdFxSZWdpc3RlclByZXNlcnZhdGlvbldyYXBwZXJHZW5l
cmF0b3IuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGppdFxSZWdpc3RlclNldC5o
IiAvPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ov
SmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ou
ZmlsdGVycwkocmV2aXNpb24gMTg5NTQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDkxLDkgKzE0OTEsNiBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChD
b25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVj
dE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3RvclByb3RvY29sT2JqZWN0cy5jcHAiPgogICAg
ICAgPEZpbHRlcj5EZXJpdmVkIFNvdXJjZXM8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KLSAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGppdFxBcml0eUNoZWNrRmFpbFJldHVyblRodW5rcy5j
cHAiPgotICAgICAgPEZpbHRlcj5qaXQ8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGppdFxSZWdpc3RlclByZXNlcnZhdGlvbldyYXBwZXJHZW5l
cmF0b3IuY3BwIj4KICAgICAgIDxGaWx0ZXI+aml0PC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+
CkBAIC00MDM0LDkgKzQwMzEsNiBAQAogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAg
ICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25C
dWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZl
ZFNvdXJjZXNcSlNEYXRhVmlld1Byb3RvdHlwZS5sdXQuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGppdFxBcml0eUNoZWNrRmFpbFJldHVyblRodW5rcy5oIj4KLSAgICAgIDxGaWx0
ZXI+aml0PC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxqaXRcUmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVyR2VuZXJhdG9yLmgiPgogICAgICAg
PEZpbHRlcj5qaXQ8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxODk1NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtMzgyLDEyICszODIsOCBAQAogCQkwRjZCMUNCQTE4NjEyNDRDMDA4NDVEOTcgLyogUmVn
aXN0ZXJQcmVzZXJ2YXRpb25Nb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjZCMUNCODE4NjEyNDRDMDA4NDVEOTcgLyogUmVnaXN0ZXJQcmVzZXJ2
YXRpb25Nb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMEY2QjFDQkQxODYxMjQ2QTAwODQ1RDk3IC8qIFJlZ2lzdGVyUHJlc2VydmF0aW9uV3Jh
cHBlckdlbmVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjZCMUNCQjE4NjEyNDZBMDA4NDVEOTcgLyogUmVnaXN0ZXJQcmVzZXJ2YXRpb25X
cmFwcGVyR2VuZXJhdG9yLmNwcCAqLzsgfTsKIAkJMEY2QjFDQkUxODYxMjQ2QTAwODQ1RDk3IC8q
IFJlZ2lzdGVyUHJlc2VydmF0aW9uV3JhcHBlckdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2QjFDQkMxODYxMjQ2QTAwODQ1RDk3IC8q
IFJlZ2lzdGVyUHJlc2VydmF0aW9uV3JhcHBlckdlbmVyYXRvci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTBGNkIxQ0MzMTg2MkM0NzgwMDg0NUQ5
NyAvKiBGVExSZWdpc3RlckF0T2Zmc2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGNkIxQ0JGMTg2MkM0NzgwMDg0NUQ5NyAvKiBGVExSZWdpc3Rl
ckF0T2Zmc2V0LmNwcCAqLzsgfTsKLQkJMEY2QjFDQzQxODYyQzQ3ODAwODQ1RDk3IC8qIEZUTFJl
Z2lzdGVyQXRPZmZzZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGNkIxQ0MwMTg2MkM0NzgwMDg0NUQ5NyAvKiBGVExSZWdpc3RlckF0T2Zmc2V0Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY2QjFD
QzUxODYyQzQ3ODAwODQ1RDk3IC8qIEZUTFVud2luZEluZm8uY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2QjFDQzExODYyQzQ3ODAwODQ1RDk3IC8q
IEZUTFVud2luZEluZm8uY3BwICovOyB9OwogCQkwRjZCMUNDNjE4NjJDNDc4MDA4NDVEOTcgLyog
RlRMVW53aW5kSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY2QjFDQzIxODYyQzQ3ODAwODQ1RDk3IC8qIEZUTFVud2luZEluZm8uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkwRjZCMUNDOTE4NjQx
REY4MDA4NDVEOTcgLyogQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3MuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2QjFDQzcxODY0MURGODAwODQ1
RDk3IC8qIEFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzLmNwcCAqLzsgfTsKLQkJMEY2QjFDQ0Ex
ODY0MURGODAwODQ1RDk3IC8qIEFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjZCMUNDODE4NjQxREY4MDA4
NDVEOTcgLyogQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjZDNzM1MDFBQzlGOTlGMDBCRTE2ODIg
LyogVmFyaWFibGVXcml0ZUZpcmVEZXRhaWwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2QzczNEUxQUM5Rjk5RjAwQkUxNjgyIC8qIFZhcmlhYmxl
V3JpdGVGaXJlRGV0YWlsLmNwcCAqLzsgfTsKIAkJMEY2QzczNTExQUM5Rjk5RjAwQkUxNjgyIC8q
IFZhcmlhYmxlV3JpdGVGaXJlRGV0YWlsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjZDNzM0RjFBQzlGOTlGMDBCRTE2ODIgLyogVmFyaWFibGVXcml0
ZUZpcmVEZXRhaWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwRjZFODQ1QTE5MDMwQkVGMDA1NjI3NDEgLyogREZHVmFyaWFibGVBY2Nlc3NEYXRh
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNkU4
NDU5MTkwMzBCRUYwMDU2Mjc0MSAvKiBERkdWYXJpYWJsZUFjY2Vzc0RhdGEuY3BwICovOyB9OwpA
QCAtOTg3LDYgKzk4Myw4IEBACiAJCTY1MTEyMzA3MTQwNDZCMEEwMDJCMTAxRCAvKiB0ZXN0UmVn
RXhwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1
MTEyMkU1MTQwNDY5QkEwMDJCMTAxRCAvKiB0ZXN0UmVnRXhwLmNwcCAqLzsgfTsKIAkJNjUxNEYy
MTkxOEIzRTE2NzAwOThGRjhCIC8qIEJ5dGVjb2Rlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjUxNEYyMTcxOEIzRTE2NzAwOThGRjhCIC8qIEJ5dGVj
b2Rlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTY1MzAzRDY0MTQ0N0I5RTEwMEQzRjkwNCAvKiBQYXJzZXJUb2tlbnMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1MzAzRDYzMTQ0N0I5RTEwMEQzRjkw
NCAvKiBQYXJzZXJUb2tlbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQk2NTQwQzdBMDFCODJFMUMzMDAwRjZCNzkgLyogUmVnaXN0ZXJBdE9mZnNl
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTQw
Qzc5RTFCODJEOUNFMDAwRjZCNzkgLyogUmVnaXN0ZXJBdE9mZnNldC5jcHAgKi87IH07CisJCTY1
NDBDN0ExMUI4MkUxQzMwMDBGNkI3OSAvKiBSZWdpc3RlckF0T2Zmc2V0TGlzdC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTQwQzc5QzFCODJEOTlE
MDAwRjZCNzkgLyogUmVnaXN0ZXJBdE9mZnNldExpc3QuY3BwICovOyB9OwogCQk2NTQ2RjUyMTFB
MzJCMzEzMDA2RjA3RDUgLyogTnVsbEdldHRlckZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NDZGNTFGMUEzMkE1OUMwMDZGMDdENSAv
KiBOdWxsR2V0dGVyRnVuY3Rpb24uY3BwICovOyB9OwogCQk2NTUyNUZDNTFBNkREODAxMDA3QjU0
OTUgLyogTnVsbFNldHRlckZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDY1NTI1RkMzMUE2REQzQjMwMDdCNTQ5NSAvKiBOdWxsU2V0dGVy
RnVuY3Rpb24uY3BwICovOyB9OwogCQk2NTUzQTMzMTE3QTFGMUVFMDA4Q0Y2RjMgLyogQ29tbW9u
U2xvd1BhdGhzRXhjZXB0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA2NTUzQTMyRjE3QTFGMUVFMDA4Q0Y2RjMgLyogQ29tbW9uU2xvd1BhdGhz
RXhjZXB0aW9ucy5jcHAgKi87IH07CkBAIC0yMjE0LDEyICsyMjEyLDggQEAKIAkJMEY2QjFDQjgx
ODYxMjQ0QzAwODQ1RDk3IC8qIFJlZ2lzdGVyUHJlc2VydmF0aW9uTW9kZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdpc3RlclByZXNlcnZhdGlvbk1vZGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY2QjFDQkIxODYxMjQ2QTAwODQ1RDk3IC8qIFJlZ2lz
dGVyUHJlc2VydmF0aW9uV3JhcHBlckdlbmVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBSZWdpc3RlclByZXNlcnZhdGlvbldyYXBwZXJHZW5lcmF0b3IuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjZCMUNCQzE4NjEyNDZBMDA4NDVEOTcg
LyogUmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVyR2VuZXJhdG9yLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ2lzdGVyUHJlc2VydmF0aW9uV3JhcHBlckdlbmVyYXRvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRjZCMUNCRjE4NjJDNDc4MDA4NDVEOTcg
LyogRlRMUmVnaXN0ZXJBdE9mZnNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBGVExSZWdpc3RlckF0T2Zmc2V0LmNwcDsgcGF0aCA9IGZ0bC9GVExSZWdpc3RlckF0
T2Zmc2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEY2QjFDQzAxODYyQzQ3
ODAwODQ1RDk3IC8qIEZUTFJlZ2lzdGVyQXRPZmZzZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gRlRMUmVnaXN0ZXJBdE9mZnNldC5oOyBwYXRoID0gZnRsL0ZUTFJlZ2lzdGVy
QXRPZmZzZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY2QjFDQzExODYyQzQ3
ODAwODQ1RDk3IC8qIEZUTFVud2luZEluZm8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gRlRMVW53aW5kSW5mby5jcHA7IHBhdGggPSBmdGwvRlRMVW53aW5kSW5mby5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNkIxQ0MyMTg2MkM0NzgwMDg0NUQ5
NyAvKiBGVExVbndpbmRJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZU
TFVud2luZEluZm8uaDsgcGF0aCA9IGZ0bC9GVExVbndpbmRJbmZvLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTBGNkIxQ0M3MTg2NDFERjgwMDg0NUQ5NyAvKiBBcml0eUNoZWNrRmFp
bFJldHVyblRodW5rcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBB
cml0eUNoZWNrRmFpbFJldHVyblRodW5rcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTBGNkIxQ0M4MTg2NDFERjgwMDg0NUQ5NyAvKiBBcml0eUNoZWNrRmFpbFJldHVyblRodW5r
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcml0eUNoZWNrRmFpbFJldHVy
blRodW5rcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjZDNzM0RTFBQzlGOTlG
MDBCRTE2ODIgLyogVmFyaWFibGVXcml0ZUZpcmVEZXRhaWwuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gVmFyaWFibGVXcml0ZUZpcmVEZXRhaWwuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRjZDNzM0RjFBQzlGOTlGMDBCRTE2ODIgLyogVmFyaWFi
bGVXcml0ZUZpcmVEZXRhaWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmFy
aWFibGVXcml0ZUZpcmVEZXRhaWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY2
RTg0NTkxOTAzMEJFRjAwNTYyNzQxIC8qIERGR1ZhcmlhYmxlQWNjZXNzRGF0YS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdWYXJpYWJsZUFjY2Vzc0RhdGEuY3Bw
OyBwYXRoID0gZGZnL0RGR1ZhcmlhYmxlQWNjZXNzRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0yNzk5LDYgKzI3OTMsMTAgQEAKIAkJNjUyQTNBMjMxNjUxQzY5NzAwQTgw
QUZFIC8qIEE2NERPcGNvZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQTY0
RE9wY29kZS5oOyBwYXRoID0gZGlzYXNzZW1ibGVyL0FSTTY0L0E2NERPcGNvZGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjUzMDNENjMxNDQ3QjlFMTAwRDNGOTA0IC8qIFBhcnNl
clRva2Vucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYXJzZXJUb2tlbnMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU0MDBDMTAwQTY5QkFGMjAwNTA5ODg3
IC8qIFByb3BlcnR5TmFtZUFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBQcm9wZXJ0eU5hbWVBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2NTQw
Qzc5QzFCODJEOTlEMDAwRjZCNzkgLyogUmVnaXN0ZXJBdE9mZnNldExpc3QuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVnaXN0ZXJBdE9mZnNldExpc3QuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2NTQwQzc5RDFCODJEOTlEMDAwRjZCNzkgLyog
UmVnaXN0ZXJBdE9mZnNldExpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVnaXN0ZXJBdE9mZnNldExpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjU0
MEM3OUUxQjgyRDlDRTAwMEY2Qjc5IC8qIFJlZ2lzdGVyQXRPZmZzZXQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVnaXN0ZXJBdE9mZnNldC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTY1NDBDNzlGMUI4MkQ5Q0UwMDBGNkI3OSAvKiBSZWdpc3Rl
ckF0T2Zmc2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ2lzdGVyQXRP
ZmZzZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU0NkY1MUYxQTMyQTU5QzAw
NkYwN0Q1IC8qIE51bGxHZXR0ZXJGdW5jdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IGxpbmVFbmRpbmcgPSAwOyBwYXRoID0gTnVsbEdldHRlckZ1bmN0aW9uLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgeGNMYW5ndWFnZVNwZWNpZmljYXRpb25JZGVudGlmaWVyID0g
eGNvZGUubGFuZy5jcHA7IH07CiAJCTY1NDZGNTIwMUEzMkE1OUMwMDZGMDdENSAvKiBOdWxsR2V0
dGVyRnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTnVsbEdldHRl
ckZ1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1NTI1RkMzMUE2REQz
QjMwMDdCNTQ5NSAvKiBOdWxsU2V0dGVyRnVuY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTnVsbFNldHRlckZ1bmN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTM5NjgsOCArMzk2Niw2IEBACiAJCQkJMEZFQTBBMDYxNzA1MTNEQjAw
QkI3MjJDIC8qIEZUTE91dHB1dC5oICovLAogCQkJCTBGNDg1MzI1MTg3REZERUMwMDgzQjY4NyAv
KiBGVExSZWNvdmVyeU9wY29kZS5jcHAgKi8sCiAJCQkJMEY0ODUzMjYxODdERkRFQzAwODNCNjg3
IC8qIEZUTFJlY292ZXJ5T3Bjb2RlLmggKi8sCi0JCQkJMEY2QjFDQkYxODYyQzQ3ODAwODQ1RDk3
IC8qIEZUTFJlZ2lzdGVyQXRPZmZzZXQuY3BwICovLAotCQkJCTBGNkIxQ0MwMTg2MkM0NzgwMDg0
NUQ5NyAvKiBGVExSZWdpc3RlckF0T2Zmc2V0LmggKi8sCiAJCQkJMEZDRUZBQTkxODA0QzEzRTAw
NDcyQ0U0IC8qIEZUTFNhdmVSZXN0b3JlLmNwcCAqLywKIAkJCQkwRkNFRkFBQTE4MDRDMTNFMDA0
NzJDRTQgLyogRlRMU2F2ZVJlc3RvcmUuaCAqLywKIAkJCQkwRjI1RjFBQTE4MTYzNUYzMDA1MjJG
MzkgLyogRlRMU2xvd1BhdGhDYWxsLmNwcCAqLywKQEAgLTQxMDAsOCArNDA5Niw2IEBACiAJCQkJ
MEZGMDU0RjgxQUMzNUI0NDAwRTVCRTU3IC8qIEV4ZWN1dGFibGVBbGxvY2F0aW9uRnV6ei5oICov
LAogCQkJCTBGNzU3NkQwMThFMUZFRTkwMDJFRjRDRCAvKiBBY2Nlc3NvckNhbGxKSVRTdHViUm91
dGluZS5jcHAgKi8sCiAJCQkJMEY3NTc2RDExOEUxRkVFOTAwMkVGNENEIC8qIEFjY2Vzc29yQ2Fs
bEpJVFN0dWJSb3V0aW5lLmggKi8sCi0JCQkJMEY2QjFDQzcxODY0MURGODAwODQ1RDk3IC8qIEFy
aXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzLmNwcCAqLywKLQkJCQkwRjZCMUNDODE4NjQxREY4MDA4
NDVEOTcgLyogQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3MuaCAqLywKIAkJCQkwRjI0RTUzQjE3
RUE5RjU5MDBBQkIyMTcgLyogQXNzZW1ibHlIZWxwZXJzLmNwcCAqLywKIAkJCQkwRjI0RTUzQzE3
RUE5RjU5MDBBQkIyMTcgLyogQXNzZW1ibHlIZWxwZXJzLmggKi8sCiAJCQkJMEY2NEIyNkYxQTc4
NEJBRjAwNkU0RTY2IC8qIEJpbmFyeVN3aXRjaC5jcHAgKi8sCkBAIC00MTU0LDEyICs0MTQ4LDE0
IEBACiAJCQkJMEZDNzEyRTExN0NEODc4RjAwOENDOTNDIC8qIEpJVFRvREZHRGVmZXJyZWRDb21w
aWxhdGlvbkNhbGxiYWNrLmggKi8sCiAJCQkJQTc2RjU0QTIxM0IyOEFBQjAwRUYyQkNFIC8qIEpJ
VFdyaXRlQmFycmllci5oICovLAogCQkJCUE3NkM1MTc0MTE4Mjc0OEQwMDcxNUIwNSAvKiBKU0lu
dGVyZmFjZUpJVC5oICovLAotCQkJCTBGRUU5ODQyMUE4OTIyNzUwMDc1NEU5MyAvKiBTZXR1cFZh
cmFyZ3NGcmFtZS5jcHAgKi8sCi0JCQkJMEZFRTk4NDAxQTg4NjVCNjAwNzU0RTkzIC8qIFNldHVw
VmFyYXJnc0ZyYW1lLmggKi8sCiAJCQkJMEZFODM0MTUxQTZFRjk3QjAwRDA0ODQ3IC8qIFBvbHlt
b3JwaGljQ2FsbFN0dWJSb3V0aW5lLmNwcCAqLywKIAkJCQkwRkU4MzQxNjFBNkVGOTdCMDBEMDQ4
NDcgLyogUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuaCAqLywKIAkJCQkwRkE3QThFOTE4QjQx
M0M4MDA1MjM3MUQgLyogUmVnLmNwcCAqLywKIAkJCQkwRkE3QThFQTE4QjQxM0M4MDA1MjM3MUQg
LyogUmVnLmggKi8sCisJCQkJNjU0MEM3OUUxQjgyRDlDRTAwMEY2Qjc5IC8qIFJlZ2lzdGVyQXRP
ZmZzZXQuY3BwICovLAorCQkJCTY1NDBDNzlGMUI4MkQ5Q0UwMDBGNkI3OSAvKiBSZWdpc3RlckF0
T2Zmc2V0LmggKi8sCisJCQkJNjU0MEM3OUMxQjgyRDk5RDAwMEY2Qjc5IC8qIFJlZ2lzdGVyQXRP
ZmZzZXRMaXN0LmNwcCAqLywKKwkJCQk2NTQwQzc5RDFCODJEOTlEMDAwRjZCNzkgLyogUmVnaXN0
ZXJBdE9mZnNldExpc3QuaCAqLywKIAkJCQk2MjNBMzdFQjFCODdBN0JEMDA3NTQyMDkgLyogUmVn
aXN0ZXJNYXAuaCAqLywKIAkJCQkwRjZCMUNCQjE4NjEyNDZBMDA4NDVEOTcgLyogUmVnaXN0ZXJQ
cmVzZXJ2YXRpb25XcmFwcGVyR2VuZXJhdG9yLmNwcCAqLywKIAkJCQkwRjZCMUNCQzE4NjEyNDZB
MDA4NDVEOTcgLyogUmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVyR2VuZXJhdG9yLmggKi8sCkBA
IC00MTY5LDYgKzQxNjUsOCBAQAogCQkJCTBGMjRFNTRBMTdFRTI3NDkwMEFCQjIxNyAvKiBSZXBh
dGNoLmggKi8sCiAJCQkJMEZBN0E4RUQxOENFNEZEODAwNTIzNzFEIC8qIFNjcmF0Y2hSZWdpc3Rl
ckFsbG9jYXRvci5jcHAgKi8sCiAJCQkJMEYyNEU1NEIxN0VFMjc0OTAwQUJCMjE3IC8qIFNjcmF0
Y2hSZWdpc3RlckFsbG9jYXRvci5oICovLAorCQkJCTBGRUU5ODQyMUE4OTIyNzUwMDc1NEU5MyAv
KiBTZXR1cFZhcmFyZ3NGcmFtZS5jcHAgKi8sCisJCQkJMEZFRTk4NDAxQTg4NjVCNjAwNzU0RTkz
IC8qIFNldHVwVmFyYXJnc0ZyYW1lLmggKi8sCiAJCQkJQTcwOUYyRUYxN0EwQUMwNDAwNTEyRTk4
IC8qIFNsb3dQYXRoQ2FsbC5oICovLAogCQkJCUE3Mzg2NTUxMTE4Njk3QjQwMDU0MDI3OSAvKiBT
cGVjaWFsaXplZFRodW5rSklULmggKi8sCiAJCQkJQTdGRjY0N0ExOEM1MkU4NTAwQjU1MzA3IC8q
IFNwaWxsUmVnaXN0ZXJzTW9kZS5oICovLApAQCAtNTkxOSw3ICs1OTE3LDYgQEAKIAkJCQlCQzE4
QzNFNTBFMTZGNUNEMDBCMzQ0NjAgLyogQVBJQ2FzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNG
NjA1MTQwRTIwM0VGODAwQjlBNjREIC8qIEFyZ0xpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTJB
ODgwNjc5MTkxMDdENTUwMENCMEJCQiAvKiBERkdGdW5jdGlvbldoaXRlbGlzdC5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJMEY2QjFDQ0ExODY0MURGODAwODQ1RDk3IC8qIEFyaXR5Q2hlY2tGYWlsUmV0
dXJuVGh1bmtzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjZCMUNCOTE4NjEyNDRDMDA4NDVEOTcg
LyogQXJpdHlDaGVja01vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUExQTAwOUMxMTgzMUEyNkUw
MENGODcxMSAvKiBBUk02NEFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY4OThGMzIx
QjI3Njg5RjAwODNBMzNDIC8qIERGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmggaW4g
SGVhZGVycyAqLywKQEAgLTYzMTgsNyArNjMxNSw2IEBACiAJCQkJOUU3Mjk0MEIxOTBGMDUxNDAw
MUE5MUI1IC8qIEJ1bmRsZVBhdGguaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDg1MzJBMTg3REZE
RUMwMDgzQjY4NyAvKiBGVExSZWNvdmVyeU9wY29kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTM3
OTRFNzYxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggaW4gSGVhZGVycyAqLywK
LQkJCQkwRjZCMUNDNDE4NjJDNDc4MDA4NDVEOTcgLyogRlRMUmVnaXN0ZXJBdE9mZnNldC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEZDRUZBQUMxODA0QzEzRTAwNDcyQ0U0IC8qIEZUTFNhdmVSZXN0
b3JlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjI1RjFCMjE4MTYzNUYzMDA1MjJGMzkgLyogRlRM
U2xvd1BhdGhDYWxsLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzU0NjIyQjFCNjA2NUQxMDA1NDUz
ODYgLyogQ29uc3RydWN0QWJpbGl0eS5oIGluIEhlYWRlcnMgKi8sCkBAIC03Mzg1LDcgKzczODEs
NiBAQAogCQkJCTBGRTA1MDE1MUFBOTA5MTEwMEQzM0IzMyAvKiBEaXJlY3RBcmd1bWVudHNPZmZz
ZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1NUYwRjQxNEQxMDYzOTAwQUM3NjQ5IC8qIEFi
c3RyYWN0UEMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5QkQxMDdFQzM3NjAwNDI3QTQ4
IC8qIEFyZ0xpc3QuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMEY2QjFDQzkxODY0MURGODAwODQ1
RDk3IC8qIEFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTc5N0UwN0E5MUI4RkNGQjkwMDg0MDBCQSAvKiBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlFMzc5NEU3NTFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxl
QW5hbHl6ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY3NDNCQUExNkI4ODI0OTAwOUY5Mjc3
IC8qIEFSTTY0RGlzYXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNzY0OCw3ICs3NjQz
LDYgQEAKIAkJCQk4QjBGNDI0QzFBQkQ2REUyMDAzOTE3RUEgLyogSlNBcnJvd0Z1bmN0aW9uLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUEwQTJBMTcwOTYyOTYwMEJCNzIyQyAvKiBGVExPdXRw
dXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0ODUzMjkxODdERkRFQzAwODNCNjg3IC8qIEZU
TFJlY292ZXJ5T3Bjb2RlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTBGNkIxQ0MzMTg2MkM0Nzgw
MDg0NUQ5NyAvKiBGVExSZWdpc3RlckF0T2Zmc2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
Q0VGQUFCMTgwNEMxM0UwMDQ3MkNFNCAvKiBGVExTYXZlUmVzdG9yZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRjI1RjFCMTE4MTYzNUYzMDA1MjJGMzkgLyogRlRMU2xvd1BhdGhDYWxsLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGMjVGMUIzMTgxNjM1RjMwMDUyMkYzOSAvKiBGVExTbG93UGF0
aENhbGxLZXkuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC03OTE5LDYgKzc5MTMsOCBAQAogCQkJCTBG
M0UwMUFBMTlEMzUzQTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGRjYwQUMzMTY3NDBGODgwMDAyOTc3OSAvKiBSZWR1Y2VXaGl0ZXNwYWNl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQTdBOEVCMThCNDEzQzgwMDUyMzcxRCAvKiBSZWcu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNjU0MEM3QTExQjgyRTFDMzAwMEY2Qjc5IC8qIFJlZ2lz
dGVyQXRPZmZzZXRMaXN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTY1NDBDN0EwMUI4MkUxQzMw
MDBGNkI3OSAvKiBSZWdpc3RlckF0T2Zmc2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0Mjgw
ODQxMTA3RUMwOTMwMDEzRTdCMiAvKiBSZWdFeHAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTE3
MTJCM0IxMUM3QjIxMjAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGRTA1MDJDMUFBOTA5NTYwMEQzM0IzMyAvKiBWYXJPZmZzZXQuY3BwIGluIFNvdXJjZXMg
Ki8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5m
by5oCShyZXZpc2lvbiAxODk1NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q2FsbExpbmtJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNyw3ICsxMTcsNyBAQCBwdWJsaWM6
CiAgICAgICAgIENvZGVMb2NhdGlvbk5lYXJDYWxsIGNhbGxSZXR1cm5Mb2NhdGlvbiwgQ29kZUxv
Y2F0aW9uRGF0YUxhYmVsUHRyIGhvdFBhdGhCZWdpbiwKICAgICAgICAgQ29kZUxvY2F0aW9uTmVh
ckNhbGwgaG90UGF0aE90aGVyLCB1bnNpZ25lZCBjYWxsZWVHUFIpCiAgICAgewotICAgICAgICBt
X3JlZ2lzdGVyUHJlc2VydmF0aW9uTW9kZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihNdXN0UHJl
c2VydmVSZWdpc3RlcnMpOworICAgICAgICBtX3JlZ2lzdGVyUHJlc2VydmF0aW9uTW9kZSA9IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihSZWdpc3RlclByZXNlcnZhdGlvbk5vdFJlcXVpcmVkKTsKICAg
ICAgICAgbV9jYWxsVHlwZSA9IGNhbGxUeXBlOwogICAgICAgICBtX2NvZGVPcmlnaW4gPSBjb2Rl
T3JpZ2luOwogICAgICAgICBtX2NhbGxSZXR1cm5Mb2NhdGlvbiA9IGNhbGxSZXR1cm5Mb2NhdGlv
bjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
CShyZXZpc2lvbiAxODk1NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksNiArNjksMTAgQEAKICNpbmNsdWRlIDx3
dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9VbmlxdWVkU3RyaW5n
SW1wbC5oPgogCisjaWYgRU5BQkxFKEpJVCkKKyNpbmNsdWRlICJSZWdpc3RlckF0T2Zmc2V0TGlz
dC5oIgorI2VuZGlmCisKICNpZiBFTkFCTEUoREZHX0pJVCkKICNpbmNsdWRlICJERkdPcGVyYXRp
b25zLmgiCiAjZW5kaWYKQEAgLTE4ODksNiArMTg5MywxMCBAQCBDb2RlQmxvY2s6OkNvZGVCbG9j
ayhTY3JpcHRFeGVjdXRhYmxlKiBvCiAgICAgaWYgKHNpemVfdCBzaXplID0gdW5saW5rZWRDb2Rl
QmxvY2stPm51bWJlck9mT2JqZWN0QWxsb2NhdGlvblByb2ZpbGVzKCkpCiAgICAgICAgIG1fb2Jq
ZWN0QWxsb2NhdGlvblByb2ZpbGVzLnJlc2l6ZVRvRml0KHNpemUpOwogCisjaWYgRU5BQkxFKEpJ
VCkKKyAgICBzZXRDYWxsZWVTYXZlUmVnaXN0ZXJzKFJlZ2lzdGVyU2V0OjpsbGludEJhc2VsaW5l
Q2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKKyNlbmRpZgorCiAgICAgLy8gQ29weSBhbmQgdHJhbnNs
YXRlIHRoZSBVbmxpbmtlZEluc3RydWN0aW9ucwogICAgIHVuc2lnbmVkIGluc3RydWN0aW9uQ291
bnQgPSB1bmxpbmtlZENvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuY291bnQoKTsKICAgICBVbmxp
bmtlZEluc3RydWN0aW9uU3RyZWFtOjpSZWFkZXIgaW5zdHJ1Y3Rpb25SZWFkZXIodW5saW5rZWRD
b2RlQmxvY2stPmluc3RydWN0aW9ucygpKTsKQEAgLTMzMDUsNiArMzMxMywzMyBAQCB1bnNpZ25l
ZCBDb2RlQmxvY2s6OnJlb3B0aW1pemF0aW9uUmV0cnlDCiB9CiAKICNpZiBFTkFCTEUoSklUKQor
dm9pZCBDb2RlQmxvY2s6OnNldENhbGxlZVNhdmVSZWdpc3RlcnMoUmVnaXN0ZXJTZXQgY2FsbGVl
U2F2ZVJlZ2lzdGVycykKK3sKKyAgICBtX2NhbGxlZVNhdmVSZWdpc3RlcnMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFJlZ2lzdGVyQXRPZmZzZXRMaXN0PihjYWxsZWVTYXZlUmVnaXN0ZXJzKTsKK30KKwor
dm9pZCBDb2RlQmxvY2s6OnNldENhbGxlZVNhdmVSZWdpc3RlcnMoc3RkOjp1bmlxdWVfcHRyPFJl
Z2lzdGVyQXRPZmZzZXRMaXN0PiByZWdpc3RlckF0T2Zmc2V0TGlzdCkKK3sKKyAgICBtX2NhbGxl
ZVNhdmVSZWdpc3RlcnMgPSBXVEY6Om1vdmUocmVnaXN0ZXJBdE9mZnNldExpc3QpOworfQorICAg
IAorc3RhdGljIHNpemVfdCByb3VuZENhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycyhz
aXplX3QgY2FsbGVlU2F2ZVJlZ2lzdGVycykKK3sKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
Y3B1UmVnaXN0ZXJTaXplID0gc2l6ZW9mKHZvaWQqKTsKKyAgICByZXR1cm4gKFdURjo6cm91bmRV
cFRvTXVsdGlwbGVPZihzaXplb2YoUmVnaXN0ZXIpLCBjYWxsZWVTYXZlUmVnaXN0ZXJzICogY3B1
UmVnaXN0ZXJTaXplKSAvIHNpemVvZihSZWdpc3RlcikpOworCit9CisKK3NpemVfdCBDb2RlQmxv
Y2s6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKQorewor
ICAgIHJldHVybiByb3VuZENhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycyhudW1iZXJP
ZkxMSW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOworfQorCitzaXplX3QgQ29kZUJs
b2NrOjpjYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKQoreworICAgIHJldHVybiBy
b3VuZENhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycyhtX2NhbGxlZVNhdmVSZWdpc3Rl
cnMtPnNpemUoKSk7Cit9CisKIHZvaWQgQ29kZUJsb2NrOjpjb3VudFJlb3B0aW1pemF0aW9uKCkK
IHsKICAgICBtX3Jlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyKys7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAxODk1NDMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkK
QEAgLTgwLDYgKzgwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEV4ZWNTdGF0ZTsKIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKK2NsYXNzIFJlZ2lzdGVyQXRPZmZzZXRMaXN0Owog
Y2xhc3MgVHlwZUxvY2F0aW9uOwogY2xhc3MgSlNNb2R1bGVFbnZpcm9ubWVudDsKIApAQCAtNzI5
LDYgKzczMCwxMCBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdW5zaWduZWQgcmVv
cHRpbWl6YXRpb25SZXRyeUNvdW50ZXIoKSBjb25zdDsKICAgICB2b2lkIGNvdW50UmVvcHRpbWl6
YXRpb24oKTsKICNpZiBFTkFCTEUoSklUKQorICAgIHN0YXRpYyB1bnNpZ25lZCBudW1iZXJPZkxM
SW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCkgeyByZXR1cm4gUmVnaXN0ZXJTZXQ6Omxs
aW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCkubnVtYmVyT2ZTZXRSZWdpc3RlcnMoKTsg
fQorICAgIHN0YXRpYyBzaXplX3QgbGxpbnRCYXNlbGluZUNhbGxlZVNhdmVTcGFjZUFzVmlydHVh
bFJlZ2lzdGVycygpOworICAgIHNpemVfdCBjYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3Rl
cnMoKTsKKwogICAgIHVuc2lnbmVkIG51bWJlck9mREZHQ29tcGlsZXMoKTsKIAogICAgIGludDMy
X3QgY29kZVR5cGVUaHJlc2hvbGRNdWx0aXBsaWVyKCkgY29uc3Q7CkBAIC04MTQsNyArODE5LDE0
IEBAIHB1YmxpYzoKICAgICB1aW50MzJfdCBleGl0Q291bnRUaHJlc2hvbGRGb3JSZW9wdGltaXph
dGlvbkZyb21Mb29wKCk7CiAgICAgYm9vbCBzaG91bGRSZW9wdGltaXplTm93KCk7CiAgICAgYm9v
bCBzaG91bGRSZW9wdGltaXplRnJvbUxvb3BOb3coKTsKKworICAgIHZvaWQgc2V0Q2FsbGVlU2F2
ZVJlZ2lzdGVycyhSZWdpc3RlclNldCk7CisgICAgdm9pZCBzZXRDYWxsZWVTYXZlUmVnaXN0ZXJz
KHN0ZDo6dW5pcXVlX3B0cjxSZWdpc3RlckF0T2Zmc2V0TGlzdD4pOworICAgIAorICAgIFJlZ2lz
dGVyQXRPZmZzZXRMaXN0KiBjYWxsZWVTYXZlUmVnaXN0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9j
YWxsZWVTYXZlUmVnaXN0ZXJzLmdldCgpOyB9CiAjZWxzZSAvLyBObyBKSVQKKyAgICBzdGF0aWMg
dW5zaWduZWQgbnVtYmVyT2ZMTEludEJhc2VsaW5lQ2FsbGVlU2F2ZVJlZ2lzdGVycygpIHsgcmV0
dXJuIDA7IH0KKyAgICBzdGF0aWMgc2l6ZV90IGxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VB
c1ZpcnR1YWxSZWdpc3RlcnMoKSB7IHJldHVybiAwOyB9OwogICAgIHZvaWQgb3B0aW1pemVBZnRl
cldhcm1VcCgpIHsgfQogICAgIHVuc2lnbmVkIG51bWJlck9mREZHQ29tcGlsZXMoKSB7IHJldHVy
biAwOyB9CiAjZW5kaWYKQEAgLTg1Myw2ICs4NjUsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgLy8g
RklYTUU6IE1ha2UgdGhlc2UgcmVtYWluaW5nIG1lbWJlcnMgcHJpdmF0ZS4KIAorICAgIGludCBt
X251bUxvY2FsUmVnaXN0ZXJzRm9yQ2FsbGVlU2F2ZXM7CiAgICAgaW50IG1fbnVtQ2FsbGVlUmVn
aXN0ZXJzOwogICAgIGludCBtX251bVZhcnM7CiAgICAgYm9vbCBtX2lzQ29uc3RydWN0b3IgOiAx
OwpAQCAtMTAxMyw2ICsxMDI2LDcgQEAgcHJpdmF0ZToKICAgICBTZW50aW5lbExpbmtlZExpc3Q8
TExJbnRDYWxsTGlua0luZm8sIEJhc2ljUmF3U2VudGluZWxOb2RlPExMSW50Q2FsbExpbmtJbmZv
Pj4gbV9pbmNvbWluZ0xMSW50Q2FsbHM7CiAgICAgUmVmUHRyPEpJVENvZGU+IG1faml0Q29kZTsK
ICNpZiBFTkFCTEUoSklUKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWdpc3RlckF0T2Zmc2V0TGlz
dD4gbV9jYWxsZWVTYXZlUmVnaXN0ZXJzOwogICAgIEJhZzxTdHJ1Y3R1cmVTdHViSW5mbz4gbV9z
dHViSW5mb3M7CiAgICAgQmFnPEJ5VmFsSW5mbz4gbV9ieVZhbEluZm9zOwogICAgIEJhZzxDYWxs
TGlua0luZm8+IG1fY2FsbExpbmtJbmZvczsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lv
biAxODk1NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU4LDYgKzE1OCw4IEBAIEJ5dGVjb2Rl
R2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYKICAgICBmb3IgKGF1dG8mIGNvbnN0YW50
UmVnaXN0ZXIgOiBtX2xpbmtUaW1lQ29uc3RhbnRSZWdpc3RlcnMpCiAgICAgICAgIGNvbnN0YW50
UmVnaXN0ZXIgPSBudWxscHRyOwogCisgICAgYWxsb2NhdGVDYWxsZWVTYXZlU3BhY2UoKTsKKwog
ICAgIG1fY29kZUJsb2NrLT5zZXROdW1QYXJhbWV0ZXJzKDEpOyAvLyBBbGxvY2F0ZSBzcGFjZSBm
b3IgInRoaXMiCiAKICAgICBlbWl0T3Bjb2RlKG9wX2VudGVyKTsKQEAgLTE5OCw2ICsyMDAsOCBA
QCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mCiAKICAgICBpZiAobV9p
c0J1aWx0aW5GdW5jdGlvbikKICAgICAgICAgbV9zaG91bGRFbWl0RGVidWdIb29rcyA9IGZhbHNl
OworCisgICAgYWxsb2NhdGVDYWxsZWVTYXZlU3BhY2UoKTsKICAgICAKICAgICBTeW1ib2xUYWJs
ZSogZnVuY3Rpb25TeW1ib2xUYWJsZSA9IFN5bWJvbFRhYmxlOjpjcmVhdGUoKm1fdm0pOwogICAg
IGZ1bmN0aW9uU3ltYm9sVGFibGUtPnNldFVzZXNOb25TdHJpY3RFdmFsKG1fdXNlc05vblN0cmlj
dEV2YWwpOwpAQCAtNDkzLDYgKzQ5Nyw4IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdl
bmVyYXRvcihWTSYKICAgICBmb3IgKGF1dG8mIGNvbnN0YW50UmVnaXN0ZXIgOiBtX2xpbmtUaW1l
Q29uc3RhbnRSZWdpc3RlcnMpCiAgICAgICAgIGNvbnN0YW50UmVnaXN0ZXIgPSBudWxscHRyOwog
CisgICAgYWxsb2NhdGVDYWxsZWVTYXZlU3BhY2UoKTsKKwogICAgIG1fY29kZUJsb2NrLT5zZXRO
dW1QYXJhbWV0ZXJzKDEpOwogCiAgICAgZW1pdE9wY29kZShvcF9lbnRlcik7CkBAIC01MzcsNiAr
NTQzLDggQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJgogICAgIGlm
IChtX2lzQnVpbHRpbkZ1bmN0aW9uKQogICAgICAgICBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzID0g
ZmFsc2U7CiAKKyAgICBhbGxvY2F0ZUNhbGxlZVNhdmVTcGFjZSgpOworCiAgICAgU3ltYm9sVGFi
bGUqIG1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUgPSBTeW1ib2xUYWJsZTo6Y3JlYXRlKCpt
X3ZtKTsKICAgICBtb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlLT5zZXRVc2VzTm9uU3RyaWN0
RXZhbChtX3VzZXNOb25TdHJpY3RFdmFsKTsKICAgICBtb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRh
YmxlLT5zZXRTY29wZVR5cGUoU3ltYm9sVGFibGU6OlNjb3BlVHlwZTo6TGV4aWNhbFNjb3BlKTsK
QEAgLTMwNjQsNiArMzA3MiwxNyBAQCBMYWJlbFNjb3BlUHRyIEJ5dGVjb2RlR2VuZXJhdG9yOjpj
b250aW51CiAgICAgcmV0dXJuIExhYmVsU2NvcGVQdHI6Om51bGwoKTsKIH0KIAordm9pZCBCeXRl
Y29kZUdlbmVyYXRvcjo6YWxsb2NhdGVDYWxsZWVTYXZlU3BhY2UoKQoreworICAgIHNpemVfdCB2
aXJ0dWFsUmVnaXN0ZXJDb3VudEZvckNhbGxlZVNhdmVzID0gQ29kZUJsb2NrOjpsbGludEJhc2Vs
aW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCk7CisKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHZpcnR1YWxSZWdpc3RlckNvdW50Rm9yQ2FsbGVlU2F2ZXM7IGkrKykgewor
ICAgICAgICBSZWdpc3RlcklEKiBsb2NhbFJlZ2lzdGVyID0gYWRkVmFyKCk7CisgICAgICAgIGxv
Y2FsUmVnaXN0ZXItPnJlZigpOworICAgICAgICBtX2xvY2FsUmVnaXN0ZXJzRm9yQ2FsbGVlU2F2
ZVJlZ2lzdGVycy5hcHBlbmQobG9jYWxSZWdpc3Rlcik7CisgICAgfQorfQorCiB2b2lkIEJ5dGVj
b2RlR2VuZXJhdG9yOjphbGxvY2F0ZUFuZEVtaXRTY29wZSgpCiB7CiAgICAgbV9zY29wZVJlZ2lz
dGVyID0gYWRkVmFyKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCShyZXZpc2lvbiAxODk1NDMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHdv
cmtpbmcgY29weSkKQEAgLTY5Nyw2ICs2OTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
QUxXQVlTX0lOTElORSB2b2lkIHJld2luZEJpbmFyeU9wKCk7CiAgICAgICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCByZXdpbmRVbmFyeU9wKCk7CiAKKyAgICAgICAgdm9pZCBhbGxvY2F0ZUNhbGxlZVNh
dmVTcGFjZSgpOwogICAgICAgICB2b2lkIGFsbG9jYXRlQW5kRW1pdFNjb3BlKCk7CiAgICAgICAg
IFJlZ2lzdGVySUQqIGVtaXRMb2FkQXJyb3dGdW5jdGlvblRoaXMoUmVnaXN0ZXJJRCopOwogICAg
ICAgICB2b2lkIGVtaXRDb21wbGV4UG9wU2NvcGVzKFJlZ2lzdGVySUQqLCBDb250cm9sRmxvd0Nv
bnRleHQqIHRvcFNjb3BlLCBDb250cm9sRmxvd0NvbnRleHQqIGJvdHRvbVNjb3BlKTsKQEAgLTgx
MCw2ICs4MTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogbV9uZXdU
YXJnZXRSZWdpc3RlciB7IG51bGxwdHIgfTsKICAgICAgICAgUmVnaXN0ZXJJRCogbV9saW5rVGlt
ZUNvbnN0YW50UmVnaXN0ZXJzW0xpbmtUaW1lQ29uc3RhbnRDb3VudF07CiAKKyAgICAgICAgU2Vn
bWVudGVkVmVjdG9yPFJlZ2lzdGVySUQqLCAxNj4gbV9sb2NhbFJlZ2lzdGVyc0ZvckNhbGxlZVNh
dmVSZWdpc3RlcnM7CiAgICAgICAgIFNlZ21lbnRlZFZlY3RvcjxSZWdpc3RlcklELCAzMj4gbV9j
b25zdGFudFBvb2xSZWdpc3RlcnM7CiAgICAgICAgIFNlZ21lbnRlZFZlY3RvcjxSZWdpc3RlcklE
LCAzMj4gbV9jYWxsZWVSZWdpc3RlcnM7CiAgICAgICAgIFNlZ21lbnRlZFZlY3RvcjxSZWdpc3Rl
cklELCAzMj4gbV9wYXJhbWV0ZXJzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdKSVRDb21waWxlci5jcHAJKHJldmlzaW9uIDE4OTU0MykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsy
OCw2IEBACiAKICNpZiBFTkFCTEUoREZHX0pJVCkKIAotI2luY2x1ZGUgIkFyaXR5Q2hlY2tGYWls
UmV0dXJuVGh1bmtzLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiREZHRmFp
bGVkRmluYWxpemVyLmgiCiAjaW5jbHVkZSAiREZHSW5saW5lQ2FjaGVXcmFwcGVySW5saW5lcy5o
IgpAQCAtMTAyLDcgKzEwMSwxMiBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRW50cnkoKQog
ICAgIC8vIGJvdGggbm9ybWFsIHJldHVybiBjb2RlIGFuZCB3aGVuIGp1bXBpbmcgdG8gYW4gZXhj
ZXB0aW9uIGhhbmRsZXIpLgogICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CiAgICAgZW1pdFB1
dEltbWVkaWF0ZVRvQ2FsbEZyYW1lSGVhZGVyKG1fY29kZUJsb2NrLCBKU1N0YWNrOjpDb2RlQmxv
Y2spOwotICAgIGppdEFzc2VydFRhZ3NJblBsYWNlKCk7Cit9CisKK3ZvaWQgSklUQ29tcGlsZXI6
OmNvbXBpbGVTZXR1cFJlZ2lzdGVyc0ZvckVudHJ5KCkKK3sKKyAgICBlbWl0U2F2ZUNhbGxlZVNh
dmVzKCk7CisgICAgZW1pdE1hdGVyaWFsaXplVGFnQ2hlY2tSZWdpc3RlcnMoKTsgICAgCiB9CiAK
IHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVCb2R5KCkKQEAgLTExOSw2ICsxMjMsOCBAQCB2b2lk
IEpJVENvbXBpbGVyOjpjb21waWxlRXhjZXB0aW9uSGFuZGxlCiAgICAgaWYgKCFtX2V4Y2VwdGlv
bkNoZWNrc1dpdGhDYWxsRnJhbWVSb2xsYmFjay5lbXB0eSgpKSB7CiAgICAgICAgIG1fZXhjZXB0
aW9uQ2hlY2tzV2l0aENhbGxGcmFtZVJvbGxiYWNrLmxpbmsodGhpcyk7CiAKKyAgICAgICAgY29w
eUNhbGxlZVNhdmVzVG9WTUNhbGxlZVNhdmVzQnVmZmVyKCk7CisKICAgICAgICAgLy8gbG9va3Vw
RXhjZXB0aW9uSGFuZGxlckZyb21DYWxsZXJGcmFtZSBpcyBwYXNzZWQgdHdvIGFyZ3VtZW50cywg
dGhlIFZNIGFuZCB0aGUgZXhlYyAodGhlIENhbGxGcmFtZSopLgogICAgICAgICBtb3ZlKFRydXN0
ZWRJbW1QdHIodm0oKSksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAgICAgIG1vdmUoR1BS
SW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CkBAIC0xMzcs
NiArMTQzLDggQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZUV4Y2VwdGlvbkhhbmRsZQogICAg
IGlmICghbV9leGNlcHRpb25DaGVja3MuZW1wdHkoKSkgewogICAgICAgICBtX2V4Y2VwdGlvbkNo
ZWNrcy5saW5rKHRoaXMpOwogCisgICAgICAgIGNvcHlDYWxsZWVTYXZlc1RvVk1DYWxsZWVTYXZl
c0J1ZmZlcigpOworCiAgICAgICAgIC8vIGxvb2t1cEV4Y2VwdGlvbkhhbmRsZXIgaXMgcGFzc2Vk
IHR3byBhcmd1bWVudHMsIHRoZSBWTSBhbmQgdGhlIGV4ZWMgKHRoZSBDYWxsRnJhbWUqKS4KICAg
ICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKHZtKCkpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwog
ICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjEpOwpAQCAtMjk0LDYgKzMwMiw3IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGUoKQog
CiAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihtX2dyYXBoLnN0YWNrUG9pbnRlck9mZnNldCgpICog
c2l6ZW9mKFJlZ2lzdGVyKSksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBzdGFja1BvaW50
ZXJSZWdpc3Rlcik7CiAgICAgY2hlY2tTdGFja1BvaW50ZXJBbGlnbm1lbnQoKTsKKyAgICBjb21w
aWxlU2V0dXBSZWdpc3RlcnNGb3JFbnRyeSgpOwogICAgIGNvbXBpbGVCb2R5KCk7CiAgICAgc2V0
RW5kT2ZNYWluUGF0aCgpOwogCkBAIC0zNTgsNiArMzY3LDggQEAgdm9pZCBKSVRDb21waWxlcjo6
Y29tcGlsZUZ1bmN0aW9uKCkKICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKG1fZ3JhcGguc3RhY2tQ
b2ludGVyT2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVn
aXN0ZXIsIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKICAgICBjaGVja1N0YWNrUG9pbnRlckFsaWdu
bWVudCgpOwogCisgICAgY29tcGlsZVNldHVwUmVnaXN0ZXJzRm9yRW50cnkoKTsKKwogICAgIC8v
ID09PSBGdW5jdGlvbiBib2R5IGNvZGUgZ2VuZXJhdGlvbiA9PT0KICAgICBtX3NwZWN1bGF0aXZl
ID0gc3RkOjptYWtlX3VuaXF1ZTxTcGVjdWxhdGl2ZUpJVD4oKnRoaXMpOwogICAgIGNvbXBpbGVC
b2R5KCk7CkBAIC0zOTcsMTEgKzQwOCw2IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVGdW5j
dGlvbigpCiAgICAgICAgIGFkZFB0cihUcnVzdGVkSW1tMzIobWF4RnJhbWVFeHRlbnRGb3JTbG93
UGF0aENhbGwpLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAgICAgYnJhbmNoVGVzdDMyKFplcm8s
IEdQUkluZm86OnJldHVyblZhbHVlR1BSKS5saW5rVG8oZnJvbUFyaXR5Q2hlY2ssIHRoaXMpOwog
ICAgIGVtaXRTdG9yZUNvZGVPcmlnaW4oQ29kZU9yaWdpbigwKSk7Ci0gICAgR1BSUmVnIHRodW5r
UmVnID0gR1BSSW5mbzo6YXJndW1lbnRHUFIxOwotICAgIENvZGVMb2NhdGlvbkxhYmVsKiBhcml0
eVRodW5rTGFiZWxzID0KLSAgICAgICAgbV92bS0+YXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3Mt
PnJldHVyblBDc0ZvcigqbV92bSwgbV9jb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSk7Ci0gICAg
bW92ZShUcnVzdGVkSW1tUHRyKGFyaXR5VGh1bmtMYWJlbHMpLCB0aHVua1JlZyk7Ci0gICAgbG9h
ZFB0cihCYXNlSW5kZXgodGh1bmtSZWcsIEdQUkluZm86OnJldHVyblZhbHVlR1BSLCB0aW1lc1B0
cigpKSwgdGh1bmtSZWcpOwogICAgIG1vdmUoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCk7CiAgICAgbV9jYWxsQXJpdHlGaXh1cCA9IGNhbGwoKTsKICAgICBq
dW1wKGZyb21Bcml0eUNoZWNrKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SklUQ29tcGlsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0pJVENvbXBpbGVyLmgJKHJldmlzaW9uIDE4OTU0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHSklUQ29tcGlsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjY1LDYgKzI2NSw3IEBA
IHByaXZhdGU6CiAgICAgCiAgICAgLy8gSW50ZXJuYWwgaW1wbGVtZW50YXRpb24gdG8gY29tcGls
ZS4KICAgICB2b2lkIGNvbXBpbGVFbnRyeSgpOworICAgIHZvaWQgY29tcGlsZVNldHVwUmVnaXN0
ZXJzRm9yRW50cnkoKTsKICAgICB2b2lkIGNvbXBpbGVCb2R5KCk7CiAgICAgdm9pZCBsaW5rKExp
bmtCdWZmZXImKTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NS
RW50cnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NS
RW50cnkuY3BwCShyZXZpc2lvbiAxODk1NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkVudHJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA4LDggKzMwOCwyNSBAQCB2b2lk
KiBwcmVwYXJlT1NSRW50cnkoRXhlY1N0YXRlKiBleGVjLCBDCiAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgcGl2b3RbaV0gPSBKU1ZhbHVlKCk7CiAgICAgfQorCisgICAgLy8gNikgQ29w
eSBvdXIgY2FsbGVlIHNhdmVzIHRvIGJ1ZmZlci4KKyNpZiBOVU1CRVJfT0ZfQ0FMTEVFX1NBVkVT
X1JFR0lTVEVSUyA+IDAKKyAgICBSZWdpc3RlckF0T2Zmc2V0TGlzdCogcmVnaXN0ZXJTYXZlTG9j
YXRpb25zID0gY29kZUJsb2NrLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCk7CisgICAgUmVnaXN0ZXJB
dE9mZnNldExpc3QqIGFsbENhbGxlZVNhdmVzID0gdm0tPmdldEFsbENhbGxlZVNhdmVSZWdpc3Rl
ck9mZnNldHMoKTsKKyAgICBSZWdpc3RlclNldCBkb250U2F2ZVJlZ2lzdGVycyA9IFJlZ2lzdGVy
U2V0KFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpLCBSZWdpc3RlclNldDo6YWxsRlBScygp
KTsKKworICAgIHVuc2lnbmVkIHJlZ2lzdGVyQ291bnQgPSByZWdpc3RlclNhdmVMb2NhdGlvbnMt
PnNpemUoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVnaXN0ZXJDb3VudDsgaSsr
KSB7CisgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQgY3VycmVudEVudHJ5ID0gcmVnaXN0ZXJTYXZl
TG9jYXRpb25zLT5hdChpKTsKKyAgICAgICAgaWYgKGRvbnRTYXZlUmVnaXN0ZXJzLmdldChjdXJy
ZW50RW50cnkucmVnKCkpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIFJlZ2lzdGVy
QXRPZmZzZXQqIHZtQ2FsbGVlU2F2ZXNFbnRyeSA9IGFsbENhbGxlZVNhdmVzLT5maW5kKGN1cnJl
bnRFbnRyeS5yZWcoKSk7CisgICAgICAgIAorICAgICAgICAqKGJpdHdpc2VfY2FzdDxpbnRwdHJf
dCo+KHBpdm90IC0gMSkgLSBjdXJyZW50RW50cnkub2Zmc2V0QXNJbmRleCgpKSA9IHZtLT5jYWxs
ZWVTYXZlUmVnaXN0ZXJzQnVmZmVyW3ZtQ2FsbGVlU2F2ZXNFbnRyeS0+b2Zmc2V0QXNJbmRleCgp
XTsKKyAgICB9CisjZW5kaWYKICAgICAKLSAgICAvLyA2KSBGaXggdGhlIGNhbGwgZnJhbWUgdG8g
aGF2ZSB0aGUgcmlnaHQgY29kZSBibG9jay4KKyAgICAvLyA3KSBGaXggdGhlIGNhbGwgZnJhbWUg
dG8gaGF2ZSB0aGUgcmlnaHQgY29kZSBibG9jay4KICAgICAKICAgICAqYml0d2lzZV9jYXN0PENv
ZGVCbG9jayoqPihwaXZvdCAtIDEgLSBKU1N0YWNrOjpDb2RlQmxvY2spID0gY29kZUJsb2NrOwog
ICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIz
Ml82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JF
eGl0Q29tcGlsZXIzMl82NC5jcHAJKHJldmlzaW9uIDE4OTU0MykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNDQsMTIgKzI0NCwyMSBAQCB2b2lkIE9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoY29u
c3QgCiAgICAgICAgICAgICAtbV9qaXQuY29kZUJsb2NrKCktPmppdENvZGUoKS0+ZGZnQ29tbW9u
KCktPnJlcXVpcmVkUmVnaXN0ZXJDb3VudEZvckV4aXQgKiBzaXplb2YoUmVnaXN0ZXIpKSwKICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpmcmFtZVBvaW50ZXJSZWdpc3RlciwgQ0NhbGxIZWxwZXJzOjpz
dGFja1BvaW50ZXJSZWdpc3Rlcik7CiAgICAgCisgICAgLy8gUmVzdG9yZSB0aGUgREZHIGNhbGxl
ZSBzYXZlcyBhbmQgdGhlbiBzYXZlIHRoZSBvbmVzIHRoZSBiYXNlbGluZSBKSVQgdXNlcy4KKyAg
ICBtX2ppdC5lbWl0UmVzdG9yZUNhbGxlZVNhdmVzKCk7CisgICAgbV9qaXQuZW1pdFNhdmVDYWxs
ZWVTYXZlc0ZvcihtX2ppdC5iYXNlbGluZUNvZGVCbG9jaygpKTsKKwogICAgIC8vIERvIGFsbCBk
YXRhIGZvcm1hdCBjb252ZXJzaW9ucyBhbmQgc3RvcmUgdGhlIHJlc3VsdHMgaW50byB0aGUgc3Rh
Y2suCiAgICAgCiAgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG9wZXJhbmRzLnNp
emUoKTsgKytpbmRleCkgewogICAgICAgICBjb25zdCBWYWx1ZVJlY292ZXJ5JiByZWNvdmVyeSA9
IG9wZXJhbmRzW2luZGV4XTsKLSAgICAgICAgaW50IG9wZXJhbmQgPSBvcGVyYW5kcy5vcGVyYW5k
Rm9ySW5kZXgoaW5kZXgpOwotICAgICAgICAKKyAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHJlZyA9
IG9wZXJhbmRzLnZpcnR1YWxSZWdpc3RlckZvckluZGV4KGluZGV4KTsKKworICAgICAgICBpZiAo
cmVnLmlzTG9jYWwoKSAmJiByZWcudG9Mb2NhbCgpIDwgc3RhdGljX2Nhc3Q8aW50PihtX2ppdC5i
YXNlbGluZUNvZGVCbG9jaygpLT5jYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKSkp
CisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpbnQgb3BlcmFuZCA9IHJlZy5vZmZz
ZXQoKTsKKwogICAgICAgICBzd2l0Y2ggKHJlY292ZXJ5LnRlY2huaXF1ZSgpKSB7CiAgICAgICAg
IGNhc2UgSW5QYWlyOgogICAgICAgICBjYXNlIERpc3BsYWNlZEluSlNTdGFjazoKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3Bw
CShyZXZpc2lvbiAxODk1NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4
aXRDb21waWxlcjY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAyLDcgKzIwMiw3IEBAIHZvaWQg
T1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChjb25zdCAKICAgICB9CiAgICAgCiAgICAgLy8g
QW5kIHZvaWxhLCBhbGwgR1BScyBhcmUgZnJlZSB0byByZXVzZS4KLSAgICAKKwogICAgIC8vIFNh
dmUgYWxsIHN0YXRlIGZyb20gRlBScyBpbnRvIHRoZSBzY3JhdGNoIGJ1ZmZlci4KICAgICAKICAg
ICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgb3BlcmFuZHMuc2l6ZSgpOyArK2luZGV4
KSB7CkBAIC0yNTQsMTIgKzI1NCwyNCBAQCB2b2lkIE9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4
aXQoY29uc3QgCiAgICAgICAgICAgICAtbV9qaXQuY29kZUJsb2NrKCktPmppdENvZGUoKS0+ZGZn
Q29tbW9uKCktPnJlcXVpcmVkUmVnaXN0ZXJDb3VudEZvckV4aXQgKiBzaXplb2YoUmVnaXN0ZXIp
KSwKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpmcmFtZVBvaW50ZXJSZWdpc3RlciwgQ0NhbGxIZWxw
ZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAgICAgCisgICAgLy8gUmVzdG9yZSB0aGUgREZH
IGNhbGxlZSBzYXZlcyBhbmQgdGhlbiBzYXZlIHRoZSBvbmVzIHRoZSBiYXNlbGluZSBKSVQgdXNl
cy4KKyAgICBtX2ppdC5lbWl0UmVzdG9yZUNhbGxlZVNhdmVzKCk7CisgICAgbV9qaXQuZW1pdFNh
dmVDYWxsZWVTYXZlc0ZvcihtX2ppdC5iYXNlbGluZUNvZGVCbG9jaygpKTsKKworICAgIC8vIFRo
ZSB0YWcgcmVnaXN0ZXJzIGFyZSBuZWVkZWQgdG8gbWF0ZXJpYWxpemUgcmVjb3ZlcmllcyBiZWxv
dy4KKyAgICBtX2ppdC5lbWl0TWF0ZXJpYWxpemVUYWdDaGVja1JlZ2lzdGVycygpOworCiAgICAg
Ly8gRG8gYWxsIGRhdGEgZm9ybWF0IGNvbnZlcnNpb25zIGFuZCBzdG9yZSB0aGUgcmVzdWx0cyBp
bnRvIHRoZSBzdGFjay4KICAgICAKICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwg
b3BlcmFuZHMuc2l6ZSgpOyArK2luZGV4KSB7CiAgICAgICAgIGNvbnN0IFZhbHVlUmVjb3Zlcnkm
IHJlY292ZXJ5ID0gb3BlcmFuZHNbaW5kZXhdOwotICAgICAgICBpbnQgb3BlcmFuZCA9IG9wZXJh
bmRzLm9wZXJhbmRGb3JJbmRleChpbmRleCk7Ci0gICAgICAgIAorICAgICAgICBWaXJ0dWFsUmVn
aXN0ZXIgcmVnID0gb3BlcmFuZHMudmlydHVhbFJlZ2lzdGVyRm9ySW5kZXgoaW5kZXgpOworCisg
ICAgICAgIGlmIChyZWcuaXNMb2NhbCgpICYmIHJlZy50b0xvY2FsKCkgPCBzdGF0aWNfY2FzdDxp
bnQ+KG1faml0LmJhc2VsaW5lQ29kZUJsb2NrKCktPmNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJl
Z2lzdGVycygpKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGludCBvcGVyYW5k
ID0gcmVnLm9mZnNldCgpOworCiAgICAgICAgIHN3aXRjaCAocmVjb3ZlcnkudGVjaG5pcXVlKCkp
IHsKICAgICAgICAgY2FzZSBJbkdQUjoKICAgICAgICAgY2FzZSBVbmJveGVkQ2VsbEluR1BSOgpA
QCAtMzIwLDcgKzMzMiw3IEBAIHZvaWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChjb25z
dCAKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQotICAgIAorCiAgICAgLy8g
Tm93IHRoYXQgdGhpbmdzIG9uIHRoZSBzdGFjayBhcmUgcmVjb3ZlcmVkLCBkbyB0aGUgYXJndW1l
bnRzIHJlY292ZXJ5LiBXZSBhc3N1bWUgdGhhdCBhcmd1bWVudHMKICAgICAvLyByZWNvdmVyaWVz
IGRvbid0IHJlY3Vyc2l2ZWx5IHJlZmVyIHRvIGVhY2ggb3RoZXIuIEJ1dCwgd2UgZG9uJ3QgdHJ5
IHRvIGFzc3VtZSB0aGF0IHRoZXkgb25seQogICAgIC8vIHJlZmVyIHRvIGNlcnRhaW4gcmFuZ2Vz
IG9mIGxvY2Fscy4gSGVuY2Ugd2h5IHdlIG5lZWQgdG8gZG8gdGhpcyBoZXJlLCBvbmNlIHRoZSBz
dGFjayBpcyBzZW5zaWJsZS4KQEAgLTM3MCw3ICszODIsNyBAQCB2b2lkIE9TUkV4aXRDb21waWxl
cjo6Y29tcGlsZUV4aXQoY29uc3QgCiAgICAgLy8gUmVpZnkgaW5saW5lZCBjYWxsIGZyYW1lcy4K
ICAgICAKICAgICByZWlmeUlubGluZWRDYWxsRnJhbWVzKG1faml0LCBleGl0KTsKLSAgICAKKwog
ICAgIC8vIEFuZCBmaW5pc2guCiAgICAgYWRqdXN0QW5kSnVtcFRvVGFyZ2V0KG1faml0LCBleGl0
KTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVy
Q29tbW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09T
UkV4aXRDb21waWxlckNvbW1vbi5jcHAJKHJldmlzaW9uIDE4OTU0MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTk3LDYgKzE5Nyw3IEBAIHZvaWQgcmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyhDQ2FsbEhl
bHBlcnMKICAgICAgICAgICAgIGppdC5zdG9yZVB0cihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJ
bW1QdHIodHJ1ZVJldHVyblBDKSwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKGlubGluZUNh
bGxGcmFtZS0+c3RhY2tPZmZzZXQgKyB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpbmxpbmVD
YWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkpLm9mZnNldCgpKSk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgCiAgICAgICAgIGppdC5zdG9yZVB0cihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJ
bW1QdHIoYmFzZWxpbmVDb2RlQmxvY2spLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3IoKFZp
cnR1YWxSZWdpc3RlcikoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIEpTU3RhY2s6OkNv
ZGVCbG9jaykpKTsKKyAgICAgICAgaml0LmVtaXRTYXZlQ2FsbGVlU2F2ZXNGb3IoYmFzZWxpbmVD
b2RlQmxvY2ssIHN0YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rlcj4oaW5saW5lQ2FsbEZyYW1lLT5z
dGFja09mZnNldCkpOwogICAgICAgICBpZiAoIWlubGluZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkp
CiAgICAgICAgICAgICBqaXQuc3RvcmUzMihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihp
bmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkpLCBBc3NlbWJseUhlbHBlcnM6OnBheWxv
YWRGb3IoKFZpcnR1YWxSZWdpc3RlcikoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIEpT
U3RhY2s6OkFyZ3VtZW50Q291bnQpKSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKQEAgLTI1MCwxNCAr
MjUxLDE0IEBAIHN0YXRpYyB2b2lkIG9zcldyaXRlQmFycmllcihDQ2FsbEhlbHBlcnMKIHZvaWQg
YWRqdXN0QW5kSnVtcFRvVGFyZ2V0KENDYWxsSGVscGVycyYgaml0LCBjb25zdCBPU1JFeGl0QmFz
ZSYgZXhpdCkKIHsKICNpZiBFTkFCTEUoR0dDKSAKLSAgICBqaXQubW92ZShBc3NlbWJseUhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIoaml0LmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKSksIEdQ
UkluZm86Om5vbkFyZ0dQUjApOwotICAgIG9zcldyaXRlQmFycmllcihqaXQsIEdQUkluZm86Om5v
bkFyZ0dQUjAsIEdQUkluZm86Om5vbkFyZ0dQUjEpOworICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVs
cGVyczo6VHJ1c3RlZEltbVB0cihqaXQuY29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICBvc3JXcml0ZUJhcnJpZXIoaml0LCBHUFJJbmZv
Ojphcmd1bWVudEdQUjEsIEdQUkluZm86Om5vbkFyZ0dQUjApOwogICAgIElubGluZUNhbGxGcmFt
ZVNldCogaW5saW5lQ2FsbEZyYW1lcyA9IGppdC5jb2RlQmxvY2soKS0+aml0Q29kZSgpLT5kZmdD
b21tb24oKS0+aW5saW5lQ2FsbEZyYW1lcy5nZXQoKTsKICAgICBpZiAoaW5saW5lQ2FsbEZyYW1l
cykgewogICAgICAgICBmb3IgKElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lIDogKmlu
bGluZUNhbGxGcmFtZXMpIHsKICAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhl
Y3V0YWJsZSA9IGlubGluZUNhbGxGcmFtZS0+ZXhlY3V0YWJsZS5nZXQoKTsKLSAgICAgICAgICAg
IGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cihvd25lckV4ZWN1dGFibGUp
LCBHUFJJbmZvOjpub25BcmdHUFIwKTsgCi0gICAgICAgICAgICBvc3JXcml0ZUJhcnJpZXIoaml0
LCBHUFJJbmZvOjpub25BcmdHUFIwLCBHUFJJbmZvOjpub25BcmdHUFIxKTsKKyAgICAgICAgICAg
IGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cihvd25lckV4ZWN1dGFibGUp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgICAgICAgICAgb3NyV3JpdGVCYXJyaWVyKGpp
dCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKICAgICAgICAg
fQogICAgIH0KICNlbmRpZgpAQCAtMjc3LDggKzI3OCw2IEBAIHZvaWQgYWRqdXN0QW5kSnVtcFRv
VGFyZ2V0KENDYWxsSGVscGVycyYKIAogICAgIGppdC5hZGRQdHIoQXNzZW1ibHlIZWxwZXJzOjpU
cnVzdGVkSW1tMzIoSklUOjpzdGFja1BvaW50ZXJPZmZzZXRGb3IoYmFzZWxpbmVDb2RlQmxvY2sp
ICogc2l6ZW9mKFJlZ2lzdGVyKSksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBBc3NlbWJs
eUhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKICAgICAKLSAgICBqaXQuaml0QXNzZXJ0
VGFnc0luUGxhY2UoKTsKLQogICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZElt
bVB0cihqdW1wVGFyZ2V0KSwgR1BSSW5mbzo6cmVnVDIpOwogICAgIGppdC5qdW1wKEdQUkluZm86
OnJlZ1QyKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAkocmV2
aXNpb24gMTg5NTQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjQxLDYgKzI0MSw4IEBAIFBsYW46OkNvbXBpbGF0aW9uUGF0aCBQ
bGFuOjpjb21waWxlSW5UaHIKICAgICAgICAgZmluYWxpemVyID0gc3RkOjptYWtlX3VuaXF1ZTxG
YWlsZWRGaW5hbGl6ZXI+KCp0aGlzKTsKICAgICAgICAgcmV0dXJuIEZhaWxQYXRoOwogICAgIH0K
KworICAgIGNvZGVCbG9jay0+c2V0Q2FsbGVlU2F2ZVJlZ2lzdGVycyhSZWdpc3RlclNldDo6ZGZn
Q2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKICAgICAKICAgICAvLyBCeSB0aGlzIHBvaW50IHRoZSBE
RkcgYnl0ZWNvZGUgcGFyc2VyIHdpbGwgaGF2ZSBwb3RlbnRpYWxseSBtdXRhdGVkIHZhcmlvdXMg
dGFibGVzCiAgICAgLy8gaW4gdGhlIENvZGVCbG9jay4gVGhpcyBpcyBhIGdvb2QgdGltZSB0byBw
ZXJmb3JtIGFuIGVhcmx5IHNocmluaywgd2hpY2ggaXMgbW9yZQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZp
c2lvbiAxODk1NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTMxLDYgKzMxMzEsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KIAorICAgICAgICBtX2ppdC5lbWl0UmVzdG9yZUNhbGxlZVNhdmVzKCk7CiAgICAgICAgIG1f
aml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CiAgICAgICAgIG1faml0LnJldCgpOwogICAgICAg
ICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcAkocmV2aXNpb24gMTg5NTQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE5MCw2ICszMTkw
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBK
U1ZhbHVlT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBtX2ppdC5t
b3ZlKG9wMS5ncHIoKSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOwogCisgICAgICAgIG1faml0
LmVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsKICAgICAgICAgbV9qaXQuZW1pdEZ1bmN0aW9uRXBp
bG9ndWUoKTsKICAgICAgICAgbV9qaXQucmV0KCk7CiAgICAgICAgIApAQCAtNDc5MCw2ICs0Nzkx
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAg
ICAgVHJ1c3RlZEltbTMyKG1fc3RyZWFtLT5zaXplKCkpKTsKICAgICAgICAgYXBwZW5kQ2FsbFNl
dFJlc3VsdCh0cmlnZ2VyT1NSRW50cnlOb3csIHRlbXBHUFIpOwogICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcCBkb250RW50ZXIgPSBtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVy
OjpaZXJvLCB0ZW1wR1BSKTsKKyAgICAgICAgbV9qaXQuZW1pdFJlc3RvcmVDYWxsZWVTYXZlcygp
OwogICAgICAgICBtX2ppdC5qdW1wKHRlbXBHUFIpOwogICAgICAgICBkb250RW50ZXIubGluaygm
bV9qaXQpOwogICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKHRlbXBHUFIpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJl
dmlzaW9uIDE4OTU0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTEsNyArMzExLDcgQEAgUmVnaXN0ZXJTZXQg
U3BlY3VsYXRpdmVKSVQ6OnVzZWRSZWdpc3RlcgogICAgICAgICAgICAgcmVzdWx0LnNldChmcHIp
OwogICAgIH0KICAgICAKLSAgICByZXN1bHQubWVyZ2UoUmVnaXN0ZXJTZXQ6OnNwZWNpYWxSZWdp
c3RlcnMoKSk7CisgICAgcmVzdWx0Lm1lcmdlKFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSk7CiAgICAgCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhY2tMYXlvdXRQaGFzZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGFja0xheW91dFBoYXNlLmNwcAkocmV2aXNp
b24gMTg5NTQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGFja0xheW91dFBo
YXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI5LDcgKzEyOSw3IEBAIHB1YmxpYzoKICAgICAg
ICAgfQogICAgICAgICAKICAgICAgICAgVmVjdG9yPHVuc2lnbmVkPiBhbGxvY2F0aW9uKHVzZWRM
b2NhbHMuc2l6ZSgpKTsKLSAgICAgICAgbV9ncmFwaC5tX25leHRNYWNoaW5lTG9jYWwgPSAwOwor
ICAgICAgICBtX2dyYXBoLm1fbmV4dE1hY2hpbmVMb2NhbCA9IGNvZGVCbG9jaygpLT5jYWxsZWVT
YXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IHVzZWRMb2NhbHMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIGlmICghdXNlZExv
Y2Fscy5nZXQoaSkpIHsKICAgICAgICAgICAgICAgICBhbGxvY2F0aW9uW2ldID0gVUlOVF9NQVg7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAJKHJldmlzaW9u
IDE4OTU0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMyOSw3ICszMjksNyBAQCB2b2lkIGFkanVzdENhbGxJQ3NGb3JTdGFj
a21hcHMoVmVjdG9yPENhCiAKIHN0YXRpYyB2b2lkIGZpeEZ1bmN0aW9uQmFzZWRPblN0YWNrTWFw
cygKICAgICBTdGF0ZSYgc3RhdGUsIENvZGVCbG9jayogY29kZUJsb2NrLCBKSVRDb2RlKiBqaXRD
b2RlLCBHZW5lcmF0ZWRGdW5jdGlvbiBnZW5lcmF0ZWRGdW5jdGlvbiwKLSAgICBTdGFja01hcHM6
OlJlY29yZE1hcCYgcmVjb3JkTWFwLCBib29sIGRpZFNlZVVud2luZEluZm8pCisgICAgU3RhY2tN
YXBzOjpSZWNvcmRNYXAmIHJlY29yZE1hcCkKIHsKICAgICBHcmFwaCYgZ3JhcGggPSBzdGF0ZS5n
cmFwaDsKICAgICBWTSYgdm0gPSBncmFwaC5tX3ZtOwpAQCAtMzY1LDEyICszNjUsMTQgQEAgc3Rh
dGljIHZvaWQgZml4RnVuY3Rpb25CYXNlZE9uU3RhY2tNYXBzKAogICAgICAgICAKICAgICAgICAg
Ly8gQXQgdGhpcyBwb2ludCBpdCdzIHBlcmZlY3RseSBmYWlyIHRvIGp1c3QgYmxvdyBhd2F5IGFs
bCBzdGF0ZSBhbmQgcmVzdG9yZSB0aGUKICAgICAgICAgLy8gSlMgSklUIHZpZXcgb2YgdGhlIHVu
aXZlcnNlLgorICAgICAgICBjaGVja0pJVC5jb3B5Q2FsbGVlU2F2ZXNUb1ZNQ2FsbGVlU2F2ZXNC
dWZmZXIoKTsKICAgICAgICAgY2hlY2tKSVQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cigmdm0pLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgICAgICBjaGVja0pJVC5tb3Zl
KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwogICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsTG9va3VwRXhjZXB0aW9uSGFuZGxlciA9IGNo
ZWNrSklULmNhbGwoKTsKICAgICAgICAgY2hlY2tKSVQuanVtcFRvRXhjZXB0aW9uSGFuZGxlcigp
OwogCiAgICAgICAgIHN0YWNrT3ZlcmZsb3dFeGNlcHRpb24gPSBjaGVja0pJVC5sYWJlbCgpOwor
ICAgICAgICBjaGVja0pJVC5jb3B5Q2FsbGVlU2F2ZXNUb1ZNQ2FsbGVlU2F2ZXNCdWZmZXIoKTsK
ICAgICAgICAgY2hlY2tKSVQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmdm0p
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgICAgICBjaGVja0pJVC5tb3ZlKEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwogICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6Q2FsbCBjYWxsTG9va3VwRXhjZXB0aW9uSGFuZGxlckZyb21DYWxsZXJGcmFt
ZSA9IGNoZWNrSklULmNhbGwoKTsKQEAgLTM5Miw3ICszOTQsNiBAQCBzdGF0aWMgdm9pZCBmaXhG
dW5jdGlvbkJhc2VkT25TdGFja01hcHMoCiAgICAgZXhpdFRodW5rR2VuZXJhdG9yLmVtaXRUaHVu
a3MoKTsKICAgICBpZiAoZXhpdFRodW5rR2VuZXJhdG9yLmRpZFRoaW5ncygpKSB7CiAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKHN0YXRlLmZpbmFsaXplci0+b3NyRXhpdC5zaXplKCkpOwotICAgICAg
ICBSRUxFQVNFX0FTU0VSVChkaWRTZWVVbndpbmRJbmZvKTsKICAgICAgICAgCiAgICAgICAgIGF1
dG8gbGlua0J1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8TGlua0J1ZmZlcj4oCiAgICAgICAgICAg
ICB2bSwgZXhpdFRodW5rR2VuZXJhdG9yLCBjb2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uQ2FuRmFp
bCk7CkBAIC04MTQsMTYgKzgxNSwxNCBAQCB2b2lkIGNvbXBpbGUoU3RhdGUmIHN0YXRlLCBTYWZl
cG9pbnQ6OlJlCiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgYm9vbCBkaWRTZWVVbndpbmRJ
bmZvID0gc3RhdGUuaml0Q29kZS0+dW53aW5kSW5mby5wYXJzZSgKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8UmVnaXN0ZXJBdE9mZnNldExpc3Q+IHJlZ2lzdGVyT2Zmc2V0cyA9IHBhcnNlVW53aW5kSW5m
bygKICAgICAgICAgc3RhdGUudW53aW5kRGF0YVNlY3Rpb24sIHN0YXRlLnVud2luZERhdGFTZWN0
aW9uU2l6ZSwKICAgICAgICAgc3RhdGUuZ2VuZXJhdGVkRnVuY3Rpb24pOwogICAgIGlmIChzaG91
bGRTaG93RGlzYXNzZW1ibHkoKSkgewogICAgICAgICBkYXRhTG9nKCJVbndpbmQgaW5mbyBmb3Ig
IiwgQ29kZUJsb2NrV2l0aEpJVFR5cGUoc3RhdGUuZ3JhcGgubV9jb2RlQmxvY2ssIEpJVENvZGU6
OkZUTEpJVCksICI6XG4iKTsKLSAgICAgICAgaWYgKGRpZFNlZVVud2luZEluZm8pCi0gICAgICAg
ICAgICBkYXRhTG9nKCIgICAgIiwgc3RhdGUuaml0Q29kZS0+dW53aW5kSW5mbywgIlxuIik7Ci0g
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIGRhdGFMb2coIiAgICA8bm8gdW53aW5kIGluZm8+XG4i
KTsKKyAgICAgICAgZGF0YUxvZygiICAgICIsICpyZWdpc3Rlck9mZnNldHMsICJcbiIpOwogICAg
IH0KKyAgICBzdGF0ZS5ncmFwaC5tX2NvZGVCbG9jay0+c2V0Q2FsbGVlU2F2ZVJlZ2lzdGVycyhX
VEY6Om1vdmUocmVnaXN0ZXJPZmZzZXRzKSk7CiAgICAgCiAgICAgaWYgKHN0YXRlLnN0YWNrbWFw
c1NlY3Rpb24gJiYgc3RhdGUuc3RhY2ttYXBzU2VjdGlvbi0+c2l6ZSgpKSB7CiAgICAgICAgIGlm
IChzaG91bGRTaG93RGlzYXNzZW1ibHkoKSkgewpAQCAtODQ2LDcgKzg0NSw3IEBAIHZvaWQgY29t
cGlsZShTdGF0ZSYgc3RhdGUsIFNhZmVwb2ludDo6UmUKICAgICAgICAgU3RhY2tNYXBzOjpSZWNv
cmRNYXAgcmVjb3JkTWFwID0gc3RhdGUuaml0Q29kZS0+c3RhY2ttYXBzLmNvbXB1dGVSZWNvcmRN
YXAoKTsKICAgICAgICAgZml4RnVuY3Rpb25CYXNlZE9uU3RhY2tNYXBzKAogICAgICAgICAgICAg
c3RhdGUsIHN0YXRlLmdyYXBoLm1fY29kZUJsb2NrLCBzdGF0ZS5qaXRDb2RlLmdldCgpLCBzdGF0
ZS5nZW5lcmF0ZWRGdW5jdGlvbiwKLSAgICAgICAgICAgIHJlY29yZE1hcCwgZGlkU2VlVW53aW5k
SW5mbyk7CisgICAgICAgICAgICByZWNvcmRNYXApOwogICAgICAgICBpZiAoc3RhdGUuYWxsb2Nh
dGlvbkZhaWxlZCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVENvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTEpJVENvZGUuaAkocmV2aXNpb24gMTg5NTQzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRDb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTg0LDcg
Kzg0LDYgQEAgcHVibGljOgogICAgIERGRzo6Q29tbW9uRGF0YSBjb21tb247CiAgICAgU2VnbWVu
dGVkVmVjdG9yPE9TUkV4aXQsIDg+IG9zckV4aXQ7CiAgICAgU3RhY2tNYXBzIHN0YWNrbWFwczsK
LSAgICBVbndpbmRJbmZvIHVud2luZEluZm87CiAgICAgCiBwcml2YXRlOgogICAgIFZlY3RvcjxS
ZWZQdHI8RGF0YVNlY3Rpb24+PiBtX2RhdGFTZWN0aW9uczsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTGluay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMaW5rLmNwcAkocmV2aXNpb24gMTg5NTQzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExMaW5rLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNiBAQAog
CiAjaWYgRU5BQkxFKEZUTF9KSVQpCiAKLSNpbmNsdWRlICJBcml0eUNoZWNrRmFpbFJldHVyblRo
dW5rcy5oIgogI2luY2x1ZGUgIkNDYWxsSGVscGVycy5oIgogI2luY2x1ZGUgIkNvZGVCbG9ja1dp
dGhKSVRUeXBlLmgiCiAjaW5jbHVkZSAiREZHQ29tbW9uLmgiCkBAIC01NCw5ICs1Myw3IEBAIHZv
aWQgbGluayhTdGF0ZSYgc3RhdGUpCiAgICAgLy8gTExWTSB3aWxsIGNyZWF0ZSBpdHMgb3duIGp1
bXAgdGFibGVzIGFzIG5lZWRlZC4KICAgICBjb2RlQmxvY2stPmNsZWFyU3dpdGNoSnVtcFRhYmxl
cygpOwogICAgIAotICAgIC8vIEZJWE1FOiBOZWVkIHRvIGtub3cgdGhlIHJlYWwgZnJhbWUgcmVn
aXN0ZXIgY291bnQuCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEyNTcyNwotICAgIHN0YXRlLmppdENvZGUtPmNvbW1vbi5mcmFtZVJlZ2lzdGVyQ291bnQg
PSAxMDAwOworICAgIHN0YXRlLmppdENvZGUtPmNvbW1vbi5mcmFtZVJlZ2lzdGVyQ291bnQgPSBz
dGF0ZS5qaXRDb2RlLT5zdGFja21hcHMuc3RhY2tTaXplRm9yTG9jYWxzKCkgLyBzaXplb2Yodm9p
ZCopOwogICAgIAogICAgIHN0YXRlLmppdENvZGUtPmNvbW1vbi5yZXF1aXJlZFJlZ2lzdGVyQ291
bnRGb3JFeGl0ID0gZ3JhcGgucmVxdWlyZWRSZWdpc3RlckNvdW50Rm9yRXhpdCgpOwogICAgIApA
QCAtMTY5LDEwICsxNjYsNiBAQCB2b2lkIGxpbmsoU3RhdGUmIHN0YXRlKQogICAgICAgICBqaXQu
ZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKICAgICAgICAgbWFpblBhdGhKdW1wcy5hcHBlbmQoaml0
LmJyYW5jaFRlc3QzMihDQ2FsbEhlbHBlcnM6Olplcm8sIEdQUkluZm86OmFyZ3VtZW50R1BSMCkp
OwogICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKLSAgICAgICAgQ29kZUxvY2F0
aW9uTGFiZWwqIGFyaXR5VGh1bmtMYWJlbHMgPQotICAgICAgICAgICAgdm0uYXJpdHlDaGVja0Zh
aWxSZXR1cm5UaHVua3MtPnJldHVyblBDc0Zvcih2bSwgY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJz
KCkpOwotICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoYXJpdHlU
aHVua0xhYmVscyksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgICAgIGppdC5sb2FkUHRy
KENDYWxsSGVscGVyczo6QmFzZUluZGV4KEdQUkluZm86OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwLCBDQ2FsbEhlbHBlcnM6OnRpbWVzUHRyKCkpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjEpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgY2FsbEFyaXR5Rml4dXAgPSBqaXQu
Y2FsbCgpOwogICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKICAgICAgICAgbWFp
blBhdGhKdW1wcy5hcHBlbmQoaml0Lmp1bXAoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCShyZXZpc2lvbiAxODk1NDMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTIxMSw3ICsyMTEsNyBAQCBzdGF0aWMgdm9pZCBjb21waWxlU3R1YigKICAg
ICAgICAgc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAqICgKICAgICAgICAgICAgIGV4aXQubV92YWx1
ZXMuc2l6ZSgpICsgbnVtTWF0ZXJpYWxpemF0aW9ucyArIG1heE1hdGVyaWFsaXphdGlvbk51bUFy
Z3VtZW50cykgKwogICAgICAgICByZXF1aXJlZFNjcmF0Y2hNZW1vcnlTaXplSW5CeXRlcygpICsK
LSAgICAgICAgaml0Q29kZS0+dW53aW5kSW5mby5tX3JlZ2lzdGVycy5zaXplKCkgKiBzaXplb2Yo
dWludDY0X3QpKTsKKyAgICAgICAgY29kZUJsb2NrLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCktPnNp
emUoKSAqIHNpemVvZih1aW50NjRfdCkpOwogICAgIEVuY29kZWRKU1ZhbHVlKiBzY3JhdGNoID0g
c2NyYXRjaEJ1ZmZlciA/IHN0YXRpY19jYXN0PEVuY29kZWRKU1ZhbHVlKj4oc2NyYXRjaEJ1ZmZl
ci0+ZGF0YUJ1ZmZlcigpKSA6IDA7CiAgICAgRW5jb2RlZEpTVmFsdWUqIG1hdGVyaWFsaXphdGlv
blBvaW50ZXJzID0gc2NyYXRjaCArIGV4aXQubV92YWx1ZXMuc2l6ZSgpOwogICAgIEVuY29kZWRK
U1ZhbHVlKiBtYXRlcmlhbGl6YXRpb25Bcmd1bWVudHMgPSBtYXRlcmlhbGl6YXRpb25Qb2ludGVy
cyArIG51bU1hdGVyaWFsaXphdGlvbnM7CkBAIC0zODQsOCArMzg0LDggQEAgc3RhdGljIHZvaWQg
Y29tcGlsZVN0dWIoCiAgICAgCiAgICAgLy8gQmVmb3JlIHdlIHN0YXJ0IG1lc3Npbmcgd2l0aCB0
aGUgZnJhbWUsIHdlIG5lZWQgdG8gc2V0IGFzaWRlIGFueSByZWdpc3RlcnMgdGhhdCB0aGUKICAg
ICAvLyBGVEwgY29kZSB3YXMgcHJlc2VydmluZy4KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSBqaXRD
b2RlLT51bndpbmRJbmZvLm1fcmVnaXN0ZXJzLnNpemUoKTsgaS0tOykgewotICAgICAgICBSZWdp
c3RlckF0T2Zmc2V0IGVudHJ5ID0gaml0Q29kZS0+dW53aW5kSW5mby5tX3JlZ2lzdGVyc1tpXTsK
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSBjb2RlQmxvY2stPmNhbGxlZVNhdmVSZWdpc3RlcnMoKS0+
c2l6ZSgpOyBpLS07KSB7CisgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50cnkgPSBjb2RlQmxv
Y2stPmNhbGxlZVNhdmVSZWdpc3RlcnMoKS0+YXQoaSk7CiAgICAgICAgIGppdC5sb2FkNjQoCiAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6ZnJhbWVQ
b2ludGVyUmVnaXN0ZXIsIGVudHJ5Lm9mZnNldCgpKSwKICAgICAgICAgICAgIEdQUkluZm86OnJl
Z1QwKTsKQEAgLTQzMiwxMCArNDMyLDEyIEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVTdHViKAogICAg
IGppdC5hZGQzMihHUFJJbmZvOjpyZWdUMywgR1BSSW5mbzo6cmVnVDIpOwogICAgIGFyaXR5SW50
YWN0LmxpbmsoJmppdCk7CiAKKyAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gaml0
LmJhc2VsaW5lQ29kZUJsb2NrRm9yKGV4aXQubV9jb2RlT3JpZ2luKTsKKwogICAgIC8vIEZpcnN0
IHNldCB1cCBTUCBzbyB0aGF0IG91ciBkYXRhIGRvZXNuJ3QgZ2V0IGNsb2JiZXJlZCBieSBzaWdu
YWxzLgogICAgIHVuc2lnbmVkIGNvbnNlcnZhdGl2ZVN0YWNrRGVsdGEgPQogICAgICAgICByZWdp
c3RlclByZXNlcnZhdGlvbk9mZnNldCgpICsKLSAgICAgICAgZXhpdC5tX3ZhbHVlcy5udW1iZXJP
ZkxvY2FscygpICogc2l6ZW9mKFJlZ2lzdGVyKSArCisgICAgICAgIChleGl0Lm1fdmFsdWVzLm51
bWJlck9mTG9jYWxzKCkgKyBiYXNlbGluZUNvZGVCbG9jay0+Y2FsbGVlU2F2ZVNwYWNlQXNWaXJ0
dWFsUmVnaXN0ZXJzKCkpICogc2l6ZW9mKFJlZ2lzdGVyKSArCiAgICAgICAgIG1heEZyYW1lRXh0
ZW50Rm9yU2xvd1BhdGhDYWxsOwogICAgIGNvbnNlcnZhdGl2ZVN0YWNrRGVsdGEgPSBXVEY6OnJv
dW5kVXBUb011bHRpcGxlT2YoCiAgICAgICAgIHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSwgY29uc2Vy
dmF0aXZlU3RhY2tEZWx0YSk7CkBAIC00NTcsNjcgKzQ1OSw1OSBAQCBzdGF0aWMgdm9pZCBjb21w
aWxlU3R1YigKICAgICBqaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDEp
OwogICAgIGppdC5hZGRQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihzaXplb2YoUmVn
aXN0ZXIpKSwgR1BSSW5mbzo6cmVnVDEpOwogICAgIGppdC5icmFuY2hUZXN0MzIoTWFjcm9Bc3Nl
bWJsZXI6Ok5vblplcm8sIEdQUkluZm86OnJlZ1QyKS5saW5rVG8obG9vcCwgJmppdCk7Ci0gICAg
Ci0gICAgLy8gQXQgdGhpcyBwb2ludCByZWdUMSBwb2ludHMgdG8gd2hlcmUgd2Ugd291bGQgc2F2
ZSBvdXIgcmVnaXN0ZXJzLiBTYXZlIHRoZW0gaGVyZS4KLSAgICBwdHJkaWZmX3QgY3VycmVudE9m
ZnNldCA9IDA7CisKKyAgICBSZWdpc3RlckF0T2Zmc2V0TGlzdCogYmFzZWxpbmVDYWxsZWVTYXZl
cyA9IGJhc2VsaW5lQ29kZUJsb2NrLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCk7CisKICAgICBmb3Ig
KFJlZyByZWcgPSBSZWc6OmZpcnN0KCk7IHJlZyA8PSBSZWc6Omxhc3QoKTsgcmVnID0gcmVnLm5l
eHQoKSkgewotICAgICAgICBpZiAoIXRvU2F2ZS5nZXQocmVnKSkKKyAgICAgICAgaWYgKCF0b1Nh
dmUuZ2V0KHJlZykgfHwgIXJlZy5pc0dQUigpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgIGN1cnJlbnRPZmZzZXQgKz0gc2l6ZW9mKFJlZ2lzdGVyKTsKLSAgICAgICAgdW5zaWduZWQg
dW53aW5kSW5kZXggPSBqaXRDb2RlLT51bndpbmRJbmZvLmluZGV4T2YocmVnKTsKLSAgICAgICAg
aWYgKHVud2luZEluZGV4ID09IFVJTlRfTUFYKSB7Ci0gICAgICAgICAgICAvLyBUaGUgRlRMIGNv
bXBpbGF0aW9uIGRpZG4ndCBwcmVzZXJ2ZSB0aGlzIHJlZ2lzdGVyLiBUaGlzIG1lYW5zIHRoYXQg
aXQgYWxzbwotICAgICAgICAgICAgLy8gZGlkbid0IHVzZSB0aGUgcmVnaXN0ZXIuIFNvIGl0cyB2
YWx1ZSBhdCB0aGUgYmVnaW5uaW5nIG9mIE9TUiBleGl0IHNob3VsZCBiZQotICAgICAgICAgICAg
Ly8gcHJlc2VydmVkIGJ5IHRoZSB0aHVuay4gTHVja2lseSwgd2Ugc2F2ZWQgYWxsIHJlZ2lzdGVy
cyBpbnRvIHRoZSByZWdpc3RlcgotICAgICAgICAgICAgLy8gc2NyYXRjaCBidWZmZXIsIHNvIHdl
IGNhbiByZXN0b3JlIHRoZW0gZnJvbSB0aGVyZS4KLSAgICAgICAgICAgIGppdC5sb2FkNjQocmVn
aXN0ZXJTY3JhdGNoICsgb2Zmc2V0T2ZSZWcocmVnKSwgR1BSSW5mbzo6cmVnVDApOworICAgICAg
ICB1bnNpZ25lZCB1bndpbmRJbmRleCA9IGNvZGVCbG9jay0+Y2FsbGVlU2F2ZVJlZ2lzdGVycygp
LT5pbmRleE9mKHJlZyk7CisgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQqIGJhc2VsaW5lUmVnaXN0
ZXJPZmZzZXQgPSBiYXNlbGluZUNhbGxlZVNhdmVzLT5maW5kKHJlZyk7CisKKyAgICAgICAgaWYg
KHJlZy5pc0dQUigpKSB7CisgICAgICAgICAgICBHUFJSZWcgcmVnVG9Mb2FkID0gYmFzZWxpbmVS
ZWdpc3Rlck9mZnNldCA/IEdQUkluZm86OnJlZ1QwIDogcmVnLmdwcigpOworCisgICAgICAgICAg
ICBpZiAodW53aW5kSW5kZXggPT0gVUlOVF9NQVgpIHsKKyAgICAgICAgICAgICAgICAvLyBUaGUg
RlRMIGNvbXBpbGF0aW9uIGRpZG4ndCBwcmVzZXJ2ZSB0aGlzIHJlZ2lzdGVyLiBUaGlzIG1lYW5z
IHRoYXQgaXQgYWxzbworICAgICAgICAgICAgICAgIC8vIGRpZG4ndCB1c2UgdGhlIHJlZ2lzdGVy
LiBTbyBpdHMgdmFsdWUgYXQgdGhlIGJlZ2lubmluZyBvZiBPU1IgZXhpdCBzaG91bGQgYmUKKyAg
ICAgICAgICAgICAgICAvLyBwcmVzZXJ2ZWQgYnkgdGhlIHRodW5rLiBMdWNraWx5LCB3ZSBzYXZl
ZCBhbGwgcmVnaXN0ZXJzIGludG8gdGhlIHJlZ2lzdGVyCisgICAgICAgICAgICAgICAgLy8gc2Ny
YXRjaCBidWZmZXIsIHNvIHdlIGNhbiByZXN0b3JlIHRoZW0gZnJvbSB0aGVyZS4KKyAgICAgICAg
ICAgICAgICBqaXQubG9hZDY0KHJlZ2lzdGVyU2NyYXRjaCArIG9mZnNldE9mUmVnKHJlZyksIHJl
Z1RvTG9hZCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIFRoZSBG
VEwgY29tcGlsYXRpb24gcHJlc2VydmVkIHRoZSByZWdpc3Rlci4gSXRzIG5ldyB2YWx1ZSBpcyB0
aGVyZWZvcmUKKyAgICAgICAgICAgICAgICAvLyBpcnJlbGV2YW50LCBidXQgd2UgY2FuIGdldCB0
aGUgdmFsdWUgdGhhdCB3YXMgcHJlc2VydmVkIGJ5IHVzaW5nIHRoZSB1bndpbmQKKyAgICAgICAg
ICAgICAgICAvLyBkYXRhLiBXZSd2ZSBhbHJlYWR5IGNvcGllZCBhbGwgdW53aW5kLWFibGUgcHJl
c2VydmVkIHJlZ2lzdGVycyBpbnRvIHRoZSB1bndpbmQKKyAgICAgICAgICAgICAgICAvLyBzY3Jh
dGNoIGJ1ZmZlciwgc28gd2UgY2FuIGdldCBpdCBmcm9tIHRoZXJlLgorICAgICAgICAgICAgICAg
IGppdC5sb2FkNjQodW53aW5kU2NyYXRjaCArIHVud2luZEluZGV4LCByZWdUb0xvYWQpOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoYmFzZWxpbmVSZWdpc3Rlck9mZnNldCkKKyAg
ICAgICAgICAgICAgICBqaXQuc3RvcmU2NChyZWdUb0xvYWQsIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKE1hY3JvQXNzZW1ibGVyOjpmcmFtZVBvaW50ZXJSZWdpc3RlciwgYmFzZWxpbmVSZWdpc3Rl
ck9mZnNldC0+b2Zmc2V0KCkpKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIFRo
ZSBGVEwgY29tcGlsYXRpb24gcHJlc2VydmVkIHRoZSByZWdpc3Rlci4gSXRzIG5ldyB2YWx1ZSBp
cyB0aGVyZWZvcmUKLSAgICAgICAgICAgIC8vIGlycmVsZXZhbnQsIGJ1dCB3ZSBjYW4gZ2V0IHRo
ZSB2YWx1ZSB0aGF0IHdhcyBwcmVzZXJ2ZWQgYnkgdXNpbmcgdGhlIHVud2luZAotICAgICAgICAg
ICAgLy8gZGF0YS4gV2UndmUgYWxyZWFkeSBjb3BpZWQgYWxsIHVud2luZC1hYmxlIHByZXNlcnZl
ZCByZWdpc3RlcnMgaW50byB0aGUgdW53aW5kCi0gICAgICAgICAgICAvLyBzY3JhdGNoIGJ1ZmZl
ciwgc28gd2UgY2FuIGdldCBpdCBmcm9tIHRoZXJlLgotICAgICAgICAgICAgaml0LmxvYWQ2NCh1
bndpbmRTY3JhdGNoICsgdW53aW5kSW5kZXgsIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAg
IEZQUlJlZyBmcFJlZ1RvTG9hZCA9IGJhc2VsaW5lUmVnaXN0ZXJPZmZzZXQgPyBGUFJJbmZvOjpm
cFJlZ1QwIDogcmVnLmZwcigpOworCisgICAgICAgICAgICBpZiAodW53aW5kSW5kZXggPT0gVUlO
VF9NQVgpCisgICAgICAgICAgICAgICAgaml0LmxvYWREb3VibGUoTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW1QdHIocmVnaXN0ZXJTY3JhdGNoICsgb2Zmc2V0T2ZSZWcocmVnKSksIGZwUmVnVG9M
b2FkKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBqaXQubG9hZERvdWJsZShN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cih1bndpbmRTY3JhdGNoICsgdW53aW5kSW5kZXgp
LCBmcFJlZ1RvTG9hZCk7CisKKyAgICAgICAgICAgIGlmIChiYXNlbGluZVJlZ2lzdGVyT2Zmc2V0
KQorICAgICAgICAgICAgICAgIGppdC5zdG9yZURvdWJsZShmcFJlZ1RvTG9hZCwgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MoTWFjcm9Bc3NlbWJsZXI6OmZyYW1lUG9pbnRlclJlZ2lzdGVyLCBiYXNl
bGluZVJlZ2lzdGVyT2Zmc2V0LT5vZmZzZXQoKSkpOwogICAgICAgICB9Ci0gICAgICAgIGppdC5z
dG9yZTY0KEdQUkluZm86OnJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6
cmVnVDEsIGN1cnJlbnRPZmZzZXQpKTsKICAgICB9Ci0gICAgCi0gICAgLy8gV2UgbmVlZCB0byBt
YWtlIHN1cmUgdGhhdCB3ZSByZXR1cm4gaW50byB0aGUgcmVnaXN0ZXIgcmVzdG9yYXRpb24gdGh1
bmsuIFRoaXMgd29ya3MKLSAgICAvLyBkaWZmZXJlbnRseSBkZXBlbmRpbmcgb24gd2hldGhlciBv
ciBub3Qgd2UgaGFkIGFyaXR5IGlzc3Vlcy4KLSAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBhcml0
eUludGFjdEZvclJldHVyblBDID0gaml0LmJyYW5jaDMyKAotICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6R3JlYXRlclRoYW5PckVxdWFsLAotICAgICAgICBDQ2FsbEhlbHBlcnM6OnBheWxvYWRGb3Io
SlNTdGFjazo6QXJndW1lbnRDb3VudCksCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tMzIoY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpKTsKLSAgICAKLSAgICAvLyBUaGUgcmV0
dXJuIFBDIGluIHRoZSBjYWxsIGZyYW1lIGhlYWRlciBwb2ludHMgYXQgZXhhY3RseSB0aGUgcmln
aHQgYXJpdHkgcmVzdG9yYXRpb24KLSAgICAvLyB0aHVuay4gV2UgZG9uJ3Qgd2FudCB0byBjaGFu
Z2UgdGhhdC4gQnV0IHRoZSBhcml0eSByZXN0b3JhdGlvbiB0aHVuaydzIGZyYW1lIGhhcyBhCi0g
ICAgLy8gcmV0dXJuIFBDIGFuZCB3ZSB3YW50IHRvIHJlcm91dGUgdGhhdCB0byBvdXIgcmVnaXN0
ZXIgcmVzdG9yYXRpb24gdGh1bmsuIFRoZSBhcml0eQotICAgIC8vIHJlc3RvcmF0aW9uJ3MgcmV0
dXJuIFBDIGp1c3QganVzdCBiZWxvdyByZWdUMSwgYW5kIHRoZSByZWdpc3RlciByZXN0b3JhdGlv
bidzIHJldHVybiBQQwotICAgIC8vIGlzIHJpZ2h0IGF0IHJlZ1QxLgotICAgIGppdC5sb2FkUHRy
KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QxLCAtc3RhdGljX2Nhc3Q8cHRy
ZGlmZl90PihzaXplb2YoUmVnaXN0ZXIpKSksIEdQUkluZm86OnJlZ1QwKTsKLSAgICBqaXQuc3Rv
cmVQdHIoR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QxKTsKLSAgICBqaXQuc3RvcmVQdHIo
Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHZtLT5nZXRDVElTdHViKHJl
Z2lzdGVyUmVzdG9yYXRpb25UaHVua0dlbmVyYXRvcikuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNz
KCkpLAotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMSwgLXN0
YXRpY19jYXN0PHB0cmRpZmZfdD4oc2l6ZW9mKFJlZ2lzdGVyKSkpKTsKLSAgICAKLSAgICBNYWNy
b0Fzc2VtYmxlcjo6SnVtcCBhcml0eVJldHVyblBDUmVhZHkgPSBqaXQuanVtcCgpOwotCi0gICAg
YXJpdHlJbnRhY3RGb3JSZXR1cm5QQy5saW5rKCZqaXQpOwotICAgIAotICAgIGppdC5sb2FkUHRy
KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKE1hY3JvQXNzZW1ibGVyOjpmcmFtZVBvaW50ZXJSZWdp
c3RlciwgQ2FsbEZyYW1lOjpyZXR1cm5QQ09mZnNldCgpKSwgR1BSSW5mbzo6cmVnVDApOwotICAg
IGppdC5zdG9yZVB0cihHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDEpOwotICAgIGppdC5z
dG9yZVB0cigKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIodm0tPmdldENU
SVN0dWIocmVnaXN0ZXJSZXN0b3JhdGlvblRodW5rR2VuZXJhdG9yKS5jb2RlKCkuZXhlY3V0YWJs
ZUFkZHJlc3MoKSksCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKE1hY3JvQXNzZW1i
bGVyOjpmcmFtZVBvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lOjpyZXR1cm5QQ09mZnNldCgpKSk7
Ci0gICAgCi0gICAgYXJpdHlSZXR1cm5QQ1JlYWR5LmxpbmsoJmppdCk7Ci0gICAgCisKKyAgICBz
aXplX3QgYmFzZWxpbmVWaXJ0dWFsUmVnaXN0ZXJzRm9yQ2FsbGVlU2F2ZXMgPSBiYXNlbGluZUNv
ZGVCbG9jay0+Y2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCk7CisKICAgICAvLyBO
b3cgZ2V0IHN0YXRlIG91dCBvZiB0aGUgc2NyYXRjaCBidWZmZXIgYW5kIHBsYWNlIGl0IGJhY2sg
aW50byB0aGUgc3RhY2suIFRoZSB2YWx1ZXMgYXJlCiAgICAgLy8gYWxyZWFkeSByZWJveGVkIHNv
IHdlIGp1c3QgbW92ZSB0aGVtLgogICAgIGZvciAodW5zaWduZWQgaW5kZXggPSBleGl0Lm1fdmFs
dWVzLnNpemUoKTsgaW5kZXgtLTspIHsKLSAgICAgICAgaW50IG9wZXJhbmQgPSBleGl0Lm1fdmFs
dWVzLm9wZXJhbmRGb3JJbmRleChpbmRleCk7Ci0gICAgICAgIAorICAgICAgICBWaXJ0dWFsUmVn
aXN0ZXIgcmVnID0gZXhpdC5tX3ZhbHVlcy52aXJ0dWFsUmVnaXN0ZXJGb3JJbmRleChpbmRleCk7
CisKKyAgICAgICAgaWYgKHJlZy5pc0xvY2FsKCkgJiYgcmVnLnRvTG9jYWwoKSA8IHN0YXRpY19j
YXN0PGludD4oYmFzZWxpbmVWaXJ0dWFsUmVnaXN0ZXJzRm9yQ2FsbGVlU2F2ZXMpKQorICAgICAg
ICAgICAgY29udGludWU7CisKICAgICAgICAgaml0LmxvYWQ2NChzY3JhdGNoICsgaW5kZXgsIEdQ
UkluZm86OnJlZ1QwKTsKLSAgICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIEFzc2Vt
Ymx5SGVscGVyczo6YWRkcmVzc0ZvcihzdGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KG9wZXJh
bmQpKSk7CisgICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBBc3NlbWJseUhlbHBl
cnM6OmFkZHJlc3NGb3IocmVnKSk7CiAgICAgfQogICAgIAogICAgIGhhbmRsZUV4aXRDb3VudHMo
aml0LCBleGl0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMUmVnaXN0ZXJB
dE9mZnNldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExS
ZWdpc3RlckF0T2Zmc2V0LmNwcAkocmV2aXNpb24gMTg5NTQzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExSZWdpc3RlckF0T2Zmc2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw0
MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgot
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJGVExSZWdpc3RlckF0T2Zmc2V0
LmgiCi0KLSNpZiBFTkFCTEUoRlRMX0pJVCkKLQotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBG
VEwgewotCi12b2lkIFJlZ2lzdGVyQXRPZmZzZXQ6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29u
c3QKLXsKLSAgICBvdXQucHJpbnQocmVnKCksICIgYXQgIiwgb2Zmc2V0KCkpOwotfQotCi19IH0g
Ly8gbmFtZXNwYWNlIEpTQzo6RlRMCi0KLSNlbmRpZiAvLyBFTkFCTEUoRlRMX0pJVCkKLQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExSZWdpc3RlckF0T2Zmc2V0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExSZWdpc3RlckF0T2Zmc2V0LmgJ
KHJldmlzaW9uIDE4OTU0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMUmVnaXN0
ZXJBdE9mZnNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDgwICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBGVExSZWdp
c3RlckF0T2Zmc2V0X2gKLSNkZWZpbmUgRlRMUmVnaXN0ZXJBdE9mZnNldF9oCi0KLSNpZiBFTkFC
TEUoRlRMX0pJVCkKLQotI2luY2x1ZGUgIlJlZy5oIgotI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVh
bS5oPgotCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7Ci0KLWNsYXNzIFJlZ2lzdGVy
QXRPZmZzZXQgewotcHVibGljOgotICAgIFJlZ2lzdGVyQXRPZmZzZXQoKQotICAgICAgICA6IG1f
b2Zmc2V0KDApCi0gICAgewotICAgIH0KLSAgICAKLSAgICBSZWdpc3RlckF0T2Zmc2V0KFJlZyBy
ZWcsIHB0cmRpZmZfdCBvZmZzZXQpCi0gICAgICAgIDogbV9yZWcocmVnKQotICAgICAgICAsIG1f
b2Zmc2V0KG9mZnNldCkKLSAgICB7Ci0gICAgfQotICAgIAotICAgIGJvb2wgb3BlcmF0b3IhKCkg
Y29uc3QgeyByZXR1cm4gIW1fcmVnOyB9Ci0gICAgCi0gICAgUmVnIHJlZygpIGNvbnN0IHsgcmV0
dXJuIG1fcmVnOyB9Ci0gICAgcHRyZGlmZl90IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zm
c2V0OyB9Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXQm
IG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHJlZygpID09IG90aGVyLnJlZygp
ICYmIG9mZnNldCgpID09IG90aGVyLm9mZnNldCgpOwotICAgIH0KLSAgICAKLSAgICBib29sIG9w
ZXJhdG9yPChjb25zdCBSZWdpc3RlckF0T2Zmc2V0JiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAg
ICAgIGlmIChyZWcoKSAhPSBvdGhlci5yZWcoKSkKLSAgICAgICAgICAgIHJldHVybiByZWcoKSA8
IG90aGVyLnJlZygpOwotICAgICAgICByZXR1cm4gb2Zmc2V0KCkgPCBvdGhlci5vZmZzZXQoKTsK
LSAgICB9Ci0gICAgCi0gICAgc3RhdGljIFJlZyBnZXRSZWcoUmVnaXN0ZXJBdE9mZnNldCogdmFs
dWUpIHsgcmV0dXJuIHZhbHVlLT5yZWcoKTsgfQotICAgIAotICAgIHZvaWQgZHVtcChQcmludFN0
cmVhbSYgb3V0KSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBSZWcgbV9yZWc7Ci0gICAgcHRyZGlm
Zl90IG1fb2Zmc2V0OwotfTsKLQotfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkZUTAotCi0jZW5kaWYg
Ly8gRU5BQkxFKEZUTF9KSVQpCi0KLSNlbmRpZiAvLyBGVExSZWdpc3RlckF0T2Zmc2V0X2gKLQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExUaHVua3MuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVGh1bmtzLmNwcAkocmV2aXNpb24gMTg5
NTQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExUaHVua3MuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02Niw4ICs2Niw4IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBvc3JFeGl0R2Vu
ZXJhdGlvblQKICAgICBzYXZlQWxsUmVnaXN0ZXJzKGppdCwgYnVmZmVyKTsKICAgICAKICAgICAv
LyBUZWxsIEdDIG1hcmsgcGhhc2UgaG93IG11Y2ggb2YgdGhlIHNjcmF0Y2ggYnVmZmVyIGlzIGFj
dGl2ZSBkdXJpbmcgY2FsbC4KLSAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cihzY3JhdGNoQnVmZmVyLT5hY3RpdmVMZW5ndGhQdHIoKSksIEdQUkluZm86Om5vbkFyZ0dQ
UjEpOwotICAgIGppdC5zdG9yZVB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihyZXF1
aXJlZFNjcmF0Y2hNZW1vcnlTaXplSW5CeXRlcygpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMSk7Cisg
ICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoc2NyYXRjaEJ1ZmZlci0+
YWN0aXZlTGVuZ3RoUHRyKCkpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICBqaXQuc3RvcmVQ
dHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIocmVxdWlyZWRTY3JhdGNoTWVtb3J5U2l6
ZUluQnl0ZXMoKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOwogCiAgICAgaml0LmxvYWRQdHIoR1BS
SW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAgaml0
LnBlZWsoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFVud2luZEluZm8uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVW53aW5kSW5mby5j
cHAJKHJldmlzaW9uIDE4OTU0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVW53
aW5kSW5mby5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk0LDYgKzk0LDkgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJGVExVbndpbmRJbmZvLmgiCiAKKyNpbmNsdWRlICJDb2RlQmxv
Y2suaCIKKyNpbmNsdWRlICJSZWdpc3RlckF0T2Zmc2V0TGlzdC5oIgorCiAjaWYgRU5BQkxFKEZU
TF9KSVQpCiAKICNpZiBPUyhEQVJXSU4pCkBAIC0xMDMsMTAgKzEwNiw2IEBACiAKIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKIAotVW53aW5kSW5mbzo6VW53aW5kSW5mbygpIHsgfQot
VW53aW5kSW5mbzo6flVud2luZEluZm8oKSB7IH0KLQotCiBuYW1lc3BhY2UgewogI2lmIE9TKERB
UldJTikKIHN0cnVjdCBDb21wYWN0VW53aW5kIHsKQEAgLTY1NCwxMiArNjUzLDExIEBAIHN0YXRp
YyB2b2lkIHBhcnNlRkRFSW5zdHJ1Y3Rpb25zKGNvbnN0IEYKICNlbmRpZgogfSAvLyBhbm9ueW1v
dXMgbmFtZXNwYWNlCiAKLWJvb2wgVW53aW5kSW5mbzo6cGFyc2Uodm9pZCogc2VjdGlvbiwgc2l6
ZV90IHNpemUsIEdlbmVyYXRlZEZ1bmN0aW9uIGdlbmVyYXRlZEZ1bmN0aW9uKQorc3RkOjp1bmlx
dWVfcHRyPFJlZ2lzdGVyQXRPZmZzZXRMaXN0PiBwYXJzZVVud2luZEluZm8odm9pZCogc2VjdGlv
biwgc2l6ZV90IHNpemUsIEdlbmVyYXRlZEZ1bmN0aW9uIGdlbmVyYXRlZEZ1bmN0aW9uKQogewot
ICAgIG1fcmVnaXN0ZXJzLmNsZWFyKCk7CiAgICAgUkVMRUFTRV9BU1NFUlQoISFzZWN0aW9uKTsK
LSAgICBpZiAoIXNlY3Rpb24pCi0gICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHN0ZDo6dW5p
cXVlX3B0cjxSZWdpc3RlckF0T2Zmc2V0TGlzdD4gcmVnaXN0ZXJPZmZzZXRzID0gc3RkOjptYWtl
X3VuaXF1ZTxSZWdpc3RlckF0T2Zmc2V0TGlzdD4oKTsKIAogI2lmIE9TKERBUldJTikKICAgICBS
RUxFQVNFX0FTU0VSVChzaXplID49IHNpemVvZihDb21wYWN0VW53aW5kKSk7CkBAIC02ODksMjcg
KzY4NywyNyBAQCBib29sIFVud2luZEluZm86OnBhcnNlKHZvaWQqIHNlY3Rpb24sIHNpCiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgICAgICBjYXNlIFVOV0lORF9YODZfNjRf
UkVHX1JCWDoKLSAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0
KFg4NlJlZ2lzdGVyczo6ZWJ4LCBvZmZzZXQpKTsKKyAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0
cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoWDg2UmVnaXN0ZXJzOjplYngsIG9mZnNldCkpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBVTldJTkRfWDg2
XzY0X1JFR19SMTI6Ci0gICAgICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9m
ZnNldChYODZSZWdpc3RlcnM6OnIxMiwgb2Zmc2V0KSk7CisgICAgICAgICAgICByZWdpc3Rlck9m
ZnNldHMtPmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KFg4NlJlZ2lzdGVyczo6cjEyLCBvZmZzZXQp
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgVU5XSU5E
X1g4Nl82NF9SRUdfUjEzOgotICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVy
QXRPZmZzZXQoWDg2UmVnaXN0ZXJzOjpyMTMsIG9mZnNldCkpOworICAgICAgICAgICAgcmVnaXN0
ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChYODZSZWdpc3RlcnM6OnIxMywgb2Zm
c2V0KSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgICAgICBjYXNlIFVO
V0lORF9YODZfNjRfUkVHX1IxNDoKLSAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdp
c3RlckF0T2Zmc2V0KFg4NlJlZ2lzdGVyczo6cjE0LCBvZmZzZXQpKTsKKyAgICAgICAgICAgIHJl
Z2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoWDg2UmVnaXN0ZXJzOjpyMTQs
IG9mZnNldCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAgY2Fz
ZSBVTldJTkRfWDg2XzY0X1JFR19SMTU6Ci0gICAgICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQo
UmVnaXN0ZXJBdE9mZnNldChYODZSZWdpc3RlcnM6OnIxNSwgb2Zmc2V0KSk7CisgICAgICAgICAg
ICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KFg4NlJlZ2lzdGVyczo6
cjE1LCBvZmZzZXQpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAg
IGNhc2UgVU5XSU5EX1g4Nl82NF9SRUdfUkJQOgotICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBw
ZW5kKFJlZ2lzdGVyQXRPZmZzZXQoWDg2UmVnaXN0ZXJzOjplYnAsIG9mZnNldCkpOworICAgICAg
ICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChYODZSZWdpc3Rl
cnM6OmVicCwgb2Zmc2V0KSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAg
ICAgICBkZWZhdWx0OgpAQCAtNzIxLDQ0ICs3MTksNDQgQEAgYm9vbCBVbndpbmRJbmZvOjpwYXJz
ZSh2b2lkKiBzZWN0aW9uLCBzaQogI2VsaWYgQ1BVKEFSTTY0KQogICAgIFJFTEVBU0VfQVNTRVJU
KChlbmNvZGluZyAmIFVOV0lORF9BUk02NF9NT0RFX01BU0spID09IFVOV0lORF9BUk02NF9NT0RF
X0ZSQU1FKTsKICAgICAKLSAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChB
Uk02NFJlZ2lzdGVyczo6ZnAsIDApKTsKKyAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdp
c3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpmcCwgMCkpOwogICAgIAogICAgIGludDMyX3Qg
b2Zmc2V0ID0gMDsKICAgICBpZiAoZW5jb2RpbmcgJiBVTldJTkRfQVJNNjRfRlJBTUVfWDE5X1gy
MF9QQUlSKSB7Ci0gICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFS
TTY0UmVnaXN0ZXJzOjp4MTksIG9mZnNldCAtPSA4KSk7Ci0gICAgICAgIG1fcmVnaXN0ZXJzLmFw
cGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MjAsIG9mZnNldCAtPSA4KSk7
CisgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRS
ZWdpc3RlcnM6OngxOSwgb2Zmc2V0IC09IDgpKTsKKyAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5h
cHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDIwLCBvZmZzZXQgLT0gOCkp
OwogICAgIH0KICAgICBpZiAoZW5jb2RpbmcgJiBVTldJTkRfQVJNNjRfRlJBTUVfWDIxX1gyMl9Q
QUlSKSB7Ci0gICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0
UmVnaXN0ZXJzOjp4MjEsIG9mZnNldCAtPSA4KSk7Ci0gICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVu
ZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MjIsIG9mZnNldCAtPSA4KSk7Cisg
ICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdp
c3RlcnM6OngyMSwgb2Zmc2V0IC09IDgpKTsKKyAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBl
bmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDIyLCBvZmZzZXQgLT0gOCkpOwog
ICAgIH0KICAgICBpZiAoZW5jb2RpbmcgJiBVTldJTkRfQVJNNjRfRlJBTUVfWDIzX1gyNF9QQUlS
KSB7Ci0gICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVn
aXN0ZXJzOjp4MjMsIG9mZnNldCAtPSA4KSk7Ci0gICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChS
ZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MjQsIG9mZnNldCAtPSA4KSk7CisgICAg
ICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3Rl
cnM6OngyMywgb2Zmc2V0IC09IDgpKTsKKyAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQo
UmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDI0LCBvZmZzZXQgLT0gOCkpOwogICAg
IH0KICAgICBpZiAoZW5jb2RpbmcgJiBVTldJTkRfQVJNNjRfRlJBTUVfWDI1X1gyNl9QQUlSKSB7
Ci0gICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0
ZXJzOjp4MjUsIG9mZnNldCAtPSA4KSk7Ci0gICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdp
c3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MjYsIG9mZnNldCAtPSA4KSk7CisgICAgICAg
IHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6
OngyNSwgb2Zmc2V0IC09IDgpKTsKKyAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVn
aXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDI2LCBvZmZzZXQgLT0gOCkpOwogICAgIH0K
ICAgICBpZiAoZW5jb2RpbmcgJiBVTldJTkRfQVJNNjRfRlJBTUVfWDI3X1gyOF9QQUlSKSB7Ci0g
ICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJz
Ojp4MjcsIG9mZnNldCAtPSA4KSk7Ci0gICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3Rl
ckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MjgsIG9mZnNldCAtPSA4KSk7CisgICAgICAgIHJl
Z2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6Ongy
Nywgb2Zmc2V0IC09IDgpKTsKKyAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0
ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDI4LCBvZmZzZXQgLT0gOCkpOwogICAgIH0KICAg
ICBpZiAoZW5jb2RpbmcgJiBVTldJTkRfQVJNNjRfRlJBTUVfRDhfRDlfUEFJUikgewotICAgICAg
ICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTgs
IG9mZnNldCAtPSA4KSk7Ci0gICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zm
c2V0KEFSTTY0UmVnaXN0ZXJzOjpxOSwgb2Zmc2V0IC09IDgpKTsKKyAgICAgICAgcmVnaXN0ZXJP
ZmZzZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTgsIG9mZnNl
dCAtPSA4KSk7CisgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZz
ZXQoQVJNNjRSZWdpc3RlcnM6OnE5LCBvZmZzZXQgLT0gOCkpOwogICAgIH0KICAgICBpZiAoZW5j
b2RpbmcgJiBVTldJTkRfQVJNNjRfRlJBTUVfRDEwX0QxMV9QQUlSKSB7Ci0gICAgICAgIG1fcmVn
aXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxMTAsIG9mZnNl
dCAtPSA4KSk7Ci0gICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFS
TTY0UmVnaXN0ZXJzOjpxMTEsIG9mZnNldCAtPSA4KSk7CisgICAgICAgIHJlZ2lzdGVyT2Zmc2V0
cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnExMCwgb2Zmc2V0IC09
IDgpKTsKKyAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChB
Uk02NFJlZ2lzdGVyczo6cTExLCBvZmZzZXQgLT0gOCkpOwogICAgIH0KICAgICBpZiAoZW5jb2Rp
bmcgJiBVTldJTkRfQVJNNjRfRlJBTUVfRDEyX0QxM19QQUlSKSB7Ci0gICAgICAgIG1fcmVnaXN0
ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxMTIsIG9mZnNldCAt
PSA4KSk7Ci0gICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0
UmVnaXN0ZXJzOjpxMTMsIG9mZnNldCAtPSA4KSk7CisgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+
YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnExMiwgb2Zmc2V0IC09IDgp
KTsKKyAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02
NFJlZ2lzdGVyczo6cTEzLCBvZmZzZXQgLT0gOCkpOwogICAgIH0KICAgICBpZiAoZW5jb2Rpbmcg
JiBVTldJTkRfQVJNNjRfRlJBTUVfRDE0X0QxNV9QQUlSKSB7Ci0gICAgICAgIG1fcmVnaXN0ZXJz
LmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxMTQsIG9mZnNldCAtPSA4
KSk7Ci0gICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVn
aXN0ZXJzOjpxMTUsIG9mZnNldCAtPSA4KSk7CisgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBw
ZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnExNCwgb2Zmc2V0IC09IDgpKTsK
KyAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJl
Z2lzdGVyczo6cTE1LCBvZmZzZXQgLT0gOCkpOwogICAgIH0KICNlbHNlCiAjZXJyb3IgIlVucmVj
b2duaXplZCBhcmNoaXRlY3R1cmUiCkBAIC03ODIsMjIgKzc4MCwyMiBAQCBib29sIFVud2luZElu
Zm86OnBhcnNlKHZvaWQqIHNlY3Rpb24sIHNpCiAgICAgICAgIGlmIChwcm9sb2cuc2F2ZWRSZWdp
c3RlcnNbaV0uc2F2ZWQpIHsKICAgICAgICAgICAgIHN3aXRjaCAoaSkgewogICAgICAgICAgICAg
Y2FzZSBVTldfWDg2XzY0X3JieDoKLSAgICAgICAgICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQo
UmVnaXN0ZXJBdE9mZnNldChYODZSZWdpc3RlcnM6OmVieCwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJz
W2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAgICAg
IHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoWDg2UmVnaXN0ZXJzOjpl
YngsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJP
ZmZzZXQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVU5XX1g4
Nl82NF9yMTI6Ci0gICAgICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRP
ZmZzZXQoWDg2UmVnaXN0ZXJzOjpyMTIsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQg
KyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICByZWdpc3Rlck9m
ZnNldHMtPmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KFg4NlJlZ2lzdGVyczo6cjEyLCBwcm9sb2cu
c2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVOV19YODZfNjRfcjEzOgot
ICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KFg4NlJl
Z2lzdGVyczo6cjEzLCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNm
YVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBl
bmQoUmVnaXN0ZXJBdE9mZnNldChYODZSZWdpc3RlcnM6OnIxMywgcHJvbG9nLnNhdmVkUmVnaXN0
ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVTldfWDg2XzY0X3IxNDoKLSAgICAgICAgICAg
ICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChYODZSZWdpc3RlcnM6OnIx
NCwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9m
ZnNldCkpOworICAgICAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVy
QXRPZmZzZXQoWDg2UmVnaXN0ZXJzOjpyMTQsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZz
ZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIGNhc2UgVU5XX1g4Nl82NF9yMTU6Ci0gICAgICAgICAgICAgICAgbV9yZWdp
c3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoWDg2UmVnaXN0ZXJzOjpyMTUsIHByb2xvZy5z
YXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAg
ICAgICAgICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KFg4
NlJlZ2lzdGVyczo6cjE1LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9n
LmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICBjYXNlIFVOV19YODZfNjRfcmJwOgotICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVu
ZChSZWdpc3RlckF0T2Zmc2V0KFg4NlJlZ2lzdGVyczo6ZWJwLCBwcm9sb2cuc2F2ZWRSZWdpc3Rl
cnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAg
ICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChYODZSZWdpc3RlcnM6
OmVicCwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rl
ck9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBEV19Y
ODZfNjRfUkVUX2FkZHI6CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC04MTYsMTk2ICs4MTQs
MTk2IEBAIGJvb2wgVW53aW5kSW5mbzo6cGFyc2Uodm9pZCogc2VjdGlvbiwgc2kKICAgICAgICAg
aWYgKHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5zYXZlZCkgewogICAgICAgICAgICAgc3dpdGNo
IChpKSB7CiAgICAgICAgICAgICBjYXNlIFVOV19BUk02NF94MDoKLSAgICAgICAgICAgICAgICBt
X3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDAsIHBy
b2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQp
KTsKKyAgICAgICAgICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3RlckF0T2Zm
c2V0KEFSTTY0UmVnaXN0ZXJzOjp4MCwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCAr
IHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgY2FzZSBVTldfQVJNNjRfeDE6Ci0gICAgICAgICAgICAgICAgbV9yZWdpc3RlcnMu
YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OngxLCBwcm9sb2cuc2F2ZWRS
ZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAg
ICAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJl
Z2lzdGVyczo6eDEsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2Zh
UmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNh
c2UgVU5XX0FSTTY0X3gyOgotICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdp
c3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MiwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ld
Lm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAgICAgIHJl
Z2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6Ongy
LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zm
c2V0KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVOV19BUk02
NF94MzoKLSAgICAgICAgICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNl
dChBUk02NFJlZ2lzdGVyczo6eDMsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBw
cm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICByZWdpc3Rlck9mZnNl
dHMtPmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MywgcHJvbG9nLnNh
dmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVTldfQVJNNjRfeDQ6Ci0gICAg
ICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdp
c3RlcnM6Ong0LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJl
Z2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQo
UmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDQsIHByb2xvZy5zYXZlZFJlZ2lzdGVy
c1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVU5XX0FSTTY0X3g1OgotICAgICAgICAgICAgICAg
IG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4NSwg
cHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNl
dCkpOworICAgICAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRP
ZmZzZXQoQVJNNjRSZWdpc3RlcnM6Ong1LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0
ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICBjYXNlIFVOV19BUk02NF94NjoKLSAgICAgICAgICAgICAgICBtX3JlZ2lzdGVy
cy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDYsIHByb2xvZy5zYXZl
ZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAg
ICAgICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0
UmVnaXN0ZXJzOjp4NiwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5j
ZmFSZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
Y2FzZSBVTldfQVJNNjRfeDc6Ci0gICAgICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJl
Z2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6Ong3LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNb
aV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAg
cmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6
eDcsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJP
ZmZzZXQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVU5XX0FS
TTY0X3g4OgotICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zm
c2V0KEFSTTY0UmVnaXN0ZXJzOjp4OCwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCAr
IHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAgICAgIHJlZ2lzdGVyT2Zm
c2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6Ong4LCBwcm9sb2cu
c2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVOV19BUk02NF94OToKLSAg
ICAgICAgICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJl
Z2lzdGVyczo6eDksIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2Zh
UmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVu
ZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4OSwgcHJvbG9nLnNhdmVkUmVnaXN0
ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVTldfQVJNNjRfeDEwOgotICAgICAgICAgICAg
ICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4
MTAsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJP
ZmZzZXQpKTsKKyAgICAgICAgICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3Rl
ckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MTAsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5v
ZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIGNhc2UgVU5XX0FSTTY0X3gxMToKLSAgICAgICAgICAgICAgICBtX3Jl
Z2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDExLCBwcm9s
b2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7
CisgICAgICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNl
dChBUk02NFJlZ2lzdGVyczo6eDExLCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsg
cHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICBjYXNlIFVOV19BUk02NF94MTI6Ci0gICAgICAgICAgICAgICAgbV9yZWdpc3RlcnMu
YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OngxMiwgcHJvbG9nLnNhdmVk
UmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOworICAgICAg
ICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRS
ZWdpc3RlcnM6OngxMiwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5j
ZmFSZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
Y2FzZSBVTldfQVJNNjRfeDEzOgotICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChS
ZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MTMsIHByb2xvZy5zYXZlZFJlZ2lzdGVy
c1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAg
ICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJz
Ojp4MTMsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0
ZXJPZmZzZXQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVU5X
X0FSTTY0X3gxNDoKLSAgICAgICAgICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJB
dE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDE0LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zm
c2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgcmVnaXN0
ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDE0LCBw
cm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0
KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVOV19BUk02NF94
MTU6Ci0gICAgICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQo
QVJNNjRSZWdpc3RlcnM6OngxNSwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHBy
b2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0
cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OngxNSwgcHJvbG9nLnNh
dmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVTldfQVJNNjRfeDE2OgotICAg
ICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVn
aXN0ZXJzOjp4MTYsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2Zh
UmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVu
ZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MTYsIHByb2xvZy5zYXZlZFJlZ2lz
dGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVU5XX0FSTTY0X3gxNzoKLSAgICAgICAgICAg
ICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6
eDE3LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVy
T2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0
ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDE3LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0u
b2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBjYXNlIFVOV19BUk02NF94MTg6Ci0gICAgICAgICAgICAgICAgbV9y
ZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OngxOCwgcHJv
bG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkp
OworICAgICAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZz
ZXQoQVJNNjRSZWdpc3RlcnM6OngxOCwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCAr
IHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgY2FzZSBVTldfQVJNNjRfeDE5OgotICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJz
LmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MTksIHByb2xvZy5zYXZl
ZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAg
ICAgICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0
UmVnaXN0ZXJzOjp4MTksIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cu
Y2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IGNhc2UgVU5XX0FSTTY0X3gyMDoKLSAgICAgICAgICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQo
UmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDIwLCBwcm9sb2cuc2F2ZWRSZWdpc3Rl
cnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAg
ICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVy
czo6eDIwLCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lz
dGVyT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVO
V19BUk02NF94MjE6Ci0gICAgICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVy
QXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OngyMSwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9m
ZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAgICAgIHJlZ2lz
dGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OngyMSwg
cHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNl
dCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVTldfQVJNNjRf
eDIyOgotICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0
KEFSTTY0UmVnaXN0ZXJzOjp4MjIsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBw
cm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICByZWdpc3Rlck9mZnNl
dHMtPmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MjIsIHByb2xvZy5z
YXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVU5XX0FSTTY0X3gyMzoKLSAg
ICAgICAgICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJl
Z2lzdGVyczo6eDIzLCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNm
YVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBl
bmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDIzLCBwcm9sb2cuc2F2ZWRSZWdp
c3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVOV19BUk02NF94MjQ6Ci0gICAgICAgICAg
ICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6
OngyNCwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rl
ck9mZnNldCkpOworICAgICAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lz
dGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OngyNCwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ld
Lm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgY2FzZSBVTldfQVJNNjRfeDI1OgotICAgICAgICAgICAgICAgIG1f
cmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MjUsIHBy
b2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQp
KTsKKyAgICAgICAgICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3RlckF0T2Zm
c2V0KEFSTTY0UmVnaXN0ZXJzOjp4MjUsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQg
KyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGNhc2UgVU5XX0FSTTY0X3gyNjoKLSAgICAgICAgICAgICAgICBtX3JlZ2lzdGVy
cy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDI2LCBwcm9sb2cuc2F2
ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAg
ICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02
NFJlZ2lzdGVyczo6eDI2LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9n
LmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICBjYXNlIFVOV19BUk02NF94Mjc6Ci0gICAgICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5k
KFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OngyNywgcHJvbG9nLnNhdmVkUmVnaXN0
ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAg
ICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3Rl
cnM6OngyNywgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdp
c3Rlck9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBV
TldfQVJNNjRfeDI4OgotICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3Rl
ckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MjgsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5v
ZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICByZWdp
c3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4Mjgs
IHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZz
ZXQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVU5XX0FSTTY0
X2ZwOgotICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0
KEFSTTY0UmVnaXN0ZXJzOjpmcCwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHBy
b2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0
cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OmZwLCBwcm9sb2cuc2F2
ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVOV19BUk02NF94MzA6Ci0gICAg
ICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdp
c3RlcnM6OngzMCwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFS
ZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5k
KFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OngzMCwgcHJvbG9nLnNhdmVkUmVnaXN0
ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVTldfQVJNNjRfc3A6Ci0gICAgICAgICAgICAg
ICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnNw
LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zm
c2V0KSk7CisgICAgICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0ZXJB
dE9mZnNldChBUk02NFJlZ2lzdGVyczo6c3AsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZz
ZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIGNhc2UgVU5XX0FSTTY0X3YwOgotICAgICAgICAgICAgICAgIG1fcmVnaXN0
ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxMCwgcHJvbG9nLnNh
dmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOworICAg
ICAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJN
NjRSZWdpc3RlcnM6OnEwLCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9n
LmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICBjYXNlIFVOV19BUk02NF92MToKLSAgICAgICAgICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQo
UmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTEsIHByb2xvZy5zYXZlZFJlZ2lzdGVy
c1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAg
ICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJz
OjpxMSwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rl
ck9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVTldf
QVJNNjRfdjI6Ci0gICAgICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRP
ZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnEyLCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0
ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgcmVnaXN0ZXJP
ZmZzZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTIsIHByb2xv
Zy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVU5XX0FSTTY0X3YzOgot
ICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0
UmVnaXN0ZXJzOjpxMywgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5j
ZmFSZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBw
ZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnEzLCBwcm9sb2cuc2F2ZWRSZWdp
c3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVOV19BUk02NF92NDoKLSAgICAgICAgICAg
ICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6
cTQsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJP
ZmZzZXQpKTsKKyAgICAgICAgICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3Rl
ckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxNCwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9m
ZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgY2FzZSBVTldfQVJNNjRfdjU6Ci0gICAgICAgICAgICAgICAgbV9yZWdp
c3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnE1LCBwcm9sb2cu
c2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7Cisg
ICAgICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChB
Uk02NFJlZ2lzdGVyczo6cTUsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9s
b2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIGNhc2UgVU5XX0FSTTY0X3Y2OgotICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVu
ZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxNiwgcHJvbG9nLnNhdmVkUmVnaXN0
ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAg
ICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3Rl
cnM6OnE2LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lz
dGVyT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVO
V19BUk02NF92NzoKLSAgICAgICAgICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJB
dE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTcsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZz
ZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICByZWdpc3Rl
ck9mZnNldHMtPmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxNywgcHJv
bG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkp
OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVTldfQVJNNjRfdjg6
Ci0gICAgICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJN
NjRSZWdpc3RlcnM6OnE4LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9n
LmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5h
cHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTgsIHByb2xvZy5zYXZlZFJl
Z2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVU5XX0FSTTY0X3Y5OgotICAgICAgICAg
ICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJz
OjpxOSwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rl
ck9mZnNldCkpOworICAgICAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lz
dGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnE5LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0u
b2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBjYXNlIFVOV19BUk02NF92MTA6Ci0gICAgICAgICAgICAgICAgbV9y
ZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnExMCwgcHJv
bG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkp
OworICAgICAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZz
ZXQoQVJNNjRSZWdpc3RlcnM6OnExMCwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCAr
IHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgY2FzZSBVTldfQVJNNjRfdjExOgotICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJz
LmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxMTEsIHByb2xvZy5zYXZl
ZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAg
ICAgICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0
UmVnaXN0ZXJzOjpxMTEsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cu
Y2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IGNhc2UgVU5XX0FSTTY0X3YxMjoKLSAgICAgICAgICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQo
UmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTEyLCBwcm9sb2cuc2F2ZWRSZWdpc3Rl
cnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAg
ICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVy
czo6cTEyLCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lz
dGVyT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVO
V19BUk02NF92MTM6Ci0gICAgICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVy
QXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnExMywgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9m
ZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAgICAgIHJlZ2lz
dGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnExMywg
cHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNl
dCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVTldfQVJNNjRf
djE0OgotICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0
KEFSTTY0UmVnaXN0ZXJzOjpxMTQsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBw
cm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICByZWdpc3Rlck9mZnNl
dHMtPmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxMTQsIHByb2xvZy5z
YXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVU5XX0FSTTY0X3YxNToKLSAg
ICAgICAgICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJl
Z2lzdGVyczo6cTE1LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNm
YVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBl
bmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTE1LCBwcm9sb2cuc2F2ZWRSZWdp
c3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVOV19BUk02NF92MTY6Ci0gICAgICAgICAg
ICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6
OnExNiwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rl
ck9mZnNldCkpOworICAgICAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lz
dGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnExNiwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ld
Lm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgY2FzZSBVTldfQVJNNjRfdjE3OgotICAgICAgICAgICAgICAgIG1f
cmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxMTcsIHBy
b2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQp
KTsKKyAgICAgICAgICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3RlckF0T2Zm
c2V0KEFSTTY0UmVnaXN0ZXJzOjpxMTcsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQg
KyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGNhc2UgVU5XX0FSTTY0X3YxODoKLSAgICAgICAgICAgICAgICBtX3JlZ2lzdGVy
cy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTE4LCBwcm9sb2cuc2F2
ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAg
ICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02
NFJlZ2lzdGVyczo6cTE4LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9n
LmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICBjYXNlIFVOV19BUk02NF92MTk6Ci0gICAgICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5k
KFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnExOSwgcHJvbG9nLnNhdmVkUmVnaXN0
ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAg
ICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3Rl
cnM6OnExOSwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdp
c3Rlck9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBV
TldfQVJNNjRfdjIwOgotICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3Rl
ckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxMjAsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5v
ZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICByZWdp
c3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxMjAs
IHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZz
ZXQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVU5XX0FSTTY0
X3YyMToKLSAgICAgICAgICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNl
dChBUk02NFJlZ2lzdGVyczo6cTIxLCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsg
cHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgYXBwZW5kKFJlZ2lz
dGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnEyMSwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ld
Lm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgY2FzZSBVTldfQVJNNjRfdjIyOgotICAgICAgICAgICAgICAgIG1f
cmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxMjIsIHBy
b2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQp
KTsKKyAgICAgICAgICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3RlckF0T2Zm
c2V0KEFSTTY0UmVnaXN0ZXJzOjpxMjIsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQg
KyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGNhc2UgVU5XX0FSTTY0X3YyMzoKLSAgICAgICAgICAgICAgICBtX3JlZ2lzdGVy
cy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTIzLCBwcm9sb2cuc2F2
ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAg
ICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02
NFJlZ2lzdGVyczo6cTIzLCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9n
LmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICBjYXNlIFVOV19BUk02NF92MjQ6Ci0gICAgICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5k
KFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnEyNCwgcHJvbG9nLnNhdmVkUmVnaXN0
ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAg
ICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3Rl
cnM6OnEyNCwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdp
c3Rlck9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBV
TldfQVJNNjRfdjI1OgotICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3Rl
ckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxMjUsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5v
ZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICByZWdp
c3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxMjUs
IHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZz
ZXQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVU5XX0FSTTY0
X3YyNjoKLSAgICAgICAgICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNl
dChBUk02NFJlZ2lzdGVyczo6cTI2LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsg
cHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgcmVnaXN0ZXJPZmZz
ZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTI2LCBwcm9sb2cu
c2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVOV19BUk02NF92Mjc6Ci0g
ICAgICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRS
ZWdpc3RlcnM6OnEyNywgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5j
ZmFSZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBw
ZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnEyNywgcHJvbG9nLnNhdmVkUmVn
aXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVTldfQVJNNjRfdjI4OgotICAgICAgICAg
ICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJz
OjpxMjgsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0
ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdp
c3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxMjgsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tp
XS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIGNhc2UgVU5XX0FSTTY0X3YyOToKLSAgICAgICAgICAgICAgICBt
X3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTI5LCBw
cm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0
KSk7CisgICAgICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9m
ZnNldChBUk02NFJlZ2lzdGVyczo6cTI5LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0
ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICBjYXNlIFVOV19BUk02NF92MzA6Ci0gICAgICAgICAgICAgICAgbV9yZWdpc3Rl
cnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnEzMCwgcHJvbG9nLnNh
dmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOworICAg
ICAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJN
NjRSZWdpc3RlcnM6OnEzMCwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xv
Zy5jZmFSZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgY2FzZSBVTldfQVJNNjRfdjMxOgotICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVu
ZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxMzEsIHByb2xvZy5zYXZlZFJlZ2lz
dGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAg
ICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0
ZXJzOjpxMzEsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVn
aXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRlZmF1
bHQ6CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgLy8gbm9u
LXN0YW5kYXJkIHJlZ2lzdGVyIGJlaW5nIHNhdmVkIGluIHByb2xvZwpAQCAtMTAxNywyNSArMTAx
NSw4IEBAIGJvb2wgVW53aW5kSW5mbzo6cGFyc2Uodm9pZCogc2VjdGlvbiwgc2kKICNlbmRpZgog
CiAjZW5kaWYKLSAgICBzdGQ6OnNvcnQobV9yZWdpc3RlcnMuYmVnaW4oKSwgbV9yZWdpc3RlcnMu
ZW5kKCkpOwotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIFVud2luZEluZm86OmR1bXAoUHJp
bnRTdHJlYW0mIG91dCkgY29uc3QKLXsKLSAgICBvdXQucHJpbnQobGlzdER1bXAobV9yZWdpc3Rl
cnMpKTsKLX0KLQotUmVnaXN0ZXJBdE9mZnNldCogVW53aW5kSW5mbzo6ZmluZChSZWcgcmVnKSBj
b25zdAotewotICAgIHJldHVybiB0cnlCaW5hcnlTZWFyY2g8UmVnaXN0ZXJBdE9mZnNldCwgUmVn
PihtX3JlZ2lzdGVycywgbV9yZWdpc3RlcnMuc2l6ZSgpLCByZWcsIFJlZ2lzdGVyQXRPZmZzZXQ6
OmdldFJlZyk7Ci19Ci0KLXVuc2lnbmVkIFVud2luZEluZm86OmluZGV4T2YoUmVnIHJlZykgY29u
c3QKLXsKLSAgICBpZiAoUmVnaXN0ZXJBdE9mZnNldCogcG9pbnRlciA9IGZpbmQocmVnKSkKLSAg
ICAgICAgcmV0dXJuIHBvaW50ZXIgLSBtX3JlZ2lzdGVycy5iZWdpbigpOwotICAgIHJldHVybiBV
SU5UX01BWDsKKyAgICByZWdpc3Rlck9mZnNldHMtPnNvcnQoKTsKKyAgICByZXR1cm4gV1RGOjpt
b3ZlKHJlZ2lzdGVyT2Zmc2V0cyk7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpGVEwKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVW53aW5kSW5mby5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVW53aW5kSW5mby5oCShyZXZpc2lvbiAx
ODk1NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFVud2luZEluZm8uaAkod29y
a2luZyBjb3B5KQpAQCAtMzEsMjMgKzMxLDExIEBACiAjaWYgRU5BQkxFKEZUTF9KSVQpCiAKICNp
bmNsdWRlICJGVExHZW5lcmF0ZWRGdW5jdGlvbi5oIgotI2luY2x1ZGUgIkZUTFJlZ2lzdGVyQXRP
ZmZzZXQuaCIKK2NsYXNzIFJlZ2lzdGVyQXRPZmZzZXRMaXN0OwogCiBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIEZUTCB7CiAKLXN0cnVjdCBVbndpbmRJbmZvIHsKLSAgICBVbndpbmRJbmZvKCk7
Ci0gICAgflVud2luZEluZm8oKTsKLSAgICAKLSAgICBib29sIHBhcnNlKHZvaWQqLCBzaXplX3Qs
IEdlbmVyYXRlZEZ1bmN0aW9uKTsKLSAgICAKLSAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBj
b25zdDsKLSAgICAKLSAgICBSZWdpc3RlckF0T2Zmc2V0KiBmaW5kKFJlZykgY29uc3Q7Ci0gICAg
dW5zaWduZWQgaW5kZXhPZihSZWcpIGNvbnN0OyAvLyBSZXR1cm5zIFVJTlRfTUFYIGlmIG5vdCBm
b3VuZC4KLSAgICAKLSAgICBWZWN0b3I8UmVnaXN0ZXJBdE9mZnNldD4gbV9yZWdpc3RlcnM7Ci19
Oworc3RkOjp1bmlxdWVfcHRyPFJlZ2lzdGVyQXRPZmZzZXRMaXN0PiAgcGFyc2VVbndpbmRJbmZv
KHZvaWQqLCBzaXplX3QsIEdlbmVyYXRlZEZ1bmN0aW9uKTsKIAogfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OkZUTAogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDE4OTU0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1MCwx
NSArNjUwLDU1IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGlmICghdW53aW5kQ2FsbEZyYW1lKHZp
c2l0b3IpKSB7CiAgICAgICAgICAgICAgICAgaWYgKExlZ2FjeVByb2ZpbGVyKiBwcm9maWxlciA9
IHZtLmVuYWJsZWRQcm9maWxlcigpKQogICAgICAgICAgICAgICAgICAgICBwcm9maWxlci0+ZXhj
ZXB0aW9uVW53aW5kKG1fY2FsbEZyYW1lKTsKKworICAgICAgICAgICAgICAgIGNvcHlDYWxsZWVT
YXZlc1RvVk1DYWxsZWVTYXZlc0J1ZmZlcih2aXNpdG9yKTsKKwogICAgICAgICAgICAgICAgIHJl
dHVybiBTdGFja1Zpc2l0b3I6OkRvbmU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZQog
ICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6RG9uZTsKIAorICAgICAgICBjb3B5Q2Fs
bGVlU2F2ZXNUb1ZNQ2FsbGVlU2F2ZXNCdWZmZXIodmlzaXRvcik7CisKICAgICAgICAgcmV0dXJu
IFN0YWNrVmlzaXRvcjo6Q29udGludWU7CiAgICAgfQogCiBwcml2YXRlOgorICAgIHZvaWQgY29w
eUNhbGxlZVNhdmVzVG9WTUNhbGxlZVNhdmVzQnVmZmVyKFN0YWNrVmlzaXRvciYgdmlzaXRvcikK
KyAgICB7CisjaWYgRU5BQkxFKEpJVCkgJiYgTlVNQkVSX09GX0NBTExFRV9TQVZFU19SRUdJU1RF
UlMgPiAwCisKKyAgICAgICAgaWYgKCF2aXNpdG9yLT5pc0pTRnJhbWUoKSkKKyAgICAgICAgICAg
IHJldHVybjsKKworI2lmIEVOQUJMRShERkdfSklUKQorICAgICAgICBpZiAodmlzaXRvci0+aW5s
aW5lQ2FsbEZyYW1lKCkpCisgICAgICAgICAgICByZXR1cm47CisjZW5kaWYKKyAgICAgICAgUmVn
aXN0ZXJBdE9mZnNldExpc3QqIGN1cnJlbnRDYWxsZWVTYXZlcyA9IG1fY29kZUJsb2NrID8gbV9j
b2RlQmxvY2stPmNhbGxlZVNhdmVSZWdpc3RlcnMoKSA6IG51bGxwdHI7CisKKyAgICAgICAgaWYg
KCFjdXJyZW50Q2FsbGVlU2F2ZXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgVk0m
IHZtID0gbV9jYWxsRnJhbWUtPnZtKCk7CisgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBh
bGxDYWxsZWVTYXZlcyA9IHZtLmdldEFsbENhbGxlZVNhdmVSZWdpc3Rlck9mZnNldHMoKTsKKyAg
ICAgICAgUmVnaXN0ZXJTZXQgZG9udENvcHlSZWdpc3RlcnMgPSBSZWdpc3RlclNldDo6c3RhY2tS
ZWdpc3RlcnMoKTsKKyAgICAgICAgaW50cHRyX3QqIGZyYW1lID0gcmVpbnRlcnByZXRfY2FzdDxp
bnRwdHJfdCo+KG1fY2FsbEZyYW1lLT5yZWdpc3RlcnMoKSk7CisKKyAgICAgICAgdW5zaWduZWQg
cmVnaXN0ZXJDb3VudCA9IGN1cnJlbnRDYWxsZWVTYXZlcy0+c2l6ZSgpOworICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVnaXN0ZXJDb3VudDsgaSsrKSB7CisgICAgICAgICAgICBS
ZWdpc3RlckF0T2Zmc2V0IGN1cnJlbnRFbnRyeSA9IGN1cnJlbnRDYWxsZWVTYXZlcy0+YXQoaSk7
CisgICAgICAgICAgICBpZiAoZG9udENvcHlSZWdpc3RlcnMuZ2V0KGN1cnJlbnRFbnRyeS5yZWco
KSkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBSZWdpc3RlckF0T2Zm
c2V0KiB2bUNhbGxlZVNhdmVzRW50cnkgPSBhbGxDYWxsZWVTYXZlcy0+ZmluZChjdXJyZW50RW50
cnkucmVnKCkpOworICAgICAgICAgICAgCisgICAgICAgICAgICB2bS5jYWxsZWVTYXZlUmVnaXN0
ZXJzQnVmZmVyW3ZtQ2FsbGVlU2F2ZXNFbnRyeS0+b2Zmc2V0QXNJbmRleCgpXSA9ICooZnJhbWUg
KyBjdXJyZW50RW50cnkub2Zmc2V0QXNJbmRleCgpKTsKKyAgICAgICAgfQorI2Vsc2UKKyAgICAg
ICAgVU5VU0VEX1BBUkFNKHZpc2l0b3IpOworI2VuZGlmCisgICAgfQorCiAgICAgQ2FsbEZyYW1l
KiYgbV9jYWxsRnJhbWU7CiAgICAgYm9vbCBtX2lzVGVybWluYXRpb247CiAgICAgQ29kZUJsb2Nr
KiYgbV9jb2RlQmxvY2s7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0FyaXR5Q2hl
Y2tGYWlsUmV0dXJuVGh1bmtzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0FyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzLmNwcAkocmV2aXNpb24gMTg5NTQzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bcml0eUNoZWNrRmFpbFJldHVyblRodW5rcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMTM1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IkFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzLmgiCi0KLSNpZiBFTkFCTEUoSklUKQotCi0jaW5j
bHVkZSAiQXNzZW1ibHlIZWxwZXJzLmgiCi0jaW5jbHVkZSAiTGlua0J1ZmZlci5oIgotI2luY2x1
ZGUgIkpTQ0lubGluZXMuaCIKLSNpbmNsdWRlICJTdGFja0FsaWdubWVudC5oIgotCi1uYW1lc3Bh
Y2UgSlNDIHsKLQotQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3M6OkFyaXR5Q2hlY2tGYWlsUmV0
dXJuVGh1bmtzKCkKLSAgICA6IG1fbmV4dFNpemUoMCkKLXsKLX0KLQotQXJpdHlDaGVja0ZhaWxS
ZXR1cm5UaHVua3M6On5Bcml0eUNoZWNrRmFpbFJldHVyblRodW5rcygpIHsgfQotCi1Db2RlTG9j
YXRpb25MYWJlbCogQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3M6OnJldHVyblBDc0ZvcigKLSAg
ICBWTSYgdm0sIHVuc2lnbmVkIG51bUV4cGVjdGVkQXJndW1lbnRzSW5jbHVkaW5nVGhpcykKLXsK
LSAgICBBU1NFUlQobnVtRXhwZWN0ZWRBcmd1bWVudHNJbmNsdWRpbmdUaGlzID49IDEpOwotICAg
IAotICAgIG51bUV4cGVjdGVkQXJndW1lbnRzSW5jbHVkaW5nVGhpcyA9IFdURjo6cm91bmRVcFRv
TXVsdGlwbGVPZigKLSAgICAgICAgc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwgbnVtRXhwZWN0
ZWRBcmd1bWVudHNJbmNsdWRpbmdUaGlzKTsKLSAgICAKLSAgICB7Ci0gICAgICAgIENvbmN1cnJl
bnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAgICAgIGlmIChudW1FeHBlY3RlZEFyZ3Vt
ZW50c0luY2x1ZGluZ1RoaXMgPCBtX25leHRTaXplKQotICAgICAgICAgICAgcmV0dXJuIG1fcmV0
dXJuUENBcnJheXMubGFzdCgpLmdldCgpOwotICAgIH0KLSAgICAKLSAgICBBU1NFUlQoIWlzQ29t
cGlsYXRpb25UaHJlYWQoKSk7Ci0gICAgCi0gICAgbnVtRXhwZWN0ZWRBcmd1bWVudHNJbmNsdWRp
bmdUaGlzID0gc3RkOjptYXgobnVtRXhwZWN0ZWRBcmd1bWVudHNJbmNsdWRpbmdUaGlzLCBtX25l
eHRTaXplICogMik7Ci0gICAgCi0gICAgQXNzZW1ibHlIZWxwZXJzIGppdCgmdm0sIDApOwotICAg
IAotICAgIFZlY3RvcjxBc3NlbWJseUhlbHBlcnM6OkxhYmVsPiBsYWJlbHM7Ci0gICAgCi0gICAg
Zm9yICh1bnNpZ25lZCBzaXplID0gbV9uZXh0U2l6ZTsgc2l6ZSA8PSBudW1FeHBlY3RlZEFyZ3Vt
ZW50c0luY2x1ZGluZ1RoaXM7IHNpemUgKz0gc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSkgewot
ICAgICAgICBsYWJlbHMuYXBwZW5kKGppdC5sYWJlbCgpKTsKLSAgICAgICAgCi0gICAgICAgIGpp
dC5sb2FkMzIoCi0gICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoCi0gICAgICAg
ICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3RlciwKLSAgICAgICAg
ICAgICAgICAoSlNTdGFjazo6QXJndW1lbnRDb3VudCAtIEpTU3RhY2s6OkNhbGxlckZyYW1lQW5k
UENTaXplKSAqIHNpemVvZihSZWdpc3RlcikgKwotICAgICAgICAgICAgICAgIFBheWxvYWRPZmZz
ZXQpLAotICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDQpOwotICAgICAgICBqaXQuYWRkMzIoCi0g
ICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMigKLSAgICAgICAgICAgICAg
ICBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplIC0gSlNTdGFjazo6Q2FsbGVyRnJhbWVBbmRQ
Q1NpemUgKyBzaXplIC0gMSksCi0gICAgICAgICAgICBHUFJJbmZvOjpyZWdUNCwgR1BSSW5mbzo6
cmVnVDIpOwotICAgICAgICBqaXQubHNoaWZ0MzIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1t
MzIoMyksIEdQUkluZm86OnJlZ1QyKTsKLSAgICAgICAgaml0LmFkZFB0cihBc3NlbWJseUhlbHBl
cnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBHUFJJbmZvOjpyZWdUMik7Ci0gICAgICAgIGppdC5s
b2FkUHRyKEdQUkluZm86OnJlZ1QyLCBHUFJJbmZvOjpyZWdUMik7Ci0gICAgICAgIAotICAgICAg
ICBqaXQuYWRkUHRyKAotICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
c2l6ZSAqIHNpemVvZihSZWdpc3RlcikpLAotICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpz
dGFja1BvaW50ZXJSZWdpc3Rlcik7Ci0gICAgICAgIAotICAgICAgICAvLyBUaHVua3MgbGlrZSBv
dXJzIHdhbnQgdG8gdXNlIHRoZSByZXR1cm4gUEMgdG8gZmlndXJlIG91dCB3aGVyZSB0aGluZ3MK
LSAgICAgICAgLy8gd2VyZSBzYXZlZC4gU28sIHdlIHBheSBpdCBmb3J3YXJkLgotICAgICAgICBq
aXQuc3RvcmUzMigKLSAgICAgICAgICAgIEdQUkluZm86OnJlZ1Q0LAotICAgICAgICAgICAgQXNz
ZW1ibHlIZWxwZXJzOjpBZGRyZXNzKAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6
c3RhY2tQb2ludGVyUmVnaXN0ZXIsCi0gICAgICAgICAgICAgICAgKEpTU3RhY2s6OkFyZ3VtZW50
Q291bnQgLSBKU1N0YWNrOjpDYWxsZXJGcmFtZUFuZFBDU2l6ZSkgKiBzaXplb2YoUmVnaXN0ZXIp
ICsKLSAgICAgICAgICAgICAgICBQYXlsb2FkT2Zmc2V0KSk7Ci0gICAgICAgIAotICAgICAgICBq
aXQuanVtcChHUFJJbmZvOjpyZWdUMik7Ci0gICAgfQotICAgIAotICAgIC8vIFNhZGx5LCB3ZSBj
YW5ub3QgZmFpbCBoZXJlIGJlY2F1c2UgdGhlIExMSW50IG1heSBuZWVkIHVzLgotICAgIExpbmtC
dWZmZXIgbGlua0J1ZmZlcih2bSwgaml0LCBHTE9CQUxfVEhVTktfSUQsIEpJVENvbXBpbGF0aW9u
TXVzdFN1Y2NlZWQpOwotICAgIAotICAgIHVuc2lnbmVkIHJldHVyblBDc1NpemUgPSBudW1FeHBl
Y3RlZEFyZ3VtZW50c0luY2x1ZGluZ1RoaXMgLyBzdGFja0FsaWdubWVudFJlZ2lzdGVycygpICsg
MTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29kZUxvY2F0aW9uTGFiZWxbXT4gcmV0dXJuUENzID0K
LSAgICAgICAgc3RkOjptYWtlX3VuaXF1ZTxDb2RlTG9jYXRpb25MYWJlbFtdPihyZXR1cm5QQ3NT
aXplKTsKLSAgICBmb3IgKHVuc2lnbmVkIHNpemUgPSAwOyBzaXplIDw9IG51bUV4cGVjdGVkQXJn
dW1lbnRzSW5jbHVkaW5nVGhpczsgc2l6ZSArPSBzdGFja0FsaWdubWVudFJlZ2lzdGVycygpKSB7
Ci0gICAgICAgIHVuc2lnbmVkIGluZGV4ID0gc2l6ZSAvIHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJz
KCk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGluZGV4IDwgcmV0dXJuUENzU2l6ZSk7Ci0gICAg
ICAgIGlmIChzaXplIDwgbV9uZXh0U2l6ZSkKLSAgICAgICAgICAgIHJldHVyblBDc1tpbmRleF0g
PSBtX3JldHVyblBDQXJyYXlzLmxhc3QoKVtpbmRleF07Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIHJldHVyblBDc1tpbmRleF0gPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2YobGFiZWxzWyhzaXpl
IC0gbV9uZXh0U2l6ZSkgLyBzdGFja0FsaWdubWVudFJlZ2lzdGVycygpXSk7Ci0gICAgfQotCi0g
ICAgQ29kZUxvY2F0aW9uTGFiZWwqIHJlc3VsdCA9IHJldHVyblBDcy5nZXQoKTsKLQotICAgIHsK
LSAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9sb2NrKTsKLSAgICAgICAgbV9y
ZXR1cm5QQ0FycmF5cy5hcHBlbmQoV1RGOjptb3ZlKHJldHVyblBDcykpOwotICAgICAgICBtX3Jl
ZnMuYXBwZW5kKEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgKCJBcml0eSBjaGVjayBmYWlsIHJl
dHVybiB0aHVua3MgZm9yIHVwIHRvIG51bUFyZ3MgPSAldSIsIG51bUV4cGVjdGVkQXJndW1lbnRz
SW5jbHVkaW5nVGhpcykpKTsKLSAgICAgICAgbV9uZXh0U2l6ZSA9IG51bUV4cGVjdGVkQXJndW1l
bnRzSW5jbHVkaW5nVGhpcyArIHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCk7Ci0gICAgfQotICAg
IAotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLUNvZGVMb2NhdGlvbkxhYmVsIEFyaXR5Q2hlY2tG
YWlsUmV0dXJuVGh1bmtzOjpyZXR1cm5QQ0ZvcihWTSYgdm0sIHVuc2lnbmVkIHNsb3RzVG9BZGQp
Ci17Ci0gICAgcmV0dXJuIHJldHVyblBDc0Zvcih2bSwgc2xvdHNUb0FkZClbc2xvdHNUb0FkZCAv
IHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCldOwotfQotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQot
I2VuZGlmIC8vIEVOQUJMRShKSVQpCi0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
QXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0FyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzLmgJKHJldmlzaW9uIDE4OTU0
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVu
a3MuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgQXJpdHlDaGVja0ZhaWxSZXR1cm5U
aHVua3NfaAotI2RlZmluZSBBcml0eUNoZWNrRmFpbFJldHVyblRodW5rc19oCi0KLSNpZiBFTkFC
TEUoSklUKQotCi0jaW5jbHVkZSAiQ29kZUxvY2F0aW9uLmgiCi0jaW5jbHVkZSAiQ29uY3VycmVu
dEpJVExvY2suaCIKLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotCi1uYW1lc3BhY2UgSlNDIHsK
LQotY2xhc3MgQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3MgewotcHVibGljOgotICAgIEFyaXR5
Q2hlY2tGYWlsUmV0dXJuVGh1bmtzKCk7Ci0gICAgfkFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtz
KCk7Ci0gICAgCi0gICAgLy8gUmV0dXJucyBhIHBvaW50ZXIgdG8gYW4gYXJyYXkgb2YgcmV0dXJu
IGxhYmVscyBpbmRleGVkIGJ5IG1pc3NpbmdBcmdzLgotICAgIENvZGVMb2NhdGlvbkxhYmVsKiBy
ZXR1cm5QQ3NGb3IoVk0mLCB1bnNpZ25lZCBudW1FeHBlY3RlZEFyZ3VtZW50c0luY2x1ZGluZ1Ro
aXMpOwotICAgIAotICAgIENvZGVMb2NhdGlvbkxhYmVsIHJldHVyblBDRm9yKFZNJiwgdW5zaWdu
ZWQgc2xvdHNUb0FkZCk7Ci0gICAgCi1wcml2YXRlOgotICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9w
dHI8Q29kZUxvY2F0aW9uTGFiZWxbXT4+IG1fcmV0dXJuUENBcnJheXM7Ci0gICAgdW5zaWduZWQg
bV9uZXh0U2l6ZTsKLSAgICBWZWN0b3I8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPiBtX3JlZnM7Ci0g
ICAgQ29uY3VycmVudEpJVExvY2sgbV9sb2NrOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0K
LSNlbmRpZiAvLyBFTkFCTEUoSklUKQotCi0jZW5kaWYgLy8gQXJpdHlDaGVja0ZhaWxSZXR1cm5U
aHVua3NfaAotCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVy
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxw
ZXJzLmgJKHJldmlzaW9uIDE4OTU0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNz
ZW1ibHlIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDggQEAKICNpbmNsdWRl
ICJJbmxpbmVDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJKSVRDb2RlLmgiCiAjaW5jbHVkZSAiTWFj
cm9Bc3NlbWJsZXIuaCIKKyNpbmNsdWRlICJSZWdpc3RlckF0T2Zmc2V0TGlzdC5oIgorI2luY2x1
ZGUgIlJlZ2lzdGVyU2V0LmgiCiAjaW5jbHVkZSAiVHlwZW9mVHlwZS5oIgogI2luY2x1ZGUgIlZN
LmgiCiAKQEAgLTE3NSw2ICsxNzcsMTU5IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIH0KIAorICAg
IHZvaWQgZW1pdFNhdmVDYWxsZWVTYXZlc0ZvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmlydHVh
bFJlZ2lzdGVyIG9mZnNldFZpcnR1YWxSZWdpc3RlciA9IHN0YXRpY19jYXN0PFZpcnR1YWxSZWdp
c3Rlcj4oMCkpCisgICAgeworICAgICAgICBBU1NFUlQoY29kZUJsb2NrKTsKKworICAgICAgICBS
ZWdpc3RlckF0T2Zmc2V0TGlzdCogY2FsbGVlU2F2ZXMgPSBjb2RlQmxvY2stPmNhbGxlZVNhdmVS
ZWdpc3RlcnMoKTsKKyAgICAgICAgUmVnaXN0ZXJTZXQgZG9udFNhdmVSZWdpc3RlcnMgPSBSZWdp
c3RlclNldChSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKSwgUmVnaXN0ZXJTZXQ6OmFsbEZQ
UnMoKSk7CisgICAgICAgIHVuc2lnbmVkIHJlZ2lzdGVyQ291bnQgPSBjYWxsZWVTYXZlcy0+c2l6
ZSgpOworCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZWdpc3RlckNvdW50OyBp
KyspIHsKKyAgICAgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50cnkgPSBjYWxsZWVTYXZlcy0+
YXQoaSk7CisgICAgICAgICAgICBpZiAoZG9udFNhdmVSZWdpc3RlcnMuZ2V0KGVudHJ5LnJlZygp
KSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIHN0b3JlUHRyKGVudHJ5
LnJlZygpLmdwcigpLCBBZGRyZXNzKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBvZmZzZXRWaXJ0dWFs
UmVnaXN0ZXIub2Zmc2V0SW5CeXRlcygpICsgZW50cnkub2Zmc2V0KCkpKTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIHZvaWQgZW1pdFJlc3RvcmVDYWxsZWVTYXZlc0ZvcihDb2RlQmxvY2sqIGNv
ZGVCbG9jaykKKyAgICB7CisgICAgICAgIEFTU0VSVChjb2RlQmxvY2spOworCisgICAgICAgIFJl
Z2lzdGVyQXRPZmZzZXRMaXN0KiBjYWxsZWVTYXZlcyA9IGNvZGVCbG9jay0+Y2FsbGVlU2F2ZVJl
Z2lzdGVycygpOworICAgICAgICBSZWdpc3RlclNldCBkb250UmVzdG9yZVJlZ2lzdGVycyA9IFJl
Z2lzdGVyU2V0KFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpLCBSZWdpc3RlclNldDo6YWxs
RlBScygpKTsKKyAgICAgICAgdW5zaWduZWQgcmVnaXN0ZXJDb3VudCA9IGNhbGxlZVNhdmVzLT5z
aXplKCk7CisgICAgICAgIAorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVnaXN0
ZXJDb3VudDsgaSsrKSB7CisgICAgICAgICAgICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5ID0gY2Fs
bGVlU2F2ZXMtPmF0KGkpOworICAgICAgICAgICAgaWYgKGRvbnRSZXN0b3JlUmVnaXN0ZXJzLmdl
dChlbnRyeS5yZWcoKSkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBs
b2FkUHRyKEFkZHJlc3MoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGVudHJ5Lm9mZnNldCgpKSwgZW50
cnkucmVnKCkuZ3ByKCkpOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBlbWl0U2F2ZUNh
bGxlZVNhdmVzKCkKKyAgICB7CisgICAgICAgIGVtaXRTYXZlQ2FsbGVlU2F2ZXNGb3IoY29kZUJs
b2NrKCkpOworICAgIH0KKworICAgIHZvaWQgZW1pdFJlc3RvcmVDYWxsZWVTYXZlcygpCisgICAg
eworICAgICAgICBlbWl0UmVzdG9yZUNhbGxlZVNhdmVzRm9yKGNvZGVCbG9jaygpKTsKKyAgICB9
CisKKyAgICB2b2lkIGNvcHlDYWxsZWVTYXZlc1RvVk1DYWxsZWVTYXZlc0J1ZmZlcihjb25zdCBU
ZW1wUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMgPSB7IFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFp
bGFibGVSZWdpc3RlcnMoKSB9KQorICAgIHsKKyNpZiBOVU1CRVJfT0ZfQ0FMTEVFX1NBVkVTX1JF
R0lTVEVSUyA+IDAKKyAgICAgICAgR1BSUmVnIHRlbXAxID0gdXNlZFJlZ2lzdGVycy5nZXRGcmVl
R1BSKDApOworCisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihtX3ZtLT5jYWxsZWVTYXZlUmVn
aXN0ZXJzQnVmZmVyKSwgdGVtcDEpOworCisgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBh
bGxDYWxsZWVTYXZlcyA9IG1fdm0tPmdldEFsbENhbGxlZVNhdmVSZWdpc3Rlck9mZnNldHMoKTsK
KyAgICAgICAgUmVnaXN0ZXJTZXQgZG9udENvcHlSZWdpc3RlcnMgPSBSZWdpc3RlclNldDo6c3Rh
Y2tSZWdpc3RlcnMoKTsKKyAgICAgICAgdW5zaWduZWQgcmVnaXN0ZXJDb3VudCA9IGFsbENhbGxl
ZVNhdmVzLT5zaXplKCk7CisgICAgICAgIAorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgcmVnaXN0ZXJDb3VudDsgaSsrKSB7CisgICAgICAgICAgICBSZWdpc3RlckF0T2Zmc2V0IGVu
dHJ5ID0gYWxsQ2FsbGVlU2F2ZXMtPmF0KGkpOworICAgICAgICAgICAgaWYgKGRvbnRDb3B5UmVn
aXN0ZXJzLmdldChlbnRyeS5yZWcoKSkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgICAgICBpZiAoZW50cnkucmVnKCkuaXNHUFIoKSkKKyAgICAgICAgICAgICAgICBzdG9yZVB0
cihlbnRyeS5yZWcoKS5ncHIoKSwgQWRkcmVzcyh0ZW1wMSwgZW50cnkub2Zmc2V0KCkpKTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzdG9yZURvdWJsZShlbnRyeS5yZWcoKS5m
cHIoKSwgQWRkcmVzcyh0ZW1wMSwgZW50cnkub2Zmc2V0KCkpKTsKKyAgICAgICAgfQorI2Vsc2UK
KyAgICAgICAgVU5VU0VEX1BBUkFNKHVzZWRSZWdpc3RlcnMpOworI2VuZGlmCisgICAgfQorCisg
ICAgdm9pZCByZXN0b3JlQ2FsbGVlU2F2ZXNGcm9tVk1DYWxsZWVTYXZlc0J1ZmZlcihjb25zdCBU
ZW1wUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMgPSB7IFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFp
bGFibGVSZWdpc3RlcnMoKSB9KQorICAgIHsKKyNpZiBOVU1CRVJfT0ZfQ0FMTEVFX1NBVkVTX1JF
R0lTVEVSUyA+IDAKKyAgICAgICAgR1BSUmVnIHRlbXAxID0gdXNlZFJlZ2lzdGVycy5nZXRGcmVl
R1BSKDApOworICAgICAgICAKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKG1fdm0tPmNhbGxl
ZVNhdmVSZWdpc3RlcnNCdWZmZXIpLCB0ZW1wMSk7CisKKyAgICAgICAgUmVnaXN0ZXJBdE9mZnNl
dExpc3QqIGFsbENhbGxlZVNhdmVzID0gbV92bS0+Z2V0QWxsQ2FsbGVlU2F2ZVJlZ2lzdGVyT2Zm
c2V0cygpOworICAgICAgICBSZWdpc3RlclNldCBkb250UmVzdG9yZVJlZ2lzdGVycyA9IFJlZ2lz
dGVyU2V0OjpzdGFja1JlZ2lzdGVycygpOworICAgICAgICB1bnNpZ25lZCByZWdpc3RlckNvdW50
ID0gYWxsQ2FsbGVlU2F2ZXMtPnNpemUoKTsKKyAgICAgICAgCisgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCByZWdpc3RlckNvdW50OyBpKyspIHsKKyAgICAgICAgICAgIFJlZ2lzdGVy
QXRPZmZzZXQgZW50cnkgPSBhbGxDYWxsZWVTYXZlcy0+YXQoaSk7CisgICAgICAgICAgICBpZiAo
ZG9udFJlc3RvcmVSZWdpc3RlcnMuZ2V0KGVudHJ5LnJlZygpKSkKKyAgICAgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgICAgIGlmIChlbnRyeS5yZWcoKS5pc0dQUigpKQorICAgICAgICAg
ICAgICAgIGxvYWRQdHIoQWRkcmVzcyh0ZW1wMSwgZW50cnkub2Zmc2V0KCkpLCBlbnRyeS5yZWco
KS5ncHIoKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbG9hZERvdWJsZShB
ZGRyZXNzKHRlbXAxLCBlbnRyeS5vZmZzZXQoKSksIGVudHJ5LnJlZygpLmZwcigpKTsKKyAgICAg
ICAgfQorI2Vsc2UKKyAgICAgICAgVU5VU0VEX1BBUkFNKHVzZWRSZWdpc3RlcnMpOworI2VuZGlm
CisgICAgfQorICAgIAorICAgIHZvaWQgY29weUNhbGxlZVNhdmVzRnJvbUZyYW1lT3JSZWdpc3Rl
clRvVk1DYWxsZWVTYXZlc0J1ZmZlcihjb25zdCBUZW1wUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3Rl
cnMgPSB7IFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSB9KQorICAgIHsK
KyNpZiBOVU1CRVJfT0ZfQ0FMTEVFX1NBVkVTX1JFR0lTVEVSUyA+IDAKKyAgICAgICAgR1BSUmVn
IHRlbXAxID0gdXNlZFJlZ2lzdGVycy5nZXRGcmVlR1BSKDApOworICAgICAgICBHUFJSZWcgdGVt
cDIgPSB1c2VkUmVnaXN0ZXJzLmdldEZyZWVHUFIoMSk7CisgICAgICAgIEZQUlJlZyBmcFRlbXAg
PSB1c2VkUmVnaXN0ZXJzLmdldEZyZWVGUFIoKTsKKyAgICAgICAgQVNTRVJUKHRlbXAyICE9IElu
dmFsaWRHUFJSZWcpOworCisgICAgICAgIEFTU0VSVChjb2RlQmxvY2soKSk7CisKKyAgICAgICAg
Ly8gQ29weSBzYXZlZCBjYWxsZWVTYXZlcyBvbiBzdGFjayBvciB1bnNhdmVkIGNhbGxlZVNhdmVz
IGluIHJlZ2lzdGVyIHRvIHZtIGNhbGxlZVNhdmUgYnVmZmVyCisgICAgICAgIG1vdmUoVHJ1c3Rl
ZEltbVB0cihtX3ZtLT5jYWxsZWVTYXZlUmVnaXN0ZXJzQnVmZmVyKSwgdGVtcDEpOworCisgICAg
ICAgIFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBhbGxDYWxsZWVTYXZlcyA9IG1fdm0tPmdldEFsbENh
bGxlZVNhdmVSZWdpc3Rlck9mZnNldHMoKTsKKyAgICAgICAgUmVnaXN0ZXJBdE9mZnNldExpc3Qq
IGN1cnJlbnRDYWxsZWVTYXZlcyA9IGNvZGVCbG9jaygpLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCk7
CisgICAgICAgIFJlZ2lzdGVyU2V0IGRvbnRDb3B5UmVnaXN0ZXJzID0gUmVnaXN0ZXJTZXQ6OnN0
YWNrUmVnaXN0ZXJzKCk7CisgICAgICAgIHVuc2lnbmVkIHJlZ2lzdGVyQ291bnQgPSBhbGxDYWxs
ZWVTYXZlcy0+c2l6ZSgpOworCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZWdp
c3RlckNvdW50OyBpKyspIHsKKyAgICAgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQgdm1FbnRyeSA9
IGFsbENhbGxlZVNhdmVzLT5hdChpKTsKKyAgICAgICAgICAgIGlmIChkb250Q29weVJlZ2lzdGVy
cy5nZXQodm1FbnRyeS5yZWcoKSkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
ICAgICBSZWdpc3RlckF0T2Zmc2V0KiBjdXJyZW50RnJhbWVFbnRyeSA9IGN1cnJlbnRDYWxsZWVT
YXZlcy0+ZmluZCh2bUVudHJ5LnJlZygpKTsKKworICAgICAgICAgICAgaWYgKHZtRW50cnkucmVn
KCkuaXNHUFIoKSkgeworICAgICAgICAgICAgICAgIEdQUlJlZyByZWdUb1N0b3JlOworICAgICAg
ICAgICAgICAgIGlmIChjdXJyZW50RnJhbWVFbnRyeSkgeworICAgICAgICAgICAgICAgICAgICAv
LyBMb2FkIGNhbGxlZVNhdmUgZnJvbSBzdGFjayBpbnRvIHRlbXAgcmVnaXN0ZXIKKyAgICAgICAg
ICAgICAgICAgICAgcmVnVG9TdG9yZSA9IHRlbXAyOworICAgICAgICAgICAgICAgICAgICBsb2Fk
UHRyKEFkZHJlc3MoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGN1cnJlbnRGcmFtZUVudHJ5LT5vZmZz
ZXQoKSksIHJlZ1RvU3RvcmUpOworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAg
ICAgICAgICAvLyBKdXN0IHN0b3JlIGNhbGxlZSBzYXZlIGRpcmVjdGx5CisgICAgICAgICAgICAg
ICAgICAgIHJlZ1RvU3RvcmUgPSB2bUVudHJ5LnJlZygpLmdwcigpOworCisgICAgICAgICAgICAg
ICAgc3RvcmVQdHIocmVnVG9TdG9yZSwgQWRkcmVzcyh0ZW1wMSwgdm1FbnRyeS5vZmZzZXQoKSkp
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBGUFJSZWcgZnBSZWdUb1N0
b3JlOworICAgICAgICAgICAgICAgIGlmIChjdXJyZW50RnJhbWVFbnRyeSkgeworICAgICAgICAg
ICAgICAgICAgICAvLyBMb2FkIGNhbGxlZVNhdmUgZnJvbSBzdGFjayBpbnRvIHRlbXAgcmVnaXN0
ZXIKKyAgICAgICAgICAgICAgICAgICAgZnBSZWdUb1N0b3JlID0gZnBUZW1wOworICAgICAgICAg
ICAgICAgICAgICBsb2FkRG91YmxlKEFkZHJlc3MoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGN1cnJl
bnRGcmFtZUVudHJ5LT5vZmZzZXQoKSksIGZwUmVnVG9TdG9yZSk7CisgICAgICAgICAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICAgICAgICAgIC8vIEp1c3Qgc3RvcmUgY2FsbGVlIHNhdmUgZGly
ZWN0bHkKKyAgICAgICAgICAgICAgICAgICAgZnBSZWdUb1N0b3JlID0gdm1FbnRyeS5yZWcoKS5m
cHIoKTsKKworICAgICAgICAgICAgICAgIHN0b3JlRG91YmxlKGZwUmVnVG9TdG9yZSwgQWRkcmVz
cyh0ZW1wMSwgdm1FbnRyeS5vZmZzZXQoKSkpOworICAgICAgICAgICAgfQorICAgICAgICB9Cisj
ZWxzZQorICAgICAgICBVTlVTRURfUEFSQU0odXNlZFJlZ2lzdGVycyk7CisjZW5kaWYKKyAgICB9
CisKKyAgICB2b2lkIGVtaXRNYXRlcmlhbGl6ZVRhZ0NoZWNrUmVnaXN0ZXJzKCkKKyAgICB7Cisj
aWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgbW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bTY0KFRhZ1R5cGVOdW1iZXIpLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOworICAg
ICAgICBvclB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKFRhZ0JpdFR5cGVPdGhlciks
IEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVy
KTsKKyNlbmRpZgorICAgIH0KKwogI2lmIENQVShYODZfNjQpIHx8IENQVShYODYpCiAgICAgc3Rh
dGljIHNpemVfdCBwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkKICAgICB7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0ZQUkluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0ZQUkluZm8uaAkocmV2aXNpb24gMTg5NTQzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9GUFJJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwOCw2ICsyMDgs
MTQgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUMjAgPSBBUk02NFJl
Z2lzdGVyczo6cTI4OwogICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUMjEgPSBBUk02NFJl
Z2lzdGVyczo6cTI5OwogICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUMjIgPSBBUk02NFJl
Z2lzdGVyczo6cTMwOworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdDUzAgPSBBUk02NFJl
Z2lzdGVyczo6cTg7CisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBmcFJlZ0NTMSA9IEFSTTY0UmVn
aXN0ZXJzOjpxOTsKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnQ1MyID0gQVJNNjRSZWdp
c3RlcnM6OnExMDsKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnQ1MzID0gQVJNNjRSZWdp
c3RlcnM6OnExMTsKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnQ1M0ID0gQVJNNjRSZWdp
c3RlcnM6OnExMjsKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnQ1M1ID0gQVJNNjRSZWdp
c3RlcnM6OnExMzsKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnQ1M2ID0gQVJNNjRSZWdp
c3RlcnM6OnExNDsKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnQ1M3ID0gQVJNNjRSZWdp
c3RlcnM6OnExNTsKIAogICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgYXJndW1lbnRGUFIwID0gQVJN
NjRSZWdpc3RlcnM6OnEwOyAvLyBmcFJlZ1QwCiAgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBhcmd1
bWVudEZQUjEgPSBBUk02NFJlZ2lzdGVyczo6cTE7IC8vIGZwUmVnVDEKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvR1BSSW5mby5oCShyZXZpc2lvbiAxODk1NDMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0dQUkluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMzE1LDYgKzMxNSw3IEBA
IHByaXZhdGU6CiAKICNpZiBDUFUoWDg2KQogI2RlZmluZSBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVH
SVNURVJTIDB1CisjZGVmaW5lIE5VTUJFUl9PRl9DQUxMRUVfU0FWRVNfUkVHSVNURVJTIDB1CiAK
IGNsYXNzIEdQUkluZm8gewogcHVibGljOgpAQCAtMzM2LDcgKzMzNyw2IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMiA9IFg4NlJlZ2lzdGVyczo6ZWF4OyAv
LyByZWdUMAogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIzID0gWDg2UmVnaXN0
ZXJzOjplYng7IC8vIHJlZ1QzCiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25BcmdHUFIwID0g
WDg2UmVnaXN0ZXJzOjplc2k7IC8vIHJlZ1Q0Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25B
cmdHUFIxID0gWDg2UmVnaXN0ZXJzOjplZGk7IC8vIHJlZ1Q1CiAgICAgc3RhdGljIGNvbnN0IEdQ
UlJlZyByZXR1cm5WYWx1ZUdQUiA9IFg4NlJlZ2lzdGVyczo6ZWF4OyAvLyByZWdUMAogICAgIHN0
YXRpYyBjb25zdCBHUFJSZWcgcmV0dXJuVmFsdWVHUFIyID0gWDg2UmVnaXN0ZXJzOjplZHg7IC8v
IHJlZ1QxCiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIg
PSBYODZSZWdpc3RlcnM6OmVjeDsKQEAgLTM4Miw4ICszODIsMTAgQEAgcHVibGljOgogI2lmIENQ
VShYODZfNjQpCiAjaWYgIU9TKFdJTkRPV1MpCiAjZGVmaW5lIE5VTUJFUl9PRl9BUkdVTUVOVF9S
RUdJU1RFUlMgNnUKKyNkZWZpbmUgTlVNQkVSX09GX0NBTExFRV9TQVZFU19SRUdJU1RFUlMgNXUK
ICNlbHNlCiAjZGVmaW5lIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgNHUKKyNkZWZpbmUg
TlVNQkVSX09GX0NBTExFRV9TQVZFU19SRUdJU1RFUlMgN3UKICNlbmRpZgogCiBjbGFzcyBHUFJJ
bmZvIHsKQEAgLTQ0NSw3ICs0NDcsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IEdQUlJl
ZyBhcmd1bWVudEdQUjMgPSBYODZSZWdpc3RlcnM6OnI5OyAvLyByZWdUMwogI2VuZGlmCiAgICAg
c3RhdGljIGNvbnN0IEdQUlJlZyBub25BcmdHUFIwID0gWDg2UmVnaXN0ZXJzOjpyMTA7IC8vIHJl
Z1Q1IChyZWdUNCBvbiBXaW5kb3dzKQotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJnR1BS
MSA9IFg4NlJlZ2lzdGVyczo6ZWJ4OyAvLyBDYWxsZWUgc2F2ZQogICAgIHN0YXRpYyBjb25zdCBH
UFJSZWcgcmV0dXJuVmFsdWVHUFIgPSBYODZSZWdpc3RlcnM6OmVheDsgLy8gcmVnVDAKICAgICBz
dGF0aWMgY29uc3QgR1BSUmVnIHJldHVyblZhbHVlR1BSMiA9IFg4NlJlZ2lzdGVyczo6ZWR4OyAv
LyByZWdUMSBvciByZWdUMgogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uUHJlc2VydmVkTm9u
UmV0dXJuR1BSID0gWDg2UmVnaXN0ZXJzOjpyMTA7IC8vIHJlZ1Q1IChyZWdUNCBvbiBXaW5kb3dz
KQpAQCAtNTA2LDYgKzUwNyw3IEBAIHB1YmxpYzoKIAogI2lmIENQVShBUk0pCiAjZGVmaW5lIE5V
TUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgNHUKKyNkZWZpbmUgTlVNQkVSX09GX0NBTExFRV9T
QVZFU19SRUdJU1RFUlMgMHUKIAogY2xhc3MgR1BSSW5mbyB7CiBwdWJsaWM6CkBAIC01MzYsNyAr
NTM4LDYgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIzID0g
QVJNUmVnaXN0ZXJzOjpyMzsgLy8gcmVnVDMKICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vbkFy
Z0dQUjAgPSBBUk1SZWdpc3RlcnM6OnI0OyAvLyByZWdUOAogICAgIHN0YXRpYyBjb25zdCBHUFJS
ZWcgbm9uQXJnR1BSMSA9IEFSTVJlZ2lzdGVyczo6cjg7IC8vIHJlZ1Q0Ci0gICAgc3RhdGljIGNv
bnN0IEdQUlJlZyBub25BcmdHUFIyID0gQVJNUmVnaXN0ZXJzOjpyOTsgLy8gcmVnVDUKICAgICBz
dGF0aWMgY29uc3QgR1BSUmVnIHJldHVyblZhbHVlR1BSID0gQVJNUmVnaXN0ZXJzOjpyMDsgLy8g
cmVnVDAKICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJldHVyblZhbHVlR1BSMiA9IEFSTVJlZ2lz
dGVyczo6cjE7IC8vIHJlZ1QxCiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25QcmVzZXJ2ZWRO
b25SZXR1cm5HUFIgPSBBUk1SZWdpc3RlcnM6OnI1OwpAQCAtNTg5LDYgKzU5MCw4IEBAIHB1Ymxp
YzoKIAogI2lmIENQVShBUk02NCkKICNkZWZpbmUgTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVS
UyA4dQorLy8gQ2FsbGVlIFNhdmVzIGluY2x1ZGVzIHgxOS4ueDI4IGFuZCBGUCByZWdpc3RlcnMg
cTguLnExNQorI2RlZmluZSBOVU1CRVJfT0ZfQ0FMTEVFX1NBVkVTX1JFR0lTVEVSUyAxOHUKIAog
Y2xhc3MgR1BSSW5mbyB7CiBwdWJsaWM6CkBAIC02MTcsOSArNjIwLDE2IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QxMyA9IEFSTTY0UmVnaXN0ZXJzOjp4MTM7CiAgICAg
c3RhdGljIGNvbnN0IEdQUlJlZyByZWdUMTQgPSBBUk02NFJlZ2lzdGVyczo6eDE0OwogICAgIHN0
YXRpYyBjb25zdCBHUFJSZWcgcmVnVDE1ID0gQVJNNjRSZWdpc3RlcnM6OngxNTsKLSAgICBzdGF0
aWMgY29uc3QgR1BSUmVnIHJlZ0NTMCA9IEFSTTY0UmVnaXN0ZXJzOjp4MjY7IC8vIFVzZWQgYnkg
TExJbnQgb25seQotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnQ1MxID0gQVJNNjRSZWdpc3Rl
cnM6OngyNzsgLy8gdGFnVHlwZU51bWJlcgotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnQ1My
ID0gQVJNNjRSZWdpc3RlcnM6OngyODsgLy8gdGFnTWFzaworICAgIHN0YXRpYyBjb25zdCBHUFJS
ZWcgcmVnQ1MwID0gQVJNNjRSZWdpc3RlcnM6OngxOTsgLy8gVXNlZCBieSBGVEwgb25seQorICAg
IHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnQ1MxID0gQVJNNjRSZWdpc3RlcnM6OngyMDsgLy8gVXNl
ZCBieSBGVEwgb25seQorICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnQ1MyID0gQVJNNjRSZWdp
c3RlcnM6OngyMTsgLy8gVXNlZCBieSBGVEwgb25seQorICAgIHN0YXRpYyBjb25zdCBHUFJSZWcg
cmVnQ1MzID0gQVJNNjRSZWdpc3RlcnM6OngyMjsgLy8gVXNlZCBieSBGVEwgb25seQorICAgIHN0
YXRpYyBjb25zdCBHUFJSZWcgcmVnQ1M0ID0gQVJNNjRSZWdpc3RlcnM6OngyMzsgLy8gVXNlZCBi
eSBGVEwgb25seQorICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnQ1M1ID0gQVJNNjRSZWdpc3Rl
cnM6OngyNDsgLy8gVXNlZCBieSBGVEwgb25seQorICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVn
Q1M2ID0gQVJNNjRSZWdpc3RlcnM6OngyNTsgLy8gVXNlZCBieSBGVEwgb25seQorICAgIHN0YXRp
YyBjb25zdCBHUFJSZWcgcmVnQ1M3ID0gQVJNNjRSZWdpc3RlcnM6OngyNjsKKyAgICBzdGF0aWMg
Y29uc3QgR1BSUmVnIHJlZ0NTOCA9IEFSTTY0UmVnaXN0ZXJzOjp4Mjc7IC8vIHRhZ1R5cGVOdW1i
ZXIKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ0NTOSA9IEFSTTY0UmVnaXN0ZXJzOjp4Mjg7
IC8vIHRhZ01hc2sKICAgICAvLyBUaGVzZSBjb25zdGFudHMgcHJvdmlkZSB0aGUgbmFtZXMgZm9y
IHRoZSBnZW5lcmFsIHB1cnBvc2UgYXJndW1lbnQgJiByZXR1cm4gdmFsdWUgcmVnaXN0ZXJzLgog
ICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIwID0gQVJNNjRSZWdpc3RlcnM6Ongw
OyAvLyByZWdUMAogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIxID0gQVJNNjRS
ZWdpc3RlcnM6OngxOyAvLyByZWdUMQpAQCAtNjM3LDcgKzY0Nyw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgY29uc3QgR1BSUmVnIG5vblByZXNlcnZlZE5vbkFyZ3VtZW50R1BSID0gQVJNNjRSZWdp
c3RlcnM6Ong4OwogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcGF0Y2hwb2ludFNjcmF0Y2hSZWdp
c3RlciA9IEFSTTY0UmVnaXN0ZXJzOjppcDA7CiAKLSAgICAvLyBHUFJSZWcgbWFwcGluZyBpcyBk
aXJlY3QsIHRoZSBtYWNoaW5lIHJlZ3NpdGVyIG51bWJlcnMgY2FuCisgICAgLy8gR1BSUmVnIG1h
cHBpbmcgaXMgZGlyZWN0LCB0aGUgbWFjaGluZSByZWdpc3RlciBudW1iZXJzIGNhbgogICAgIC8v
IGJlIHVzZWQgZGlyZWN0bHkgYXMgaW5kaWNlcyBpbnRvIHRoZSBHUFIgUmVnaXN0ZXJCYW5rLgog
ICAgIENPTVBJTEVfQVNTRVJUKEFSTTY0UmVnaXN0ZXJzOjpxMCA9PSAwLCBxMF9pc18wKTsKICAg
ICBDT01QSUxFX0FTU0VSVChBUk02NFJlZ2lzdGVyczo6cTEgPT0gMSwgcTFfaXNfMSk7CkBAIC02
OTIsNiArNzAyLDcgQEAgcHVibGljOgogCiAjaWYgQ1BVKE1JUFMpCiAjZGVmaW5lIE5VTUJFUl9P
Rl9BUkdVTUVOVF9SRUdJU1RFUlMgNHUKKyNkZWZpbmUgTlVNQkVSX09GX0NBTExFRV9TQVZFU19S
RUdJU1RFUlMgMHUKIAogY2xhc3MgR1BSSW5mbyB7CiBwdWJsaWM6CkBAIC03MTksNyArNzMwLDYg
QEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIyID0gTUlQU1Jl
Z2lzdGVyczo6YTI7CiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjMgPSBNSVBT
UmVnaXN0ZXJzOjphMzsKICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vbkFyZ0dQUjAgPSByZWdU
MDsKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vbkFyZ0dQUjEgPSByZWdUMTsKICAgICBzdGF0
aWMgY29uc3QgR1BSUmVnIHJldHVyblZhbHVlR1BSID0gcmVnVDA7CiAgICAgc3RhdGljIGNvbnN0
IEdQUlJlZyByZXR1cm5WYWx1ZUdQUjIgPSByZWdUMTsKICAgICBzdGF0aWMgY29uc3QgR1BSUmVn
IG5vblByZXNlcnZlZE5vblJldHVybkdQUiA9IHJlZ1QyOwpAQCAtNzY0LDYgKzc3NCw3IEBAIHB1
YmxpYzoKIAogI2lmIENQVShTSDQpCiAjZGVmaW5lIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RF
UlMgNHUKKyNkZWZpbmUgTlVNQkVSX09GX0NBTExFRV9TQVZFU19SRUdJU1RFUlMgMHUKIAogY2xh
c3MgR1BSSW5mbyB7CiBwdWJsaWM6CkBAIC03OTMsNyArODA0LDYgQEAgcHVibGljOgogICAgIHN0
YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIyID0gU0g0UmVnaXN0ZXJzOjpyNjsgLy8gcmVn
VDIKICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMyA9IFNINFJlZ2lzdGVyczo6
cjc7IC8vIHJlZ1QzCiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25BcmdHUFIwID0gcmVnVDQ7
Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25BcmdHUFIxID0gcmVnVDU7CiAgICAgc3RhdGlj
IGNvbnN0IEdQUlJlZyByZXR1cm5WYWx1ZUdQUiA9IHJlZ1QwOwogICAgIHN0YXRpYyBjb25zdCBH
UFJSZWcgcmV0dXJuVmFsdWVHUFIyID0gcmVnVDE7CiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBu
b25QcmVzZXJ2ZWROb25SZXR1cm5HUFIgPSByZWdUMjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5jcHAJKHJldmlzaW9uIDE4OTU0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNiBAQAogCiAjaW5jbHVkZSAiSklU
LmgiCiAKLSNpbmNsdWRlICJBcml0eUNoZWNrRmFpbFJldHVyblRodW5rcy5oIgogI2luY2x1ZGUg
IkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkNvZGVCbG9ja1dpdGhKSVRUeXBlLmgiCiAjaW5jbHVk
ZSAiREZHQ2FwYWJpbGl0aWVzLmgiCkBAIC04NSw2ICs4NCw5IEBAIHZvaWQgSklUOjplbWl0RW50
ZXJPcHRpbWl6YXRpb25DaGVjaygpCiAgICAgCiAgICAgc2tpcE9wdGltaXplLmFwcGVuZChicmFu
Y2hBZGQzMihTaWduZWQsIFRydXN0ZWRJbW0zMihPcHRpb25zOjpleGVjdXRpb25Db3VudGVySW5j
cmVtZW50Rm9yRW50cnkoKSksIEFic29sdXRlQWRkcmVzcyhtX2NvZGVCbG9jay0+YWRkcmVzc09m
SklURXhlY3V0ZUNvdW50ZXIoKSkpKTsKICAgICBBU1NFUlQoIW1fYnl0ZWNvZGVPZmZzZXQpOwor
CisgICAgY29weUNhbGxlZVNhdmVzRnJvbUZyYW1lT3JSZWdpc3RlclRvVk1DYWxsZWVTYXZlc0J1
ZmZlcigpOworCiAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25PcHRpbWl6ZSwgbV9ieXRlY29k
ZU9mZnNldCk7CiAgICAgc2tpcE9wdGltaXplLmFwcGVuZChicmFuY2hUZXN0UHRyKFplcm8sIHJl
dHVyblZhbHVlR1BSKSk7CiAgICAgbW92ZShyZXR1cm5WYWx1ZUdQUjIsIHN0YWNrUG9pbnRlclJl
Z2lzdGVyKTsKQEAgLTQ5Miw2ICs0OTQsOCBAQCBDb21waWxhdGlvblJlc3VsdCBKSVQ6OnByaXZh
dGVDb21waWxlKEpJCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIG1fY29kZUJsb2NrLT5z
ZXRDYWxsZWVTYXZlUmVnaXN0ZXJzKFJlZ2lzdGVyU2V0OjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2
ZVJlZ2lzdGVycygpKTsgLy8gTWlnaHQgYmUgYWJsZSB0byByZW1vdmUgYXMgdGhpcyBpcyBwcm9i
YWJseSBhbHJlYWR5IHNldCB0byB0aGlzIHZhbHVlLgorCiAgICAgLy8gVGhpcyBlbnN1cmVzIHRo
YXQgd2UgaGF2ZSB0aGUgbW9zdCB1cCB0byBkYXRlIHR5cGUgaW5mb3JtYXRpb24gd2hlbiBwZXJm
b3JtaW5nIHR5cGVjaGVjayBvcHRpbWl6YXRpb25zIGZvciBvcF9wcm9maWxlX3R5cGUuCiAgICAg
aWYgKG1fdm0tPnR5cGVQcm9maWxlcigpKQogICAgICAgICBtX3ZtLT50eXBlUHJvZmlsZXJMb2co
KS0+cHJvY2Vzc0xvZ0VudHJpZXMoQVNDSUlMaXRlcmFsKCJQcmVwYXJpbmcgZm9yIEpJVCBjb21w
aWxhdGlvbi4iKSk7CkBAIC01NDksNiArNTUzLDkgQEAgQ29tcGlsYXRpb25SZXN1bHQgSklUOjpw
cml2YXRlQ29tcGlsZShKSQogICAgIG1vdmUocmVnVDEsIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsK
ICAgICBjaGVja1N0YWNrUG9pbnRlckFsaWdubWVudCgpOwogCisgICAgZW1pdFNhdmVDYWxsZWVT
YXZlcygpOworICAgIGVtaXRNYXRlcmlhbGl6ZVRhZ0NoZWNrUmVnaXN0ZXJzKCk7CisKICAgICBw
cml2YXRlQ29tcGlsZU1haW5QYXNzKCk7CiAgICAgcHJpdmF0ZUNvbXBpbGVMaW5rUGFzcygpOwog
ICAgIHByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCk7CkBAIC01ODAsMTEgKzU4Nyw2IEBAIENvbXBp
bGF0aW9uUmVzdWx0IEpJVDo6cHJpdmF0ZUNvbXBpbGUoSkkKICAgICAgICAgaWYgKG1heEZyYW1l
RXh0ZW50Rm9yU2xvd1BhdGhDYWxsKQogICAgICAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMiht
YXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCksIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKICAg
ICAgICAgYnJhbmNoVGVzdDMyKFplcm8sIHJldHVyblZhbHVlR1BSKS5saW5rVG8oYmVnaW5MYWJl
bCwgdGhpcyk7Ci0gICAgICAgIEdQUlJlZyB0aHVua1JlZyA9IEdQUkluZm86OmFyZ3VtZW50R1BS
MTsKLSAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWwqIGZhaWxUaHVua0xhYmVscyA9Ci0gICAgICAg
ICAgICBtX3ZtLT5hcml0eUNoZWNrRmFpbFJldHVyblRodW5rcy0+cmV0dXJuUENzRm9yKCptX3Zt
LCBtX2NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKTsKLSAgICAgICAgbW92ZShUcnVzdGVkSW1t
UHRyKGZhaWxUaHVua0xhYmVscyksIHRodW5rUmVnKTsKLSAgICAgICAgbG9hZFB0cihCYXNlSW5k
ZXgodGh1bmtSZWcsIHJldHVyblZhbHVlR1BSLCB0aW1lc1B0cigpKSwgdGh1bmtSZWcpOwogICAg
ICAgICBtb3ZlKHJldHVyblZhbHVlR1BSLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgICAg
ICBlbWl0TmFrZWRDYWxsKG1fdm0tPmdldENUSVN0dWIoYXJpdHlGaXh1cEdlbmVyYXRvcikuY29k
ZSgpKTsKIApAQCAtNzIyLDYgKzcyNCw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUV4Y2Vw
dGlvbkhhbmRsZXIKICAgICBpZiAoIW1fZXhjZXB0aW9uQ2hlY2tzV2l0aENhbGxGcmFtZVJvbGxi
YWNrLmVtcHR5KCkpIHsKICAgICAgICAgbV9leGNlcHRpb25DaGVja3NXaXRoQ2FsbEZyYW1lUm9s
bGJhY2subGluayh0aGlzKTsKIAorICAgICAgICBjb3B5Q2FsbGVlU2F2ZXNUb1ZNQ2FsbGVlU2F2
ZXNCdWZmZXIoKTsKKwogICAgICAgICAvLyBsb29rdXBFeGNlcHRpb25IYW5kbGVyRnJvbUNhbGxl
ckZyYW1lIGlzIHBhc3NlZCB0d28gYXJndW1lbnRzLCB0aGUgVk0gYW5kIHRoZSBleGVjICh0aGUg
Q2FsbEZyYW1lKikuCiAKICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKHZtKCkpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApOwpAQCAtNzM5LDYgKzc0Myw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29t
cGlsZUV4Y2VwdGlvbkhhbmRsZXIKICAgICBpZiAoIW1fZXhjZXB0aW9uQ2hlY2tzLmVtcHR5KCkp
IHsKICAgICAgICAgbV9leGNlcHRpb25DaGVja3MubGluayh0aGlzKTsKIAorICAgICAgICBjb3B5
Q2FsbGVlU2F2ZXNUb1ZNQ2FsbGVlU2F2ZXNCdWZmZXIoKTsKKwogICAgICAgICAvLyBsb29rdXBF
eGNlcHRpb25IYW5kbGVyIGlzIHBhc3NlZCB0d28gYXJndW1lbnRzLCB0aGUgVk0gYW5kIHRoZSBl
eGVjICh0aGUgQ2FsbEZyYW1lKikuCiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cih2bSgpKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVS
ZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUQXJpdGhtZXRpYzMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMzMl82NC5jcHAJKHJldmlzaW9uIDE4OTU0MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYzMyXzY0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTA2OSw3ICsxMDY5LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2Rp
dihJbnN0cnVjdGlvbiogYwogCiB2b2lkIEpJVDo6ZW1pdF9vcF9tb2QoSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKIHsKLSNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KQorI2lmIENQ
VShYODYpCiAgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CiAg
ICAgaW50IG9wMSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CiAgICAgaW50IG9w
MiA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCShyZXZpc2lvbiAxODk1NDMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTU5LDYgKzU5LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcmV0KEluc3RydWN0aW9uKiBjdXJyZQog
ICAgIGVtaXRMb2FkKGRzdCwgcmVnVDEsIHJlZ1QwKTsKIAogICAgIGNoZWNrU3RhY2tQb2ludGVy
QWxpZ25tZW50KCk7CisgICAgZW1pdFJlc3RvcmVDYWxsZWVTYXZlcygpOwogICAgIGVtaXRGdW5j
dGlvbkVwaWxvZ3VlKCk7CiAgICAgcmV0KCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCShyZXZpc2lvbiAxODk1NDMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE0OCw2ICsxNDgsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9lbmQoSW5zdHJ1Y3Rpb24qIGN1
cnJlCiB7CiAgICAgQVNTRVJUKHJldHVyblZhbHVlR1BSICE9IGNhbGxGcmFtZVJlZ2lzdGVyKTsK
ICAgICBlbWl0TG9hZChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCByZWdUMSwgcmV0
dXJuVmFsdWVHUFIpOworICAgIGVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsKICAgICBlbWl0RnVu
Y3Rpb25FcGlsb2d1ZSgpOwogICAgIHJldCgpOwogfQpAQCAtNzQxLDYgKzc0Miw3IEBAIHZvaWQg
SklUOjplbWl0X29wX25lcV9udWxsKEluc3RydWN0aW9uKiAKIHZvaWQgSklUOjplbWl0X29wX3Ro
cm93KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgQVNTRVJUKHJlZ1Qw
ID09IHJldHVyblZhbHVlR1BSKTsKKyAgICBjb3B5Q2FsbGVlU2F2ZXNUb1ZNQ2FsbGVlU2F2ZXNC
dWZmZXIoKTsKICAgICBlbWl0TG9hZChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBy
ZWdUMSwgcmVnVDApOwogICAgIGNhbGxPcGVyYXRpb25Ob0V4Y2VwdGlvbkNoZWNrKG9wZXJhdGlv
blRocm93LCByZWdUMSwgcmVnVDApOwogICAgIGp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIoKTsKQEAg
LTgwMCw2ICs4MDIsOCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfdG9fc3RyaW5nKEluc3RydWN0
CiAKIHZvaWQgSklUOjplbWl0X29wX2NhdGNoKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiB7CisgICAgcmVzdG9yZUNhbGxlZVNhdmVzRnJvbVZNQ2FsbGVlU2F2ZXNCdWZmZXIoKTsK
KwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihtX3ZtKSwgcmVnVDMpOwogICAgIC8vIG9wZXJhdGlv
blRocm93IHJldHVybnMgdGhlIGNhbGxGcmFtZSBmb3IgdGhlIGhhbmRsZXIuCiAgICAgbG9hZDMy
KEFkZHJlc3MocmVnVDMsIFZNOjpjYWxsRnJhbWVGb3JUaHJvd09mZnNldCgpKSwgY2FsbEZyYW1l
UmVnaXN0ZXIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3Bw
CShyZXZpc2lvbiAxODk1NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCw2ICs3MCw3IEBAIHZvaWQgSklUOjplbWl0X29w
X2VuZChJbnN0cnVjdGlvbiogY3VycmUKIHsKICAgICBSRUxFQVNFX0FTU0VSVChyZXR1cm5WYWx1
ZUdQUiAhPSBjYWxsRnJhbWVSZWdpc3Rlcik7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihj
dXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCByZXR1cm5WYWx1ZUdQUik7CisgICAgZW1p
dFJlc3RvcmVDYWxsZWVTYXZlcygpOwogICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CiAgICAg
cmV0KCk7CiB9CkBAIC0yNTUsNiArMjU2LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcmV0KEluc3Ry
dWN0aW9uKiBjdXJyZQogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0
aW9uWzFdLnUub3BlcmFuZCwgcmV0dXJuVmFsdWVHUFIpOwogCiAgICAgY2hlY2tTdGFja1BvaW50
ZXJBbGlnbm1lbnQoKTsKKyAgICBlbWl0UmVzdG9yZUNhbGxlZVNhdmVzKCk7CiAgICAgZW1pdEZ1
bmN0aW9uRXBpbG9ndWUoKTsKICAgICByZXQoKTsKIH0KQEAgLTQxOSw2ICs0MjEsNyBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9iaXRvcihJbnN0cnVjdGlvbiogY3VyCiB2b2lkIEpJVDo6ZW1pdF9vcF90
aHJvdyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIEFTU0VSVChyZWdU
MCA9PSByZXR1cm5WYWx1ZUdQUik7CisgICAgY29weUNhbGxlZVNhdmVzVG9WTUNhbGxlZVNhdmVz
QnVmZmVyKCk7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kLCByZWdUMCk7CiAgICAgY2FsbE9wZXJhdGlvbk5vRXhjZXB0aW9uQ2hlY2so
b3BlcmF0aW9uVGhyb3csIHJlZ1QwKTsKICAgICBqdW1wVG9FeGNlcHRpb25IYW5kbGVyKCk7CkBA
IC00OTQsMTEgKzQ5Nyw4IEBAIHZvaWQgSklUOjplbWl0X29wX3RvX3N0cmluZyhJbnN0cnVjdGlv
bioKIAogdm9pZCBKSVQ6OmVtaXRfb3BfY2F0Y2goSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKIHsKLSAgICAvLyBHb3R0YSByZXN0b3JlIHRoZSB0YWcgcmVnaXN0ZXJzLiBXZSBjb3Vs
ZCBiZSB0aHJvd2luZyBmcm9tIEZUTCwgd2hpY2ggbWF5Ci0gICAgLy8gY2xvYmJlciB0aGVtLgot
ICAgIG1vdmUoVHJ1c3RlZEltbTY0KFRhZ1R5cGVOdW1iZXIpLCB0YWdUeXBlTnVtYmVyUmVnaXN0
ZXIpOwotICAgIG1vdmUoVHJ1c3RlZEltbTY0KFRhZ01hc2spLCB0YWdNYXNrUmVnaXN0ZXIpOwot
ICAgIAorICAgIHJlc3RvcmVDYWxsZWVTYXZlc0Zyb21WTUNhbGxlZVNhdmVzQnVmZmVyKCk7CisK
ICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIobV92bSksIHJlZ1QzKTsKICAgICBsb2FkNjQoQWRkcmVz
cyhyZWdUMywgVk06OmNhbGxGcmFtZUZvclRocm93T2Zmc2V0KCkpLCBjYWxsRnJhbWVSZWdpc3Rl
cik7CiAKQEAgLTY1Niw3ICs2NTYsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9lbnRlcihJbnN0cnVj
dGlvbiopCiAgICAgLy8gcmVnaXN0ZXJzIHRvIHphcCBzdGFsZSBwb2ludGVycywgdG8gYXZvaWQg
dW5uZWNlc3NhcmlseSBwcm9sb25naW5nCiAgICAgLy8gb2JqZWN0IGxpZmV0aW1lIGFuZCBpbmNy
ZWFzaW5nIEdDIHByZXNzdXJlLgogICAgIHNpemVfdCBjb3VudCA9IG1fY29kZUJsb2NrLT5tX251
bVZhcnM7Ci0gICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBjb3VudDsgKytqKQorICAgIGZvciAo
c2l6ZV90IGogPSBDb2RlQmxvY2s6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1
YWxSZWdpc3RlcnMoKTsgaiA8IGNvdW50OyArK2opCiAgICAgICAgIGVtaXRJbml0UmVnaXN0ZXIo
dmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaikub2Zmc2V0KCkpOwogCiAgICAgZW1pdFdyaXRlQmFy
cmllcihtX2NvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCkpOwpAQCAtOTIyLDcgKzkyMiw5IEBA
IHZvaWQgSklUOjplbWl0U2xvd19vcF9sb29wX2hpbnQoSW5zdHJ1Y3QKICAgICAvLyBFbWl0IHRo
ZSBzbG93IHBhdGggZm9yIHRoZSBKSVQgb3B0aW1pemF0aW9uIGNoZWNrOgogICAgIGlmIChjYW5C
ZU9wdGltaXplZCgpKSB7CiAgICAgICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKLSAgICAgICAgCisK
KyAgICAgICAgY29weUNhbGxlZVNhdmVzRnJvbUZyYW1lT3JSZWdpc3RlclRvVk1DYWxsZWVTYXZl
c0J1ZmZlcigpOworCiAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uT3B0aW1pemUsIG1f
Ynl0ZWNvZGVPZmZzZXQpOwogICAgICAgICBKdW1wIG5vT3B0aW1pemVkRW50cnkgPSBicmFuY2hU
ZXN0UHRyKFplcm8sIHJldHVyblZhbHVlR1BSKTsKICAgICAgICAgaWYgKCFBU1NFUlRfRElTQUJM
RUQpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNw
cAkocmV2aXNpb24gMTg5NTQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMzNCw4ICsxMzM0LDExIEBAIFNsb3dQYXRo
UmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGkKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgbnVtVmFyc1dpdGhWYWx1ZXMgPSAwOwogICAgICAgICBPcGVyYW5kczxKU1ZhbHVlPiBtdXN0
SGFuZGxlVmFsdWVzKGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpLCBudW1WYXJzV2l0aFZhbHVl
cyk7CisgICAgICAgIGludCBsb2NhbHNVc2VkRm9yQ2FsbGVlU2F2ZXMgPSBzdGF0aWNfY2FzdDxp
bnQ+KENvZGVCbG9jazo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lz
dGVycygpKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtdXN0SGFuZGxlVmFsdWVz
LnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBpbnQgb3BlcmFuZCA9IG11c3RIYW5kbGVWYWx1
ZXMub3BlcmFuZEZvckluZGV4KGkpOworICAgICAgICAgICAgaWYgKG9wZXJhbmRJc0xvY2FsKG9w
ZXJhbmQpICYmIFZpcnR1YWxSZWdpc3RlcihvcGVyYW5kKS50b0xvY2FsKCkgPCBsb2NhbHNVc2Vk
Rm9yQ2FsbGVlU2F2ZXMpCisgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBt
dXN0SGFuZGxlVmFsdWVzW2ldID0gZXhlYy0+dW5jaGVja2VkUihvcGVyYW5kKS5qc1ZhbHVlKCk7
CiAgICAgICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0
eUFjY2VzczMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCShyZXZpc2lvbiAxODk1NDMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yODIsNyArMjgyLDcgQEAgSklUR2V0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRHZXRC
eVZhbFdpdAogICAgIGVtaXRJZGVudGlmaWVyQ2hlY2socmVnVDIsIHJlZ1Q0LCBwcm9wZXJ0eU5h
bWUsIHNsb3dDYXNlcyk7CiAKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAg
bV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZU9mZnNldCksIENhbGxTaXRlSW5kZXgo
Y3VycmVudEluc3RydWN0aW9uKSwgUmVnaXN0ZXJTZXQ6OnNwZWNpYWxSZWdpc3RlcnMoKSwKKyAg
ICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZU9mZnNldCksIENhbGxTaXRl
SW5kZXgoY3VycmVudEluc3RydWN0aW9uKSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJl
Z2lzdGVycygpLAogICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1Zh
bHVlUmVncyhyZWdUMSwgcmVnVDApLCBEb250U3BpbGwpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQ
YXRoKCp0aGlzKTsKIApAQCAtNDk0LDcgKzQ5NCw3IEBAIEpJVFB1dEJ5SWRHZW5lcmF0b3IgSklU
OjplbWl0UHV0QnlWYWxXaXQKICAgICBlbWl0TG9hZCh2YWx1ZSwgcmVnVDMsIHJlZ1QyKTsKIAog
ICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9y
aWdpbihtX2J5dGVjb2RlT2Zmc2V0KSwgQ2FsbFNpdGVJbmRleChjdXJyZW50SW5zdHJ1Y3Rpb24p
LCBSZWdpc3RlclNldDo6c3BlY2lhbFJlZ2lzdGVycygpLAorICAgICAgICBtX2NvZGVCbG9jaywg
Q29kZU9yaWdpbihtX2J5dGVjb2RlT2Zmc2V0KSwgQ2FsbFNpdGVJbmRleChjdXJyZW50SW5zdHJ1
Y3Rpb24pLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAg
IEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdU
MiksIHJlZ1QxLCBEb250U3BpbGwsIG1fY29kZUJsb2NrLT5lY21hTW9kZSgpLCBwdXRLaW5kKTsK
ICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgZG9uZUNhc2VzLmFwcGVuZChq
dW1wKCkpOwpAQCAtNTg3LDcgKzU4Nyw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZChJ
bnN0cnVjdGlvbioKICAgICAgICAgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZUZvckJ5dGVjb2RlSW5k
ZXhXaXRoQ2VsbChyZWdUMCwgcmVnVDIsIG1fYnl0ZWNvZGVPZmZzZXQpOwogCiAgICAgSklUR2V0
QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0
ZWNvZGVPZmZzZXQpLCBDYWxsU2l0ZUluZGV4KGN1cnJlbnRJbnN0cnVjdGlvbiksIFJlZ2lzdGVy
U2V0OjpzcGVjaWFsUmVnaXN0ZXJzKCksCisgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2lu
KG1fYnl0ZWNvZGVPZmZzZXQpLCBDYWxsU2l0ZUluZGV4KGN1cnJlbnRJbnN0cnVjdGlvbiksIFJl
Z2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKICAgICAgICAgSlNWYWx1ZVJl
Z3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgRG9udFNw
aWxsKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2Uo
Z2VuLnNsb3dQYXRoSnVtcCgpKTsKQEAgLTYzMiw3ICs2MzIsNyBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9wdXRfYnlfaWQoSW5zdHJ1Y3Rpb24qCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxs
KGJhc2UsIHJlZ1QxKTsKIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBt
X2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlT2Zmc2V0KSwgQ2FsbFNpdGVJbmRleChj
dXJyZW50SW5zdHJ1Y3Rpb24pLCBSZWdpc3RlclNldDo6c3BlY2lhbFJlZ2lzdGVycygpLAorICAg
ICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlT2Zmc2V0KSwgQ2FsbFNpdGVJ
bmRleChjdXJyZW50SW5zdHJ1Y3Rpb24pLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVn
aXN0ZXJzKCksCiAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFs
dWVSZWdzKHJlZ1QzLCByZWdUMiksCiAgICAgICAgIHJlZ1QxLCBEb250U3BpbGwsIG1fY29kZUJs
b2NrLT5lY21hTW9kZSgpLCBkaXJlY3QgPyBEaXJlY3QgOiBOb3REaXJlY3QpOwogICAgIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJ
KHJldmlzaW9uIDE4OTU0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTMsNyArMjEzLDcgQEAgSklUR2V0QnlJ
ZEdlbmVyYXRvciBKSVQ6OmVtaXRHZXRCeVZhbFdpdAogICAgIGVtaXRJZGVudGlmaWVyQ2hlY2so
cmVnVDEsIHJlZ1QzLCBwcm9wZXJ0eU5hbWUsIHNsb3dDYXNlcyk7CiAKICAgICBKSVRHZXRCeUlk
R2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29k
ZU9mZnNldCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZU9mZnNldCksIFJlZ2lzdGVyU2V0Ojpz
cGVjaWFsUmVnaXN0ZXJzKCksCisgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0
ZWNvZGVPZmZzZXQpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVPZmZzZXQpLCBSZWdpc3RlclNl
dDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1Qw
KSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBEb250U3BpbGwpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQ
YXRoKCp0aGlzKTsKIApAQCAtNDQ2LDcgKzQ0Niw3IEBAIEpJVFB1dEJ5SWRHZW5lcmF0b3IgSklU
OjplbWl0UHV0QnlWYWxXaXQKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVycyhiYXNlLCByZWdU
MCwgdmFsdWUsIHJlZ1QxKTsKIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAg
ICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlT2Zmc2V0KSwgQ2FsbFNpdGVJbmRl
eChtX2J5dGVjb2RlT2Zmc2V0KSwgUmVnaXN0ZXJTZXQ6OnNwZWNpYWxSZWdpc3RlcnMoKSwKKyAg
ICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZU9mZnNldCksIENhbGxTaXRl
SW5kZXgobV9ieXRlY29kZU9mZnNldCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwKICAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSks
IHJlZ1QyLCBEb250U3BpbGwsIG1fY29kZUJsb2NrLT5lY21hTW9kZSgpLCBwdXRLaW5kKTsKICAg
ICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgZG9uZUNhc2VzLmFwcGVuZChqdW1w
KCkpOwpAQCAtNTc0LDcgKzU3NCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZChJbnN0
cnVjdGlvbioKICAgICAgICAgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZUZvckJ5dGVjb2RlSW5kZXhX
aXRoQ2VsbChyZWdUMCwgcmVnVDEsIG1fYnl0ZWNvZGVPZmZzZXQpOwogCiAgICAgSklUR2V0QnlJ
ZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNv
ZGVPZmZzZXQpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVPZmZzZXQpLCBSZWdpc3RlclNldDo6
c3BlY2lhbFJlZ2lzdGVycygpLAorICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5
dGVjb2RlT2Zmc2V0KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlT2Zmc2V0KSwgUmVnaXN0ZXJT
ZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAogICAgICAgICBKU1ZhbHVlUmVncyhyZWdU
MCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgRG9udFNwaWxsKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0
UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKQEAgLTYy
MSw3ICs2MjEsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoSW5zdHJ1Y3Rpb24qCiAg
ICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlVlJlZyk7CiAKICAgICBK
SVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4o
bV9ieXRlY29kZU9mZnNldCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZU9mZnNldCksIFJlZ2lz
dGVyU2V0OjpzcGVjaWFsUmVnaXN0ZXJzKCksCisgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3Jp
Z2luKG1fYnl0ZWNvZGVPZmZzZXQpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVPZmZzZXQpLCBS
ZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIEpTVmFsdWVS
ZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMiwgRG9udFNwaWxsLCBtX2NvZGVC
bG9jay0+ZWNtYU1vZGUoKSwKICAgICAgICAgZGlyZWN0ID8gRGlyZWN0IDogTm90RGlyZWN0KTsK
ICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJBdE9mZnNldC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlckF0T2Zm
c2V0LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0
ZXJBdE9mZnNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMy0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJSZWdpc3RlckF0T2Zmc2V0LmgiCisKKyNpZiBFTkFCTEUoSklUKQor
CituYW1lc3BhY2UgSlNDIHsKKwordm9pZCBSZWdpc3RlckF0T2Zmc2V0OjpkdW1wKFByaW50U3Ry
ZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgb3V0LnByaW50KHJlZygpLCAiIGF0ICIsIG9mZnNldCgp
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQorCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyQXRPZmZzZXQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyQXRPZmZzZXQuaAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJBdE9mZnNldC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFJlZ2lzdGVyQXRPZmZzZXRfaAor
I2RlZmluZSBSZWdpc3RlckF0T2Zmc2V0X2gKKworI2lmIEVOQUJMRShKSVQpCisKKyNpbmNsdWRl
ICJSZWcuaCIKKyNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KKworbmFtZXNwYWNlIEpTQyB7
CisKK2NsYXNzIFJlZ2lzdGVyQXRPZmZzZXQgeworcHVibGljOgorICAgIFJlZ2lzdGVyQXRPZmZz
ZXQoKQorICAgICAgICA6IG1fb2Zmc2V0KDApCisgICAgeworICAgIH0KKyAgICAKKyAgICBSZWdp
c3RlckF0T2Zmc2V0KFJlZyByZWcsIHB0cmRpZmZfdCBvZmZzZXQpCisgICAgICAgIDogbV9yZWco
cmVnKQorICAgICAgICAsIG1fb2Zmc2V0KG9mZnNldCkKKyAgICB7CisgICAgfQorICAgIAorICAg
IGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fcmVnOyB9CisgICAgCisgICAgUmVn
IHJlZygpIGNvbnN0IHsgcmV0dXJuIG1fcmVnOyB9CisgICAgcHRyZGlmZl90IG9mZnNldCgpIGNv
bnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CisgICAgaW50IG9mZnNldEFzSW5kZXgoKSBjb25zdCB7
IHJldHVybiBvZmZzZXQoKSAvIHNpemVvZih2b2lkKik7IH0KKyAgICAKKyAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgUmVnaXN0ZXJBdE9mZnNldCYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gcmVnKCkgPT0gb3RoZXIucmVnKCkgJiYgb2Zmc2V0KCkgPT0gb3RoZXIub2Zmc2V0
KCk7CisgICAgfQorICAgIAorICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFJlZ2lzdGVyQXRPZmZz
ZXQmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKHJlZygpICE9IG90aGVyLnJlZygp
KQorICAgICAgICAgICAgcmV0dXJuIHJlZygpIDwgb3RoZXIucmVnKCk7CisgICAgICAgIHJldHVy
biBvZmZzZXQoKSA8IG90aGVyLm9mZnNldCgpOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgUmVn
IGdldFJlZyhSZWdpc3RlckF0T2Zmc2V0KiB2YWx1ZSkgeyByZXR1cm4gdmFsdWUtPnJlZygpOyB9
CisgICAgCisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0OworCitwcml2YXRl
OgorICAgIFJlZyBtX3JlZzsKKyAgICBwdHJkaWZmX3QgbV9vZmZzZXQ7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShKSVQpCisKKyNlbmRpZiAvLyBSZWdpc3Rl
ckF0T2Zmc2V0X2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlckF0
T2Zmc2V0TGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9S
ZWdpc3RlckF0T2Zmc2V0TGlzdC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1JlZ2lzdGVyQXRPZmZzZXRMaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDgwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZWdpc3RlckF0T2Zmc2V0TGlzdC5oIgor
CisjaWYgRU5BQkxFKEpJVCkKKworI2luY2x1ZGUgPHd0Zi9MaXN0RHVtcC5oPgorCituYW1lc3Bh
Y2UgSlNDIHsKKyAgICAKK1JlZ2lzdGVyQXRPZmZzZXRMaXN0OjpSZWdpc3RlckF0T2Zmc2V0TGlz
dCgpIHsgfQorCitSZWdpc3RlckF0T2Zmc2V0TGlzdDo6UmVnaXN0ZXJBdE9mZnNldExpc3QoUmVn
aXN0ZXJTZXQgcmVnaXN0ZXJTZXQsIE9mZnNldEJhc2VUeXBlIG9mZnNldEJhc2VUeXBlKQorewor
ICAgIHNpemVfdCBudW1iZXJPZlJlZ2lzdGVycyA9IHJlZ2lzdGVyU2V0Lm51bWJlck9mU2V0UmVn
aXN0ZXJzKCk7CisgICAgcHRyZGlmZl90IG9mZnNldCA9IDA7CisgICAgCisgICAgaWYgKG9mZnNl
dEJhc2VUeXBlID09IEZyYW1lUG9pbnRlckJhc2VkKQorICAgICAgICBvZmZzZXQgPSAtKHN0YXRp
Y19jYXN0PHB0cmRpZmZfdD4obnVtYmVyT2ZSZWdpc3RlcnMpICogc2l6ZW9mKHZvaWQqKSk7CisK
KyAgICBmb3IgKFJlZyByZWcgPSBSZWc6OmZpcnN0KCk7IHJlZyA8PSBSZWc6Omxhc3QoKTtyZWcg
PSByZWcubmV4dCgpKSB7CisgICAgICAgIGlmIChyZWdpc3RlclNldC5nZXQocmVnKSkgeworICAg
ICAgICAgICAgYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQocmVnLCBvZmZzZXQpKTsKKyAgICAgICAg
ICAgIG9mZnNldCArPSBzaXplb2Yodm9pZCopOworICAgICAgICB9CisgICAgfQorCisgICAgc29y
dCgpOworfQorCit2b2lkIFJlZ2lzdGVyQXRPZmZzZXRMaXN0Ojpzb3J0KCkKK3sKKyAgICBzdGQ6
OnNvcnQobV9yZWdpc3RlcnMuYmVnaW4oKSwgbV9yZWdpc3RlcnMuZW5kKCkpOworfQorCit2b2lk
IFJlZ2lzdGVyQXRPZmZzZXRMaXN0OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7Cisg
ICAgb3V0LnByaW50KGxpc3REdW1wKG1fcmVnaXN0ZXJzKSk7Cit9CisKK1JlZ2lzdGVyQXRPZmZz
ZXQqIFJlZ2lzdGVyQXRPZmZzZXRMaXN0OjpmaW5kKFJlZyByZWcpIGNvbnN0Cit7CisgICAgcmV0
dXJuIHRyeUJpbmFyeVNlYXJjaDxSZWdpc3RlckF0T2Zmc2V0LCBSZWc+KG1fcmVnaXN0ZXJzLCBt
X3JlZ2lzdGVycy5zaXplKCksIHJlZywgUmVnaXN0ZXJBdE9mZnNldDo6Z2V0UmVnKTsKK30KKwor
dW5zaWduZWQgUmVnaXN0ZXJBdE9mZnNldExpc3Q6OmluZGV4T2YoUmVnIHJlZykgY29uc3QKK3sK
KyAgICBpZiAoUmVnaXN0ZXJBdE9mZnNldCogcG9pbnRlciA9IGZpbmQocmVnKSkKKyAgICAgICAg
cmV0dXJuIHBvaW50ZXIgLSBtX3JlZ2lzdGVycy5iZWdpbigpOworICAgIHJldHVybiBVSU5UX01B
WDsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQorCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyQXRPZmZzZXRMaXN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlckF0T2Zmc2V0TGlz
dC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlckF0
T2Zmc2V0TGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBSZWdpc3RlckF0T2Zm
c2V0TGlzdF9oCisjZGVmaW5lIFJlZ2lzdGVyQXRPZmZzZXRMaXN0X2gKKworI2lmIEVOQUJMRShK
SVQpCisKKyNpbmNsdWRlICJSZWdpc3RlckF0T2Zmc2V0LmgiCisjaW5jbHVkZSAiUmVnaXN0ZXJT
ZXQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFJlZ2lzdGVyQXRPZmZzZXRMaXN0IHsK
K3B1YmxpYzoKKyAgICBlbnVtIE9mZnNldEJhc2VUeXBlIHsgRnJhbWVQb2ludGVyQmFzZWQsIFpl
cm9CYXNlZCB9OworCisgICAgUmVnaXN0ZXJBdE9mZnNldExpc3QoKTsKKyAgICBSZWdpc3RlckF0
T2Zmc2V0TGlzdChSZWdpc3RlclNldCwgT2Zmc2V0QmFzZVR5cGUgPSBGcmFtZVBvaW50ZXJCYXNl
ZCk7CisKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKKworICAgIHZvaWQgY2xl
YXIoKQorICAgIHsKKyAgICAgICAgbV9yZWdpc3RlcnMuY2xlYXIoKTsKKyAgICB9CisKKyAgICBz
aXplX3Qgc2l6ZSgpCisgICAgeworICAgICAgICByZXR1cm4gbV9yZWdpc3RlcnMuc2l6ZSgpOwor
ICAgIH0KKworICAgIFJlZ2lzdGVyQXRPZmZzZXQmIGF0KHNpemVfdCBpbmRleCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBtX3JlZ2lzdGVycy5hdChpbmRleCk7CisgICAgfQorICAgIAorICAgIHZv
aWQgYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQgcmVnaXN0ZXJBdE9mZnNldCkKKyAgICB7CisgICAg
ICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChyZWdpc3RlckF0T2Zmc2V0KTsKKyAgICB9CisKKyAgICB2
b2lkIHNvcnQoKTsKKyAgICBSZWdpc3RlckF0T2Zmc2V0KiBmaW5kKFJlZykgY29uc3Q7CisgICAg
dW5zaWduZWQgaW5kZXhPZihSZWcpIGNvbnN0OyAvLyBSZXR1cm5zIFVJTlRfTUFYIGlmIG5vdCBm
b3VuZC4KKworcHJpdmF0ZToKKyAgICBWZWN0b3I8UmVnaXN0ZXJBdE9mZnNldD4gbV9yZWdpc3Rl
cnM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShKSVQpCisK
KyNlbmRpZiAvLyBSZWdpc3RlckF0T2Zmc2V0TGlzdF9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvUmVnaXN0ZXJTZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvUmVnaXN0ZXJTZXQuY3BwCShyZXZpc2lvbiAxODk1NDMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYs
NiArNjYsMTEgQEAgUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OnNwZWNpYWxSZWdpc3RlcgogICAg
ICAgICBzdGFja1JlZ2lzdGVycygpLCByZXNlcnZlZEhhcmR3YXJlUmVnaXN0ZXJzKCksIHJ1bnRp
bWVSZWdpc3RlcnMoKSk7CiB9CiAKK1JlZ2lzdGVyU2V0IFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFp
bGFibGVSZWdpc3RlcnMoKQoreworICAgIHJldHVybiBSZWdpc3RlclNldChzcGVjaWFsUmVnaXN0
ZXJzKCksIHZtQ2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKK30KKwogUmVnaXN0ZXJTZXQgUmVnaXN0
ZXJTZXQ6OmNhbGxlZVNhdmVSZWdpc3RlcnMoKQogewogICAgIFJlZ2lzdGVyU2V0IHJlc3VsdDsK
QEAgLTEyMiw2ICsxMjcsMTUzIEBAIFJlZ2lzdGVyU2V0IFJlZ2lzdGVyU2V0OjpjYWxsZWVTYXZl
UmVnaXMKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitSZWdpc3RlclNldCBSZWdpc3RlclNldDo6
dm1DYWxsZWVTYXZlUmVnaXN0ZXJzKCkKK3sKKyAgICBSZWdpc3RlclNldCByZXN1bHQ7CisjaWYg
Q1BVKFg4Nl82NCkKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMCk7CisgICAgcmVzdWx0
LnNldChHUFJJbmZvOjpyZWdDUzEpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MyKTsK
KyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMyk7CisgICAgcmVzdWx0LnNldChHUFJJbmZv
OjpyZWdDUzQpOworI2lmIE9TKFdJTkRPV1MpCisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdD
UzUpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M2KTsKKyNlbmRpZgorI2VsaWYgQ1BV
KEFSTTY0KQorICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MwKTsKKyAgICByZXN1bHQuc2V0
KEdQUkluZm86OnJlZ0NTMSk7CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzIpOworICAg
IHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MzKTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJl
Z0NTNCk7CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzUpOworICAgIHJlc3VsdC5zZXQo
R1BSSW5mbzo6cmVnQ1M2KTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNyk7CisgICAg
cmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzgpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVn
Q1M5KTsKKyAgICByZXN1bHQuc2V0KEZQUkluZm86OmZwUmVnQ1MwKTsKKyAgICByZXN1bHQuc2V0
KEZQUkluZm86OmZwUmVnQ1MxKTsKKyAgICByZXN1bHQuc2V0KEZQUkluZm86OmZwUmVnQ1MyKTsK
KyAgICByZXN1bHQuc2V0KEZQUkluZm86OmZwUmVnQ1MzKTsKKyAgICByZXN1bHQuc2V0KEZQUklu
Zm86OmZwUmVnQ1M0KTsKKyAgICByZXN1bHQuc2V0KEZQUkluZm86OmZwUmVnQ1M1KTsKKyAgICBy
ZXN1bHQuc2V0KEZQUkluZm86OmZwUmVnQ1M2KTsKKyAgICByZXN1bHQuc2V0KEZQUkluZm86OmZw
UmVnQ1M3KTsKKyNlbmRpZgorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1JlZ2lzdGVyU2V0IFJl
Z2lzdGVyU2V0OjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVJlZ2lzdGVycygpCit7CisgICAgUmVn
aXN0ZXJTZXQgcmVzdWx0OworI2lmIENQVShYODYpCisjZWxpZiBDUFUoWDg2XzY0KQorI2lmICFP
UyhXSU5ET1dTKQorICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MyKTsKKyAgICBBU1NFUlQo
R1BSSW5mbzo6cmVnQ1MzID09IEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7CisgICAg
QVNTRVJUKEdQUkluZm86OnJlZ0NTNCA9PSBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOworICAg
IHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MzKTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJl
Z0NTNCk7CisjZWxzZQorICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M0KTsKKyAgICBBU1NF
UlQoR1BSSW5mbzo6cmVnQ1M1ID09IEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7Cisg
ICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTNiA9PSBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwor
ICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M1KTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86
OnJlZ0NTNik7CisjZW5kaWYKKyNlbGlmIENQVShBUk1fVEhVTUIyKQorI2VsaWYgQ1BVKEFSTV9U
UkFESVRJT05BTCkKKyNlbGlmIENQVShBUk02NCkKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJl
Z0NTNyk7CisgICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTOCA9PSBHUFJJbmZvOjp0YWdUeXBlTnVt
YmVyUmVnaXN0ZXIpOworICAgIEFTU0VSVChHUFJJbmZvOjpyZWdDUzkgPT0gR1BSSW5mbzo6dGFn
TWFza1JlZ2lzdGVyKTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTOCk7CisgICAgcmVz
dWx0LnNldChHUFJJbmZvOjpyZWdDUzkpOworI2VsaWYgQ1BVKE1JUFMpCisjZWxpZiBDUFUoU0g0
KQorI2Vsc2UKKyAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKKyNlbmRpZgorICAgIHJl
dHVybiByZXN1bHQ7Cit9CisKK1JlZ2lzdGVyU2V0IFJlZ2lzdGVyU2V0OjpkZmdDYWxsZWVTYXZl
UmVnaXN0ZXJzKCkKK3sKKyAgICBSZWdpc3RlclNldCByZXN1bHQ7CisjaWYgQ1BVKFg4NikKKyNl
bGlmIENQVShYODZfNjQpCisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzApOworICAgIHJl
c3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MxKTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NT
Mik7CisjaWYgIU9TKFdJTkRPV1MpCisgICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTMyA9PSBHUFJJ
bmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOworICAgIEFTU0VSVChHUFJJbmZvOjpyZWdDUzQg
PT0gR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJl
Z0NTMyk7CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzQpOworI2Vsc2UKKyAgICByZXN1
bHQuc2V0KEdQUkluZm86OnJlZ0NTMyk7CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzQp
OworICAgIEFTU0VSVChHUFJJbmZvOjpyZWdDUzUgPT0gR1BSSW5mbzo6dGFnVHlwZU51bWJlclJl
Z2lzdGVyKTsKKyAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1M2ID09IEdQUkluZm86OnRhZ01hc2tS
ZWdpc3Rlcik7CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzUpOworICAgIHJlc3VsdC5z
ZXQoR1BSSW5mbzo6cmVnQ1M2KTsKKyNlbmRpZgorI2VsaWYgQ1BVKEFSTV9USFVNQjIpCisjZWxp
ZiBDUFUoQVJNX1RSQURJVElPTkFMKQorI2VsaWYgQ1BVKEFSTTY0KQorICAgIEFTU0VSVChHUFJJ
bmZvOjpyZWdDUzggPT0gR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKKyAgICBBU1NF
UlQoR1BSSW5mbzo6cmVnQ1M5ID09IEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7CisgICAgcmVz
dWx0LnNldChHUFJJbmZvOjpyZWdDUzgpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M5
KTsKKyNlbGlmIENQVShNSVBTKQorI2VsaWYgQ1BVKFNINCkKKyNlbHNlCisgICAgVU5SRUFDSEFC
TEVfRk9SX1BMQVRGT1JNKCk7CisjZW5kaWYKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitSZWdp
c3RlclNldCBSZWdpc3RlclNldDo6ZnRsQ2FsbGVlU2F2ZVJlZ2lzdGVycygpCit7CisgICAgUmVn
aXN0ZXJTZXQgcmVzdWx0OworI2lmIEVOQUJMRShGVExfSklUKQorI2lmIENQVShYODZfNjQpICYm
ICFPUyhXSU5ET1dTKQorICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MwKTsKKyAgICByZXN1
bHQuc2V0KEdQUkluZm86OnJlZ0NTMSk7CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzIp
OworICAgIEFTU0VSVChHUFJJbmZvOjpyZWdDUzMgPT0gR1BSSW5mbzo6dGFnVHlwZU51bWJlclJl
Z2lzdGVyKTsKKyAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1M0ID09IEdQUkluZm86OnRhZ01hc2tS
ZWdpc3Rlcik7CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzMpOworICAgIHJlc3VsdC5z
ZXQoR1BSSW5mbzo6cmVnQ1M0KTsKKyNlbGlmIENQVShBUk02NCkKKyAgICAvLyBMTFZNIG1pZ2h0
IHNhdmUgYW5kIHVzZSBhbGwgQVJNNjQgY2FsbGVlIHNhdmVzIHNwZWNpZmllZCBpbiB0aGUgQUJJ
LgorICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MwKTsKKyAgICByZXN1bHQuc2V0KEdQUklu
Zm86OnJlZ0NTMSk7CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzIpOworICAgIHJlc3Vs
dC5zZXQoR1BSSW5mbzo6cmVnQ1MzKTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNCk7
CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzUpOworICAgIHJlc3VsdC5zZXQoR1BSSW5m
bzo6cmVnQ1M2KTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNyk7CisgICAgQVNTRVJU
KEdQUkluZm86OnJlZ0NTOCA9PSBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOworICAg
IEFTU0VSVChHUFJJbmZvOjpyZWdDUzkgPT0gR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsKKyAg
ICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTOCk7CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpy
ZWdDUzkpOworICAgIHJlc3VsdC5zZXQoRlBSSW5mbzo6ZnBSZWdDUzApOworICAgIHJlc3VsdC5z
ZXQoRlBSSW5mbzo6ZnBSZWdDUzEpOworICAgIHJlc3VsdC5zZXQoRlBSSW5mbzo6ZnBSZWdDUzIp
OworICAgIHJlc3VsdC5zZXQoRlBSSW5mbzo6ZnBSZWdDUzMpOworICAgIHJlc3VsdC5zZXQoRlBS
SW5mbzo6ZnBSZWdDUzQpOworICAgIHJlc3VsdC5zZXQoRlBSSW5mbzo6ZnBSZWdDUzUpOworICAg
IHJlc3VsdC5zZXQoRlBSSW5mbzo6ZnBSZWdDUzYpOworICAgIHJlc3VsdC5zZXQoRlBSSW5mbzo6
ZnBSZWdDUzcpOworI2Vsc2UKKyAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKKyNlbmRp
ZgorI2VuZGlmCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogUmVnaXN0ZXJTZXQgUmVnaXN0ZXJT
ZXQ6OmFsbEdQUnMoKQogewogICAgIFJlZ2lzdGVyU2V0IHJlc3VsdDsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyU2V0LmgJKHJldmlzaW9uIDE4OTU0MykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtNTAs
NiArNTAsMTEgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWdpc3RlclNldCBydW50aW1lUmVnaXN0
ZXJzKCk7CiAgICAgc3RhdGljIFJlZ2lzdGVyU2V0IHNwZWNpYWxSZWdpc3RlcnMoKTsgLy8gVGhl
IHVuaW9uIG9mIHN0YWNrLCByZXNlcnZlZCBoYXJkd2FyZSwgYW5kIHJ1bnRpbWUgcmVnaXN0ZXJz
LgogICAgIHN0YXRpYyBSZWdpc3RlclNldCBjYWxsZWVTYXZlUmVnaXN0ZXJzKCk7CisgICAgc3Rh
dGljIFJlZ2lzdGVyU2V0IHZtQ2FsbGVlU2F2ZVJlZ2lzdGVycygpOyAvLyBDYWxsZWUgc2F2ZSBy
ZWdpc3RlcnMgdGhhdCBtaWdodCBiZSBzYXZlZCBhbmQgdXNlZCBieSBhbnkgdGllci4KKyAgICBz
dGF0aWMgUmVnaXN0ZXJTZXQgbGxpbnRCYXNlbGluZUNhbGxlZVNhdmVSZWdpc3RlcnMoKTsgLy8g
UmVnaXN0ZXJzIHNhdmVkIGFuZCB1c2VkIGJ5IHRoZSBMTEludC4KKyAgICBzdGF0aWMgUmVnaXN0
ZXJTZXQgZGZnQ2FsbGVlU2F2ZVJlZ2lzdGVycygpOyAvLyBSZWdpc3RlcnMgc2F2ZWQgYW5kIHVz
ZWQgYnkgdGhlIERGRyBKSVQuCisgICAgc3RhdGljIFJlZ2lzdGVyU2V0IGZ0bENhbGxlZVNhdmVS
ZWdpc3RlcnMoKTsgLy8gUmVnaXN0ZXJzIHRoYXQgbWlnaHQgYmUgc2F2ZWQgYW5kIHVzZWQgYnkg
dGhlIEZUTCBKSVQuCisgICAgc3RhdGljIFJlZ2lzdGVyU2V0IHN0dWJVbmF2YWlsYWJsZVJlZ2lz
dGVycygpOyAvLyBUaGUgdW5pb24gb2YgY2FsbGVlIHNhdmVzIGFuZCBzcGVjaWFsIHJlZ2lzdGVy
cy4KICAgICBzdGF0aWMgUmVnaXN0ZXJTZXQgYWxsR1BScygpOwogICAgIHN0YXRpYyBSZWdpc3Rl
clNldCBhbGxGUFJzKCk7CiAgICAgc3RhdGljIFJlZ2lzdGVyU2V0IGFsbFJlZ2lzdGVycygpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCShyZXZpc2lvbiAxODk1NDMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01NTUsNyArNTU1LDkgQEAgc3RhdGljIGJvb2wgZ2VuZXJhdGVCeUlkU3R1YigKICAgICAg
ICAgICAgIGlmIChraW5kID09IENhbGxDdXN0b21HZXR0ZXIpCiAgICAgICAgICAgICAgICAgc3R1
YkppdC5zZXR1cFJlc3VsdHModmFsdWVSZWdzKTsKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpKdW1wIG5vRXhjZXB0aW9uID0gc3R1YkppdC5lbWl0RXhjZXB0aW9uQ2hlY2soQ0NhbGxIZWxw
ZXJzOjpJbnZlcnRlZEV4Y2VwdGlvbkNoZWNrKTsKLSAgICAgICAgICAgIAorCisgICAgICAgICAg
ICBzdHViSml0LmNvcHlDYWxsZWVTYXZlc1RvVk1DYWxsZWVTYXZlc0J1ZmZlcigpOworCiAgICAg
ICAgICAgICBzdHViSml0LnNldHVwQXJndW1lbnRzKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0
cih2bSksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKICAgICAgICAgICAgIGhhbmRsZXJD
YWxsID0gc3R1YkppdC5jYWxsKCk7CiAgICAgICAgICAgICBzdHViSml0Lmp1bXBUb0V4Y2VwdGlv
bkhhbmRsZXIoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lhbGl6ZWRU
aHVua0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lh
bGl6ZWRUaHVua0pJVC5oCShyZXZpc2lvbiAxODk1NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIDogSlNJbnRlcmZhY2VKSVQodm0pCiAg
ICAgICAgIHsKICAgICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CisgICAgICAgICAg
ICBlbWl0U2F2ZVRoZW5NYXRlcmlhbGl6ZVRhZ1JlZ2lzdGVycygpOwogICAgICAgICAgICAgLy8g
Q2hlY2sgdGhhdCB3ZSBoYXZlIHRoZSBleHBlY3RlZCBudW1iZXIgb2YgYXJndW1lbnRzCiAgICAg
ICAgICAgICBtX2ZhaWx1cmVzLmFwcGVuZChicmFuY2gzMihOb3RFcXVhbCwgcGF5bG9hZEZvcihK
U1N0YWNrOjpBcmd1bWVudENvdW50KSwgVHJ1c3RlZEltbTMyKGV4cGVjdGVkQXJnQ291bnQgKyAx
KSkpOwogICAgICAgICB9CkBAIC01Miw2ICs1Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAgICAgOiBKU0ludGVyZmFjZUpJVCh2bSkKICAgICAgICAgewogICAgICAgICAgICAgZW1pdEZ1
bmN0aW9uUHJvbG9ndWUoKTsKKyAgICAgICAgICAgIGVtaXRTYXZlVGhlbk1hdGVyaWFsaXplVGFn
UmVnaXN0ZXJzKCk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHZvaWQgbG9hZERvdWJs
ZUFyZ3VtZW50KGludCBhcmd1bWVudCwgRlBSZWdpc3RlcklEIGRzdCwgUmVnaXN0ZXJJRCBzY3Jh
dGNoKQpAQCAtMTA1LDYgKzEwNyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAg
ICAgICAgICBpZiAoc3JjICE9IHJlZ1QwKQogICAgICAgICAgICAgICAgIG1vdmUoc3JjLCByZWdU
MCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGVtaXRSZXN0b3JlU2F2ZWRUYWdSZWdpc3Rl
cnMoKTsKICAgICAgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CiAgICAgICAgICAgICBy
ZXQoKTsKICAgICAgICAgfQpAQCAtMTEzLDYgKzExNyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB7CiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKHBheWxvYWQsIHBheWxvYWQgPT0gcmVn
VDApOwogICAgICAgICAgICAgQVNTRVJUX1VOVVNFRCh0YWcsIHRhZyA9PSByZWdUMSk7CisgICAg
ICAgICAgICBlbWl0UmVzdG9yZVNhdmVkVGFnUmVnaXN0ZXJzKCk7CiAgICAgICAgICAgICBlbWl0
RnVuY3Rpb25FcGlsb2d1ZSgpOwogICAgICAgICAgICAgcmV0KCk7CiAgICAgICAgIH0KQEAgLTEz
Nyw2ICsxNDIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIGxvd05vblplcm8ubGlu
ayh0aGlzKTsKICAgICAgICAgICAgIGhpZ2hOb25aZXJvLmxpbmsodGhpcyk7CiAjZW5kaWYKKyAg
ICAgICAgICAgIGVtaXRSZXN0b3JlU2F2ZWRUYWdSZWdpc3RlcnMoKTsKICAgICAgICAgICAgIGVt
aXRGdW5jdGlvbkVwaWxvZ3VlKCk7CiAgICAgICAgICAgICByZXQoKTsKICAgICAgICAgfQpAQCAt
MTQ2LDYgKzE1Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgaWYgKHNyYyAhPSBy
ZWdUMCkKICAgICAgICAgICAgICAgICBtb3ZlKHNyYywgcmVnVDApOwogICAgICAgICAgICAgdGFn
UmV0dXJuQXNJbnQzMigpOworICAgICAgICAgICAgZW1pdFJlc3RvcmVTYXZlZFRhZ1JlZ2lzdGVy
cygpOwogICAgICAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKICAgICAgICAgICAgIHJl
dCgpOwogICAgICAgICB9CkBAIC0xNTUsNiArMTYyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgICAgICBpZiAoc3JjICE9IHJlZ1QwKQogICAgICAgICAgICAgICAgIG1vdmUoc3JjLCByZWdU
MCk7CiAgICAgICAgICAgICB0YWdSZXR1cm5Bc0pTQ2VsbCgpOworICAgICAgICAgICAgZW1pdFJl
c3RvcmVTYXZlZFRhZ1JlZ2lzdGVycygpOwogICAgICAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9n
dWUoKTsKICAgICAgICAgICAgIHJldCgpOwogICAgICAgICB9CkBAIC0xODUsNyArMTkzLDMxIEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICBwcml2YXRlOgorICAgICAgICB2b2lk
IGVtaXRTYXZlVGhlbk1hdGVyaWFsaXplVGFnUmVnaXN0ZXJzKCkKKyAgICAgICAgeworI2lmIFVT
RShKU1ZBTFVFNjQpCisjaWYgQ1BVKEFSTTY0KQorICAgICAgICAgICAgcHVzaFBhaXIodGFnVHlw
ZU51bWJlclJlZ2lzdGVyLCB0YWdNYXNrUmVnaXN0ZXIpOworI2Vsc2UKKyAgICAgICAgICAgIHB1
c2godGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKKyAgICAgICAgICAgIHB1c2godGFnTWFza1JlZ2lz
dGVyKTsKKyNlbmRpZgorICAgICAgICAgICAgZW1pdE1hdGVyaWFsaXplVGFnQ2hlY2tSZWdpc3Rl
cnMoKTsKKyNlbmRpZgorICAgICAgICB9CiAKKyAgICAgICAgdm9pZCBlbWl0UmVzdG9yZVNhdmVk
VGFnUmVnaXN0ZXJzKCkKKyAgICAgICAgeworI2lmIFVTRShKU1ZBTFVFNjQpCisjaWYgQ1BVKEFS
TTY0KQorICAgICAgICAgICAgcG9wUGFpcih0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIHRhZ01hc2tS
ZWdpc3Rlcik7CisjZWxzZQorICAgICAgICAgICAgcG9wKHRhZ01hc2tSZWdpc3Rlcik7CisgICAg
ICAgICAgICBwb3AodGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKKyNlbmRpZgorI2VuZGlmCisgICAg
ICAgIH0KKyAgICAgICAgCiAgICAgICAgIHZvaWQgdGFnUmV0dXJuQXNJbnQzMigpCiAgICAgICAg
IHsKICNpZiBVU0UoSlNWQUxVRTY0KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9U
ZW1wUmVnaXN0ZXJTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1RlbXBSZWdpc3RlclNldC5oCShyZXZpc2lvbiAxODk1NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1RlbXBSZWdpc3RlclNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTUsNiArMTE1
LDE2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGdldEJpdChHUFJJbmZvOjpudW1iZXJPZlJl
Z2lzdGVycyArIGluZGV4KTsKICAgICB9CiAgICAgCisgICAgLy8gUmV0dXJuIHRoZSBpbmRleCd0
aCBmcmVlIEZQUi4KKyAgICBGUFJSZWcgZ2V0RnJlZUZQUih1bnNpZ25lZCBpbmRleCA9IDApIGNv
bnN0CisgICAgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBGUFJJbmZvOjpudW1iZXJPZlJl
Z2lzdGVyczsgaS0tOykgeworICAgICAgICAgICAgaWYgKCFnZXRGUFJCeUluZGV4KGkpICYmICFp
bmRleC0tKQorICAgICAgICAgICAgICAgIHJldHVybiBGUFJJbmZvOjp0b1JlZ2lzdGVyKGkpOwor
ICAgICAgICB9CisgICAgICAgIHJldHVybiBJbnZhbGlkRlBSUmVnOworICAgIH0KKwogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEJhbmtJbmZvPgogICAgIHZvaWQgc2V0QnlJbmRleCh1bnNpZ25lZCBp
bmRleCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJh
dG9ycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dl
bmVyYXRvcnMuY3BwCShyZXZpc2lvbiAxODk1NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1RodW5rR2VuZXJhdG9ycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDYgKzY2LDggQEAg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHRocm93RXhjZXB0aW9uRnJvbQogICAgIC8vIGV2ZW4gdGhv
dWdoIHdlIHdvbid0IHVzZSBpdC4KICAgICBqaXQucHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJD
YWxsKEdQUkluZm86Om5vblByZXNlcnZlZE5vblJldHVybkdQUik7CiAKKyAgICBqaXQuY29weUNh
bGxlZVNhdmVzVG9WTUNhbGxlZVNhdmVzQnVmZmVyKCk7CisKICAgICBqaXQuc2V0dXBBcmd1bWVu
dHMoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHZtKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVn
aXN0ZXIpOwogICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihiaXR3aXNl
X2Nhc3Q8dm9pZCo+KGxvb2t1cEV4Y2VwdGlvbkhhbmRsZXIpKSwgR1BSSW5mbzo6bm9uQXJnR1BS
MCk7CiAgICAgZW1pdFBvaW50ZXJWYWxpZGF0aW9uKGppdCwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7
CkBAIC0yMDksNiArMjExLDE4IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbmF0aXZl
Rm9yR2UKIAogICAgIGlmIChlbnRyeVR5cGUgPT0gRW50ZXJWaWFDYWxsKQogICAgICAgICBqaXQu
ZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGVsc2UgaWYg
KGVudHJ5VHlwZSA9PSBFbnRlclZpYUp1bXApIHsKKyAgICAgICAgLy8gV2UncmUgY29taW5nIGZy
b20gYSBzcGVjaWFsaXplZCB0aHVuayB0aGF0IGhhcyBzYXZlZCB0aGUgcHJpb3IgdGFnIHJlZ2lz
dGVycycgY29udGVudHMuCisgICAgICAgIC8vIFJlc3RvcmUgdGhlbSBub3cuCisjaWYgQ1BVKEFS
TTY0KQorICAgICAgICBqaXQucG9wUGFpcihKU0ludGVyZmFjZUpJVDo6dGFnVHlwZU51bWJlclJl
Z2lzdGVyLCBKU0ludGVyZmFjZUpJVDo6dGFnTWFza1JlZ2lzdGVyKTsKKyNlbHNlCisgICAgICAg
IGppdC5wb3AoSlNJbnRlcmZhY2VKSVQ6OnRhZ01hc2tSZWdpc3Rlcik7CisgICAgICAgIGppdC5w
b3AoSlNJbnRlcmZhY2VKSVQ6OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7CisjZW5kaWYKKyAgICB9
CisjZW5kaWYKIAogICAgIGppdC5lbWl0UHV0SW1tZWRpYXRlVG9DYWxsRnJhbWVIZWFkZXIoMCwg
SlNTdGFjazo6Q29kZUJsb2NrKTsKICAgICBqaXQuc3RvcmVQdHIoSlNJbnRlcmZhY2VKSVQ6OmNh
bGxGcmFtZVJlZ2lzdGVyLCAmdm0tPnRvcENhbGxGcmFtZSk7CkBAIC0zMDYsNiArMzIwLDcgQEAg
c3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBuYXRpdmVGb3JHZQogICAgIC8vIEhhbmRsZSBh
biBleGNlcHRpb24KICAgICBleGNlcHRpb25IYW5kbGVyLmxpbmsoJmppdCk7CiAKKyAgICBqaXQu
Y29weUNhbGxlZVNhdmVzVG9WTUNhbGxlZVNhdmVzQnVmZmVyKCk7CiAgICAgaml0LnN0b3JlUHRy
KEpTSW50ZXJmYWNlSklUOjpjYWxsRnJhbWVSZWdpc3RlciwgJnZtLT50b3BDYWxsRnJhbWUpOwog
CiAjaWYgQ1BVKFg4NikgJiYgVVNFKEpTVkFMVUUzMl82NCkKQEAgLTM5MSwxMyArNDA2LDYgQEAg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGFyaXR5Rml4dXBHZW5lcmF0bwogICAgIGppdC5hZGRQdHIo
ZXh0cmFUZW1wLCBKU0ludGVyZmFjZUpJVDo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwogICAgIGppdC5h
ZGRQdHIoZXh0cmFUZW1wLCBKU0ludGVyZmFjZUpJVDo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwog
Ci0gICAgLy8gU2F2ZSB0aGUgb3JpZ2luYWwgcmV0dXJuIFBDLgotICAgIGppdC5sb2FkUHRyKEpT
SW50ZXJmYWNlSklUOjpBZGRyZXNzKEpTSW50ZXJmYWNlSklUOjpjYWxsRnJhbWVSZWdpc3Rlciwg
Q2FsbEZyYW1lOjpyZXR1cm5QQ09mZnNldCgpKSwgZXh0cmFUZW1wKTsKLSAgICBqaXQuc3RvcmVQ
dHIoZXh0cmFUZW1wLCBNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KEpTSW50ZXJmYWNlSklUOjpy
ZWdUMywgSlNJbnRlcmZhY2VKSVQ6OmFyZ3VtZW50R1BSMCwgSlNJbnRlcmZhY2VKSVQ6OlRpbWVz
RWlnaHQpKTsKLQotICAgIC8vIEluc3RhbGwgdGhlIG5ldyByZXR1cm4gUEMuCi0gICAgaml0LnN0
b3JlUHRyKEdQUkluZm86OmFyZ3VtZW50R1BSMSwgSlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3MoSlNJ
bnRlcmZhY2VKSVQ6OmNhbGxGcmFtZVJlZ2lzdGVyLCBDYWxsRnJhbWU6OnJldHVyblBDT2Zmc2V0
KCkpKTsKLQogIyAgaWYgQ1BVKFg4Nl82NCkKICAgICBqaXQucHVzaChKU0ludGVyZmFjZUpJVDo6
cmVnVDQpOwogIyAgZW5kaWYKQEAgLTQzOSwxMyArNDQ3LDYgQEAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmIGFyaXR5Rml4dXBHZW5lcmF0bwogICAgIGppdC5hZGRQdHIoSlNJbnRlcmZhY2VKSVQ6OnJl
Z1Q1LCBKU0ludGVyZmFjZUpJVDo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwogICAgIGppdC5hZGRQdHIo
SlNJbnRlcmZhY2VKSVQ6OnJlZ1Q1LCBKU0ludGVyZmFjZUpJVDo6c3RhY2tQb2ludGVyUmVnaXN0
ZXIpOwogCi0gICAgLy8gU2F2ZSB0aGUgb3JpZ2luYWwgcmV0dXJuIFBDLgotICAgIGppdC5sb2Fk
UHRyKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKEpTSW50ZXJmYWNlSklUOjpjYWxsRnJhbWVSZWdp
c3RlciwgQ2FsbEZyYW1lOjpyZXR1cm5QQ09mZnNldCgpKSwgR1BSSW5mbzo6cmVnVDUpOwotICAg
IGppdC5zdG9yZVB0cihHUFJJbmZvOjpyZWdUNSwgTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChK
U0ludGVyZmFjZUpJVDo6cmVnVDMsIEpTSW50ZXJmYWNlSklUOjphcmd1bWVudEdQUjAsIEpTSW50
ZXJmYWNlSklUOjpUaW1lc0VpZ2h0KSk7Ci0gICAgCi0gICAgLy8gSW5zdGFsbCB0aGUgbmV3IHJl
dHVybiBQQy4KLSAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBKU0ludGVy
ZmFjZUpJVDo6QWRkcmVzcyhKU0ludGVyZmFjZUpJVDo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENhbGxG
cmFtZTo6cmV0dXJuUENPZmZzZXQoKSkpOwotICAgIAogIyAgaWYgQ1BVKFg4NikKICAgICBqaXQu
cHVzaChKU0ludGVyZmFjZUpJVDo6cmVnVDQpOwogIyAgZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCShyZXZpc2lvbiAxODk1NDMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkxMSW50RGF0YS5o
IgogI2luY2x1ZGUgIkJ5dGVjb2RlQ29udmVudGlvbnMuaCIKKyNpbmNsdWRlICJDb2RlQmxvY2su
aCIKICNpbmNsdWRlICJDb2RlVHlwZS5oIgogI2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCiAjaW5j
bHVkZSAiSlNTY29wZS5oIgpAQCAtMTMxLDYgKzEzMiwxNSBAQCB2b2lkIERhdGE6OnBlcmZvcm1B
c3NlcnRpb25zKFZNJiB2bSkKICNlbGlmIENQVShYODZfNjQpICYmIE9TKFdJTkRPV1MpCiAgICAg
QVNTRVJUKG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsID09IDY0KTsKICNlbmRpZgorCisj
aWYgIUVOQUJMRShKSVQpIHx8IFVTRShKU1ZBTFVFMzJfNjQpCisgICAgQVNTRVJUKCFDb2RlQmxv
Y2s6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKSk7Cisj
ZWxpZiAoQ1BVKFg4Nl82NCkgJiYgIU9TKFdJTkRPV1MpKSAgfHwgQ1BVKEFSTTY0KQorICAgIEFT
U0VSVChDb2RlQmxvY2s6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdp
c3RlcnMoKSA9PSAzKTsKKyNlbGlmIChDUFUoWDg2XzY0KSAmJiBPUyhXSU5ET1dTKSkKKyAgICBB
U1NFUlQoQ29kZUJsb2NrOjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVn
aXN0ZXJzKCkgPT0gMyk7CisjZW5kaWYKKyAgICAKICAgICBBU1NFUlQoU3RyaW5nVHlwZSA9PSA2
KTsKICAgICBBU1NFUlQoT2JqZWN0VHlwZSA9PSAyMSk7CiAgICAgQVNTRVJUKEZpbmFsT2JqZWN0
VHlwZSA9PSAyMik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDE4OTU0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4NSw4ICs0ODUs
OCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzdGFja19jaGVjaykKIAogICAgIHZtLnRvcENhbGxG
cmFtZSA9IGV4ZWM7CiAgICAgRXJyb3JIYW5kbGluZ1Njb3BlIGVycm9yU2NvcGUodm0pOwotICAg
IENvbW1vblNsb3dQYXRoczo6aW50ZXJwcmV0ZXJUaHJvd0luQ2FsbGVyKGV4ZWMsIGNyZWF0ZVN0
YWNrT3ZlcmZsb3dFcnJvcihleGVjKSk7Ci0gICAgcGMgPSByZXR1cm5Ub1Rocm93Rm9yVGhyb3du
RXhjZXB0aW9uKGV4ZWMpOworICAgIHZtLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVN0YWNr
T3ZlcmZsb3dFcnJvcihleGVjKSk7CisgICAgcGMgPSByZXR1cm5Ub1Rocm93KGV4ZWMpOwogICAg
IExMSU5UX1JFVFVSTl9UV08ocGMsIGV4ZWMpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQko
cmV2aXNpb24gMTg5NTQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIzMl82NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTMwMiw2ICszMDIsNyBAQCBf
aGFuZGxlVW5jYXVnaHRFeGNlcHRpb246CiAgICAgbG9hZHAgQ2FsbGVlICsgUGF5bG9hZE9mZnNl
dFtjZnJdLCB0MwogICAgIGFuZHAgTWFya2VkQmxvY2tNYXNrLCB0MwogICAgIGxvYWRwIE1hcmtl
ZEJsb2NrOjptX3dlYWtTZXQgKyBXZWFrU2V0OjptX3ZtW3QzXSwgdDMKKyAgICByZXN0b3JlQ2Fs
bGVlU2F2ZXNGcm9tVk1DYWxsZWVTYXZlc0J1ZmZlcih0MywgdDApCiAgICAgbG9hZHAgVk06OmNh
bGxGcmFtZUZvclRocm93W3QzXSwgY2ZyCiAKICAgICBsb2FkcCBDYWxsZXJGcmFtZVtjZnJdLCBj
ZnIKQEAgLTU5MSw3ICs1OTIsNiBAQCBtYWNybyBmdW5jdGlvbkFyaXR5Q2hlY2soZG9uZUxhYmVs
LCBzbG93CiAgICAgYnRweiB0MywgLnByb2NlZWRJbmxpbmUKICAgICAKICAgICBsb2FkcCBDb21t
b25TbG93UGF0aHM6OkFyaXR5Q2hlY2tEYXRhOjpwYWRkZWRTdGFja1NwYWNlW3IxXSwgYTAKLSAg
ICBsb2FkcCBDb21tb25TbG93UGF0aHM6OkFyaXR5Q2hlY2tEYXRhOjpyZXR1cm5QQ1tyMV0sIGEx
CiAgICAgY2FsbCB0MwogICAgIGlmIEFTU0VSVF9FTkFCTEVECiAgICAgICAgIGxvYWRwIFJldHVy
blBDW2Nmcl0sIHQwCkBAIC0xODc4LDYgKzE4NzgsNyBAQCBfbGxpbnRfb3BfY2F0Y2g6CiAgICAg
bG9hZHAgQ2FsbGVlICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0MwogICAgIGFuZHAgTWFya2VkQmxv
Y2tNYXNrLCB0MwogICAgIGxvYWRwIE1hcmtlZEJsb2NrOjptX3dlYWtTZXQgKyBXZWFrU2V0Ojpt
X3ZtW3QzXSwgdDMKKyAgICByZXN0b3JlQ2FsbGVlU2F2ZXNGcm9tVk1DYWxsZWVTYXZlc0J1ZmZl
cih0MywgdDApCiAgICAgbG9hZHAgVk06OmNhbGxGcmFtZUZvclRocm93W3QzXSwgY2ZyCiAgICAg
cmVzdG9yZVN0YWNrUG9pbnRlckFmdGVyQ2FsbCgpCiAKQEAgLTE5MTYsNiArMTkxNyw3IEBAIF9s
bGludF90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9saW5lOgogICAgIGxvYWRwIENhbGxlZVtj
ZnJdLCB0MQogICAgIGFuZHAgTWFya2VkQmxvY2tNYXNrLCB0MQogICAgIGxvYWRwIE1hcmtlZEJs
b2NrOjptX3dlYWtTZXQgKyBXZWFrU2V0OjptX3ZtW3QxXSwgdDEKKyAgICBjb3B5Q2FsbGVlU2F2
ZXNUb1ZNQ2FsbGVlU2F2ZXNCdWZmZXIodDEsIHQyKQogICAgIGptcCBWTTo6dGFyZ2V0TWFjaGlu
ZVBDRm9yVGhyb3dbdDFdCiAKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHJldmlzaW9uIDE4OTU0MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCSh3
b3JraW5nIGNvcHkpCkBAIC0yMTUsOSArMjE1LDYgQEAgbWFjcm8gZG9WTUVudHJ5KG1ha2VDYWxs
KQogICAgIGVuZAogICAgIHN0b3JlcCBjZnIsIFZNOjp0b3BWTUVudHJ5RnJhbWVbdm1dCiAKLSAg
ICBtb3ZlIFRhZ1R5cGVOdW1iZXIsIHRhZ1R5cGVOdW1iZXIKLSAgICBhZGRwIFRhZ0JpdFR5cGVP
dGhlciwgdGFnVHlwZU51bWJlciwgdGFnTWFzawotCiAgICAgY2hlY2tTdGFja1BvaW50ZXJBbGln
bm1lbnQoZXh0cmFUZW1wUmVnLCAweGJhZDBkYzAyKQogCiAgICAgbWFrZUNhbGwoZW50cnksIHQz
KQpAQCAtMjc3LDYgKzI3NCw3IEBAIF9oYW5kbGVVbmNhdWdodEV4Y2VwdGlvbjoKICAgICBsb2Fk
cCBDYWxsZWVbY2ZyXSwgdDMKICAgICBhbmRwIE1hcmtlZEJsb2NrTWFzaywgdDMKICAgICBsb2Fk
cCBNYXJrZWRCbG9jazo6bV93ZWFrU2V0ICsgV2Vha1NldDo6bV92bVt0M10sIHQzCisgICAgcmVz
dG9yZUNhbGxlZVNhdmVzRnJvbVZNQ2FsbGVlU2F2ZXNCdWZmZXIodDMsIHQwKQogICAgIGxvYWRw
IFZNOjpjYWxsRnJhbWVGb3JUaHJvd1t0M10sIGNmcgogCiAgICAgbG9hZHAgQ2FsbGVyRnJhbWVb
Y2ZyXSwgY2ZyCkBAIC01MDksMjAgKzUwNyw2IEBAIG1hY3JvIGZ1bmN0aW9uQXJpdHlDaGVjayhk
b25lTGFiZWwsIHNsb3cKICAgICBqbXAgX2xsaW50X3Rocm93X2Zyb21fc2xvd19wYXRoX3RyYW1w
b2xpbmUKIAogLm5vRXJyb3I6Ci0gICAgIyByMSBwb2ludHMgdG8gQXJpdHlDaGVja0RhdGEuCi0g
ICAgbG9hZHAgQ29tbW9uU2xvd1BhdGhzOjpBcml0eUNoZWNrRGF0YTo6dGh1bmtUb0NhbGxbcjFd
LCB0MwotICAgIGJ0cHogdDMsIC5wcm9jZWVkSW5saW5lCi0gICAgCi0gICAgbG9hZHAgQ29tbW9u
U2xvd1BhdGhzOjpBcml0eUNoZWNrRGF0YTo6cGFkZGVkU3RhY2tTcGFjZVtyMV0sIGEwCi0gICAg
bG9hZHAgQ29tbW9uU2xvd1BhdGhzOjpBcml0eUNoZWNrRGF0YTo6cmV0dXJuUENbcjFdLCBhMQot
ICAgIGNhbGwgdDMKLSAgICBpZiBBU1NFUlRfRU5BQkxFRAotICAgICAgICBsb2FkcCBSZXR1cm5Q
Q1tjZnJdLCB0MAotICAgICAgICBsb2FkcCBbdDBdLCB0MAotICAgIGVuZAotICAgIGptcCAuY29u
dGludWUKLQotLnByb2NlZWRJbmxpbmU6CiAgICAgbG9hZGkgQ29tbW9uU2xvd1BhdGhzOjpBcml0
eUNoZWNrRGF0YTo6cGFkZGVkU3RhY2tTcGFjZVtyMV0sIHQxCiAgICAgYnRpeiB0MSwgLmNvbnRp
bnVlCiAKQEAgLTUzMCw4ICs1MTQsOSBAQCBtYWNybyBmdW5jdGlvbkFyaXR5Q2hlY2soZG9uZUxh
YmVsLCBzbG93CiAgICAgbHNoaWZ0cCAxLCB0MQogICAgIG5lZ3EgdDEKICAgICBtb3ZlIGNmciwg
dDMKKyAgICBzdWJwIENhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycyAqIDgsIHQzCiAg
ICAgbG9hZGkgUGF5bG9hZE9mZnNldCArIEFyZ3VtZW50Q291bnRbY2ZyXSwgdDIKLSAgICBhZGRp
IENhbGxGcmFtZUhlYWRlclNsb3RzLCB0MgorICAgIGFkZGkgQ2FsbEZyYW1lSGVhZGVyU2xvdHMg
KyBDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMsIHQyCiAuY29weUxvb3A6CiAgICAg
bG9hZHEgW3QzXSwgdDAKICAgICBzdG9yZXEgdDAsIFt0MywgdDEsIDhdCkBAIC01NzQsMTIgKzU1
OSwxNSBAQCBfbGxpbnRfb3BfZW50ZXI6CiAgICAgY2hlY2tTdGFja1BvaW50ZXJBbGlnbm1lbnQo
dDIsIDB4ZGVhZDAwZTEpCiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQyICAgICAgICAgICAg
ICAgIC8vIHQyPENvZGVCbG9jaz4gPSBjZnIuQ29kZUJsb2NrCiAgICAgbG9hZGkgQ29kZUJsb2Nr
OjptX251bVZhcnNbdDJdLCB0MiAgICAgIC8vIHQyPHNpemVfdD4gPSB0MjxDb2RlQmxvY2s+Lm1f
bnVtVmFycworICAgIHN1YnEgQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzLCB0Mgor
ICAgIG1vdmUgY2ZyLCB0MQorICAgIHN1YnEgQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0
ZXJzICogOCwgdDEKICAgICBidGl6IHQyLCAub3BFbnRlckRvbmUKICAgICBtb3ZlIFZhbHVlVW5k
ZWZpbmVkLCB0MAogICAgIG5lZ2kgdDIKICAgICBzeGkycSB0MiwgdDIKIC5vcEVudGVyTG9vcDoK
LSAgICBzdG9yZXEgdDAsIFtjZnIsIHQyLCA4XQorICAgIHN0b3JlcSB0MCwgW3QxLCB0MiwgOF0K
ICAgICBhZGRxIDEsIHQyCiAgICAgYnRxbnogdDIsIC5vcEVudGVyTG9vcAogLm9wRW50ZXJEb25l
OgpAQCAtMTc2MSwxMSArMTc0OSw2IEBAIF9sbGludF9vcF90b19wcmltaXRpdmU6CiAKIAogX2xs
aW50X29wX2NhdGNoOgotICAgICMgR290dGEgcmVzdG9yZSB0aGUgdGFnIHJlZ2lzdGVycy4gV2Ug
Y291bGQgYmUgdGhyb3dpbmcgZnJvbSBGVEwsIHdoaWNoIG1heQotICAgICMgY2xvYmJlciB0aGVt
LgotICAgIG1vdmUgVGFnVHlwZU51bWJlciwgdGFnVHlwZU51bWJlcgotICAgIG1vdmUgVGFnTWFz
aywgdGFnTWFzawotICAgIAogICAgICMgVGhpcyBpcyB3aGVyZSB3ZSBlbmQgdXAgZnJvbSB0aGUg
SklUJ3MgdGhyb3cgdHJhbXBvbGluZSAoYmVjYXVzZSB0aGUKICAgICAjIG1hY2hpbmUgY29kZSBy
ZXR1cm4gYWRkcmVzcyB3aWxsIGJlIHNldCB0byBfbGxpbnRfb3BfY2F0Y2gpLCBhbmQgZnJvbQog
ICAgICMgdGhlIGludGVycHJldGVyJ3MgdGhyb3cgdHJhbXBvbGluZSAoc2VlIF9sbGludF90aHJv
d190cmFtcG9saW5lKS4KQEAgLTE3NzQsNiArMTc1Nyw3IEBAIF9sbGludF9vcF9jYXRjaDoKICAg
ICBsb2FkcCBDYWxsZWVbY2ZyXSwgdDMKICAgICBhbmRwIE1hcmtlZEJsb2NrTWFzaywgdDMKICAg
ICBsb2FkcCBNYXJrZWRCbG9jazo6bV93ZWFrU2V0ICsgV2Vha1NldDo6bV92bVt0M10sIHQzCisg
ICAgcmVzdG9yZUNhbGxlZVNhdmVzRnJvbVZNQ2FsbGVlU2F2ZXNCdWZmZXIodDMsIHQwKQogICAg
IGxvYWRwIFZNOjpjYWxsRnJhbWVGb3JUaHJvd1t0M10sIGNmcgogICAgIHJlc3RvcmVTdGFja1Bv
aW50ZXJBZnRlckNhbGwoKQogCkBAIC0xODA2LDYgKzE3OTAsMTEgQEAgX2xsaW50X29wX2VuZDoK
IAogCiBfbGxpbnRfdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGluZToKKyAgICBsb2FkcCBD
YWxsZWVbY2ZyXSwgdDEKKyAgICBhbmRwIE1hcmtlZEJsb2NrTWFzaywgdDEKKyAgICBsb2FkcCBN
YXJrZWRCbG9jazo6bV93ZWFrU2V0ICsgV2Vha1NldDo6bV92bVt0MV0sIHQxCisgICAgY29weUNh
bGxlZVNhdmVzVG9WTUNhbGxlZVNhdmVzQnVmZmVyKHQxLCB0MikKKwogICAgIGNhbGxTbG93UGF0
aChfbGxpbnRfc2xvd19wYXRoX2hhbmRsZV9leGNlcHRpb24pCiAKICAgICAjIFdoZW4gdGhyb3dp
bmcgZnJvbSB0aGUgaW50ZXJwcmV0ZXIgKGkuZS4gdGhyb3dpbmcgZnJvbSBMTEludFNsb3dQYXRo
cyksIHNvCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlci5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAxODk1NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHdvcmtpbmcgY29weSkKQEAgLTEw
NywxMCArMTA3LDkgQEAKICMgIC0gdDQgYW5kIHQ1IGFyZSBuZXZlciBhcmd1bWVudCByZWdpc3Rl
cnMsIHQzIGNhbiBvbmx5IGJlIGEzLCB0MSBjYW4gb25seSBiZQogIyAgYTE7IGJ1dCB0MCBhbmQg
dDIgY2FuIGJlIGVpdGhlciBhMCBvciBhMi4KICMKLSMgIC0gT24gNjQgYml0cywgY3NyMCwgY3Ny
MSwgY3NyMiBhbmQgb3B0aW9uYWxseSBjc3IzLCBjc3I0LCBjc3I1IGFuZCBjc3I2Ci0jICBhcmUg
YXZhaWxhYmxlIGFzIGNhbGxlZS1zYXZlIHJlZ2lzdGVycy4KLSMgIGNzcjAgaXMgdXNlZCB0byBz
dG9yZSB0aGUgUEMgYmFzZSwgd2hpbGUgdGhlIGxhc3QgdHdvIGNzciByZWdpc3RlcnMgYXJlIHVz
ZWQKLSMgIHRvIHN0b3JlIHNwZWNpYWwgdGFnIHZhbHVlcy4gRG9uJ3QgdXNlIHRoZW0gZm9yIGFu
eXRoaW5nIGVsc2UuCisjICAtIE9uIDY0IGJpdHMsIHRoZXJlIGFyZSBjYWxsZWUtc2F2ZSByZWdp
c3RlcnMgbmFtZWQgY3NyMCwgY3NyMSwgLi4uIGNzck4uCisjICBUaGUgbGFzdCB0aHJlZSBjc3Ig
cmVnaXN0ZXJzIGFyZSB1c2VkIHVzZWQgdG8gc3RvcmUgdGhlIFBDIGJhc2UgYW5kCisjICB0d28g
c3BlY2lhbCB0YWcgdmFsdWVzLiBEb24ndCB1c2UgdGhlbSBmb3IgYW55dGhpbmcgZWxzZS4KICMK
ICMgQWRkaXRpb25hbCBwbGF0Zm9ybS1zcGVjaWZpYyBkZXRhaWxzICh5b3Ugc2hvdWxkbid0IHJl
bHkgb24gdGhpcyByZW1haW5pbmcKICMgdHJ1ZSk6CkBAIC0yMTgsNiArMjE3LDE1IEBAIGVsc2lm
IFg4Nl82NF9XSU4KICAgICBjb25zdCBtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCA9IDY0
CiBlbmQKIAoraWYgWDg2XzY0IG9yIFg4Nl82NF9XSU4gb3IgQVJNNjQKKyAgICBjb25zdCBDYWxs
ZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMgPSAzCitlbHNlCisgICAgY29uc3QgQ2FsbGVl
U2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzID0gMAorZW5kCisKK2NvbnN0IENhbGxlZVNhdmVT
cGFjZVN0YWNrQWxpZ25lZCA9IChDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMgKiBT
bG90U2l6ZSArIFN0YWNrQWxpZ25tZW50IC0gMSkgJiB+U3RhY2tBbGlnbm1lbnRNYXNrCisKKwog
IyBXYXRjaHBvaW50IHN0YXRlcwogY29uc3QgQ2xlYXJXYXRjaHBvaW50ID0gMAogY29uc3QgSXNX
YXRjaGVkID0gMQpAQCAtMjMxLDE3ICsyMzksMjAgQEAgaWYgSlNWQUxVRTY0CiAgICAgIyAtIEMg
Y2FsbHMgYXJlIHN0aWxsIGdpdmVuIHRoZSBJbnN0cnVjdGlvbiogcmF0aGVyIHRoYW4gdGhlIFBD
IGluZGV4LgogICAgICMgICBUaGlzIHJlcXVpcmVzIGFuIGFkZCBiZWZvcmUgdGhlIGNhbGwsIGFu
ZCBhIHN1YiBhZnRlci4KICAgICBjb25zdCBQQyA9IHQ0Ci0gICAgY29uc3QgUEIgPSBjc3IwCiAg
ICAgaWYgQVJNNjQKLSAgICAgICAgY29uc3QgdGFnVHlwZU51bWJlciA9IGNzcjEKLSAgICAgICAg
Y29uc3QgdGFnTWFzayA9IGNzcjIKKyAgICAgICAgY29uc3QgUEIgPSBjc3I3CisgICAgICAgIGNv
bnN0IHRhZ1R5cGVOdW1iZXIgPSBjc3I4CisgICAgICAgIGNvbnN0IHRhZ01hc2sgPSBjc3I5CiAg
ICAgZWxzaWYgWDg2XzY0CisgICAgICAgIGNvbnN0IFBCID0gY3NyMgogICAgICAgICBjb25zdCB0
YWdUeXBlTnVtYmVyID0gY3NyMwogICAgICAgICBjb25zdCB0YWdNYXNrID0gY3NyNAogICAgIGVs
c2lmIFg4Nl82NF9XSU4KKyAgICAgICAgY29uc3QgUEIgPSBjc3I0CiAgICAgICAgIGNvbnN0IHRh
Z1R5cGVOdW1iZXIgPSBjc3I1CiAgICAgICAgIGNvbnN0IHRhZ01hc2sgPSBjc3I2CiAgICAgZWxz
aWYgQ19MT09QCisgICAgICAgIGNvbnN0IFBCID0gY3NyMAogICAgICAgICBjb25zdCB0YWdUeXBl
TnVtYmVyID0gY3NyMQogICAgICAgICBjb25zdCB0YWdNYXNrID0gY3NyMgogICAgIGVuZApAQCAt
Mzk4LDE4ICs0MDksMTQgQEAgbWFjcm8gY2hlY2tTdGFja1BvaW50ZXJBbGlnbm1lbnQodGVtcFJl
ZwogICAgIGVuZAogZW5kCiAKLWlmIENfTE9PUAoraWYgQ19MT09QIG9yIEFSTTY0IG9yIFg4Nl82
NCBvciBYODZfNjRfV0lOCiAgICAgY29uc3QgQ2FsbGVlU2F2ZVJlZ2lzdGVyQ291bnQgPSAwCiBl
bHNpZiBBUk0gb3IgQVJNdjdfVFJBRElUSU9OQUwgb3IgQVJNdjcKICAgICBjb25zdCBDYWxsZWVT
YXZlUmVnaXN0ZXJDb3VudCA9IDcKLWVsc2lmIEFSTTY0Ci0gICAgY29uc3QgQ2FsbGVlU2F2ZVJl
Z2lzdGVyQ291bnQgPSAxMAotZWxzaWYgU0g0IG9yIFg4Nl82NCBvciBNSVBTCitlbHNpZiBTSDQg
b3IgTUlQUwogICAgIGNvbnN0IENhbGxlZVNhdmVSZWdpc3RlckNvdW50ID0gNQogZWxzaWYgWDg2
IG9yIFg4Nl9XSU4KICAgICBjb25zdCBDYWxsZWVTYXZlUmVnaXN0ZXJDb3VudCA9IDMKLWVsc2lm
IFg4Nl82NF9XSU4KLSAgICBjb25zdCBDYWxsZWVTYXZlUmVnaXN0ZXJDb3VudCA9IDcKIGVuZAog
CiBjb25zdCBDYWxsZWVSZWdpc3RlclNhdmVTaXplID0gQ2FsbGVlU2F2ZVJlZ2lzdGVyQ291bnQg
KiBQdHJTaXplCkBAIC00MTksMTcgKzQyNiwxMSBAQCBjb25zdCBDYWxsZWVSZWdpc3RlclNhdmVT
aXplID0gQ2FsbGVlU2F2CiBjb25zdCBWTUVudHJ5VG90YWxGcmFtZVNpemUgPSAoQ2FsbGVlUmVn
aXN0ZXJTYXZlU2l6ZSArIHNpemVvZiBWTUVudHJ5UmVjb3JkICsgU3RhY2tBbGlnbm1lbnQgLSAx
KSAmIH5TdGFja0FsaWdubWVudE1hc2sKIAogbWFjcm8gcHVzaENhbGxlZVNhdmVzKCkKLSAgICBp
ZiBDX0xPT1AKKyAgICBpZiBDX0xPT1Agb3IgQVJNNjQgb3IgWDg2XzY0IG9yIFg4Nl82NF9XSU4K
ICAgICBlbHNpZiBBUk0gb3IgQVJNdjdfVFJBRElUSU9OQUwKICAgICAgICAgZW1pdCAicHVzaCB7
cjQtcjEwfSIKICAgICBlbHNpZiBBUk12NwogICAgICAgICBlbWl0ICJwdXNoIHtyNC1yNiwgcjgt
cjExfSIKLSAgICBlbHNpZiBBUk02NAotICAgICAgICBlbWl0ICJzdHAgeDIwLCB4MTksIFtzcCwg
Iy0xNl0hIgotICAgICAgICBlbWl0ICJzdHAgeDIyLCB4MjEsIFtzcCwgIy0xNl0hIgotICAgICAg
ICBlbWl0ICJzdHAgeDI0LCB4MjMsIFtzcCwgIy0xNl0hIgotICAgICAgICBlbWl0ICJzdHAgeDI2
LCB4MjUsIFtzcCwgIy0xNl0hIgotICAgICAgICBlbWl0ICJzdHAgeDI4LCB4MjcsIFtzcCwgIy0x
Nl0hIgogICAgIGVsc2lmIE1JUFMKICAgICAgICAgZW1pdCAiYWRkaXUgJHNwLCAkc3AsIC0yMCIK
ICAgICAgICAgZW1pdCAic3cgJDIwLCAxNigkc3ApIgpAQCAtNDUxLDM1ICs0NTIsMTUgQEAgbWFj
cm8gcHVzaENhbGxlZVNhdmVzKCkKICAgICAgICAgZW1pdCAicHVzaCBlc2kiCiAgICAgICAgIGVt
aXQgInB1c2ggZWRpIgogICAgICAgICBlbWl0ICJwdXNoIGVieCIKLSAgICBlbHNpZiBYODZfNjQK
LSAgICAgICAgZW1pdCAicHVzaCAlcjEyIgotICAgICAgICBlbWl0ICJwdXNoICVyMTMiCi0gICAg
ICAgIGVtaXQgInB1c2ggJXIxNCIKLSAgICAgICAgZW1pdCAicHVzaCAlcjE1IgotICAgICAgICBl
bWl0ICJwdXNoICVyYngiCi0gICAgZWxzaWYgWDg2XzY0X1dJTgotICAgICAgICBlbWl0ICJwdXNo
IHIxMiIKLSAgICAgICAgZW1pdCAicHVzaCByMTMiCi0gICAgICAgIGVtaXQgInB1c2ggcjE0Igot
ICAgICAgICBlbWl0ICJwdXNoIHIxNSIKLSAgICAgICAgZW1pdCAicHVzaCByYngiCi0gICAgICAg
IGVtaXQgInB1c2ggcmRpIgotICAgICAgICBlbWl0ICJwdXNoIHJzaSIKICAgICBlbmQKIGVuZAog
CiBtYWNybyBwb3BDYWxsZWVTYXZlcygpCi0gICAgaWYgQ19MT09QCisgICAgaWYgQ19MT09QIG9y
IEFSTTY0IG9yIFg4Nl82NCBvciBYODZfNjRfV0lOCiAgICAgZWxzaWYgQVJNIG9yIEFSTXY3X1RS
QURJVElPTkFMCiAgICAgICAgIGVtaXQgInBvcCB7cjQtcjEwfSIKICAgICBlbHNpZiBBUk12Nwog
ICAgICAgICBlbWl0ICJwb3Age3I0LXI2LCByOC1yMTF9IgotICAgIGVsc2lmIEFSTTY0Ci0gICAg
ICAgIGVtaXQgImxkcCB4MjgsIHgyNywgW3NwXSwgIzE2IgotICAgICAgICBlbWl0ICJsZHAgeDI2
LCB4MjUsIFtzcF0sICMxNiIKLSAgICAgICAgZW1pdCAibGRwIHgyNCwgeDIzLCBbc3BdLCAjMTYi
Ci0gICAgICAgIGVtaXQgImxkcCB4MjIsIHgyMSwgW3NwXSwgIzE2IgotICAgICAgICBlbWl0ICJs
ZHAgeDIwLCB4MTksIFtzcF0sICMxNiIKICAgICBlbHNpZiBNSVBTCiAgICAgICAgIGVtaXQgImx3
ICQxNiwgMCgkc3ApIgogICAgICAgICBlbWl0ICJsdyAkMTcsIDQoJHNwKSIKQEAgLTUwMSwyMCAr
NDgyLDYgQEAgbWFjcm8gcG9wQ2FsbGVlU2F2ZXMoKQogICAgICAgICBlbWl0ICJwb3AgZWJ4Igog
ICAgICAgICBlbWl0ICJwb3AgZWRpIgogICAgICAgICBlbWl0ICJwb3AgZXNpIgotICAgIGVsc2lm
IFg4Nl82NAotICAgICAgICBlbWl0ICJwb3AgJXJieCIKLSAgICAgICAgZW1pdCAicG9wICVyMTUi
Ci0gICAgICAgIGVtaXQgInBvcCAlcjE0IgotICAgICAgICBlbWl0ICJwb3AgJXIxMyIKLSAgICAg
ICAgZW1pdCAicG9wICVyMTIiCi0gICAgZWxzaWYgWDg2XzY0X1dJTgotICAgICAgICBlbWl0ICJw
b3AgcnNpIgotICAgICAgICBlbWl0ICJwb3AgcmRpIgotICAgICAgICBlbWl0ICJwb3AgcmJ4Igot
ICAgICAgICBlbWl0ICJwb3AgcjE1IgotICAgICAgICBlbWl0ICJwb3AgcjE0IgotICAgICAgICBl
bWl0ICJwb3AgcjEzIgotICAgICAgICBlbWl0ICJwb3AgcjEyIgogICAgIGVuZAogZW5kCiAKQEAg
LTU0NCw2ICs1MTEsMTMxIEBAIG1hY3JvIHJlc3RvcmVDYWxsZXJQQ0FuZENGUigpCiAgICAgZW5k
CiBlbmQKIAorbWFjcm8gcHJlc2VydmVDYWxsZWVTYXZlc1VzZWRCeUxMSW50KCkKKyAgICBzdWJw
IENhbGxlZVNhdmVTcGFjZVN0YWNrQWxpZ25lZCwgc3AKKyAgICBpZiBDX0xPT1AKKyAgICBlbHNp
ZiBBUk0gb3IgQVJNdjdfVFJBRElUSU9OQUwKKyAgICBlbHNpZiBBUk12NworICAgIGVsc2lmIEFS
TTY0CisgICAgICAgIGVtaXQgInN0cCB4MjcsIHgyOCwgW2ZwLCAjLTE2XSIKKyAgICAgICAgZW1p
dCAic3RwIHh6ciwgeDI2LCBbZnAsICMtMzJdIgorICAgIGVsc2lmIE1JUFMKKyAgICBlbHNpZiBT
SDQKKyAgICBlbHNpZiBYODYKKyAgICBlbHNpZiBYODZfV0lOCisgICAgZWxzaWYgWDg2XzY0Cisg
ICAgICAgIHN0b3JlcCBjc3I0LCAtOFtjZnJdCisgICAgICAgIHN0b3JlcCBjc3IzLCAtMTZbY2Zy
XQorICAgICAgICBzdG9yZXAgY3NyMiwgLTI0W2Nmcl0KKyAgICBlbHNpZiBYODZfNjRfV0lOCisg
ICAgICAgIHN0b3JlcCBjc3I2LCAtOFtjZnJdCisgICAgICAgIHN0b3JlcCBjc3I1LCAtMTZbY2Zy
XQorICAgICAgICBzdG9yZXAgY3NyNCwgLTI0W2Nmcl0KKyAgICBlbmQKK2VuZAorCittYWNybyBy
ZXN0b3JlQ2FsbGVlU2F2ZXNVc2VkQnlMTEludCgpCisgICAgaWYgQ19MT09QCisgICAgZWxzaWYg
QVJNIG9yIEFSTXY3X1RSQURJVElPTkFMCisgICAgZWxzaWYgQVJNdjcKKyAgICBlbHNpZiBBUk02
NAorICAgICAgICBlbWl0ICJsZHAgeHpyLCB4MjYsIFtmcCwgIy0zMl0iCisgICAgICAgIGVtaXQg
ImxkcCB4MjcsIHgyOCwgW2ZwLCAjLTE2XSIKKyAgICBlbHNpZiBNSVBTCisgICAgZWxzaWYgU0g0
CisgICAgZWxzaWYgWDg2CisgICAgZWxzaWYgWDg2X1dJTgorICAgIGVsc2lmIFg4Nl82NAorICAg
ICAgICBsb2FkcCAtMjRbY2ZyXSwgY3NyMgorICAgICAgICBsb2FkcCAtMTZbY2ZyXSwgY3NyMwor
ICAgICAgICBsb2FkcCAtOFtjZnJdLCBjc3I0CisgICAgZWxzaWYgWDg2XzY0X1dJTgorICAgICAg
ICBsb2FkcCAtMjRbY2ZyXSwgY3NyNAorICAgICAgICBsb2FkcCAtMTZbY2ZyXSwgY3NyNQorICAg
ICAgICBsb2FkcCAtOFtjZnJdLCBjc3I2CisgICAgZW5kCitlbmQKKworbWFjcm8gY29weUNhbGxl
ZVNhdmVzVG9WTUNhbGxlZVNhdmVzQnVmZmVyKHZtLCB0ZW1wKQorICAgIGlmIEFSTTY0IG9yIFg4
Nl82NCBvciBYODZfNjRfV0lOCisgICAgICAgIGxlYXAgVk06OmNhbGxlZVNhdmVSZWdpc3RlcnNC
dWZmZXJbdm1dLCB0ZW1wCisgICAgICAgIGlmIEFSTTY0CisgICAgICAgICAgICBzdG9yZXAgY3Ny
MCwgW3RlbXBdCisgICAgICAgICAgICBzdG9yZXAgY3NyMSwgOFt0ZW1wXQorICAgICAgICAgICAg
c3RvcmVwIGNzcjIsIDE2W3RlbXBdCisgICAgICAgICAgICBzdG9yZXAgY3NyMywgMjRbdGVtcF0K
KyAgICAgICAgICAgIHN0b3JlcCBjc3I0LCAzMlt0ZW1wXQorICAgICAgICAgICAgc3RvcmVwIGNz
cjUsIDQwW3RlbXBdCisgICAgICAgICAgICBzdG9yZXAgY3NyNiwgNDhbdGVtcF0KKyAgICAgICAg
ICAgIHN0b3JlcCBjc3I3LCA1Nlt0ZW1wXQorICAgICAgICAgICAgc3RvcmVwIGNzcjgsIDY0W3Rl
bXBdCisgICAgICAgICAgICBzdG9yZXAgY3NyOSwgNzJbdGVtcF0KKyAgICAgICAgICAgIHN0b3Jl
ZCBjc2ZyMCwgODBbdGVtcF0KKyAgICAgICAgICAgIHN0b3JlZCBjc2ZyMSwgODhbdGVtcF0KKyAg
ICAgICAgICAgIHN0b3JlZCBjc2ZyMiwgOTZbdGVtcF0KKyAgICAgICAgICAgIHN0b3JlZCBjc2Zy
MywgMTA0W3RlbXBdCisgICAgICAgICAgICBzdG9yZWQgY3NmcjQsIDExMlt0ZW1wXQorICAgICAg
ICAgICAgc3RvcmVkIGNzZnI1LCAxMjBbdGVtcF0KKyAgICAgICAgICAgIHN0b3JlZCBjc2ZyNiwg
MTI4W3RlbXBdCisgICAgICAgICAgICBzdG9yZWQgY3NmcjcsIDEzNlt0ZW1wXQorICAgICAgICBl
bHNpZiBYODZfNjQKKyAgICAgICAgICAgIHN0b3JlcCBjc3IwLCBbdGVtcF0KKyAgICAgICAgICAg
IHN0b3JlcCBjc3IxLCA4W3RlbXBdCisgICAgICAgICAgICBzdG9yZXAgY3NyMiwgMTZbdGVtcF0K
KyAgICAgICAgICAgIHN0b3JlcCBjc3IzLCAyNFt0ZW1wXQorICAgICAgICAgICAgc3RvcmVwIGNz
cjQsIDMyW3RlbXBdCisgICAgICAgIGVsc2lmIFg4Nl82NF9XSU4KKyAgICAgICAgICAgIHN0b3Jl
cCBjc3IwLCBbdGVtcF0KKyAgICAgICAgICAgIHN0b3JlcCBjc3IxLCA4W3RlbXBdCisgICAgICAg
ICAgICBzdG9yZXAgY3NyMiwgMTZbdGVtcF0KKyAgICAgICAgICAgIHN0b3JlcCBjc3IzLCAyNFt0
ZW1wXQorICAgICAgICAgICAgc3RvcmVwIGNzcjQsIDMyW3RlbXBdCisgICAgICAgICAgICBzdG9y
ZXAgY3NyNSwgNDBbdGVtcF0KKyAgICAgICAgICAgIHN0b3JlcCBjc3I2LCA0OFt0ZW1wXQorICAg
ICAgICBlbmQKKyAgICBlbmQKK2VuZAorCittYWNybyByZXN0b3JlQ2FsbGVlU2F2ZXNGcm9tVk1D
YWxsZWVTYXZlc0J1ZmZlcih2bSwgdGVtcCkKKyAgICBpZiBBUk02NCBvciBYODZfNjQgb3IgWDg2
XzY0X1dJTgorICAgICAgICBsZWFwIFZNOjpjYWxsZWVTYXZlUmVnaXN0ZXJzQnVmZmVyW3ZtXSwg
dGVtcAorICAgICAgICBpZiBBUk02NAorICAgICAgICAgICAgbG9hZHAgW3RlbXBdLCBjc3IwCisg
ICAgICAgICAgICBsb2FkcCA4W3RlbXBdLCBjc3IxCisgICAgICAgICAgICBsb2FkcCAxNlt0ZW1w
XSwgY3NyMgorICAgICAgICAgICAgbG9hZHAgMjRbdGVtcF0sIGNzcjMKKyAgICAgICAgICAgIGxv
YWRwIDMyW3RlbXBdLCBjc3I0CisgICAgICAgICAgICBsb2FkcCA0MFt0ZW1wXSwgY3NyNQorICAg
ICAgICAgICAgbG9hZHAgNDhbdGVtcF0sIGNzcjYKKyAgICAgICAgICAgIGxvYWRwIDU2W3RlbXBd
LCBjc3I3CisgICAgICAgICAgICBsb2FkcCA2NFt0ZW1wXSwgY3NyOAorICAgICAgICAgICAgbG9h
ZHAgNzJbdGVtcF0sIGNzcjkKKyAgICAgICAgICAgIGxvYWRkIDgwW3RlbXBdLCBjc2ZyMAorICAg
ICAgICAgICAgbG9hZGQgODhbdGVtcF0sIGNzZnIxCisgICAgICAgICAgICBsb2FkZCA5Nlt0ZW1w
XSwgY3NmcjIKKyAgICAgICAgICAgIGxvYWRkIDEwNFt0ZW1wXSwgY3NmcjMKKyAgICAgICAgICAg
IGxvYWRkIDExMlt0ZW1wXSwgY3NmcjQKKyAgICAgICAgICAgIGxvYWRkIDEyMFt0ZW1wXSwgY3Nm
cjUKKyAgICAgICAgICAgIGxvYWRkIDEyOFt0ZW1wXSwgY3NmcjYKKyAgICAgICAgICAgIGxvYWRk
IDEzNlt0ZW1wXSwgY3NmcjcKKyAgICAgICAgZWxzaWYgWDg2XzY0CisgICAgICAgICAgICBsb2Fk
cCBbdGVtcF0sIGNzcjAKKyAgICAgICAgICAgIGxvYWRwIDhbdGVtcF0sIGNzcjEKKyAgICAgICAg
ICAgIGxvYWRwIDE2W3RlbXBdLCBjc3IyCisgICAgICAgICAgICBsb2FkcCAyNFt0ZW1wXSwgY3Ny
MworICAgICAgICAgICAgbG9hZHAgMzJbdGVtcF0sIGNzcjQKKyAgICAgICAgZWxzaWYgWDg2XzY0
X1dJTgorICAgICAgICAgICAgbG9hZHAgW3RlbXBdLCBjc3IwCisgICAgICAgICAgICBsb2FkcCA4
W3RlbXBdLCBjc3IxCisgICAgICAgICAgICBsb2FkcCAxNlt0ZW1wXSwgY3NyMgorICAgICAgICAg
ICAgbG9hZHAgMjRbdGVtcF0sIGNzcjMKKyAgICAgICAgICAgIGxvYWRwIDMyW3RlbXBdLCBjc3I0
CisgICAgICAgICAgICBsb2FkcCA0MFt0ZW1wXSwgY3NyNQorICAgICAgICAgICAgbG9hZHAgNDhb
dGVtcF0sIGNzcjYKKyAgICAgICAgZW5kCisgICAgZW5kCitlbmQKKwogbWFjcm8gcHJlc2VydmVS
ZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKGRlc3RpbmF0aW9uUmVnaXN0ZXIpCiAgICAgaWYgQ19MT09Q
IG9yIEFSTSBvciBBUk12NyBvciBBUk12N19UUkFESVRJT05BTCBvciBBUk02NCBvciBNSVBTIG9y
IFNINAogICAgICAgICAjIEluIENfTE9PUCBjYXNlLCB3ZSdyZSBvbmx5IHByZXNlcnZpbmcgdGhl
IGJ5dGVjb2RlIHZQQy4KQEAgLTU1NSwxNyArNjQ3LDYgQEAgbWFjcm8gcHJlc2VydmVSZXR1cm5B
ZGRyZXNzQWZ0ZXJDYWxsKGRlcwogICAgIGVuZAogZW5kCiAKLW1hY3JvIHJlc3RvcmVSZXR1cm5B
ZGRyZXNzQmVmb3JlUmV0dXJuKHNvdXJjZVJlZ2lzdGVyKQotICAgIGlmIENfTE9PUCBvciBBUk0g
b3IgQVJNdjcgb3IgQVJNdjdfVFJBRElUSU9OQUwgb3IgQVJNNjQgb3IgTUlQUyBvciBTSDQKLSAg
ICAgICAgIyBJbiBDX0xPT1AgY2FzZSwgd2UncmUgb25seSByZXN0b3JpbmcgdGhlIGJ5dGVjb2Rl
IHZQQy4KLSAgICAgICAgbW92ZSBzb3VyY2VSZWdpc3RlciwgbHIKLSAgICBlbHNpZiBYODYgb3Ig
WDg2X1dJTiBvciBYODZfNjQgb3IgWDg2XzY0X1dJTgotICAgICAgICBwdXNoIHNvdXJjZVJlZ2lz
dGVyCi0gICAgZWxzZQotICAgICAgICBlcnJvcgotICAgIGVuZAotZW5kCi0KIG1hY3JvIGZ1bmN0
aW9uUHJvbG9ndWUoKQogICAgIGlmIFg4NiBvciBYODZfV0lOIG9yIFg4Nl82NCBvciBYODZfNjRf
V0lOCiAgICAgICAgIHB1c2ggY2ZyCkBAIC03NjMsNiArODQ0LDggQEAgbWFjcm8gcHJvbG9ndWUo
Y29kZUJsb2NrR2V0dGVyLCBjb2RlQmxvYwogCiAgICAgY29kZUJsb2NrU2V0dGVyKHQxKQogCisg
ICAgcHJlc2VydmVDYWxsZWVTYXZlc1VzZWRCeUxMSW50KCkKKwogICAgICMgU2V0IHVwIHRoZSBQ
Qy4KICAgICBpZiBKU1ZBTFVFNjQKICAgICAgICAgbG9hZHAgQ29kZUJsb2NrOjptX2luc3RydWN0
aW9uc1t0MV0sIFBCCkBAIC03NzgsNyArODYxLDggQEAgbWFjcm8gcHJvbG9ndWUoY29kZUJsb2Nr
R2V0dGVyLCBjb2RlQmxvYwogICAgIGJwYmVxIFZNOjptX2pzU3RhY2tMaW1pdFt0Ml0sIHQwLCAu
c3RhY2tIZWlnaHRPSwogCiAgICAgIyBTdGFjayBoZWlnaHQgY2hlY2sgZmFpbGVkIC0gbmVlZCB0
byBjYWxsIGEgc2xvd19wYXRoLgotICAgIHN1YnAgbWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENh
bGwsIHNwICMgU2V0IHVwIHRlbXBvcmFyeSBzdGFjayBwb2ludGVyIGZvciBjYWxsCisgICAgIyBT
ZXQgdXAgdGVtcG9yYXJ5IHN0YWNrIHBvaW50ZXIgZm9yIGNhbGwgaW5jbHVkaW5nIGNhbGxlZSBz
YXZlcworICAgIHN1YnAgbWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwsIHNwCiAgICAgY2Fs
bFNsb3dQYXRoKF9sbGludF9zdGFja19jaGVjaykKICAgICBicGVxIHIxLCAwLCAuc3RhY2tIZWln
aHRPS0dldENvZGVCbG9jawogICAgIG1vdmUgcjEsIGNmcgpAQCAtNzkzLDYgKzg3NywxMSBAQCBt
YWNybyBwcm9sb2d1ZShjb2RlQmxvY2tHZXR0ZXIsIGNvZGVCbG9jCiAKIC5zdGFja0hlaWdodE9L
OgogICAgIG1vdmUgdDAsIHNwCisKKyAgICBpZiBKU1ZBTFVFNjQKKyAgICAgICAgbW92ZSBUYWdU
eXBlTnVtYmVyLCB0YWdUeXBlTnVtYmVyCisgICAgICAgIGFkZHAgVGFnQml0VHlwZU90aGVyLCB0
YWdUeXBlTnVtYmVyLCB0YWdNYXNrCisgICAgZW5kCiBlbmQKIAogIyBFeHBlY3RzIHRoYXQgQ29k
ZUJsb2NrIGlzIGluIHQxLCB3aGljaCBpcyB3aGF0IHByb2xvZ3VlKCkgbGVhdmVzIGJlaGluZC4K
QEAgLTg0OCw2ICs5MzcsNyBAQCBtYWNybyBhbGxvY2F0ZUpTT2JqZWN0KGFsbG9jYXRvciwgc3Ry
dWN0CiBlbmQKIAogbWFjcm8gZG9SZXR1cm4oKQorICAgIHJlc3RvcmVDYWxsZWVTYXZlc1VzZWRC
eUxMSW50KCkKICAgICByZXN0b3JlQ2FsbGVyUENBbmRDRlIoKQogICAgIHJldAogZW5kCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm02NC5yYgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm02NC5yYgkocmV2aXNpb24gMTg5
NTQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtNjQucmIJKHdvcmtp
bmcgY29weSkKQEAgLTYxLDYgKzYxLDE0IEBAIHJlcXVpcmUgInJpc2MiCiAjICBxMyAgPT4gZnQz
LCBmYTMKICMgIHE0ICA9PiBmdDQgICAgICAgICAgKHVudXNlZCBpbiBiYXNlbGluZSkKICMgIHE1
ICA9PiBmdDUgICAgICAgICAgKHVudXNlZCBpbiBiYXNlbGluZSkKKyMgIHE4ICA9PiBjc2ZyMCAg
ICAgICAgKE9ubHkgdGhlIGxvd2VyIDY0IGJpdHMpCisjICBxOSAgPT4gY3NmcjEgICAgICAgIChP
bmx5IHRoZSBsb3dlciA2NCBiaXRzKQorIyBxMTAgID0+IGNzZnIyICAgICAgICAoT25seSB0aGUg
bG93ZXIgNjQgYml0cykKKyMgcTExICA9PiBjc2ZyMyAgICAgICAgKE9ubHkgdGhlIGxvd2VyIDY0
IGJpdHMpCisjIHExMiAgPT4gY3NmcjQgICAgICAgIChPbmx5IHRoZSBsb3dlciA2NCBiaXRzKQor
IyBxMTMgID0+IGNzZnI1ICAgICAgICAoT25seSB0aGUgbG93ZXIgNjQgYml0cykKKyMgcTE0ICA9
PiBjc2ZyNiAgICAgICAgKE9ubHkgdGhlIGxvd2VyIDY0IGJpdHMpCisjIHExNSAgPT4gY3Nmcjcg
ICAgICAgIChPbmx5IHRoZSBsb3dlciA2NCBiaXRzKQogIyBxMzEgID0+IHNjcmF0Y2gKIAogZGVm
IGFybTY0R1BSTmFtZShuYW1lLCBraW5kKQpAQCAtMTE2LDEwICsxMjQsMjQgQEAgY2xhc3MgUmVn
aXN0ZXJJRAogICAgICAgICB3aGVuICdjZnInCiAgICAgICAgICAgICBhcm02NEdQUk5hbWUoJ3gy
OScsIGtpbmQpCiAgICAgICAgIHdoZW4gJ2NzcjAnCi0gICAgICAgICAgICBhcm02NEdQUk5hbWUo
J3gyNicsIGtpbmQpCisgICAgICAgICAgICBhcm02NEdQUk5hbWUoJ3gxOScsIGtpbmQpCiAgICAg
ICAgIHdoZW4gJ2NzcjEnCi0gICAgICAgICAgICBhcm02NEdQUk5hbWUoJ3gyNycsIGtpbmQpCisg
ICAgICAgICAgICBhcm02NEdQUk5hbWUoJ3gyMCcsIGtpbmQpCiAgICAgICAgIHdoZW4gJ2NzcjIn
CisgICAgICAgICAgICBhcm02NEdQUk5hbWUoJ3gyMScsIGtpbmQpCisgICAgICAgIHdoZW4gJ2Nz
cjMnCisgICAgICAgICAgICBhcm02NEdQUk5hbWUoJ3gyMicsIGtpbmQpCisgICAgICAgIHdoZW4g
J2NzcjQnCisgICAgICAgICAgICBhcm02NEdQUk5hbWUoJ3gyMycsIGtpbmQpCisgICAgICAgIHdo
ZW4gJ2NzcjUnCisgICAgICAgICAgICBhcm02NEdQUk5hbWUoJ3gyNCcsIGtpbmQpCisgICAgICAg
IHdoZW4gJ2NzcjYnCisgICAgICAgICAgICBhcm02NEdQUk5hbWUoJ3gyNScsIGtpbmQpCisgICAg
ICAgIHdoZW4gJ2NzcjcnCisgICAgICAgICAgICBhcm02NEdQUk5hbWUoJ3gyNicsIGtpbmQpCisg
ICAgICAgIHdoZW4gJ2NzcjgnCisgICAgICAgICAgICBhcm02NEdQUk5hbWUoJ3gyNycsIGtpbmQp
CisgICAgICAgIHdoZW4gJ2NzcjknCiAgICAgICAgICAgICBhcm02NEdQUk5hbWUoJ3gyOCcsIGtp
bmQpCiAgICAgICAgIHdoZW4gJ3NwJwogICAgICAgICAgICAgJ3NwJwpAQCAtMTQ2LDYgKzE2OCwy
MiBAQCBjbGFzcyBGUFJlZ2lzdGVySUQKICAgICAgICAgICAgIGFybTY0RlBSTmFtZSgncTQnLCBr
aW5kKQogICAgICAgICB3aGVuICdmdDUnCiAgICAgICAgICAgICBhcm02NEZQUk5hbWUoJ3E1Jywg
a2luZCkKKyAgICAgICAgd2hlbiAnY3NmcjAnCisgICAgICAgICAgICBhcm02NEZQUk5hbWUoJ3E4
Jywga2luZCkKKyAgICAgICAgd2hlbiAnY3NmcjEnCisgICAgICAgICAgICBhcm02NEZQUk5hbWUo
J3E5Jywga2luZCkKKyAgICAgICAgd2hlbiAnY3NmcjInCisgICAgICAgICAgICBhcm02NEZQUk5h
bWUoJ3ExMCcsIGtpbmQpCisgICAgICAgIHdoZW4gJ2NzZnIzJworICAgICAgICAgICAgYXJtNjRG
UFJOYW1lKCdxMTEnLCBraW5kKQorICAgICAgICB3aGVuICdjc2ZyNCcKKyAgICAgICAgICAgIGFy
bTY0RlBSTmFtZSgncTEyJywga2luZCkKKyAgICAgICAgd2hlbiAnY3NmcjUnCisgICAgICAgICAg
ICBhcm02NEZQUk5hbWUoJ3ExMycsIGtpbmQpCisgICAgICAgIHdoZW4gJ2NzZnI2JworICAgICAg
ICAgICAgYXJtNjRGUFJOYW1lKCdxMTQnLCBraW5kKQorICAgICAgICB3aGVuICdjc2ZyNycKKyAg
ICAgICAgICAgIGFybTY0RlBSTmFtZSgncTE1Jywga2luZCkKICAgICAgICAgZWxzZSAiQmFkIHJl
Z2lzdGVyIG5hbWUgI3tAbmFtZX0gYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIKICAgICAgICAgZW5k
CiAgICAgZW5kCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9yZWdpc3Rl
cnMucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcmVn
aXN0ZXJzLnJiCShyZXZpc2lvbiAxODk1NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2Zm
bGluZWFzbS9yZWdpc3RlcnMucmIJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDEwIEBAIEdQ
UlMgPQogICAgICAiY3NyMyIsCiAgICAgICJjc3I0IiwKICAgICAgImNzcjUiLAotICAgICAiY3Ny
NiIKKyAgICAgImNzcjYiLAorICAgICAiY3NyNyIsCisgICAgICJjc3I4IiwKKyAgICAgImNzcjki
CiAgICAgXQogCiBGUFJTID0KQEAgLTYzLDYgKzY2LDE0IEBAIEZQUlMgPQogICAgICAiZmExIiwK
ICAgICAgImZhMiIsCiAgICAgICJmYTMiLAorICAgICAiY3NmcjAiLAorICAgICAiY3NmcjEiLAor
ICAgICAiY3NmcjIiLAorICAgICAiY3NmcjMiLAorICAgICAiY3NmcjQiLAorICAgICAiY3NmcjUi
LAorICAgICAiY3NmcjYiLAorICAgICAiY3NmcjciLAogICAgICAiZnIiCiAgICAgXQogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiCShyZXZpc2lvbiAxODk1NDMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIJKHdvcmtpbmcgY29w
eSkKQEAgLTI5MCwxNCArMjkwLDEzIEBAIGNsYXNzIFJlZ2lzdGVySUQKICAgICAgICAgICAgIHdo
ZW4gImNzcjAiCiAgICAgICAgICAgICAgICAgImVieCIKICAgICAgICAgICAgIHdoZW4gImNzcjEi
Ci0gICAgICAgICAgICAgICAgInIxMiIKKyAgICAgICAgICAgICAgICBpc1dpbiA/ICJlc2kiIDog
InIxMiIKICAgICAgICAgICAgIHdoZW4gImNzcjIiCi0gICAgICAgICAgICAgICAgInIxMyIKKyAg
ICAgICAgICAgICAgICBpc1dpbiA/ICJlZGkiIDogInIxMyIKICAgICAgICAgICAgIHdoZW4gImNz
cjMiCi0gICAgICAgICAgICAgICAgaXNXaW4gPyAiZXNpIiA6ICJyMTQiCisgICAgICAgICAgICAg
ICAgaXNXaW4gPyAicjEyIiA6ICJyMTQiCiAgICAgICAgICAgICB3aGVuICJjc3I0IgotICAgICAg
ICAgICAgICAgIGlzV2luID8gImVkaSIgOiAicjE1IgotICAgICAgICAgICAgICAgICJyMTUiCisg
ICAgICAgICAgICAgICAgaXNXaW4gPyAicjEzIiA6ICJyMTUiCiAgICAgICAgICAgICB3aGVuICJj
c3I1IgogICAgICAgICAgICAgICAgIHJhaXNlICJjYW5ub3QgdXNlIHJlZ2lzdGVyICN7bmFtZX0g
b24gWDg2LTY0IiB1bmxlc3MgaXNXaW4KICAgICAgICAgICAgICAgICAicjE0IgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCShy
ZXZpc2lvbiAxODk1NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25T
bG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw2IEBACiAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJDb21tb25TbG93UGF0aHMuaCIKLSNpbmNsdWRlICJBcml0
eUNoZWNrRmFpbFJldHVyblRodW5rcy5oIgogI2luY2x1ZGUgIkFycmF5Q29uc3RydWN0b3IuaCIK
ICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJDbG9uZWRBcmd1bWVudHMuaCIKQEAg
LTE2NiwxNSArMTY1LDExIEBAIHN0YXRpYyBDb21tb25TbG93UGF0aHM6OkFyaXR5Q2hlY2tEYXRh
KiAKICAgICBDb21tb25TbG93UGF0aHM6OkFyaXR5Q2hlY2tEYXRhKiByZXN1bHQgPSB2bS5hcml0
eUNoZWNrRGF0YS5nZXQoKTsKICAgICByZXN1bHQtPnBhZGRlZFN0YWNrU3BhY2UgPSBzbG90c1Rv
QWRkOwogI2lmIEVOQUJMRShKSVQpCi0gICAgaWYgKHZtLmNhblVzZUpJVCgpKSB7CisgICAgaWYg
KHZtLmNhblVzZUpJVCgpKQogICAgICAgICByZXN1bHQtPnRodW5rVG9DYWxsID0gdm0uZ2V0Q1RJ
U3R1Yihhcml0eUZpeHVwR2VuZXJhdG9yKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKLSAg
ICAgICAgcmVzdWx0LT5yZXR1cm5QQyA9IHZtLmFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzLT5y
ZXR1cm5QQ0Zvcih2bSwgc2xvdHNUb0FkZCAqIHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCkpLmV4
ZWN1dGFibGVBZGRyZXNzKCk7Ci0gICAgfSBlbHNlCisgICAgZWxzZQogI2VuZGlmCi0gICAgewog
ICAgICAgICByZXN1bHQtPnRodW5rVG9DYWxsID0gMDsKLSAgICAgICAgcmVzdWx0LT5yZXR1cm5Q
QyA9IDA7Ci0gICAgfQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCShyZXZpc2lvbiAxODk1
NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAko
d29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNiBAQCBuYW1lc3BhY2UgQ29tbW9uU2xvd1BhdGhz
IHsKIHN0cnVjdCBBcml0eUNoZWNrRGF0YSB7CiAgICAgdW5zaWduZWQgcGFkZGVkU3RhY2tTcGFj
ZTsKICAgICB2b2lkKiB0aHVua1RvQ2FsbDsKLSAgICB2b2lkKiByZXR1cm5QQzsKIH07CiAKIEFM
V0FZU19JTkxJTkUgaW50IGFyaXR5Q2hlY2tGb3IoRXhlY1N0YXRlKiBleGVjLCBKU1N0YWNrKiBz
dGFjaywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmNwcAkocmV2aXNpb24gMTg5NTQzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw2IEBACiAjaW5j
bHVkZSAiVk0uaCIKIAogI2luY2x1ZGUgIkFyZ0xpc3QuaCIKLSNpbmNsdWRlICJBcml0eUNoZWNr
RmFpbFJldHVyblRodW5rcy5oIgogI2luY2x1ZGUgIkFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hw
b2ludC5oIgogI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgogI2luY2x1ZGUgIkNvZGVC
bG9jay5oIgpAQCAtNzcsNiArNzYsNyBAQAogI2luY2x1ZGUgIlByb3BlcnR5TWFwSGFzaFRhYmxl
LmgiCiAjaW5jbHVkZSAiUmVnRXhwQ2FjaGUuaCIKICNpbmNsdWRlICJSZWdFeHBPYmplY3QuaCIK
KyNpbmNsdWRlICJSZWdpc3RlckF0T2Zmc2V0TGlzdC5oIgogI2luY2x1ZGUgIlJ1bnRpbWVUeXBl
LmgiCiAjaW5jbHVkZSAiU2ltcGxlVHlwZWRBcnJheUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJT
b3VyY2VQcm92aWRlckNhY2hlLmgiCkBAIC0yNTMsNyArMjUzLDcgQEAgVk06OlZNKFZNVHlwZSB2
bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogCiAjaWYgRU5BQkxFKEpJVCkKICAgICBqaXRTdHVi
cyA9IHN0ZDo6bWFrZV91bmlxdWU8SklUVGh1bmtzPigpOwotICAgIGFyaXR5Q2hlY2tGYWlsUmV0
dXJuVGh1bmtzID0gc3RkOjptYWtlX3VuaXF1ZTxBcml0eUNoZWNrRmFpbFJldHVyblRodW5rcz4o
KTsKKyAgICBhbGxDYWxsZWVTYXZlUmVnaXN0ZXJPZmZzZXRzID0gc3RkOjptYWtlX3VuaXF1ZTxS
ZWdpc3RlckF0T2Zmc2V0TGlzdD4oUmVnaXN0ZXJTZXQ6OnZtQ2FsbGVlU2F2ZVJlZ2lzdGVycygp
LCBSZWdpc3RlckF0T2Zmc2V0TGlzdDo6WmVyb0Jhc2VkKTsKICNlbmRpZgogICAgIGFyaXR5Q2hl
Y2tEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxDb21tb25TbG93UGF0aHM6OkFyaXR5Q2hlY2tEYXRh
PigpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJldmlzaW9uIDE4OTU0
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMzLDYgKzMzLDkgQEAKICNpbmNsdWRlICJEYXRlSW5zdGFuY2VDYWNoZS5oIgogI2luY2x1
ZGUgIkV4ZWN1dGFibGVBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJGdW5jdGlvbkhhc0V4ZWN1dGVk
Q2FjaGUuaCIKKyNpZiBFTkFCTEUoSklUKQorI2luY2x1ZGUgIkdQUkluZm8uaCIKKyNlbmRpZgog
I2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJJbnRyaW5zaWMuaCIKICNpbmNsdWRlICJKSVRU
aHVua3MuaCIKQEAgLTcyLDcgKzc1LDYgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIEFy
aXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzOwogY2xhc3MgQnVpbHRpbkV4ZWN1dGFibGVzOwogY2xh
c3MgQ29kZUJsb2NrOwogY2xhc3MgQ29kZUNhY2hlOwpAQCAtOTAsNiArOTIsNyBAQCBjbGFzcyBM
TEludE9mZnNldHNFeHRyYWN0b3I7CiBjbGFzcyBMZWdhY3lQcm9maWxlcjsKIGNsYXNzIE5hdGl2
ZUV4ZWN1dGFibGU7CiBjbGFzcyBSZWdFeHBDYWNoZTsKK2NsYXNzIFJlZ2lzdGVyQXRPZmZzZXRM
aXN0OwogY2xhc3MgU2NyaXB0RXhlY3V0YWJsZTsKIGNsYXNzIFNvdXJjZVByb3ZpZGVyOwogY2xh
c3MgU291cmNlUHJvdmlkZXJDYWNoZTsKQEAgLTM1NywxNCArMzYwLDI2IEBAIHB1YmxpYzoKICAg
ICBTb3VyY2VQcm92aWRlckNhY2hlTWFwIHNvdXJjZVByb3ZpZGVyQ2FjaGVNYXA7CiAgICAgSW50
ZXJwcmV0ZXIqIGludGVycHJldGVyOwogI2lmIEVOQUJMRShKSVQpCisjaWYgTlVNQkVSX09GX0NB
TExFRV9TQVZFU19SRUdJU1RFUlMgPiAwCisgICAgaW50cHRyX3QgY2FsbGVlU2F2ZVJlZ2lzdGVy
c0J1ZmZlcltOVU1CRVJfT0ZfQ0FMTEVFX1NBVkVTX1JFR0lTVEVSU107CisKKyAgICBzdGF0aWMg
cHRyZGlmZl90IGNhbGxlZVNhdmVSZWdpc3RlcnNCdWZmZXJPZmZzZXQoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihWTSwgY2FsbGVlU2F2ZVJlZ2lzdGVyc0J1ZmZlcik7
CisgICAgfQorI2VuZGlmIC8vIE5VTUJFUl9PRl9DQUxMRUVfU0FWRVNfUkVHSVNURVJTID4gMAor
CiAgICAgc3RkOjp1bmlxdWVfcHRyPEpJVFRodW5rcz4gaml0U3R1YnM7CiAgICAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmIGdldENUSVN0dWIoVGh1bmtHZW5lcmF0b3IgZ2VuZXJhdG9yKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIGppdFN0dWJzLT5jdGlTdHViKHRoaXMsIGdlbmVyYXRvcik7CiAgICAg
fQogICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGdldEhvc3RGdW5jdGlvbihOYXRpdmVGdW5jdGlvbiwg
SW50cmluc2ljKTsKKyAgICAKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVnaXN0ZXJBdE9mZnNldExp
c3Q+IGFsbENhbGxlZVNhdmVSZWdpc3Rlck9mZnNldHM7CisgICAgCisgICAgUmVnaXN0ZXJBdE9m
ZnNldExpc3QqIGdldEFsbENhbGxlZVNhdmVSZWdpc3Rlck9mZnNldHMoKSB7IHJldHVybiBhbGxD
YWxsZWVTYXZlUmVnaXN0ZXJPZmZzZXRzLmdldCgpOyB9CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
QXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3M+IGFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzOwog
I2VuZGlmIC8vIEVOQUJMRShKSVQpCiAgICAgc3RkOjp1bmlxdWVfcHRyPENvbW1vblNsb3dQYXRo
czo6QXJpdHlDaGVja0RhdGE+IGFyaXR5Q2hlY2tEYXRhOwogI2lmIEVOQUJMRShGVExfSklUKQo=
</data>
<flag name="review"
          id="286073"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>