<?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>149869</bug_id>
          
          <creation_ts>2015-10-06 21:53:57 -0700</creation_ts>
          <short_desc>Inline caches should handle out-of-line offsets out-of-line</short_desc>
          <delta_ts>2015-10-07 10:29:40 -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>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>149852</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenb</cc>
    
    <cc>msaboff</cc>
    
    <cc>nrotem</cc>
    
    <cc>oliver</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1131226</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-10-06 21:53:57 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131227</commentid>
    <comment_count>1</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-10-06 21:54:21 -0700</bug_when>
    <thetext>This is needed for concurrent copying barriers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131229</commentid>
    <comment_count>2</comment_count>
      <attachid>262580</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-10-06 21:54:50 -0700</bug_when>
    <thetext>Created attachment 262580
possible patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131237</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-10-06 23:25:53 -0700</bug_when>
    <thetext>Performance is OK:


Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, JSRegress, AsmBench, and CompressionBench on shakezilla (MacBookPro11,3).

VMs tested:
&quot;TipOfTree&quot; at /Volumes/Data/secondary/OpenSource/WebKitBuild/Release/jsc (r190660)
&quot;OutOfLineIC&quot; at /Volumes/Data/quinary/OpenSource/WebKitBuild/Release/jsc (r190660)

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

                                                        TipOfTree                OutOfLineIC                                    
SunSpider:
   3d-cube                                            4.5390+-0.0646            4.4420+-0.0660          might be 1.0218x faster
   3d-morph                                           5.5755+-0.5392            5.3552+-0.2561          might be 1.0412x faster
   3d-raytrace                                        5.3268+-0.5961            5.1105+-0.0534          might be 1.0423x faster
   access-binary-trees                                2.1119+-0.0308            2.1062+-0.0881        
   access-fannkuch                                    5.4828+-0.1308     ?      5.5351+-0.1814        ?
   access-nbody                                       2.6007+-0.2752            2.4902+-0.0483          might be 1.0444x faster
   access-nsieve                                      3.3925+-0.0475     ?      3.4744+-0.1595        ? might be 1.0241x slower
   bitops-3bit-bits-in-byte                           1.1332+-0.0246     ?      1.2150+-0.1686        ? might be 1.0722x slower
   bitops-bits-in-byte                                3.1769+-0.0694            3.1750+-0.0683        
   bitops-bitwise-and                                 2.1005+-0.1705     ?      2.1554+-0.3277        ? might be 1.0262x slower
   bitops-nsieve-bits                                 2.9323+-0.0627            2.9127+-0.0279        
   controlflow-recursive                              2.3813+-0.1176            2.3500+-0.0247          might be 1.0133x faster
   crypto-aes                                         4.0932+-0.5772            3.8949+-0.1148          might be 1.0509x faster
   crypto-md5                                         2.5316+-0.2239            2.4792+-0.1160          might be 1.0211x faster
   crypto-sha1                                        2.6788+-0.2713            2.5617+-0.1707          might be 1.0457x faster
   date-format-tofte                                  6.6470+-0.4011            6.5488+-0.2350          might be 1.0150x faster
   date-format-xparb                                  4.7227+-0.3049     ?      4.7735+-0.2112        ? might be 1.0108x slower
   math-cordic                                        2.7622+-0.0419     ?      2.8869+-0.1918        ? might be 1.0451x slower
   math-partial-sums                                  4.7966+-0.1220     ?      4.9047+-0.5326        ? might be 1.0225x slower
   math-spectral-norm                                 1.8702+-0.0327     ?      1.9177+-0.0404        ? might be 1.0254x slower
   regexp-dna                                         6.3750+-0.3830            6.2935+-0.5530          might be 1.0130x faster
   string-base64                                      4.4116+-0.3896            4.2530+-0.0517          might be 1.0373x faster
   string-fasta                                       5.9464+-0.3786            5.8175+-0.1964          might be 1.0222x faster
   string-tagcloud                                    7.9901+-0.3196     ?      8.1130+-0.3668        ? might be 1.0154x slower
   string-unpack-code                                18.3113+-0.7973           18.0604+-0.5295          might be 1.0139x faster
   string-validate-input                              4.5027+-0.2791            4.3618+-0.1672          might be 1.0323x faster

   &lt;arithmetic&gt;                                       4.5536+-0.0584            4.5072+-0.0318          might be 1.0103x faster

                                                        TipOfTree                OutOfLineIC                                    
LongSpider:
   3d-cube                                          793.4585+-7.4580     ?    794.0462+-4.8537        ?
   3d-morph                                        1483.0600+-2.4409     ?   1484.2594+-3.4710        ?
   3d-raytrace                                      592.4771+-5.9065          590.2113+-3.4067        
   access-binary-trees                              787.0282+-5.8523     ?    790.4316+-4.4118        ?
   access-fannkuch                                  275.5377+-4.7895          272.1432+-1.4825          might be 1.0125x faster
   access-nbody                                     509.9842+-1.1644     ?    511.9496+-3.3642        ?
   access-nsieve                                    371.4381+-10.4966    ?    381.1533+-13.1105       ? might be 1.0262x slower
   bitops-3bit-bits-in-byte                          33.9175+-0.7200     ?     34.8943+-1.0448        ? might be 1.0288x slower
   bitops-bits-in-byte                               75.5812+-1.7477           74.3073+-0.9517          might be 1.0171x faster
   bitops-nsieve-bits                               397.4914+-4.0656     ?    401.3551+-3.2687        ?
   controlflow-recursive                            432.4660+-7.6830          425.2578+-2.0113          might be 1.0169x faster
   crypto-aes                                       554.4919+-8.2885          552.0148+-11.1500       
   crypto-md5                                       432.3673+-3.1361     ?    434.6884+-3.0845        ?
   crypto-sha1                                      630.3032+-13.4139    ?    631.2011+-10.5702       ?
   date-format-tofte                                499.2385+-22.1611         485.7740+-8.4376          might be 1.0277x faster
   date-format-xparb                                676.3181+-45.1870         666.6192+-13.4273         might be 1.0145x faster
   hash-map                                         148.8115+-1.8575     ?    150.1648+-1.9634        ?
   math-cordic                                      474.8254+-1.0269          474.6429+-1.1248        
   math-partial-sums                                453.6596+-0.7608     ?    454.7040+-1.9402        ?
   math-spectral-norm                               551.4131+-5.7366          547.0429+-2.2230        
   string-base64                                    373.1177+-4.0207          372.9408+-2.7686        
   string-fasta                                     362.3982+-1.3134          359.5067+-1.9062        
   string-tagcloud                                  174.6594+-3.0076     ?    174.7985+-3.6202        ?

   &lt;geometric&gt;                                      383.5275+-1.6070          383.2290+-1.3357          might be 1.0008x faster

                                                        TipOfTree                OutOfLineIC                                    
V8Spider:
   crypto                                            47.9350+-0.9631     ?     48.6944+-0.9294        ? might be 1.0158x slower
   deltablue                                         79.6912+-3.7220           78.6995+-2.2604          might be 1.0126x faster
   earley-boyer                                      42.2707+-1.3736           41.9436+-1.0796        
   raytrace                                          31.5917+-2.1145           31.3845+-1.2088        
   regexp                                            61.1928+-1.7169     ?     61.3854+-1.5468        ?
   richards                                          53.6446+-1.0220     ?     54.3659+-0.9563        ? might be 1.0134x slower
   splay                                             36.7200+-1.1435           36.0715+-1.1073          might be 1.0180x faster

   &lt;geometric&gt;                                       48.2858+-0.4822           48.2182+-0.5837          might be 1.0014x faster

                                                        TipOfTree                OutOfLineIC                                    
Octane:
   encrypt                                           0.16434+-0.00113    ?     0.16677+-0.00262       ? might be 1.0148x slower
   decrypt                                           2.84670+-0.01148    ?     2.85432+-0.01264       ?
   deltablue                                x2       0.13741+-0.00414          0.13597+-0.00229         might be 1.0106x faster
   earley                                            0.30018+-0.00548          0.29831+-0.00435       
   boyer                                             4.32557+-0.04003          4.31622+-0.07464       
   navier-stokes                            x2       4.80735+-0.01297    ?     4.81321+-0.01519       ?
   raytrace                                 x2       0.86574+-0.01811          0.85677+-0.00477         might be 1.0105x faster
   richards                                 x2       0.08901+-0.00116          0.08865+-0.00063       
   splay                                    x2       0.36949+-0.06379          0.34270+-0.00122         might be 1.0782x faster
   regexp                                   x2      23.77335+-0.38504    ?    24.39184+-0.30312       ? might be 1.0260x slower
   pdfjs                                    x2      36.42668+-0.14141    ?    36.49166+-0.34184       ?
   mandreel                                 x2      42.17236+-0.26398    ?    42.23609+-0.39850       ?
   gbemu                                    x2      31.08877+-0.38114    ?    32.07040+-1.11966       ? might be 1.0316x slower
   closure                                           0.57250+-0.00285          0.57163+-0.00278       
   jquery                                            7.23145+-0.03829    ?     7.23245+-0.03072       ?
   box2d                                    x2       9.04915+-0.08085    ?     9.11059+-0.13026       ?
   zlib                                     x2     356.79491+-19.63554   ?   382.18461+-15.54557      ? might be 1.0712x slower
   typescript                               x2     655.76880+-8.58419    ?   659.94318+-10.49533      ?

   &lt;geometric&gt;                                       5.28788+-0.04521    ?     5.30877+-0.02507       ? might be 1.0040x slower

                                                        TipOfTree                OutOfLineIC                                    
Kraken:
   ai-astar                                          127.405+-2.239            125.884+-0.502           might be 1.0121x faster
   audio-beat-detection                               50.054+-0.256             49.979+-0.148         
   audio-dft                                          96.687+-2.388             95.117+-0.248           might be 1.0165x faster
   audio-fft                                          35.246+-0.360      ?      35.978+-1.296         ? might be 1.0208x slower
   audio-oscillator                                   56.943+-0.877             56.438+-1.348         
   imaging-darkroom                                   59.799+-0.438             59.678+-0.084         
   imaging-desaturate                                 48.566+-1.770             47.943+-0.221           might be 1.0130x faster
   imaging-gaussian-blur                              84.863+-0.279             84.770+-0.452         
   json-parse-financial                               36.727+-1.427      ?      38.364+-1.011         ? might be 1.0446x slower
   json-stringify-tinderbox                           22.706+-1.112             22.179+-0.382           might be 1.0237x faster
   stanford-crypto-aes                                40.419+-1.467      ?      40.524+-1.394         ?
   stanford-crypto-ccm                                36.054+-1.165             36.051+-1.535         
   stanford-crypto-pbkdf2                             94.479+-0.696      ?      94.935+-1.557         ?
   stanford-crypto-sha256-iterative                   35.730+-0.235      ?      36.268+-0.810         ? might be 1.0151x slower

   &lt;arithmetic&gt;                                       58.977+-0.276             58.865+-0.194           might be 1.0019x faster

                                                        TipOfTree                OutOfLineIC                                    
JSRegress:
   abc-forward-loop-equal                            30.2203+-0.7992     ?     30.2928+-1.4031        ?
   abc-postfix-backward-loop                         29.8451+-0.7825           29.3438+-0.4097          might be 1.0171x faster
   abc-simple-backward-loop                          30.1415+-0.9062           29.6168+-0.7774          might be 1.0177x faster
   abc-simple-forward-loop                           29.7114+-0.7176     ?     30.2882+-1.3014        ? might be 1.0194x slower
   abc-skippy-loop                                   21.2870+-0.3425           20.9957+-0.5564          might be 1.0139x faster
   abs-boolean                                        2.4356+-0.0399     ?      2.4448+-0.0332        ?
   adapt-to-double-divide                            16.3381+-0.5543     ?     16.3669+-0.5391        ?
   aliased-arguments-getbyval                         1.2261+-0.0445     ?      1.2741+-0.0730        ? might be 1.0391x slower
   allocate-big-object                                2.3632+-0.1300     ?      2.7561+-0.4657        ? might be 1.1662x slower
   arguments-named-and-reflective                    10.5826+-0.2240           10.5289+-0.3014        
   arguments-out-of-bounds                            9.2635+-0.2235     ?      9.5051+-0.2962        ? might be 1.0261x slower
   arguments-strict-mode                              9.4032+-0.2185     ?      9.4289+-0.4488        ?
   arguments                                          8.3862+-0.1959     ?      8.4795+-0.2136        ? might be 1.0111x slower
   arity-mismatch-inlining                            0.9373+-0.2108            0.8255+-0.0107          might be 1.1354x faster
   array-access-polymorphic-structure                 7.1168+-0.2356            7.0646+-0.1786        
   array-nonarray-polymorhpic-access                 23.8245+-0.5797           23.5292+-0.7836          might be 1.0126x faster
   array-prototype-every                             75.2871+-1.6994     ?     77.5055+-1.0662        ? might be 1.0295x slower
   array-prototype-forEach                           74.4639+-0.6974     !     76.9650+-0.5373        ! definitely 1.0336x slower
   array-prototype-map                               81.3217+-0.2745     !     87.0494+-4.0652        ! definitely 1.0704x slower
   array-prototype-reduce                            71.5601+-1.2807     ?     72.2036+-0.6512        ?
   array-prototype-reduceRight                       73.1896+-4.5222           71.9617+-0.9018          might be 1.0171x faster
   array-prototype-some                              74.9606+-1.2302     ?     76.8684+-1.8131        ? might be 1.0255x slower
   array-splice-contiguous                           21.4473+-0.6984           21.3135+-1.1499        
   array-with-double-add                              3.4393+-0.0585            3.4031+-0.0676          might be 1.0106x faster
   array-with-double-increment                        3.1117+-0.1209     ?      3.1815+-0.2422        ? might be 1.0224x slower
   array-with-double-mul-add                          4.5008+-0.4186            4.3066+-0.2025          might be 1.0451x faster
   array-with-double-sum                              3.1671+-0.0605     ?      3.2911+-0.2321        ? might be 1.0392x slower
   array-with-int32-add-sub                           5.6408+-0.1617     ?      5.7798+-0.1729        ? might be 1.0246x slower
   array-with-int32-or-double-sum                     3.2394+-0.0707            3.2371+-0.0703        
   ArrayBuffer-DataView-alloc-large-long-lived   
                                                     26.7330+-1.3070           26.5512+-1.5784        
   ArrayBuffer-DataView-alloc-long-lived             12.7379+-1.5117           11.9565+-0.2952          might be 1.0654x faster
   ArrayBuffer-Int32Array-byteOffset                  3.5465+-0.0843     ?      3.6222+-0.2191        ? might be 1.0213x slower
   ArrayBuffer-Int8Array-alloc-large-long-lived   
                                                     26.1375+-0.9586           26.0472+-0.7900        
   ArrayBuffer-Int8Array-alloc-long-lived-buffer   
                                                     19.7537+-0.8094           19.5667+-0.8860        
   ArrayBuffer-Int8Array-alloc-long-lived            11.5557+-0.4230     ?     11.6683+-0.6474        ?
   ArrayBuffer-Int8Array-alloc                        9.5710+-0.3733     ?      9.7092+-0.4006        ? might be 1.0144x slower
   arrowfunction-call                                10.9296+-0.1764           10.8034+-0.1186          might be 1.0117x faster
   asmjs_bool_bug                                     7.4814+-0.1460     ?      7.4902+-0.1374        ?
   assign-custom-setter-polymorphic                   2.4407+-0.0415     ?      2.5598+-0.3029        ? might be 1.0488x slower
   assign-custom-setter                               3.3035+-0.0357     ?      3.3315+-0.3308        ?
   basic-set                                          7.5737+-0.4013            7.4421+-0.4707          might be 1.0177x faster
   big-int-mul                                        3.4983+-0.1203            3.4530+-0.0546          might be 1.0131x faster
   boolean-test                                       2.9154+-0.0288     !      3.1044+-0.1601        ! definitely 1.0648x slower
   branch-fold                                        3.5833+-0.0702     ?      3.5939+-0.0536        ?
   branch-on-string-as-boolean                       17.5216+-1.1747           16.5719+-0.5714          might be 1.0573x faster
   by-val-generic                                     2.4656+-0.0838     ?      2.5603+-0.4598        ? might be 1.0384x slower
   call-spread-apply                                 26.9176+-0.8655     ?     27.0088+-0.8799        ?
   call-spread-call                                  20.8888+-0.5490     ?     21.2547+-1.1803        ? might be 1.0175x slower
   captured-assignments                               0.4392+-0.0298            0.4155+-0.0132          might be 1.0571x faster
   cast-int-to-double                                 5.0993+-0.0741     ?      5.1625+-0.1885        ? might be 1.0124x slower
   cell-argument                                      5.8818+-0.2200            5.7501+-0.3113          might be 1.0229x faster
   cfg-simplify                                       2.8833+-0.0718            2.8336+-0.0567          might be 1.0176x faster
   chain-getter-access                                8.3848+-0.1640            8.2786+-0.1188          might be 1.0128x faster
   cmpeq-obj-to-obj-other                            13.2506+-1.1294           11.4497+-1.2459          might be 1.1573x faster
   constant-test                                      4.7566+-0.0689     ?      4.8950+-0.1098        ? might be 1.0291x slower
   create-lots-of-functions                           9.8690+-1.2046            9.5298+-0.7431          might be 1.0356x faster
   cse-new-array-buffer                               2.3370+-0.1904     ?      2.4799+-0.2541        ? might be 1.0611x slower
   cse-new-array                                      2.4316+-0.2112            2.3371+-0.0642          might be 1.0405x faster
   DataView-custom-properties                        31.6129+-1.2872           31.3340+-1.2907        
   delay-tear-off-arguments-strictmode               11.4114+-0.1897     !     12.1088+-0.3373        ! definitely 1.0611x slower
   deltablue-varargs                                171.5499+-8.0333     ?    172.8196+-7.2632        ?
   destructuring-arguments                          159.0995+-1.7215     ?    159.3901+-3.3997        ?
   destructuring-parameters-overridden-by-function   
                                                      0.4471+-0.0076     ?      0.4547+-0.0320        ? might be 1.0170x slower
   destructuring-swap                                 4.8054+-0.0826            4.7705+-0.1079        
   direct-arguments-getbyval                          1.3208+-0.2470            1.2627+-0.0688          might be 1.0461x faster
   div-boolean-double                                 5.2452+-0.1615     ?      5.3736+-0.1197        ? might be 1.0245x slower
   div-boolean                                        8.0969+-0.0557     ?      8.1350+-0.1739        ?
   double-get-by-val-out-of-bounds                    4.5144+-0.1349     ?      4.6560+-0.3286        ? might be 1.0314x slower
   double-pollution-getbyval                          8.6574+-0.0728     ?      8.6687+-0.1532        ?
   double-pollution-putbyoffset                       3.8228+-0.2779            3.6158+-0.1670          might be 1.0573x faster
   double-real-use                                   24.6549+-1.4272           23.7777+-0.4274          might be 1.0369x faster
   double-to-int32-typed-array-no-inline              2.2518+-0.2179            2.1866+-0.0884          might be 1.0299x faster
   double-to-int32-typed-array                        2.0724+-0.0352     ?      2.1298+-0.0708        ? might be 1.0277x slower
   double-to-uint32-typed-array-no-inline             2.2868+-0.0866     ?      2.2972+-0.0953        ?
   double-to-uint32-typed-array                       2.1559+-0.0995            2.0832+-0.0297          might be 1.0349x faster
   elidable-new-object-dag                           33.9655+-1.3682           33.8997+-0.9317        
   elidable-new-object-roflcopter                    32.8521+-0.8970     ?     33.1663+-1.5951        ?
   elidable-new-object-then-call                     32.2630+-1.6198           31.8987+-0.8876          might be 1.0114x faster
   elidable-new-object-tree                          38.8614+-1.6782           37.8675+-1.3479          might be 1.0262x faster
   empty-string-plus-int                              5.0845+-0.3526     ?      5.3718+-0.5781        ? might be 1.0565x slower
   emscripten-cube2hash                              28.1342+-1.9157           26.5404+-1.8505          might be 1.0601x faster
   exit-length-on-plain-object                       15.4148+-1.1923     ?     16.0857+-2.8083        ? might be 1.0435x slower
   external-arguments-getbyval                        1.2178+-0.0826     ?      1.2710+-0.0670        ? might be 1.0437x slower
   external-arguments-putbyval                        2.1676+-0.1431     ?      2.1963+-0.1221        ? might be 1.0132x slower
   fixed-typed-array-storage-var-index                1.4356+-0.3379            1.2164+-0.0332          might be 1.1801x faster
   fixed-typed-array-storage                          1.0195+-0.2865            0.9297+-0.0649          might be 1.0966x faster
   Float32Array-matrix-mult                           3.9732+-0.0742     ?      4.1572+-0.2086        ? might be 1.0463x slower
   Float32Array-to-Float64Array-set                  49.2870+-1.5137     ?     53.1206+-7.5639        ? might be 1.0778x slower
   Float64Array-alloc-long-lived                     59.6640+-1.8183     ?     63.8074+-8.6372        ? might be 1.0694x slower
   Float64Array-to-Int16Array-set                    60.8801+-1.8119           59.4241+-1.5426          might be 1.0245x faster
   fold-double-to-int                                13.6952+-3.8093           12.0133+-0.0991          might be 1.1400x faster
   fold-get-by-id-to-multi-get-by-offset-rare-int   
                                                     11.1332+-1.1075           11.0423+-1.4036        
   fold-get-by-id-to-multi-get-by-offset              9.9635+-0.9027     ?      9.9694+-0.7461        ?
   fold-multi-get-by-offset-to-get-by-offset   
                                                      9.2765+-0.7507            8.0145+-1.3422          might be 1.1575x faster
   fold-multi-get-by-offset-to-poly-get-by-offset   
                                                      8.7679+-0.7137            8.0146+-0.4777          might be 1.0940x faster
   fold-multi-put-by-offset-to-poly-put-by-offset   
                                                      9.6662+-0.7427            9.4217+-0.6766          might be 1.0260x faster
   fold-multi-put-by-offset-to-put-by-offset   
                                                      9.5672+-1.2354     ?     10.1363+-0.4971        ? might be 1.0595x slower
   fold-multi-put-by-offset-to-replace-or-transition-put-by-offset   
                                                      9.8807+-0.6548     ?     10.8088+-1.4599        ? might be 1.0939x slower
   fold-put-by-id-to-multi-put-by-offset             12.6258+-1.2940           11.5731+-0.7811          might be 1.0910x faster
   fold-put-by-val-with-string-to-multi-put-by-offset   
                                                     11.5446+-1.3110     ?     12.2725+-2.7357        ? might be 1.0630x slower
   fold-put-by-val-with-symbol-to-multi-put-by-offset   
                                                     10.3262+-0.8741     ?     11.1638+-0.8009        ? might be 1.0811x slower
   fold-put-structure                                 8.1236+-1.5437            7.0624+-1.2283          might be 1.1503x faster
   for-of-iterate-array-entries                      10.7184+-0.2223     ?     10.8562+-0.2748        ? might be 1.0128x slower
   for-of-iterate-array-keys                          3.4596+-0.2560            3.4524+-0.1844        
   for-of-iterate-array-values                        3.3313+-0.1454     ?      3.4476+-0.2578        ? might be 1.0349x slower
   fround                                            17.9174+-0.5746           17.4101+-0.1679          might be 1.0291x faster
   ftl-library-inlining-dataview                     56.1387+-0.7435     ?     56.2978+-0.9119        ?
   ftl-library-inlining                              96.8448+-0.7047     !    100.4457+-1.4329        ! definitely 1.0372x slower
   function-call                                     10.8941+-0.1301           10.8521+-0.0778        
   function-dot-apply                                 2.0908+-0.1228            2.0214+-0.0349          might be 1.0343x faster
   function-test                                      2.7359+-0.0615     ?      2.7531+-0.1615        ?
   function-with-eval                                82.9871+-1.0188           82.5304+-0.9386        
   gcse-poly-get-less-obvious                        20.4157+-0.6673     !     21.6950+-0.4100        ! definitely 1.0627x slower
   gcse-poly-get                                     22.3415+-0.8558     ?     23.0758+-2.4666        ? might be 1.0329x slower
   gcse                                               3.3558+-0.0236     ?      3.4293+-0.1511        ? might be 1.0219x slower
   get-by-id-bimorphic-check-structure-elimination-simple   
                                                      2.6553+-0.1686            2.6415+-0.0985        
   get-by-id-bimorphic-check-structure-elimination   
                                                      4.7837+-0.2917     ?      4.8170+-0.2521        ?
   get-by-id-chain-from-try-block                     2.4161+-0.0762     ?      2.5645+-0.2007        ? might be 1.0614x slower
   get-by-id-check-structure-elimination              3.8170+-0.0339     ?      3.8875+-0.0587        ? might be 1.0185x slower
   get-by-id-proto-or-self                           15.2847+-0.7279     ?     15.8865+-0.5723        ? might be 1.0394x slower
   get-by-id-quadmorphic-check-structure-elimination-simple   
                                                      2.8834+-0.0692     ?      3.0488+-0.2727        ? might be 1.0573x slower
   get-by-id-self-or-proto                           15.0363+-0.4303     ?     15.2207+-0.4849        ? might be 1.0123x slower
   get-by-val-out-of-bounds                           4.1866+-0.2650     ?      4.2103+-0.0951        ?
   get-by-val-with-string-bimorphic-check-structure-elimination-simple   
                                                      2.6907+-0.0167            2.6898+-0.0330        
   get-by-val-with-string-bimorphic-check-structure-elimination   
                                                      6.1490+-0.1566            6.0892+-0.1110        
   get-by-val-with-string-chain-from-try-block   
                                                      2.4503+-0.1236     ?      2.4601+-0.0846        ?
   get-by-val-with-string-check-structure-elimination   
                                                      5.3022+-0.3972     ?      5.4882+-0.4491        ? might be 1.0351x slower
   get-by-val-with-string-proto-or-self              15.9532+-0.9837           15.6606+-0.6800          might be 1.0187x faster
   get-by-val-with-string-quadmorphic-check-structure-elimination-simple   
                                                      3.1026+-0.1266            3.0876+-0.0729        
   get-by-val-with-string-self-or-proto              16.0377+-0.7966           15.4069+-0.5604          might be 1.0409x faster
   get-by-val-with-symbol-bimorphic-check-structure-elimination-simple   
                                                      2.9107+-0.0634            2.8662+-0.0244          might be 1.0155x faster
   get-by-val-with-symbol-bimorphic-check-structure-elimination   
                                                     12.4065+-0.1425           12.2822+-0.1412          might be 1.0101x faster
   get-by-val-with-symbol-chain-from-try-block   
                                                      2.4731+-0.1452     ?      2.5216+-0.1715        ? might be 1.0196x slower
   get-by-val-with-symbol-check-structure-elimination   
                                                     11.0904+-0.1195     ?     11.1437+-0.1798        ?
   get-by-val-with-symbol-proto-or-self              15.2557+-0.5179     ?     15.7392+-0.9892        ? might be 1.0317x slower
   get-by-val-with-symbol-quadmorphic-check-structure-elimination-simple   
                                                      3.9483+-0.0986     ^      3.6535+-0.0505        ^ definitely 1.0807x faster
   get-by-val-with-symbol-self-or-proto              15.9308+-0.9388           15.5652+-0.4164          might be 1.0235x faster
   get_callee_monomorphic                             2.5421+-0.4773            2.2986+-0.1772          might be 1.1059x faster
   get_callee_polymorphic                             3.5630+-0.2441            3.4448+-0.3187          might be 1.0343x faster
   getter-no-activation                               4.8271+-0.2892     ?      4.9500+-0.3004        ? might be 1.0255x slower
   getter-prototype                                   7.8593+-0.1554            7.8373+-0.0978        
   getter-richards-try-catch                        992.2705+-14.8083         982.7591+-27.0564       
   getter-richards                                  118.4009+-5.0033          115.0199+-4.4461          might be 1.0294x faster
   getter                                             5.3206+-0.5588     ?      6.0588+-0.6214        ? might be 1.1388x slower
   global-object-access-with-mutating-structure   
                                                      5.6196+-0.1331            5.5981+-0.1566        
   global-var-const-infer-fire-from-opt               0.8599+-0.0309     ?      0.9848+-0.3002        ? might be 1.1453x slower
   global-var-const-infer                             0.6808+-0.1028            0.6717+-0.1121          might be 1.0135x faster
   hard-overflow-check-equal                         27.8846+-0.2639     ?     29.6870+-4.6550        ? might be 1.0646x slower
   hard-overflow-check                               26.9723+-0.7879     ?     27.3365+-0.6494        ? might be 1.0135x slower
   HashMap-put-get-iterate-keys                      26.2568+-1.1323           25.0621+-1.1257          might be 1.0477x faster
   HashMap-put-get-iterate                           27.2506+-1.4774     ?     28.3060+-1.1911        ? might be 1.0387x slower
   HashMap-string-put-get-iterate                    23.3688+-0.9306     ?     24.6740+-1.7120        ? might be 1.0559x slower
   hoist-make-rope                                    9.3199+-0.9776            8.1350+-0.8253          might be 1.1457x faster
   hoist-poly-check-structure-effectful-loop   
                                                      3.6759+-0.1769            3.5530+-0.0563          might be 1.0346x faster
   hoist-poly-check-structure                         3.0778+-0.0962            3.0535+-0.0581        
   imul-double-only                                   7.6735+-0.3948            7.4751+-0.3758          might be 1.0266x faster
   imul-int-only                                      8.4442+-1.0327     ?      8.6975+-0.9730        ? might be 1.0300x slower
   imul-mixed                                         6.7367+-0.5202     ?      7.1381+-0.1965        ? might be 1.0596x slower
   in-four-cases                                     17.2307+-0.9713           16.7593+-0.2585          might be 1.0281x faster
   in-one-case-false                                  9.2771+-0.1830     ?      9.9302+-1.1251        ? might be 1.0704x slower
   in-one-case-true                                   9.4899+-0.5644            9.4321+-0.5542        
   in-two-cases                                       9.5584+-0.3452     ?      9.6836+-0.2625        ? might be 1.0131x slower
   indexed-properties-in-objects                      2.8532+-0.1241            2.7701+-0.0278          might be 1.0300x faster
   infer-closure-const-then-mov-no-inline             3.7796+-0.4494            3.6019+-0.0498          might be 1.0493x faster
   infer-closure-const-then-mov                      18.5399+-0.6388     ?     18.7988+-0.3354        ? might be 1.0140x slower
   infer-closure-const-then-put-to-scope-no-inline   
                                                     10.9412+-0.2696           10.8765+-0.1652        
   infer-closure-const-then-put-to-scope             22.7907+-0.5841     ?     22.9384+-0.8369        ?
   infer-closure-const-then-reenter-no-inline   
                                                     47.8880+-0.9840           47.2520+-0.4351          might be 1.0135x faster
   infer-closure-const-then-reenter                  22.3441+-0.6191     ?     23.3538+-0.8277        ? might be 1.0452x slower
   infer-constant-global-property                     3.4239+-0.0497     ?      3.4297+-0.1257        ?
   infer-constant-property                            2.6896+-0.0864            2.6111+-0.0506          might be 1.0301x faster
   infer-one-time-closure-ten-vars                    7.5901+-0.2013     ?      8.1423+-0.9355        ? might be 1.0727x slower
   infer-one-time-closure-two-vars                    7.7892+-0.3596            7.5588+-0.5016          might be 1.0305x faster
   infer-one-time-closure                             7.1158+-0.1898     ?      7.4339+-0.5166        ? might be 1.0447x slower
   infer-one-time-deep-closure                       10.9377+-0.4944           10.7204+-0.1725          might be 1.0203x faster
   inline-arguments-access                            3.6756+-0.1553            3.6301+-0.1673          might be 1.0125x faster
   inline-arguments-aliased-access                    3.9035+-0.4813            3.5972+-0.0369          might be 1.0851x faster
   inline-arguments-local-escape                      3.6534+-0.1453            3.6060+-0.0684          might be 1.0131x faster
   inline-get-scoped-var                              4.6353+-0.1303            4.5004+-0.1307          might be 1.0300x faster
   inlined-put-by-id-transition                       9.2979+-0.5721     ?     10.0223+-1.0356        ? might be 1.0779x slower
   inlined-put-by-val-with-string-transition   
                                                     41.2693+-2.1566     ?     42.2134+-1.8689        ? might be 1.0229x slower
   inlined-put-by-val-with-symbol-transition   
                                                     40.2548+-1.1712     ?     41.3813+-1.4755        ? might be 1.0280x slower
   int-or-other-abs-then-get-by-val                   4.6438+-0.3067            4.5584+-0.0783          might be 1.0187x faster
   int-or-other-abs-zero-then-get-by-val             15.5743+-0.6352     ?     15.6609+-0.3205        ?
   int-or-other-add-then-get-by-val                   4.4672+-0.1222     ?      5.0939+-1.5796        ? might be 1.1403x slower
   int-or-other-add                                   4.9588+-0.1100     ?      5.2767+-0.4575        ? might be 1.0641x slower
   int-or-other-div-then-get-by-val                   3.8289+-0.2881            3.8022+-0.2816        
   int-or-other-max-then-get-by-val                   3.9365+-0.2702            3.8474+-0.0357          might be 1.0232x faster
   int-or-other-min-then-get-by-val                   3.8030+-0.0879            3.7821+-0.0836        
   int-or-other-mod-then-get-by-val                   3.5482+-0.1436     ?      3.6307+-0.2504        ? might be 1.0232x slower
   int-or-other-mul-then-get-by-val                   3.8188+-0.3676            3.6464+-0.1021          might be 1.0473x faster
   int-or-other-neg-then-get-by-val                   3.9945+-0.0901     ?      4.1198+-0.3185        ? might be 1.0314x slower
   int-or-other-neg-zero-then-get-by-val             15.4579+-0.4141     ?     15.7516+-0.7362        ? might be 1.0190x slower
   int-or-other-sub-then-get-by-val                   4.3775+-0.0876     ?      4.5886+-0.1891        ? might be 1.0482x slower
   int-or-other-sub                                   3.4889+-0.0906            3.4444+-0.0448          might be 1.0129x faster
   int-overflow-local                                 4.2614+-0.1839            4.1519+-0.2274          might be 1.0264x faster
   Int16Array-alloc-long-lived                       43.8141+-1.4257     ?     43.8569+-1.2919        ?
   Int16Array-bubble-sort-with-byteLength            17.1889+-0.3309     ?     17.2403+-0.4675        ?
   Int16Array-bubble-sort                            16.7081+-0.2172     ?     16.8335+-0.4574        ?
   Int16Array-load-int-mul                            1.4931+-0.1506            1.4114+-0.0136          might be 1.0579x faster
   Int16Array-to-Int32Array-set                      45.9850+-1.1930           45.8866+-1.1997        
   Int32Array-alloc-large                            12.1692+-0.5529     ?     12.4616+-0.8663        ? might be 1.0240x slower
   Int32Array-alloc-long-lived                       49.0063+-1.2952     ?     49.4840+-1.7278        ?
   Int32Array-alloc                                   2.9678+-0.2804     ?      2.9870+-0.4686        ?
   Int32Array-Int8Array-view-alloc                    5.9827+-0.3594            5.9626+-0.2458        
   int52-spill                                        4.5758+-0.0871     ?      4.6237+-0.0997        ? might be 1.0105x slower
   Int8Array-alloc-long-lived                        37.7609+-0.2623     ?     38.8579+-1.2336        ? might be 1.0291x slower
   Int8Array-load-with-byteLength                     3.3830+-0.0760            3.3475+-0.0540          might be 1.0106x faster
   Int8Array-load                                     3.3668+-0.1227     ?      3.3764+-0.0748        ?
   integer-divide                                    10.3815+-0.2454     ?     11.3670+-2.3804        ? might be 1.0949x slower
   integer-modulo                                     1.6408+-0.0960            1.5871+-0.0348          might be 1.0339x faster
   is-boolean-fold-tricky                             3.8658+-0.2734            3.8090+-0.0846          might be 1.0149x faster
   is-boolean-fold                                    2.6318+-0.0213     ?      2.6543+-0.0465        ?
   is-function-fold-tricky-internal-function   
                                                      9.5481+-0.2374            9.5447+-0.3419        
   is-function-fold-tricky                            4.0640+-0.1500            3.9981+-0.0799          might be 1.0165x faster
   is-function-fold                                   2.6741+-0.0527     ?      2.7660+-0.2504        ? might be 1.0344x slower
   is-number-fold-tricky                              3.9171+-0.0614     ?      3.9256+-0.0391        ?
   is-number-fold                                     2.8784+-0.5972            2.6320+-0.0308          might be 1.0936x faster
   is-object-or-null-fold-functions                   2.7113+-0.0750            2.6575+-0.0543          might be 1.0203x faster
   is-object-or-null-fold-less-tricky                 4.0513+-0.1801            4.0342+-0.1076        
   is-object-or-null-fold-tricky                      4.7501+-0.0583     ?      4.7778+-0.0911        ?
   is-object-or-null-fold                             2.7799+-0.2772            2.6813+-0.0612          might be 1.0368x faster
   is-object-or-null-trickier-function                4.0717+-0.0858     ?      4.1185+-0.3022        ? might be 1.0115x slower
   is-object-or-null-trickier-internal-function   
                                                      9.9621+-0.5030            9.8137+-0.3359          might be 1.0151x faster
   is-object-or-null-tricky-function                  4.1026+-0.2161            3.9879+-0.1267          might be 1.0288x faster
   is-object-or-null-tricky-internal-function   
                                                      7.1701+-0.0811     ?      7.6987+-0.4707        ? might be 1.0737x slower
   is-string-fold-tricky                              4.0723+-0.3297            3.9798+-0.1489          might be 1.0232x faster
   is-string-fold                                     2.6322+-0.0315     ?      2.6572+-0.0565        ?
   is-undefined-fold-tricky                           3.3955+-0.1445            3.3851+-0.0947        
   is-undefined-fold                                  2.6505+-0.0428     ?      2.8040+-0.2736        ? might be 1.0579x slower
   JSONP-negative-0                                   0.2678+-0.0398            0.2607+-0.0138          might be 1.0272x faster
   large-int-captured                                 4.1768+-0.1927            4.0220+-0.1810          might be 1.0385x faster
   large-int-neg                                     14.5194+-1.2938           14.2759+-0.6627          might be 1.0171x faster
   large-int                                         13.8088+-1.0719           13.1303+-0.4990          might be 1.0517x faster
   load-varargs-elimination                          20.9616+-0.5663           20.6418+-0.4803          might be 1.0155x faster
   logical-not-weird-types                            3.0578+-0.1080            3.0481+-0.0609        
   logical-not                                        4.2985+-0.1638     ?      4.6095+-0.6739        ? might be 1.0724x slower
   lots-of-fields                                     9.1415+-0.2091     ?      9.1884+-0.4442        ?
   make-indexed-storage                               2.7283+-0.1331     ?      2.8195+-0.0683        ? might be 1.0334x slower
   make-rope-cse                                      3.5227+-0.1973     ?      3.7160+-0.3304        ? might be 1.0549x slower
   marsaglia-larger-ints                             32.3109+-1.1917           31.5695+-0.7142          might be 1.0235x faster
   marsaglia-osr-entry                               20.7078+-0.3991     ?     21.4988+-0.6438        ? might be 1.0382x slower
   math-with-out-of-bounds-array-values              21.9723+-0.7358           21.7485+-0.4295          might be 1.0103x faster
   max-boolean                                        2.6213+-0.0564     ?      2.6527+-0.1337        ? might be 1.0120x slower
   method-on-number                                  15.9931+-0.7281     ?     16.0709+-0.9720        ?
   min-boolean                                        2.6947+-0.0892            2.6743+-0.1333        
   minus-boolean-double                               3.0902+-0.0865     ?      3.0913+-0.0473        ?
   minus-boolean                                      2.4490+-0.3378     ?      2.6927+-0.5359        ? might be 1.0995x slower
   misc-strict-eq                                    29.4919+-1.6472           27.5473+-1.0021          might be 1.0706x faster
   mod-boolean-double                                11.0425+-0.2130     ?     11.6713+-1.0455        ? might be 1.0569x slower
   mod-boolean                                        8.3937+-0.2324     ?      8.5101+-0.2919        ? might be 1.0139x slower
   mul-boolean-double                                 3.6086+-0.0484            3.5617+-0.0261          might be 1.0132x faster
   mul-boolean                                        2.8310+-0.0944            2.8028+-0.0450          might be 1.0101x faster
   neg-boolean                                        3.1545+-0.0855            3.1071+-0.0733          might be 1.0152x faster
   negative-zero-divide                               0.3381+-0.0107            0.3368+-0.0104        
   negative-zero-modulo                               0.3639+-0.0782            0.3462+-0.0331          might be 1.0513x faster
   negative-zero-negate                               0.3128+-0.0039     ?      0.3278+-0.0223        ? might be 1.0479x slower
   nested-function-parsing                           45.5465+-0.4826           44.8974+-0.6905          might be 1.0145x faster
   new-array-buffer-dead                             86.9659+-1.1388           86.6876+-0.3518        
   new-array-buffer-push                              6.2129+-0.3809     ?      6.2589+-0.3787        ?
   new-array-dead                                    14.8040+-1.0338     ?     14.8234+-0.7120        ?
   new-array-push                                     3.7273+-0.3701            3.4309+-0.1232          might be 1.0864x faster
   no-inline-constructor                             31.9901+-0.9367           31.2837+-0.1592          might be 1.0226x faster
   number-test                                        3.0144+-0.2005     ?      3.0234+-0.1259        ?
   object-closure-call                                4.8876+-0.0590            4.8870+-0.0613        
   object-get-own-property-symbols-on-large-array   
                                                      4.4062+-0.2596            4.1789+-0.2098          might be 1.0544x faster
   object-test                                        2.7039+-0.1228     ?      2.7044+-0.0493        ?
   obvious-sink-pathology-taken                      97.4305+-0.9883     ?     98.2339+-2.2987        ?
   obvious-sink-pathology                            92.8232+-1.3267     ?     93.2603+-1.3021        ?
   obviously-elidable-new-object                     28.7015+-1.0372     ?     28.9019+-1.2761        ?
   plus-boolean-arith                                 2.3921+-0.0311     ?      2.5054+-0.1772        ? might be 1.0474x slower
   plus-boolean-double                                3.0783+-0.0465            3.0720+-0.0709        
   plus-boolean                                       2.5181+-0.0488     ?      2.5403+-0.0687        ?
   poly-chain-access-different-prototypes-simple   
                                                      2.5603+-0.0278     ?      2.5984+-0.0601        ? might be 1.0149x slower
   poly-chain-access-different-prototypes             2.5580+-0.1044            2.5570+-0.0389        
   poly-chain-access-simpler                          2.6207+-0.1238            2.5917+-0.0683          might be 1.0112x faster
   poly-chain-access                                  2.4769+-0.0319     ?      2.5791+-0.2031        ? might be 1.0412x slower
   poly-stricteq                                     50.6874+-2.1934           49.6951+-0.8531          might be 1.0200x faster
   polymorphic-array-call                             1.2337+-0.0629     ?      1.2899+-0.0788        ? might be 1.0455x slower
   polymorphic-get-by-id                              2.8758+-0.0591     ?      2.8790+-0.0972        ?
   polymorphic-put-by-id                             27.8457+-0.5875           27.5791+-0.6303        
   polymorphic-put-by-val-with-string                28.3696+-0.5774           28.2196+-0.9342        
   polymorphic-put-by-val-with-symbol                29.0697+-0.5714           28.4322+-0.4388          might be 1.0224x faster
   polymorphic-structure                             12.3194+-0.1339     ?     12.4884+-0.3464        ? might be 1.0137x slower
   polyvariant-monomorphic-get-by-id                  7.1764+-1.1882            6.7252+-0.9740          might be 1.0671x faster
   proto-getter-access                                8.1773+-0.1191     ?      8.3934+-0.2390        ? might be 1.0264x slower
   prototype-access-with-mutating-prototype           5.4255+-0.2109     ?      5.4372+-0.3497        ?
   put-by-id-replace-and-transition                   8.0002+-0.5249            7.5253+-0.4549          might be 1.0631x faster
   put-by-id-slightly-polymorphic                     2.8959+-0.3575            2.6865+-0.0818          might be 1.0779x faster
   put-by-id                                          9.5254+-0.2214     ?      9.5377+-0.1908        ?
   put-by-val-direct                                  0.3328+-0.0193            0.3226+-0.0047          might be 1.0317x faster
   put-by-val-large-index-blank-indexing-type   
                                                      5.2793+-0.3530            5.1296+-0.1147          might be 1.0292x faster
   put-by-val-machine-int                             2.6632+-0.4417            2.6159+-0.2148          might be 1.0181x faster
   put-by-val-with-string-replace-and-transition   
                                                     10.4525+-0.3679     ?     10.6191+-0.4178        ? might be 1.0159x slower
   put-by-val-with-string-slightly-polymorphic   
                                                      3.0111+-0.1494     ?      3.1211+-0.5051        ? might be 1.0366x slower
   put-by-val-with-string                            10.1982+-0.3825     ?     10.6648+-0.5985        ? might be 1.0457x slower
   put-by-val-with-symbol-replace-and-transition   
                                                     12.0199+-0.5215           11.7477+-0.3975          might be 1.0232x faster
   put-by-val-with-symbol-slightly-polymorphic   
                                                      3.1604+-0.0777     ?      3.1633+-0.0865        ?
   put-by-val-with-symbol                            10.5323+-0.5265     ?     10.7946+-0.4495        ? might be 1.0249x slower
   rare-osr-exit-on-local                            13.6617+-0.2280     ?     13.7268+-0.4210        ?
   raytrace-with-empty-try-catch                      5.0985+-0.0994     ?      5.2093+-0.1710        ? might be 1.0217x slower
   raytrace-with-try-catch                            9.6328+-0.1442            9.6106+-0.1637        
   register-pressure-from-osr                        16.4250+-0.3622     ?     16.4803+-0.3716        ?
   repeat-multi-get-by-offset                        21.8477+-0.4931     ?     22.7879+-2.0422        ? might be 1.0430x slower
   richards-empty-try-catch                          71.5722+-0.9252     ?     72.8304+-3.1438        ? might be 1.0176x slower
   richards-try-catch                               238.2482+-1.8945          237.6901+-2.0358        
   setter-prototype                                   8.0237+-0.3795            7.8814+-0.4599          might be 1.0181x faster
   setter                                             5.8508+-0.7477     ?      5.8966+-0.4574        ?
   simple-activation-demo                            24.1180+-0.6721     ?     24.1483+-0.4968        ?
   simple-getter-access                              10.6321+-0.2560     ?     10.8481+-0.6791        ? might be 1.0203x slower
   simple-poly-call-nested                            9.1648+-0.4807            8.3192+-0.5027          might be 1.1016x faster
   simple-poly-call                                   1.2558+-0.0436     ?      1.3064+-0.1101        ? might be 1.0403x slower
   sin-boolean                                       21.8510+-1.2290           19.4860+-1.5410          might be 1.1214x faster
   singleton-scope                                   63.1463+-1.2925     ?     63.4858+-1.2434        ?
   sink-function                                     10.3331+-0.3895            9.6432+-0.5581          might be 1.0715x faster
   sink-huge-activation                              16.2672+-0.8883     ?     17.0527+-0.7555        ? might be 1.0483x slower
   sinkable-new-object-dag                           54.2900+-0.9194           54.2697+-1.5660        
   sinkable-new-object-taken                         44.0422+-1.0524           43.6328+-0.6430        
   sinkable-new-object                               29.9926+-0.7174     ?     30.0629+-0.9498        ?
   slow-array-profile-convergence                     2.4494+-0.0910     ?      2.4817+-0.1393        ? might be 1.0132x slower
   slow-convergence                                   2.5323+-0.3108            2.3694+-0.0852          might be 1.0687x faster
   slow-ternaries                                    18.1029+-1.7075           17.5285+-0.3183          might be 1.0328x faster
   sorting-benchmark                                 17.2215+-0.3980           17.2148+-0.7121        
   sparse-conditional                                 1.1864+-0.0642            1.1845+-0.0466        
   splice-to-remove                                  12.5010+-0.4918           11.9480+-0.1970          might be 1.0463x faster
   string-char-code-at                               13.3288+-0.4932     ?     13.7623+-0.5516        ? might be 1.0325x slower
   string-concat-object                               2.1530+-0.1256     ?      2.1639+-0.0818        ?
   string-concat-pair-object                          2.2023+-0.2693            2.0513+-0.1007          might be 1.0736x faster
   string-concat-pair-simple                          9.2120+-0.5380     ?      9.3265+-0.4969        ? might be 1.0124x slower
   string-concat-simple                               9.5662+-0.5679     ?      9.8290+-0.6170        ? might be 1.0275x slower
   string-cons-repeat                                 6.6431+-0.4883            6.4923+-0.2791          might be 1.0232x faster
   string-cons-tower                                  6.7316+-0.3735            6.5711+-0.2183          might be 1.0244x faster
   string-equality                                   15.7389+-0.2148     ?     15.8733+-0.4089        ?
   string-get-by-val-big-char                         6.5395+-0.1479     ?      6.5619+-0.1926        ?
   string-get-by-val-out-of-bounds-insane             3.0382+-0.0277     ?      3.0459+-0.1207        ?
   string-get-by-val-out-of-bounds                    3.9200+-0.0759     ?      4.0260+-0.2001        ? might be 1.0270x slower
   string-get-by-val                                  2.8488+-0.0853            2.7785+-0.0459          might be 1.0253x faster
   string-hash                                        1.8368+-0.0383     ?      1.8711+-0.0659        ? might be 1.0186x slower
   string-long-ident-equality                        13.7356+-0.3544           13.5198+-0.2986          might be 1.0160x faster
   string-out-of-bounds                              10.1485+-0.1732            9.9999+-0.1810          might be 1.0149x faster
   string-repeat-arith                               26.7601+-0.7269     ?     27.0446+-0.4306        ? might be 1.0106x slower
   string-sub                                        60.8021+-7.5282           55.0588+-0.9649          might be 1.1043x faster
   string-test                                        2.8010+-0.0385     ?      2.8562+-0.0644        ? might be 1.0197x slower
   string-var-equality                               25.2363+-0.6917     ?     25.7207+-1.2623        ? might be 1.0192x slower
   structure-hoist-over-transitions                   2.3328+-0.1124            2.2958+-0.0550          might be 1.0161x faster
   substring-concat-weird                            34.7970+-0.5247     ?     35.2821+-0.7549        ? might be 1.0139x slower
   substring-concat                                  39.5015+-0.7747     ?     40.2252+-1.1434        ? might be 1.0183x slower
   substring                                         49.0113+-9.4788           45.2478+-1.3174          might be 1.0832x faster
   switch-char-constant                               2.6569+-0.0562     ?      2.7046+-0.0710        ? might be 1.0180x slower
   switch-char                                        6.2601+-0.9501            6.1186+-0.9554          might be 1.0231x faster
   switch-constant                                    9.0735+-1.0276            7.9149+-0.3648          might be 1.1464x faster
   switch-string-basic-big-var                       14.2414+-0.2206     ?     15.0670+-0.6469        ? might be 1.0580x slower
   switch-string-basic-big                           14.9587+-1.2114           14.7031+-0.4485          might be 1.0174x faster
   switch-string-basic-var                           13.4290+-0.5760           13.4067+-0.5227        
   switch-string-basic                               12.5551+-0.3372     ?     12.5905+-0.2203        ?
   switch-string-big-length-tower-var                17.8179+-0.3351     ?     18.0537+-0.4012        ? might be 1.0132x slower
   switch-string-length-tower-var                    13.0442+-0.1750     ?     13.7420+-1.1709        ? might be 1.0535x slower
   switch-string-length-tower                        11.3119+-0.2255     ?     11.4255+-0.3507        ? might be 1.0100x slower
   switch-string-short                               11.3591+-0.2421     ?     11.5319+-0.4978        ? might be 1.0152x slower
   switch                                            12.1691+-1.4249           11.3474+-0.9609          might be 1.0724x faster
   tear-off-arguments-simple                          3.0494+-0.0517     ?      3.1143+-0.1102        ? might be 1.0213x slower
   tear-off-arguments                                 4.1174+-0.3269            4.0968+-0.2193        
   temporal-structure                                11.7799+-0.3641           11.7523+-0.1950        
   to-int32-boolean                                  12.5886+-0.4039           12.5795+-0.3249        
   try-catch-get-by-val-cloned-arguments              9.1808+-0.5248            9.0206+-0.4190          might be 1.0178x faster
   try-catch-get-by-val-direct-arguments              2.1002+-0.0664     ?      2.1165+-0.1470        ?
   try-catch-get-by-val-scoped-arguments              4.4694+-0.0754     ?      4.5939+-0.1801        ? might be 1.0279x slower
   typed-array-get-set-by-val-profiling              27.1143+-1.2077           26.8211+-0.6569          might be 1.0109x faster
   undefined-property-access                        219.1600+-3.6171          216.9167+-2.2933          might be 1.0103x faster
   undefined-test                                     3.1498+-0.4042     ?      3.2221+-0.3006        ? might be 1.0230x slower
   unprofiled-licm                                    9.5288+-0.2012     ?      9.7292+-0.3438        ? might be 1.0210x slower
   v8-raytrace-with-empty-try-catch                  24.2753+-0.9114     ?     27.4155+-8.8112        ? might be 1.1294x slower
   v8-raytrace-with-try-catch                        62.3123+-2.0755           61.0000+-0.7037          might be 1.0215x faster
   varargs-call                                      13.0174+-0.1626     ?     13.1604+-0.3092        ? might be 1.0110x slower
   varargs-construct-inline                          22.3249+-1.0368           21.7342+-0.4461          might be 1.0272x faster
   varargs-construct                                 20.4787+-0.7095     ?     20.7019+-0.7119        ? might be 1.0109x slower
   varargs-inline                                     8.7478+-0.1938     ?      8.7605+-0.3303        ?
   varargs-strict-mode                                9.9732+-0.2075            9.9077+-0.1920        
   varargs                                            9.8160+-0.1644     ?     10.2821+-0.4717        ? might be 1.0475x slower
   weird-inlining-const-prop                          2.1974+-0.2668     ?      2.2375+-0.2452        ? might be 1.0182x slower

   &lt;geometric&gt;                                        8.0654+-0.0313            8.0613+-0.0327          might be 1.0005x faster

                                                        TipOfTree                OutOfLineIC                                    
AsmBench:
   bigfib.cpp                                       451.7598+-6.9505          451.3131+-8.5726        
   cray.c                                           390.8823+-3.3292     ?    391.5491+-1.8067        ?
   dry.c                                            423.0571+-6.7221          423.0504+-5.7421        
   FloatMM.c                                        680.9876+-1.1799     ?    681.6968+-1.9776        ?
   gcc-loops.cpp                                   3406.3696+-9.7001     ?   3412.8567+-14.0655       ?
   n-body.c                                         824.8066+-3.8835          820.8546+-1.4135        
   Quicksort.c                                      408.4926+-7.5230     ?    409.7949+-8.5057        ?
   stepanov_container.cpp                          3455.4551+-14.1477    ?   3499.6595+-34.0878       ? might be 1.0128x slower
   Towers.c                                         233.0722+-1.5175          232.8066+-1.0512        

   &lt;geometric&gt;                                      711.9641+-2.4762     ?    713.0334+-2.1143        ? might be 1.0015x slower

                                                        TipOfTree                OutOfLineIC                                    
CompressionBench:
   huffman                                           59.9360+-1.1476     ?     61.2512+-1.6001        ? might be 1.0219x slower
   arithmetic-simple                                272.9944+-2.7748     ?    273.3264+-2.0452        ?
   arithmetic-precise                               244.1660+-2.0966          243.6313+-4.0343        
   arithmetic-complex-precise                       244.0056+-2.0388     ?    246.8897+-5.0167        ? might be 1.0118x slower
   arithmetic-precise-order-0                       279.9303+-1.2330     ?    301.7889+-48.8848       ? might be 1.0781x slower
   arithmetic-precise-order-1                       299.7424+-2.0648     ?    301.6951+-1.4877        ?
   arithmetic-precise-order-2                       350.3101+-11.4956         343.5806+-1.4174          might be 1.0196x faster
   arithmetic-simple-order-1                        319.3453+-0.7868     ?    320.5640+-2.3169        ?
   arithmetic-simple-order-2                        391.3553+-49.0791         372.3525+-6.7457          might be 1.0510x faster
   lz-string                                        303.9788+-1.9266     ?    304.7601+-3.7965        ?

   &lt;geometric&gt;                                      253.1483+-2.6501     ?    254.3653+-4.2549        ? might be 1.0048x slower

                                                        TipOfTree                OutOfLineIC                                    
Geomean of preferred means:
   &lt;scaled-result&gt;                                   49.8639+-0.1120           49.8354+-0.1573          might be 1.0006x faster</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131238</commentid>
    <comment_count>4</comment_count>
      <attachid>262584</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-10-06 23:29:42 -0700</bug_when>
    <thetext>Created attachment 262584
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131324</commentid>
    <comment_count>5</comment_count>
      <attachid>262584</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-10-07 10:24:05 -0700</bug_when>
    <thetext>Comment on attachment 262584
the patch

LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131325</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-10-07 10:29:40 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/190672</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262580</attachid>
            <date>2015-10-06 21:54:50 -0700</date>
            <delta_ts>2015-10-06 23:29:42 -0700</delta_ts>
            <desc>possible patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>12389</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVT
dHViSW5mby5oCShyZXZpc2lvbiAxOTA2NjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDcgKzEzOSw2
IEBAIHB1YmxpYzoKICAgICAgICAgaW50OF90IHZhbHVlR1BSOwogICAgICAgICBSZWdpc3RlclNl
dCB1c2VkUmVnaXN0ZXJzOwogICAgICAgICBpbnQzMl90IGRlbHRhQ2FsbFRvRG9uZTsKLSAgICAg
ICAgaW50MzJfdCBkZWx0YUNhbGxUb1N0b3JhZ2VMb2FkOwogICAgICAgICBpbnQzMl90IGRlbHRh
Q2FsbFRvSnVtcDsKICAgICAgICAgaW50MzJfdCBkZWx0YUNhbGxUb1Nsb3dDYXNlOwogICAgICAg
ICBpbnQzMl90IGRlbHRhQ2hlY2tJbW1Ub0NhbGw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTElubGluZUNhY2hlU2l6ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExJbmxpbmVDYWNoZVNpemUuY3BwCShyZXZpc2lvbiAxOTA2NjApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTElubGluZUNhY2hlU2l6ZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ5LDE4ICs0OSwxOCBAQCB1c2luZyBuYW1lc3BhY2UgREZHOwogc2l6ZV90
IHNpemVPZkdldEJ5SWQoKQogewogI2lmIENQVShBUk02NCkKLSAgICByZXR1cm4gMzY7CisgICAg
cmV0dXJuIDMyOwogI2Vsc2UKLSAgICByZXR1cm4gMzA7CisgICAgcmV0dXJuIDI3OwogI2VuZGlm
CiB9CiAKIHNpemVfdCBzaXplT2ZQdXRCeUlkKCkKIHsKICNpZiBDUFUoQVJNNjQpCi0gICAgcmV0
dXJuIDQ0OworICAgIHJldHVybiA0MDsKICNlbHNlCi0gICAgcmV0dXJuIDMyOworICAgIHJldHVy
biAyOTsKICNlbmRpZgogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElu
bGluZUNhY2hlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMTkwNjYwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTkzLDggKzkzLDYgQEAgdm9pZCBKSVRCeUlkR2VuZXJhdG9yOjpmaW5h
bGl6ZShMaW5rQnVmZgogICAgICAgICBjYWxsUmV0dXJuTG9jYXRpb24sIHNsb3dQYXRoLmxvY2F0
aW9uT2YobV9zbG93UGF0aEJlZ2luKSk7CiAgICAgbV9zdHViSW5mby0+cGF0Y2guZGVsdGFDYWxs
VG9Eb25lID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cigKICAgICAg
ICAgY2FsbFJldHVybkxvY2F0aW9uLCBmYXN0UGF0aC5sb2NhdGlvbk9mKG1fZG9uZSkpOwotICAg
IG1fc3R1YkluZm8tPnBhdGNoLmRlbHRhQ2FsbFRvU3RvcmFnZUxvYWQgPSBNYWNyb0Fzc2VtYmxl
cjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKAotICAgICAgICBjYWxsUmV0dXJuTG9jYXRpb24s
IGZhc3RQYXRoLmxvY2F0aW9uT2YobV9wcm9wZXJ0eVN0b3JhZ2VMb2FkKSk7CiB9CiAKIHZvaWQg
SklUQnlJZEdlbmVyYXRvcjo6ZmluYWxpemUoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikKQEAgLTEw
MiwxNSArMTAwLDEyIEBAIHZvaWQgSklUQnlJZEdlbmVyYXRvcjo6ZmluYWxpemUoTGlua0J1ZmYK
ICAgICBmaW5hbGl6ZShsaW5rQnVmZmVyLCBsaW5rQnVmZmVyKTsKIH0KIAotdm9pZCBKSVRCeUlk
R2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoQ2hlY2tzKE1hY3JvQXNzZW1ibGVyJiBqaXQsIEdQ
UlJlZyBidXR0ZXJmbHkpCit2b2lkIEpJVEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGhD
aGVja3MoTWFjcm9Bc3NlbWJsZXImIGppdCkKIHsKICAgICBtX3N0cnVjdHVyZUNoZWNrID0gaml0
LnBhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm90
RXF1YWwsCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG1fYmFzZS5wYXlsb2FkR1BS
KCksIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCiAgICAgICAgIG1fc3RydWN0dXJlSW1t
LCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKDApKTsKLSAgICAKLSAgICBtX3Byb3BlcnR5
U3RvcmFnZUxvYWQgPSBqaXQuY29udmVydGlibGVMb2FkUHRyKAotICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhtX2Jhc2UucGF5bG9hZEdQUigpLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zm
c2V0KCkpLCBidXR0ZXJmbHkpOwogfQogCiBKSVRHZXRCeUlkR2VuZXJhdG9yOjpKSVRHZXRCeUlk
R2VuZXJhdG9yKApAQCAtMTI0LDE2ICsxMTksMTYgQEAgSklUR2V0QnlJZEdlbmVyYXRvcjo6SklU
R2V0QnlJZEdlbmVyYXRvcgogCiB2b2lkIEpJVEdldEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlRmFz
dFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKIHsKLSAgICBnZW5lcmF0ZUZhc3RQYXRoQ2hlY2tz
KGppdCwgbV92YWx1ZS5wYXlsb2FkR1BSKCkpOworICAgIGdlbmVyYXRlRmFzdFBhdGhDaGVja3Mo
aml0KTsKICAgICAKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIG1fbG9hZE9yU3RvcmUgPSBqaXQu
bG9hZDY0V2l0aENvbXBhY3RBZGRyZXNzT2Zmc2V0UGF0Y2goCi0gICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKG1fdmFsdWUucGF5bG9hZEdQUigpLCAwKSwgbV92YWx1ZS5wYXlsb2FkR1BS
KCkpLmxhYmVsKCk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG1fYmFzZS5wYXls
b2FkR1BSKCksIDApLCBtX3ZhbHVlLnBheWxvYWRHUFIoKSkubGFiZWwoKTsKICNlbHNlCiAgICAg
bV90YWdMb2FkT3JTdG9yZSA9IGppdC5sb2FkMzJXaXRoQ29tcGFjdEFkZHJlc3NPZmZzZXRQYXRj
aCgKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MobV92YWx1ZS5wYXlsb2FkR1BSKCks
IDApLCBtX3ZhbHVlLnRhZ0dQUigpKS5sYWJlbCgpOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhtX2Jhc2UucGF5bG9hZEdQUigpLCAwKSwgbV92YWx1ZS50YWdHUFIoKSkubGFiZWwo
KTsKICAgICBtX2xvYWRPclN0b3JlID0gaml0LmxvYWQzMldpdGhDb21wYWN0QWRkcmVzc09mZnNl
dFBhdGNoKAotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhtX3ZhbHVlLnBheWxvYWRH
UFIoKSwgMCksIG1fdmFsdWUucGF5bG9hZEdQUigpKS5sYWJlbCgpOworICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhtX2Jhc2UucGF5bG9hZEdQUigpLCAwKSwgbV92YWx1ZS5wYXlsb2Fk
R1BSKCkpLmxhYmVsKCk7CiAjZW5kaWYKICAgICAKICAgICBtX2RvbmUgPSBqaXQubGFiZWwoKTsK
QEAgLTE1NCwxNiArMTQ5LDE2IEBAIEpJVFB1dEJ5SWRHZW5lcmF0b3I6OkpJVFB1dEJ5SWRHZW5l
cmF0b3IKIAogdm9pZCBKSVRQdXRCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3Jv
QXNzZW1ibGVyJiBqaXQpCiB7Ci0gICAgZ2VuZXJhdGVGYXN0UGF0aENoZWNrcyhqaXQsIG1fc2Ny
YXRjaCk7CisgICAgZ2VuZXJhdGVGYXN0UGF0aENoZWNrcyhqaXQpOwogICAgIAogI2lmIFVTRShK
U1ZBTFVFNjQpCiAgICAgbV9sb2FkT3JTdG9yZSA9IGppdC5zdG9yZTY0V2l0aEFkZHJlc3NPZmZz
ZXRQYXRjaCgKLSAgICAgICAgbV92YWx1ZS5wYXlsb2FkR1BSKCksIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKG1fc2NyYXRjaCwgMCkpLmxhYmVsKCk7CisgICAgICAgIG1fdmFsdWUucGF5bG9hZEdQ
UigpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhtX2Jhc2UucGF5bG9hZEdQUigpLCAwKSkubGFi
ZWwoKTsKICNlbHNlCiAgICAgbV90YWdMb2FkT3JTdG9yZSA9IGppdC5zdG9yZTMyV2l0aEFkZHJl
c3NPZmZzZXRQYXRjaCgKLSAgICAgICAgbV92YWx1ZS50YWdHUFIoKSwgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MobV9zY3JhdGNoLCAwKSkubGFiZWwoKTsKKyAgICAgICAgbV92YWx1ZS50YWdHUFIo
KSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MobV9iYXNlLnBheWxvYWRHUFIoKSwgMCkpLmxhYmVs
KCk7CiAgICAgbV9sb2FkT3JTdG9yZSA9IGppdC5zdG9yZTMyV2l0aEFkZHJlc3NPZmZzZXRQYXRj
aCgKLSAgICAgICAgbV92YWx1ZS5wYXlsb2FkR1BSKCksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KG1fc2NyYXRjaCwgMCkpLmxhYmVsKCk7CisgICAgICAgIG1fdmFsdWUucGF5bG9hZEdQUigpLCBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhtX2Jhc2UucGF5bG9hZEdQUigpLCAwKSkubGFiZWwoKTsK
ICNlbmRpZgogICAgIAogICAgIG1fZG9uZSA9IGppdC5sYWJlbCgpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaAkocmV2
aXNpb24gMTkwNjYwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNo
ZUdlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC03NCwxNCArNzQsMTMgQEAgcHVibGljOgog
ICAgIHZvaWQgZmluYWxpemUoTGlua0J1ZmZlciYpOwogICAgIAogcHJvdGVjdGVkOgotICAgIHZv
aWQgZ2VuZXJhdGVGYXN0UGF0aENoZWNrcyhNYWNyb0Fzc2VtYmxlciYsIEdQUlJlZyBidXR0ZXJm
bHkpOworICAgIHZvaWQgZ2VuZXJhdGVGYXN0UGF0aENoZWNrcyhNYWNyb0Fzc2VtYmxlciYpOwog
ICAgIAogICAgIEpTVmFsdWVSZWdzIG1fYmFzZTsKICAgICBKU1ZhbHVlUmVncyBtX3ZhbHVlOwog
ICAgIAogICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWwzMiBtX3N0cnVjdHVyZUltbTsKICAg
ICBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBtX3N0cnVjdHVyZUNoZWNrOwotICAgIE1h
Y3JvQXNzZW1ibGVyOjpDb252ZXJ0aWJsZUxvYWRMYWJlbCBtX3Byb3BlcnR5U3RvcmFnZUxvYWQ7
CiAgICAgQXNzZW1ibGVyTGFiZWwgbV9sb2FkT3JTdG9yZTsKICNpZiBVU0UoSlNWQUxVRTMyXzY0
KQogICAgIEFzc2VtYmxlckxhYmVsIG1fdGFnTG9hZE9yU3RvcmU7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAJKHJldmlzaW9uIDE5MDY2MCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNSwyMiArMTA1
LDE4IEBAIHN0YXRpYyB2b2lkIHJlcGF0Y2hCeUlkU2VsZkFjY2VzcygKICAgICAgICAgc3R1Yklu
Zm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbDMyQXRPZmZzZXQoLShpbnRwdHJfdClzdHVi
SW5mby5wYXRjaC5kZWx0YUNoZWNrSW1tVG9DYWxsKSwKICAgICAgICAgYml0d2lzZV9jYXN0PGlu
dDMyX3Q+KHN0cnVjdHVyZS0+aWQoKSkpOwogICAgIENvZGVMb2NhdGlvbkNvbnZlcnRpYmxlTG9h
ZCBjb252ZXJ0aWJsZUxvYWQgPSBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uY29udmVydGli
bGVMb2FkQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGVsdGFDYWxsVG9TdG9yYWdlTG9hZCk7Ci0g
ICAgaWYgKGlzT3V0T2ZMaW5lT2Zmc2V0KG9mZnNldCkpCi0gICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpyZXBsYWNlV2l0aExvYWQoY29udmVydGlibGVMb2FkKTsKLSAgICBlbHNlCi0gICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpyZXBsYWNlV2l0aEFkZHJlc3NDb21wdXRhdGlvbihjb252ZXJ0aWJsZUxv
YWQpOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgaWYgKGNvbXBhY3QpCi0gICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpyZXBhdGNoQ29tcGFjdChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0
YUxhYmVsQ29tcGFjdEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRvTG9hZE9yU3Rv
cmUpLCBvZmZzZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0b3JhZ2Uob2Zmc2V0KSk7CisgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpyZXBhdGNoQ29tcGFjdChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24u
ZGF0YUxhYmVsQ29tcGFjdEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRvTG9hZE9y
U3RvcmUpLCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShvZmZzZXQpKTsKICAgICBlbHNlCi0gICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSW50MzIoc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9u
LmRhdGFMYWJlbDMyQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGVsdGFDYWxsVG9Mb2FkT3JTdG9y
ZSksIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShvZmZzZXQpKTsKKyAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OnJlcGF0Y2hJbnQzMihzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0
YUxhYmVsMzJBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZWx0YUNhbGxUb0xvYWRPclN0b3JlKSwg
b2Zmc2V0UmVsYXRpdmVUb0Jhc2Uob2Zmc2V0KSk7CiAjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQog
ICAgIGlmIChjb21wYWN0KSB7Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoQ29tcGFj
dChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsQ29tcGFjdEF0T2Zmc2V0KHN0
dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRvVGFnTG9hZE9yU3RvcmUpLCBvZmZzZXRSZWxhdGl2ZVRv
UGF0Y2hlZFN0b3JhZ2Uob2Zmc2V0KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNj
cmlwdG9yLCBhc0JpdHMudGFnKSk7Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoQ29t
cGFjdChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsQ29tcGFjdEF0T2Zmc2V0
KHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRvUGF5bG9hZExvYWRPclN0b3JlKSwgb2Zmc2V0UmVs
YXRpdmVUb1BhdGNoZWRTdG9yYWdlKG9mZnNldCkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZh
bHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OnJlcGF0Y2hDb21wYWN0KHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWxDb21w
YWN0QXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGVsdGFDYWxsVG9UYWdMb2FkT3JTdG9yZSksIG9m
ZnNldFJlbGF0aXZlVG9CYXNlKG9mZnNldCkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVl
RGVzY3JpcHRvciwgYXNCaXRzLnRhZykpOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRj
aENvbXBhY3Qoc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbENvbXBhY3RBdE9m
ZnNldChzdHViSW5mby5wYXRjaC5kZWx0YUNhbGxUb1BheWxvYWRMb2FkT3JTdG9yZSksIG9mZnNl
dFJlbGF0aXZlVG9CYXNlKG9mZnNldCkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVz
Y3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKTsKICAgICB9IGVsc2UgewotICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6cmVwYXRjaEludDMyKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFi
ZWwzMkF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRvVGFnTG9hZE9yU3RvcmUpLCBv
ZmZzZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0b3JhZ2Uob2Zmc2V0KSArIE9CSkVDVF9PRkZTRVRPRihF
bmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSk7Ci0gICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpyZXBhdGNoSW50MzIoc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbDMy
QXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGVsdGFDYWxsVG9QYXlsb2FkTG9hZE9yU3RvcmUpLCBv
ZmZzZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0b3JhZ2Uob2Zmc2V0KSArIE9CSkVDVF9PRkZTRVRPRihF
bmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpOworICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6cmVwYXRjaEludDMyKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFi
ZWwzMkF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRvVGFnTG9hZE9yU3RvcmUpLCBv
ZmZzZXRSZWxhdGl2ZVRvQmFzZShvZmZzZXQpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1
ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0
Y2hJbnQzMihzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsMzJBdE9mZnNldChz
dHViSW5mby5wYXRjaC5kZWx0YUNhbGxUb1BheWxvYWRMb2FkT3JTdG9yZSksIG9mZnNldFJlbGF0
aXZlVG9CYXNlKG9mZnNldCkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRv
ciwgYXNCaXRzLnBheWxvYWQpKTsKICAgICB9CiAjZW5kaWYKIH0KQEAgLTI2MCw3ICsyNTYsOCBA
QCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVHZXRCeUlECiAgICAgICAgICAgICAm
JiBzbG90LmlzQ2FjaGVhYmxlVmFsdWUoKQogICAgICAgICAgICAgJiYgc2xvdC5zbG90QmFzZSgp
ID09IGJhc2VWYWx1ZQogICAgICAgICAgICAgJiYgIXNsb3Qud2F0Y2hwb2ludFNldCgpCi0gICAg
ICAgICAgICAmJiBNYWNyb0Fzc2VtYmxlcjo6aXNDb21wYWN0UHRyQWxpZ25lZEFkZHJlc3NPZmZz
ZXQobWF4T2Zmc2V0UmVsYXRpdmVUb1BhdGNoZWRTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkp
KQorICAgICAgICAgICAgJiYgaXNJbmxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkKKyAg
ICAgICAgICAgICYmIE1hY3JvQXNzZW1ibGVyOjppc0NvbXBhY3RQdHJBbGlnbmVkQWRkcmVzc09m
ZnNldChtYXhPZmZzZXRSZWxhdGl2ZVRvQmFzZShzbG90LmNhY2hlZE9mZnNldCgpKSkKICAgICAg
ICAgICAgICYmIGFjdGlvbiA9PSBBdHRlbXB0VG9DYWNoZQogICAgICAgICAgICAgJiYgIXN0cnVj
dHVyZS0+bmVlZEltcHVyZVByb3BlcnR5V2F0Y2hwb2ludCgpCiAgICAgICAgICAgICAmJiAhbG9h
ZFRhcmdldEZyb21Qcm94eSkgewpAQCAtMzc1LDkgKzM3Miw5IEBAIHN0YXRpYyBJbmxpbmVDYWNo
ZUFjdGlvbiB0cnlDYWNoZVB1dEJ5SUQKICAgICAgICAgaWYgKHNsb3QudHlwZSgpID09IFB1dFBy
b3BlcnR5U2xvdDo6RXhpc3RpbmdQcm9wZXJ0eSkgewogICAgICAgICAgICAgc3RydWN0dXJlLT5k
aWRDYWNoZVByb3BlcnR5UmVwbGFjZW1lbnQodm0sIHNsb3QuY2FjaGVkT2Zmc2V0KCkpOwogICAg
ICAgICAKLSAgICAgICAgICAgIHB0cmRpZmZfdCBvZmZzZXRUb1BhdGNoZWRTdG9yYWdlID0gb2Zm
c2V0UmVsYXRpdmVUb1BhdGNoZWRTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpOwogICAgICAg
ICAgICAgaWYgKHN0dWJJbmZvLmNhY2hlVHlwZSA9PSBDYWNoZVR5cGU6OlVuc2V0Ci0gICAgICAg
ICAgICAgICAgJiYgTWFjcm9Bc3NlbWJsZXI6OmlzUHRyQWxpZ25lZEFkZHJlc3NPZmZzZXQob2Zm
c2V0VG9QYXRjaGVkU3RvcmFnZSkKKyAgICAgICAgICAgICAgICAmJiBpc0lubGluZU9mZnNldChz
bG90LmNhY2hlZE9mZnNldCgpKTsKKyAgICAgICAgICAgICAgICAmJiBNYWNyb0Fzc2VtYmxlcjo6
aXNQdHJBbGlnbmVkQWRkcmVzc09mZnNldChtYXhPZmZzZXRSZWxhdGl2ZVRvQmFzZShzbG90LmNh
Y2hlZE9mZnNldCgpKSkKICAgICAgICAgICAgICAgICAmJiAhc3RydWN0dXJlLT5uZWVkSW1wdXJl
UHJvcGVydHlXYXRjaHBvaW50KCkKICAgICAgICAgICAgICAgICAmJiAhc3RydWN0dXJlLT5pbmZl
cnJlZFR5cGVGb3IoaWRlbnQuaW1wbCgpKSkgewogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0LmgJKHJldmlzaW9uIDE5MDY2MCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0MDYsMjggKzE0
MDYsNiBAQCBpbmxpbmUgc2l6ZV90IEpTT2JqZWN0OjpidXR0ZXJmbHlUb3RhbFNpCiAgICAgcmV0
dXJuIEJ1dHRlcmZseTo6dG90YWxTaXplKHByZUNhcGFjaXR5LCBzdHJ1Y3R1cmUtPm91dE9mTGlu
ZUNhcGFjaXR5KCksIGhhc0luZGV4aW5nSGVhZGVyLCBpbmRleGluZ1BheWxvYWRTaXplSW5CeXRl
cyk7CiB9CiAKLS8vIEhlbHBlcnMgZm9yIHBhdGNoaW5nIGNvZGUgd2hlcmUgeW91IHdhbnQgdG8g
ZW1pdCBhIGxvYWQgb3Igc3RvcmUgYW5kCi0vLyB0aGUgYmFzZSBpczoKLS8vIEZvciBpbmxpbmUg
b2Zmc2V0czogYSBwb2ludGVyIHRvIHRoZSBvdXQtb2YtbGluZSBzdG9yYWdlIHBvaW50ZXIuCi0v
LyBGb3Igb3V0LW9mLWxpbmUgb2Zmc2V0czogdGhlIGJhc2Ugb2YgdGhlIG91dC1vZi1saW5lIHN0
b3JhZ2UuCi1pbmxpbmUgc2l6ZV90IG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShQcm9w
ZXJ0eU9mZnNldCBvZmZzZXQpCi17Ci0gICAgaWYgKGlzT3V0T2ZMaW5lT2Zmc2V0KG9mZnNldCkp
Ci0gICAgICAgIHJldHVybiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpICogb2Zmc2V0SW5CdXR0ZXJm
bHkob2Zmc2V0KTsKLSAgICByZXR1cm4gSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgp
IC0gSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpICsgc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAq
IG9mZnNldEluSW5saW5lU3RvcmFnZShvZmZzZXQpOwotfQotCi0vLyBSZXR1cm5zIHRoZSBtYXhp
bXVtIG9mZnNldCAoYXdheSBmcm9tIHplcm8pIGEgbG9hZCBpbnN0cnVjdGlvbiB3aWxsIGVuY29k
ZS4KLWlubGluZSBzaXplX3QgbWF4T2Zmc2V0UmVsYXRpdmVUb1BhdGNoZWRTdG9yYWdlKFByb3Bl
cnR5T2Zmc2V0IG9mZnNldCkKLXsKLSAgICBwdHJkaWZmX3QgYWRkcmVzc09mZnNldCA9IHN0YXRp
Y19jYXN0PHB0cmRpZmZfdD4ob2Zmc2V0UmVsYXRpdmVUb1BhdGNoZWRTdG9yYWdlKG9mZnNldCkp
OwotI2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgaWYgKGFkZHJlc3NPZmZzZXQgPj0gMCkKLSAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4oYWRkcmVzc09mZnNldCkgKyBPQkpFQ1Rf
T0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZyk7Ci0jZW5kaWYKLSAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PihhZGRyZXNzT2Zmc2V0KTsKLX0KLQogaW5saW5l
IGludCBpbmRleFJlbGF0aXZlVG9CYXNlKFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKIHsKICAgICBp
ZiAoaXNPdXRPZkxpbmVPZmZzZXQob2Zmc2V0KSkKQEAgLTE0NDMsNiArMTQyMSwxNyBAQCBpbmxp
bmUgaW50IG9mZnNldFJlbGF0aXZlVG9CYXNlKFByb3BlcnR5CiAgICAgcmV0dXJuIEpTT2JqZWN0
OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSArIG9mZnNldEluSW5saW5lU3RvcmFnZShvZmZzZXQp
ICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKTsKIH0KIAorLy8gUmV0dXJucyB0aGUgbWF4aW11bSBv
ZmZzZXQgKGF3YXkgZnJvbSB6ZXJvKSBhIGxvYWQgaW5zdHJ1Y3Rpb24gd2lsbCBlbmNvZGUuCitp
bmxpbmUgc2l6ZV90IG1heE9mZnNldFJlbGF0aXZlVG9CYXNlKFByb3BlcnR5T2Zmc2V0IG9mZnNl
dCkKK3sKKyAgICBwdHJkaWZmX3QgYWRkcmVzc09mZnNldCA9IG9mZnNldFJlbGF0aXZlVG9CYXNl
KG9mZnNldCk7CisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICBpZiAoYWRkcmVzc09mZnNldCA+
PSAwKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PihhZGRyZXNzT2Zmc2V0KSAr
IE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKTsKKyNl
bmRpZgorICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KGFkZHJlc3NPZmZzZXQpOworfQor
CiBDT01QSUxFX0FTU0VSVCghKHNpemVvZihKU09iamVjdCkgJSBzaXplb2YoV3JpdGVCYXJyaWVy
QmFzZTxVbmtub3duPikpLCBKU09iamVjdF9pbmxpbmVfc3RvcmFnZV9oYXNfY29ycmVjdF9hbGln
bm1lbnQpOwogCiBBTFdBWVNfSU5MSU5FIElkZW50aWZpZXIgbWFrZUlkZW50aWZpZXIoVk0mIHZt
LCBjb25zdCBjaGFyKiBuYW1lKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262584</attachid>
            <date>2015-10-06 23:29:42 -0700</date>
            <delta_ts>2015-10-07 10:24:05 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>15310</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTkwNjYwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBA
CisyMDE1LTEwLTA2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
SW5saW5lIGNhY2hlcyBzaG91bGQgaGFuZGxlIG91dC1vZi1saW5lIG9mZnNldHMgb3V0LW9mLWxp
bmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0OTg2
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElmIHdl
IHdhbnQgdG8gaGF2ZSBhIGNvbmN1cnJlbnQgY29weWluZyBHQywgdGhlbiB3ZSBuZWVkIGEgcmVh
ZCBiYXJyaWVyIG9uIGNvcGllZCBzcGFjZQorICAgICAgICBwb2ludGVycy4gVGhhdCBtYWtlcyB0
aGUgY29udmVydGlibGUgbG9hZCBwb3J0aW9uIG9mIHRoZSBnZXRfYnlfaWQvcHV0X2J5X2lkIGlu
bGluZSBjYWNoZXMKKyAgICAgICAgcmF0aGVyIGNoYWxsZW5naW5nLiBDdXJyZW50bHkgd2UgaGF2
ZSBhIGxvYWQgaW5zdHJ1Y3Rpb24gdGhhdCB3ZSBjYW4gdHVybiBpbnRvIGFuIGFkZAorICAgICAg
ICBpbnN0cnVjdGlvbiAtIHRoZSBhZGQgY2FzZSBpcyB3aGVuIHdlIGhhdmUgYW4gaW5saW5lIG9m
ZnNldCwgYW5kIHRoZSBsb2FkIGNhc2UgaXMgd2hlbiB3ZQorICAgICAgICBoYXZlIGFuIG91dC1v
Zi1saW5lIG9mZnNldCBhbmQgd2UgbmVlZCB0byBsb2FkIGEgY29waWVkIHNwYWNlIHBvaW50ZXIu
IEJ1dCBpZiB0aGUgbG9hZCBmcm9tCisgICAgICAgIGNvcGllZCBzcGFjZSByZXF1aXJlcyBhIGJh
cnJpZXIsIHRoZW4gdGhlcmUgaXMgbm8gZWFzeSB3YXkgdG8gY29udmVydCB0aGF0IGJhY2sgdG8g
dGhlIGlubGluZQorICAgICAgICBjYXNlLgorCisgICAgICAgIFRoaXMgcGF0Y2ggcmVtb3ZlcyB0
aGUgY29udmVydGlibGUgbG9hZC4gVGhlIGlubGluZSBwYXRoIG9mIGdldF9ieV9pZC9wdXRfYnlf
aWQgb25seSBoYW5kbGVzCisgICAgICAgIHRoZSBpbmxpbmUgb2Zmc2V0cy4gT3V0LW9mLWxpbmUg
b2Zmc2V0cyBhcmUgbm93IGhhbmRsZWQgdXNpbmcgb3V0LW9mLWxpbmUgc3R1YnMuCisKKyAgICAg
ICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oOgorICAgICAgICAqIGZ0bC9GVExJbmxp
bmVDYWNoZVNpemUuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OnNpemVPZkdldEJ5SWQpOgorICAg
ICAgICAoSlNDOjpGVEw6OnNpemVPZlB1dEJ5SWQpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVD
YWNoZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVEJ5SWRHZW5lcmF0b3I6OmZpbmFs
aXplKToKKyAgICAgICAgKEpTQzo6SklUQnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aENo
ZWNrcyk6CisgICAgICAgIChKU0M6OkpJVEdldEJ5SWRHZW5lcmF0b3I6OkpJVEdldEJ5SWRHZW5l
cmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRHZXRCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQ
YXRoKToKKyAgICAgICAgKEpTQzo6SklUUHV0QnlJZEdlbmVyYXRvcjo6SklUUHV0QnlJZEdlbmVy
YXRvcik6CisgICAgICAgIChKU0M6OkpJVFB1dEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBh
dGgpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oOgorICAgICAgICAq
IGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6cmVwYXRjaEJ5SWRTZWxmQWNjZXNzKToK
KyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVHZXRCeUlEKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVQ
dXRCeUlEKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpT
T2JqZWN0OjpidXR0ZXJmbHlUb3RhbFNpemUpOgorICAgICAgICAoSlNDOjppbmRleFJlbGF0aXZl
VG9CYXNlKToKKyAgICAgICAgKEpTQzo6b2Zmc2V0UmVsYXRpdmVUb0Jhc2UpOgorICAgICAgICAo
SlNDOjptYXhPZmZzZXRSZWxhdGl2ZVRvQmFzZSk6CisgICAgICAgIChKU0M6Om1ha2VJZGVudGlm
aWVyKToKKyAgICAgICAgKEpTQzo6b2Zmc2V0UmVsYXRpdmVUb1BhdGNoZWRTdG9yYWdlKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6bWF4T2Zmc2V0UmVsYXRpdmVUb1BhdGNoZWRTdG9yYWdlKTog
RGVsZXRlZC4KKwogMjAxNS0xMC0wNiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAK
ICAgICAgICAgRmFjdG9yaW5nIG91dCBvcF9zdWIgYmFzZWxpbmUgY29kZSBnZW5lcmF0aW9uIGlu
dG8gSklUU3ViR2VuZXJhdG9yLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1N0cnVjdHVyZVN0dWJJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgJKHJldmlzaW9uIDE5MDY2MCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMzksNyArMTM5LDYgQEAgcHVibGljOgogICAgICAgICBpbnQ4X3QgdmFsdWVHUFI7
CiAgICAgICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnM7CiAgICAgICAgIGludDMyX3QgZGVs
dGFDYWxsVG9Eb25lOwotICAgICAgICBpbnQzMl90IGRlbHRhQ2FsbFRvU3RvcmFnZUxvYWQ7CiAg
ICAgICAgIGludDMyX3QgZGVsdGFDYWxsVG9KdW1wOwogICAgICAgICBpbnQzMl90IGRlbHRhQ2Fs
bFRvU2xvd0Nhc2U7CiAgICAgICAgIGludDMyX3QgZGVsdGFDaGVja0ltbVRvQ2FsbDsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSW5saW5lQ2FjaGVTaXplLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTElubGluZUNhY2hlU2l6ZS5jcHAJ
KHJldmlzaW9uIDE5MDY2MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSW5saW5l
Q2FjaGVTaXplLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksMTggKzQ5LDE4IEBAIHVzaW5nIG5h
bWVzcGFjZSBERkc7CiBzaXplX3Qgc2l6ZU9mR2V0QnlJZCgpCiB7CiAjaWYgQ1BVKEFSTTY0KQot
ICAgIHJldHVybiAzNjsKKyAgICByZXR1cm4gMzI7CiAjZWxzZQotICAgIHJldHVybiAzMDsKKyAg
ICByZXR1cm4gMjc7CiAjZW5kaWYKIH0KIAogc2l6ZV90IHNpemVPZlB1dEJ5SWQoKQogewogI2lm
IENQVShBUk02NCkKLSAgICByZXR1cm4gNDQ7CisgICAgcmV0dXJuIDQwOwogI2Vsc2UKLSAgICBy
ZXR1cm4gMzI7CisgICAgcmV0dXJuIDI5OwogI2VuZGlmCiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCShy
ZXZpc2lvbiAxOTA2NjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNh
Y2hlR2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTMsOCArOTMsNiBAQCB2b2lkIEpJ
VEJ5SWRHZW5lcmF0b3I6OmZpbmFsaXplKExpbmtCdWZmCiAgICAgICAgIGNhbGxSZXR1cm5Mb2Nh
dGlvbiwgc2xvd1BhdGgubG9jYXRpb25PZihtX3Nsb3dQYXRoQmVnaW4pKTsKICAgICBtX3N0dWJJ
bmZvLT5wYXRjaC5kZWx0YUNhbGxUb0RvbmUgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJl
dHdlZW5Db2RlUHRyKAogICAgICAgICBjYWxsUmV0dXJuTG9jYXRpb24sIGZhc3RQYXRoLmxvY2F0
aW9uT2YobV9kb25lKSk7Ci0gICAgbV9zdHViSW5mby0+cGF0Y2guZGVsdGFDYWxsVG9TdG9yYWdl
TG9hZCA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoCi0gICAgICAg
IGNhbGxSZXR1cm5Mb2NhdGlvbiwgZmFzdFBhdGgubG9jYXRpb25PZihtX3Byb3BlcnR5U3RvcmFn
ZUxvYWQpKTsKIH0KIAogdm9pZCBKSVRCeUlkR2VuZXJhdG9yOjpmaW5hbGl6ZShMaW5rQnVmZmVy
JiBsaW5rQnVmZmVyKQpAQCAtMTAyLDE1ICsxMDAsMTIgQEAgdm9pZCBKSVRCeUlkR2VuZXJhdG9y
OjpmaW5hbGl6ZShMaW5rQnVmZgogICAgIGZpbmFsaXplKGxpbmtCdWZmZXIsIGxpbmtCdWZmZXIp
OwogfQogCi12b2lkIEpJVEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGhDaGVja3MoTWFj
cm9Bc3NlbWJsZXImIGppdCwgR1BSUmVnIGJ1dHRlcmZseSkKK3ZvaWQgSklUQnlJZEdlbmVyYXRv
cjo6Z2VuZXJhdGVGYXN0UGF0aENoZWNrcyhNYWNyb0Fzc2VtYmxlciYgaml0KQogewogICAgIG1f
c3RydWN0dXJlQ2hlY2sgPSBqaXQucGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2goCiAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MobV9iYXNlLnBheWxvYWRHUFIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwKICAg
ICAgICAgbV9zdHJ1Y3R1cmVJbW0sIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoMCkpOwot
ICAgIAotICAgIG1fcHJvcGVydHlTdG9yYWdlTG9hZCA9IGppdC5jb252ZXJ0aWJsZUxvYWRQdHIo
Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG1fYmFzZS5wYXlsb2FkR1BSKCksIEpT
T2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIGJ1dHRlcmZseSk7CiB9CiAKIEpJVEdldEJ5SWRH
ZW5lcmF0b3I6OkpJVEdldEJ5SWRHZW5lcmF0b3IoCkBAIC0xMjQsMTYgKzExOSwxNiBAQCBKSVRH
ZXRCeUlkR2VuZXJhdG9yOjpKSVRHZXRCeUlkR2VuZXJhdG9yCiAKIHZvaWQgSklUR2V0QnlJZEdl
bmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0KQogewotICAgIGdl
bmVyYXRlRmFzdFBhdGhDaGVja3Moaml0LCBtX3ZhbHVlLnBheWxvYWRHUFIoKSk7CisgICAgZ2Vu
ZXJhdGVGYXN0UGF0aENoZWNrcyhqaXQpOwogICAgIAogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAg
bV9sb2FkT3JTdG9yZSA9IGppdC5sb2FkNjRXaXRoQ29tcGFjdEFkZHJlc3NPZmZzZXRQYXRjaCgK
LSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MobV92YWx1ZS5wYXlsb2FkR1BSKCksIDAp
LCBtX3ZhbHVlLnBheWxvYWRHUFIoKSkubGFiZWwoKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MobV9iYXNlLnBheWxvYWRHUFIoKSwgMCksIG1fdmFsdWUucGF5bG9hZEdQUigpKS5s
YWJlbCgpOwogI2Vsc2UKICAgICBtX3RhZ0xvYWRPclN0b3JlID0gaml0LmxvYWQzMldpdGhDb21w
YWN0QWRkcmVzc09mZnNldFBhdGNoKAotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyht
X3ZhbHVlLnBheWxvYWRHUFIoKSwgMCksIG1fdmFsdWUudGFnR1BSKCkpLmxhYmVsKCk7CisgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG1fYmFzZS5wYXlsb2FkR1BSKCksIDApLCBtX3Zh
bHVlLnRhZ0dQUigpKS5sYWJlbCgpOwogICAgIG1fbG9hZE9yU3RvcmUgPSBqaXQubG9hZDMyV2l0
aENvbXBhY3RBZGRyZXNzT2Zmc2V0UGF0Y2goCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKG1fdmFsdWUucGF5bG9hZEdQUigpLCAwKSwgbV92YWx1ZS5wYXlsb2FkR1BSKCkpLmxhYmVs
KCk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG1fYmFzZS5wYXlsb2FkR1BSKCks
IDApLCBtX3ZhbHVlLnBheWxvYWRHUFIoKSkubGFiZWwoKTsKICNlbmRpZgogICAgIAogICAgIG1f
ZG9uZSA9IGppdC5sYWJlbCgpOwpAQCAtMTQ1LDcgKzE0MCw2IEBAIEpJVFB1dEJ5SWRHZW5lcmF0
b3I6OkpJVFB1dEJ5SWRHZW5lcmF0b3IKICAgICBFQ01BTW9kZSBlY21hTW9kZSwgUHV0S2luZCBw
dXRLaW5kKQogICAgIDogSklUQnlJZEdlbmVyYXRvcigKICAgICAgICAgY29kZUJsb2NrLCBjb2Rl
T3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6UHV0LCB1c2VkUmVnaXN0ZXJzLCBiYXNlLCB2
YWx1ZSwgc3BpbGxNb2RlKQotICAgICwgbV9zY3JhdGNoKHNjcmF0Y2gpCiAgICAgLCBtX2VjbWFN
b2RlKGVjbWFNb2RlKQogICAgICwgbV9wdXRLaW5kKHB1dEtpbmQpCiB7CkBAIC0xNTQsMTYgKzE0
OCwxNiBAQCBKSVRQdXRCeUlkR2VuZXJhdG9yOjpKSVRQdXRCeUlkR2VuZXJhdG9yCiAKIHZvaWQg
SklUUHV0QnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0
KQogewotICAgIGdlbmVyYXRlRmFzdFBhdGhDaGVja3Moaml0LCBtX3NjcmF0Y2gpOworICAgIGdl
bmVyYXRlRmFzdFBhdGhDaGVja3Moaml0KTsKICAgICAKICNpZiBVU0UoSlNWQUxVRTY0KQogICAg
IG1fbG9hZE9yU3RvcmUgPSBqaXQuc3RvcmU2NFdpdGhBZGRyZXNzT2Zmc2V0UGF0Y2goCi0gICAg
ICAgIG1fdmFsdWUucGF5bG9hZEdQUigpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhtX3NjcmF0
Y2gsIDApKS5sYWJlbCgpOworICAgICAgICBtX3ZhbHVlLnBheWxvYWRHUFIoKSwgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MobV9iYXNlLnBheWxvYWRHUFIoKSwgMCkpLmxhYmVsKCk7CiAjZWxzZQog
ICAgIG1fdGFnTG9hZE9yU3RvcmUgPSBqaXQuc3RvcmUzMldpdGhBZGRyZXNzT2Zmc2V0UGF0Y2go
Ci0gICAgICAgIG1fdmFsdWUudGFnR1BSKCksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG1fc2Ny
YXRjaCwgMCkpLmxhYmVsKCk7CisgICAgICAgIG1fdmFsdWUudGFnR1BSKCksIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKG1fYmFzZS5wYXlsb2FkR1BSKCksIDApKS5sYWJlbCgpOwogICAgIG1fbG9h
ZE9yU3RvcmUgPSBqaXQuc3RvcmUzMldpdGhBZGRyZXNzT2Zmc2V0UGF0Y2goCi0gICAgICAgIG1f
dmFsdWUucGF5bG9hZEdQUigpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhtX3NjcmF0Y2gsIDAp
KS5sYWJlbCgpOworICAgICAgICBtX3ZhbHVlLnBheWxvYWRHUFIoKSwgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MobV9iYXNlLnBheWxvYWRHUFIoKSwgMCkpLmxhYmVsKCk7CiAjZW5kaWYKICAgICAK
ICAgICBtX2RvbmUgPSBqaXQubGFiZWwoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgJKHJldmlzaW9uIDE5MDY2MCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaAko
d29ya2luZyBjb3B5KQpAQCAtNzQsMTQgKzc0LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGZpbmFs
aXplKExpbmtCdWZmZXImKTsKICAgICAKIHByb3RlY3RlZDoKLSAgICB2b2lkIGdlbmVyYXRlRmFz
dFBhdGhDaGVja3MoTWFjcm9Bc3NlbWJsZXImLCBHUFJSZWcgYnV0dGVyZmx5KTsKKyAgICB2b2lk
IGdlbmVyYXRlRmFzdFBhdGhDaGVja3MoTWFjcm9Bc3NlbWJsZXImKTsKICAgICAKICAgICBKU1Zh
bHVlUmVncyBtX2Jhc2U7CiAgICAgSlNWYWx1ZVJlZ3MgbV92YWx1ZTsKICAgICAKICAgICBNYWNy
b0Fzc2VtYmxlcjo6RGF0YUxhYmVsMzIgbV9zdHJ1Y3R1cmVJbW07CiAgICAgTWFjcm9Bc3NlbWJs
ZXI6OlBhdGNoYWJsZUp1bXAgbV9zdHJ1Y3R1cmVDaGVjazsKLSAgICBNYWNyb0Fzc2VtYmxlcjo6
Q29udmVydGlibGVMb2FkTGFiZWwgbV9wcm9wZXJ0eVN0b3JhZ2VMb2FkOwogICAgIEFzc2VtYmxl
ckxhYmVsIG1fbG9hZE9yU3RvcmU7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICBBc3NlbWJs
ZXJMYWJlbCBtX3RhZ0xvYWRPclN0b3JlOwpAQCAtMTE1LDcgKzExNCw2IEBAIHB1YmxpYzoKICAg
ICBWX0pJVE9wZXJhdGlvbl9FU3NpSkpJIHNsb3dQYXRoRnVuY3Rpb24oKTsKIAogcHJpdmF0ZToK
LSAgICBHUFJSZWcgbV9zY3JhdGNoOwogICAgIEVDTUFNb2RlIG1fZWNtYU1vZGU7CiAgICAgUHV0
S2luZCBtX3B1dEtpbmQ7CiB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBh
dGNoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2gu
Y3BwCShyZXZpc2lvbiAxOTA2NjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0
Y2guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsMjMgKzEwNCwxOCBAQCBzdGF0aWMgdm9pZCBy
ZXBhdGNoQnlJZFNlbGZBY2Nlc3MoCiAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hJbnQzMigK
ICAgICAgICAgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbDMyQXRPZmZzZXQo
LShpbnRwdHJfdClzdHViSW5mby5wYXRjaC5kZWx0YUNoZWNrSW1tVG9DYWxsKSwKICAgICAgICAg
Yml0d2lzZV9jYXN0PGludDMyX3Q+KHN0cnVjdHVyZS0+aWQoKSkpOwotICAgIENvZGVMb2NhdGlv
bkNvbnZlcnRpYmxlTG9hZCBjb252ZXJ0aWJsZUxvYWQgPSBzdHViSW5mby5jYWxsUmV0dXJuTG9j
YXRpb24uY29udmVydGlibGVMb2FkQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGVsdGFDYWxsVG9T
dG9yYWdlTG9hZCk7Ci0gICAgaWYgKGlzT3V0T2ZMaW5lT2Zmc2V0KG9mZnNldCkpCi0gICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpyZXBsYWNlV2l0aExvYWQoY29udmVydGlibGVMb2FkKTsKLSAgICBl
bHNlCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBsYWNlV2l0aEFkZHJlc3NDb21wdXRhdGlv
bihjb252ZXJ0aWJsZUxvYWQpOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgaWYgKGNvbXBhY3Qp
Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoQ29tcGFjdChzdHViSW5mby5jYWxsUmV0
dXJuTG9jYXRpb24uZGF0YUxhYmVsQ29tcGFjdEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRlbHRh
Q2FsbFRvTG9hZE9yU3RvcmUpLCBvZmZzZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0b3JhZ2Uob2Zmc2V0
KSk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoQ29tcGFjdChzdHViSW5mby5jYWxs
UmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsQ29tcGFjdEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRl
bHRhQ2FsbFRvTG9hZE9yU3RvcmUpLCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShvZmZzZXQpKTsKICAg
ICBlbHNlCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSW50MzIoc3R1YkluZm8uY2Fs
bFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbDMyQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGVsdGFD
YWxsVG9Mb2FkT3JTdG9yZSksIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShvZmZzZXQp
KTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hJbnQzMihzdHViSW5mby5jYWxsUmV0
dXJuTG9jYXRpb24uZGF0YUxhYmVsMzJBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZWx0YUNhbGxU
b0xvYWRPclN0b3JlKSwgb2Zmc2V0UmVsYXRpdmVUb0Jhc2Uob2Zmc2V0KSk7CiAjZWxpZiBVU0Uo
SlNWQUxVRTMyXzY0KQogICAgIGlmIChjb21wYWN0KSB7Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpyZXBhdGNoQ29tcGFjdChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsQ29t
cGFjdEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRvVGFnTG9hZE9yU3RvcmUpLCBv
ZmZzZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0b3JhZ2Uob2Zmc2V0KSArIE9CSkVDVF9PRkZTRVRPRihF
bmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSk7Ci0gICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpyZXBhdGNoQ29tcGFjdChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVs
Q29tcGFjdEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRvUGF5bG9hZExvYWRPclN0
b3JlKSwgb2Zmc2V0UmVsYXRpdmVUb1BhdGNoZWRTdG9yYWdlKG9mZnNldCkgKyBPQkpFQ1RfT0ZG
U0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKTsKKyAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDb21wYWN0KHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlv
bi5kYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGVsdGFDYWxsVG9UYWdM
b2FkT3JTdG9yZSksIG9mZnNldFJlbGF0aXZlVG9CYXNlKG9mZnNldCkgKyBPQkpFQ1RfT0ZGU0VU
T0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpOworICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6cmVwYXRjaENvbXBhY3Qoc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFM
YWJlbENvbXBhY3RBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZWx0YUNhbGxUb1BheWxvYWRMb2Fk
T3JTdG9yZSksIG9mZnNldFJlbGF0aXZlVG9CYXNlKG9mZnNldCkgKyBPQkpFQ1RfT0ZGU0VUT0Yo
RW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKTsKICAgICB9IGVsc2Ugewot
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEludDMyKHN0dWJJbmZvLmNhbGxSZXR1cm5M
b2NhdGlvbi5kYXRhTGFiZWwzMkF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRvVGFn
TG9hZE9yU3RvcmUpLCBvZmZzZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0b3JhZ2Uob2Zmc2V0KSArIE9C
SkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSk7Ci0gICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSW50MzIoc3R1YkluZm8uY2FsbFJldHVybkxvY2F0
aW9uLmRhdGFMYWJlbDMyQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGVsdGFDYWxsVG9QYXlsb2Fk
TG9hZE9yU3RvcmUpLCBvZmZzZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0b3JhZ2Uob2Zmc2V0KSArIE9C
SkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpOwor
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEludDMyKHN0dWJJbmZvLmNhbGxSZXR1cm5M
b2NhdGlvbi5kYXRhTGFiZWwzMkF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRvVGFn
TG9hZE9yU3RvcmUpLCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShvZmZzZXQpICsgT0JKRUNUX09GRlNF
VE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKTsKKyAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OnJlcGF0Y2hJbnQzMihzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxh
YmVsMzJBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZWx0YUNhbGxUb1BheWxvYWRMb2FkT3JTdG9y
ZSksIG9mZnNldFJlbGF0aXZlVG9CYXNlKG9mZnNldCkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2Rl
ZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKTsKICAgICB9CiAjZW5kaWYKIH0KQEAg
LTI2MCw3ICsyNTUsOCBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVHZXRCeUlE
CiAgICAgICAgICAgICAmJiBzbG90LmlzQ2FjaGVhYmxlVmFsdWUoKQogICAgICAgICAgICAgJiYg
c2xvdC5zbG90QmFzZSgpID09IGJhc2VWYWx1ZQogICAgICAgICAgICAgJiYgIXNsb3Qud2F0Y2hw
b2ludFNldCgpCi0gICAgICAgICAgICAmJiBNYWNyb0Fzc2VtYmxlcjo6aXNDb21wYWN0UHRyQWxp
Z25lZEFkZHJlc3NPZmZzZXQobWF4T2Zmc2V0UmVsYXRpdmVUb1BhdGNoZWRTdG9yYWdlKHNsb3Qu
Y2FjaGVkT2Zmc2V0KCkpKQorICAgICAgICAgICAgJiYgaXNJbmxpbmVPZmZzZXQoc2xvdC5jYWNo
ZWRPZmZzZXQoKSkKKyAgICAgICAgICAgICYmIE1hY3JvQXNzZW1ibGVyOjppc0NvbXBhY3RQdHJB
bGlnbmVkQWRkcmVzc09mZnNldChtYXhPZmZzZXRSZWxhdGl2ZVRvQmFzZShzbG90LmNhY2hlZE9m
ZnNldCgpKSkKICAgICAgICAgICAgICYmIGFjdGlvbiA9PSBBdHRlbXB0VG9DYWNoZQogICAgICAg
ICAgICAgJiYgIXN0cnVjdHVyZS0+bmVlZEltcHVyZVByb3BlcnR5V2F0Y2hwb2ludCgpCiAgICAg
ICAgICAgICAmJiAhbG9hZFRhcmdldEZyb21Qcm94eSkgewpAQCAtMzc1LDkgKzM3MSw5IEBAIHN0
YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5SUQKICAgICAgICAgaWYgKHNsb3Qu
dHlwZSgpID09IFB1dFByb3BlcnR5U2xvdDo6RXhpc3RpbmdQcm9wZXJ0eSkgewogICAgICAgICAg
ICAgc3RydWN0dXJlLT5kaWRDYWNoZVByb3BlcnR5UmVwbGFjZW1lbnQodm0sIHNsb3QuY2FjaGVk
T2Zmc2V0KCkpOwogICAgICAgICAKLSAgICAgICAgICAgIHB0cmRpZmZfdCBvZmZzZXRUb1BhdGNo
ZWRTdG9yYWdlID0gb2Zmc2V0UmVsYXRpdmVUb1BhdGNoZWRTdG9yYWdlKHNsb3QuY2FjaGVkT2Zm
c2V0KCkpOwogICAgICAgICAgICAgaWYgKHN0dWJJbmZvLmNhY2hlVHlwZSA9PSBDYWNoZVR5cGU6
OlVuc2V0Ci0gICAgICAgICAgICAgICAgJiYgTWFjcm9Bc3NlbWJsZXI6OmlzUHRyQWxpZ25lZEFk
ZHJlc3NPZmZzZXQob2Zmc2V0VG9QYXRjaGVkU3RvcmFnZSkKKyAgICAgICAgICAgICAgICAmJiBp
c0lubGluZU9mZnNldChzbG90LmNhY2hlZE9mZnNldCgpKQorICAgICAgICAgICAgICAgICYmIE1h
Y3JvQXNzZW1ibGVyOjppc1B0ckFsaWduZWRBZGRyZXNzT2Zmc2V0KG1heE9mZnNldFJlbGF0aXZl
VG9CYXNlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpKQogICAgICAgICAgICAgICAgICYmICFzdHJ1Y3R1
cmUtPm5lZWRJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQoKQogICAgICAgICAgICAgICAgICYmICFz
dHJ1Y3R1cmUtPmluZmVycmVkVHlwZUZvcihpZGVudC5pbXBsKCkpKSB7CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2aXNpb24gMTkwNjYwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkod29ya2luZyBjb3B5KQpA
QCAtMTQwNiwyOCArMTQwNiw2IEBAIGlubGluZSBzaXplX3QgSlNPYmplY3Q6OmJ1dHRlcmZseVRv
dGFsU2kKICAgICByZXR1cm4gQnV0dGVyZmx5Ojp0b3RhbFNpemUocHJlQ2FwYWNpdHksIHN0cnVj
dHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgaGFzSW5kZXhpbmdIZWFkZXIsIGluZGV4aW5nUGF5
bG9hZFNpemVJbkJ5dGVzKTsKIH0KIAotLy8gSGVscGVycyBmb3IgcGF0Y2hpbmcgY29kZSB3aGVy
ZSB5b3Ugd2FudCB0byBlbWl0IGEgbG9hZCBvciBzdG9yZSBhbmQKLS8vIHRoZSBiYXNlIGlzOgot
Ly8gRm9yIGlubGluZSBvZmZzZXRzOiBhIHBvaW50ZXIgdG8gdGhlIG91dC1vZi1saW5lIHN0b3Jh
Z2UgcG9pbnRlci4KLS8vIEZvciBvdXQtb2YtbGluZSBvZmZzZXRzOiB0aGUgYmFzZSBvZiB0aGUg
b3V0LW9mLWxpbmUgc3RvcmFnZS4KLWlubGluZSBzaXplX3Qgb2Zmc2V0UmVsYXRpdmVUb1BhdGNo
ZWRTdG9yYWdlKFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKLXsKLSAgICBpZiAoaXNPdXRPZkxpbmVP
ZmZzZXQob2Zmc2V0KSkKLSAgICAgICAgcmV0dXJuIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKiBv
ZmZzZXRJbkJ1dHRlcmZseShvZmZzZXQpOwotICAgIHJldHVybiBKU09iamVjdDo6b2Zmc2V0T2ZJ
bmxpbmVTdG9yYWdlKCkgLSBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkgKyBzaXplb2YoRW5j
b2RlZEpTVmFsdWUpICogb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKG9mZnNldCk7Ci19Ci0KLS8vIFJl
dHVybnMgdGhlIG1heGltdW0gb2Zmc2V0IChhd2F5IGZyb20gemVybykgYSBsb2FkIGluc3RydWN0
aW9uIHdpbGwgZW5jb2RlLgotaW5saW5lIHNpemVfdCBtYXhPZmZzZXRSZWxhdGl2ZVRvUGF0Y2hl
ZFN0b3JhZ2UoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQotewotICAgIHB0cmRpZmZfdCBhZGRyZXNz
T2Zmc2V0ID0gc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihvZmZzZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0
b3JhZ2Uob2Zmc2V0KSk7Ci0jaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICBpZiAoYWRkcmVzc09m
ZnNldCA+PSAwKQotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PihhZGRyZXNzT2Zm
c2V0KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFn
KTsKLSNlbmRpZgotICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KGFkZHJlc3NPZmZzZXQp
OwotfQotCiBpbmxpbmUgaW50IGluZGV4UmVsYXRpdmVUb0Jhc2UoUHJvcGVydHlPZmZzZXQgb2Zm
c2V0KQogewogICAgIGlmIChpc091dE9mTGluZU9mZnNldChvZmZzZXQpKQpAQCAtMTQ0Myw2ICsx
NDIxLDE3IEBAIGlubGluZSBpbnQgb2Zmc2V0UmVsYXRpdmVUb0Jhc2UoUHJvcGVydHkKICAgICBy
ZXR1cm4gSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgb2Zmc2V0SW5JbmxpbmVT
dG9yYWdlKG9mZnNldCkgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpOwogfQogCisvLyBSZXR1cm5z
IHRoZSBtYXhpbXVtIG9mZnNldCAoYXdheSBmcm9tIHplcm8pIGEgbG9hZCBpbnN0cnVjdGlvbiB3
aWxsIGVuY29kZS4KK2lubGluZSBzaXplX3QgbWF4T2Zmc2V0UmVsYXRpdmVUb0Jhc2UoUHJvcGVy
dHlPZmZzZXQgb2Zmc2V0KQoreworICAgIHB0cmRpZmZfdCBhZGRyZXNzT2Zmc2V0ID0gb2Zmc2V0
UmVsYXRpdmVUb0Jhc2Uob2Zmc2V0KTsKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgIGlmIChh
ZGRyZXNzT2Zmc2V0ID49IDApCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KGFk
ZHJlc3NPZmZzZXQpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFz
Qml0cy50YWcpOworI2VuZGlmCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4oYWRkcmVz
c09mZnNldCk7Cit9CisKIENPTVBJTEVfQVNTRVJUKCEoc2l6ZW9mKEpTT2JqZWN0KSAlIHNpemVv
ZihXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KSksIEpTT2JqZWN0X2lubGluZV9zdG9yYWdlX2hh
c19jb3JyZWN0X2FsaWdubWVudCk7CiAKIEFMV0FZU19JTkxJTkUgSWRlbnRpZmllciBtYWtlSWRl
bnRpZmllcihWTSYgdm0sIGNvbnN0IGNoYXIqIG5hbWUpCg==
</data>
<flag name="review"
          id="287783"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>