<?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>145610</bug_id>
          
          <creation_ts>2015-06-03 12:20:49 -0700</creation_ts>
          <short_desc>Object allocation sinking phase should sink NewArray and NewArrayBuffer</short_desc>
          <delta_ts>2015-06-15 15:33:50 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Basile Clement">basile_clement</reporter>
          <assigned_to name="Basile Clement">basile_clement</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1099210</commentid>
    <comment_count>0</comment_count>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-06-03 12:20:49 -0700</bug_when>
    <thetext>Allow sinking of NewArray and NewArrayBuffer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099223</commentid>
    <comment_count>1</comment_count>
      <attachid>254197</attachid>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-06-03 12:39:58 -0700</bug_when>
    <thetext>Created attachment 254197
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099227</commentid>
    <comment_count>2</comment_count>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-06-03 12:49:44 -0700</bug_when>
    <thetext>Benchmark looks good, except Kraken/audio-dft that seems to regress for some reason.

Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, JSRegress, AsmBench, and CompressionBench on Basiles-Mac-Pro (MacPro6,1).

VMs tested:
&quot;r185155&quot; at /Volumes/Data/secondary/OpenSource/WebKitBuild/Release/jsc
&quot;SinkNewArray&quot; at /Volumes/Data/secondary/OpenSource/WebKitBuild/SinkNewArray/Release/jsc

Collected 6 samples per benchmark/VM, with 6 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.

                                                         r185155                 SinkNewArray                                   
SunSpider:
   3d-cube                                            6.8622+-0.1667            6.8225+-0.0636        
   3d-morph                                           7.5643+-0.0574     ?      7.6480+-0.2879        ? might be 1.0111x slower
   3d-raytrace                                        8.4341+-0.0780     ?      8.4501+-0.1151        ?
   access-binary-trees                                3.0360+-0.1358            2.9825+-0.0988          might be 1.0179x faster
   access-fannkuch                                    7.9783+-0.0836     ?      8.0632+-0.1609        ? might be 1.0106x slower
   access-nbody                                       3.9947+-0.0177     ?      4.0244+-0.0382        ?
   access-nsieve                                      4.7198+-0.1487     ?      4.7310+-0.1320        ?
   bitops-3bit-bits-in-byte                           2.1392+-0.0241            2.1108+-0.0406          might be 1.0134x faster
   bitops-bits-in-byte                                4.7397+-0.0734            4.7328+-0.0355        
   bitops-bitwise-and                                 2.8522+-0.0314     ?      2.8536+-0.0310        ?
   bitops-nsieve-bits                                 4.1845+-0.0219     ?      4.2853+-0.3693        ? might be 1.0241x slower
   controlflow-recursive                              3.2451+-0.1568            3.1704+-0.0179          might be 1.0236x faster
   crypto-aes                                         6.3136+-0.1252            6.1613+-0.0501          might be 1.0247x faster
   crypto-md5                                         3.7916+-0.0366     ^      3.5629+-0.0652        ^ definitely 1.0642x faster
   crypto-sha1                                        3.4529+-0.0828            3.3988+-0.0392          might be 1.0159x faster
   date-format-tofte                                 12.3647+-0.4801     ?     12.3957+-0.1103        ?
   date-format-xparb                                  7.7714+-0.2859            7.7509+-0.1162        
   math-cordic                                        4.0865+-0.0601            4.0752+-0.0290        
   math-partial-sums                                  7.1614+-0.0752            7.0480+-0.0471          might be 1.0161x faster
   math-spectral-norm                                 2.6748+-0.0597     ?      2.6758+-0.0985        ?
   regexp-dna                                         9.8165+-0.0661     ?      9.9540+-0.2996        ? might be 1.0140x slower
   string-base64                                      6.5442+-0.0276            6.5169+-0.1634        
   string-fasta                                       8.6782+-0.0405     ?      8.7174+-0.1017        ?
   string-tagcloud                                   12.3016+-0.1617     ?     12.5777+-0.5154        ? might be 1.0224x slower
   string-unpack-code                                27.2416+-0.3766           27.1159+-0.3190        
   string-validate-input                              7.4090+-0.0774     ?      7.4229+-0.0780        ?

   &lt;arithmetic&gt;                                       6.8984+-0.0324            6.8942+-0.0244          might be 1.0006x faster

                                                         r185155                 SinkNewArray                                   
LongSpider:
   3d-cube                                         1180.5798+-2.9622     !   1191.5290+-7.1113        ! definitely 1.0093x slower
   3d-morph                                        2081.3701+-0.4751         2081.0582+-0.4247        
   3d-raytrace                                      953.7150+-2.8373     ?    955.7830+-4.3622        ?
   access-binary-trees                             1210.0076+-3.5877     ?   1210.3552+-2.8201        ?
   access-fannkuch                                  444.4542+-8.6395     ?    453.3019+-13.0334       ? might be 1.0199x slower
   access-nbody                                     848.1415+-0.5970     ^    846.3759+-0.4534        ^ definitely 1.0021x faster
   access-nsieve                                    554.9745+-0.9593     ?    555.6383+-1.4896        ?
   bitops-3bit-bits-in-byte                          61.8364+-0.4419     ?     62.1258+-0.2567        ?
   bitops-bits-in-byte                              123.5986+-3.1571          122.5666+-0.6548        
   bitops-nsieve-bits                               594.3241+-3.0174          591.9820+-1.6328        
   controlflow-recursive                            659.1727+-12.6604    ?    666.5913+-9.5695        ? might be 1.0113x slower
   crypto-aes                                       898.6050+-3.3536          898.3972+-3.3681        
   crypto-md5                                       710.3269+-5.1937     ?    711.0428+-3.3843        ?
   crypto-sha1                                      828.6254+-4.2009     ?    834.5878+-2.4966        ?
   date-format-tofte                                966.7680+-9.3101     !    992.2595+-6.8754        ! definitely 1.0264x slower
   date-format-xparb                               1070.6454+-42.3034        1028.8084+-13.3004         might be 1.0407x faster
   hash-map                                         236.5599+-3.3174          235.6975+-2.3918        
   math-cordic                                      803.0132+-0.6187     ?    803.6917+-1.3060        ?
   math-partial-sums                                689.4597+-3.3576          689.0725+-3.1986        
   math-spectral-norm                               766.1008+-0.7716     ?    766.4632+-0.2172        ?
   string-base64                                    513.6718+-0.3555     ^    511.6399+-0.7087        ^ definitely 1.0040x faster
   string-fasta                                     559.5537+-0.4761     !    565.3187+-2.3628        ! definitely 1.0103x slower
   string-tagcloud                                  263.3042+-2.0196          262.6153+-0.8484        

   &lt;geometric&gt;                                      598.2158+-0.9851     ?    598.9835+-1.0499        ? might be 1.0013x slower

                                                         r185155                 SinkNewArray                                   
V8Spider:
   crypto                                            69.0458+-0.9457     ^     67.9836+-0.0514        ^ definitely 1.0156x faster
   deltablue                                         93.3756+-1.4924     ?     94.3508+-1.8003        ? might be 1.0104x slower
   earley-boyer                                      59.9181+-0.5829           59.2413+-0.7433          might be 1.0114x faster
   raytrace                                          41.7720+-0.8691           41.3510+-0.4954          might be 1.0102x faster
   regexp                                           108.2910+-1.7223          107.9690+-0.4038        
   richards                                          97.4963+-0.5869           97.0130+-1.4301        
   splay                                             49.1567+-2.0878           47.6984+-2.3589          might be 1.0306x faster

   &lt;geometric&gt;                                       70.1582+-0.5878           69.5111+-0.3887          might be 1.0093x faster

                                                         r185155                 SinkNewArray                                   
Octane:
   encrypt                                           0.30651+-0.00087    ?     0.30670+-0.00067       ?
   decrypt                                           5.32186+-0.01387          5.30769+-0.03034       
   deltablue                                x2       0.26152+-0.00861          0.26062+-0.00764       
   earley                                            0.48246+-0.00557    ?     0.48260+-0.00183       ?
   boyer                                             6.82992+-0.01124          6.82751+-0.00806       
   navier-stokes                            x2       7.05322+-0.00104    ?     7.05587+-0.00759       ?
   raytrace                                 x2       1.58014+-0.06300    ?     1.62115+-0.04953       ? might be 1.0260x slower
   richards                                 x2       0.16904+-0.00125          0.16836+-0.00102       
   splay                                    x2       0.47948+-0.00434    ?     0.48175+-0.00289       ?
   regexp                                   x2      40.30693+-0.10648    ^    40.09709+-0.03883       ^ definitely 1.0052x faster
   pdfjs                                    x2      56.33257+-0.18364    ^    55.97771+-0.11080       ^ definitely 1.0063x faster
   mandreel                                 x2      70.30266+-0.60227         70.17787+-0.17855       
   gbemu                                    x2      60.07628+-0.40360    ?    60.29855+-0.94238       ?
   closure                                           0.82770+-0.00434    ^     0.79560+-0.00205       ^ definitely 1.0403x faster
   jquery                                           10.54652+-0.04268    ^    10.17237+-0.06325       ^ definitely 1.0368x faster
   box2d                                    x2      17.72591+-0.03080         17.70808+-0.06723       
   zlib                                     x2     524.01217+-1.06646    ?   524.36111+-1.61727       ?
   typescript                               x2    1088.86519+-17.17017      1082.00688+-23.56197      

   &lt;geometric&gt;                                       8.83795+-0.04277          8.81924+-0.01972         might be 1.0021x faster

                                                         r185155                 SinkNewArray                                   
Kraken:
   ai-astar                                          416.164+-5.776      ?     417.480+-7.920         ?
   audio-beat-detection                              142.461+-1.229      ?     142.518+-0.846         ?
   audio-dft                                         149.814+-0.376      !     152.483+-2.032         ! definitely 1.0178x slower
   audio-fft                                         109.522+-3.532            107.672+-0.468           might be 1.0172x faster
   audio-oscillator                                   97.975+-0.880             97.540+-0.083         
   imaging-darkroom                                  140.212+-0.089      !     140.616+-0.254         ! definitely 1.0029x slower
   imaging-desaturate                                 87.364+-0.252      ?      87.566+-0.338         ?
   imaging-gaussian-blur                             147.139+-0.681      ?     149.668+-6.378         ? might be 1.0172x slower
   json-parse-financial                               63.250+-0.496             63.108+-0.356         
   json-stringify-tinderbox                           38.362+-0.684             38.299+-0.056         
   stanford-crypto-aes                                75.765+-0.655             75.699+-1.005         
   stanford-crypto-ccm                                64.245+-2.952             63.826+-1.400         
   stanford-crypto-pbkdf2                            145.343+-1.352      ?     145.983+-1.248         ?
   stanford-crypto-sha256-iterative                   56.637+-0.300      ?      57.086+-0.912         ?

   &lt;arithmetic&gt;                                      123.875+-0.913      ?     124.253+-0.507         ? might be 1.0031x slower

                                                         r185155                 SinkNewArray                                   
JSRegress:
   abs-boolean                                        3.4892+-0.0463            3.4690+-0.0420        
   adapt-to-double-divide                            21.8505+-0.2191     ?     21.8683+-0.7134        ?
   aliased-arguments-getbyval                         1.7873+-0.2078            1.7520+-0.0799          might be 1.0201x faster
   allocate-big-object                                3.3056+-0.0384     ?      3.3331+-0.1480        ?
   arguments-named-and-reflective                    14.7899+-0.2642     ?     15.2091+-0.3104        ? might be 1.0283x slower
   arguments-out-of-bounds                           19.1665+-0.2589           19.0792+-0.0327        
   arguments-strict-mode                             12.9889+-0.5213           12.9550+-0.3873        
   arguments                                         11.4373+-0.1382           11.2899+-0.2179          might be 1.0131x faster
   arity-mismatch-inlining                            1.2028+-0.0320     ?      1.2133+-0.0292        ?
   array-access-polymorphic-structure                 8.3097+-0.0536     ?      8.4573+-0.2501        ? might be 1.0178x slower
   array-nonarray-polymorhpic-access                 43.0949+-0.4283           42.8983+-0.5122        
   array-prototype-every                            108.5796+-0.2128          108.4701+-0.4131        
   array-prototype-forEach                          106.3185+-0.5778     !    107.8065+-0.6784        ! definitely 1.0140x slower
   array-prototype-map                              117.9091+-0.5048     ?    118.8726+-0.6299        ?
   array-prototype-reduce                           102.9709+-0.5664     ?    103.5614+-1.3385        ?
   array-prototype-reduceRight                      107.4561+-11.9641         102.9720+-0.5623          might be 1.0435x faster
   array-prototype-some                             108.9790+-1.2660          108.9102+-0.6111        
   array-splice-contiguous                           55.1587+-0.7529     ?     55.8205+-0.5866        ? might be 1.0120x slower
   array-with-double-add                              5.3809+-0.0318            5.3694+-0.0556        
   array-with-double-increment                        4.2922+-0.0601            4.2568+-0.0224        
   array-with-double-mul-add                          6.6361+-0.0455     ?      6.7821+-0.2737        ? might be 1.0220x slower
   array-with-double-sum                              4.3939+-0.2201            4.2657+-0.0255          might be 1.0301x faster
   array-with-int32-add-sub                           8.6269+-0.0329     ?      8.7515+-0.1831        ? might be 1.0144x slower
   array-with-int32-or-double-sum                     4.3400+-0.0375     ?      4.3488+-0.0280        ?
   ArrayBuffer-DataView-alloc-large-long-lived   
                                                     43.8085+-0.3293     ?     45.0854+-0.9872        ? might be 1.0291x slower
   ArrayBuffer-DataView-alloc-long-lived             18.4312+-0.1766     ?     18.4651+-0.4173        ?
   ArrayBuffer-Int32Array-byteOffset                  5.0875+-0.0480     ?      5.2563+-0.4738        ? might be 1.0332x slower
   ArrayBuffer-Int8Array-alloc-large-long-lived   
                                                     48.6716+-1.5718           48.1833+-2.0897          might be 1.0101x faster
   ArrayBuffer-Int8Array-alloc-long-lived-buffer   
                                                     29.0753+-0.2541     ?     30.4884+-2.3432        ? might be 1.0486x slower
   ArrayBuffer-Int8Array-alloc-long-lived            17.2108+-0.0657     ?     18.4673+-1.8881        ? might be 1.0730x slower
   ArrayBuffer-Int8Array-alloc                       13.4367+-0.1224           13.4179+-0.2423        
   asmjs_bool_bug                                     9.9940+-0.0888     ?     10.0876+-0.1479        ?
   assign-custom-setter-polymorphic                   4.5039+-0.2272     ^      4.0906+-0.0473        ^ definitely 1.1010x faster
   assign-custom-setter                               6.1237+-0.2397     ^      5.6071+-0.0307        ^ definitely 1.0921x faster
   basic-set                                         12.2149+-0.2281     ?     12.2424+-0.1688        ?
   big-int-mul                                        5.1993+-0.0280     ?      5.2424+-0.0457        ?
   boolean-test                                       3.9935+-0.0313     ?      4.0054+-0.0345        ?
   branch-fold                                        5.0721+-0.2566            4.9532+-0.0388          might be 1.0240x faster
   branch-on-string-as-boolean                       25.6517+-0.5425           25.3355+-0.3522          might be 1.0125x faster
   by-val-generic                                    10.2267+-0.1785     ?     10.2913+-0.2004        ?
   call-spread-apply                                 43.9075+-0.7217     ^     38.4023+-0.7471        ^ definitely 1.1434x faster
   call-spread-call                                  34.9072+-1.3053           32.4992+-1.2681          might be 1.0741x faster
   captured-assignments                               0.7099+-0.0300     ?      0.7294+-0.0355        ? might be 1.0274x slower
   cast-int-to-double                                 6.7537+-0.0459            6.7464+-0.0438        
   cell-argument                                     10.7102+-0.1471     ?     10.8335+-0.2823        ? might be 1.0115x slower
   cfg-simplify                                       3.7094+-0.0706            3.6839+-0.0418        
   chain-getter-access                               12.0602+-0.1730           11.9431+-0.1592        
   cmpeq-obj-to-obj-other                            12.5204+-0.0996     ?     12.5601+-0.2339        ?
   constant-test                                      6.3764+-0.0476     ?      6.3899+-0.1232        ?
   create-lots-of-functions                          13.5106+-0.1626     ?     13.6611+-0.3292        ? might be 1.0111x slower
   cse-new-array-buffer                              20.9000+-0.2820     ^      9.0685+-0.0528        ^ definitely 2.3047x faster
   cse-new-array                                     21.7758+-0.6473     ^     10.2520+-0.3322        ^ definitely 2.1241x faster
   DataView-custom-properties                        51.4642+-0.3326     ?     53.4373+-1.9094        ? might be 1.0383x slower
   deconstructing-parameters-overridden-by-function   
                                                      0.8230+-0.0777            0.8042+-0.0297          might be 1.0233x faster
   delay-tear-off-arguments-strictmode               18.7885+-0.1827     ^     17.9836+-0.3977        ^ definitely 1.0448x faster
   deltablue-varargs                                275.9174+-10.5111         273.5146+-7.9299        
   destructuring-arguments                           21.4673+-0.6926           21.1427+-0.2381          might be 1.0154x faster
   destructuring-swap                                 6.5738+-0.1143     ?      6.6621+-0.2976        ? might be 1.0134x slower
   direct-arguments-getbyval                          1.7348+-0.0566     ?      1.7430+-0.1097        ?
   div-boolean-double                                 6.6791+-0.0186     ?      6.6887+-0.0060        ?
   div-boolean                                       10.0332+-0.0217           10.0293+-0.0188        
   double-get-by-val-out-of-bounds                    5.6527+-0.2083            5.6431+-0.1846        
   double-pollution-getbyval                         11.5264+-0.2644           11.4715+-0.0308        
   double-pollution-putbyoffset                       5.5224+-0.0596            5.5095+-0.0771        
   double-to-int32-typed-array-no-inline              2.9791+-0.0418            2.9618+-0.0544        
   double-to-int32-typed-array                        2.6241+-0.0483     ?      2.6497+-0.0410        ?
   double-to-uint32-typed-array-no-inline             3.0038+-0.0477     ?      3.0246+-0.0878        ?
   double-to-uint32-typed-array                       2.7305+-0.0633            2.6921+-0.0647          might be 1.0143x faster
   elidable-new-object-dag                           51.4230+-1.4776     ?     51.8464+-0.6294        ?
   elidable-new-object-roflcopter                    53.1587+-0.7393     ?     53.2649+-0.7540        ?
   elidable-new-object-then-call                     46.4349+-2.2382     ?     48.1708+-0.9522        ? might be 1.0374x slower
   elidable-new-object-tree                          54.3972+-1.1790     ?     54.4475+-1.3752        ?
   empty-string-plus-int                              6.8987+-0.0683            6.8841+-0.0728        
   emscripten-cube2hash                              48.9580+-0.2771           48.9501+-0.8944        
   exit-length-on-plain-object                       17.8538+-0.5472           17.7239+-0.2269        
   external-arguments-getbyval                        1.6809+-0.1055     ?      1.6943+-0.0954        ?
   external-arguments-putbyval                        3.0477+-0.0714     ?      3.0983+-0.0592        ? might be 1.0166x slower
   fixed-typed-array-storage-var-index                1.6677+-0.0832     ?      1.6788+-0.0661        ?
   fixed-typed-array-storage                          1.2812+-0.1155            1.2338+-0.0291          might be 1.0384x faster
   Float32Array-matrix-mult                           5.9377+-0.0530     ?      5.9436+-0.0390        ?
   Float32Array-to-Float64Array-set                  70.0961+-1.0564           69.4597+-0.9350        
   Float64Array-alloc-long-lived                    103.2985+-1.0428          102.7408+-1.0077        
   Float64Array-to-Int16Array-set                    92.7090+-0.8456           92.6434+-0.7364        
   fold-double-to-int                                18.4393+-0.1496           18.2979+-0.0471        
   fold-get-by-id-to-multi-get-by-offset-rare-int   
                                                     10.0674+-0.1765            9.9805+-0.0747        
   fold-get-by-id-to-multi-get-by-offset              9.0889+-0.4879     ?      9.1374+-0.5538        ?
   fold-multi-get-by-offset-to-get-by-offset   
                                                      7.8554+-0.7968     ?      8.2314+-0.6733        ? might be 1.0479x slower
   fold-multi-get-by-offset-to-poly-get-by-offset   
                                                      8.3231+-0.5377     ?      8.5517+-0.4332        ? might be 1.0275x slower
   fold-multi-put-by-offset-to-poly-put-by-offset   
                                                      7.8621+-0.4952            7.8543+-0.4146        
   fold-multi-put-by-offset-to-put-by-offset   
                                                      5.5053+-0.6241            5.2851+-0.6708          might be 1.0417x faster
   fold-multi-put-by-offset-to-replace-or-transition-put-by-offset   
                                                     12.1678+-0.9064     ?     12.4644+-0.6222        ? might be 1.0244x slower
   fold-put-by-id-to-multi-put-by-offset              8.6897+-0.0841            8.4458+-0.3973          might be 1.0289x faster
   fold-put-structure                                 5.8218+-0.4522            5.7798+-0.7953        
   for-of-iterate-array-entries                       5.6194+-0.0706     ?      5.6468+-0.0975        ?
   for-of-iterate-array-keys                          4.9690+-0.4716            4.9459+-0.5453        
   for-of-iterate-array-values                        4.7225+-0.2655            4.6182+-0.1183          might be 1.0226x faster
   fround                                            26.5612+-0.6416           26.3667+-0.2342        
   ftl-library-inlining-dataview                     95.5096+-9.0938           88.5484+-1.1060          might be 1.0786x faster
   ftl-library-inlining                              89.7212+-0.5472     ?    106.6564+-27.1422       ? might be 1.1888x slower
   function-dot-apply                                 2.9176+-0.0445            2.9074+-0.0383        
   function-test                                      3.7559+-0.0594     ?      3.7589+-0.0241        ?
   function-with-eval                               129.8562+-0.5314          128.7255+-1.8995        
   gcse-poly-get-less-obvious                        27.8376+-2.1575     ?     27.9579+-2.8888        ?
   gcse-poly-get                                     31.3446+-4.0518     ?     32.1906+-5.6046        ? might be 1.0270x slower
   gcse                                               5.6820+-0.0339     ?      5.7000+-0.1131        ?
   get-by-id-bimorphic-check-structure-elimination-simple   
                                                      3.5837+-0.0648            3.5811+-0.0537        
   get-by-id-bimorphic-check-structure-elimination   
                                                      7.8982+-0.1886     ?      7.9038+-0.0925        ?
   get-by-id-chain-from-try-block                     8.9340+-0.0243     !      9.0391+-0.0360        ! definitely 1.0118x slower
   get-by-id-check-structure-elimination              6.9232+-0.6561            6.6763+-0.0325          might be 1.0370x faster
   get-by-id-proto-or-self                           25.0811+-2.5145           24.2387+-2.6489          might be 1.0348x faster
   get-by-id-quadmorphic-check-structure-elimination-simple   
                                                      3.8313+-0.0329     ?      3.8585+-0.0655        ?
   get-by-id-self-or-proto                           24.2371+-0.9223           23.5535+-0.9474          might be 1.0290x faster
   get-by-val-out-of-bounds                           5.3849+-0.1281     ?      5.5270+-0.2944        ? might be 1.0264x slower
   get_callee_monomorphic                             3.1998+-0.1049     ?      3.2351+-0.0683        ? might be 1.0111x slower
   get_callee_polymorphic                             4.6675+-0.1021            4.6513+-0.1210        
   getter-no-activation                               6.1731+-0.0256            6.1679+-0.0432        
   getter-richards                                  123.3070+-2.7623          122.9559+-3.7203        
   getter                                             6.8438+-0.0387     ?      6.8686+-0.0376        ?
   global-var-const-infer-fire-from-opt               1.3358+-0.1105     ?      1.4290+-0.1058        ? might be 1.0698x slower
   global-var-const-infer                             1.2537+-0.1650            1.1836+-0.1181          might be 1.0593x faster
   HashMap-put-get-iterate-keys                      33.0585+-0.4640           32.8571+-0.2407        
   HashMap-put-get-iterate                           32.2993+-0.2182     ?     32.4017+-0.2613        ?
   HashMap-string-put-get-iterate                    36.5535+-0.4461     ?     36.6653+-1.1267        ?
   hoist-make-rope                                   15.3127+-1.1930     ?     15.7286+-0.6152        ? might be 1.0272x slower
   hoist-poly-check-structure-effectful-loop   
                                                      6.6027+-0.3288            6.4907+-0.0208          might be 1.0172x faster
   hoist-poly-check-structure                         4.8132+-0.0492            4.7863+-0.0592        
   imul-double-only                                   9.4972+-0.1545            9.4456+-0.1321        
   imul-int-only                                     12.1392+-0.4200           12.1324+-0.4059        
   imul-mixed                                        10.0254+-0.1345            9.8722+-0.3970          might be 1.0155x faster
   in-four-cases                                     28.1958+-0.2244     ?     28.5259+-0.6553        ? might be 1.0117x slower
   in-one-case-false                                 14.1324+-0.0512           14.1298+-0.0413        
   in-one-case-true                                  14.1755+-0.0237           14.1388+-0.0179        
   in-two-cases                                      14.9531+-0.0932     ?     15.0164+-0.2598        ?
   indexed-properties-in-objects                      3.8127+-0.0269     ^      3.7692+-0.0156        ^ definitely 1.0115x faster
   infer-closure-const-then-mov-no-inline             5.0698+-0.0535     !      5.1614+-0.0344        ! definitely 1.0181x slower
   infer-closure-const-then-mov                      25.6770+-0.2132     ?     25.6821+-0.2190        ?
   infer-closure-const-then-put-to-scope-no-inline   
                                                     16.5661+-0.2553     ?     16.5923+-0.2362        ?
   infer-closure-const-then-put-to-scope             28.4413+-0.5745     !     30.0090+-0.9480        ! definitely 1.0551x slower
   infer-closure-const-then-reenter-no-inline   
                                                     72.9990+-1.1998           72.6307+-0.9516        
   infer-closure-const-then-reenter                  29.6882+-1.2418     ?     30.2356+-1.2074        ? might be 1.0184x slower
   infer-constant-global-property                     4.6156+-0.0354     ?      4.6202+-0.0328        ?
   infer-constant-property                            3.5407+-0.0432     ?      3.5725+-0.1075        ?
   infer-one-time-closure-ten-vars                   15.9163+-0.3909           15.7830+-0.1931        
   infer-one-time-closure-two-vars                   15.4420+-0.2775           15.1517+-0.1757          might be 1.0192x faster
   infer-one-time-closure                            14.9883+-0.0827     ?     15.1425+-0.0931        ? might be 1.0103x slower
   infer-one-time-deep-closure                       26.9846+-0.2190     ?     27.1479+-0.3966        ?
   inline-arguments-access                            5.4659+-0.1973            5.3656+-0.0779          might be 1.0187x faster
   inline-arguments-aliased-access                    5.3702+-0.1532     ?      5.4185+-0.2550        ?
   inline-arguments-local-escape                      5.5412+-0.2324            5.3628+-0.0997          might be 1.0333x faster
   inline-get-scoped-var                              6.1215+-0.0707            6.0720+-0.0334        
   inlined-put-by-id-transition                      13.7260+-0.4080     ?     13.9829+-0.4944        ? might be 1.0187x slower
   int-or-other-abs-then-get-by-val                   6.3630+-0.0343     ?      6.4238+-0.1685        ?
   int-or-other-abs-zero-then-get-by-val             23.6810+-0.0779     ^     23.1745+-0.3138        ^ definitely 1.0219x faster
   int-or-other-add-then-get-by-val                   5.5165+-0.0310     ?      5.7459+-0.5335        ? might be 1.0416x slower
   int-or-other-add                                   6.8497+-0.0583     ?      6.9033+-0.0459        ?
   int-or-other-div-then-get-by-val                   5.4464+-0.0373     ?      5.4654+-0.0178        ?
   int-or-other-max-then-get-by-val                   5.5685+-0.0254            5.5592+-0.0220        
   int-or-other-min-then-get-by-val                   5.6005+-0.0639     ?      5.6689+-0.1365        ? might be 1.0122x slower
   int-or-other-mod-then-get-by-val                   5.0822+-0.0170            5.0535+-0.0201        
   int-or-other-mul-then-get-by-val                   5.0727+-0.0316            5.0508+-0.0504        
   int-or-other-neg-then-get-by-val                   6.1343+-0.0305     ?      6.1569+-0.0711        ?
   int-or-other-neg-zero-then-get-by-val             23.7402+-0.7589           23.4658+-0.2961          might be 1.0117x faster
   int-or-other-sub-then-get-by-val                   5.5549+-0.0560     ?      5.5727+-0.0634        ?
   int-or-other-sub                                   4.6130+-0.0327     ?      4.6516+-0.0476        ?
   int-overflow-local                                 5.8180+-0.0166            5.8058+-0.0118        
   Int16Array-alloc-long-lived                       63.6807+-0.8409           63.1632+-0.6943        
   Int16Array-bubble-sort-with-byteLength            25.4237+-0.2026     ?     25.8194+-0.6979        ? might be 1.0156x slower
   Int16Array-bubble-sort                            26.3307+-0.1727     ?     26.3917+-0.1895        ?
   Int16Array-load-int-mul                            2.0225+-0.0153     ?      2.1001+-0.1673        ? might be 1.0384x slower
   Int16Array-to-Int32Array-set                      68.6027+-0.6332           67.7814+-0.5480          might be 1.0121x faster
   Int32Array-alloc-large                            24.3733+-1.2038     ?     24.4484+-1.1706        ?
   Int32Array-alloc-long-lived                       75.0006+-0.8041     ?     75.2477+-1.3906        ?
   Int32Array-alloc                                   3.5046+-0.2319            3.3920+-0.0661          might be 1.0332x faster
   Int32Array-Int8Array-view-alloc                    8.6304+-0.2928     ?      8.7489+-0.6823        ? might be 1.0137x slower
   int52-spill                                        7.5137+-0.3714            7.3816+-0.0575          might be 1.0179x faster
   Int8Array-alloc-long-lived                        57.4707+-0.7637           56.8752+-0.5802          might be 1.0105x faster
   Int8Array-load-with-byteLength                     4.3846+-0.0350     ?      4.4207+-0.0584        ?
   Int8Array-load                                     4.4207+-0.0195            4.4002+-0.0245        
   integer-divide                                    14.3361+-0.0494     ?     14.4061+-0.1018        ?
   integer-modulo                                     2.7517+-0.0558            2.7308+-0.0643        
   is-boolean-fold-tricky                             5.8173+-0.1436            5.7792+-0.0425        
   is-boolean-fold                                    3.7369+-0.0545            3.6495+-0.0354          might be 1.0239x faster
   is-function-fold-tricky-internal-function   
                                                     15.6886+-0.1043     ^     15.4932+-0.0716        ^ definitely 1.0126x faster
   is-function-fold-tricky                            5.9687+-0.1558            5.9330+-0.0691        
   is-function-fold                                   3.7815+-0.0358            3.7358+-0.0651          might be 1.0122x faster
   is-number-fold-tricky                              5.7958+-0.0471            5.7579+-0.0240        
   is-number-fold                                     3.7417+-0.0463            3.7399+-0.0505        
   is-object-or-null-fold-functions                   3.9548+-0.3222            3.8227+-0.0607          might be 1.0346x faster
   is-object-or-null-fold-less-tricky                 5.8680+-0.0255     ?      5.9270+-0.1405        ? might be 1.0100x slower
   is-object-or-null-fold-tricky                      8.5057+-0.0858            8.4736+-0.0385        
   is-object-or-null-fold                             3.7734+-0.0454            3.7570+-0.0400        
   is-object-or-null-trickier-function                6.0144+-0.0264     ?      6.0350+-0.0538        ?
   is-object-or-null-trickier-internal-function   
                                                     16.8421+-0.0339     ^     16.4623+-0.0330        ^ definitely 1.0231x faster
   is-object-or-null-tricky-function                  5.9810+-0.1085     ?      6.0732+-0.2023        ? might be 1.0154x slower
   is-object-or-null-tricky-internal-function   
                                                     12.2328+-0.0202     ?     12.2522+-0.0828        ?
   is-string-fold-tricky                              5.7647+-0.0262     ?      6.0591+-0.3228        ? might be 1.0511x slower
   is-string-fold                                     3.6895+-0.0367     ?      3.7238+-0.0497        ?
   is-undefined-fold-tricky                           4.9314+-0.2643            4.9153+-0.1633        
   is-undefined-fold                                  3.7170+-0.0210            3.6946+-0.0396        
   large-int-captured                                 5.4628+-0.1481     ?      5.5299+-0.2017        ? might be 1.0123x slower
   large-int-neg                                     21.2181+-0.2636     ?     21.2758+-0.1941        ?
   large-int                                         19.6565+-0.3036     ?     19.7620+-0.3202        ?
   load-varargs-elimination                          32.4157+-0.3085           32.2959+-0.2295        
   logical-not-weird-types                            4.2494+-0.0408     ?      4.2578+-0.0310        ?
   logical-not                                        5.9244+-0.1556            5.8639+-0.1039          might be 1.0103x faster
   lots-of-fields                                    16.4158+-0.5129           16.0699+-0.2332          might be 1.0215x faster
   make-indexed-storage                               4.0931+-0.0560            3.9515+-0.3795          might be 1.0358x faster
   make-rope-cse                                     14.7476+-0.2154           14.7109+-0.1417        
   marsaglia-larger-ints                             52.3750+-0.4022           52.3538+-0.2899        
   marsaglia-osr-entry                               29.4667+-0.2653           29.4302+-0.3340        
   math-with-out-of-bounds-array-values              33.7806+-0.5485     ^     32.1107+-0.0738        ^ definitely 1.0520x faster
   max-boolean                                        3.2322+-0.0190     ?      3.2623+-0.0927        ?
   method-on-number                                  22.6702+-0.2787     ?     22.9014+-0.8668        ? might be 1.0102x slower
   min-boolean                                        3.2937+-0.1580            3.2465+-0.0402          might be 1.0145x faster
   minus-boolean-double                               4.1201+-0.0243     ?      4.1408+-0.0196        ?
   minus-boolean                                      3.1632+-0.2351            3.0517+-0.0252          might be 1.0365x faster
   misc-strict-eq                                    52.1984+-3.4962           50.5047+-1.4675          might be 1.0335x faster
   mod-boolean-double                                14.2016+-0.1360           14.1991+-0.0440        
   mod-boolean                                       10.0769+-0.0128     ?     10.0849+-0.0321        ?
   mul-boolean-double                                 4.8166+-0.0147     ?      4.8615+-0.0626        ?
   mul-boolean                                        3.7712+-0.0453            3.7511+-0.0275        
   neg-boolean                                        4.1464+-0.0537            4.1411+-0.0160        
   negative-zero-divide                               0.5791+-0.0554            0.5621+-0.0188          might be 1.0304x faster
   negative-zero-modulo                               0.5522+-0.0417     ?      0.5787+-0.0276        ? might be 1.0481x slower
   negative-zero-negate                               0.5546+-0.0454            0.5086+-0.0273          might be 1.0903x faster
   nested-function-parsing                           50.3312+-0.7221           49.9071+-0.5603        
   new-array-buffer-dead                            123.8398+-0.4526     ^     52.6320+-0.8296        ^ definitely 2.3529x faster
   new-array-buffer-push                              8.2305+-0.0736     ?      8.3007+-0.2270        ?
   new-array-dead                                    23.2309+-0.5933           22.7325+-0.7434          might be 1.0219x faster
   new-array-push                                     7.8534+-0.1534     ?      7.9275+-0.1522        ?
   no-inline-constructor                             48.6307+-0.3572           48.4940+-0.3584        
   number-test                                        3.9592+-0.0387     ?      3.9812+-0.0520        ?
   object-closure-call                                7.2613+-0.0357     ?      7.2722+-0.0682        ?
   object-test                                        3.7173+-0.0345     ?      3.7294+-0.1268        ?
   obvious-sink-pathology-taken                     152.2159+-1.5034     ?    152.6471+-1.5523        ?
   obvious-sink-pathology                           141.9209+-0.7704          141.6438+-0.7475        
   obviously-elidable-new-object                     41.8191+-0.7070     ?     42.0721+-0.5702        ?
   plus-boolean-arith                                 3.2892+-0.0210            3.2602+-0.0248        
   plus-boolean-double                                4.2255+-0.1820            4.1629+-0.0325          might be 1.0151x faster
   plus-boolean                                       3.1326+-0.0120     ?      3.1525+-0.0267        ?
   poly-chain-access-different-prototypes-simple   
                                                      4.2753+-0.0225     ?      4.3030+-0.0426        ?
   poly-chain-access-different-prototypes             3.3281+-0.0287     ?      3.3733+-0.0236        ? might be 1.0136x slower
   poly-chain-access-simpler                          4.2824+-0.0281     ?      4.3068+-0.0387        ?
   poly-chain-access                                  3.3586+-0.0260            3.3468+-0.0381        
   poly-stricteq                                     79.5319+-0.5082           79.4462+-0.1757        
   polymorphic-array-call                             1.8417+-0.1135     ?      1.8877+-0.0567        ? might be 1.0250x slower
   polymorphic-get-by-id                              4.0570+-0.0418            4.0460+-0.0566        
   polymorphic-put-by-id                             38.4915+-1.3388     ?     39.6918+-3.4424        ? might be 1.0312x slower
   polymorphic-structure                             19.7120+-0.2738           19.6422+-0.1765        
   polyvariant-monomorphic-get-by-id                 11.0590+-0.0777           11.0278+-0.0508        
   proto-getter-access                               11.9693+-0.1766           11.8590+-0.0663        
   put-by-id-replace-and-transition                  12.0683+-0.2976           11.9072+-0.4183          might be 1.0135x faster
   put-by-id-slightly-polymorphic                     3.6973+-0.0347     ?      3.7028+-0.0309        ?
   put-by-id                                         14.8794+-0.2184     ?     15.0537+-0.2892        ? might be 1.0117x slower
   put-by-val-direct                                  0.5586+-0.0345     ?      0.5735+-0.0175        ? might be 1.0267x slower
   put-by-val-large-index-blank-indexing-type   
                                                     15.4264+-0.6247           14.9988+-0.1954          might be 1.0285x faster
   put-by-val-machine-int                             3.4751+-0.1156            3.3650+-0.0690          might be 1.0327x faster
   rare-osr-exit-on-local                            19.4674+-0.0714     ?     19.6543+-0.1370        ?
   register-pressure-from-osr                        28.2229+-0.0347     ?     28.4599+-0.4253        ?
   repeat-multi-get-by-offset                        32.1820+-0.0292     ?     32.2459+-0.1762        ?
   setter                                             6.8373+-0.0280     ?      6.8807+-0.0243        ?
   simple-activation-demo                            33.8609+-0.7118           33.1983+-0.0619          might be 1.0200x faster
   simple-getter-access                              15.0988+-0.1996     ?     15.2596+-0.2866        ? might be 1.0107x slower
   simple-poly-call-nested                           10.3978+-0.1761           10.2649+-0.0638          might be 1.0129x faster
   simple-poly-call                                   1.8348+-0.1619            1.7938+-0.0192          might be 1.0228x faster
   sin-boolean                                       25.1956+-1.8747     ?     26.5326+-2.9066        ? might be 1.0531x slower
   singleton-scope                                   83.5079+-0.5424     ?     83.6096+-0.6910        ?
   sink-function                                     14.1471+-0.7513     ?     14.7142+-0.3510        ? might be 1.0401x slower
   sink-huge-activation                              23.2033+-0.2576     ?     23.4458+-0.9029        ? might be 1.0105x slower
   sinkable-new-object-dag                           83.9292+-0.7602     ?     84.3373+-0.9510        ?
   sinkable-new-object-taken                         65.7277+-2.4145           63.6785+-0.1606          might be 1.0322x faster
   sinkable-new-object                               47.0057+-0.8916     ?     47.3016+-0.7682        ?
   slow-array-profile-convergence                     3.8662+-0.0771            3.8595+-0.1292        
   slow-convergence                                   3.7863+-0.1124            3.6911+-0.0741          might be 1.0258x faster
   slow-ternaries                                    24.2292+-0.7126           23.9312+-0.2426          might be 1.0125x faster
   sorting-benchmark                                 24.7287+-0.5906     ?     24.7910+-0.5529        ?
   sparse-conditional                                 1.6150+-0.0365            1.6077+-0.0242        
   splice-to-remove                                  19.8088+-0.3637           19.6753+-0.2628        
   string-char-code-at                               21.4649+-0.2736     ?     21.6215+-0.2133        ?
   string-concat-object                               2.9577+-0.0588     ?      2.9803+-0.0674        ?
   string-concat-pair-object                          2.8868+-0.0320     ?      2.9478+-0.0495        ? might be 1.0211x slower
   string-concat-pair-simple                         14.1009+-0.2969           13.8660+-0.2033          might be 1.0169x faster
   string-concat-simple                              14.3301+-0.0608     ?     14.6124+-0.7228        ? might be 1.0197x slower
   string-cons-repeat                                 9.4753+-0.2039            9.3563+-0.1122          might be 1.0127x faster
   string-cons-tower                                  9.6766+-0.2450            9.6061+-0.1290        
   string-equality                                   23.7360+-0.8764           23.2137+-0.2721          might be 1.0225x faster
   string-get-by-val-big-char                         9.0890+-0.0918     ?      9.1401+-0.1221        ?
   string-get-by-val-out-of-bounds-insane             4.6890+-0.0484            4.6703+-0.0358        
   string-get-by-val-out-of-bounds                    7.0322+-0.0467     ?      7.0803+-0.0877        ?
   string-get-by-val                                  4.4447+-0.0303     ^      4.3915+-0.0213        ^ definitely 1.0121x faster
   string-hash                                        2.7856+-0.0655            2.7220+-0.0535          might be 1.0233x faster
   string-long-ident-equality                        19.1872+-0.2810     ?     19.3696+-0.4102        ?
   string-out-of-bounds                              18.9999+-0.0939           18.9629+-0.1576        
   string-repeat-arith                               43.2847+-1.1521           42.3561+-0.8714          might be 1.0219x faster
   string-sub                                        85.2656+-0.6193           84.5941+-0.6028        
   string-test                                        3.8227+-0.0831            3.7878+-0.0374        
   string-var-equality                               43.1200+-0.0316     ?     43.4176+-0.7812        ?
   structure-hoist-over-transitions                   3.2696+-0.0978     ?      3.2854+-0.0402        ?
   substring-concat-weird                            51.6262+-0.3175           51.5186+-0.2282        
   substring-concat                                  54.7959+-0.7353     ?     54.8708+-0.7733        ?
   substring                                         60.0956+-1.0156           59.7013+-0.9438        
   switch-char-constant                               3.5588+-0.0597            3.5524+-0.0208        
   switch-char                                       10.6503+-4.5769           10.6294+-4.4904        
   switch-constant                                   10.2667+-0.2508     ?     10.5473+-0.3155        ? might be 1.0273x slower
   switch-string-basic-big-var                       24.7682+-0.6327           24.6956+-0.0616        
   switch-string-basic-big                           21.4917+-0.6127     ?     21.5562+-0.4797        ?
   switch-string-basic-var                           19.8081+-0.3074     ?     19.8128+-0.1838        ?
   switch-string-basic                               18.3879+-0.3132           18.3815+-0.3832        
   switch-string-big-length-tower-var                26.3715+-0.0522           26.3060+-0.0286        
   switch-string-length-tower-var                    20.3326+-0.1583           20.3298+-0.1678        
   switch-string-length-tower                        17.2017+-0.1207     ?     17.2220+-0.1092        ?
   switch-string-short                               17.1757+-0.0247           17.1633+-0.0722        
   switch                                            15.9788+-0.1390     ?     16.0897+-0.4990        ?
   tear-off-arguments-simple                          4.1698+-0.0562            4.1460+-0.0613        
   tear-off-arguments                                 5.7116+-0.1154     ?      5.7375+-0.1554        ?
   temporal-structure                                16.1341+-0.6087           16.0892+-0.4972        
   to-int32-boolean                                  17.9351+-0.0330           17.9312+-0.0233        
   try-catch-get-by-val-cloned-arguments             18.6383+-0.2598     ?     18.8584+-0.3059        ? might be 1.0118x slower
   try-catch-get-by-val-direct-arguments              8.1129+-0.1428     ?      8.1752+-0.0949        ?
   try-catch-get-by-val-scoped-arguments              9.5928+-0.1508            9.5870+-0.4961        
   typed-array-get-set-by-val-profiling              43.8533+-0.9249     ?     44.4946+-0.3704        ? might be 1.0146x slower
   undefined-property-access                        458.2738+-0.2280     ?    458.3631+-0.5375        ?
   undefined-test                                     3.9043+-0.0243            3.8963+-0.0474        
   unprofiled-licm                                   29.1641+-0.4772           29.1163+-0.3589        
   varargs-call                                      19.7913+-0.1610     ?     20.0462+-0.2904        ? might be 1.0129x slower
   varargs-construct-inline                          34.3714+-0.3426     ?     34.5522+-0.9352        ?
   varargs-construct                                 29.1034+-0.0727     ?     29.1962+-0.1938        ?
   varargs-inline                                    12.0703+-0.0498           12.0565+-0.0399        
   varargs-strict-mode                               13.0513+-0.0357           13.0444+-0.0767        
   varargs                                           13.0935+-0.2158           13.0186+-0.0554        
   weird-inlining-const-prop                          2.9572+-0.1045     ?      2.9888+-0.0829        ? might be 1.0107x slower

   &lt;geometric&gt;                                       11.0844+-0.0325     ^     10.9920+-0.0163        ^ definitely 1.0084x faster

                                                         r185155                 SinkNewArray                                   
AsmBench:
   bigfib.cpp                                       659.6657+-1.9385          659.5763+-1.3830        
   cray.c                                           571.5378+-1.8235     ?    573.1967+-5.6290        ?
   dry.c                                            663.5815+-15.3691         659.5581+-16.5267       
   FloatMM.c                                        972.9917+-0.2619     ?    972.9986+-0.4314        ?
   gcc-loops.cpp                                   5688.0036+-13.0359        5682.9780+-13.7580       
   n-body.c                                        1327.4185+-0.4025     ?   1328.0354+-0.9812        ?
   Quicksort.c                                      570.7265+-0.7112          566.4269+-6.6085        
   stepanov_container.cpp                          5033.0731+-11.5270    ?   5047.4958+-17.5657       ?
   Towers.c                                         344.7647+-0.6132          344.6506+-0.4697        

   &lt;geometric&gt;                                     1068.7924+-2.8983         1067.7421+-4.3175          might be 1.0010x faster

                                                         r185155                 SinkNewArray                                   
CompressionBench:
   huffman                                          519.0905+-1.0966     ^    472.8241+-3.5570        ^ definitely 1.0979x faster
   arithmetic-simple                                488.3917+-0.9892          488.1672+-0.8040        
   arithmetic-precise                               390.5841+-3.1105     ?    390.8800+-2.5548        ?
   arithmetic-complex-precise                       404.2934+-3.0045          403.1429+-0.8474        
   arithmetic-precise-order-0                       513.7917+-0.2401          510.1337+-4.5468        
   arithmetic-precise-order-1                       444.6978+-9.7363          441.0293+-1.5421        
   arithmetic-precise-order-2                       500.3618+-1.8855          500.2085+-2.0196        
   arithmetic-simple-order-1                        568.8978+-3.0882     ?    569.0549+-3.3936        ?
   arithmetic-simple-order-2                        633.8684+-2.4850     ?    633.9730+-2.6142        ?
   lz-string                                        378.8268+-4.2282     ?    379.9957+-5.4518        ?

   &lt;geometric&gt;                                      478.1807+-1.4588     ^    473.0439+-1.4258        ^ definitely 1.0109x faster

                                                         r185155                 SinkNewArray                                   
Geomean of preferred means:
   &lt;scaled-result&gt;                                   80.6814+-0.1301     ^     80.4017+-0.1041        ^ definitely 1.0035x faster</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099229</commentid>
    <comment_count>3</comment_count>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-06-03 13:02:51 -0700</bug_when>
    <thetext>   huffman                                          519.0905+-1.0966     ^    472.8241+-3.5570        ^ definitely 1.0979x faster

Doesn&apos;t make any sense, there is no array allocation to sink here. Investigating.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099231</commentid>
    <comment_count>4</comment_count>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-06-03 13:07:24 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt;    huffman                                          519.0905+-1.0966     ^  
&gt; 472.8241+-3.5570        ^ definitely 1.0979x faster
&gt; 
&gt; Doesn&apos;t make any sense, there is no array allocation to sink here.
&gt; Investigating.

It is apparently only coming from the GetButterfly redirection, so it may make sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099329</commentid>
    <comment_count>5</comment_count>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-06-03 17:29:38 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt;    huffman                                          519.0905+-1.0966     ^  
&gt; &gt; 472.8241+-3.5570        ^ definitely 1.0979x faster
&gt; &gt; 
&gt; &gt; Doesn&apos;t make any sense, there is no array allocation to sink here.
&gt; &gt; Investigating.
&gt; 
&gt; It is apparently only coming from the GetButterfly redirection, so it may
&gt; make sense.

I stand by my first observation, I can&apos;t make sense of this, and 10% is a lot. Seemingly irrelevant small code changes move it from 10% to 2%.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099333</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-03 17:39:48 -0700</bug_when>
    <thetext>Attachment 254197 did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGObjectAllocationSinkingPhase.cpp:1043:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGObjectAllocationSinkingPhase.cpp:1059:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGObjectAllocationSinkingPhase.cpp:1072:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGObjectAllocationSinkingPhase.cpp:1091:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGObjectAllocationSinkingPhase.cpp:1105:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 5 in 24 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>1099389</commentid>
    <comment_count>7</comment_count>
      <attachid>254197</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-06-03 21:32:28 -0700</bug_when>
    <thetext>Comment on attachment 254197
Patch

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

&gt; Source/JavaScriptCore/dfg/DFGObjectAllocationSinkingPhase.cpp:1056
&gt; +                || !node-&gt;child2()-&gt;constant()-&gt;value().isUInt32()) {

You need something stricter than isUInt32, I think.  &quot;pow(2, 31) - 1&quot; is a UInt32, but it isn&apos;t a valid array index.  Also, you could have:

array: NewArray(@x, @y, @z) // length = 3
index: JSConstant(Int32:4)
GetByVal(@array, @index, ContiguousInBounds)

This should always exit.  We may even perform optimizations assuming that this always exits.  And there is no good way to lower this to a direct load from a phantom array.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099492</commentid>
    <comment_count>8</comment_count>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-06-04 09:28:10 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Comment on attachment 254197 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=254197&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGObjectAllocationSinkingPhase.cpp:1056
&gt; &gt; +                || !node-&gt;child2()-&gt;constant()-&gt;value().isUInt32()) {
&gt; 
&gt; You need something stricter than isUInt32, I think.  &quot;pow(2, 31) - 1&quot; is a
&gt; UInt32, but it isn&apos;t a valid array index.  

Ah yes, I forgot about that detail, I will change this.

&gt; Also, you could have:
&gt; 
&gt; array: NewArray(@x, @y, @z) // length = 3
&gt; index: JSConstant(Int32:4)
&gt; GetByVal(@array, @index, ContiguousInBounds)
&gt; 
&gt; This should always exit.  We may even perform optimizations assuming that
&gt; this always exits.  And there is no good way to lower this to a direct load
&gt; from a phantom array.

Oh, because a load from a hole is InBounds. I will change the tests to check the length of the underlying array then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100122</commentid>
    <comment_count>9</comment_count>
      <attachid>254197</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-06-06 15:54:44 -0700</bug_when>
    <thetext>Comment on attachment 254197
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/dfg/DFGObjectAllocationSinkingPhase.cpp:1056
&gt;&gt;&gt; +                || !node-&gt;child2()-&gt;constant()-&gt;value().isUInt32()) {
&gt;&gt; 
&gt;&gt; You need something stricter than isUInt32, I think.  &quot;pow(2, 31) - 1&quot; is a UInt32, but it isn&apos;t a valid array index.  Also, you could have:
&gt;&gt; 
&gt;&gt; array: NewArray(@x, @y, @z) // length = 3
&gt;&gt; index: JSConstant(Int32:4)
&gt;&gt; GetByVal(@array, @index, ContiguousInBounds)
&gt;&gt; 
&gt;&gt; This should always exit.  We may even perform optimizations assuming that this always exits.  And there is no good way to lower this to a direct load from a phantom array.
&gt; 
&gt; Ah yes, I forgot about that detail, I will change this.

There’s another thing to remember about the function isUInt32 in cases like this. To quote a comment that appears in three places in the source code: &quot;Despite its name, JSValue::isUInt32 will return true only for positive boxed int32_t&quot;. So it will return false for pow(2, 30) and higher.

Maybe we should rename that function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101952</commentid>
    <comment_count>10</comment_count>
      <attachid>254880</attachid>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-06-15 10:11:04 -0700</bug_when>
    <thetext>Created attachment 254880
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101991</commentid>
    <comment_count>11</comment_count>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-06-15 12:07:45 -0700</bug_when>
    <thetext>Looks reasonable.

Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, JSRegress, AsmBench, and CompressionBench on Basiles-MacBook-Pro (MacBookPro11,3).

VMs tested:
&quot;ToT&quot; at /Volumes/Data/secondary/OpenSource/WebKitBuild/Release/jsc
&quot;SinkNewArray&quot; at /Volumes/Data/secondary/OpenSource/WebKitBuild/SinkNewArray/Release/jsc

Collected 6 samples per benchmark/VM, with 6 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.

                                                           ToT                   SinkNewArray                                   
SunSpider:
   3d-cube                                            6.4620+-0.4259            6.2751+-0.1099          might be 1.0298x faster
   3d-morph                                           7.4650+-0.1833            7.4189+-0.1082        
   3d-raytrace                                        7.3448+-0.0778     ?      7.5102+-0.4120        ? might be 1.0225x slower
   access-binary-trees                                2.8152+-0.1358     ?      2.9573+-0.1837        ? might be 1.0505x slower
   access-fannkuch                                    8.9322+-3.0920            7.7188+-0.2158          might be 1.1572x faster
   access-nbody                                       3.5219+-0.0376            3.5111+-0.0273        
   access-nsieve                                      4.4395+-0.3056     ?      4.5962+-0.3366        ? might be 1.0353x slower
   bitops-3bit-bits-in-byte                           2.0612+-0.0741            2.0414+-0.0757        
   bitops-bits-in-byte                                5.0533+-0.5122            4.8723+-0.1364          might be 1.0371x faster
   bitops-bitwise-and                                 2.8992+-0.0593            2.8934+-0.0234        
   bitops-nsieve-bits                                 4.1979+-0.1812     ?      4.2832+-0.2677        ? might be 1.0203x slower
   controlflow-recursive                              3.2293+-0.1887     ?      3.5222+-0.1595        ? might be 1.0907x slower
   crypto-aes                                         5.7975+-0.4277            5.6050+-0.1104          might be 1.0343x faster
   crypto-md5                                         3.3483+-0.1346     ?      3.3813+-0.0863        ?
   crypto-sha1                                        4.3288+-0.4124            4.1602+-0.2572          might be 1.0405x faster
   date-format-tofte                                  9.6481+-0.3966            9.4831+-0.2433          might be 1.0174x faster
   date-format-xparb                                  6.9274+-0.2787            6.8870+-0.1149        
   math-cordic                                        3.8770+-0.0266     ?      4.0486+-0.2745        ? might be 1.0443x slower
   math-partial-sums                                  6.6391+-0.3215            6.3875+-0.1145          might be 1.0394x faster
   math-spectral-norm                                 2.6106+-0.2653     ?      2.7200+-0.2240        ? might be 1.0419x slower
   regexp-dna                                         9.4604+-0.2050            9.4022+-0.2025        
   string-base64                                      6.4295+-0.3154     ?      6.4694+-0.5328        ?
   string-fasta                                       8.7258+-0.1451     ?      8.8586+-0.4034        ? might be 1.0152x slower
   string-tagcloud                                   11.6349+-0.3379     ?     11.7156+-0.3683        ?
   string-unpack-code                                27.7021+-0.3903     ?     27.8430+-0.8370        ?
   string-validate-input                              7.5049+-0.1380            7.4187+-0.2129          might be 1.0116x faster

   &lt;arithmetic&gt;                                       6.6560+-0.1009            6.6146+-0.1033          might be 1.0063x faster

                                                           ToT                   SinkNewArray                                   
LongSpider:
   3d-cube                                         1165.5142+-3.6818     !   1178.9495+-7.1101        ! definitely 1.0115x slower
   3d-morph                                        2248.2281+-1.0691         2247.1182+-0.7891        
   3d-raytrace                                      915.5581+-23.6210    ?    947.8099+-10.4353       ? might be 1.0352x slower
   access-binary-trees                             1156.1095+-9.3719         1148.8581+-4.7785        
   access-fannkuch                                  407.5990+-8.0765          407.3709+-8.2867        
   access-nbody                                     768.9311+-0.3131     ^    767.0618+-0.1645        ^ definitely 1.0024x faster
   access-nsieve                                    501.9590+-3.8896     ?    502.9154+-4.9150        ?
   bitops-3bit-bits-in-byte                          59.3515+-0.6375     ?     59.7249+-0.5190        ?
   bitops-bits-in-byte                              109.0033+-2.0457     ?    110.2948+-2.5226        ? might be 1.0118x slower
   bitops-nsieve-bits                               598.5341+-1.1862     ?    606.7844+-14.6026       ? might be 1.0138x slower
   controlflow-recursive                            650.7711+-11.0926    !    676.8234+-9.5011        ! definitely 1.0400x slower
   crypto-aes                                       832.4177+-5.0822          832.1430+-4.9238        
   crypto-md5                                       695.7232+-3.3560          693.8603+-5.8291        
   crypto-sha1                                      915.5306+-5.6425     ^    900.4557+-5.1220        ^ definitely 1.0167x faster
   date-format-tofte                                741.4649+-23.5605    ?    746.1817+-34.0723       ?
   date-format-xparb                                933.6765+-2.2071          931.6545+-1.9320        
   hash-map                                         242.2531+-4.6986          240.6289+-5.3065        
   math-cordic                                      728.0025+-0.5755     ?    728.0797+-0.8731        ?
   math-partial-sums                                619.1314+-0.9487          618.7151+-1.2653        
   math-spectral-norm                               824.0890+-0.6368     ?    824.5369+-0.3908        ?
   string-base64                                    508.0516+-2.9142     ?    508.1735+-3.3230        ?
   string-fasta                                     545.8498+-0.9628     ?    551.0441+-7.7398        ?
   string-tagcloud                                  245.7683+-1.6413     ?    246.0581+-2.5663        ?

   &lt;geometric&gt;                                      570.4531+-0.9243     !    572.8723+-1.2613        ! definitely 1.0042x slower

                                                           ToT                   SinkNewArray                                   
V8Spider:
   crypto                                            74.7977+-3.9219           73.3599+-4.0877          might be 1.0196x faster
   deltablue                                        120.5553+-13.1611    ?    125.3534+-25.0934       ? might be 1.0398x slower
   earley-boyer                                      65.8162+-2.6604     ?     67.1539+-3.9819        ? might be 1.0203x slower
   raytrace                                          47.6269+-5.7831           45.6871+-2.1273          might be 1.0425x faster
   regexp                                           108.1121+-14.9822         102.6625+-0.7176          might be 1.0531x faster
   richards                                         109.7837+-6.0301          104.4385+-2.9418          might be 1.0512x faster
   splay                                             48.0495+-2.6855     ?     50.0175+-1.8376        ? might be 1.0410x slower

   &lt;geometric&gt;                                       76.8755+-3.1344           76.1880+-2.0580          might be 1.0090x faster

                                                           ToT                   SinkNewArray                                   
Octane:
   encrypt                                           0.29143+-0.00105    ?     0.29435+-0.00450       ? might be 1.0100x slower
   decrypt                                           5.10050+-0.01478    ?     5.13530+-0.13216       ?
   deltablue                                x2       0.23234+-0.01005          0.22898+-0.00314         might be 1.0147x faster
   earley                                            0.44882+-0.00201    ?     0.45490+-0.00688       ? might be 1.0135x slower
   boyer                                             9.06497+-0.01674    ?     9.09923+-0.04359       ?
   navier-stokes                            x2       7.55601+-0.02040          7.54591+-0.00963       
   raytrace                                 x2       1.70070+-0.01490          1.68796+-0.02104       
   richards                                 x2       0.15579+-0.00219          0.15463+-0.00156       
   splay                                    x2       0.49884+-0.00699    ?     0.50175+-0.01014       ?
   regexp                                   x2      41.89718+-1.10871         40.92212+-0.70543         might be 1.0238x faster
   pdfjs                                    x2      53.50400+-0.30185         53.04648+-0.26519       
   mandreel                                 x2      71.71831+-0.94574         71.30785+-1.63264       
   gbemu                                    x2      61.41832+-3.79318         58.09554+-0.96424         might be 1.0572x faster
   closure                                           0.70356+-0.00413    ?     0.70578+-0.00317       ?
   jquery                                            9.11467+-0.04708          9.11435+-0.07977       
   box2d                                    x2      16.57658+-0.12666    ?    16.67063+-0.09454       ?
   zlib                                     x2     523.11637+-19.53807   ?   527.11112+-26.34456      ?
   typescript                               x2     883.58297+-4.46029        875.41602+-9.67856       

   &lt;geometric&gt;                                       8.62643+-0.06889          8.57196+-0.05353         might be 1.0064x faster

                                                           ToT                   SinkNewArray                                   
Kraken:
   ai-astar                                          364.080+-7.771      ?     364.598+-7.193         ?
   audio-beat-detection                               99.396+-1.758      ?      99.719+-1.841         ?
   audio-dft                                         156.637+-1.973            156.473+-1.192         
   audio-fft                                          85.744+-1.197             79.308+-8.958           might be 1.0812x faster
   audio-oscillator                                  110.073+-0.536            110.065+-0.648         
   imaging-darkroom                                  130.731+-0.862            129.894+-1.259         
   imaging-desaturate                                 80.726+-3.099      ?      82.452+-3.954         ? might be 1.0214x slower
   imaging-gaussian-blur                             126.134+-0.211            125.956+-1.289         
   json-parse-financial                               58.635+-1.440      ^      55.922+-0.275         ^ definitely 1.0485x faster
   json-stringify-tinderbox                           35.871+-1.347      ?      36.565+-1.513         ? might be 1.0193x slower
   stanford-crypto-aes                                76.337+-0.654      ?      77.298+-0.912         ? might be 1.0126x slower
   stanford-crypto-ccm                                58.017+-2.997             57.696+-3.074         
   stanford-crypto-pbkdf2                            148.070+-1.125      ?     148.424+-0.773         ?
   stanford-crypto-sha256-iterative                   56.126+-0.742             55.699+-0.832         

   &lt;arithmetic&gt;                                      113.327+-0.684            112.862+-0.281           might be 1.0041x faster

                                                           ToT                   SinkNewArray                                   
JSRegress:
   abs-boolean                                        3.4447+-0.0561     ?      3.4465+-0.1640        ?
   adapt-to-double-divide                            23.4646+-0.4398     ?     23.5307+-0.9790        ?
   aliased-arguments-getbyval                         1.6715+-0.0779            1.6084+-0.1035          might be 1.0392x faster
   allocate-big-object                                3.6281+-0.3092            3.6242+-0.2343        
   arguments-named-and-reflective                    15.4883+-0.4621     ?     16.0725+-0.7652        ? might be 1.0377x slower
   arguments-out-of-bounds                           14.0551+-0.1568           14.0173+-0.3269        
   arguments-strict-mode                             13.8357+-0.4962           13.7705+-0.3924        
   arguments                                         12.1738+-0.1900           12.0101+-0.1037          might be 1.0136x faster
   arity-mismatch-inlining                            1.0971+-0.0386     ?      1.1104+-0.0760        ? might be 1.0121x slower
   array-access-polymorphic-structure                 8.4875+-0.1375            8.4068+-0.4165        
   array-nonarray-polymorhpic-access                 35.9062+-0.3900     ?     36.1455+-0.4836        ?
   array-prototype-every                            112.9097+-0.6022          112.6798+-2.9467        
   array-prototype-forEach                          110.4435+-0.9883     ?    110.5648+-0.6090        ?
   array-prototype-map                              122.4644+-1.1409     ^    120.0437+-0.9236        ^ definitely 1.0202x faster
   array-prototype-reduce                           106.5285+-0.7825     ^    104.7537+-0.7370        ^ definitely 1.0169x faster
   array-prototype-reduceRight                      105.2504+-0.4939     ^    104.1735+-0.5146        ^ definitely 1.0103x faster
   array-prototype-some                             112.4754+-0.2232          111.9652+-1.3528        
   array-splice-contiguous                           55.4940+-0.5350     ?     55.8498+-0.7496        ?
   array-with-double-add                              4.7762+-0.0421     ?      4.7957+-0.1052        ?
   array-with-double-increment                        4.2697+-0.1071            4.2618+-0.0500        
   array-with-double-mul-add                          5.9066+-0.0618     ?      6.1191+-0.1953        ? might be 1.0360x slower
   array-with-double-sum                              4.5637+-0.1466            4.5232+-0.0896        
   array-with-int32-add-sub                           8.2614+-0.2231     ?      8.2685+-0.1012        ?
   array-with-int32-or-double-sum                     4.5244+-0.0373     ?      4.6844+-0.2226        ? might be 1.0354x slower
   ArrayBuffer-DataView-alloc-large-long-lived   
                                                     41.7718+-0.9379           41.4312+-0.4757        
   ArrayBuffer-DataView-alloc-long-lived             18.4676+-0.2112           18.1145+-0.1681          might be 1.0195x faster
   ArrayBuffer-Int32Array-byteOffset                  5.1809+-0.0544            5.1494+-0.0152        
   ArrayBuffer-Int8Array-alloc-large-long-lived   
                                                     44.6673+-0.7601           44.2901+-0.9116        
   ArrayBuffer-Int8Array-alloc-long-lived-buffer   
                                                     29.5011+-0.2742           29.4005+-0.1735        
   ArrayBuffer-Int8Array-alloc-long-lived            17.8502+-0.2486     ?     18.0346+-0.8690        ? might be 1.0103x slower
   ArrayBuffer-Int8Array-alloc                       14.1788+-0.2650     ^     13.7301+-0.1231        ^ definitely 1.0327x faster
   asmjs_bool_bug                                    10.8134+-0.1891           10.6013+-0.1622          might be 1.0200x faster
   assign-custom-setter-polymorphic                   3.6547+-0.0766     ?      3.7397+-0.2014        ? might be 1.0232x slower
   assign-custom-setter                               5.0953+-0.2190            4.8865+-0.0332          might be 1.0427x faster
   basic-set                                         12.9807+-0.6027           12.4698+-0.4891          might be 1.0410x faster
   big-int-mul                                        5.7022+-0.7990            4.8732+-0.0310          might be 1.1701x faster
   boolean-test                                       4.0885+-0.1393     ?      4.0944+-0.0914        ?
   branch-fold                                        5.3607+-0.1492     ?      5.3687+-0.1726        ?
   branch-on-string-as-boolean                       23.2675+-0.5564           23.0732+-0.4272        
   by-val-generic                                    10.3986+-0.1998     ?     10.5871+-0.2145        ? might be 1.0181x slower
   call-spread-apply                                 38.6675+-1.6197     ?     39.1600+-3.7987        ? might be 1.0127x slower
   call-spread-call                                  31.1883+-0.3477           31.0932+-0.9482        
   captured-assignments                               0.6141+-0.0467            0.6035+-0.0191          might be 1.0175x faster
   cast-int-to-double                                 7.1657+-0.0700            7.1476+-0.0809        
   cell-argument                                      9.0394+-0.1659            8.9837+-0.2815        
   cfg-simplify                                       3.9381+-0.1186     ?      3.9506+-0.1278        ?
   chain-getter-access                               11.6575+-0.3038           11.5463+-0.2255        
   cmpeq-obj-to-obj-other                            16.0081+-1.5170     ?     17.0230+-0.9316        ? might be 1.0634x slower
   constant-test                                      6.8110+-0.2383     ?      6.8824+-0.2282        ? might be 1.0105x slower
   create-lots-of-functions                          13.8182+-0.9398           13.2148+-0.6011          might be 1.0457x faster
   cse-new-array-buffer                               3.1328+-0.1020            3.0882+-0.1520          might be 1.0145x faster
   cse-new-array                                      3.2046+-0.2638     ?      3.2130+-0.1460        ?
   DataView-custom-properties                        49.8806+-1.0372     ?     50.9999+-1.9167        ? might be 1.0224x slower
   deconstructing-parameters-overridden-by-function   
                                                      0.6803+-0.0546     ?      0.6846+-0.0268        ?
   delay-tear-off-arguments-strictmode               18.3356+-0.1450     ^     17.6899+-0.1598        ^ definitely 1.0365x faster
   deltablue-varargs                                288.0083+-15.5744         281.6616+-7.7423          might be 1.0225x faster
   destructuring-arguments                           18.9681+-0.6389           18.7376+-0.3261          might be 1.0123x faster
   destructuring-swap                                 6.6764+-0.2007            6.6229+-0.0959        
   direct-arguments-getbyval                          1.6217+-0.0575     ?      1.7392+-0.3673        ? might be 1.0725x slower
   div-boolean-double                                 7.6713+-0.2258            7.6216+-0.1528        
   div-boolean                                       11.7002+-0.0534     ?     11.7818+-0.1840        ?
   double-get-by-val-out-of-bounds                    5.7213+-0.2250            5.5919+-0.0943          might be 1.0231x faster
   double-pollution-getbyval                         12.7540+-0.6464           12.7449+-0.5363        
   double-pollution-putbyoffset                       5.4714+-0.3293            5.4651+-0.2128        
   double-real-use                                   36.3107+-3.3037           36.0736+-2.2888        
   double-to-int32-typed-array-no-inline              3.0664+-0.2525     ?      3.1414+-0.1317        ? might be 1.0245x slower
   double-to-int32-typed-array                        2.4917+-0.2689            2.4510+-0.0719          might be 1.0166x faster
   double-to-uint32-typed-array-no-inline             3.2311+-0.1749     ?      3.2563+-0.3521        ?
   double-to-uint32-typed-array                       2.6436+-0.2113            2.6084+-0.0915          might be 1.0135x faster
   elidable-new-object-dag                           48.3201+-1.2424     ?     48.7469+-0.7766        ?
   elidable-new-object-roflcopter                    48.7465+-1.1767           48.6353+-0.7594        
   elidable-new-object-then-call                     44.3131+-1.2605     ?     45.9399+-1.3450        ? might be 1.0367x slower
   elidable-new-object-tree                          52.4810+-0.8938     ?     53.4568+-1.3010        ? might be 1.0186x slower
   empty-string-plus-int                              6.8860+-0.0673            6.8699+-0.1290        
   emscripten-cube2hash                              37.3814+-1.8172     ?     38.6296+-2.0936        ? might be 1.0334x slower
   exit-length-on-plain-object                       17.6853+-0.3626     ?     17.7412+-0.3013        ?
   external-arguments-getbyval                        1.6358+-0.0934     ?      1.6877+-0.2888        ? might be 1.0317x slower
   external-arguments-putbyval                        3.0188+-0.1010            2.9239+-0.0438          might be 1.0325x faster
   fixed-typed-array-storage-var-index                1.6246+-0.0704            1.5994+-0.0651          might be 1.0157x faster
   fixed-typed-array-storage                          1.2545+-0.2653            1.2060+-0.0808          might be 1.0402x faster
   Float32Array-matrix-mult                           5.8355+-0.6031            5.5964+-0.3179          might be 1.0427x faster
   Float32Array-to-Float64Array-set                  68.0295+-0.8095     ?     68.8479+-3.8508        ? might be 1.0120x slower
   Float64Array-alloc-long-lived                     98.4087+-1.3541           97.6731+-1.8626        
   Float64Array-to-Int16Array-set                    83.2711+-0.9673           82.6435+-0.3604        
   fold-double-to-int                                18.0098+-0.1838     ?     18.0179+-0.0890        ?
   fold-get-by-id-to-multi-get-by-offset-rare-int   
                                                     14.2102+-0.8433           14.1356+-0.8103        
   fold-get-by-id-to-multi-get-by-offset             12.1858+-0.4489     ?     12.4178+-1.4427        ? might be 1.0190x slower
   fold-multi-get-by-offset-to-get-by-offset   
                                                     11.7449+-0.9834     ?     12.1905+-0.9650        ? might be 1.0379x slower
   fold-multi-get-by-offset-to-poly-get-by-offset   
                                                     10.0861+-1.0719     ?     10.7445+-0.7989        ? might be 1.0653x slower
   fold-multi-put-by-offset-to-poly-put-by-offset   
                                                     10.4521+-0.8362     ?     10.5580+-0.8458        ? might be 1.0101x slower
   fold-multi-put-by-offset-to-put-by-offset   
                                                      7.3041+-1.5216     ?      7.7907+-0.4852        ? might be 1.0666x slower
   fold-multi-put-by-offset-to-replace-or-transition-put-by-offset   
                                                     12.0791+-0.3607     ?     13.0122+-1.2325        ? might be 1.0772x slower
   fold-put-by-id-to-multi-put-by-offset             12.6789+-0.8705     ?     12.9833+-1.0814        ? might be 1.0240x slower
   fold-put-structure                                 7.9680+-0.6299            7.7090+-0.5419          might be 1.0336x faster
   for-of-iterate-array-entries                       5.6356+-0.1212     ?      5.7445+-0.1655        ? might be 1.0193x slower
   for-of-iterate-array-keys                          4.6982+-0.4334            4.6937+-0.0907        
   for-of-iterate-array-values                        4.5430+-0.3574     ?      4.5998+-0.4022        ? might be 1.0125x slower
   fround                                            26.1171+-0.2840     ?     26.3711+-0.7068        ?
   ftl-library-inlining-dataview                     83.7738+-1.7618     ?     83.8027+-0.7679        ?
   ftl-library-inlining                             155.3261+-1.8169          155.2509+-0.9202        
   function-dot-apply                                 2.7359+-0.0574     ?      2.7719+-0.0717        ? might be 1.0132x slower
   function-test                                      3.7965+-0.0862            3.7953+-0.1803        
   function-with-eval                               128.5990+-1.6044     ?    128.8015+-0.5283        ?
   gcse-poly-get-less-obvious                        20.5014+-0.2406     ?     20.5860+-0.2626        ?
   gcse-poly-get                                     20.3615+-0.0727     ?     20.5620+-0.2915        ?
   gcse                                               5.5129+-0.2825            5.4812+-0.1261        
   get-by-id-bimorphic-check-structure-elimination-simple   
                                                      3.6726+-0.0645            3.6502+-0.0815        
   get-by-id-bimorphic-check-structure-elimination   
                                                      8.2616+-0.2236     ?      8.3042+-0.1133        ?
   get-by-id-chain-from-try-block                     9.3547+-0.0863            9.3253+-0.0693        
   get-by-id-check-structure-elimination              6.3745+-0.3017            6.3477+-0.2413        
   get-by-id-proto-or-self                           21.1370+-1.5480           20.9874+-1.3416        
   get-by-id-quadmorphic-check-structure-elimination-simple   
                                                      4.0826+-0.0559            4.0469+-0.0611        
   get-by-id-self-or-proto                           21.2708+-1.0930           20.6997+-0.4691          might be 1.0276x faster
   get-by-val-out-of-bounds                           5.8234+-0.3409            5.4559+-0.1199          might be 1.0673x faster
   get_callee_monomorphic                             3.3866+-0.0842     ?      3.4871+-0.2455        ? might be 1.0297x slower
   get_callee_polymorphic                             4.8854+-0.4359     ?      4.9099+-0.3139        ?
   getter-no-activation                               6.8056+-0.1987            6.7596+-0.2051        
   getter-prototype                                  13.9268+-0.2126     ?     14.0601+-0.3953        ?
   getter-richards                                  159.0631+-14.2885    ?    159.1223+-22.5895       ?
   getter                                             7.7859+-0.7588            7.5129+-0.5605          might be 1.0363x faster
   global-var-const-infer-fire-from-opt               1.2762+-0.0140            1.2693+-0.0938        
   global-var-const-infer                             1.0175+-0.0988     ?      1.1005+-0.1725        ? might be 1.0815x slower
   HashMap-put-get-iterate-keys                      40.8877+-3.7061           37.4152+-2.4625          might be 1.0928x faster
   HashMap-put-get-iterate                           42.0907+-5.0904           41.0007+-3.0040          might be 1.0266x faster
   HashMap-string-put-get-iterate                    40.8537+-1.0630           38.9493+-1.7511          might be 1.0489x faster
   hoist-make-rope                                   11.4074+-1.5317           11.2749+-1.1260          might be 1.0118x faster
   hoist-poly-check-structure-effectful-loop   
                                                      5.9540+-0.0716     ?      6.0082+-0.0541        ?
   hoist-poly-check-structure                         4.5196+-0.0358     ?      4.6317+-0.1695        ? might be 1.0248x slower
   imul-double-only                                   9.9347+-0.7442            9.4990+-0.1825          might be 1.0459x faster
   imul-int-only                                     11.3140+-0.1372     ?     11.4698+-0.8412        ? might be 1.0138x slower
   imul-mixed                                         8.9402+-0.2339     ?      9.2015+-0.5101        ? might be 1.0292x slower
   in-four-cases                                     22.6990+-0.3195           22.5095+-0.3285        
   in-one-case-false                                 13.7681+-0.3032           13.6181+-0.5118          might be 1.0110x faster
   in-one-case-true                                  14.2463+-0.7791     ^     13.3357+-0.0860        ^ definitely 1.0683x faster
   in-two-cases                                      13.9230+-0.3460     ?     13.9371+-0.2956        ?
   indexed-properties-in-objects                      4.2130+-0.4523            3.9297+-0.1479          might be 1.0721x faster
   infer-closure-const-then-mov-no-inline             4.4725+-0.0676     ?      4.7043+-0.5094        ? might be 1.0518x slower
   infer-closure-const-then-mov                      24.1718+-0.5509           24.0657+-0.3903        
   infer-closure-const-then-put-to-scope-no-inline   
                                                     16.7432+-0.0785     ?     16.8010+-0.1063        ?
   infer-closure-const-then-put-to-scope             31.2041+-0.7272     ?     31.2832+-0.8139        ?
   infer-closure-const-then-reenter-no-inline   
                                                     70.5920+-0.8886           70.0687+-0.1537        
   infer-closure-const-then-reenter                  31.1966+-0.3051     ?     31.4068+-0.4466        ?
   infer-constant-global-property                     4.9490+-0.2200            4.8025+-0.0449          might be 1.0305x faster
   infer-constant-property                            3.7436+-0.2130            3.6607+-0.0333          might be 1.0226x faster
   infer-one-time-closure-ten-vars                   11.7959+-0.2049     ?     12.0095+-0.4966        ? might be 1.0181x slower
   infer-one-time-closure-two-vars                   11.4674+-0.4060     ?     11.5072+-0.3311        ?
   infer-one-time-closure                            11.3536+-0.1767           11.1552+-0.1949          might be 1.0178x faster
   infer-one-time-deep-closure                       18.3765+-0.3796           18.1848+-0.0667          might be 1.0105x faster
   inline-arguments-access                            5.4071+-0.1909     ?      5.4076+-0.2069        ?
   inline-arguments-aliased-access                    5.4158+-0.2950     ?      5.5922+-0.4789        ? might be 1.0326x slower
   inline-arguments-local-escape                      5.4653+-0.1240     ?      5.5341+-0.3447        ? might be 1.0126x slower
   inline-get-scoped-var                              6.4684+-0.2096            6.4497+-0.1050        
   inlined-put-by-id-transition                      13.9231+-0.1566     ?     14.6938+-0.6439        ? might be 1.0554x slower
   int-or-other-abs-then-get-by-val                   6.6871+-0.0342     ?      6.7622+-0.0964        ? might be 1.0112x slower
   int-or-other-abs-zero-then-get-by-val             22.9838+-0.2819           22.8396+-0.1001        
   int-or-other-add-then-get-by-val                   5.7160+-0.1558     ?      5.7987+-0.1436        ? might be 1.0145x slower
   int-or-other-add                                   6.9090+-0.0646            6.8681+-0.1030        
   int-or-other-div-then-get-by-val                   5.2795+-0.1458     ?      5.2869+-0.2166        ?
   int-or-other-max-then-get-by-val                   5.6655+-0.1285     ?      5.7716+-0.3100        ? might be 1.0187x slower
   int-or-other-min-then-get-by-val                   5.7865+-0.5010            5.7058+-0.1234          might be 1.0141x faster
   int-or-other-mod-then-get-by-val                   5.0318+-0.1739     ?      5.0529+-0.0699        ?
   int-or-other-mul-then-get-by-val                   5.1222+-0.0529     ?      5.6112+-0.5409        ? might be 1.0955x slower
   int-or-other-neg-then-get-by-val                   6.2839+-0.1366     ?      6.3058+-0.1925        ?
   int-or-other-neg-zero-then-get-by-val             23.3319+-0.4081           23.3239+-0.3146        
   int-or-other-sub-then-get-by-val                   5.7621+-0.1182     ?      5.8663+-0.3993        ? might be 1.0181x slower
   int-or-other-sub                                   4.8128+-0.0455     ?      4.8444+-0.0756        ?
   int-overflow-local                                 6.0565+-0.0911     ?      6.1749+-0.2575        ? might be 1.0195x slower
   Int16Array-alloc-long-lived                       64.3979+-1.4884     ?     64.5314+-1.0853        ?
   Int16Array-bubble-sort-with-byteLength            25.1576+-0.1106     ?     25.2114+-0.1637        ?
   Int16Array-bubble-sort                            25.3008+-0.6065           25.0662+-0.1962        
   Int16Array-load-int-mul                            2.0257+-0.1250     ?      2.0534+-0.1568        ? might be 1.0137x slower
   Int16Array-to-Int32Array-set                      63.4798+-1.0764     ?     65.3597+-0.8100        ? might be 1.0296x slower
   Int32Array-alloc-large                            16.9207+-1.0171     ?     17.6879+-0.8894        ? might be 1.0453x slower
   Int32Array-alloc-long-lived                       76.0684+-2.1305           75.3499+-1.0502        
   Int32Array-alloc                                   4.0753+-0.3679            3.9774+-0.2548          might be 1.0246x faster
   Int32Array-Int8Array-view-alloc                    8.5316+-0.1696            8.5138+-0.0759        
   int52-spill                                        8.2486+-3.1849            7.0771+-0.2316          might be 1.1655x faster
   Int8Array-alloc-long-lived                        58.9163+-1.5018     ?     59.6632+-1.3609        ? might be 1.0127x slower
   Int8Array-load-with-byteLength                     4.8614+-0.1165            4.8278+-0.0518        
   Int8Array-load                                     5.0979+-0.4893            4.8547+-0.0674          might be 1.0501x faster
   integer-divide                                    14.6098+-0.0616     ?     14.7489+-0.4399        ?
   integer-modulo                                     2.3440+-0.0619            2.3353+-0.0691        
   is-boolean-fold-tricky                             5.3248+-0.0317     ?      5.3289+-0.0435        ?
   is-boolean-fold                                    3.8586+-0.3466            3.7102+-0.0537          might be 1.0400x faster
   is-function-fold-tricky-internal-function   
                                                     14.1034+-0.1447     !     14.4038+-0.0631        ! definitely 1.0213x slower
   is-function-fold-tricky                            5.8336+-0.0746            5.7948+-0.0345        
   is-function-fold                                   3.7329+-0.0544            3.7312+-0.0378        
   is-number-fold-tricky                              5.8750+-0.4579            5.7024+-0.0573          might be 1.0303x faster
   is-number-fold                                     3.6923+-0.0437     ?      3.7333+-0.0504        ? might be 1.0111x slower
   is-object-or-null-fold-functions                   3.7655+-0.0783            3.7453+-0.0205        
   is-object-or-null-fold-less-tricky                 5.8389+-0.0752            5.7685+-0.0285          might be 1.0122x faster
   is-object-or-null-fold-tricky                      7.4935+-0.1296            7.4139+-0.1392          might be 1.0107x faster
   is-object-or-null-fold                             3.7224+-0.0724     ?      3.8503+-0.3717        ? might be 1.0344x slower
   is-object-or-null-trickier-function                5.9387+-0.2930            5.8425+-0.1013          might be 1.0165x faster
   is-object-or-null-trickier-internal-function   
                                                     14.8734+-0.0804     ?     15.8672+-0.9164        ? might be 1.0668x slower
   is-object-or-null-tricky-function                  5.8249+-0.0365            5.8105+-0.0476        
   is-object-or-null-tricky-internal-function   
                                                     10.9638+-0.0710           10.9600+-0.1171        
   is-string-fold-tricky                              5.7754+-0.1469            5.7607+-0.1287        
   is-string-fold                                     3.7174+-0.0682     ?      3.7206+-0.0878        ?
   is-undefined-fold-tricky                           4.7326+-0.0772            4.6707+-0.0382          might be 1.0133x faster
   is-undefined-fold                                  3.6982+-0.0546            3.6864+-0.0485        
   large-int-captured                                 5.7280+-0.3598            5.6570+-0.2016          might be 1.0126x faster
   large-int-neg                                     20.0339+-0.3203           20.0063+-0.5868        
   large-int                                         19.5975+-0.2763           19.5538+-0.4250        
   load-varargs-elimination                          30.6144+-0.3474           30.5534+-0.2198        
   logical-not-weird-types                            3.9318+-0.1015     ?      4.0169+-0.2836        ? might be 1.0217x slower
   logical-not                                        6.0317+-0.6067            5.7496+-0.0727          might be 1.0491x faster
   lots-of-fields                                    13.7654+-0.7032           13.0540+-0.4040          might be 1.0545x faster
   make-indexed-storage                               3.9229+-0.1112     ?      4.0341+-0.0951        ? might be 1.0283x slower
   make-rope-cse                                     16.0533+-0.9344     ?     16.0907+-0.8341        ?
   marsaglia-larger-ints                             47.5251+-0.5857           47.3651+-0.5867        
   marsaglia-osr-entry                               29.9279+-0.3197     ?     30.4356+-0.7593        ? might be 1.0170x slower
   math-with-out-of-bounds-array-values              30.7618+-0.4159     !     32.5852+-0.6098        ! definitely 1.0593x slower
   max-boolean                                        3.7745+-0.0576     ?      3.8838+-0.1324        ? might be 1.0290x slower
   method-on-number                                  23.2431+-0.3662     ?     23.7395+-1.1306        ? might be 1.0214x slower
   min-boolean                                        3.7998+-0.1879            3.7877+-0.0650        
   minus-boolean-double                               4.4510+-0.2435            4.3057+-0.0247          might be 1.0337x faster
   minus-boolean                                      3.3120+-0.0886            3.2513+-0.0595          might be 1.0187x faster
   misc-strict-eq                                    44.4905+-0.8290     ?     46.0675+-3.0530        ? might be 1.0354x slower
   mod-boolean-double                                16.0910+-0.0515           16.0852+-0.0711        
   mod-boolean                                       12.0833+-0.4111     ?     12.2203+-0.6122        ? might be 1.0113x slower
   mul-boolean-double                                 5.2192+-0.2281            5.2003+-0.2910        
   mul-boolean                                        3.9312+-0.0385     ?      4.0040+-0.2278        ? might be 1.0185x slower
   neg-boolean                                        4.4479+-0.1810            4.3393+-0.0341          might be 1.0250x faster
   negative-zero-divide                               0.4673+-0.0117     ?      0.4862+-0.0474        ? might be 1.0405x slower
   negative-zero-modulo                               0.4724+-0.0521            0.4425+-0.0129          might be 1.0677x faster
   negative-zero-negate                               0.4352+-0.0347     ?      0.5251+-0.2243        ? might be 1.2065x slower
   nested-function-parsing                           47.8448+-0.4125     ?     48.0353+-1.0171        ?
   new-array-buffer-dead                            118.5815+-1.0909     ^     49.3545+-1.1402        ^ definitely 2.4027x faster
   new-array-buffer-push                              8.5349+-0.4158            8.4177+-0.4694          might be 1.0139x faster
   new-array-dead                                    18.5445+-0.7297     ?     19.6522+-0.6569        ? might be 1.0597x slower
   new-array-push                                     7.9772+-0.1574     ?      8.0108+-0.3163        ?
   no-inline-constructor                             45.8046+-0.8493           45.5667+-1.0700        
   number-test                                        4.0118+-0.0433            4.0016+-0.0770        
   object-closure-call                                6.9542+-0.1025            6.8672+-0.1217          might be 1.0127x faster
   object-test                                        3.6812+-0.0715     ?      3.6836+-0.0417        ?
   obvious-sink-pathology-taken                     138.1554+-0.8490          137.7163+-1.6098        
   obvious-sink-pathology                           130.8601+-0.6464     ?    131.1322+-1.0614        ?
   obviously-elidable-new-object                     40.2645+-1.1233     ?     40.6797+-0.3004        ? might be 1.0103x slower
   plus-boolean-arith                                 3.3199+-0.0327     ?      3.3432+-0.1002        ?
   plus-boolean-double                                4.3736+-0.0593            4.3490+-0.0402        
   plus-boolean                                       3.6628+-0.1073     ?      3.7390+-0.3543        ? might be 1.0208x slower
   poly-chain-access-different-prototypes-simple   
                                                      3.8379+-0.0830            3.7841+-0.0509          might be 1.0142x faster
   poly-chain-access-different-prototypes             3.6077+-0.2217            3.5159+-0.0415          might be 1.0261x faster
   poly-chain-access-simpler                          3.8427+-0.0638     ^      3.7580+-0.0187        ^ definitely 1.0225x faster
   poly-chain-access                                  3.4819+-0.0563     ?      3.4951+-0.0212        ?
   poly-stricteq                                     72.7793+-0.1841     ?     73.5795+-0.7440        ? might be 1.0110x slower
   polymorphic-array-call                             1.6809+-0.0925            1.6586+-0.0645          might be 1.0134x faster
   polymorphic-get-by-id                              4.0480+-0.0625     ?      4.1561+-0.2835        ? might be 1.0267x slower
   polymorphic-put-by-id                             36.5878+-1.6693           35.9707+-1.2047          might be 1.0172x faster
   polymorphic-structure                             19.0585+-0.6926           18.8691+-0.1558          might be 1.0100x faster
   polyvariant-monomorphic-get-by-id                  9.8488+-0.9159            9.2648+-0.9817          might be 1.0630x faster
   proto-getter-access                               11.4511+-0.1575           11.4241+-0.1745        
   put-by-id-replace-and-transition                  10.6160+-0.4122     ?     11.1586+-0.9840        ? might be 1.0511x slower
   put-by-id-slightly-polymorphic                     3.6502+-0.0279     ?      3.7246+-0.0799        ? might be 1.0204x slower
   put-by-id                                         13.6373+-0.9256           13.5017+-0.5931          might be 1.0100x faster
   put-by-val-direct                                  0.4875+-0.0543     ?      0.5113+-0.0875        ? might be 1.0489x slower
   put-by-val-large-index-blank-indexing-type   
                                                     16.0518+-0.9295           15.8452+-0.3139          might be 1.0130x faster
   put-by-val-machine-int                             3.4543+-0.1147            3.4233+-0.0975        
   rare-osr-exit-on-local                            20.8619+-0.1650     ?     21.0890+-0.1751        ? might be 1.0109x slower
   register-pressure-from-osr                         5.9394+-0.2826     ?      6.1133+-0.7807        ? might be 1.0293x slower
   repeat-multi-get-by-offset                        31.5610+-0.8101     ?     31.6165+-0.6159        ?
   setter-prototype                                  10.6701+-0.2761           10.5892+-0.3188        
   setter                                             7.3477+-0.4872     ?      8.3250+-1.7170        ? might be 1.1330x slower
   simple-activation-demo                            35.1720+-0.3464     ?     35.3663+-0.7147        ?
   simple-getter-access                              14.7541+-0.3616     ?     14.7627+-0.3466        ?
   simple-poly-call-nested                           12.3137+-0.7938           12.1593+-0.8076          might be 1.0127x faster
   simple-poly-call                                   1.6800+-0.0434     ?      1.8280+-0.2925        ? might be 1.0881x slower
   sin-boolean                                       25.7398+-2.2997           25.2312+-0.3665          might be 1.0202x faster
   singleton-scope                                   81.8487+-0.0915           81.8279+-0.0945        
   sink-function                                     13.3206+-1.2674     ?     13.9239+-1.1223        ? might be 1.0453x slower
   sink-huge-activation                              23.0592+-0.6424           22.2062+-0.6106          might be 1.0384x faster
   sinkable-new-object-dag                           80.0572+-0.7412     ?     80.6264+-1.5414        ?
   sinkable-new-object-taken                         61.2653+-0.9561     ?     62.2662+-2.0414        ? might be 1.0163x slower
   sinkable-new-object                               43.1818+-0.8687           42.7889+-0.9062        
   slow-array-profile-convergence                     3.7372+-0.3267     ?      3.8503+-0.2455        ? might be 1.0303x slower
   slow-convergence                                   4.9179+-0.3578            4.7169+-0.2165          might be 1.0426x faster
   slow-ternaries                                    23.9500+-0.3589           23.7406+-0.2095        
   sorting-benchmark                                 24.1223+-0.7836           23.9695+-0.5262        
   sparse-conditional                                 1.5525+-0.0430     ?      1.5703+-0.0649        ? might be 1.0115x slower
   splice-to-remove                                  18.0640+-0.4263           17.8163+-0.2964          might be 1.0139x faster
   string-char-code-at                               20.9621+-0.1453     ?     21.5082+-0.9427        ? might be 1.0261x slower
   string-concat-object                               3.0443+-0.1335     ?      3.2043+-0.1440        ? might be 1.0526x slower
   string-concat-pair-object                          3.0833+-0.1642            3.0798+-0.1456        
   string-concat-pair-simple                         12.7252+-0.5495     ?     12.8010+-0.2464        ?
   string-concat-simple                              13.0702+-0.4167           12.8462+-0.2121          might be 1.0174x faster
   string-cons-repeat                                 9.2720+-0.3023            9.2301+-0.3010        
   string-cons-tower                                  9.5595+-0.2224     ?      9.9779+-0.4568        ? might be 1.0438x slower
   string-equality                                   22.0387+-0.6523           22.0360+-0.4991        
   string-get-by-val-big-char                         9.5002+-0.1965            9.4671+-0.2981        
   string-get-by-val-out-of-bounds-insane             4.5863+-0.0573     ?      4.6139+-0.0987        ?
   string-get-by-val-out-of-bounds                    5.9871+-0.1484            5.9525+-0.1265        
   string-get-by-val                                  3.9886+-0.0507     ?      4.0578+-0.1186        ? might be 1.0173x slower
   string-hash                                        2.6060+-0.1568            2.5478+-0.0208          might be 1.0229x faster
   string-long-ident-equality                        18.3726+-0.1092     ?     18.4144+-0.0605        ?
   string-out-of-bounds                              15.2758+-0.6553           14.8133+-0.1615          might be 1.0312x faster
   string-repeat-arith                               39.8111+-0.9496     ^     38.6082+-0.2004        ^ definitely 1.0312x faster
   string-sub                                        76.9996+-0.5420     ?     77.6253+-0.8932        ?
   string-test                                        3.9615+-0.1608            3.8263+-0.0392          might be 1.0353x faster
   string-var-equality                               36.9857+-0.4432           36.5289+-0.1707          might be 1.0125x faster
   structure-hoist-over-transitions                   3.3840+-0.1126     ?      3.4619+-0.0576        ? might be 1.0230x slower
   substring-concat-weird                            53.1941+-1.1301     ?     53.7129+-0.8164        ?
   substring-concat                                  56.8217+-0.8451     ?     56.8410+-0.5339        ?
   substring                                         65.3829+-1.4530     ?     65.5586+-0.6381        ?
   switch-char-constant                               3.8552+-0.1248     ?      3.9842+-0.2837        ? might be 1.0335x slower
   switch-char                                        8.5063+-1.6512            7.9098+-0.8490          might be 1.0754x faster
   switch-constant                                   11.2163+-0.8718           11.1184+-0.9024        
   switch-string-basic-big-var                       23.5643+-0.2173     ?     23.6774+-0.3469        ?
   switch-string-basic-big                           20.9624+-0.3239           20.7684+-0.2432        
   switch-string-basic-var                           18.9980+-0.1669     ?     19.1134+-0.2584        ?
   switch-string-basic                               18.1254+-0.4472           17.9694+-0.1969        
   switch-string-big-length-tower-var                25.6084+-0.2331           25.5317+-0.3021        
   switch-string-length-tower-var                    18.6718+-0.0531     ?     18.7151+-0.1059        ?
   switch-string-length-tower                        16.6176+-0.2060           16.5128+-0.1039        
   switch-string-short                               16.6564+-0.0606     ?     16.8316+-0.2448        ? might be 1.0105x slower
   switch                                            16.3107+-0.4277     ?     16.4823+-0.8291        ? might be 1.0105x slower
   tear-off-arguments-simple                          4.3913+-0.2278     ?      4.5393+-0.2600        ? might be 1.0337x slower
   tear-off-arguments                                 6.0424+-0.0783            6.0299+-0.1470        
   temporal-structure                                17.3840+-0.1829           17.3577+-0.1574        
   to-int32-boolean                                  19.3539+-0.6558           19.1743+-0.3015        
   try-catch-get-by-val-cloned-arguments             19.1593+-0.4465           18.8738+-0.2744          might be 1.0151x faster
   try-catch-get-by-val-direct-arguments              8.6525+-0.8551            8.3850+-0.1716          might be 1.0319x faster
   try-catch-get-by-val-scoped-arguments             10.0625+-0.1900            9.9945+-0.2922        
   typed-array-get-set-by-val-profiling              46.8158+-1.2169           46.3362+-1.4625          might be 1.0104x faster
   undefined-property-access                        319.9773+-0.8668     ?    320.5708+-4.1957        ?
   undefined-test                                     3.9632+-0.0764     ?      4.0177+-0.0643        ? might be 1.0137x slower
   unprofiled-licm                                   20.2107+-0.2221     ?     20.3387+-0.4070        ?
   varargs-call                                      21.9235+-5.3047           19.9691+-0.2650          might be 1.0979x faster
   varargs-construct-inline                          31.7065+-0.6824           31.5653+-1.0934        
   varargs-construct                                 28.2440+-0.5799     ?     28.6754+-0.8143        ? might be 1.0153x slower
   varargs-inline                                    11.9604+-0.1035           11.9303+-0.1844        
   varargs-strict-mode                               13.1782+-0.2213           13.0566+-0.0477        
   varargs                                           13.0565+-0.2212           13.0381+-0.0870        
   weird-inlining-const-prop                          3.8135+-0.4373     ?      4.0838+-0.3660        ? might be 1.0709x slower

   &lt;geometric&gt;                                       10.8172+-0.0325           10.7937+-0.0109          might be 1.0022x faster

                                                           ToT                   SinkNewArray                                   
AsmBench:
   bigfib.cpp                                       657.2799+-2.4528          653.6757+-2.6926        
   cray.c                                           587.7290+-1.5785          587.4943+-1.3100        
   dry.c                                            647.4288+-21.8845         646.5314+-21.6164       
   FloatMM.c                                       1028.2790+-0.8189     ?   1028.3118+-0.7698        ?
   gcc-loops.cpp                                   5161.3079+-64.7876        5148.0117+-31.1622       
   n-body.c                                        1239.3692+-0.7884         1239.1803+-1.5246        
   Quicksort.c                                      609.8112+-4.9962          606.2788+-6.5283        
   stepanov_container.cpp                          5212.8597+-30.7388        5209.5727+-21.0209       
   Towers.c                                         336.7882+-3.5738     ?    338.3530+-3.7189        ?

   &lt;geometric&gt;                                     1064.8455+-3.8058         1063.4640+-6.0580          might be 1.0013x faster

                                                           ToT                   SinkNewArray                                   
CompressionBench:
   huffman                                          491.5022+-7.2746     ^    455.2397+-2.1972        ^ definitely 1.0797x faster
   arithmetic-simple                                429.4030+-2.0403     ?    430.2218+-5.3695        ?
   arithmetic-precise                               381.4248+-3.2050     ?    385.9755+-7.7131        ? might be 1.0119x slower
   arithmetic-complex-precise                       361.7280+-1.2594     ?    404.9041+-75.8409       ? might be 1.1194x slower
   arithmetic-precise-order-0                       440.7911+-1.8671     ?    441.7456+-1.8906        ?
   arithmetic-precise-order-1                       431.7844+-3.3963     ?    433.5873+-2.9876        ?
   arithmetic-precise-order-2                       497.8798+-4.6494          493.6587+-3.4099        
   arithmetic-simple-order-1                        491.8870+-2.7251     ?    492.3499+-2.8869        ?
   arithmetic-simple-order-2                        694.2440+-150.6608        605.1494+-8.6717          might be 1.1472x faster
   lz-string                                        422.5778+-4.2735     ?    426.8592+-7.9342        ? might be 1.0101x slower

   &lt;geometric&gt;                                      456.3962+-9.1992          453.0402+-8.6506          might be 1.0074x faster

                                                           ToT                   SinkNewArray                                   
Geomean of preferred means:
   &lt;scaled-result&gt;                                   78.8809+-0.4273           78.5663+-0.2481          might be 1.0040x faster</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101992</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-15 12:10:41 -0700</bug_when>
    <thetext>Attachment 254880 did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGObjectAllocationSinkingPhase.cpp:1031:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGObjectAllocationSinkingPhase.cpp:1043:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGObjectAllocationSinkingPhase.cpp:1057:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGObjectAllocationSinkingPhase.cpp:1285:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 4 in 24 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>1101999</commentid>
    <comment_count>13</comment_count>
      <attachid>254887</attachid>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-06-15 12:27:20 -0700</bug_when>
    <thetext>Created attachment 254887
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1102003</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-15 12:30:12 -0700</bug_when>
    <thetext>Attachment 254887 did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGObjectAllocationSinkingPhase.cpp:1033:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGObjectAllocationSinkingPhase.cpp:1045:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGObjectAllocationSinkingPhase.cpp:1059:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGObjectAllocationSinkingPhase.cpp:1287:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 4 in 24 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>1102072</commentid>
    <comment_count>15</comment_count>
      <attachid>254887</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-06-15 15:33:50 -0700</bug_when>
    <thetext>Comment on attachment 254887
Patch

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

&gt; Source/JavaScriptCore/dfg/DFGPromoteHeapAccess.h:36
&gt; +static inline bool indexIsInBounds(Node* base, Node* index, Array::Type type)

No need to say &quot;static&quot;.

&gt; Source/JavaScriptCore/dfg/DFGPromoteHeapAccess.h:39
&gt; +    if (!index-&gt;isMachineIntConstant())
&gt; +        return false;

Just use int32.

&gt; Source/JavaScriptCore/dfg/DFGPromoteHeapAccess.h:71
&gt; +    if (index-&gt;asMachineInt() &lt; 0 || index-&gt;asMachineInt() &gt;= length)

Ditto.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254197</attachid>
            <date>2015-06-03 12:39:58 -0700</date>
            <delta_ts>2015-06-15 10:11:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145610-20150603123938.patch</filename>
            <type>text/plain</type>
            <size>35090</size>
            <attacher name="Basile Clement">basile_clement</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg1MTU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
NTlhOTIwZDA1MDkxNjJmODhlNGYzOGMzN2ExZmVkMmY2NThjZTdhLi4wYzI3ZjYwMDFjYjFmOGZm
ZWM3MjBkY2RlNzVkMmZlNzg2MzZhODZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NyBAQAorMjAxNS0wNi0wMyAgQmFzaWxlIENsZW1lbnQgIDxiYXNpbGVfY2xlbWVudEBh
cHBsZS5jb20+CisKKyAgICAgICAgT2JqZWN0IGFsbG9jYXRpb24gc2lua2luZyBwaGFzZSBzaG91
bGQgc2luayBOZXdBcnJheSBhbmQgTmV3QXJyYXlCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NTYxMAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2hzIGFsbG93IHRoZSBvYmplY3Qg
YWxsb2NhdGlvbiBzaW5raW5nIHBoYXNlIHRvIHNpbmsgTmV3QXJyYXkKKyAgICAgICAgYW5kIE5l
d0FycmF5QnVmZmVyIG5vZGVzLgorCisgICAgICAgIEZvciBzaW1wbGljaXR5LCB3ZSBvbmx5IHNp
bmsgdGhyb3VnaCBQdXRCeVZhbCB3aGVyZSB0aGUgaW5kZXggaXMKKyAgICAgICAgY29uc3RhbnQs
IGFuZCBvbmx5IGxvd2VyIHNpbWlsYXJpbHkgR2V0QnlWYWwgd2hlcmUgdGhlIGluZGV4IGlzCisg
ICAgICAgIGNvbnN0YW50LgorICAgICAgICBUaGlzIG1lYW5zIHRoYXQgdGhlbiBsZW5ndGggb2Yg
dGhlIGFycmF5IGRvZXNuJ3QgY2hhbmdlLCBhbmQgd2UgY2FuCisgICAgICAgIG1hdGVyaWFsaXpl
IHVzaW5nIGEgZnJlc2ggTmV3QXJyYXkgbm9kZSBvdmVyIHRoZSBQaGkgZnVuY3Rpb25zLgorCisg
ICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChK
U0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVF
ZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpE
Rkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RG
R01heUV4aXQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Om1heUV4aXQpOgorICAgICAgICAqIGRm
Zy9ERkdOb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpjb252ZXJ0VG9QdXRIaW50
KToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmNv
bnZlcnRUb1BoYW50b21OZXdBcnJheSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aXNBcnJh
eUFsbG9jYXRpb24pOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmlzUGhhbnRvbUFycmF5QWxs
b2NhdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aXNQaGFudG9tQWxsb2NhdGlvbik6
CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgICogZGZnL0RGR09iamVjdEFs
bG9jYXRpb25TaW5raW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9iamVjdEFsbG9j
YXRpb25TaW5raW5nUGhhc2U6OmRldGVybWluZU1hdGVyaWFsaXphdGlvblBvaW50cyk6CisgICAg
ICAgIChKU0M6OkRGRzo6T2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZTo6cGxhY2VNYXRlcmlh
bGl6YXRpb25Qb2ludHMpOgorICAgICAgICAoSlNDOjpERkc6Ok9iamVjdEFsbG9jYXRpb25TaW5r
aW5nUGhhc2U6Omxvd2VyTm9uUmVhZGluZ09wZXJhdGlvbnNPblBoYW50b21BbGxvY2F0aW9ucyk6
CisgICAgICAgIChKU0M6OkRGRzo6T2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZTo6Zm9sbG93
QnV0dGVyZmxpZXMpOgorICAgICAgICAoSlNDOjpERkc6Ok9iamVjdEFsbG9jYXRpb25TaW5raW5n
UGhhc2U6OmhhbmRsZU5vZGUpOgorICAgICAgICAoSlNDOjpERkc6Ok9iamVjdEFsbG9jYXRpb25T
aW5raW5nUGhhc2U6OmNyZWF0ZU1hdGVyaWFsaXplKToKKyAgICAgICAgKEpTQzo6REZHOjpPYmpl
Y3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlOjpwb3B1bGF0ZU1hdGVyaWFsaXplKToKKyAgICAgICAg
KiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OlByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlOjpwcm9wYWdhdGUpOgorICAgICAgICAqIGRm
Zy9ERkdQcm9tb3RlSGVhcEFjY2Vzcy5oOgorICAgICAgICAoSlNDOjpERkc6OnByb21vdGVIZWFw
QWNjZXNzKToKKyAgICAgICAgKiBkZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uY3BwOgorICAg
ICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBkZmcvREZHUHJvbW90ZWRIZWFw
TG9jYXRpb24uaDoKKyAgICAgICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAo
SlNDOjpERkc6OnNhZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6
CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHVmFsaWRhdGUu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlZhbGlkYXRlOjp2YWxpZGF0ZUNQUyk6CisgICAgICAg
ICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGls
ZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcDoKKyAgICAgICAgKEpTQzo6
RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZU5vZGUpOgorICAgICAgICAqIGZ0bC9GVExPcGVy
YXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpvcGVyYXRpb25NYXRlcmlhbGl6ZU9iamVj
dEluT1NSKToKKwogMjAxNS0wNi0wMiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAK
ICAgICAgICAgR2FyZGVuaW5nOiBmaXggYnJva2VuIENMb29wIGJ1aWxkLgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5l
cy5oCmluZGV4IDg2MWViNjFmNDRmODE2N2IyOWQ5MDRlYTNjYjUxNjIxNmFlYTJiZGYuLjdhZmU1
MzQ4OTVmZjZjZGI2OGI3NTNkMDlmNGYyZWNmZmQ2MjA1MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgK
QEAgLTE1NjUsNiArMTU2NSw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0
YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIGJy
ZWFrOwogICAgICAgICAKICAgICBjYXNlIFBoYW50b21OZXdPYmplY3Q6CisgICAgY2FzZSBQaGFu
dG9tTmV3QXJyYXk6CiAgICAgY2FzZSBQaGFudG9tTmV3RnVuY3Rpb246CiAgICAgY2FzZSBQaGFu
dG9tQ3JlYXRlQWN0aXZhdGlvbjoKICAgICBjYXNlIFBoYW50b21EaXJlY3RBcmd1bWVudHM6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IDkwNWRkMGNlMzkz
NTkyZTdiMjFlOTZhY2ZiYjI4OTE3NTA3MGY1YTEuLmIyNDc4YzA5Y2YwMzYxNGE2MDg3YzQ2NTEz
N2JlN2M5YjljYmY4MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6
ZS5oCkBAIC05NDQsNiArOTQ0LDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9k
ZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICBjYXNl
IE5ld1JlZ2V4cDoKICAgICBjYXNlIE5ld1N0cmluZ09iamVjdDoKICAgICBjYXNlIFBoYW50b21O
ZXdPYmplY3Q6CisgICAgY2FzZSBQaGFudG9tTmV3QXJyYXk6CiAgICAgY2FzZSBNYXRlcmlhbGl6
ZU5ld09iamVjdDoKICAgICBjYXNlIFBoYW50b21OZXdGdW5jdGlvbjoKICAgICBjYXNlIFBoYW50
b21DcmVhdGVBY3RpdmF0aW9uOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3Bw
CmluZGV4IDU5NDY4NDBkMmY4ODA5NTc5NjkxYzY4Zjk2YzAwZDc1ZDE1YTZiODQuLmUzOTk4ZjYw
OTNjZjkyYTA3MWM1NjFmM2E0NDQ3ZThlNmViOWIyYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0RvZXNHQy5jcHAKQEAgLTE5OCw2ICsxOTgsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYg
Z3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDaGVja0JhZENlbGw6CiAgICAgY2FzZSBCb3R0
b21WYWx1ZToKICAgICBjYXNlIFBoYW50b21OZXdPYmplY3Q6CisgICAgY2FzZSBQaGFudG9tTmV3
QXJyYXk6CiAgICAgY2FzZSBQaGFudG9tTmV3RnVuY3Rpb246CiAgICAgY2FzZSBQaGFudG9tQ3Jl
YXRlQWN0aXZhdGlvbjoKICAgICBjYXNlIFBoYW50b21EaXJlY3RBcmd1bWVudHM6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCBiNGUzZjNjYmNlMjgz
ZDZhNWJiMTM1NGJkOGJmOWJkNjBjOWJmMjMyLi4zZDRmMDliMTRkYTg1OTFhYzRlODg4NTEyY2Zh
ZTE4YTIwZmUzZDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFz
ZS5jcHAKQEAgLTExMDIsNiArMTEwMiw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgSWRlbnRp
dHk6IC8vIFRoaXMgc2hvdWxkIGhhdmUgYmVlbiBjbGVhbmVkIHVwLgogICAgICAgICBjYXNlIEJv
b2xlYW5Ub051bWJlcjoKICAgICAgICAgY2FzZSBQaGFudG9tTmV3T2JqZWN0OgorICAgICAgICBj
YXNlIFBoYW50b21OZXdBcnJheToKICAgICAgICAgY2FzZSBQaGFudG9tTmV3RnVuY3Rpb246CiAg
ICAgICAgIGNhc2UgUGhhbnRvbUNyZWF0ZUFjdGl2YXRpb246CiAgICAgICAgIGNhc2UgUGhhbnRv
bURpcmVjdEFyZ3VtZW50czoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTWF5RXhpdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3Bw
CmluZGV4IDQ2MzFlY2Q1NjFjNzhiZDQ4OWVkZGFkYzhmZmU1N2Y5ODlkOWI3ZmMuLmU1YzZjMzUy
YmZjYTYxZjZhNzVhYzJiMzZhMDE1YWI4YjRhMmU1NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdNYXlFeGl0LmNwcApAQCAtMTAyLDYgKzEwMiw3IEBAIGJvb2wgbWF5RXhpdChHcmFw
aCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBCb3R0b21WYWx1ZToKICAgICBjYXNlIFB1
dEhpbnQ6CiAgICAgY2FzZSBQaGFudG9tTmV3T2JqZWN0OgorICAgIGNhc2UgUGhhbnRvbU5ld0Fy
cmF5OgogICAgIGNhc2UgUHV0U3RhY2s6CiAgICAgY2FzZSBLaWxsU3RhY2s6CiAgICAgY2FzZSBH
ZXRTdGFjazoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuY3BwCmluZGV4IDZhOTg1MzQy
NDY4NzFiYTZiOTU5YzBiMzI0ZTc3NzdhMjliNDJhMjMuLjVmOTRjMTkzN2Y2ZjhkYzBlNGQyY2E2
OTg4Mzk4OWQyZGJjYjg0NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNwcApA
QCAtMTYyLDcgKzE2Miw3IEBAIHZvaWQgTm9kZTo6Y29udmVydFRvSWRlbnRpdHlPbihOb2RlKiBj
aGlsZCkKIAogdm9pZCBOb2RlOjpjb252ZXJ0VG9QdXRIaW50KGNvbnN0IFByb21vdGVkTG9jYXRp
b25EZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBOb2RlKiBiYXNlLCBOb2RlKiB2YWx1ZSkKIHsKLSAg
ICBtX29wID0gUHV0SGludDsKKyAgICBzZXRPcEFuZERlZmF1bHRGbGFncyhQdXRIaW50KTsKICAg
ICBtX29wSW5mbyA9IGRlc2NyaXB0b3IuaW1tMSgpLm1fdmFsdWU7CiAgICAgbV9vcEluZm8yID0g
ZGVzY3JpcHRvci5pbW0yKCkubV92YWx1ZTsKICAgICBjaGlsZDEoKSA9IGJhc2UtPmRlZmF1bHRF
ZGdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IGI3YzY4OTUyZjIyMDEw
ODllMDZjYWQyOGJlMjdiMzU3MGM4N2U0NTcuLjhhMzUyZmIyNDgwYzhkZWEzYTdjMDZlNmJjYjEw
NDcyYWFhODIxOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC01ODIsNiAr
NTgyLDE3IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgY2hpbGRyZW4gPSBBZGphY2VuY3lMaXN0
KCk7CiAgICAgfQogCisgICAgdm9pZCBjb252ZXJ0VG9QaGFudG9tTmV3QXJyYXkoKQorICAgIHsK
KyAgICAgICAgQVNTRVJUKG1fb3AgPT0gTmV3QXJyYXkgfHwgbV9vcCA9PSBOZXdBcnJheUJ1ZmZl
cik7CisgICAgICAgIG1fb3AgPSBQaGFudG9tTmV3QXJyYXk7CisgICAgICAgIG1fZmxhZ3MgJj0g
fk5vZGVIYXNWYXJBcmdzOworICAgICAgICBtX2ZsYWdzIHw9IE5vZGVNdXN0R2VuZXJhdGU7Cisg
ICAgICAgIG1fb3BJbmZvID0gMDsKKyAgICAgICAgbV9vcEluZm8yID0gMDsKKyAgICAgICAgY2hp
bGRyZW4gPSBBZGphY2VuY3lMaXN0KCk7CisgICAgfQorCiAgICAgdm9pZCBjb252ZXJ0VG9QaGFu
dG9tTmV3RnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fb3AgPT0gTmV3RnVuY3Rp
b24pOwpAQCAtMTQ2OCw2ICsxNDc5LDI3IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgfQogICAg
IH0KICAgICAKKyAgICBib29sIGlzQXJyYXlBbGxvY2F0aW9uKCkKKyAgICB7CisgICAgICAgIHN3
aXRjaCAob3AoKSkgeworICAgICAgICBjYXNlIE5ld0FycmF5OgorICAgICAgICBjYXNlIE5ld0Fy
cmF5QnVmZmVyOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBib29sIGlz
UGhhbnRvbUFycmF5QWxsb2NhdGlvbigpCisgICAgeworICAgICAgICBzd2l0Y2ggKG9wKCkpIHsK
KyAgICAgICAgY2FzZSBQaGFudG9tTmV3QXJyYXk6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQor
ICAgIH0KKwogICAgIGJvb2wgaXNBY3RpdmF0aW9uQWxsb2NhdGlvbigpCiAgICAgewogICAgICAg
ICBzd2l0Y2ggKG9wKCkpIHsKQEAgLTE0OTMsNiArMTUyNSw3IEBAIHN0cnVjdCBOb2RlIHsKICAg
ICB7CiAgICAgICAgIHN3aXRjaCAob3AoKSkgewogICAgICAgICBjYXNlIFBoYW50b21OZXdPYmpl
Y3Q6CisgICAgICAgIGNhc2UgUGhhbnRvbU5ld0FycmF5OgogICAgICAgICBjYXNlIFBoYW50b21E
aXJlY3RBcmd1bWVudHM6CiAgICAgICAgIGNhc2UgUGhhbnRvbUNsb25lZEFyZ3VtZW50czoKICAg
ICAgICAgY2FzZSBQaGFudG9tTmV3RnVuY3Rpb246CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGVUeXBlLmgKaW5kZXggNjlmNmFlNWVjOTk2YmJjOGM5NDUwZDM0NDhiMDY4NGE4MjliZjY5
MC4uYzBkMThlNTUxNTY2MzNjODkxMjY1ZDEyOTM2MDg1YTBjNjEzMzU3NSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtMjUyLDYgKzI1Miw3IEBAIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBcCiAgICAgLyogU3VwcG9ydCBmb3IgYWxsb2Nh
dGlvbiBzaW5raW5nLiAqL1wKICAgICBtYWNybyhQaGFudG9tTmV3T2JqZWN0LCBOb2RlUmVzdWx0
SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oUGhhbnRvbU5ld0FycmF5LCBOb2Rl
UmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oUHV0SGludCwgTm9kZU11
c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKENoZWNrU3RydWN0dXJlSW1tZWRpYXRlLCBOb2RlTXVz
dEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oTWF0ZXJpYWxpemVOZXdPYmplY3QsIE5vZGVSZXN1bHRK
UyB8IE5vZGVIYXNWYXJBcmdzKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAppbmRleCA1ODRl
MTYwNjUwNDZiZGU1NjA0OTU4M2U4YTc3YjRhMGFiZWMzYWE4Li5lZjdlOWQzNDEyOTA5ZWY4OWM1
YWEzYTczNDMyZjk1OWVlNjcwYWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAKQEAgLTE2
OSw2ICsxNjksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGVy
aWFsaXplZC5hZGQobm9kZSwgZmFsc2UpOwogICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAg
ICAgICAgICAgICAgICAgICAgICAgIFsmXSAoTm9kZSogZXNjYXBlZSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGVzY2FwZWUgPSBmb2xsb3dCdXR0ZXJmbGllcyhlc2NhcGVlKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIGl0ZXIgPSBtYXRlcmlhbGl6ZWQuZmluZChl
c2NhcGVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlciAhPSBtYXRlcmlh
bGl6ZWQuZW5kKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJv
c2UpCkBAIC0yODgsNiArMjg5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgbm9k
ZSwKICAgICAgICAgICAgICAgICAgICAgWyZdICgpIHsgfSwKICAgICAgICAgICAgICAgICAgICAg
WyZdIChOb2RlKiBlc2NhcGVlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBlc2NhcGVlID0g
Zm9sbG93QnV0dGVyZmxpZXMoZXNjYXBlZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJTZWVpbmcgIiwg
ZXNjYXBlZSwgIiBlc2NhcGUgYXQgIiwgbm9kZSwgIlxuIik7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAKQEAgLTQ0OCw4ICs0NTAsMjEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBtX2dy
YXBoLmRvVG9DaGlsZHJlbigKICAgICAgICAgICAgICAgICAgICAgbm9kZSwKICAgICAgICAgICAg
ICAgICAgICAgWyZdIChFZGdlJiBlZGdlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAo
Tm9kZSogbWF0ZXJpYWxpemUgPSBtYXBwaW5nLmdldChlZGdlLm5vZGUoKSkpCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZWRnZS5zZXROb2RlKG1hdGVyaWFsaXplKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHN3aXRjaCAoZWRnZS0+b3AoKSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgY2FzZSBHZXRCdXR0ZXJmbHk6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb2Rl
KiB0YXJnZXQgPSBlZGdlLT5jaGlsZDEoKS5ub2RlKCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKE5vZGUqIG1hdGVyaWFsaXplID0gbWFwcGluZy5nZXQodGFyZ2V0KSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZGdlLnNldE5vZGUobV9pbnNlcnRpb25TZXQu
aW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVJbmRl
eCwgU3BlY05vbmUsIEdldEJ1dHRlcmZseSwgbm9kZS0+b3JpZ2luLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRWRnZShtYXRlcmlhbGl6ZSwgS25vd25DZWxsVXNlKSkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoTm9kZSogbWF0
ZXJpYWxpemUgPSBtYXBwaW5nLmdldChlZGdlLm5vZGUoKSkpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGVkZ2Uuc2V0Tm9kZShtYXRlcmlhbGl6ZSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgICAgIC8vIElmIHlvdSBjYXVzZSBhbiBlc2NhcGUsIHlvdSBzaG91bGRuJ3Qgc2Vl
IHRoZSBvcmlnaW5hbCBlc2NhcGVlLgpAQCAtNDU4LDYgKzQ3Myw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgICAgICAgICBub2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgWyZdICgp
IHsgfSwKICAgICAgICAgICAgICAgICAgICAgICAgIFsmXSAoTm9kZSogZXNjYXBlZSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGVzY2FwZWUgPSBmb2xsb3dCdXR0ZXJmbGllcyhlc2Nh
cGVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG5v
ZGUsICFtX3NpbmtDYW5kaWRhdGVzLmNvbnRhaW5zKGVzY2FwZWUpKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgIH0KQEAgLTQ4NCw2ICs1MDAsMjEgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuZXhlY3V0ZShi
bG9jayk7CiAgICAgICAgIH0KKworICAgICAgICAvLyBXZSBuZWVkIHRvIHJlbW92ZSB0aGUgR2V0
QnV0dGVyZmx5IG5vZGVzIG92ZXIgcGhhbnRvbSBhbGxvY2F0aW9uCisgICAgICAgIGZvciAoQmFz
aWNCbG9jayogYmxvY2sgOiBtX2dyYXBoLmJsb2Nrc0luTmF0dXJhbE9yZGVyKCkpIHsKKyAgICAg
ICAgICAgIGZvciAoTm9kZSogbm9kZSA6ICpibG9jaykgeworICAgICAgICAgICAgICAgIHN3aXRj
aCAobm9kZS0+b3AoKSkgeworICAgICAgICAgICAgICAgIGNhc2UgR2V0QnV0dGVyZmx5OgorICAg
ICAgICAgICAgICAgICAgICBpZiAobV9zaW5rQ2FuZGlkYXRlcy5jb250YWlucyhub2RlLT5jaGls
ZDEoKS5ub2RlKCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+cmVtb3ZlKCk7Cisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQorICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAvLyBBdCB0aGlzIHBvaW50IHdlIGhhdmUg
ZHVtbXkgbWF0ZXJpYWxpemF0aW9uIG5vZGVzIGFsb25nIHdpdGggZWRnZXMgdG8gdGhlbS4gVGhp
cyBtZWFucwogICAgICAgICAvLyB0aGF0IHRoZSBwYXJ0IG9mIHRoZSBjb250cm9sIGZsb3cgZ3Jh
cGggdGhhdCBwcmVmZXJzIHRvIHNlZSBhY3R1YWwgb2JqZWN0IGFsbG9jYXRpb25zCkBAIC01MDks
NiArNTQwLDM0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICAgIH0KIAorICAgICAgICAgICAgICAgIGNhc2UgUHV0QnlWYWw6IHsKKyAgICAgICAg
ICAgICAgICAgICAgQXJyYXlNb2RlIG1vZGUgPSBub2RlLT5hcnJheU1vZGUoKTsKKyAgICAgICAg
ICAgICAgICAgICAgTm9kZSogYmFzZSA9IG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCkubm9k
ZSgpOworICAgICAgICAgICAgICAgICAgICBOb2RlKiBpbmRleCA9IG1fZ3JhcGgudmFyQXJnQ2hp
bGQobm9kZSwgMSkubm9kZSgpOworICAgICAgICAgICAgICAgICAgICBOb2RlKiB2YWx1ZSA9IG1f
Z3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMikubm9kZSgpOworCisgICAgICAgICAgICAgICAgICAg
IGlmIChtb2RlLmlzSW5Cb3VuZHMoKQorICAgICAgICAgICAgICAgICAgICAgICAgJiYgYmFzZS0+
aXNQaGFudG9tQXJyYXlBbGxvY2F0aW9uKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICYmIG1f
c2lua0NhbmRpZGF0ZXMuY29udGFpbnMoYmFzZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICYm
IGluZGV4LT5pc0NvbnN0YW50KCkKKyAgICAgICAgICAgICAgICAgICAgICAgICYmIGluZGV4LT5j
b25zdGFudCgpLT52YWx1ZSgpLmlzVUludDMyKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHN3aXRjaCAobW9kZS5tb2RlRm9yUHV0KCkudHlwZSgpKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBjYXNlIEFycmF5OjpJbnQzMjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgQXJy
YXk6OkRvdWJsZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkNvbnRpZ3Vv
dXM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvUHV0SGludCgK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0
b3IoSW5kZXhlZFByb3BlcnR5UExvYywgaW5kZXgtPmNvbnN0YW50KCktPnZhbHVlKCkuYXNVSW50
MzIoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICB9CisKICAgICAgICAgICAgICAgICBjYXNlIFB1dENsb3N1cmVWYXI6IHsKICAgICAgICAg
ICAgICAgICAgICAgTm9kZSogdGFyZ2V0ID0gbm9kZS0+Y2hpbGQxKCkubm9kZSgpOwogICAgICAg
ICAgICAgICAgICAgICBpZiAobV9zaW5rQ2FuZGlkYXRlcy5jb250YWlucyh0YXJnZXQpKSB7CkBA
IC01NjMsNiArNjIyLDcwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgICAgIH0KIAorICAgICAgICAgICAgICAgIGNhc2UgTmV3QXJyYXk6IHsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKG1fc2lua0NhbmRpZGF0ZXMuY29udGFpbnMobm9kZSkpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIE5vZGUqIGFycmF5U3RydWN0dXJlID0KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnRDb25zdGFudCgKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZUluZGV4ICsgMSwgbm9kZS0+b3JpZ2luLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpLT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmlu
Z0FsbG9jYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5p
bmRleGluZ1R5cGUoKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQu
aW5zZXJ0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVJbmRleCArIDEsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUHJvbW90ZWRIZWFwTG9jYXRpb24oU3RydWN0dXJlUExv
Yywgbm9kZSkuY3JlYXRlSGludCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9n
cmFwaCwgbm9kZS0+b3JpZ2luLCBhcnJheVN0cnVjdHVyZSkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgTm9kZSogbGVuZ3RoID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2luc2Vy
dGlvblNldC5pbnNlcnRDb25zdGFudCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bm9kZUluZGV4ICsgMSwgbm9kZS0+b3JpZ2luLCBqc051bWJlcihub2RlLT5udW1DaGlsZHJlbigp
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnQoCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbm9kZUluZGV4ICsgMSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBQcm9tb3RlZEhlYXBMb2NhdGlvbihBcnJheUxlbmd0aFBMb2MsIG5vZGUpLmNy
ZWF0ZUhpbnQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgsIG5vZGUt
Pm9yaWdpbiwgbGVuZ3RoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbm9kZS0+bnVtQ2hpbGRyZW4oKTsgKytpKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0KAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBub2RlSW5kZXggKyAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBQcm9tb3RlZEhlYXBMb2NhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEluZGV4ZWRQcm9wZXJ0eVBMb2MsIG5vZGUsIGkpLmNyZWF0ZUhpbnQoCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaCwgbm9kZS0+b3JpZ2luLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgudmFyQXJnQ2hpbGQo
bm9kZSwgaSkubm9kZSgpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9QaGFudG9tTmV3QXJyYXkoKTsKKyAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICAgICBjYXNlIE5ld0FycmF5QnVmZmVyOiB7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChtX3NpbmtDYW5kaWRhdGVzLmNvbnRhaW5zKG5vZGUpKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBOb2RlKiBhcnJheVN0cnVjdHVyZSA9CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Q29uc3RhbnQoCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG5vZGVJbmRleCArIDEsIG5vZGUtPm9yaWdpbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKS0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0
aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+aW5kZXhpbmdU
eXBlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydCgK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlSW5kZXggKyAxLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFByb21vdGVkSGVhcExvY2F0aW9uKFN0cnVjdHVyZVBMb2MsIG5vZGUp
LmNyZWF0ZUhpbnQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgsIG5v
ZGUtPm9yaWdpbiwgYXJyYXlTdHJ1Y3R1cmUpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIE5v
ZGUqIGxlbmd0aCA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQu
aW5zZXJ0Q29uc3RhbnQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVJbmRl
eCArIDEsIG5vZGUtPm9yaWdpbiwganNOdW1iZXIobm9kZS0+bnVtQ29uc3RhbnRzKCkpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydCgKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBub2RlSW5kZXggKyAxLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFByb21vdGVkSGVhcExvY2F0aW9uKEFycmF5TGVuZ3RoUExvYywgbm9kZSkuY3JlYXRlSGlu
dCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaCwgbm9kZS0+b3JpZ2lu
LCBsZW5ndGgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWUqIGRhdGEgPSBtX2dy
YXBoLm1fY29kZUJsb2NrLT5jb25zdGFudEJ1ZmZlcihub2RlLT5zdGFydENvbnN0YW50KCkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG5vZGUtPm51
bUNvbnN0YW50cygpOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb2RlKiBk
YXRhTm9kZSA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0
Lmluc2VydENvbnN0YW50KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9k
ZUluZGV4ICsgMSwgbm9kZS0+b3JpZ2luLCBtX2dyYXBoLmZyZWV6ZShkYXRhW2ldKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0KAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBub2RlSW5kZXggKyAxLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBQcm9tb3RlZEhlYXBMb2NhdGlvbihJbmRleGVkUHJvcGVydHlQTG9jLCBu
b2RlLCBpKS5jcmVhdGVIaW50KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bV9ncmFwaCwgbm9kZS0+b3JpZ2luLCBkYXRhTm9kZSkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvUGhhbnRvbU5ld0Fy
cmF5KCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjog
ewogICAgICAgICAgICAgICAgICAgICBpZiAobV9zaW5rQ2FuZGlkYXRlcy5jb250YWlucyhub2Rl
KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgTm9kZSogZXhlY3V0YWJsZSA9IG1faW5zZXJ0
aW9uU2V0Lmluc2VydENvbnN0YW50KApAQCAtODMxLDYgKzk1NCwxNiBAQCBwcml2YXRlOgogICAg
ICAgICByZXR1cm4gZGVmLT52YWx1ZSgpOwogICAgIH0KIAorICAgIE5vZGUqIGZvbGxvd0J1dHRl
cmZsaWVzKE5vZGUqIG5vZGUpCisgICAgeworICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsK
KyAgICAgICAgY2FzZSBHZXRCdXR0ZXJmbHk6CisgICAgICAgICAgICByZXR1cm4gbm9kZS0+Y2hp
bGQxKCkubm9kZSgpOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIG5vZGU7
CisgICAgICAgIH0KKyAgICB9CisKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTaW5rQ2FuZGlkYXRl
RnVuY3RvciwgdHlwZW5hbWUgRXNjYXBlRnVuY3Rvcj4KICAgICB2b2lkIGhhbmRsZU5vZGUoCiAg
ICAgICAgIE5vZGUqIG5vZGUsCkBAIC04NDEsNyArOTc0LDEwIEBAIHByaXZhdGU6CiAgICAgICAg
IGNhc2UgTmV3T2JqZWN0OgogICAgICAgICBjYXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0OgogICAg
ICAgICBjYXNlIE1hdGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlvbjoKLSAgICAgICAgICAgIHNpbmtD
YW5kaWRhdGUoKTsKKyAgICAgICAgY2FzZSBOZXdBcnJheToKKyAgICAgICAgY2FzZSBOZXdBcnJh
eUJ1ZmZlcjoKKyAgICAgICAgICAgIGlmIChub2RlLT5vcCgpICE9IE5ld0FycmF5QnVmZmVyIHx8
IG5vZGUtPm51bUNvbnN0YW50cygpIDwgMTAwKQorICAgICAgICAgICAgICAgIHNpbmtDYW5kaWRh
dGUoKTsKICAgICAgICAgICAgIG1fZ3JhcGguZG9Ub0NoaWxkcmVuKAogICAgICAgICAgICAgICAg
IG5vZGUsCiAgICAgICAgICAgICAgICAgWyZdIChFZGdlIGVkZ2UpIHsKQEAgLTg3NSw2ICsxMDEx
LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIGJyZWFrOwog
CisgICAgICAgIGNhc2UgR2V0QnV0dGVyZmx5OgorICAgICAgICAgICAgYnJlYWs7CisKICAgICAg
ICAgY2FzZSBNb3ZIaW50OgogICAgICAgICBjYXNlIFB1dEhpbnQ6CiAgICAgICAgICAgICBicmVh
azsKQEAgLTg4OSw2ICsxMDI4LDg4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZXNjYXBl
KHRhcmdldCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorCisgICAgICAgIGNhc2Ug
R2V0QXJyYXlMZW5ndGg6IHsKKyAgICAgICAgICAgIEFycmF5TW9kZSBtb2RlID0gbm9kZS0+YXJy
YXlNb2RlKCk7CisgICAgICAgICAgICBzd2l0Y2ggKG1vZGUudHlwZSgpKSB7CisgICAgICAgICAg
ICBjYXNlIEFycmF5OjpJbnQzMjoKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OkRvdWJsZToKKyAg
ICAgICAgICAgIGNhc2UgQXJyYXk6OkNvbnRpZ3VvdXM6CisgICAgICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgbV9ncmFwaC5kb1RvQ2hp
bGRyZW4oCisgICAgICAgICAgICAgICAgICAgIG5vZGUsCisgICAgICAgICAgICAgICAgICAgIFsm
XSAoRWRnZSBlZGdlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBlc2NhcGUoZWRnZS5ub2Rl
KCkpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2Fz
ZSBHZXRCeVZhbDogeworICAgICAgICAgICAgQXJyYXlNb2RlIG1vZGUgPSBub2RlLT5hcnJheU1v
ZGUoKTsKKyAgICAgICAgICAgIGlmICghbW9kZS5pc0luQm91bmRzKCkKKyAgICAgICAgICAgICAg
ICB8fCAhbm9kZS0+Y2hpbGQxKCktPmlzQXJyYXlBbGxvY2F0aW9uKCkKKyAgICAgICAgICAgICAg
ICB8fCAhbm9kZS0+Y2hpbGQyKCktPmlzQ29uc3RhbnQoKQorICAgICAgICAgICAgICAgIHx8ICFu
b2RlLT5jaGlsZDIoKS0+Y29uc3RhbnQoKS0+dmFsdWUoKS5pc1VJbnQzMigpKSB7CisgICAgICAg
ICAgICAgICAgbV9ncmFwaC5kb1RvQ2hpbGRyZW4oCisgICAgICAgICAgICAgICAgICAgIG5vZGUs
CisgICAgICAgICAgICAgICAgICAgIFsmXSAoRWRnZSBlZGdlKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBlc2NhcGUoZWRnZS5ub2RlKCkpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgc3dpdGNoIChtb2RlLnR5cGUoKSkg
eworICAgICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkludDMyOgorICAgICAgICAgICAgICAgIGNh
c2UgQXJyYXk6OkRvdWJsZToKKyAgICAgICAgICAgICAgICBjYXNlIEFycmF5OjpDb250aWd1b3Vz
OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguZG9Ub0NoaWxkcmVuKAorICAgICAgICAgICAg
ICAgICAgICAgICAgbm9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFsmXSAoRWRnZSBlZGdl
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXNjYXBlKGVkZ2Uubm9kZSgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBQdXRCeVZh
bDogeworICAgICAgICAgICAgQXJyYXlNb2RlIG1vZGUgPSBub2RlLT5hcnJheU1vZGUoKTsKKyAg
ICAgICAgICAgIE5vZGUqIGJhc2UgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApLm5vZGUo
KTsKKyAgICAgICAgICAgIE5vZGUqIGluZGV4ID0gbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAx
KS5ub2RlKCk7CisKKyAgICAgICAgICAgIGlmICghYmFzZS0+aXNBcnJheUFsbG9jYXRpb24oKQor
ICAgICAgICAgICAgICAgIHx8ICFpbmRleC0+aXNDb25zdGFudCgpCisgICAgICAgICAgICAgICAg
fHwgIWluZGV4LT5jb25zdGFudCgpLT52YWx1ZSgpLmlzVUludDMyKCkKKyAgICAgICAgICAgICAg
ICB8fCAhbW9kZS5pc0luQm91bmRzKCkpIHsKKyAgICAgICAgICAgICAgICBtX2dyYXBoLmRvVG9D
aGlsZHJlbigKKyAgICAgICAgICAgICAgICAgICAgbm9kZSwKKyAgICAgICAgICAgICAgICAgICAg
WyZdIChFZGdlIGVkZ2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVzY2FwZShlZGdlLm5v
ZGUoKSk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICBzd2l0Y2ggKG1vZGUubW9kZUZvclB1dCgpLnR5cGUoKSkgeworICAgICAg
ICAgICAgICAgIGNhc2UgQXJyYXk6OkludDMyOgorICAgICAgICAgICAgICAgIGNhc2UgQXJyYXk6
OkRvdWJsZToKKyAgICAgICAgICAgICAgICBjYXNlIEFycmF5OjpDb250aWd1b3VzOiB7CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguZG9Ub0NoaWxkcmVuKAor
ICAgICAgICAgICAgICAgICAgICAgICAgbm9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFsm
XSAoRWRnZSBlZGdlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXNjYXBlKGVkZ2Uu
bm9kZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgUHV0QnlPZmZzZXQ6
IHsKICAgICAgICAgICAgIE5vZGUqIHRhcmdldCA9IG5vZGUtPmNoaWxkMigpLm5vZGUoKTsKQEAg
LTk0Niw2ICsxMTY3LDI0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogCisgICAgICAgIGNhc2UgTmV3QXJyYXk6CisgICAgICAgICAgICByZXN1bHQgPSBtX2dyYXBo
LmFkZE5vZGUoCisgICAgICAgICAgICAgICAgZXNjYXBlZS0+cHJlZGljdGlvbigpLCBOb2RlOjpW
YXJBcmcsIE5ld0FycmF5LAorICAgICAgICAgICAgICAgIE5vZGVPcmlnaW4oCisgICAgICAgICAg
ICAgICAgICAgIGVzY2FwZWUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAg
d2hlcmUtPm9yaWdpbi5mb3JFeGl0KSwKKyAgICAgICAgICAgICAgICBPcEluZm8oZXNjYXBlZS0+
aW5kZXhpbmdUeXBlKCkpLCBPcEluZm8oKSwgMCwgMCk7CisgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICBjYXNlIE5ld0FycmF5QnVmZmVyOgorICAgICAgICAgICAgcmVzdWx0ID0gbV9ncmFw
aC5hZGROb2RlKAorICAgICAgICAgICAgICAgIGVzY2FwZWUtPnByZWRpY3Rpb24oKSwgTm9kZTo6
VmFyQXJnLCBOZXdBcnJheSwKKyAgICAgICAgICAgICAgICBOb2RlT3JpZ2luKAorICAgICAgICAg
ICAgICAgICAgICBlc2NhcGVlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAg
IHdoZXJlLT5vcmlnaW4uZm9yRXhpdCksCisgICAgICAgICAgICAgICAgT3BJbmZvKGVzY2FwZWUt
PmluZGV4aW5nVHlwZSgpKSwgT3BJbmZvKCksIDAsIDApOworICAgICAgICAgICAgYnJlYWs7CisK
ICAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICAgICAgICAgIHJlc3VsdCA9IG1fZ3JhcGgu
YWRkTm9kZSgKICAgICAgICAgICAgICAgICBlc2NhcGVlLT5wcmVkaWN0aW9uKCksIE5ld0Z1bmN0
aW9uLApAQCAtMTA3NCw2ICsxMzEzLDQ0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogCisgICAgICAgIGNhc2UgTmV3QXJyYXk6IHsKKyAgICAgICAgICAgIFZlY3Rv
cjxQcm9tb3RlZEhlYXBMb2NhdGlvbj4gbG9jYXRpb25zID0gbV9sb2NhdGlvbnNGb3JBbGxvY2F0
aW9uLmdldChlc2NhcGVlKTsKKworICAgICAgICAgICAgdW5zaWduZWQgZmlyc3RDaGlsZCA9IG1f
Z3JhcGgubV92YXJBcmdDaGlsZHJlbi5zaXplKCk7CisKKyAgICAgICAgICAgIEFTU0VSVChsb2Nh
dGlvbnMuY29udGFpbnMoUHJvbW90ZWRIZWFwTG9jYXRpb24oU3RydWN0dXJlUExvYywgZXNjYXBl
ZSkpKTsKKyAgICAgICAgICAgIEFTU0VSVChsb2NhdGlvbnMuY29udGFpbnMoUHJvbW90ZWRIZWFw
TG9jYXRpb24oQXJyYXlMZW5ndGhQTG9jLCBlc2NhcGVlKSkpOworCisgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbG9jYXRpb25zLnNpemUoKTsgKytpKSB7CisgICAgICAgICAg
ICAgICAgc3dpdGNoIChsb2NhdGlvbnNbaV0ua2luZCgpKSB7CisgICAgICAgICAgICAgICAgY2Fz
ZSBTdHJ1Y3R1cmVQTG9jOgorICAgICAgICAgICAgICAgICAgICBBU1NFUlQoCisgICAgICAgICAg
ICAgICAgICAgICAgICByZXNvbHZlKGJsb2NrLCBsb2NhdGlvbnNbaV0pLT5jYXN0Q29uc3RhbnQ8
U3RydWN0dXJlKj4oKSA9PQorICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGlu
Z1R5cGVEdXJpbmdBbGxvY2F0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUt
PmluZGV4aW5nVHlwZSgpKSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
ICAgICAgICAgY2FzZSBBcnJheUxlbmd0aFBMb2M6CisgICAgICAgICAgICAgICAgICAgIEFTU0VS
VChyZXNvbHZlKGJsb2NrLCBsb2NhdGlvbnNbaV0pLT5hc1VJbnQzMigpID09IGxvY2F0aW9ucy5z
aXplKCkgLSAyKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAg
ICBjYXNlIEluZGV4ZWRQcm9wZXJ0eVBMb2M6IHsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSog
dmFsdWUgPSByZXNvbHZlKGJsb2NrLCBsb2NhdGlvbnNbaV0pOworICAgICAgICAgICAgICAgICAg
ICBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW4uYXBwZW5kKHZhbHVlKTsKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG5vZGUsICJCYWQgbG9j
YXRpb24ga2luZCIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgbm9kZS0+Y2hpbGRyZW4gPSBBZGphY2VuY3lMaXN0KAorICAgICAgICAgICAgICAgIEFk
amFjZW5jeUxpc3Q6OlZhcmlhYmxlLAorICAgICAgICAgICAgICAgIGZpcnN0Q2hpbGQsIG1fZ3Jh
cGgubV92YXJBcmdDaGlsZHJlbi5zaXplKCkgLSBmaXJzdENoaWxkKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjogewogICAgICAgICAg
ICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKICAgICAgICAgICAgICAgICBWZWN0b3I8UHJvbW90
ZWRIZWFwTG9jYXRpb24+IGxvY2F0aW9ucyA9IG1fbG9jYXRpb25zRm9yQWxsb2NhdGlvbi5nZXQo
ZXNjYXBlZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IGNkZTA5YmYxMjFiMjFmOGE0ZmVi
NjBkZmEyNGZiNDIwYjZhOWJhYmEuLmQ1OWY5NmJlMjcxMDE4ZTAyZmU3ZDVhNzMxNTgyYzg2ZTE0
ZmJhOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC01NTcsNiArNTU3LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgY2FzZSBJZGVudGl0eToKICAgICAgICAgY2FzZSBCb29sZWFuVG9OdW1iZXI6
CiAgICAgICAgIGNhc2UgUGhhbnRvbU5ld09iamVjdDoKKyAgICAgICAgY2FzZSBQaGFudG9tTmV3
QXJyYXk6CiAgICAgICAgIGNhc2UgUGhhbnRvbU5ld0Z1bmN0aW9uOgogICAgICAgICBjYXNlIFBo
YW50b21DcmVhdGVBY3RpdmF0aW9uOgogICAgICAgICBjYXNlIFBoYW50b21EaXJlY3RBcmd1bWVu
dHM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVIZWFw
QWNjZXNzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVIZWFwQWNjZXNz
LmgKaW5kZXggNjQ1Nzg0ZTBjOWVlNzUxODM0ZTVhZjk2ZjBjOWIyODk2MDkzOTc0OC4uNDhmMzY0
MDdmOTY5NDQ4M2U4YWI4ZTk0YTBkNjhmNzhkNjI4ODk5MyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlSGVhcEFjY2Vzcy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHJvbW90ZUhlYXBBY2Nlc3MuaApAQCAtNTIsNiArNTIsNDYgQEAg
dm9pZCBwcm9tb3RlSGVhcEFjY2VzcyhOb2RlKiBub2RlLCBjb25zdCBXcml0ZUZ1bmN0b3ImIHdy
aXRlLCBjb25zdCBSZWFkRnVuY3RvciYKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2Fz
ZSBHZXRBcnJheUxlbmd0aDogeworICAgICAgICBpZiAoIW5vZGUtPmNoaWxkMSgpLT5pc1BoYW50
b21BcnJheUFsbG9jYXRpb24oKSkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIEFycmF5
TW9kZSBtb2RlID0gbm9kZS0+YXJyYXlNb2RlKCk7CisgICAgICAgIHN3aXRjaCAobW9kZS50eXBl
KCkpIHsKKyAgICAgICAgY2FzZSBBcnJheTo6SW50MzI6CisgICAgICAgIGNhc2UgQXJyYXk6OkRv
dWJsZToKKyAgICAgICAgY2FzZSBBcnJheTo6Q29udGlndW91czoKKyAgICAgICAgICAgIHJlYWQo
UHJvbW90ZWRIZWFwTG9jYXRpb24oQXJyYXlMZW5ndGhQTG9jLCBub2RlLT5jaGlsZDEoKSkpOwor
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgR2V0QnlWYWw6
IHsKKyAgICAgICAgQXJyYXlNb2RlIG1vZGUgPSBub2RlLT5hcnJheU1vZGUoKTsKKyAgICAgICAg
aWYgKG1vZGUuaXNJbkJvdW5kcygpCisgICAgICAgICAgICAmJiBub2RlLT5jaGlsZDEoKS0+aXNQ
aGFudG9tQXJyYXlBbGxvY2F0aW9uKCkKKyAgICAgICAgICAgICYmIG5vZGUtPmNoaWxkMigpLT5p
c0NvbnN0YW50KCkKKyAgICAgICAgICAgICYmIG5vZGUtPmNoaWxkMigpLT5jb25zdGFudCgpLT52
YWx1ZSgpLmlzVUludDMyKCkpIHsKKyAgICAgICAgICAgIHN3aXRjaCAobW9kZS50eXBlKCkpIHsK
KyAgICAgICAgICAgIGNhc2UgQXJyYXk6OkludDMyOgorICAgICAgICAgICAgY2FzZSBBcnJheTo6
RG91YmxlOgorICAgICAgICAgICAgY2FzZSBBcnJheTo6Q29udGlndW91czogeworICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGluZGV4ID0gbm9kZS0+Y2hpbGQyKCktPmNvbnN0YW50KCktPnZhbHVl
KCkuYXNVSW50MzIoKTsKKyAgICAgICAgICAgICAgICByZWFkKFByb21vdGVkSGVhcExvY2F0aW9u
KEluZGV4ZWRQcm9wZXJ0eVBMb2MsIG5vZGUtPmNoaWxkMSgpLCBpbmRleCkpOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJy
ZWFrOworICAgIH0KKwogICAgIGNhc2UgTXVsdGlHZXRCeU9mZnNldDogewogICAgICAgICBpZiAo
bm9kZS0+Y2hpbGQxKCktPmlzUGhhbnRvbU9iamVjdEFsbG9jYXRpb24oKSkgewogICAgICAgICAg
ICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG5vZGUtPm11bHRpR2V0QnlPZmZzZXREYXRh
KCkuaWRlbnRpZmllck51bWJlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAKaW5kZXggMjRmNjk3NzBlZGI4ZDI0YTk3MjQ3
MGQ0MGY5MGU5NmU1NzhhOTk3Mi4uZmU1ODA3M2ZiY2I4NjAzMWUzMmQ2NTI2Nzc5ODM2MjZhNGE4
ZDhlOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhl
YXBMb2NhdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3Rl
ZEhlYXBMb2NhdGlvbi5jcHAKQEAgLTEwMiw2ICsxMDIsMTQgQEAgdm9pZCBwcmludEludGVybmFs
KFByaW50U3RyZWFtJiBvdXQsIFByb21vdGVkTG9jYXRpb25LaW5kIGtpbmQpCiAgICAgY2FzZSBD
bG9zdXJlVmFyUExvYzoKICAgICAgICAgb3V0LnByaW50KCJDbG9zdXJlVmFyUExvYyIpOwogICAg
ICAgICByZXR1cm47CisKKyAgICBjYXNlIEFycmF5TGVuZ3RoUExvYzoKKyAgICAgICAgb3V0LnBy
aW50KCJBcnJheUxlbmd0aFBMb2MiKTsKKyAgICAgICAgcmV0dXJuOworCisgICAgY2FzZSBJbmRl
eGVkUHJvcGVydHlQTG9jOgorICAgICAgICBvdXQucHJpbnQoIkluZGV4ZWRQcm9wZXJ0eVBMb2Mi
KTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9t
b3RlZEhlYXBMb2NhdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3Rl
ZEhlYXBMb2NhdGlvbi5oCmluZGV4IGJjMTUxNTg0ODA3NDM3ZGIwNzI5NDE0MTllOGI0YjliYTNl
NTYyY2IuLjdiZDczODcyMjNhNGE1OThmZmRmZDdjNTVkM2M5ZTFiZGQzYzQ5ZjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmgK
QEAgLTQ3LDYgKzQ3LDkgQEAgZW51bSBQcm9tb3RlZExvY2F0aW9uS2luZCB7CiAgICAgRnVuY3Rp
b25BY3RpdmF0aW9uUExvYywKICAgICBBY3RpdmF0aW9uU2NvcGVQTG9jLAogICAgIENsb3N1cmVW
YXJQTG9jLAorCisgICAgQXJyYXlMZW5ndGhQTG9jLAorICAgIEluZGV4ZWRQcm9wZXJ0eVBMb2Ms
CiB9OwogCiBjbGFzcyBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvciB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4IGE1N2VkMmE2MjE1ZGIxNWJi
MDIyZTQxMmIxNzI5NTQzZDIwNDQ3ZTkuLjIwODg0MTVhZmU2ZDljOGJmZjNjMzc0MGJhMmU5Zjk2
ZThkZmNiN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRv
RXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0
ZS5oCkBAIC0yNzMsNiArMjczLDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVU
eXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgR2V0RW51bWVy
YXRvckdlbmVyaWNQbmFtZToKICAgICBjYXNlIFRvSW5kZXhTdHJpbmc6CiAgICAgY2FzZSBQaGFu
dG9tTmV3T2JqZWN0OgorICAgIGNhc2UgUGhhbnRvbU5ld0FycmF5OgogICAgIGNhc2UgUGhhbnRv
bU5ld0Z1bmN0aW9uOgogICAgIGNhc2UgUGhhbnRvbUNyZWF0ZUFjdGl2YXRpb246CiAgICAgY2Fz
ZSBQdXRIaW50OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAKaW5kZXggMjhjNWNhYTU4NTg5NjI3NDQxOTlmYTNiMzBmNTFlOTQw
OTk0OWUyNS4uZTE3OGJkMjZiZTNmOWY4MGM0MTEzODk5OGUyMWJiYzc5Zjk1N2ZjZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwCkBAIC00NjM1LDYgKzQ2MzUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUqIG5vZGUpCiAgICAgY2FzZSBDaGVja0JhZENlbGw6CiAgICAgY2FzZSBCb3R0b21WYWx1ZToK
ICAgICBjYXNlIFBoYW50b21OZXdPYmplY3Q6CisgICAgY2FzZSBQaGFudG9tTmV3QXJyYXk6CiAg
ICAgY2FzZSBQaGFudG9tTmV3RnVuY3Rpb246CiAgICAgY2FzZSBQaGFudG9tQ3JlYXRlQWN0aXZh
dGlvbjoKICAgICBjYXNlIFB1dEhpbnQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCAyN2I3N2RmNzBiY2I2MzEyZTY2OTBjMDBh
ZjI0MzAxZTUxM2I3Mjg0Li5lODdmMTUyMGM4NjE1NmIyZDI2OTZkNDE3OTFlZTI0YzRiNDBiZjcx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAKQEAgLTQ3MTgsNiArNDcxOCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICBjYXNlIENoZWNrQmFkQ2VsbDoKICAgICBjYXNlIEJvdHRvbVZhbHVl
OgogICAgIGNhc2UgUGhhbnRvbU5ld09iamVjdDoKKyAgICBjYXNlIFBoYW50b21OZXdBcnJheToK
ICAgICBjYXNlIFBoYW50b21OZXdGdW5jdGlvbjoKICAgICBjYXNlIFBoYW50b21DcmVhdGVBY3Rp
dmF0aW9uOgogICAgIGNhc2UgR2V0TXlBcmd1bWVudEJ5VmFsOgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAppbmRleCAyYmEzMzM4NDkzOTllNDNiNmM0MWY1ZGZmYmU5
MDkzMzUxNTFmNTUyLi42N2ZiMmQ5MzUxMTYzYzY3YzBiMGI4YjY2YWViZmQwNGQwNGE1MzJiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcApAQCAtNDI1LDYgKzQy
NSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBVcHNpbG9uOgogICAgICAgICAg
ICAgICAgIGNhc2UgQ2hlY2tJbkJvdW5kczoKICAgICAgICAgICAgICAgICBjYXNlIFBoYW50b21O
ZXdPYmplY3Q6CisgICAgICAgICAgICAgICAgY2FzZSBQaGFudG9tTmV3QXJyYXk6CiAgICAgICAg
ICAgICAgICAgY2FzZSBQaGFudG9tTmV3RnVuY3Rpb246CiAgICAgICAgICAgICAgICAgY2FzZSBQ
aGFudG9tQ3JlYXRlQWN0aXZhdGlvbjoKICAgICAgICAgICAgICAgICBjYXNlIEdldE15QXJndW1l
bnRCeVZhbDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJp
bGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNw
cAppbmRleCAxMTgyNTBmYjE1OGFiNWJjMDAxOTVkNTc3NWI1NDAxY2FkMTVmNDFmLi44ZjA1ZGI4
MzIzODQzZjNkMjUwYjU3ZjkyMGYxNjBlYjkyNWRlYjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC0xODEsNiArMTgxLDcgQEAgaW5saW5l
IENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBUb0luZGV4
U3RyaW5nOgogICAgIGNhc2UgQm90dG9tVmFsdWU6CiAgICAgY2FzZSBQaGFudG9tTmV3T2JqZWN0
OgorICAgIGNhc2UgUGhhbnRvbU5ld0FycmF5OgogICAgIGNhc2UgUGhhbnRvbU5ld0Z1bmN0aW9u
OgogICAgIGNhc2UgUGhhbnRvbUNyZWF0ZUFjdGl2YXRpb246CiAgICAgY2FzZSBQdXRIaW50Ogpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAppbmRl
eCBmMTU5MjdjZWY5OTRjMDU2MDUyZDEzOGU0ZGEyMGU4NDk5NmIzNzI0Li5hZDg0MDY4YzAxYmM0
MDM1MTQxYmFiNTAyODBlYTYzYTBhNjY2MDA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcApAQCAtODYwLDYgKzg2MCw3IEBAIHByaXZhdGU6
CiAgICAgICAgIGNhc2UgTW92SGludDoKICAgICAgICAgY2FzZSBab21iaWVIaW50OgogICAgICAg
ICBjYXNlIFBoYW50b21OZXdPYmplY3Q6CisgICAgICAgIGNhc2UgUGhhbnRvbU5ld0FycmF5Ogog
ICAgICAgICBjYXNlIFBoYW50b21OZXdGdW5jdGlvbjoKICAgICAgICAgY2FzZSBQaGFudG9tQ3Jl
YXRlQWN0aXZhdGlvbjoKICAgICAgICAgY2FzZSBQaGFudG9tRGlyZWN0QXJndW1lbnRzOgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAKaW5kZXggNGU1YzhiM2Zi
NzkzYTgzYjIzNjdmYjAwYTdlN2MxYjc0YTQ4NDllMC4uMzU1MTljZjk4N2JkNDQwZWU2MWZkY2Iy
ZmU4YjI1YWY3MjczYjY4NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJh
dGlvbnMuY3BwCkBAIC05NCw2ICs5NCwzMyBAQCBleHRlcm4gIkMiIEpTQ2VsbCogSklUX09QRVJB
VElPTiBvcGVyYXRpb25NYXRlcmlhbGl6ZU9iamVjdEluT1NSKAogICAgICAgICByZXR1cm4gcmVz
dWx0OwogICAgIH0KIAorICAgIGNhc2UgUGhhbnRvbU5ld0FycmF5OiB7CisgICAgICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gbnVsbHB0cjsKKyAgICAgICAgdWludDMyX3QgbGVuZ3RoID0gMDsK
KyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbWF0ZXJpYWxpemF0aW9uLT5wcm9wZXJ0aWVzKCku
c2l6ZSgpOyBpLS07KSB7CisgICAgICAgICAgICBjb25zdCBFeGl0UHJvcGVydHlWYWx1ZSYgcHJv
cGVydHkgPSBtYXRlcmlhbGl6YXRpb24tPnByb3BlcnRpZXMoKVtpXTsKKyAgICAgICAgICAgIGlm
IChwcm9wZXJ0eS5sb2NhdGlvbigpLmtpbmQoKSA9PSBTdHJ1Y3R1cmVQTG9jKQorICAgICAgICAg
ICAgICAgIHN0cnVjdHVyZSA9IGpzQ2FzdDxTdHJ1Y3R1cmUqPihKU1ZhbHVlOjpkZWNvZGUodmFs
dWVzW2ldKSk7CisgICAgICAgICAgICBpZiAocHJvcGVydHkubG9jYXRpb24oKS5raW5kKCkgPT0g
QXJyYXlMZW5ndGhQTG9jKQorICAgICAgICAgICAgICAgIGxlbmd0aCA9IEpTVmFsdWU6OmRlY29k
ZSh2YWx1ZXNbaV0pLmFzVUludDMyKCk7CisgICAgICAgIH0KKyAgICAgICAgUkVMRUFTRV9BU1NF
UlQoc3RydWN0dXJlKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobGVuZ3RoID09IG1hdGVyaWFs
aXphdGlvbi0+cHJvcGVydGllcygpLnNpemUoKSk7CisKKyAgICAgICAgSlNBcnJheSogYXJyYXkg
PSBKU0FycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHZtLCBzdHJ1Y3R1cmUsIGxlbmd0aCk7
CisKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoYXJyYXkpOworCisgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IG1hdGVyaWFsaXphdGlvbi0+cHJvcGVydGllcygpLnNpemUoKTsgaS0tOykgeworICAg
ICAgICAgICAgY29uc3QgRXhpdFByb3BlcnR5VmFsdWUmIHByb3BlcnR5ID0gbWF0ZXJpYWxpemF0
aW9uLT5wcm9wZXJ0aWVzKClbaV07CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChwcm9wZXJ0
eS5sb2NhdGlvbigpLmtpbmQoKSA9PSBJbmRleGVkUHJvcGVydHlQTG9jKTsKKyAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKHByb3BlcnR5LmxvY2F0aW9uKCkuaW5mbygpIDwgbGVuZ3RoKTsKKyAg
ICAgICAgICAgIGFycmF5LT5pbml0aWFsaXplSW5kZXgodm0sIHByb3BlcnR5LmxvY2F0aW9uKCku
aW5mbygpLCBKU1ZhbHVlOjpkZWNvZGUodmFsdWVzW2ldKSk7CisgICAgICAgIH0KKworICAgICAg
ICByZXR1cm4gYXJyYXk7CisgICAgfQorCiAgICAgY2FzZSBQaGFudG9tTmV3RnVuY3Rpb246IHsK
ICAgICAgICAgLy8gRmlndXJlIG91dCB3aGF0IHRoZSBleGVjdXRhYmxlIGFuZCBhY3RpdmF0aW9u
IGFyZQogICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBudWxscHRyOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IGE3YjUxZTViMGM2OTA0MjM3NzExODRiYjNjYWQ1NDBlNGIxZGM1ZDkuLjY5YWUyNGUz
ZmM4YzM3YjdjNzNiMzY1MWMxNGI2ODdmYjI3MWU4MTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAor
MjAxNS0wNi0wMyAgQmFzaWxlIENsZW1lbnQgIDxiYXNpbGVfY2xlbWVudEBhcHBsZS5jb20+CisK
KyAgICAgICAgT2JqZWN0IGFsbG9jYXRpb24gc2lua2luZyBwaGFzZSBzaG91bGQgc2luayBOZXdB
cnJheSBhbmQgTmV3QXJyYXlCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE0NTYxMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEluY3JlbWVudCB0aGUgbnVtYmVyIG9mIGl0ZXJhdGlvbnMgc28gdGhh
dCB0aGUgdGVzdHMgYXJlIGNvbXBpbGVkIGRvd24KKyAgICAgICAgdG8gRlRMIGFuZCB3ZSBzZWUg
dGhlIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50IHdoZW4gdGhlIGFycmF5IGFsbG9jYXRpb24KKyAg
ICAgICAgaXMgZWxpbWluYXRlZC4KKworICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3Rz
L2NzZS1uZXctYXJyYXktYnVmZmVyLmpzOgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2NyaXB0LXRl
c3RzL2NzZS1uZXctYXJyYXkuanM6CisKIDIwMTUtMDYtMDMgIEJyYWR5IEVpZHNvbiAgPGJlaWRz
b25AYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIxODM0OTgpOiBDZXJ0YWluIHR5
cGVzIG9mIGZyYW1lIGxvYWRzIGluIGlmcmFtZXMgd2l0aCA8YmFzZSB0YXJnZXQ9Il9ibGFuayI+
IGNhbiBvcGVuIHVybHMgaW4gbmV3IHdpbmRvdy90YWJzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9jc2UtbmV3LWFycmF5LWJ1ZmZlci5qcyBiL0xheW91
dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2NzZS1uZXctYXJyYXktYnVmZmVyLmpzCmlu
ZGV4IDFjMjBiYjI2YThmZmRjZGVlODhlMjliZTVkOWEzNWI3Y2IwNjdjYTEuLjZiZjBiMWY1NDVi
YmE4NzVjMmMyZmRkMjM4Yjg2MTVlMWMxZjhkYzcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pz
L3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2NzZS1uZXctYXJyYXktYnVmZmVyLmpzCisrKyBiL0xheW91
dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2NzZS1uZXctYXJyYXktYnVmZmVyLmpzCkBA
IC00LDUgKzQsNSBAQCBmdW5jdGlvbiBmb28oKSB7CiB9CiBub0lubGluZShmb28pOwogCi1mb3Ig
KHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKQorZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDAw
OyArK2kpCiAgICAgZm9vKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3Nj
cmlwdC10ZXN0cy9jc2UtbmV3LWFycmF5LmpzIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3Jp
cHQtdGVzdHMvY3NlLW5ldy1hcnJheS5qcwppbmRleCA1YWQ0NzNlOGE2NjIzNTk1Mjc0MjczODdi
NmY5OTE2MjhiNDQwODkyLi43ZjIzZDlkMmIzMGE1NDA4NzI5MmQ1M2VkMGFkYmNhOTc5ZGZlMGNk
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9jc2UtbmV3
LWFycmF5LmpzCisrKyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2NzZS1u
ZXctYXJyYXkuanMKQEAgLTQsNSArNCw1IEBAIGZ1bmN0aW9uIGZvbyhwKSB7CiB9CiBub0lubGlu
ZShmb28pOwogCi1mb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKQorZm9yICh2YXIgaSA9
IDA7IGkgPCAxMDAwMDAwOyArK2kpCiAgICAgZm9vKDApOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254880</attachid>
            <date>2015-06-15 10:11:04 -0700</date>
            <delta_ts>2015-06-15 12:27:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145610-20150615101030.patch</filename>
            <type>text/plain</type>
            <size>35561</size>
            <attacher name="Basile Clement">basile_clement</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg1NTUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
NDNlODQ0OWFhOTM4NWIyODczYzY4OTlhNmFjMTE1ZDRkZThmNWViLi5mNzQ5ZmQ1MzE1YTViNGNm
N2I1NjQ4NDZlOTljY2M1MWE4N2ViNTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2OSBAQAorMjAxNS0wNi0xNSAgQmFzaWxlIENsZW1lbnQgIDxiYXNpbGVfY2xlbWVudEBh
cHBsZS5jb20+CisKKyAgICAgICAgT2JqZWN0IGFsbG9jYXRpb24gc2lua2luZyBwaGFzZSBzaG91
bGQgc2luayBOZXdBcnJheSBhbmQgTmV3QXJyYXlCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NTYxMAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2hzIGFsbG93IHRoZSBvYmplY3Qg
YWxsb2NhdGlvbiBzaW5raW5nIHBoYXNlIHRvIHNpbmsgTmV3QXJyYXkKKyAgICAgICAgYW5kIE5l
d0FycmF5QnVmZmVyIG5vZGVzLgorCisgICAgICAgIEZvciBzaW1wbGljaXR5LCB3ZSBvbmx5IHNp
bmsgdGhyb3VnaCBQdXRCeVZhbCB3aGVyZSB0aGUgaW5kZXggaXMKKyAgICAgICAgY29uc3RhbnQs
IGFuZCBvbmx5IGxvd2VyIHNpbWlsYXJpbHkgR2V0QnlWYWwgd2hlcmUgdGhlIGluZGV4IGlzCisg
ICAgICAgIGNvbnN0YW50LgorICAgICAgICBUaGlzIG1lYW5zIHRoYXQgdGhlIGxlbmd0aCBvZiB0
aGUgYXJyYXkgZG9lc24ndCBjaGFuZ2UsIGFuZCB3ZSBjYW4KKyAgICAgICAgbWF0ZXJpYWxpemUg
dXNpbmcgYSBmcmVzaCBOZXdBcnJheSBub2RlIG92ZXIgdGhlIFBoaSBmdW5jdGlvbnMuCisKKyAg
ICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpT
Qzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVm
ZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6OkRG
Rzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZH
TWF5RXhpdC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6bWF5RXhpdCk6CisgICAgICAgICogZGZn
L0RGR05vZGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmNvbnZlcnRUb1B1dEhpbnQp
OgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFz
Q29uc3RhbnQpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmNvbnZlcnRUb1BoYW50b21OZXdB
cnJheSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aXNBcnJheUFsbG9jYXRpb24pOgorICAg
ICAgICAoSlNDOjpERkc6Ok5vZGU6OmlzUGhhbnRvbUFycmF5QWxsb2NhdGlvbik6CisgICAgICAg
IChKU0M6OkRGRzo6Tm9kZTo6aXNQaGFudG9tQWxsb2NhdGlvbik6CisgICAgICAgICogZGZnL0RG
R05vZGVUeXBlLmg6CisgICAgICAgICogZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhh
c2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2U6
OmRldGVybWluZU1hdGVyaWFsaXphdGlvblBvaW50cyk6CisgICAgICAgIChKU0M6OkRGRzo6T2Jq
ZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZTo6cGxhY2VNYXRlcmlhbGl6YXRpb25Qb2ludHMpOgor
ICAgICAgICAoSlNDOjpERkc6Ok9iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2U6Omxvd2VyTm9u
UmVhZGluZ09wZXJhdGlvbnNPblBoYW50b21BbGxvY2F0aW9ucyk6CisgICAgICAgIChKU0M6OkRG
Rzo6T2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZTo6Zm9sbG93QnV0dGVyZmxpZXMpOgorICAg
ICAgICAoSlNDOjpERkc6Ok9iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2U6OmhhbmRsZU5vZGUp
OgorICAgICAgICAoSlNDOjpERkc6Ok9iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2U6OmNyZWF0
ZU1hdGVyaWFsaXplKToKKyAgICAgICAgKEpTQzo6REZHOjpPYmplY3RBbGxvY2F0aW9uU2lua2lu
Z1BoYXNlOjpwb3B1bGF0ZU1hdGVyaWFsaXplKToKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlOjpwcm9wYWdhdGUpOgorICAgICAgICAqIGRmZy9ERkdQcm9tb3RlSGVhcEFj
Y2Vzcy5oOgorICAgICAgICAoSlNDOjpERkc6OmluZGV4SXNJbkJvdW5kcyk6CisgICAgICAgIChK
U0M6OkRGRzo6cHJvbW90ZUhlYXBBY2Nlc3MpOgorICAgICAgICAqIGRmZy9ERkdQcm9tb3RlZEhl
YXBMb2NhdGlvbi5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAq
IGRmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9F
eGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAgICog
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAg
ICAqIGRmZy9ERkdWYWxpZGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6VmFsaWRhdGU6OnZh
bGlkYXRlQ1BTKToKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAg
KEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0xMVk0u
Y3BwOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlTm9kZSk6Cisg
ICAgICAgICogZnRsL0ZUTE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6Om9wZXJh
dGlvbk1hdGVyaWFsaXplT2JqZWN0SW5PU1IpOgorCiAyMDE1LTA2LTEzICBKb3NlcGggUGVjb3Jh
cm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogY29uc29s
ZS50YWJsZSgpIHdpdGggYSBsaXN0IG9mIG9iamVjdHMgbm8gbG9uZ2VyIHdvcmtzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxp
bmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJ
bmxpbmVzLmgKaW5kZXggZDVhZjkyNzZiNDUzMGMwZTFhYmUzMjc0ZTAzNmUwNWZlMWYyN2NhOC4u
ZTBiZTVhMTczYTFhNmZmMWI5N2JmNDcxNmFlMTAzMDlkMmU4NDEzNCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaApAQCAtMTU2Niw2ICsxNTY2LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3Ry
YWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIAogICAgIGNhc2UgUGhhbnRvbU5ld09iamVjdDoKKyAgICBjYXNl
IFBoYW50b21OZXdBcnJheToKICAgICBjYXNlIFBoYW50b21OZXdGdW5jdGlvbjoKICAgICBjYXNl
IFBoYW50b21DcmVhdGVBY3RpdmF0aW9uOgogICAgIGNhc2UgUGhhbnRvbURpcmVjdEFyZ3VtZW50
czoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggOTA1ZGQw
Y2UzOTM1OTJlN2IyMWU5NmFjZmJiMjg5MTc1MDcwZjVhMS4uYjI0NzhjMDljZjAzNjE0YTYwODdj
NDY1MTM3YmU3YzliOWNiZjgwNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9i
YmVyaXplLmgKQEAgLTk0NCw2ICs5NDQsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBo
LCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAg
IGNhc2UgTmV3UmVnZXhwOgogICAgIGNhc2UgTmV3U3RyaW5nT2JqZWN0OgogICAgIGNhc2UgUGhh
bnRvbU5ld09iamVjdDoKKyAgICBjYXNlIFBoYW50b21OZXdBcnJheToKICAgICBjYXNlIE1hdGVy
aWFsaXplTmV3T2JqZWN0OgogICAgIGNhc2UgUGhhbnRvbU5ld0Z1bmN0aW9uOgogICAgIGNhc2Ug
UGhhbnRvbUNyZWF0ZUFjdGl2YXRpb246CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNH
Qy5jcHAKaW5kZXggNTk0Njg0MGQyZjg4MDk1Nzk2OTFjNjhmOTZjMDBkNzVkMTVhNmI4NC4uZTM5
OThmNjA5M2NmOTJhMDcxYzU2MWYzYTQ0NDdlOGU2ZWI5YjJjOSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtMTk4LDYgKzE5OCw3IEBAIGJvb2wgZG9lc0dDKEdy
YXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIENoZWNrQmFkQ2VsbDoKICAgICBjYXNl
IEJvdHRvbVZhbHVlOgogICAgIGNhc2UgUGhhbnRvbU5ld09iamVjdDoKKyAgICBjYXNlIFBoYW50
b21OZXdBcnJheToKICAgICBjYXNlIFBoYW50b21OZXdGdW5jdGlvbjoKICAgICBjYXNlIFBoYW50
b21DcmVhdGVBY3RpdmF0aW9uOgogICAgIGNhc2UgUGhhbnRvbURpcmVjdEFyZ3VtZW50czoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IDE1YWU4ZjY4
M2FhZjRjOTM0YWNmNGJiYThkOWVlN2E2MTViMDI2OWUuLmEzZDRhYWFlOGE2MWQwYmI3Y2FlNmMz
NTZmOTZmNDQ1ZGNlM2YzZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1
cFBoYXNlLmNwcApAQCAtMTEwMiw2ICsxMTAyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBJ
ZGVudGl0eTogLy8gVGhpcyBzaG91bGQgaGF2ZSBiZWVuIGNsZWFuZWQgdXAuCiAgICAgICAgIGNh
c2UgQm9vbGVhblRvTnVtYmVyOgogICAgICAgICBjYXNlIFBoYW50b21OZXdPYmplY3Q6CisgICAg
ICAgIGNhc2UgUGhhbnRvbU5ld0FycmF5OgogICAgICAgICBjYXNlIFBoYW50b21OZXdGdW5jdGlv
bjoKICAgICAgICAgY2FzZSBQaGFudG9tQ3JlYXRlQWN0aXZhdGlvbjoKICAgICAgICAgY2FzZSBQ
aGFudG9tRGlyZWN0QXJndW1lbnRzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdNYXlFeGl0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhp
dC5jcHAKaW5kZXggNDYzMWVjZDU2MWM3OGJkNDg5ZWRkYWRjOGZmZTU3Zjk4OWQ5YjdmYy4uZTVj
NmMzNTJiZmNhNjFmNmE3NWFjMmIzNmEwMTVhYjhiNGEyZTU3NiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR01heUV4aXQuY3BwCkBAIC0xMDIsNiArMTAyLDcgQEAgYm9vbCBtYXlFeGl0
KEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIEJvdHRvbVZhbHVlOgogICAgIGNh
c2UgUHV0SGludDoKICAgICBjYXNlIFBoYW50b21OZXdPYmplY3Q6CisgICAgY2FzZSBQaGFudG9t
TmV3QXJyYXk6CiAgICAgY2FzZSBQdXRTdGFjazoKICAgICBjYXNlIEtpbGxTdGFjazoKICAgICBj
YXNlIEdldFN0YWNrOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5jcHAKaW5kZXggNmE5
ODUzNDI0Njg3MWJhNmI5NTljMGIzMjRlNzc3N2EyOWI0MmEyMy4uNWY5NGMxOTM3ZjZmOGRjMGU0
ZDJjYTY5ODgzOTg5ZDJkYmNiODQ0NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUu
Y3BwCkBAIC0xNjIsNyArMTYyLDcgQEAgdm9pZCBOb2RlOjpjb252ZXJ0VG9JZGVudGl0eU9uKE5v
ZGUqIGNoaWxkKQogCiB2b2lkIE5vZGU6OmNvbnZlcnRUb1B1dEhpbnQoY29uc3QgUHJvbW90ZWRM
b2NhdGlvbkRlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIE5vZGUqIGJhc2UsIE5vZGUqIHZhbHVlKQog
ewotICAgIG1fb3AgPSBQdXRIaW50OworICAgIHNldE9wQW5kRGVmYXVsdEZsYWdzKFB1dEhpbnQp
OwogICAgIG1fb3BJbmZvID0gZGVzY3JpcHRvci5pbW0xKCkubV92YWx1ZTsKICAgICBtX29wSW5m
bzIgPSBkZXNjcmlwdG9yLmltbTIoKS5tX3ZhbHVlOwogICAgIGNoaWxkMSgpID0gYmFzZS0+ZGVm
YXVsdEVkZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5kZXggNWJlZmQ4Mzll
YzgzNjhhNGY3ZDg4MmE3ZDNmMmIyNTY0ZTZlZDhkOS4uNjUwOWFkNzNiMzM5M2I3YWNiODZmODhj
NzkxODY0ZWJmZWVkNjljZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKQEAgLTQ2
MSw2ICs0NjEsOSBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgICAgICAvLyBUaGVzZSBwcmV0ZW5k
IHRvIGJlIHRoZSBlbXB0eSB2YWx1ZSBjb25zdGFudCBmb3IgdGhlIGJlbmVmaXQgb2YgdGhlIERG
RyBiYWNrZW5kLCB3aGljaAogICAgICAgICAgICAgLy8gb3RoZXJ3aXNlIHdvdWxkbid0IHRha2Ug
a2luZGx5IHRvIGEgbm9kZSB0aGF0IGRvZXNuJ3QgY29tcHV0ZSBhIHZhbHVlLgogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgY2FzZSBQaGFudG9tTmV3QXJyYXk6CisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIAogICAgICAgICBkZWZhdWx0OgogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNTgyLDYgKzU4NSwxNyBAQCBzdHJ1Y3QgTm9kZSB7CiAg
ICAgICAgIGNoaWxkcmVuID0gQWRqYWNlbmN5TGlzdCgpOwogICAgIH0KIAorICAgIHZvaWQgY29u
dmVydFRvUGhhbnRvbU5ld0FycmF5KEZyb3plblZhbHVlKiBsZW5ndGgpCisgICAgeworICAgICAg
ICBBU1NFUlQobV9vcCA9PSBOZXdBcnJheSB8fCBtX29wID09IE5ld0FycmF5QnVmZmVyKTsKKyAg
ICAgICAgbV9vcCA9IFBoYW50b21OZXdBcnJheTsKKyAgICAgICAgbV9mbGFncyAmPSB+Tm9kZUhh
c1ZhckFyZ3M7CisgICAgICAgIG1fZmxhZ3MgfD0gTm9kZU11c3RHZW5lcmF0ZTsKKyAgICAgICAg
bV9vcEluZm8gPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihsZW5ndGgpOworICAgICAgICBtX29w
SW5mbzIgPSAwOworICAgICAgICBjaGlsZHJlbiA9IEFkamFjZW5jeUxpc3QoKTsKKyAgICB9CisK
ICAgICB2b2lkIGNvbnZlcnRUb1BoYW50b21OZXdGdW5jdGlvbigpCiAgICAgewogICAgICAgICBB
U1NFUlQobV9vcCA9PSBOZXdGdW5jdGlvbik7CkBAIC0xNDY4LDYgKzE0ODIsMjcgQEAgc3RydWN0
IE5vZGUgewogICAgICAgICB9CiAgICAgfQogICAgIAorICAgIGJvb2wgaXNBcnJheUFsbG9jYXRp
b24oKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChvcCgpKSB7CisgICAgICAgIGNhc2UgTmV3QXJy
YXk6CisgICAgICAgIGNhc2UgTmV3QXJyYXlCdWZmZXI6CisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIGJvb2wgaXNQaGFudG9tQXJyYXlBbGxvY2F0aW9uKCkKKyAgICB7Cisg
ICAgICAgIHN3aXRjaCAob3AoKSkgeworICAgICAgICBjYXNlIFBoYW50b21OZXdBcnJheToKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCiAgICAgYm9vbCBpc0FjdGl2YXRpb25BbGxv
Y2F0aW9uKCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAob3AoKSkgewpAQCAtMTQ5Myw2ICsxNTI4
LDcgQEAgc3RydWN0IE5vZGUgewogICAgIHsKICAgICAgICAgc3dpdGNoIChvcCgpKSB7CiAgICAg
ICAgIGNhc2UgUGhhbnRvbU5ld09iamVjdDoKKyAgICAgICAgY2FzZSBQaGFudG9tTmV3QXJyYXk6
CiAgICAgICAgIGNhc2UgUGhhbnRvbURpcmVjdEFyZ3VtZW50czoKICAgICAgICAgY2FzZSBQaGFu
dG9tQ2xvbmVkQXJndW1lbnRzOgogICAgICAgICBjYXNlIFBoYW50b21OZXdGdW5jdGlvbjoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAppbmRleCA2OWY2YWU1ZWM5OTZiYmM4
Yzk0NTBkMzQ0OGIwNjg0YTgyOWJmNjkwLi5jMGQxOGU1NTE1NjYzM2M4OTEyNjVkMTI5MzYwODVh
MGM2MTMzNTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVU
eXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBAIC0y
NTIsNiArMjUyLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIFwKICAg
ICAvKiBTdXBwb3J0IGZvciBhbGxvY2F0aW9uIHNpbmtpbmcuICovXAogICAgIG1hY3JvKFBoYW50
b21OZXdPYmplY3QsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNy
byhQaGFudG9tTmV3QXJyYXksIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAg
ICBtYWNybyhQdXRIaW50LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQ2hlY2tTdHJ1
Y3R1cmVJbW1lZGlhdGUsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhNYXRlcmlhbGl6
ZU5ld09iamVjdCwgTm9kZVJlc3VsdEpTIHwgTm9kZUhhc1ZhckFyZ3MpIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFz
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5r
aW5nUGhhc2UuY3BwCmluZGV4IDA0MGQ1NzgxZGUyNTJjZTFlYWNmMTdjZGQ5NzE5OGY0YWZiNTA1
OTIuLmI0ZWU5YTc5NzQ4OWExM2E4YTJiOTQzMzNmMWU5NTlmMDRmN2RkODAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFz
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9u
U2lua2luZ1BoYXNlLmNwcApAQCAtMTY5LDYgKzE2OSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbWF0ZXJpYWxpemVkLmFkZChub2RlLCBmYWxzZSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgWyZdIChOb2RlKiBl
c2NhcGVlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXNjYXBlZSA9IGZvbGxvd0J1
dHRlcmZsaWVzKGVzY2FwZWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gaXRl
ciA9IG1hdGVyaWFsaXplZC5maW5kKGVzY2FwZWUpOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChpdGVyICE9IG1hdGVyaWFsaXplZC5lbmQoKSkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKQEAgLTI4OCw2ICsyODksOCBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgICAgICBub2RlLAogICAgICAgICAgICAgICAgICAgICBbJl0gKCkgeyB9
LAogICAgICAgICAgICAgICAgICAgICBbJl0gKE5vZGUqIGVzY2FwZWUpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGVzY2FwZWUgPSBmb2xsb3dCdXR0ZXJmbGllcyhlc2NhcGVlKTsKKwogICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGF0YUxvZygiU2VlaW5nICIsIGVzY2FwZWUsICIgZXNjYXBlIGF0ICIsIG5vZGUsICJc
biIpOwogICAgICAgICAgICAgICAgICAgICAgICAgCkBAIC00NDgsOCArNDUxLDIxIEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgbV9ncmFwaC5kb1RvQ2hpbGRyZW4oCiAgICAgICAgICAgICAg
ICAgICAgIG5vZGUsCiAgICAgICAgICAgICAgICAgICAgIFsmXSAoRWRnZSYgZWRnZSkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKE5vZGUqIG1hdGVyaWFsaXplID0gbWFwcGluZy5nZXQo
ZWRnZS5ub2RlKCkpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVkZ2Uuc2V0Tm9kZSht
YXRlcmlhbGl6ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGVkZ2UtPm9wKCkp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgR2V0QnV0dGVyZmx5OiB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTm9kZSogdGFyZ2V0ID0gZWRnZS0+Y2hpbGQxKCkubm9kZSgp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChOb2RlKiBtYXRlcmlhbGl6ZSA9IG1h
cHBpbmcuZ2V0KHRhcmdldCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWRn
ZS5zZXROb2RlKG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBub2RlSW5kZXgsIFNwZWNOb25lLCBHZXRCdXR0ZXJmbHksIG5vZGUt
Pm9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVkZ2UobWF0ZXJp
YWxpemUsIEtub3duQ2VsbFVzZSkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKE5vZGUqIG1hdGVyaWFsaXplID0gbWFwcGluZy5nZXQoZWRnZS5ub2Rl
KCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZGdlLnNldE5vZGUobWF0ZXJp
YWxpemUpOworICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9
KTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAvLyBJZiB5b3UgY2F1c2UgYW4g
ZXNjYXBlLCB5b3Ugc2hvdWxkbid0IHNlZSB0aGUgb3JpZ2luYWwgZXNjYXBlZS4KQEAgLTQ1OCw2
ICs0NzQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgbm9kZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgIFsmXSAoKSB7IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICBb
Jl0gKE5vZGUqIGVzY2FwZWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlc2NhcGVl
ID0gZm9sbG93QnV0dGVyZmxpZXMoZXNjYXBlZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgREZHX0FTU0VSVChtX2dyYXBoLCBub2RlLCAhbV9zaW5rQ2FuZGlkYXRlcy5jb250YWlucyhl
c2NhcGVlKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICB9
CkBAIC00ODQsNyArNTAxLDIyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgICAg
IG1faW5zZXJ0aW9uU2V0LmV4ZWN1dGUoYmxvY2spOwogICAgICAgICB9Ci0gICAgICAgIAorCisg
ICAgICAgIC8vIFdlIG5lZWQgdG8gcmVtb3ZlIHRoZSBHZXRCdXR0ZXJmbHkgbm9kZXMgb3ZlciBw
aGFudG9tIGFsbG9jYXRpb24KKyAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3Jh
cGguYmxvY2tzSW5OYXR1cmFsT3JkZXIoKSkgeworICAgICAgICAgICAgZm9yIChOb2RlKiBub2Rl
IDogKmJsb2NrKSB7CisgICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CisgICAg
ICAgICAgICAgICAgY2FzZSBHZXRCdXR0ZXJmbHk6CisgICAgICAgICAgICAgICAgICAgIGlmICht
X3NpbmtDYW5kaWRhdGVzLmNvbnRhaW5zKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSkpCisgICAgICAg
ICAgICAgICAgICAgICAgICBub2RlLT5yZW1vdmUoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwogICAgICAg
ICAvLyBBdCB0aGlzIHBvaW50IHdlIGhhdmUgZHVtbXkgbWF0ZXJpYWxpemF0aW9uIG5vZGVzIGFs
b25nIHdpdGggZWRnZXMgdG8gdGhlbS4gVGhpcyBtZWFucwogICAgICAgICAvLyB0aGF0IHRoZSBw
YXJ0IG9mIHRoZSBjb250cm9sIGZsb3cgZ3JhcGggdGhhdCBwcmVmZXJzIHRvIHNlZSBhY3R1YWwg
b2JqZWN0IGFsbG9jYXRpb25zCiAgICAgICAgIC8vIGlzIGNvbXBsZXRlbHkgZml4ZWQgdXAsIGV4
Y2VwdCBmb3IgdGhlIG1hdGVyaWFsaXphdGlvbnMgdGhlbXNlbHZlcy4KQEAgLTUwOSw2ICs1NDEs
MjEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAg
ICAgfQogCisgICAgICAgICAgICAgICAgY2FzZSBQdXRCeVZhbDogeworICAgICAgICAgICAgICAg
ICAgICBBcnJheU1vZGUgbW9kZSA9IG5vZGUtPmFycmF5TW9kZSgpOworICAgICAgICAgICAgICAg
ICAgICBOb2RlKiBiYXNlID0gbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKS5ub2RlKCk7Cisg
ICAgICAgICAgICAgICAgICAgIE5vZGUqIGluZGV4ID0gbV9ncmFwaC52YXJBcmdDaGlsZChub2Rl
LCAxKS5ub2RlKCk7CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIHZhbHVlID0gbV9ncmFwaC52
YXJBcmdDaGlsZChub2RlLCAyKS5ub2RlKCk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKGlu
ZGV4SXNJbkJvdW5kcyhiYXNlLCBpbmRleCwgbW9kZS5tb2RlRm9yUHV0KCkudHlwZSgpKSkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvUHV0SGludCgKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvcihJbmRleGVkUHJv
cGVydHlQTG9jLCBpbmRleC0+YXNNYWNoaW5lSW50KCkpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUpOworICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIH0KKwogICAgICAgICAgICAgICAgIGNhc2UgUHV0Q2xvc3VyZVZhcjogewogICAgICAgICAg
ICAgICAgICAgICBOb2RlKiB0YXJnZXQgPSBub2RlLT5jaGlsZDEoKS5ub2RlKCk7CiAgICAgICAg
ICAgICAgICAgICAgIGlmIChtX3NpbmtDYW5kaWRhdGVzLmNvbnRhaW5zKHRhcmdldCkpIHsKQEAg
LTU2Myw2ICs2MTAsNzAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAgICAgfQogCisgICAgICAgICAgICAgICAgY2FzZSBOZXdBcnJheTogeworICAg
ICAgICAgICAgICAgICAgICBpZiAobV9zaW5rQ2FuZGlkYXRlcy5jb250YWlucyhub2RlKSkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgTm9kZSogYXJyYXlTdHJ1Y3R1cmUgPQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydENvbnN0YW50KAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlSW5kZXggKyAxLCBub2RlLT5vcmlnaW4sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYyktPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5n
QWxsb2NhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmlu
ZGV4aW5nVHlwZSgpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5p
bnNlcnQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZUluZGV4ICsgMSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBQcm9tb3RlZEhlYXBMb2NhdGlvbihTdHJ1Y3R1cmVQTG9j
LCBub2RlKS5jcmVhdGVIaW50KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dy
YXBoLCBub2RlLT5vcmlnaW4sIGFycmF5U3RydWN0dXJlKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBOb2RlKiBsZW5ndGggPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0
aW9uU2V0Lmluc2VydENvbnN0YW50KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
b2RlSW5kZXggKyAxLCBub2RlLT5vcmlnaW4sIGpzTnVtYmVyKG5vZGUtPm51bUNoaWxkcmVuKCkp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydCgKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBub2RlSW5kZXggKyAxLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFByb21vdGVkSGVhcExvY2F0aW9uKEFycmF5TGVuZ3RoUExvYywgbm9kZSkuY3Jl
YXRlSGludCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaCwgbm9kZS0+
b3JpZ2luLCBsZW5ndGgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBub2RlLT5udW1DaGlsZHJlbigpOyArK2kpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnQoCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG5vZGVJbmRleCArIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFByb21vdGVkSGVhcExvY2F0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgSW5kZXhlZFByb3BlcnR5UExvYywgbm9kZSwgaSkuY3JlYXRlSGludCgKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLCBub2RlLT5vcmlnaW4sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC52YXJBcmdDaGlsZChu
b2RlLCBpKS5ub2RlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b21OZXdBcnJheShsZW5ndGgtPmNvbnN0
YW50KCkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGNhc2UgTmV3QXJyYXlCdWZm
ZXI6IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1fc2lua0NhbmRpZGF0ZXMuY29udGFpbnMo
bm9kZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIE5vZGUqIGFycmF5U3RydWN0dXJlID0K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnRDb25zdGFu
dCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZUluZGV4ICsgMSwgbm9kZS0+
b3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5n
VHlwZUR1cmluZ0FsbG9jYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBub2RlLT5pbmRleGluZ1R5cGUoKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnNl
cnRpb25TZXQuaW5zZXJ0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVJbmRleCAr
IDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvbW90ZWRIZWFwTG9jYXRpb24oU3Ry
dWN0dXJlUExvYywgbm9kZSkuY3JlYXRlSGludCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbV9ncmFwaCwgbm9kZS0+b3JpZ2luLCBhcnJheVN0cnVjdHVyZSkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgTm9kZSogbGVuZ3RoID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtX2luc2VydGlvblNldC5pbnNlcnRDb25zdGFudCgKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbm9kZUluZGV4ICsgMSwgbm9kZS0+b3JpZ2luLCBqc051bWJlcihub2RlLT5udW1D
b25zdGFudHMoKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5z
ZXJ0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVJbmRleCArIDEsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUHJvbW90ZWRIZWFwTG9jYXRpb24oQXJyYXlMZW5ndGhQTG9j
LCBub2RlKS5jcmVhdGVIaW50KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dy
YXBoLCBub2RlLT5vcmlnaW4sIGxlbmd0aCkpOworICAgICAgICAgICAgICAgICAgICAgICAgSlNW
YWx1ZSogZGF0YSA9IG1fZ3JhcGgubV9jb2RlQmxvY2stPmNvbnN0YW50QnVmZmVyKG5vZGUtPnN0
YXJ0Q29uc3RhbnQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbm9kZS0+bnVtQ29uc3RhbnRzKCk7ICsraSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIE5vZGUqIGRhdGFOb2RlID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Q29uc3RhbnQoCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBub2RlSW5kZXggKyAxLCBub2RlLT5vcmlnaW4sIG1fZ3JhcGguZnJlZXpl
KGRhdGFbaV0pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5p
bnNlcnQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVJbmRleCArIDEsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb21vdGVkSGVhcExvY2F0aW9uKEluZGV4
ZWRQcm9wZXJ0eVBMb2MsIG5vZGUsIGkpLmNyZWF0ZUhpbnQoCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtX2dyYXBoLCBub2RlLT5vcmlnaW4sIGRhdGFOb2RlKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5jb252
ZXJ0VG9QaGFudG9tTmV3QXJyYXkobGVuZ3RoLT5jb25zdGFudCgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisK
ICAgICAgICAgICAgICAgICBjYXNlIE5ld0Z1bmN0aW9uOiB7CiAgICAgICAgICAgICAgICAgICAg
IGlmIChtX3NpbmtDYW5kaWRhdGVzLmNvbnRhaW5zKG5vZGUpKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBOb2RlKiBleGVjdXRhYmxlID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Q29uc3RhbnQo
CkBAIC04MzEsNiArOTQyLDE2IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBkZWYtPnZhbHVl
KCk7CiAgICAgfQogCisgICAgTm9kZSogZm9sbG93QnV0dGVyZmxpZXMoTm9kZSogbm9kZSkKKyAg
ICB7CisgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgeworICAgICAgICBjYXNlIEdldEJ1dHRl
cmZseToKKyAgICAgICAgICAgIHJldHVybiBub2RlLT5jaGlsZDEoKS5ub2RlKCk7CisgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gbm9kZTsKKyAgICAgICAgfQorICAgIH0KKwog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNpbmtDYW5kaWRhdGVGdW5jdG9yLCB0eXBlbmFtZSBFc2Nh
cGVGdW5jdG9yPgogICAgIHZvaWQgaGFuZGxlTm9kZSgKICAgICAgICAgTm9kZSogbm9kZSwKQEAg
LTg0MSw3ICs5NjIsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAg
ICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdPYmplY3Q6CiAgICAgICAgIGNhc2UgTWF0ZXJpYWxpemVD
cmVhdGVBY3RpdmF0aW9uOgotICAgICAgICAgICAgc2lua0NhbmRpZGF0ZSgpOworICAgICAgICBj
YXNlIE5ld0FycmF5OgorICAgICAgICBjYXNlIE5ld0FycmF5QnVmZmVyOgorICAgICAgICAgICAg
aWYgKG5vZGUtPm9wKCkgIT0gTmV3QXJyYXlCdWZmZXIgfHwgbm9kZS0+bnVtQ29uc3RhbnRzKCkg
PCAxMDApCisgICAgICAgICAgICAgICAgc2lua0NhbmRpZGF0ZSgpOwogICAgICAgICAgICAgbV9n
cmFwaC5kb1RvQ2hpbGRyZW4oCiAgICAgICAgICAgICAgICAgbm9kZSwKICAgICAgICAgICAgICAg
ICBbJl0gKEVkZ2UgZWRnZSkgewpAQCAtODc1LDYgKzk5OSw5IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgfSk7CiAgICAgICAgICAgICBicmVhazsKIAorICAgICAgICBjYXNlIEdldEJ1dHRl
cmZseToKKyAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgIGNhc2UgTW92SGludDoKICAgICAg
ICAgY2FzZSBQdXRIaW50OgogICAgICAgICAgICAgYnJlYWs7CkBAIC04ODksNyArMTAxNiw1MSBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGVzY2FwZSh0YXJnZXQpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgICAgIAorCisgICAgICAgIGNhc2UgR2V0QXJyYXlM
ZW5ndGg6IHsKKyAgICAgICAgICAgIEFycmF5TW9kZSBtb2RlID0gbm9kZS0+YXJyYXlNb2RlKCk7
CisgICAgICAgICAgICBzd2l0Y2ggKG1vZGUudHlwZSgpKSB7CisgICAgICAgICAgICBjYXNlIEFy
cmF5OjpJbnQzMjoKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OkRvdWJsZToKKyAgICAgICAgICAg
IGNhc2UgQXJyYXk6OkNvbnRpZ3VvdXM6CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgbV9ncmFwaC5kb1RvQ2hpbGRyZW4oCisg
ICAgICAgICAgICAgICAgICAgIG5vZGUsCisgICAgICAgICAgICAgICAgICAgIFsmXSAoRWRnZSBl
ZGdlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBlc2NhcGUoZWRnZS5ub2RlKCkpOworICAg
ICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBHZXRCeVZh
bDogeworICAgICAgICAgICAgaWYgKCFpbmRleElzSW5Cb3VuZHMobm9kZS0+Y2hpbGQxKCkubm9k
ZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCksIG5vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSkpIHsK
KyAgICAgICAgICAgICAgICBtX2dyYXBoLmRvVG9DaGlsZHJlbigKKyAgICAgICAgICAgICAgICAg
ICAgbm9kZSwKKyAgICAgICAgICAgICAgICAgICAgWyZdIChFZGdlIGVkZ2UpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGVzY2FwZShlZGdlLm5vZGUoKSk7CisgICAgICAgICAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAg
ICAgICBjYXNlIFB1dEJ5VmFsOiB7CisgICAgICAgICAgICBOb2RlKiBiYXNlID0gbV9ncmFwaC52
YXJBcmdDaGlsZChub2RlLCAwKS5ub2RlKCk7CisgICAgICAgICAgICBOb2RlKiBpbmRleCA9IG1f
Z3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkubm9kZSgpOworCisgICAgICAgICAgICBpZiAoIWlu
ZGV4SXNJbkJvdW5kcyhiYXNlLCBpbmRleCwgbm9kZS0+YXJyYXlNb2RlKCkubW9kZUZvclB1dCgp
LnR5cGUoKSkpIHsKKyAgICAgICAgICAgICAgICBtX2dyYXBoLmRvVG9DaGlsZHJlbigKKyAgICAg
ICAgICAgICAgICAgICAgbm9kZSwKKyAgICAgICAgICAgICAgICAgICAgWyZdIChFZGdlIGVkZ2Up
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVzY2FwZShlZGdlLm5vZGUoKSk7CisgICAgICAg
ICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKwogICAgICAgICBjYXNlIFB1dEJ5T2Zmc2V0OiB7CiAgICAgICAgICAgICBOb2RlKiB0
YXJnZXQgPSBub2RlLT5jaGlsZDIoKS5ub2RlKCk7CiAgICAgICAgICAgICBpZiAoIXRhcmdldC0+
aXNPYmplY3RBbGxvY2F0aW9uKCkpIHsKQEAgLTk1Myw2ICsxMTI0LDI0IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCisgICAgICAgIGNhc2UgTmV3QXJyYXk6Cisg
ICAgICAgICAgICByZXN1bHQgPSBtX2dyYXBoLmFkZE5vZGUoCisgICAgICAgICAgICAgICAgZXNj
YXBlZS0+cHJlZGljdGlvbigpLCBOb2RlOjpWYXJBcmcsIE5ld0FycmF5LAorICAgICAgICAgICAg
ICAgIE5vZGVPcmlnaW4oCisgICAgICAgICAgICAgICAgICAgIGVzY2FwZWUtPm9yaWdpbi5zZW1h
bnRpYywKKyAgICAgICAgICAgICAgICAgICAgd2hlcmUtPm9yaWdpbi5mb3JFeGl0KSwKKyAgICAg
ICAgICAgICAgICBPcEluZm8oZXNjYXBlZS0+aW5kZXhpbmdUeXBlKCkpLCBPcEluZm8oKSwgMCwg
MCk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIE5ld0FycmF5QnVmZmVyOgor
ICAgICAgICAgICAgcmVzdWx0ID0gbV9ncmFwaC5hZGROb2RlKAorICAgICAgICAgICAgICAgIGVz
Y2FwZWUtPnByZWRpY3Rpb24oKSwgTm9kZTo6VmFyQXJnLCBOZXdBcnJheSwKKyAgICAgICAgICAg
ICAgICBOb2RlT3JpZ2luKAorICAgICAgICAgICAgICAgICAgICBlc2NhcGVlLT5vcmlnaW4uc2Vt
YW50aWMsCisgICAgICAgICAgICAgICAgICAgIHdoZXJlLT5vcmlnaW4uZm9yRXhpdCksCisgICAg
ICAgICAgICAgICAgT3BJbmZvKGVzY2FwZWUtPmluZGV4aW5nVHlwZSgpKSwgT3BJbmZvKCksIDAs
IDApOworICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAg
ICAgICAgICAgIHJlc3VsdCA9IG1fZ3JhcGguYWRkTm9kZSgKICAgICAgICAgICAgICAgICBlc2Nh
cGVlLT5wcmVkaWN0aW9uKCksIE5ld0Z1bmN0aW9uLApAQCAtMTA4MSw2ICsxMjcwLDY3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCisgICAgICAgIGNhc2UgTmV3
QXJyYXk6IHsKKyAgICAgICAgICAgIFZlY3RvcjxQcm9tb3RlZEhlYXBMb2NhdGlvbj4gbG9jYXRp
b25zID0gbV9sb2NhdGlvbnNGb3JBbGxvY2F0aW9uLmdldChlc2NhcGVlKTsKKworICAgICAgICAg
ICAgdW5zaWduZWQgZmlyc3RDaGlsZCA9IG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5zaXplKCk7
CisKKyAgICAgICAgICAgIEFTU0VSVChsb2NhdGlvbnMuY29udGFpbnMoUHJvbW90ZWRIZWFwTG9j
YXRpb24oU3RydWN0dXJlUExvYywgZXNjYXBlZSkpKTsKKyAgICAgICAgICAgIEFTU0VSVChsb2Nh
dGlvbnMuY29udGFpbnMoUHJvbW90ZWRIZWFwTG9jYXRpb24oQXJyYXlMZW5ndGhQTG9jLCBlc2Nh
cGVlKSkpOworICAgICAgICAgICAgQVNTRVJUKGVzY2FwZWUtPmFzTWFjaGluZUludCgpID09IHN0
YXRpY19jYXN0PGludDY0X3Q+KGxvY2F0aW9ucy5zaXplKCkgLSAyKSk7CisKKyAgICAgICAgICAg
IHN0ZDo6c29ydCgKKyAgICAgICAgICAgICAgICBsb2NhdGlvbnMuYmVnaW4oKSwKKyAgICAgICAg
ICAgICAgICBsb2NhdGlvbnMuZW5kKCksCisgICAgICAgICAgICAgICAgW10gKFByb21vdGVkSGVh
cExvY2F0aW9uIGEsIFByb21vdGVkSGVhcExvY2F0aW9uIGIpIHsKKyAgICAgICAgICAgICAgICAg
ICAgc3dpdGNoIChiLmtpbmQoKSkgeworICAgICAgICAgICAgICAgICAgICBjYXNlIFN0cnVjdHVy
ZVBMb2M6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAg
ICAgICAgICAgICAgY2FzZSBBcnJheUxlbmd0aFBMb2M6CisgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gYS5raW5kKCkgPT0gU3RydWN0dXJlUExvYzsKKworICAgICAgICAgICAgICAgICAg
ICBjYXNlIEluZGV4ZWRQcm9wZXJ0eVBMb2M6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
YS5raW5kKCkgPT0gSW5kZXhlZFByb3BlcnR5UExvYykKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gYS5pbmZvKCkgPCBiLmluZm8oKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOworCisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBsb2NhdGlvbnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBz
d2l0Y2ggKGxvY2F0aW9uc1tpXS5raW5kKCkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIFN0cnVj
dHVyZVBMb2M6CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVCgKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJlc29sdmUoYmxvY2ssIGxvY2F0aW9uc1tpXSktPmNhc3RDb25zdGFudDxTdHJ1Y3R1
cmUqPigpID09CisgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1
cmluZ0FsbG9jYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+aW5kZXhp
bmdUeXBlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAg
ICBjYXNlIEFycmF5TGVuZ3RoUExvYzoKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHJlc29s
dmUoYmxvY2ssIGxvY2F0aW9uc1tpXSktPmFzTWFjaGluZUludCgpID09IGxvY2F0aW9ucy5zaXpl
KCkgLSAyKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBj
YXNlIEluZGV4ZWRQcm9wZXJ0eVBMb2M6IHsKKyAgICAgICAgICAgICAgICAgICAgREZHX0FTU0VS
VChtX2dyYXBoLCBub2RlLCBsb2NhdGlvbnNbaV0uaW5mbygpID09IGkgLSAyKTsKKyAgICAgICAg
ICAgICAgICAgICAgTm9kZSogdmFsdWUgPSByZXNvbHZlKGJsb2NrLCBsb2NhdGlvbnNbaV0pOwor
ICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW4uYXBwZW5kKHZhbHVl
KTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3Jh
cGgsIG5vZGUsICJCYWQgbG9jYXRpb24ga2luZCIpOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgbm9kZS0+Y2hpbGRyZW4gPSBBZGphY2VuY3lMaXN0KAor
ICAgICAgICAgICAgICAgIEFkamFjZW5jeUxpc3Q6OlZhcmlhYmxlLAorICAgICAgICAgICAgICAg
IGZpcnN0Q2hpbGQsIG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5zaXplKCkgLSBmaXJzdENoaWxk
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBOZXdGdW5j
dGlvbjogewogICAgICAgICAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKICAgICAgICAgICAg
ICAgICBWZWN0b3I8UHJvbW90ZWRIZWFwTG9jYXRpb24+IGxvY2F0aW9ucyA9IG1fbG9jYXRpb25z
Rm9yQWxsb2NhdGlvbi5nZXQoZXNjYXBlZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IGNk
ZTA5YmYxMjFiMjFmOGE0ZmViNjBkZmEyNGZiNDIwYjZhOWJhYmEuLmQ1OWY5NmJlMjcxMDE4ZTAy
ZmU3ZDVhNzMxNTgyYzg2ZTE0ZmJhOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC01NTcs
NiArNTU3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBJZGVudGl0eToKICAgICAgICAgY2Fz
ZSBCb29sZWFuVG9OdW1iZXI6CiAgICAgICAgIGNhc2UgUGhhbnRvbU5ld09iamVjdDoKKyAgICAg
ICAgY2FzZSBQaGFudG9tTmV3QXJyYXk6CiAgICAgICAgIGNhc2UgUGhhbnRvbU5ld0Z1bmN0aW9u
OgogICAgICAgICBjYXNlIFBoYW50b21DcmVhdGVBY3RpdmF0aW9uOgogICAgICAgICBjYXNlIFBo
YW50b21EaXJlY3RBcmd1bWVudHM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1Byb21vdGVIZWFwQWNjZXNzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1Byb21vdGVIZWFwQWNjZXNzLmgKaW5kZXggMDE4YzNiMTc0OTc3Zjc3ZTcyYWY0ZGVlMTk5ZGUw
NmY1ZGIwY2UyYy4uODY3M2ExMWZhNjI2NzU5MzJiMmRiMjlhNjEwNzliMTJjY2M3ZmJkOSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlSGVhcEFjY2Vzcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJvbW90ZUhlYXBBY2Nlc3MuaApA
QCAtMzMsNiArMzMsNDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCitz
dGF0aWMgaW5saW5lIGJvb2wgaW5kZXhJc0luQm91bmRzKE5vZGUqIGJhc2UsIE5vZGUqIGluZGV4
LCBBcnJheTo6VHlwZSB0eXBlKQoreworICAgIGlmICghaW5kZXgtPmlzTWFjaGluZUludENvbnN0
YW50KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHN3aXRjaCAodHlwZSkgeworICAg
IGNhc2UgQXJyYXk6OkludDMyOgorICAgIGNhc2UgQXJyYXk6OkRvdWJsZToKKyAgICBjYXNlIEFy
cmF5OjpDb250aWd1b3VzOgorICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpbnQ2NF90IGxlbmd0aDsKKyAgICBzd2l0Y2gg
KGJhc2UtPm9wKCkpIHsKKyAgICBjYXNlIE5ld0FycmF5OgorICAgICAgICBsZW5ndGggPSBiYXNl
LT5udW1DaGlsZHJlbigpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgTmV3QXJyYXlCdWZm
ZXI6CisgICAgICAgIGxlbmd0aCA9IGJhc2UtPm51bUNvbnN0YW50cygpOworICAgICAgICBicmVh
azsKKworICAgIGNhc2UgUGhhbnRvbU5ld0FycmF5OgorICAgICAgICBsZW5ndGggPSBiYXNlLT5h
c01hY2hpbmVJbnQoKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgQVNTRVJUKDAgPD0gbGVuZ3RoICYmIGxlbmd0aCA8
IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSk7CisKKyAgICBpZiAoaW5kZXgt
PmFzTWFjaGluZUludCgpIDwgMCB8fCBpbmRleC0+YXNNYWNoaW5lSW50KCkgPj0gbGVuZ3RoKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdGVtcGxhdGU8
dHlwZW5hbWUgV3JpdGVGdW5jdG9yLCB0eXBlbmFtZSBSZWFkRnVuY3Rvcj4KIHZvaWQgcHJvbW90
ZUhlYXBBY2Nlc3MoTm9kZSogbm9kZSwgY29uc3QgV3JpdGVGdW5jdG9yJiB3cml0ZSwgY29uc3Qg
UmVhZEZ1bmN0b3ImIHJlYWQpCiB7CkBAIC01Miw2ICs5MywzMyBAQCB2b2lkIHByb21vdGVIZWFw
QWNjZXNzKE5vZGUqIG5vZGUsIGNvbnN0IFdyaXRlRnVuY3RvciYgd3JpdGUsIGNvbnN0IFJlYWRG
dW5jdG9yJgogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIEdldEFycmF5TGVuZ3Ro
OiB7CisgICAgICAgIGlmICghbm9kZS0+Y2hpbGQxKCktPmlzUGhhbnRvbUFycmF5QWxsb2NhdGlv
bigpKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgQXJyYXlNb2RlIG1vZGUgPSBub2Rl
LT5hcnJheU1vZGUoKTsKKyAgICAgICAgc3dpdGNoIChtb2RlLnR5cGUoKSkgeworICAgICAgICBj
YXNlIEFycmF5OjpJbnQzMjoKKyAgICAgICAgY2FzZSBBcnJheTo6RG91YmxlOgorICAgICAgICBj
YXNlIEFycmF5OjpDb250aWd1b3VzOgorICAgICAgICAgICAgcmVhZChQcm9tb3RlZEhlYXBMb2Nh
dGlvbihBcnJheUxlbmd0aFBMb2MsIG5vZGUtPmNoaWxkMSgpKSk7CisgICAgICAgICAgICBicmVh
azsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAg
ICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSBHZXRCeVZhbDogeworICAgICAgICBpZiAo
bm9kZS0+Y2hpbGQxKCktPmlzUGhhbnRvbUFycmF5QWxsb2NhdGlvbigpCisgICAgICAgICAgICAm
JiBpbmRleElzSW5Cb3VuZHMobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5u
b2RlKCksIG5vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSkpIHsKKyAgICAgICAgICAgIGludDY0X3Qg
aW5kZXggPSBub2RlLT5jaGlsZDIoKS0+YXNNYWNoaW5lSW50KCk7CisgICAgICAgICAgICByZWFk
KFByb21vdGVkSGVhcExvY2F0aW9uKEluZGV4ZWRQcm9wZXJ0eVBMb2MsIG5vZGUtPmNoaWxkMSgp
LCBpbmRleCkpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2Ug
TXVsdGlHZXRCeU9mZnNldDogewogICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPmlzUGhhbnRv
bU9iamVjdEFsbG9jYXRpb24oKSkgewogICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51
bWJlciA9IG5vZGUtPm11bHRpR2V0QnlPZmZzZXREYXRhKCkuaWRlbnRpZmllck51bWJlcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRp
b24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlv
bi5jcHAKaW5kZXggMjRmNjk3NzBlZGI4ZDI0YTk3MjQ3MGQ0MGY5MGU5NmU1NzhhOTk3Mi4uZmU1
ODA3M2ZiY2I4NjAzMWUzMmQ2NTI2Nzc5ODM2MjZhNGE4ZDhlOCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAKQEAgLTEw
Miw2ICsxMDIsMTQgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIFByb21v
dGVkTG9jYXRpb25LaW5kIGtpbmQpCiAgICAgY2FzZSBDbG9zdXJlVmFyUExvYzoKICAgICAgICAg
b3V0LnByaW50KCJDbG9zdXJlVmFyUExvYyIpOwogICAgICAgICByZXR1cm47CisKKyAgICBjYXNl
IEFycmF5TGVuZ3RoUExvYzoKKyAgICAgICAgb3V0LnByaW50KCJBcnJheUxlbmd0aFBMb2MiKTsK
KyAgICAgICAgcmV0dXJuOworCisgICAgY2FzZSBJbmRleGVkUHJvcGVydHlQTG9jOgorICAgICAg
ICBvdXQucHJpbnQoIkluZGV4ZWRQcm9wZXJ0eVBMb2MiKTsKKyAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICAKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oCmluZGV4IGJj
MTUxNTg0ODA3NDM3ZGIwNzI5NDE0MTllOGI0YjliYTNlNTYyY2IuLjdiZDczODcyMjNhNGE1OThm
ZmRmZDdjNTVkM2M5ZTFiZGQzYzQ5ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmgKQEAgLTQ3LDYgKzQ3LDkgQEAgZW51bSBQ
cm9tb3RlZExvY2F0aW9uS2luZCB7CiAgICAgRnVuY3Rpb25BY3RpdmF0aW9uUExvYywKICAgICBB
Y3RpdmF0aW9uU2NvcGVQTG9jLAogICAgIENsb3N1cmVWYXJQTG9jLAorCisgICAgQXJyYXlMZW5n
dGhQTG9jLAorICAgIEluZGV4ZWRQcm9wZXJ0eVBMb2MsCiB9OwogCiBjbGFzcyBQcm9tb3RlZExv
Y2F0aW9uRGVzY3JpcHRvciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRv
RXhlY3V0ZS5oCmluZGV4IDk1M2I1NGMyMWY3MzlkMDdkZTQ2NDVkYjZiNzQ3NWMxZjA3YmFlNjEu
LjA1NGY2YzBjOWJjNDI1OTJmZTllZTgwZWU0NjdiODJmNGJlMTUwZmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0yNzQsNiArMjc0LDcgQEAg
Ym9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBo
LCBOb2RlKiBub2RlKQogICAgIGNhc2UgR2V0RW51bWVyYXRvckdlbmVyaWNQbmFtZToKICAgICBj
YXNlIFRvSW5kZXhTdHJpbmc6CiAgICAgY2FzZSBQaGFudG9tTmV3T2JqZWN0OgorICAgIGNhc2Ug
UGhhbnRvbU5ld0FycmF5OgogICAgIGNhc2UgUGhhbnRvbU5ld0Z1bmN0aW9uOgogICAgIGNhc2Ug
UGhhbnRvbUNyZWF0ZUFjdGl2YXRpb246CiAgICAgY2FzZSBQdXRIaW50OgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXgg
MjhjNWNhYTU4NTg5NjI3NDQxOTlmYTNiMzBmNTFlOTQwOTk0OWUyNS4uZTE3OGJkMjZiZTNmOWY4
MGM0MTEzODk5OGUyMWJiYzc5Zjk1N2ZjZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC00NjM1LDYgKzQ2MzUsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDaGVj
a0JhZENlbGw6CiAgICAgY2FzZSBCb3R0b21WYWx1ZToKICAgICBjYXNlIFBoYW50b21OZXdPYmpl
Y3Q6CisgICAgY2FzZSBQaGFudG9tTmV3QXJyYXk6CiAgICAgY2FzZSBQaGFudG9tTmV3RnVuY3Rp
b246CiAgICAgY2FzZSBQaGFudG9tQ3JlYXRlQWN0aXZhdGlvbjoKICAgICBjYXNlIFB1dEhpbnQ6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cAppbmRleCAyN2I3N2RmNzBiY2I2MzEyZTY2OTBjMDBhZjI0MzAxZTUxM2I3Mjg0Li5lODdmMTUy
MGM4NjE1NmIyZDI2OTZkNDE3OTFlZTI0YzRiNDBiZjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTQ3MTgsNiArNDcxOCw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIENo
ZWNrQmFkQ2VsbDoKICAgICBjYXNlIEJvdHRvbVZhbHVlOgogICAgIGNhc2UgUGhhbnRvbU5ld09i
amVjdDoKKyAgICBjYXNlIFBoYW50b21OZXdBcnJheToKICAgICBjYXNlIFBoYW50b21OZXdGdW5j
dGlvbjoKICAgICBjYXNlIFBoYW50b21DcmVhdGVBY3RpdmF0aW9uOgogICAgIGNhc2UgR2V0TXlB
cmd1bWVudEJ5VmFsOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdW
YWxpZGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcApp
bmRleCAyYmEzMzM4NDkzOTllNDNiNmM0MWY1ZGZmYmU5MDkzMzUxNTFmNTUyLi42N2ZiMmQ5MzUx
MTYzYzY3YzBiMGI4YjY2YWViZmQwNGQwNGE1MzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ZhbGlkYXRlLmNwcApAQCAtNDI1LDYgKzQyNSw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgY2FzZSBVcHNpbG9uOgogICAgICAgICAgICAgICAgIGNhc2UgQ2hlY2tJbkJvdW5k
czoKICAgICAgICAgICAgICAgICBjYXNlIFBoYW50b21OZXdPYmplY3Q6CisgICAgICAgICAgICAg
ICAgY2FzZSBQaGFudG9tTmV3QXJyYXk6CiAgICAgICAgICAgICAgICAgY2FzZSBQaGFudG9tTmV3
RnVuY3Rpb246CiAgICAgICAgICAgICAgICAgY2FzZSBQaGFudG9tQ3JlYXRlQWN0aXZhdGlvbjoK
ICAgICAgICAgICAgICAgICBjYXNlIEdldE15QXJndW1lbnRCeVZhbDoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAppbmRleCAzMTI0ZTAyNWY4YjNjOGMw
NjM3ZjYyM2MzZDQ4ZjUxZTJkMGViOTI3Li5hZDdkYzc2YjM1ODdlOWE4NWY3YTUzOGUxZDc3ZDhl
NDk0YTIwM2M4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFi
aWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRp
ZXMuY3BwCkBAIC0xODEsNiArMTgxLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBUb0luZGV4U3RyaW5nOgogICAgIGNhc2UgQm90dG9t
VmFsdWU6CiAgICAgY2FzZSBQaGFudG9tTmV3T2JqZWN0OgorICAgIGNhc2UgUGhhbnRvbU5ld0Fy
cmF5OgogICAgIGNhc2UgUGhhbnRvbU5ld0Z1bmN0aW9uOgogICAgIGNhc2UgUGhhbnRvbUNyZWF0
ZUFjdGl2YXRpb246CiAgICAgY2FzZSBQdXRIaW50OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAppbmRleCAzMGM0NWRlYzIwN2M5ZWUzMzczNDkw
YjYyNzMyY2YxNTJkYzc0ZTliLi4xYzYyMzU3NDIyMmM5ODVmNzkzNDdmMDk0YWRjODlmZTBkOGQw
NTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9M
TFZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZN
LmNwcApAQCAtODYwLDYgKzg2MCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgTW92SGludDoK
ICAgICAgICAgY2FzZSBab21iaWVIaW50OgogICAgICAgICBjYXNlIFBoYW50b21OZXdPYmplY3Q6
CisgICAgICAgIGNhc2UgUGhhbnRvbU5ld0FycmF5OgogICAgICAgICBjYXNlIFBoYW50b21OZXdG
dW5jdGlvbjoKICAgICAgICAgY2FzZSBQaGFudG9tQ3JlYXRlQWN0aXZhdGlvbjoKICAgICAgICAg
Y2FzZSBQaGFudG9tRGlyZWN0QXJndW1lbnRzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMT3BlcmF0aW9ucy5jcHAKaW5kZXggNGU1YzhiM2ZiNzkzYTgzYjIzNjdmYjAwYTdlN2MxYjc0
YTQ4NDllMC4uOTZlNjdiZGJiMDZkZDMwYjQxMmQ4MDBmM2Y2MTg1NGY2NTI0NGVlNCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCkBAIC05NCw2ICs5NCwz
NCBAQCBleHRlcm4gIkMiIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25NYXRlcmlhbGl6
ZU9iamVjdEluT1NSKAogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAorICAgIGNhc2Ug
UGhhbnRvbU5ld0FycmF5OiB7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gbnVsbHB0
cjsKKyAgICAgICAgdWludDMyX3QgbGVuZ3RoID0gMDsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gbWF0ZXJpYWxpemF0aW9uLT5wcm9wZXJ0aWVzKCkuc2l6ZSgpOyBpLS07KSB7CisgICAgICAg
ICAgICBjb25zdCBFeGl0UHJvcGVydHlWYWx1ZSYgcHJvcGVydHkgPSBtYXRlcmlhbGl6YXRpb24t
PnByb3BlcnRpZXMoKVtpXTsKKyAgICAgICAgICAgIGlmIChwcm9wZXJ0eS5sb2NhdGlvbigpLmtp
bmQoKSA9PSBTdHJ1Y3R1cmVQTG9jKQorICAgICAgICAgICAgICAgIHN0cnVjdHVyZSA9IGpzQ2Fz
dDxTdHJ1Y3R1cmUqPihKU1ZhbHVlOjpkZWNvZGUodmFsdWVzW2ldKSk7CisgICAgICAgICAgICBp
ZiAocHJvcGVydHkubG9jYXRpb24oKS5raW5kKCkgPT0gQXJyYXlMZW5ndGhQTG9jKQorICAgICAg
ICAgICAgICAgIGxlbmd0aCA9IEpTVmFsdWU6OmRlY29kZSh2YWx1ZXNbaV0pLmFzVUludDMyKCk7
CisgICAgICAgIH0KKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoc3RydWN0dXJlKTsKKyAgICAgICAg
UkVMRUFTRV9BU1NFUlQobGVuZ3RoID09IG1hdGVyaWFsaXphdGlvbi0+cHJvcGVydGllcygpLnNp
emUoKSAtIDIpOworCisgICAgICAgIEpTQXJyYXkqIGFycmF5ID0gSlNBcnJheTo6dHJ5Q3JlYXRl
VW5pbml0aWFsaXplZCh2bSwgc3RydWN0dXJlLCBsZW5ndGgpOworCisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKGFycmF5KTsKKworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtYXRlcmlhbGl6YXRp
b24tPnByb3BlcnRpZXMoKS5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgIGNvbnN0IEV4aXRQ
cm9wZXJ0eVZhbHVlJiBwcm9wZXJ0eSA9IG1hdGVyaWFsaXphdGlvbi0+cHJvcGVydGllcygpW2ld
OworICAgICAgICAgICAgaWYgKHByb3BlcnR5LmxvY2F0aW9uKCkua2luZCgpICE9IEluZGV4ZWRQ
cm9wZXJ0eVBMb2MpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVChwcm9wZXJ0eS5sb2NhdGlvbigpLmluZm8oKSA8IGxlbmd0aCk7CisgICAgICAg
ICAgICBhcnJheS0+aW5pdGlhbGl6ZUluZGV4KHZtLCBwcm9wZXJ0eS5sb2NhdGlvbigpLmluZm8o
KSwgSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlc1tpXSkpOworICAgICAgICB9CisKKyAgICAgICAgcmV0
dXJuIGFycmF5OworICAgIH0KKwogICAgIGNhc2UgUGhhbnRvbU5ld0Z1bmN0aW9uOiB7CiAgICAg
ICAgIC8vIEZpZ3VyZSBvdXQgd2hhdCB0aGUgZXhlY3V0YWJsZSBhbmQgYWN0aXZhdGlvbiBhcmUK
ICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gbnVsbHB0cjsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCBjNmYxZWFjODBmOGFkNTM2YmQ5NWI4MDVmMDM4ZmIzMzE2NTU1YTNlLi5jMDAxM2JmYzkyZDRk
ZmY2ODM0MTI1M2M0ZDRhY2NkNmUwYjRhNjNiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTUt
MDYtMTUgIEJhc2lsZSBDbGVtZW50ICA8YmFzaWxlX2NsZW1lbnRAYXBwbGUuY29tPgorCisgICAg
ICAgIE9iamVjdCBhbGxvY2F0aW9uIHNpbmtpbmcgcGhhc2Ugc2hvdWxkIHNpbmsgTmV3QXJyYXkg
YW5kIE5ld0FycmF5QnVmZmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDU2MTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBJbmNyZW1lbnQgdGhlIG51bWJlciBvZiBpdGVyYXRpb25zIHNvIHRoYXQgdGhl
IHRlc3RzIGFyZSBjb21waWxlZCBkb3duCisgICAgICAgIHRvIEZUTCBhbmQgd2Ugc2VlIHRoZSBw
ZXJmb3JtYW5jZSBpbXByb3ZlbWVudCB3aGVuIHRoZSBhcnJheSBhbGxvY2F0aW9uCisgICAgICAg
IGlzIGVsaW1pbmF0ZWQuCisKKyAgICAgICAgKiBqcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9jc2Ut
bmV3LWFycmF5LWJ1ZmZlci5qczoKKyAgICAgICAgKiBqcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9j
c2UtbmV3LWFycmF5LmpzOgorCiAyMDE1LTA2LTEzICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFj
aEBhcHBsZS5jb20+CiAKICAgICAgICAgQVg6IFdlYktpdCBleHBvc2VzIGFsbCBSdWJ5IFRleHQg
YXMgVW5rbm93biAoSmFwYW5lc2UgRVBVQiBhY2Nlc3NpYmlsaXR5IGJsb2NrZXIpCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9jc2UtbmV3LWFycmF5LWJ1
ZmZlci5qcyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2NzZS1uZXctYXJy
YXktYnVmZmVyLmpzCmluZGV4IDFjMjBiYjI2YThmZmRjZGVlODhlMjliZTVkOWEzNWI3Y2IwNjdj
YTEuLjZiZjBiMWY1NDViYmE4NzVjMmMyZmRkMjM4Yjg2MTVlMWMxZjhkYzcgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2NzZS1uZXctYXJyYXktYnVmZmVy
LmpzCisrKyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2NzZS1uZXctYXJy
YXktYnVmZmVyLmpzCkBAIC00LDUgKzQsNSBAQCBmdW5jdGlvbiBmb28oKSB7CiB9CiBub0lubGlu
ZShmb28pOwogCi1mb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKQorZm9yICh2YXIgaSA9
IDA7IGkgPCAxMDAwMDAwOyArK2kpCiAgICAgZm9vKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9jc2UtbmV3LWFycmF5LmpzIGIvTGF5b3V0VGVzdHMv
anMvcmVncmVzcy9zY3JpcHQtdGVzdHMvY3NlLW5ldy1hcnJheS5qcwppbmRleCA1YWQ0NzNlOGE2
NjIzNTk1Mjc0MjczODdiNmY5OTE2MjhiNDQwODkyLi43ZjIzZDlkMmIzMGE1NDA4NzI5MmQ1M2Vk
MGFkYmNhOTc5ZGZlMGNkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3Njcmlw
dC10ZXN0cy9jc2UtbmV3LWFycmF5LmpzCisrKyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2Ny
aXB0LXRlc3RzL2NzZS1uZXctYXJyYXkuanMKQEAgLTQsNSArNCw1IEBAIGZ1bmN0aW9uIGZvbyhw
KSB7CiB9CiBub0lubGluZShmb28pOwogCi1mb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytp
KQorZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kpCiAgICAgZm9vKDApOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254887</attachid>
            <date>2015-06-15 12:27:20 -0700</date>
            <delta_ts>2015-06-15 15:33:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145610-20150615122647.patch</filename>
            <type>text/plain</type>
            <size>35698</size>
            <attacher name="Basile Clement">basile_clement</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg1NTU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
NDNlODQ0OWFhOTM4NWIyODczYzY4OTlhNmFjMTE1ZDRkZThmNWViLi5mNzQ5ZmQ1MzE1YTViNGNm
N2I1NjQ4NDZlOTljY2M1MWE4N2ViNTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2OSBAQAorMjAxNS0wNi0xNSAgQmFzaWxlIENsZW1lbnQgIDxiYXNpbGVfY2xlbWVudEBh
cHBsZS5jb20+CisKKyAgICAgICAgT2JqZWN0IGFsbG9jYXRpb24gc2lua2luZyBwaGFzZSBzaG91
bGQgc2luayBOZXdBcnJheSBhbmQgTmV3QXJyYXlCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NTYxMAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2hzIGFsbG93IHRoZSBvYmplY3Qg
YWxsb2NhdGlvbiBzaW5raW5nIHBoYXNlIHRvIHNpbmsgTmV3QXJyYXkKKyAgICAgICAgYW5kIE5l
d0FycmF5QnVmZmVyIG5vZGVzLgorCisgICAgICAgIEZvciBzaW1wbGljaXR5LCB3ZSBvbmx5IHNp
bmsgdGhyb3VnaCBQdXRCeVZhbCB3aGVyZSB0aGUgaW5kZXggaXMKKyAgICAgICAgY29uc3RhbnQs
IGFuZCBvbmx5IGxvd2VyIHNpbWlsYXJpbHkgR2V0QnlWYWwgd2hlcmUgdGhlIGluZGV4IGlzCisg
ICAgICAgIGNvbnN0YW50LgorICAgICAgICBUaGlzIG1lYW5zIHRoYXQgdGhlIGxlbmd0aCBvZiB0
aGUgYXJyYXkgZG9lc24ndCBjaGFuZ2UsIGFuZCB3ZSBjYW4KKyAgICAgICAgbWF0ZXJpYWxpemUg
dXNpbmcgYSBmcmVzaCBOZXdBcnJheSBub2RlIG92ZXIgdGhlIFBoaSBmdW5jdGlvbnMuCisKKyAg
ICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpT
Qzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVm
ZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6OkRG
Rzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZH
TWF5RXhpdC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6bWF5RXhpdCk6CisgICAgICAgICogZGZn
L0RGR05vZGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmNvbnZlcnRUb1B1dEhpbnQp
OgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFz
Q29uc3RhbnQpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmNvbnZlcnRUb1BoYW50b21OZXdB
cnJheSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aXNBcnJheUFsbG9jYXRpb24pOgorICAg
ICAgICAoSlNDOjpERkc6Ok5vZGU6OmlzUGhhbnRvbUFycmF5QWxsb2NhdGlvbik6CisgICAgICAg
IChKU0M6OkRGRzo6Tm9kZTo6aXNQaGFudG9tQWxsb2NhdGlvbik6CisgICAgICAgICogZGZnL0RG
R05vZGVUeXBlLmg6CisgICAgICAgICogZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhh
c2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2U6
OmRldGVybWluZU1hdGVyaWFsaXphdGlvblBvaW50cyk6CisgICAgICAgIChKU0M6OkRGRzo6T2Jq
ZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZTo6cGxhY2VNYXRlcmlhbGl6YXRpb25Qb2ludHMpOgor
ICAgICAgICAoSlNDOjpERkc6Ok9iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2U6Omxvd2VyTm9u
UmVhZGluZ09wZXJhdGlvbnNPblBoYW50b21BbGxvY2F0aW9ucyk6CisgICAgICAgIChKU0M6OkRG
Rzo6T2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZTo6Zm9sbG93QnV0dGVyZmxpZXMpOgorICAg
ICAgICAoSlNDOjpERkc6Ok9iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2U6OmhhbmRsZU5vZGUp
OgorICAgICAgICAoSlNDOjpERkc6Ok9iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2U6OmNyZWF0
ZU1hdGVyaWFsaXplKToKKyAgICAgICAgKEpTQzo6REZHOjpPYmplY3RBbGxvY2F0aW9uU2lua2lu
Z1BoYXNlOjpwb3B1bGF0ZU1hdGVyaWFsaXplKToKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlOjpwcm9wYWdhdGUpOgorICAgICAgICAqIGRmZy9ERkdQcm9tb3RlSGVhcEFj
Y2Vzcy5oOgorICAgICAgICAoSlNDOjpERkc6OmluZGV4SXNJbkJvdW5kcyk6CisgICAgICAgIChK
U0M6OkRGRzo6cHJvbW90ZUhlYXBBY2Nlc3MpOgorICAgICAgICAqIGRmZy9ERkdQcm9tb3RlZEhl
YXBMb2NhdGlvbi5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAq
IGRmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9F
eGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAgICog
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAg
ICAqIGRmZy9ERkdWYWxpZGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6VmFsaWRhdGU6OnZh
bGlkYXRlQ1BTKToKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAg
KEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0xMVk0u
Y3BwOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlTm9kZSk6Cisg
ICAgICAgICogZnRsL0ZUTE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6Om9wZXJh
dGlvbk1hdGVyaWFsaXplT2JqZWN0SW5PU1IpOgorCiAyMDE1LTA2LTEzICBKb3NlcGggUGVjb3Jh
cm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogY29uc29s
ZS50YWJsZSgpIHdpdGggYSBsaXN0IG9mIG9iamVjdHMgbm8gbG9uZ2VyIHdvcmtzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxp
bmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJ
bmxpbmVzLmgKaW5kZXggZDVhZjkyNzZiNDUzMGMwZTFhYmUzMjc0ZTAzNmUwNWZlMWYyN2NhOC4u
ZTBiZTVhMTczYTFhNmZmMWI5N2JmNDcxNmFlMTAzMDlkMmU4NDEzNCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaApAQCAtMTU2Niw2ICsxNTY2LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3Ry
YWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIAogICAgIGNhc2UgUGhhbnRvbU5ld09iamVjdDoKKyAgICBjYXNl
IFBoYW50b21OZXdBcnJheToKICAgICBjYXNlIFBoYW50b21OZXdGdW5jdGlvbjoKICAgICBjYXNl
IFBoYW50b21DcmVhdGVBY3RpdmF0aW9uOgogICAgIGNhc2UgUGhhbnRvbURpcmVjdEFyZ3VtZW50
czoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggOTA1ZGQw
Y2UzOTM1OTJlN2IyMWU5NmFjZmJiMjg5MTc1MDcwZjVhMS4uYjI0NzhjMDljZjAzNjE0YTYwODdj
NDY1MTM3YmU3YzliOWNiZjgwNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9i
YmVyaXplLmgKQEAgLTk0NCw2ICs5NDQsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBo
LCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAg
IGNhc2UgTmV3UmVnZXhwOgogICAgIGNhc2UgTmV3U3RyaW5nT2JqZWN0OgogICAgIGNhc2UgUGhh
bnRvbU5ld09iamVjdDoKKyAgICBjYXNlIFBoYW50b21OZXdBcnJheToKICAgICBjYXNlIE1hdGVy
aWFsaXplTmV3T2JqZWN0OgogICAgIGNhc2UgUGhhbnRvbU5ld0Z1bmN0aW9uOgogICAgIGNhc2Ug
UGhhbnRvbUNyZWF0ZUFjdGl2YXRpb246CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNH
Qy5jcHAKaW5kZXggNTk0Njg0MGQyZjg4MDk1Nzk2OTFjNjhmOTZjMDBkNzVkMTVhNmI4NC4uZTM5
OThmNjA5M2NmOTJhMDcxYzU2MWYzYTQ0NDdlOGU2ZWI5YjJjOSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtMTk4LDYgKzE5OCw3IEBAIGJvb2wgZG9lc0dDKEdy
YXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIENoZWNrQmFkQ2VsbDoKICAgICBjYXNl
IEJvdHRvbVZhbHVlOgogICAgIGNhc2UgUGhhbnRvbU5ld09iamVjdDoKKyAgICBjYXNlIFBoYW50
b21OZXdBcnJheToKICAgICBjYXNlIFBoYW50b21OZXdGdW5jdGlvbjoKICAgICBjYXNlIFBoYW50
b21DcmVhdGVBY3RpdmF0aW9uOgogICAgIGNhc2UgUGhhbnRvbURpcmVjdEFyZ3VtZW50czoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IDE1YWU4ZjY4
M2FhZjRjOTM0YWNmNGJiYThkOWVlN2E2MTViMDI2OWUuLmEzZDRhYWFlOGE2MWQwYmI3Y2FlNmMz
NTZmOTZmNDQ1ZGNlM2YzZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1
cFBoYXNlLmNwcApAQCAtMTEwMiw2ICsxMTAyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBJ
ZGVudGl0eTogLy8gVGhpcyBzaG91bGQgaGF2ZSBiZWVuIGNsZWFuZWQgdXAuCiAgICAgICAgIGNh
c2UgQm9vbGVhblRvTnVtYmVyOgogICAgICAgICBjYXNlIFBoYW50b21OZXdPYmplY3Q6CisgICAg
ICAgIGNhc2UgUGhhbnRvbU5ld0FycmF5OgogICAgICAgICBjYXNlIFBoYW50b21OZXdGdW5jdGlv
bjoKICAgICAgICAgY2FzZSBQaGFudG9tQ3JlYXRlQWN0aXZhdGlvbjoKICAgICAgICAgY2FzZSBQ
aGFudG9tRGlyZWN0QXJndW1lbnRzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdNYXlFeGl0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhp
dC5jcHAKaW5kZXggNDYzMWVjZDU2MWM3OGJkNDg5ZWRkYWRjOGZmZTU3Zjk4OWQ5YjdmYy4uZTVj
NmMzNTJiZmNhNjFmNmE3NWFjMmIzNmEwMTVhYjhiNGEyZTU3NiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR01heUV4aXQuY3BwCkBAIC0xMDIsNiArMTAyLDcgQEAgYm9vbCBtYXlFeGl0
KEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIEJvdHRvbVZhbHVlOgogICAgIGNh
c2UgUHV0SGludDoKICAgICBjYXNlIFBoYW50b21OZXdPYmplY3Q6CisgICAgY2FzZSBQaGFudG9t
TmV3QXJyYXk6CiAgICAgY2FzZSBQdXRTdGFjazoKICAgICBjYXNlIEtpbGxTdGFjazoKICAgICBj
YXNlIEdldFN0YWNrOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5jcHAKaW5kZXggNmE5
ODUzNDI0Njg3MWJhNmI5NTljMGIzMjRlNzc3N2EyOWI0MmEyMy4uNWY5NGMxOTM3ZjZmOGRjMGU0
ZDJjYTY5ODgzOTg5ZDJkYmNiODQ0NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUu
Y3BwCkBAIC0xNjIsNyArMTYyLDcgQEAgdm9pZCBOb2RlOjpjb252ZXJ0VG9JZGVudGl0eU9uKE5v
ZGUqIGNoaWxkKQogCiB2b2lkIE5vZGU6OmNvbnZlcnRUb1B1dEhpbnQoY29uc3QgUHJvbW90ZWRM
b2NhdGlvbkRlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIE5vZGUqIGJhc2UsIE5vZGUqIHZhbHVlKQog
ewotICAgIG1fb3AgPSBQdXRIaW50OworICAgIHNldE9wQW5kRGVmYXVsdEZsYWdzKFB1dEhpbnQp
OwogICAgIG1fb3BJbmZvID0gZGVzY3JpcHRvci5pbW0xKCkubV92YWx1ZTsKICAgICBtX29wSW5m
bzIgPSBkZXNjcmlwdG9yLmltbTIoKS5tX3ZhbHVlOwogICAgIGNoaWxkMSgpID0gYmFzZS0+ZGVm
YXVsdEVkZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5kZXggNWJlZmQ4Mzll
YzgzNjhhNGY3ZDg4MmE3ZDNmMmIyNTY0ZTZlZDhkOS4uNjUwOWFkNzNiMzM5M2I3YWNiODZmODhj
NzkxODY0ZWJmZWVkNjljZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKQEAgLTQ2
MSw2ICs0NjEsOSBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgICAgICAvLyBUaGVzZSBwcmV0ZW5k
IHRvIGJlIHRoZSBlbXB0eSB2YWx1ZSBjb25zdGFudCBmb3IgdGhlIGJlbmVmaXQgb2YgdGhlIERG
RyBiYWNrZW5kLCB3aGljaAogICAgICAgICAgICAgLy8gb3RoZXJ3aXNlIHdvdWxkbid0IHRha2Ug
a2luZGx5IHRvIGEgbm9kZSB0aGF0IGRvZXNuJ3QgY29tcHV0ZSBhIHZhbHVlLgogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgY2FzZSBQaGFudG9tTmV3QXJyYXk6CisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIAogICAgICAgICBkZWZhdWx0OgogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNTgyLDYgKzU4NSwxNyBAQCBzdHJ1Y3QgTm9kZSB7CiAg
ICAgICAgIGNoaWxkcmVuID0gQWRqYWNlbmN5TGlzdCgpOwogICAgIH0KIAorICAgIHZvaWQgY29u
dmVydFRvUGhhbnRvbU5ld0FycmF5KEZyb3plblZhbHVlKiBsZW5ndGgpCisgICAgeworICAgICAg
ICBBU1NFUlQobV9vcCA9PSBOZXdBcnJheSB8fCBtX29wID09IE5ld0FycmF5QnVmZmVyKTsKKyAg
ICAgICAgbV9vcCA9IFBoYW50b21OZXdBcnJheTsKKyAgICAgICAgbV9mbGFncyAmPSB+Tm9kZUhh
c1ZhckFyZ3M7CisgICAgICAgIG1fZmxhZ3MgfD0gTm9kZU11c3RHZW5lcmF0ZTsKKyAgICAgICAg
bV9vcEluZm8gPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihsZW5ndGgpOworICAgICAgICBtX29w
SW5mbzIgPSAwOworICAgICAgICBjaGlsZHJlbiA9IEFkamFjZW5jeUxpc3QoKTsKKyAgICB9CisK
ICAgICB2b2lkIGNvbnZlcnRUb1BoYW50b21OZXdGdW5jdGlvbigpCiAgICAgewogICAgICAgICBB
U1NFUlQobV9vcCA9PSBOZXdGdW5jdGlvbik7CkBAIC0xNDY4LDYgKzE0ODIsMjcgQEAgc3RydWN0
IE5vZGUgewogICAgICAgICB9CiAgICAgfQogICAgIAorICAgIGJvb2wgaXNBcnJheUFsbG9jYXRp
b24oKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChvcCgpKSB7CisgICAgICAgIGNhc2UgTmV3QXJy
YXk6CisgICAgICAgIGNhc2UgTmV3QXJyYXlCdWZmZXI6CisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIGJvb2wgaXNQaGFudG9tQXJyYXlBbGxvY2F0aW9uKCkKKyAgICB7Cisg
ICAgICAgIHN3aXRjaCAob3AoKSkgeworICAgICAgICBjYXNlIFBoYW50b21OZXdBcnJheToKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCiAgICAgYm9vbCBpc0FjdGl2YXRpb25BbGxv
Y2F0aW9uKCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAob3AoKSkgewpAQCAtMTQ5Myw2ICsxNTI4
LDcgQEAgc3RydWN0IE5vZGUgewogICAgIHsKICAgICAgICAgc3dpdGNoIChvcCgpKSB7CiAgICAg
ICAgIGNhc2UgUGhhbnRvbU5ld09iamVjdDoKKyAgICAgICAgY2FzZSBQaGFudG9tTmV3QXJyYXk6
CiAgICAgICAgIGNhc2UgUGhhbnRvbURpcmVjdEFyZ3VtZW50czoKICAgICAgICAgY2FzZSBQaGFu
dG9tQ2xvbmVkQXJndW1lbnRzOgogICAgICAgICBjYXNlIFBoYW50b21OZXdGdW5jdGlvbjoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAppbmRleCA2OWY2YWU1ZWM5OTZiYmM4
Yzk0NTBkMzQ0OGIwNjg0YTgyOWJmNjkwLi5jMGQxOGU1NTE1NjYzM2M4OTEyNjVkMTI5MzYwODVh
MGM2MTMzNTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVU
eXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBAIC0y
NTIsNiArMjUyLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIFwKICAg
ICAvKiBTdXBwb3J0IGZvciBhbGxvY2F0aW9uIHNpbmtpbmcuICovXAogICAgIG1hY3JvKFBoYW50
b21OZXdPYmplY3QsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNy
byhQaGFudG9tTmV3QXJyYXksIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAg
ICBtYWNybyhQdXRIaW50LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQ2hlY2tTdHJ1
Y3R1cmVJbW1lZGlhdGUsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhNYXRlcmlhbGl6
ZU5ld09iamVjdCwgTm9kZVJlc3VsdEpTIHwgTm9kZUhhc1ZhckFyZ3MpIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFz
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5r
aW5nUGhhc2UuY3BwCmluZGV4IDA0MGQ1NzgxZGUyNTJjZTFlYWNmMTdjZGQ5NzE5OGY0YWZiNTA1
OTIuLjMyMjI2YTFkN2NiYzRlOTQwY2ZlYzM5MWQwYWU3YmU1NDkwYTQ5NmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFz
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9u
U2lua2luZ1BoYXNlLmNwcApAQCAtMTY5LDYgKzE2OSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbWF0ZXJpYWxpemVkLmFkZChub2RlLCBmYWxzZSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgWyZdIChOb2RlKiBl
c2NhcGVlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXNjYXBlZSA9IGZvbGxvd0J1
dHRlcmZsaWVzKGVzY2FwZWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gaXRl
ciA9IG1hdGVyaWFsaXplZC5maW5kKGVzY2FwZWUpOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChpdGVyICE9IG1hdGVyaWFsaXplZC5lbmQoKSkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKQEAgLTI4OCw2ICsyODksOCBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgICAgICBub2RlLAogICAgICAgICAgICAgICAgICAgICBbJl0gKCkgeyB9
LAogICAgICAgICAgICAgICAgICAgICBbJl0gKE5vZGUqIGVzY2FwZWUpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGVzY2FwZWUgPSBmb2xsb3dCdXR0ZXJmbGllcyhlc2NhcGVlKTsKKwogICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGF0YUxvZygiU2VlaW5nICIsIGVzY2FwZWUsICIgZXNjYXBlIGF0ICIsIG5vZGUsICJc
biIpOwogICAgICAgICAgICAgICAgICAgICAgICAgCkBAIC00NDgsOCArNDUxLDIxIEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgbV9ncmFwaC5kb1RvQ2hpbGRyZW4oCiAgICAgICAgICAgICAg
ICAgICAgIG5vZGUsCiAgICAgICAgICAgICAgICAgICAgIFsmXSAoRWRnZSYgZWRnZSkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKE5vZGUqIG1hdGVyaWFsaXplID0gbWFwcGluZy5nZXQo
ZWRnZS5ub2RlKCkpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVkZ2Uuc2V0Tm9kZSht
YXRlcmlhbGl6ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGVkZ2UtPm9wKCkp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgR2V0QnV0dGVyZmx5OiB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTm9kZSogdGFyZ2V0ID0gZWRnZS0+Y2hpbGQxKCkubm9kZSgp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChOb2RlKiBtYXRlcmlhbGl6ZSA9IG1h
cHBpbmcuZ2V0KHRhcmdldCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWRn
ZS5zZXROb2RlKG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBub2RlSW5kZXgsIFNwZWNOb25lLCBHZXRCdXR0ZXJmbHksIG5vZGUt
Pm9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVkZ2UobWF0ZXJp
YWxpemUsIEtub3duQ2VsbFVzZSkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKE5vZGUqIG1hdGVyaWFsaXplID0gbWFwcGluZy5nZXQoZWRnZS5ub2Rl
KCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZGdlLnNldE5vZGUobWF0ZXJp
YWxpemUpOworICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9
KTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAvLyBJZiB5b3UgY2F1c2UgYW4g
ZXNjYXBlLCB5b3Ugc2hvdWxkbid0IHNlZSB0aGUgb3JpZ2luYWwgZXNjYXBlZS4KQEAgLTQ1OCw2
ICs0NzQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgbm9kZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgIFsmXSAoKSB7IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICBb
Jl0gKE5vZGUqIGVzY2FwZWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlc2NhcGVl
ID0gZm9sbG93QnV0dGVyZmxpZXMoZXNjYXBlZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgREZHX0FTU0VSVChtX2dyYXBoLCBub2RlLCAhbV9zaW5rQ2FuZGlkYXRlcy5jb250YWlucyhl
c2NhcGVlKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICB9
CkBAIC00ODQsNyArNTAxLDIyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgICAg
IG1faW5zZXJ0aW9uU2V0LmV4ZWN1dGUoYmxvY2spOwogICAgICAgICB9Ci0gICAgICAgIAorCisg
ICAgICAgIC8vIFdlIG5lZWQgdG8gcmVtb3ZlIHRoZSBHZXRCdXR0ZXJmbHkgbm9kZXMgb3ZlciBw
aGFudG9tIGFsbG9jYXRpb24KKyAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3Jh
cGguYmxvY2tzSW5OYXR1cmFsT3JkZXIoKSkgeworICAgICAgICAgICAgZm9yIChOb2RlKiBub2Rl
IDogKmJsb2NrKSB7CisgICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CisgICAg
ICAgICAgICAgICAgY2FzZSBHZXRCdXR0ZXJmbHk6CisgICAgICAgICAgICAgICAgICAgIGlmICht
X3NpbmtDYW5kaWRhdGVzLmNvbnRhaW5zKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSkpCisgICAgICAg
ICAgICAgICAgICAgICAgICBub2RlLT5yZW1vdmUoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwogICAgICAg
ICAvLyBBdCB0aGlzIHBvaW50IHdlIGhhdmUgZHVtbXkgbWF0ZXJpYWxpemF0aW9uIG5vZGVzIGFs
b25nIHdpdGggZWRnZXMgdG8gdGhlbS4gVGhpcyBtZWFucwogICAgICAgICAvLyB0aGF0IHRoZSBw
YXJ0IG9mIHRoZSBjb250cm9sIGZsb3cgZ3JhcGggdGhhdCBwcmVmZXJzIHRvIHNlZSBhY3R1YWwg
b2JqZWN0IGFsbG9jYXRpb25zCiAgICAgICAgIC8vIGlzIGNvbXBsZXRlbHkgZml4ZWQgdXAsIGV4
Y2VwdCBmb3IgdGhlIG1hdGVyaWFsaXphdGlvbnMgdGhlbXNlbHZlcy4KQEAgLTUwOSw2ICs1NDEs
MjMgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAg
ICAgfQogCisgICAgICAgICAgICAgICAgY2FzZSBQdXRCeVZhbDogeworICAgICAgICAgICAgICAg
ICAgICBBcnJheU1vZGUgbW9kZSA9IG5vZGUtPmFycmF5TW9kZSgpOworICAgICAgICAgICAgICAg
ICAgICBOb2RlKiBiYXNlID0gbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKS5ub2RlKCk7Cisg
ICAgICAgICAgICAgICAgICAgIE5vZGUqIGluZGV4ID0gbV9ncmFwaC52YXJBcmdDaGlsZChub2Rl
LCAxKS5ub2RlKCk7CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIHZhbHVlID0gbV9ncmFwaC52
YXJBcmdDaGlsZChub2RlLCAyKS5ub2RlKCk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKGlu
ZGV4SXNJbkJvdW5kcyhiYXNlLCBpbmRleCwgbW9kZS5tb2RlRm9yUHV0KCkudHlwZSgpKSkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvUHV0SGludCgKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvcigKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXhlZFByb3BlcnR5UExvYywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZGV4LT5hc01hY2hp
bmVJbnQoKSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdmFsdWUpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAg
IGNhc2UgUHV0Q2xvc3VyZVZhcjogewogICAgICAgICAgICAgICAgICAgICBOb2RlKiB0YXJnZXQg
PSBub2RlLT5jaGlsZDEoKS5ub2RlKCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChtX3NpbmtD
YW5kaWRhdGVzLmNvbnRhaW5zKHRhcmdldCkpIHsKQEAgLTU2Myw2ICs2MTIsNzAgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogCisgICAg
ICAgICAgICAgICAgY2FzZSBOZXdBcnJheTogeworICAgICAgICAgICAgICAgICAgICBpZiAobV9z
aW5rQ2FuZGlkYXRlcy5jb250YWlucyhub2RlKSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
Tm9kZSogYXJyYXlTdHJ1Y3R1cmUgPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1faW5z
ZXJ0aW9uU2V0Lmluc2VydENvbnN0YW50KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBub2RlSW5kZXggKyAxLCBub2RlLT5vcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmFy
cmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbigKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmluZGV4aW5nVHlwZSgpKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnQoCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbm9kZUluZGV4ICsgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ
cm9tb3RlZEhlYXBMb2NhdGlvbihTdHJ1Y3R1cmVQTG9jLCBub2RlKS5jcmVhdGVIaW50KAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLCBub2RlLT5vcmlnaW4sIGFycmF5
U3RydWN0dXJlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBOb2RlKiBsZW5ndGggPQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydENvbnN0YW50KAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlSW5kZXggKyAxLCBub2RlLT5vcmln
aW4sIGpzTnVtYmVyKG5vZGUtPm51bUNoaWxkcmVuKCkpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
b2RlSW5kZXggKyAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb21vdGVkSGVhcExv
Y2F0aW9uKEFycmF5TGVuZ3RoUExvYywgbm9kZSkuY3JlYXRlSGludCgKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbV9ncmFwaCwgbm9kZS0+b3JpZ2luLCBsZW5ndGgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBub2RlLT5udW1DaGls
ZHJlbigpOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNl
dC5pbnNlcnQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVJbmRleCArIDEs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb21vdGVkSGVhcExvY2F0aW9uKAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXhlZFByb3BlcnR5UExvYywg
bm9kZSwgaSkuY3JlYXRlSGludCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtX2dyYXBoLCBub2RlLT5vcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCBpKS5ub2RlKCkpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZl
cnRUb1BoYW50b21OZXdBcnJheShsZW5ndGgtPmNvbnN0YW50KCkpOworICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgICAgIGNhc2UgTmV3QXJyYXlCdWZmZXI6IHsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKG1fc2lua0NhbmRpZGF0ZXMuY29udGFpbnMobm9kZSkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIE5vZGUqIGFycmF5U3RydWN0dXJlID0KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtX2luc2VydGlvblNldC5pbnNlcnRDb25zdGFudCgKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbm9kZUluZGV4ICsgMSwgbm9kZS0+b3JpZ2luLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpLT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5pbmRleGluZ1R5cGUoKSkp
OworICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0KAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG5vZGVJbmRleCArIDEsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUHJvbW90ZWRIZWFwTG9jYXRpb24oU3RydWN0dXJlUExvYywgbm9kZSkuY3JlYXRl
SGludCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaCwgbm9kZS0+b3Jp
Z2luLCBhcnJheVN0cnVjdHVyZSkpOworICAgICAgICAgICAgICAgICAgICAgICAgTm9kZSogbGVu
Z3RoID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnRD
b25zdGFudCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZUluZGV4ICsgMSwg
bm9kZS0+b3JpZ2luLCBqc051bWJlcihub2RlLT5udW1Db25zdGFudHMoKSkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0KAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG5vZGVJbmRleCArIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJv
bW90ZWRIZWFwTG9jYXRpb24oQXJyYXlMZW5ndGhQTG9jLCBub2RlKS5jcmVhdGVIaW50KAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLCBub2RlLT5vcmlnaW4sIGxlbmd0
aCkpOworICAgICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZSogZGF0YSA9IG1fZ3JhcGgubV9j
b2RlQmxvY2stPmNvbnN0YW50QnVmZmVyKG5vZGUtPnN0YXJ0Q29uc3RhbnQoKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbm9kZS0+bnVtQ29uc3Rh
bnRzKCk7ICsraSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vZGUqIGRhdGFOb2Rl
ID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0
Q29uc3RhbnQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlSW5kZXgg
KyAxLCBub2RlLT5vcmlnaW4sIG1fZ3JhcGguZnJlZXplKGRhdGFbaV0pKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnQoCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG5vZGVJbmRleCArIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFByb21vdGVkSGVhcExvY2F0aW9uKEluZGV4ZWRQcm9wZXJ0eVBMb2MsIG5vZGUsIGkp
LmNyZWF0ZUhpbnQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBo
LCBub2RlLT5vcmlnaW4sIGRhdGFOb2RlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9QaGFudG9tTmV3QXJyYXkobGVu
Z3RoLT5jb25zdGFudCgpKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisKICAgICAgICAgICAgICAgICBjYXNlIE5l
d0Z1bmN0aW9uOiB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChtX3NpbmtDYW5kaWRhdGVzLmNv
bnRhaW5zKG5vZGUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBOb2RlKiBleGVjdXRhYmxl
ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Q29uc3RhbnQoCkBAIC04MzEsNiArOTQ0LDE2IEBAIHBy
aXZhdGU6CiAgICAgICAgIHJldHVybiBkZWYtPnZhbHVlKCk7CiAgICAgfQogCisgICAgTm9kZSog
Zm9sbG93QnV0dGVyZmxpZXMoTm9kZSogbm9kZSkKKyAgICB7CisgICAgICAgIHN3aXRjaCAobm9k
ZS0+b3AoKSkgeworICAgICAgICBjYXNlIEdldEJ1dHRlcmZseToKKyAgICAgICAgICAgIHJldHVy
biBub2RlLT5jaGlsZDEoKS5ub2RlKCk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBy
ZXR1cm4gbm9kZTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNp
bmtDYW5kaWRhdGVGdW5jdG9yLCB0eXBlbmFtZSBFc2NhcGVGdW5jdG9yPgogICAgIHZvaWQgaGFu
ZGxlTm9kZSgKICAgICAgICAgTm9kZSogbm9kZSwKQEAgLTg0MSw3ICs5NjQsMTAgQEAgcHJpdmF0
ZToKICAgICAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAgICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdP
YmplY3Q6CiAgICAgICAgIGNhc2UgTWF0ZXJpYWxpemVDcmVhdGVBY3RpdmF0aW9uOgotICAgICAg
ICAgICAgc2lua0NhbmRpZGF0ZSgpOworICAgICAgICBjYXNlIE5ld0FycmF5OgorICAgICAgICBj
YXNlIE5ld0FycmF5QnVmZmVyOgorICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgIT0gTmV3QXJy
YXlCdWZmZXIgfHwgbm9kZS0+bnVtQ29uc3RhbnRzKCkgPCAxMDApCisgICAgICAgICAgICAgICAg
c2lua0NhbmRpZGF0ZSgpOwogICAgICAgICAgICAgbV9ncmFwaC5kb1RvQ2hpbGRyZW4oCiAgICAg
ICAgICAgICAgICAgbm9kZSwKICAgICAgICAgICAgICAgICBbJl0gKEVkZ2UgZWRnZSkgewpAQCAt
ODc1LDYgKzEwMDEsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAg
ICAgYnJlYWs7CiAKKyAgICAgICAgY2FzZSBHZXRCdXR0ZXJmbHk6CisgICAgICAgICAgICBicmVh
azsKKwogICAgICAgICBjYXNlIE1vdkhpbnQ6CiAgICAgICAgIGNhc2UgUHV0SGludDoKICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtODg5LDcgKzEwMTgsNTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICBlc2NhcGUodGFyZ2V0KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAg
ICAgICAgICAKKworICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOiB7CisgICAgICAgICAgICBB
cnJheU1vZGUgbW9kZSA9IG5vZGUtPmFycmF5TW9kZSgpOworICAgICAgICAgICAgc3dpdGNoICht
b2RlLnR5cGUoKSkgeworICAgICAgICAgICAgY2FzZSBBcnJheTo6SW50MzI6CisgICAgICAgICAg
ICBjYXNlIEFycmF5OjpEb3VibGU6CisgICAgICAgICAgICBjYXNlIEFycmF5OjpDb250aWd1b3Vz
OgorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgICAgIG1fZ3JhcGguZG9Ub0NoaWxkcmVuKAorICAgICAgICAgICAgICAgICAgICBub2Rl
LAorICAgICAgICAgICAgICAgICAgICBbJl0gKEVkZ2UgZWRnZSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgZXNjYXBlKGVkZ2Uubm9kZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorCisgICAgICAgIGNhc2UgR2V0QnlWYWw6IHsKKyAgICAgICAgICAgIGlmICgh
aW5kZXhJc0luQm91bmRzKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9k
ZSgpLCBub2RlLT5hcnJheU1vZGUoKS50eXBlKCkpKSB7CisgICAgICAgICAgICAgICAgbV9ncmFw
aC5kb1RvQ2hpbGRyZW4oCisgICAgICAgICAgICAgICAgICAgIG5vZGUsCisgICAgICAgICAgICAg
ICAgICAgIFsmXSAoRWRnZSBlZGdlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBlc2NhcGUo
ZWRnZS5ub2RlKCkpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBQdXRCeVZhbDogewor
ICAgICAgICAgICAgTm9kZSogYmFzZSA9IG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCkubm9k
ZSgpOworICAgICAgICAgICAgTm9kZSogaW5kZXggPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUs
IDEpLm5vZGUoKTsKKworICAgICAgICAgICAgaWYgKCFpbmRleElzSW5Cb3VuZHMoYmFzZSwgaW5k
ZXgsIG5vZGUtPmFycmF5TW9kZSgpLm1vZGVGb3JQdXQoKS50eXBlKCkpKSB7CisgICAgICAgICAg
ICAgICAgbV9ncmFwaC5kb1RvQ2hpbGRyZW4oCisgICAgICAgICAgICAgICAgICAgIG5vZGUsCisg
ICAgICAgICAgICAgICAgICAgIFsmXSAoRWRnZSBlZGdlKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBlc2NhcGUoZWRnZS5ub2RlKCkpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBQ
dXRCeU9mZnNldDogewogICAgICAgICAgICAgTm9kZSogdGFyZ2V0ID0gbm9kZS0+Y2hpbGQyKCku
bm9kZSgpOwogICAgICAgICAgICAgaWYgKCF0YXJnZXQtPmlzT2JqZWN0QWxsb2NhdGlvbigpKSB7
CkBAIC05NTMsNiArMTEyNiwyNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KIAorICAgICAgICBjYXNlIE5ld0FycmF5OgorICAgICAgICAgICAgcmVzdWx0ID0gbV9n
cmFwaC5hZGROb2RlKAorICAgICAgICAgICAgICAgIGVzY2FwZWUtPnByZWRpY3Rpb24oKSwgTm9k
ZTo6VmFyQXJnLCBOZXdBcnJheSwKKyAgICAgICAgICAgICAgICBOb2RlT3JpZ2luKAorICAgICAg
ICAgICAgICAgICAgICBlc2NhcGVlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAg
ICAgIHdoZXJlLT5vcmlnaW4uZm9yRXhpdCksCisgICAgICAgICAgICAgICAgT3BJbmZvKGVzY2Fw
ZWUtPmluZGV4aW5nVHlwZSgpKSwgT3BJbmZvKCksIDAsIDApOworICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgY2FzZSBOZXdBcnJheUJ1ZmZlcjoKKyAgICAgICAgICAgIHJlc3VsdCA9IG1f
Z3JhcGguYWRkTm9kZSgKKyAgICAgICAgICAgICAgICBlc2NhcGVlLT5wcmVkaWN0aW9uKCksIE5v
ZGU6OlZhckFyZywgTmV3QXJyYXksCisgICAgICAgICAgICAgICAgTm9kZU9yaWdpbigKKyAgICAg
ICAgICAgICAgICAgICAgZXNjYXBlZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAg
ICAgICB3aGVyZS0+b3JpZ2luLmZvckV4aXQpLAorICAgICAgICAgICAgICAgIE9wSW5mbyhlc2Nh
cGVlLT5pbmRleGluZ1R5cGUoKSksIE9wSW5mbygpLCAwLCAwKTsKKyAgICAgICAgICAgIGJyZWFr
OworCiAgICAgICAgIGNhc2UgTmV3RnVuY3Rpb246CiAgICAgICAgICAgICByZXN1bHQgPSBtX2dy
YXBoLmFkZE5vZGUoCiAgICAgICAgICAgICAgICAgZXNjYXBlZS0+cHJlZGljdGlvbigpLCBOZXdG
dW5jdGlvbiwKQEAgLTEwODEsNiArMTI3Miw2NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIE5ld0FycmF5OiB7CisgICAgICAgICAgICBW
ZWN0b3I8UHJvbW90ZWRIZWFwTG9jYXRpb24+IGxvY2F0aW9ucyA9IG1fbG9jYXRpb25zRm9yQWxs
b2NhdGlvbi5nZXQoZXNjYXBlZSk7CisKKyAgICAgICAgICAgIHVuc2lnbmVkIGZpcnN0Q2hpbGQg
PSBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW4uc2l6ZSgpOworCisgICAgICAgICAgICBBU1NFUlQo
bG9jYXRpb25zLmNvbnRhaW5zKFByb21vdGVkSGVhcExvY2F0aW9uKFN0cnVjdHVyZVBMb2MsIGVz
Y2FwZWUpKSk7CisgICAgICAgICAgICBBU1NFUlQobG9jYXRpb25zLmNvbnRhaW5zKFByb21vdGVk
SGVhcExvY2F0aW9uKEFycmF5TGVuZ3RoUExvYywgZXNjYXBlZSkpKTsKKyAgICAgICAgICAgIEFT
U0VSVChlc2NhcGVlLT5hc01hY2hpbmVJbnQoKSA9PSBzdGF0aWNfY2FzdDxpbnQ2NF90Pihsb2Nh
dGlvbnMuc2l6ZSgpIC0gMikpOworCisgICAgICAgICAgICBzdGQ6OnNvcnQoCisgICAgICAgICAg
ICAgICAgbG9jYXRpb25zLmJlZ2luKCksCisgICAgICAgICAgICAgICAgbG9jYXRpb25zLmVuZCgp
LAorICAgICAgICAgICAgICAgIFtdIChQcm9tb3RlZEhlYXBMb2NhdGlvbiBhLCBQcm9tb3RlZEhl
YXBMb2NhdGlvbiBiKSB7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoYi5raW5kKCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgY2FzZSBTdHJ1Y3R1cmVQTG9jOgorICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICAgICAgICAgIGNhc2UgQXJyYXlM
ZW5ndGhQTG9jOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEua2luZCgpID09IFN0
cnVjdHVyZVBMb2M7CisKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmRleGVkUHJvcGVydHlQ
TG9jOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEua2luZCgpID09IEluZGV4ZWRQcm9w
ZXJ0eVBMb2MpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEuaW5mbygpIDwg
Yi5pbmZvKCk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAg
ICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIH0pOworCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbG9jYXRpb25z
LnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgc3dpdGNoIChsb2NhdGlvbnNbaV0ua2lu
ZCgpKSB7CisgICAgICAgICAgICAgICAgY2FzZSBTdHJ1Y3R1cmVQTG9jOgorICAgICAgICAgICAg
ICAgICAgICBBU1NFUlQoCisgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGJsb2NrLCBs
b2NhdGlvbnNbaV0pLT5jYXN0Q29uc3RhbnQ8U3RydWN0dXJlKj4oKSA9PQorICAgICAgICAgICAg
ICAgICAgICAgICAgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KS0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmluZGV4aW5nVHlwZSgpKSk7CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgY2FzZSBBcnJheUxlbmd0aFBMb2M6
CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChyZXNvbHZlKGJsb2NrLCBsb2NhdGlvbnNbaV0p
LT5hc01hY2hpbmVJbnQoKSA9PSBzdGF0aWNfY2FzdDxpbnQ2NF90Pihsb2NhdGlvbnMuc2l6ZSgp
IC0gMikpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGNh
c2UgSW5kZXhlZFByb3BlcnR5UExvYzogeworICAgICAgICAgICAgICAgICAgICBERkdfQVNTRVJU
KG1fZ3JhcGgsIG5vZGUsIGxvY2F0aW9uc1tpXS5pbmZvKCkgPT0gaSAtIDIpOworICAgICAgICAg
ICAgICAgICAgICBOb2RlKiB2YWx1ZSA9IHJlc29sdmUoYmxvY2ssIGxvY2F0aW9uc1tpXSk7Cisg
ICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5hcHBlbmQodmFsdWUp
OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBERkdfQ1JBU0gobV9ncmFw
aCwgbm9kZSwgIkJhZCBsb2NhdGlvbiBraW5kIik7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBub2RlLT5jaGlsZHJlbiA9IEFkamFjZW5jeUxpc3QoCisg
ICAgICAgICAgICAgICAgQWRqYWNlbmN5TGlzdDo6VmFyaWFibGUsCisgICAgICAgICAgICAgICAg
Zmlyc3RDaGlsZCwgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLnNpemUoKSAtIGZpcnN0Q2hpbGQp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIE5ld0Z1bmN0
aW9uOiB7CiAgICAgICAgICAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgewogICAgICAgICAgICAg
ICAgIFZlY3RvcjxQcm9tb3RlZEhlYXBMb2NhdGlvbj4gbG9jYXRpb25zID0gbV9sb2NhdGlvbnNG
b3JBbGxvY2F0aW9uLmdldChlc2NhcGVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggY2Rl
MDliZjEyMWIyMWY4YTRmZWI2MGRmYTI0ZmI0MjBiNmE5YmFiYS4uZDU5Zjk2YmUyNzEwMThlMDJm
ZTdkNWE3MzE1ODJjODZlMTRmYmE4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTU1Nyw2
ICs1NTcsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIElkZW50aXR5OgogICAgICAgICBjYXNl
IEJvb2xlYW5Ub051bWJlcjoKICAgICAgICAgY2FzZSBQaGFudG9tTmV3T2JqZWN0OgorICAgICAg
ICBjYXNlIFBoYW50b21OZXdBcnJheToKICAgICAgICAgY2FzZSBQaGFudG9tTmV3RnVuY3Rpb246
CiAgICAgICAgIGNhc2UgUGhhbnRvbUNyZWF0ZUFjdGl2YXRpb246CiAgICAgICAgIGNhc2UgUGhh
bnRvbURpcmVjdEFyZ3VtZW50czoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJvbW90ZUhlYXBBY2Nlc3MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJvbW90ZUhlYXBBY2Nlc3MuaAppbmRleCAwMThjM2IxNzQ5NzdmNzdlNzJhZjRkZWUxOTlkZTA2
ZjVkYjBjZTJjLi5hZTM2MWMyNzk4M2UyOWU4NDFiZGNjMTdkYmMxZjEyYTQ0OGIyOTMxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVIZWFwQWNjZXNzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlSGVhcEFjY2Vzcy5oCkBA
IC0zMyw2ICszMyw0NyBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKK3N0
YXRpYyBpbmxpbmUgYm9vbCBpbmRleElzSW5Cb3VuZHMoTm9kZSogYmFzZSwgTm9kZSogaW5kZXgs
IEFycmF5OjpUeXBlIHR5cGUpCit7CisgICAgaWYgKCFpbmRleC0+aXNNYWNoaW5lSW50Q29uc3Rh
bnQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgc3dpdGNoICh0eXBlKSB7CisgICAg
Y2FzZSBBcnJheTo6SW50MzI6CisgICAgY2FzZSBBcnJheTo6RG91YmxlOgorICAgIGNhc2UgQXJy
YXk6OkNvbnRpZ3VvdXM6CisgICAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGludDY0X3QgbGVuZ3RoOworICAgIHN3aXRjaCAo
YmFzZS0+b3AoKSkgeworICAgIGNhc2UgTmV3QXJyYXk6CisgICAgICAgIGxlbmd0aCA9IGJhc2Ut
Pm51bUNoaWxkcmVuKCk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBOZXdBcnJheUJ1ZmZl
cjoKKyAgICAgICAgbGVuZ3RoID0gYmFzZS0+bnVtQ29uc3RhbnRzKCk7CisgICAgICAgIGJyZWFr
OworCisgICAgY2FzZSBQaGFudG9tTmV3QXJyYXk6CisgICAgICAgIGxlbmd0aCA9IGJhc2UtPmFz
TWFjaGluZUludCgpOworICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBBU1NFUlQoMCA8PSBsZW5ndGggJiYgbGVuZ3RoIDwg
c3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKTsKKworICAgIGlmIChpbmRleC0+
YXNNYWNoaW5lSW50KCkgPCAwIHx8IGluZGV4LT5hc01hY2hpbmVJbnQoKSA+PSBsZW5ndGgpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBXcml0ZUZ1bmN0b3IsIHR5cGVuYW1lIFJlYWRGdW5jdG9yPgogdm9pZCBwcm9tb3Rl
SGVhcEFjY2VzcyhOb2RlKiBub2RlLCBjb25zdCBXcml0ZUZ1bmN0b3ImIHdyaXRlLCBjb25zdCBS
ZWFkRnVuY3RvciYgcmVhZCkKIHsKQEAgLTUyLDYgKzkzLDMzIEBAIHZvaWQgcHJvbW90ZUhlYXBB
Y2Nlc3MoTm9kZSogbm9kZSwgY29uc3QgV3JpdGVGdW5jdG9yJiB3cml0ZSwgY29uc3QgUmVhZEZ1
bmN0b3ImCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6
IHsKKyAgICAgICAgaWYgKCFub2RlLT5jaGlsZDEoKS0+aXNQaGFudG9tQXJyYXlBbGxvY2F0aW9u
KCkpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBBcnJheU1vZGUgbW9kZSA9IG5vZGUt
PmFycmF5TW9kZSgpOworICAgICAgICBzd2l0Y2ggKG1vZGUudHlwZSgpKSB7CisgICAgICAgIGNh
c2UgQXJyYXk6OkludDMyOgorICAgICAgICBjYXNlIEFycmF5OjpEb3VibGU6CisgICAgICAgIGNh
c2UgQXJyYXk6OkNvbnRpZ3VvdXM6CisgICAgICAgICAgICByZWFkKFByb21vdGVkSGVhcExvY2F0
aW9uKEFycmF5TGVuZ3RoUExvYywgbm9kZS0+Y2hpbGQxKCkpKTsKKyAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
ICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIEdldEJ5VmFsOiB7CisgICAgICAgIGlmIChu
b2RlLT5jaGlsZDEoKS0+aXNQaGFudG9tQXJyYXlBbGxvY2F0aW9uKCkKKyAgICAgICAgICAgICYm
IGluZGV4SXNJbkJvdW5kcyhub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5v
ZGUoKSwgbm9kZS0+YXJyYXlNb2RlKCkudHlwZSgpKSkgeworICAgICAgICAgICAgdW5zaWduZWQg
aW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obm9kZS0+Y2hpbGQyKCktPmFzTWFjaGluZUlu
dCgpKTsKKyAgICAgICAgICAgIHJlYWQoUHJvbW90ZWRIZWFwTG9jYXRpb24oSW5kZXhlZFByb3Bl
cnR5UExvYywgbm9kZS0+Y2hpbGQxKCksIGluZGV4KSk7CisgICAgICAgIH0KKyAgICAgICAgYnJl
YWs7CisgICAgfQorCiAgICAgY2FzZSBNdWx0aUdldEJ5T2Zmc2V0OiB7CiAgICAgICAgIGlmIChu
b2RlLT5jaGlsZDEoKS0+aXNQaGFudG9tT2JqZWN0QWxsb2NhdGlvbigpKSB7CiAgICAgICAgICAg
ICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gbm9kZS0+bXVsdGlHZXRCeU9mZnNldERhdGEo
KS5pZGVudGlmaWVyTnVtYmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmNwcAppbmRleCAyNGY2OTc3MGVkYjhkMjRhOTcyNDcw
ZDQwZjkwZTk2ZTU3OGE5OTcyLi5mZTU4MDczZmJjYjg2MDMxZTMyZDY1MjY3Nzk4MzYyNmE0YThk
OGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVh
cExvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVk
SGVhcExvY2F0aW9uLmNwcApAQCAtMTAyLDYgKzEwMiwxNCBAQCB2b2lkIHByaW50SW50ZXJuYWwo
UHJpbnRTdHJlYW0mIG91dCwgUHJvbW90ZWRMb2NhdGlvbktpbmQga2luZCkKICAgICBjYXNlIENs
b3N1cmVWYXJQTG9jOgogICAgICAgICBvdXQucHJpbnQoIkNsb3N1cmVWYXJQTG9jIik7CiAgICAg
ICAgIHJldHVybjsKKworICAgIGNhc2UgQXJyYXlMZW5ndGhQTG9jOgorICAgICAgICBvdXQucHJp
bnQoIkFycmF5TGVuZ3RoUExvYyIpOworICAgICAgICByZXR1cm47CisKKyAgICBjYXNlIEluZGV4
ZWRQcm9wZXJ0eVBMb2M6CisgICAgICAgIG91dC5wcmludCgiSW5kZXhlZFByb3BlcnR5UExvYyIp
OworICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21v
dGVkSGVhcExvY2F0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVk
SGVhcExvY2F0aW9uLmgKaW5kZXggYmMxNTE1ODQ4MDc0MzdkYjA3Mjk0MTQxOWU4YjRiOWJhM2U1
NjJjYi4uN2JkNzM4NzIyM2E0YTU5OGZmZGZkN2M1NWQzYzllMWJkZDNjNDlmOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaApA
QCAtNDcsNiArNDcsOSBAQCBlbnVtIFByb21vdGVkTG9jYXRpb25LaW5kIHsKICAgICBGdW5jdGlv
bkFjdGl2YXRpb25QTG9jLAogICAgIEFjdGl2YXRpb25TY29wZVBMb2MsCiAgICAgQ2xvc3VyZVZh
clBMb2MsCisKKyAgICBBcnJheUxlbmd0aFBMb2MsCisgICAgSW5kZXhlZFByb3BlcnR5UExvYywK
IH07CiAKIGNsYXNzIFByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggOTUzYjU0YzIxZjczOWQwN2Rl
NDY0NWRiNmI3NDc1YzFmMDdiYWU2MS4uMDU0ZjZjMGM5YmM0MjU5MmZlOWVlODBlZTQ2N2I4MmY0
YmUxNTBmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9F
eGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRl
LmgKQEAgLTI3NCw2ICsyNzQsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5
cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXRFbnVtZXJh
dG9yR2VuZXJpY1BuYW1lOgogICAgIGNhc2UgVG9JbmRleFN0cmluZzoKICAgICBjYXNlIFBoYW50
b21OZXdPYmplY3Q6CisgICAgY2FzZSBQaGFudG9tTmV3QXJyYXk6CiAgICAgY2FzZSBQaGFudG9t
TmV3RnVuY3Rpb246CiAgICAgY2FzZSBQaGFudG9tQ3JlYXRlQWN0aXZhdGlvbjoKICAgICBjYXNl
IFB1dEhpbnQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDMyXzY0LmNwcAppbmRleCAyOGM1Y2FhNTg1ODk2Mjc0NDE5OWZhM2IzMGY1MWU5NDA5
OTQ5ZTI1Li5lMTc4YmQyNmJlM2Y5ZjgwYzQxMTM4OTk4ZTIxYmJjNzlmOTU3ZmNlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHAKQEAgLTQ2MzUsNiArNDYzNSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICBjYXNlIENoZWNrQmFkQ2VsbDoKICAgICBjYXNlIEJvdHRvbVZhbHVlOgog
ICAgIGNhc2UgUGhhbnRvbU5ld09iamVjdDoKKyAgICBjYXNlIFBoYW50b21OZXdBcnJheToKICAg
ICBjYXNlIFBoYW50b21OZXdGdW5jdGlvbjoKICAgICBjYXNlIFBoYW50b21DcmVhdGVBY3RpdmF0
aW9uOgogICAgIGNhc2UgUHV0SGludDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IDI3Yjc3ZGY3MGJjYjYzMTJlNjY5MGMwMGFm
MjQzMDFlNTEzYjcyODQuLmU4N2YxNTIwYzg2MTU2YjJkMjY5NmQ0MTc5MWVlMjRjNGI0MGJmNzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcApAQCAtNDcxOCw2ICs0NzE4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlKiBub2RlKQogICAgIGNhc2UgQ2hlY2tCYWRDZWxsOgogICAgIGNhc2UgQm90dG9tVmFsdWU6
CiAgICAgY2FzZSBQaGFudG9tTmV3T2JqZWN0OgorICAgIGNhc2UgUGhhbnRvbU5ld0FycmF5Ogog
ICAgIGNhc2UgUGhhbnRvbU5ld0Z1bmN0aW9uOgogICAgIGNhc2UgUGhhbnRvbUNyZWF0ZUFjdGl2
YXRpb246CiAgICAgY2FzZSBHZXRNeUFyZ3VtZW50QnlWYWw6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHVmFsaWRhdGUuY3BwCmluZGV4IDJiYTMzMzg0OTM5OWU0M2I2YzQxZjVkZmZiZTkw
OTMzNTE1MWY1NTIuLjY3ZmIyZDkzNTExNjNjNjdjMGIwYjhiNjZhZWJmZDA0ZDA0YTUzMmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCkBAIC00MjUsNiArNDI1
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYXNlIFVwc2lsb246CiAgICAgICAgICAg
ICAgICAgY2FzZSBDaGVja0luQm91bmRzOgogICAgICAgICAgICAgICAgIGNhc2UgUGhhbnRvbU5l
d09iamVjdDoKKyAgICAgICAgICAgICAgICBjYXNlIFBoYW50b21OZXdBcnJheToKICAgICAgICAg
ICAgICAgICBjYXNlIFBoYW50b21OZXdGdW5jdGlvbjoKICAgICAgICAgICAgICAgICBjYXNlIFBo
YW50b21DcmVhdGVBY3RpdmF0aW9uOgogICAgICAgICAgICAgICAgIGNhc2UgR2V0TXlBcmd1bWVu
dEJ5VmFsOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmls
aXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3Bw
CmluZGV4IDMxMjRlMDI1ZjhiM2M4YzA2MzdmNjIzYzNkNDhmNTFlMmQwZWI5MjcuLmFkN2RjNzZi
MzU4N2U5YTg1ZjdhNTM4ZTFkNzdkOGU0OTRhMjAzYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKQEAgLTE4MSw2ICsxODEsNyBAQCBpbmxpbmUg
Q2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIFRvSW5kZXhT
dHJpbmc6CiAgICAgY2FzZSBCb3R0b21WYWx1ZToKICAgICBjYXNlIFBoYW50b21OZXdPYmplY3Q6
CisgICAgY2FzZSBQaGFudG9tTmV3QXJyYXk6CiAgICAgY2FzZSBQaGFudG9tTmV3RnVuY3Rpb246
CiAgICAgY2FzZSBQaGFudG9tQ3JlYXRlQWN0aXZhdGlvbjoKICAgICBjYXNlIFB1dEhpbnQ6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCmluZGV4
IDMwYzQ1ZGVjMjA3YzllZTMzNzM0OTBiNjI3MzJjZjE1MmRjNzRlOWIuLjFjNjIzNTc0MjIyYzk4
NWY3OTM0N2YwOTRhZGM4OWZlMGQ4ZDA1NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCkBAIC04NjAsNiArODYwLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgY2FzZSBNb3ZIaW50OgogICAgICAgICBjYXNlIFpvbWJpZUhpbnQ6CiAgICAgICAg
IGNhc2UgUGhhbnRvbU5ld09iamVjdDoKKyAgICAgICAgY2FzZSBQaGFudG9tTmV3QXJyYXk6CiAg
ICAgICAgIGNhc2UgUGhhbnRvbU5ld0Z1bmN0aW9uOgogICAgICAgICBjYXNlIFBoYW50b21DcmVh
dGVBY3RpdmF0aW9uOgogICAgICAgICBjYXNlIFBoYW50b21EaXJlY3RBcmd1bWVudHM6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcAppbmRleCA0ZTVjOGIzZmI3
OTNhODNiMjM2N2ZiMDBhN2U3YzFiNzRhNDg0OWUwLi45NmU2N2JkYmIwNmRkMzBiNDEyZDgwMGYz
ZjYxODU0ZjY1MjQ0ZWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0
aW9ucy5jcHAKQEAgLTk0LDYgKzk0LDM0IEBAIGV4dGVybiAiQyIgSlNDZWxsKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbk1hdGVyaWFsaXplT2JqZWN0SW5PU1IoCiAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgfQogCisgICAgY2FzZSBQaGFudG9tTmV3QXJyYXk6IHsKKyAgICAgICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSBudWxscHRyOworICAgICAgICB1aW50MzJfdCBsZW5ndGggPSAwOwor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtYXRlcmlhbGl6YXRpb24tPnByb3BlcnRpZXMoKS5z
aXplKCk7IGktLTspIHsKKyAgICAgICAgICAgIGNvbnN0IEV4aXRQcm9wZXJ0eVZhbHVlJiBwcm9w
ZXJ0eSA9IG1hdGVyaWFsaXphdGlvbi0+cHJvcGVydGllcygpW2ldOworICAgICAgICAgICAgaWYg
KHByb3BlcnR5LmxvY2F0aW9uKCkua2luZCgpID09IFN0cnVjdHVyZVBMb2MpCisgICAgICAgICAg
ICAgICAgc3RydWN0dXJlID0ganNDYXN0PFN0cnVjdHVyZSo+KEpTVmFsdWU6OmRlY29kZSh2YWx1
ZXNbaV0pKTsKKyAgICAgICAgICAgIGlmIChwcm9wZXJ0eS5sb2NhdGlvbigpLmtpbmQoKSA9PSBB
cnJheUxlbmd0aFBMb2MpCisgICAgICAgICAgICAgICAgbGVuZ3RoID0gSlNWYWx1ZTo6ZGVjb2Rl
KHZhbHVlc1tpXSkuYXNVSW50MzIoKTsKKyAgICAgICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VS
VChzdHJ1Y3R1cmUpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChsZW5ndGggPT0gbWF0ZXJpYWxp
emF0aW9uLT5wcm9wZXJ0aWVzKCkuc2l6ZSgpIC0gMik7CisKKyAgICAgICAgSlNBcnJheSogYXJy
YXkgPSBKU0FycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHZtLCBzdHJ1Y3R1cmUsIGxlbmd0
aCk7CisKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoYXJyYXkpOworCisgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IG1hdGVyaWFsaXphdGlvbi0+cHJvcGVydGllcygpLnNpemUoKTsgaS0tOykgewor
ICAgICAgICAgICAgY29uc3QgRXhpdFByb3BlcnR5VmFsdWUmIHByb3BlcnR5ID0gbWF0ZXJpYWxp
emF0aW9uLT5wcm9wZXJ0aWVzKClbaV07CisgICAgICAgICAgICBpZiAocHJvcGVydHkubG9jYXRp
b24oKS5raW5kKCkgIT0gSW5kZXhlZFByb3BlcnR5UExvYykKKyAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHByb3BlcnR5LmxvY2F0aW9uKCkuaW5m
bygpIDwgbGVuZ3RoKTsKKyAgICAgICAgICAgIGFycmF5LT5pbml0aWFsaXplSW5kZXgodm0sIHBy
b3BlcnR5LmxvY2F0aW9uKCkuaW5mbygpLCBKU1ZhbHVlOjpkZWNvZGUodmFsdWVzW2ldKSk7Cisg
ICAgICAgIH0KKworICAgICAgICByZXR1cm4gYXJyYXk7CisgICAgfQorCiAgICAgY2FzZSBQaGFu
dG9tTmV3RnVuY3Rpb246IHsKICAgICAgICAgLy8gRmlndXJlIG91dCB3aGF0IHRoZSBleGVjdXRh
YmxlIGFuZCBhY3RpdmF0aW9uIGFyZQogICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1
dGFibGUgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGM2ZjFlYWM4MGY4YWQ1MzZiZDk1YjgwNWYwMzhmYjMz
MTY1NTVhM2UuLmMwMDEzYmZjOTJkNGRmZjY4MzQxMjUzYzRkNGFjY2Q2ZTBiNGE2M2IgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNyBAQAorMjAxNS0wNi0xNSAgQmFzaWxlIENsZW1lbnQgIDxiYXNpbGVfY2xl
bWVudEBhcHBsZS5jb20+CisKKyAgICAgICAgT2JqZWN0IGFsbG9jYXRpb24gc2lua2luZyBwaGFz
ZSBzaG91bGQgc2luayBOZXdBcnJheSBhbmQgTmV3QXJyYXlCdWZmZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NTYxMAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluY3JlbWVudCB0aGUgbnVtYmVyIG9m
IGl0ZXJhdGlvbnMgc28gdGhhdCB0aGUgdGVzdHMgYXJlIGNvbXBpbGVkIGRvd24KKyAgICAgICAg
dG8gRlRMIGFuZCB3ZSBzZWUgdGhlIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50IHdoZW4gdGhlIGFy
cmF5IGFsbG9jYXRpb24KKyAgICAgICAgaXMgZWxpbWluYXRlZC4KKworICAgICAgICAqIGpzL3Jl
Z3Jlc3Mvc2NyaXB0LXRlc3RzL2NzZS1uZXctYXJyYXktYnVmZmVyLmpzOgorICAgICAgICAqIGpz
L3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2NzZS1uZXctYXJyYXkuanM6CisKIDIwMTUtMDYtMTMgIENo
cmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KIAogICAgICAgICBBWDogV2ViS2l0
IGV4cG9zZXMgYWxsIFJ1YnkgVGV4dCBhcyBVbmtub3duIChKYXBhbmVzZSBFUFVCIGFjY2Vzc2li
aWxpdHkgYmxvY2tlcikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0
LXRlc3RzL2NzZS1uZXctYXJyYXktYnVmZmVyLmpzIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9z
Y3JpcHQtdGVzdHMvY3NlLW5ldy1hcnJheS1idWZmZXIuanMKaW5kZXggMWMyMGJiMjZhOGZmZGNk
ZWU4OGUyOWJlNWQ5YTM1YjdjYjA2N2NhMS4uNmJmMGIxZjU0NWJiYTg3NWMyYzJmZGQyMzhiODYx
NWUxYzFmOGRjNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVz
dHMvY3NlLW5ldy1hcnJheS1idWZmZXIuanMKKysrIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9z
Y3JpcHQtdGVzdHMvY3NlLW5ldy1hcnJheS1idWZmZXIuanMKQEAgLTQsNSArNCw1IEBAIGZ1bmN0
aW9uIGZvbygpIHsKIH0KIG5vSW5saW5lKGZvbyk7CiAKLWZvciAodmFyIGkgPSAwOyBpIDwgMTAw
MDAwOyArK2kpCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkKICAgICBmb28oKTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2NzZS1uZXct
YXJyYXkuanMgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9jc2UtbmV3LWFy
cmF5LmpzCmluZGV4IDVhZDQ3M2U4YTY2MjM1OTUyNzQyNzM4N2I2Zjk5MTYyOGI0NDA4OTIuLjdm
MjNkOWQyYjMwYTU0MDg3MjkyZDUzZWQwYWRiY2E5NzlkZmUwY2QgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2NzZS1uZXctYXJyYXkuanMKKysrIGIvTGF5
b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvY3NlLW5ldy1hcnJheS5qcwpAQCAtNCw1
ICs0LDUgQEAgZnVuY3Rpb24gZm9vKHApIHsKIH0KIG5vSW5saW5lKGZvbyk7CiAKLWZvciAodmFy
IGkgPSAwOyBpIDwgMTAwMDAwOyArK2kpCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDA7ICsr
aSkKICAgICBmb28oMCk7Cg==
</data>
<flag name="review"
          id="279907"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>