<?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>74984</bug_id>
          
          <creation_ts>2011-12-20 17:50:25 -0800</creation_ts>
          <short_desc>Value Profiles for arguments should be more easily accessible to the interpreter</short_desc>
          <delta_ts>2011-12-20 18:29:37 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>525016</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-12-20 17:50:25 -0800</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525017</commentid>
    <comment_count>1</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-12-20 17:50:34 -0800</bug_when>
    <thetext>&lt;rdar://problem/10611364&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525020</commentid>
    <comment_count>2</comment_count>
      <attachid>120127</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-12-20 17:53:39 -0800</bug_when>
    <thetext>Created attachment 120127
the patch

Looks neutral.



Benchmark report for SunSpider, V8, and Kraken on bigmac (MacPro5,1).

VMs tested:
&quot;TipOfTree&quot; at /Volumes/Data/pizlo/quinary/OpenSource/WebKitBuild/Release/jsc (r103374)
&quot;SepArgProfile&quot; at /Volumes/Data/pizlo/OpenSource/WebKitBuild/Release/jsc (r103374)

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

                                            TipOfTree             SepArgProfile                                  
SunSpider:
   3d-cube                                5.8983+-0.0210          5.8960+-0.0245       
   3d-morph                               8.3063+-0.0316          8.2932+-0.0350       
   3d-raytrace                            7.5780+-0.0573    ?     7.6596+-0.1066       ? might be 1.0108x slower
   access-binary-trees                    1.6330+-0.0072          1.6215+-0.0070       
   access-fannkuch                        7.5015+-0.0082    ?     7.5078+-0.0119       ?
   access-nbody                           3.9341+-0.0112          3.9320+-0.0136       
   access-nsieve                          3.1339+-0.0492    ?     3.1361+-0.0546       ?
   bitops-3bit-bits-in-byte               1.2492+-0.0136    ?     1.2570+-0.0168       ?
   bitops-bits-in-byte                    5.0888+-0.0257    ?     5.0891+-0.0241       ?
   bitops-bitwise-and                     3.2908+-0.0042          3.2845+-0.0025       
   bitops-nsieve-bits                     5.6564+-0.0360          5.6386+-0.0355       
   controlflow-recursive                  2.3338+-0.0126    ?     2.3657+-0.0312       ? might be 1.0137x slower
   crypto-aes                             7.5375+-0.0357    !     7.9208+-0.2434       ! definitely 1.0509x slower
   crypto-md5                             2.5011+-0.0324          2.4883+-0.0352       
   crypto-sha1                            2.2588+-0.0305          2.2437+-0.0317       
   date-format-tofte                     10.5184+-0.0684    ?    10.6383+-0.1559       ? might be 1.0114x slower
   date-format-xparb                      9.7473+-0.0681    !     9.9303+-0.0646       ! definitely 1.0188x slower
   math-cordic                            7.2035+-0.0465          7.1695+-0.0183       
   math-partial-sums                     10.4090+-0.0329         10.3948+-0.0197       
   math-spectral-norm                     2.6357+-0.0044    ?     2.6493+-0.0215       ?
   regexp-dna                             8.7873+-0.0520    ?     8.8476+-0.0411       ?
   string-base64                          4.3422+-0.0172    ^     4.3053+-0.0095       ^ definitely 1.0086x faster
   string-fasta                           7.2648+-0.0211    ?     7.2716+-0.0196       ?
   string-tagcloud                       12.3247+-0.0608    ?    12.3749+-0.0768       ?
   string-unpack-code                    20.4331+-0.1069         20.4294+-0.0926       
   string-validate-input                  5.5607+-0.0347          5.5410+-0.0350       

   &lt;arithmetic&gt; *                         6.4280+-0.0164    ?     6.4571+-0.0192       ? might be 1.0045x slower
   &lt;geometric&gt;                            5.2455+-0.0156    ?     5.2621+-0.0207       ? might be 1.0032x slower
   &lt;harmonic&gt;                             4.1757+-0.0166    ?     4.1826+-0.0239       ? might be 1.0016x slower

                                            TipOfTree             SepArgProfile                                  
V8:
   crypto                                77.3966+-0.8162    ?    77.5275+-0.2308       ?
   deltablue                            170.2357+-0.6947    !   172.8179+-0.9768       ! definitely 1.0152x slower
   earley-boyer                          99.7197+-0.9777    ?   100.0812+-1.6073       ?
   raytrace                              52.6695+-0.8751    ?    53.0945+-0.8225       ?
   regexp                               122.1514+-0.3019        121.4377+-0.5533       
   richards                             137.6613+-0.3169    ?   137.9168+-0.6718       ?
   splay                                 92.0140+-1.1472         91.9703+-1.4986       

   &lt;arithmetic&gt;                         107.4069+-0.2343    ?   107.8351+-0.5295       ? might be 1.0040x slower
   &lt;geometric&gt; *                        100.9715+-0.3417    ?   101.3161+-0.5456       ? might be 1.0034x slower
   &lt;harmonic&gt;                            94.4104+-0.4930    ?    94.7387+-0.5820       ? might be 1.0035x slower

                                            TipOfTree             SepArgProfile                                  
Kraken:
   ai-astar                             808.1426+-12.7223   ?   818.4768+-11.3447      ? might be 1.0128x slower
   audio-beat-detection                 191.5014+-0.4783        191.0791+-0.3519       
   audio-dft                            274.6687+-2.8362    ?   277.7278+-4.5364       ? might be 1.0111x slower
   audio-fft                            119.7009+-1.0617        119.3369+-0.3265       
   audio-oscillator                     284.3136+-4.1024        281.9721+-2.4438       
   imaging-darkroom                     298.9661+-5.3908    ?   300.5002+-6.2156       ?
   imaging-desaturate                   230.6104+-0.2709        230.5099+-0.1834       
   imaging-gaussian-blur                520.4534+-0.3280        520.2765+-0.2146       
   json-parse-financial                  70.8143+-0.2055    ?    70.8822+-0.1997       ?
   json-stringify-tinderbox              81.4055+-0.2200    ?    81.7770+-0.3007       ?
   stanford-crypto-aes                  117.8352+-1.4268    ?   117.9396+-0.6121       ?
   stanford-crypto-ccm                  115.2356+-0.7613        114.6706+-1.0170       
   stanford-crypto-pbkdf2               232.3635+-0.4912    ?   233.9215+-3.2915       ?
   stanford-crypto-sha256-iterative      96.6566+-0.3117    ^    95.9592+-0.1967       ^ definitely 1.0073x faster

   &lt;arithmetic&gt; *                       245.9048+-1.2667    ?   246.7878+-0.8757       ? might be 1.0036x slower
   &lt;geometric&gt;                          191.7964+-0.6193    ?   192.0069+-0.5309       ? might be 1.0011x slower
   &lt;harmonic&gt;                           155.8955+-0.3985        155.8811+-0.3892         might be 1.0001x faster

                                            TipOfTree             SepArgProfile                                  
All benchmarks:
   &lt;arithmetic&gt;                          92.8009+-0.4021    ?    93.1439+-0.3090       ? might be 1.0037x slower
   &lt;geometric&gt;                           23.8051+-0.0645    ?    23.8666+-0.0779       ? might be 1.0026x slower
   &lt;harmonic&gt;                             7.3547+-0.0288    ?     7.3668+-0.0414       ? might be 1.0016x slower

                                            TipOfTree             SepArgProfile                                  
Geomean of preferred means:
   &lt;scaled-result&gt;                       54.2431+-0.1665    ?    54.4516+-0.1735       ? might be 1.0038x slower</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525035</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-12-20 18:29:37 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/103384</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120127</attachid>
            <date>2011-12-20 17:53:39 -0800</date>
            <delta_ts>2011-12-20 18:01:53 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>separgprof_patch_1.diff</filename>
            <type>text/plain</type>
            <size>14022</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTAzMzgwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBA
CisyMDExLTEyLTIwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
VmFsdWUgUHJvZmlsZXMgZm9yIGFyZ3VtZW50cyBzaG91bGQgYmUgbW9yZSBlYXNpbHkgYWNjZXNz
aWJsZSB0byB0aGUgaW50ZXJwcmV0ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTc0OTg0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDYxMTM2ND4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGJ5dGVj
b2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6c3Ryb25nbHlWaXNp
dFN0cm9uZ1JlZmVyZW5jZXMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNob3VsZE9wdGlt
aXplTm93KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wVmFsdWVQcm9maWxlcyk6Cisg
ICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
c2V0QXJndW1lbnRWYWx1ZVByb2ZpbGVTaXplKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpu
dW1iZXJPZkFyZ3VtZW50VmFsdWVQcm9maWxlcyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
dmFsdWVQcm9maWxlRm9yQXJndW1lbnQpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZFZh
bHVlUHJvZmlsZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dmFsdWVQcm9maWxlKToKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjp2YWx1ZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldCk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6dG90YWxOdW1iZXJPZlZhbHVlUHJvZmlsZXMpOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OmdldEZyb21BbGxWYWx1ZVByb2ZpbGVzKToKKyAgICAgICAg
KiBieXRlY29kZS9WYWx1ZVByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9maWxlOjpW
YWx1ZVByb2ZpbGUpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6
OnByaXZhdGVDb21waWxlKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJ
VElubGluZU1ldGhvZHMuaDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0VmFsdWVQcm9maWxpbmdT
aXRlKToKKwogMjAxMS0xMi0yMCAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBs
ZS5jb20+CiAKICAgICAgICAgSlNDIHNoZWxsIHNob3VsZCBhY2NlcHQgdXRmOCBpbnB1dC4KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZp
c2lvbiAxMDMzNzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgzNSw2ICsxODM1LDggQEAgdm9pZCBDb2RlQmxvY2s6
OnN0cm9uZ2x5VmlzaXRTdHJvbmdSZWZlcgogI2VuZGlmCiAKICNpZiBFTkFCTEUoVkFMVUVfUFJP
RklMRVIpCisgICAgZm9yICh1bnNpZ25lZCBwcm9maWxlSW5kZXggPSAwOyBwcm9maWxlSW5kZXgg
PCBudW1iZXJPZkFyZ3VtZW50VmFsdWVQcm9maWxlcygpOyArK3Byb2ZpbGVJbmRleCkKKyAgICAg
ICAgdmFsdWVQcm9maWxlRm9yQXJndW1lbnQocHJvZmlsZUluZGV4KS0+Y29tcHV0ZVVwZGF0ZWRQ
cmVkaWN0aW9uKCk7CiAgICAgZm9yICh1bnNpZ25lZCBwcm9maWxlSW5kZXggPSAwOyBwcm9maWxl
SW5kZXggPCBudW1iZXJPZlZhbHVlUHJvZmlsZXMoKTsgKytwcm9maWxlSW5kZXgpCiAgICAgICAg
IHZhbHVlUHJvZmlsZShwcm9maWxlSW5kZXgpLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKTsK
ICNlbmRpZgpAQCAtMjIwNiwxMSArMjIwOCwxMCBAQCBib29sIENvZGVCbG9jazo6c2hvdWxkT3B0
aW1pemVOb3coKQogICAgIGlmIChtX29wdGltaXphdGlvbkRlbGF5Q291bnRlciA+PSBPcHRpb25z
OjptYXhpbXVtT3B0aW1pemF0aW9uRGVsYXkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAot
ICAgIHVuc2lnbmVkIG51bWJlck9mTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzID0gMDsKICAgICB1
bnNpZ25lZCBudW1iZXJPZkxpdmVOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMgPSAwOwogICAgIHVu
c2lnbmVkIG51bWJlck9mU2FtcGxlc0luUHJvZmlsZXMgPSAwOyAvLyBJZiB0aGlzIGRpdmlkZWQg
YnkgVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1Y2tldHMgZXF1YWxzIG51bWJlck9mVmFsdWVQcm9m
aWxlcygpIHRoZW4gdmFsdWUgcHJvZmlsZXMgYXJlIGZ1bGwuCi0gICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG51bWJlck9mVmFsdWVQcm9maWxlcygpOyArK2kpIHsKLSAgICAgICAgVmFsdWVQ
cm9maWxlKiBwcm9maWxlID0gdmFsdWVQcm9maWxlKGkpOworICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCB0b3RhbE51bWJlck9mVmFsdWVQcm9maWxlcygpOyArK2kpIHsKKyAgICAgICAgVmFs
dWVQcm9maWxlKiBwcm9maWxlID0gZ2V0RnJvbUFsbFZhbHVlUHJvZmlsZXMoaSk7CiAgICAgICAg
IHVuc2lnbmVkIG51bVNhbXBsZXMgPSBwcm9maWxlLT50b3RhbE51bWJlck9mU2FtcGxlcygpOwog
ICAgICAgICBpZiAobnVtU2FtcGxlcyA+IFZhbHVlUHJvZmlsZTo6bnVtYmVyT2ZCdWNrZXRzKQog
ICAgICAgICAgICAgbnVtU2FtcGxlcyA9IFZhbHVlUHJvZmlsZTo6bnVtYmVyT2ZCdWNrZXRzOyAv
LyBXZSBkb24ndCB3YW50IHByb2ZpbGVzIHRoYXQgYXJlIGV4dHJlbWVseSBob3QgdG8gYmUgZ2l2
ZW4gbW9yZSB3ZWlnaHQuCkBAIC0yMjE5LDE4ICsyMjIwLDE3IEBAIGJvb2wgQ29kZUJsb2NrOjpz
aG91bGRPcHRpbWl6ZU5vdygpCiAgICAgICAgICAgICBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFBy
ZWRpY3Rpb24oKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICAgIG51
bWJlck9mTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzKys7CiAgICAgICAgIGlmIChwcm9maWxlLT5u
dW1iZXJPZlNhbXBsZXMoKSB8fCBwcm9maWxlLT5tX3ByZWRpY3Rpb24gIT0gUHJlZGljdE5vbmUp
CiAgICAgICAgICAgICBudW1iZXJPZkxpdmVOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMrKzsKICAg
ICAgICAgcHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCk7CiAgICAgfQogCiAjaWYg
RU5BQkxFKEpJVF9WRVJCT1NFX09TUikKLSAgICBwcmludGYoIlByb2ZpbGUgaG90bmVzczogJWxm
LCAlbGZcbiIsIChkb3VibGUpbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzIC8g
bnVtYmVyT2ZOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMsIChkb3VibGUpbnVtYmVyT2ZTYW1wbGVz
SW5Qcm9maWxlcyAvIFZhbHVlUHJvZmlsZTo6bnVtYmVyT2ZCdWNrZXRzIC8gbnVtYmVyT2ZWYWx1
ZVByb2ZpbGVzKCkpOworICAgIHByaW50ZigiUHJvZmlsZSBob3RuZXNzOiAlbGYsICVsZlxuIiwg
KGRvdWJsZSludW1iZXJPZkxpdmVOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMgLyBudW1iZXJPZlZh
bHVlUHJvZmlsZXMoKSwgKGRvdWJsZSludW1iZXJPZlNhbXBsZXNJblByb2ZpbGVzIC8gVmFsdWVQ
cm9maWxlOjpudW1iZXJPZkJ1Y2tldHMgLyBudW1iZXJPZlZhbHVlUHJvZmlsZXMoKSk7CiAjZW5k
aWYKIAotICAgIGlmICgoIW51bWJlck9mTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzIHx8IChkb3Vi
bGUpbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzIC8gbnVtYmVyT2ZOb25Bcmd1
bWVudFZhbHVlUHJvZmlsZXMgPj0gT3B0aW9uczo6ZGVzaXJlZFByb2ZpbGVMaXZlbmVzc1JhdGUp
Ci0gICAgICAgICYmICghbnVtYmVyT2ZWYWx1ZVByb2ZpbGVzKCkgfHwgKGRvdWJsZSludW1iZXJP
ZlNhbXBsZXNJblByb2ZpbGVzIC8gVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1Y2tldHMgLyBudW1i
ZXJPZlZhbHVlUHJvZmlsZXMoKSA+PSBPcHRpb25zOjpkZXNpcmVkUHJvZmlsZUZ1bGxuZXNzUmF0
ZSkKKyAgICBpZiAoKCFudW1iZXJPZlZhbHVlUHJvZmlsZXMoKSB8fCAoZG91YmxlKW51bWJlck9m
TGl2ZU5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcyAvIG51bWJlck9mVmFsdWVQcm9maWxlcygpID49
IE9wdGlvbnM6OmRlc2lyZWRQcm9maWxlTGl2ZW5lc3NSYXRlKQorICAgICAgICAmJiAoIXRvdGFs
TnVtYmVyT2ZWYWx1ZVByb2ZpbGVzKCkgfHwgKGRvdWJsZSludW1iZXJPZlNhbXBsZXNJblByb2Zp
bGVzIC8gVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1Y2tldHMgLyB0b3RhbE51bWJlck9mVmFsdWVQ
cm9maWxlcygpID49IE9wdGlvbnM6OmRlc2lyZWRQcm9maWxlRnVsbG5lc3NSYXRlKQogICAgICAg
ICAmJiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9vcHRpbWl6YXRpb25EZWxheUNvdW50ZXIpICsg
MSA+PSBPcHRpb25zOjptaW5pbXVtT3B0aW1pemF0aW9uRGVsYXkpCiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIApAQCAtMjI2Nyw4ICsyMjY3LDggQEAgdm9pZCBDb2RlQmxvY2s6OnRhbGx5RnJl
cXVlbnRFeGl0U2l0ZXMoKQogdm9pZCBDb2RlQmxvY2s6OmR1bXBWYWx1ZVByb2ZpbGVzKCkKIHsK
ICAgICBmcHJpbnRmKHN0ZGVyciwgIlZhbHVlUHJvZmlsZSBmb3IgJXA6XG4iLCB0aGlzKTsKLSAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZWYWx1ZVByb2ZpbGVzKCk7ICsraSkg
ewotICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSB2YWx1ZVByb2ZpbGUoaSk7CisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRvdGFsTnVtYmVyT2ZWYWx1ZVByb2ZpbGVzKCk7ICsr
aSkgeworICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBnZXRGcm9tQWxsVmFsdWVQcm9m
aWxlcyhpKTsKICAgICAgICAgaWYgKHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPCAwKSB7CiAg
ICAgICAgICAgICBBU1NFUlQocHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA9PSAtMSk7CiAgICAg
ICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgIGFyZyA9ICV1OiAiLCBpKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9uIDEwMzM3NCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkod29ya2luZyBj
b3B5KQpAQCAtNjU3LDI4ICs2NTcsNTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZW5kaWYKICAgICAg
ICAgCiAjaWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQorICAgICAgICB2b2lkIHNldEFyZ3VtZW50
VmFsdWVQcm9maWxlU2l6ZSh1bnNpZ25lZCBzaXplKQorICAgICAgICB7CisgICAgICAgICAgICBt
X2FyZ3VtZW50VmFsdWVQcm9maWxlcy5yZXNpemUoc2l6ZSk7CisgICAgICAgIH0KKyAgICAgICAg
dW5zaWduZWQgbnVtYmVyT2ZBcmd1bWVudFZhbHVlUHJvZmlsZXMoKQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gbV9hcmd1bWVudFZhbHVlUHJvZmlsZXMuc2l6ZSgpOworICAgICAgICB9
CisgICAgICAgIFZhbHVlUHJvZmlsZSogdmFsdWVQcm9maWxlRm9yQXJndW1lbnQodW5zaWduZWQg
YXJndW1lbnRJbmRleCkKKyAgICAgICAgeworICAgICAgICAgICAgVmFsdWVQcm9maWxlKiByZXN1
bHQgPSAmbV9hcmd1bWVudFZhbHVlUHJvZmlsZXNbYXJndW1lbnRJbmRleF07CisgICAgICAgICAg
ICBBU1NFUlQocmVzdWx0LT5tX2J5dGVjb2RlT2Zmc2V0ID09IC0xKTsKKyAgICAgICAgICAgIHJl
dHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIFZhbHVlUHJvZmlsZSog
YWRkVmFsdWVQcm9maWxlKGludCBieXRlY29kZU9mZnNldCkKICAgICAgICAgeworICAgICAgICAg
ICAgQVNTRVJUKGJ5dGVjb2RlT2Zmc2V0ICE9IC0xKTsKICAgICAgICAgICAgIG1fdmFsdWVQcm9m
aWxlcy5hcHBlbmQoVmFsdWVQcm9maWxlKGJ5dGVjb2RlT2Zmc2V0KSk7CiAgICAgICAgICAgICBy
ZXR1cm4gJm1fdmFsdWVQcm9maWxlcy5sYXN0KCk7CiAgICAgICAgIH0KICAgICAgICAgdW5zaWdu
ZWQgbnVtYmVyT2ZWYWx1ZVByb2ZpbGVzKCkgeyByZXR1cm4gbV92YWx1ZVByb2ZpbGVzLnNpemUo
KTsgfQotICAgICAgICBWYWx1ZVByb2ZpbGUqIHZhbHVlUHJvZmlsZShpbnQgaW5kZXgpIHsgcmV0
dXJuICZtX3ZhbHVlUHJvZmlsZXNbaW5kZXhdOyB9Ci0gICAgICAgIFZhbHVlUHJvZmlsZSogdmFs
dWVQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoaW50IGJ5dGVjb2RlT2Zmc2V0KQorICAgICAgICBW
YWx1ZVByb2ZpbGUqIHZhbHVlUHJvZmlsZShpbnQgaW5kZXgpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiBXVEY6OmdlbmVyaWNCaW5hcnlTZWFyY2g8VmFsdWVQcm9maWxlLCBpbnQsIGdl
dFZhbHVlUHJvZmlsZUJ5dGVjb2RlT2Zmc2V0PihtX3ZhbHVlUHJvZmlsZXMsIG1fdmFsdWVQcm9m
aWxlcy5zaXplKCksIGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICAgICAgICAgIFZhbHVlUHJvZmlsZSog
cmVzdWx0ID0gJm1fdmFsdWVQcm9maWxlc1tpbmRleF07CisgICAgICAgICAgICBBU1NFUlQocmVz
dWx0LT5tX2J5dGVjb2RlT2Zmc2V0ICE9IC0xKTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgICAgIH0KLSAgICAgICAgVmFsdWVQcm9maWxlKiB2YWx1ZVByb2ZpbGVGb3JBcmd1bWVu
dChpbnQgYXJndW1lbnQpCisgICAgICAgIFZhbHVlUHJvZmlsZSogdmFsdWVQcm9maWxlRm9yQnl0
ZWNvZGVPZmZzZXQoaW50IGJ5dGVjb2RlT2Zmc2V0KQogICAgICAgICB7Ci0gICAgICAgICAgICBz
aXplX3QgaW5kZXggPSBhcmd1bWVudDsKLSAgICAgICAgICAgIGlmIChpbmRleCA+PSBtX3ZhbHVl
UHJvZmlsZXMuc2l6ZSgpKQotICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAg
VmFsdWVQcm9maWxlKiByZXN1bHQgPSB2YWx1ZVByb2ZpbGUoaW5kZXgpOwotICAgICAgICAgICAg
aWYgKHJlc3VsdC0+bV9ieXRlY29kZU9mZnNldCAhPSAtMSkKLSAgICAgICAgICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgICAgIFZhbHVlUHJvZmlsZSogcmVzdWx0ID0gV1RGOjpnZW5lcmljQmlu
YXJ5U2VhcmNoPFZhbHVlUHJvZmlsZSwgaW50LCBnZXRWYWx1ZVByb2ZpbGVCeXRlY29kZU9mZnNl
dD4obV92YWx1ZVByb2ZpbGVzLCBtX3ZhbHVlUHJvZmlsZXMuc2l6ZSgpLCBieXRlY29kZU9mZnNl
dCk7CisgICAgICAgICAgICBBU1NFUlQocmVzdWx0LT5tX2J5dGVjb2RlT2Zmc2V0ICE9IC0xKTsK
ICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KICAgICAgICAgCisgICAgICAg
IHVuc2lnbmVkIHRvdGFsTnVtYmVyT2ZWYWx1ZVByb2ZpbGVzKCkKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIG51bWJlck9mQXJndW1lbnRWYWx1ZVByb2ZpbGVzKCkgKyBudW1iZXJPZlZh
bHVlUHJvZmlsZXMoKTsKKyAgICAgICAgfQorICAgICAgICBWYWx1ZVByb2ZpbGUqIGdldEZyb21B
bGxWYWx1ZVByb2ZpbGVzKHVuc2lnbmVkIGluZGV4KQorICAgICAgICB7CisgICAgICAgICAgICBp
ZiAoaW5kZXggPCBudW1iZXJPZkFyZ3VtZW50VmFsdWVQcm9maWxlcygpKQorICAgICAgICAgICAg
ICAgIHJldHVybiB2YWx1ZVByb2ZpbGVGb3JBcmd1bWVudChpbmRleCk7CisgICAgICAgICAgICBy
ZXR1cm4gdmFsdWVQcm9maWxlKGluZGV4IC0gbnVtYmVyT2ZBcmd1bWVudFZhbHVlUHJvZmlsZXMo
KSk7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIFJhcmVDYXNlUHJvZmlsZSogYWRkUmFy
ZUNhc2VQcm9maWxlKGludCBieXRlY29kZU9mZnNldCkKICAgICAgICAgewogICAgICAgICAgICAg
bV9yYXJlQ2FzZVByb2ZpbGVzLmFwcGVuZChSYXJlQ2FzZVByb2ZpbGUoYnl0ZWNvZGVPZmZzZXQp
KTsKQEAgLTEyNTEsNiArMTI3NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBERkc6OkV4
aXRQcm9maWxlIG1fZXhpdFByb2ZpbGU7CiAjZW5kaWYKICNpZiBFTkFCTEUoVkFMVUVfUFJPRklM
RVIpCisgICAgICAgIFZlY3RvcjxWYWx1ZVByb2ZpbGU+IG1fYXJndW1lbnRWYWx1ZVByb2ZpbGVz
OwogICAgICAgICBTZWdtZW50ZWRWZWN0b3I8VmFsdWVQcm9maWxlLCA4PiBtX3ZhbHVlUHJvZmls
ZXM7CiAgICAgICAgIFNlZ21lbnRlZFZlY3RvcjxSYXJlQ2FzZVByb2ZpbGUsIDg+IG1fcmFyZUNh
c2VQcm9maWxlczsKICAgICAgICAgU2VnbWVudGVkVmVjdG9yPFJhcmVDYXNlUHJvZmlsZSwgOD4g
bV9zcGVjaWFsRmFzdENhc2VQcm9maWxlczsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9WYWx1ZVByb2ZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgJKHJldmlzaW9uIDEwMzM3NCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAt
NDQsNiArNDQsMTUgQEAgc3RydWN0IFZhbHVlUHJvZmlsZSB7CiAgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIGJ1Y2tldEluZGV4TWFzayA9IG51bWJlck9mQnVja2V0cyAtIDE7CiAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIHRvdGFsTnVtYmVyT2ZCdWNrZXRzID0gbnVtYmVyT2ZCdWNrZXRzICsg
bnVtYmVyT2ZTcGVjRmFpbEJ1Y2tldHM7CiAgICAgCisgICAgVmFsdWVQcm9maWxlKCkKKyAgICAg
ICAgOiBtX2J5dGVjb2RlT2Zmc2V0KC0xKQorICAgICAgICAsIG1fcHJlZGljdGlvbihQcmVkaWN0
Tm9uZSkKKyAgICAgICAgLCBtX251bWJlck9mU2FtcGxlc0luUHJlZGljdGlvbigwKQorICAgIHsK
KyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRvdGFsTnVtYmVyT2ZCdWNrZXRzOyAr
K2kpCisgICAgICAgICAgICBtX2J1Y2tldHNbaV0gPSBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgp
KTsKKyAgICB9CisgICAgCiAgICAgVmFsdWVQcm9maWxlKGludCBieXRlY29kZU9mZnNldCkKICAg
ICAgICAgOiBtX2J5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KQogICAgICAgICAsIG1fcHJl
ZGljdGlvbihQcmVkaWN0Tm9uZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJl
dmlzaW9uIDEwMzM3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTU3LDIxICs1NTcsMjAgQEAgSklUQ29kZSBKSVQ6OnByaXZhdGVDb21w
aWxlKENvZGVQdHIqIGZ1bgogI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKICAgICAgICAgQVNT
RVJUKG1fYnl0ZWNvZGVPZmZzZXQgPT0gKHVuc2lnbmVkKS0xKTsKICAgICAgICAgaWYgKHNob3Vs
ZEVtaXRQcm9maWxpbmcoKSkgeworICAgICAgICAgICAgbV9jb2RlQmxvY2stPnNldEFyZ3VtZW50
VmFsdWVQcm9maWxlU2l6ZShtX2NvZGVCbG9jay0+bV9udW1QYXJhbWV0ZXJzKTsKICAgICAgICAg
ICAgIGZvciAoaW50IGFyZ3VtZW50ID0gMDsgYXJndW1lbnQgPCBtX2NvZGVCbG9jay0+bV9udW1Q
YXJhbWV0ZXJzOyArK2FyZ3VtZW50KSB7CiAgICAgICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyBh
IGNvbnN0cnVjdG9yLCB0aGVuIHdlIHdhbnQgdG8gcHV0IGluIGEgZHVtbXkgcHJvZmlsaW5nIHNp
dGUgKHRvCiAgICAgICAgICAgICAgICAgLy8ga2VlcCB0aGluZ3MgY29uc2lzdGVudCkgYnV0IHdl
IGRvbid0IGFjdHVhbGx5IHdhbnQgdG8gcmVjb3JkIHRoZSBkdW1teSB2YWx1ZS4KICAgICAgICAg
ICAgICAgICBpZiAobV9jb2RlQmxvY2stPm1faXNDb25zdHJ1Y3RvciAmJiAhYXJndW1lbnQpCi0g
ICAgICAgICAgICAgICAgICAgIG1fY29kZUJsb2NrLT5hZGRWYWx1ZVByb2ZpbGUoLTEpOwotICAg
ICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gQ2Fs
bEZyYW1lOjphcmd1bWVudE9mZnNldEluY2x1ZGluZ1RoaXMoYXJndW1lbnQpICogc3RhdGljX2Nh
c3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKTsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgICAgICAgICAgaW50IG9mZnNldCA9IENhbGxGcmFtZTo6YXJndW1lbnRPZmZzZXRJ
bmNsdWRpbmdUaGlzKGFyZ3VtZW50KSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVy
KSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgICAgICAgICAgICAgbG9hZFB0cihBZGRy
ZXNzKGNhbGxGcmFtZVJlZ2lzdGVyLCBvZmZzZXQpLCByZWdUMCk7CisgICAgICAgICAgICAgICAg
bG9hZFB0cihBZGRyZXNzKGNhbGxGcmFtZVJlZ2lzdGVyLCBvZmZzZXQpLCByZWdUMCk7CiAjZWxp
ZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgICAgICAgICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhj
YWxsRnJhbWVSZWdpc3Rlciwgb2Zmc2V0ICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNC
aXRzLnBheWxvYWQpKSwgcmVnVDApOwotICAgICAgICAgICAgICAgICAgICBsb2FkMzIoQWRkcmVz
cyhjYWxsRnJhbWVSZWdpc3Rlciwgb2Zmc2V0ICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUu
YXNCaXRzLnRhZykpLCByZWdUMSk7CisgICAgICAgICAgICAgICAgbG9hZDMyKEFkZHJlc3MoY2Fs
bEZyYW1lUmVnaXN0ZXIsIG9mZnNldCArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0
cy5wYXlsb2FkKSksIHJlZ1QwKTsKKyAgICAgICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhjYWxs
RnJhbWVSZWdpc3Rlciwgb2Zmc2V0ICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRz
LnRhZykpLCByZWdUMSk7CiAjZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgZW1pdFZhbHVlUHJv
ZmlsaW5nU2l0ZShGaXJzdFByb2ZpbGluZ1NpdGUpOwotICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKG1fY29kZUJsb2NrLT52YWx1ZVByb2Zp
bGVGb3JBcmd1bWVudChhcmd1bWVudCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAjZW5k
aWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkocmV2aXNpb24gMTAzMzc0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMzM3LDYgKzMz
Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKICAgICAg
ICAgLy8gVGhpcyBhc3N1bWVzIHRoYXQgdGhlIHZhbHVlIHRvIHByb2ZpbGUgaXMgaW4gcmVnVDAg
YW5kIHRoYXQgcmVnVDMgaXMgYXZhaWxhYmxlIGZvcgogICAgICAgICAvLyBzY3JhdGNoLgorICAg
ICAgICB2b2lkIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoVmFsdWVQcm9maWxlKik7CiAgICAgICAg
IHZvaWQgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShWYWx1ZVByb2ZpbGluZ1NpdGVLaW5kKTsKICNl
bHNlCiAgICAgICAgIHZvaWQgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShWYWx1ZVByb2ZpbGluZ1Np
dGVLaW5kKSB7IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lTWV0
aG9kcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5l
TWV0aG9kcy5oCShyZXZpc2lvbiAxMDMzNzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVElubGluZU1ldGhvZHMuaAkod29ya2luZyBjb3B5KQpAQCAtNDQ4LDI3ICs0NDgsMTcgQEAg
aW5saW5lIHZvaWQgSklUOjplbWl0QWxsb2NhdGVKU0Z1bmN0aW9uKAogfQogCiAjaWYgRU5BQkxF
KFZBTFVFX1BST0ZJTEVSKQotaW5saW5lIHZvaWQgSklUOjplbWl0VmFsdWVQcm9maWxpbmdTaXRl
KFZhbHVlUHJvZmlsaW5nU2l0ZUtpbmQgc2l0ZUtpbmQpCitpbmxpbmUgdm9pZCBKSVQ6OmVtaXRW
YWx1ZVByb2ZpbGluZ1NpdGUoVmFsdWVQcm9maWxlKiB2YWx1ZVByb2ZpbGUpCiB7Ci0gICAgaWYg
KCFzaG91bGRFbWl0UHJvZmlsaW5nKCkpCi0gICAgICAgIHJldHVybjsKLSAgICAKKyAgICBBU1NF
UlQoc2hvdWxkRW1pdFByb2ZpbGluZygpKTsKKyAgICBBU1NFUlQodmFsdWVQcm9maWxlKTsKKwog
ICAgIGNvbnN0IFJlZ2lzdGVySUQgdmFsdWUgPSByZWdUMDsKICNpZiBVU0UoSlNWQUxVRTMyXzY0
KQogICAgIGNvbnN0IFJlZ2lzdGVySUQgdmFsdWVUYWcgPSByZWdUMTsKICNlbmRpZgogICAgIGNv
bnN0IFJlZ2lzdGVySUQgc2NyYXRjaCA9IHJlZ1QzOwogICAgIAotICAgIFZhbHVlUHJvZmlsZSog
dmFsdWVQcm9maWxlOwotICAgIGlmIChzaXRlS2luZCA9PSBGaXJzdFByb2ZpbGluZ1NpdGUpCi0g
ICAgICAgIHZhbHVlUHJvZmlsZSA9IG1fY29kZUJsb2NrLT5hZGRWYWx1ZVByb2ZpbGUobV9ieXRl
Y29kZU9mZnNldCk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIEFTU0VSVChzaXRlS2luZCA9PSBTdWJz
ZXF1ZW50UHJvZmlsaW5nU2l0ZSk7Ci0gICAgICAgIHZhbHVlUHJvZmlsZSA9IG1fY29kZUJsb2Nr
LT52YWx1ZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChtX2J5dGVjb2RlT2Zmc2V0KTsKLSAgICB9
Ci0gICAgCi0gICAgQVNTRVJUKHZhbHVlUHJvZmlsZSk7Ci0gICAgCiAgICAgaWYgKFZhbHVlUHJv
ZmlsZTo6bnVtYmVyT2ZCdWNrZXRzID09IDEpIHsKICAgICAgICAgLy8gV2UncmUgaW4gYSBzaW1w
bGUgY29uZmlndXJhdGlvbjogb25seSBvbmUgYnVja2V0LCBzbyB3ZSBjYW4ganVzdCBkbyBhIGRp
cmVjdAogICAgICAgICAvLyBzdG9yZS4KQEAgLTQ5NSw2ICs0ODUsMjIgQEAgaW5saW5lIHZvaWQg
SklUOjplbWl0VmFsdWVQcm9maWxpbmdTaXRlKAogICAgIHN0b3JlMzIodmFsdWVUYWcsIEJhc2VJ
bmRleChzY3JhdGNoLCBidWNrZXRDb3VudGVyUmVnaXN0ZXIsIFRpbWVzRWlnaHQsIE9CSkVDVF9P
RkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy50YWcpKSk7CiAjZW5kaWYKIH0KKworaW5saW5lIHZv
aWQgSklUOjplbWl0VmFsdWVQcm9maWxpbmdTaXRlKFZhbHVlUHJvZmlsaW5nU2l0ZUtpbmQgc2l0
ZUtpbmQpCit7CisgICAgaWYgKCFzaG91bGRFbWl0UHJvZmlsaW5nKCkpCisgICAgICAgIHJldHVy
bjsKKyAgICAKKyAgICBWYWx1ZVByb2ZpbGUqIHZhbHVlUHJvZmlsZTsKKyAgICBpZiAoc2l0ZUtp
bmQgPT0gRmlyc3RQcm9maWxpbmdTaXRlKQorICAgICAgICB2YWx1ZVByb2ZpbGUgPSBtX2NvZGVC
bG9jay0+YWRkVmFsdWVQcm9maWxlKG1fYnl0ZWNvZGVPZmZzZXQpOworICAgIGVsc2UgeworICAg
ICAgICBBU1NFUlQoc2l0ZUtpbmQgPT0gU3Vic2VxdWVudFByb2ZpbGluZ1NpdGUpOworICAgICAg
ICB2YWx1ZVByb2ZpbGUgPSBtX2NvZGVCbG9jay0+dmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVPZmZz
ZXQobV9ieXRlY29kZU9mZnNldCk7CisgICAgfQorICAgIAorICAgIGVtaXRWYWx1ZVByb2ZpbGlu
Z1NpdGUodmFsdWVQcm9maWxlKTsKK30KICNlbmRpZgogCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkK
</data>
<flag name="review"
          id="120306"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
      

    </bug>

</bugzilla>