<?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>70578</bug_id>
          
          <creation_ts>2011-10-20 20:58:46 -0700</creation_ts>
          <short_desc>DFG should not try to predict argument types by looking at the values of argument registers at the time of compilation</short_desc>
          <delta_ts>2011-10-21 01:21:16 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>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>69996</blocked>
          <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>488124</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-10-20 20:58:46 -0700</bug_when>
    <thetext>DFG is invoked from loops or when a function returns.  By that point, the registers holding arguments may hold a different value than what the arguments would have held at the prologue.  Hence it is unprofitable to try to augment argument predictions by looking at argument registers at time of compilation.

This is also an opportunity to kill some code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488127</commentid>
    <comment_count>1</comment_count>
      <attachid>111892</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-10-20 21:00:45 -0700</bug_when>
    <thetext>Created attachment 111892
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488128</commentid>
    <comment_count>2</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-10-20 21:02:15 -0700</bug_when>
    <thetext>This blocks https://bugs.webkit.org/show_bug.cgi?id=69996 in the sense that inlining reveals some bugs in trying to read argument registers during return.  I don&apos;t want to fix those bugs, since this code is pointless anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488129</commentid>
    <comment_count>3</comment_count>
      <attachid>111892</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-10-20 21:04:13 -0700</bug_when>
    <thetext>Comment on attachment 111892
the patch

Any perf impact?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488132</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-10-20 21:09:51 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 111892 [details])
&gt; Any perf impact?

None whatsover. :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488139</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-10-20 21:16:33 -0700</bug_when>
    <thetext>Benchmark report for SunSpider, V8, and Kraken.

VMs tested:
&quot;TipOfTree&quot; at /Volumes/Data/pizlo/quinary/OpenSource/WebKitBuild/Release/jsc
&quot;NoCompTimeArgs&quot; at /Volumes/Data/pizlo/senary/OpenSource/WebKitBuild/Release/jsc

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             NoCompTimeArgs                                 
SunSpider:
   3d-cube                                7.3723+-0.1421          7.3718+-0.1683       
   3d-morph                               7.5918+-0.1756    ?     7.6909+-0.1443       ? might be 1.0130x slower
   3d-raytrace                            7.4912+-0.1396    ?     7.5606+-0.1668       ?
   access-binary-trees                    1.6921+-0.0328    ?     1.7380+-0.0622       ? might be 1.0271x slower
   access-fannkuch                        6.5964+-0.1435          6.4074+-0.1125         might be 1.0295x faster
   access-nbody                           3.3254+-0.0996    ?     3.3516+-0.0844       ?
   access-nsieve                          2.5642+-0.0691          2.5588+-0.0626       
   bitops-3bit-bits-in-byte               1.7538+-0.0365    ?     1.7549+-0.0348       ?
   bitops-bits-in-byte                    2.7935+-0.0715          2.7635+-0.0485         might be 1.0109x faster
   bitops-bitwise-and                     3.4800+-0.0846          3.4311+-0.1203         might be 1.0143x faster
   bitops-nsieve-bits                     5.4330+-0.1049    ?     5.6038+-0.1305       ? might be 1.0314x slower
   controlflow-recursive                  2.1088+-0.0302          2.0993+-0.0372       
   crypto-aes                             6.7030+-0.1589    ?     6.7458+-0.1328       ?
   crypto-md5                             2.8391+-0.0752          2.8132+-0.0666       
   crypto-sha1                            2.5540+-0.0592          2.4981+-0.0651         might be 1.0224x faster
   date-format-tofte                      9.9222+-0.1246    ?    10.2834+-0.6119       ? might be 1.0364x slower
   date-format-xparb                      8.8578+-0.1634    ?     8.9056+-0.1820       ?
   math-cordic                            6.3843+-0.1158    ?     6.4119+-0.0593       ?
   math-partial-sums                      7.6487+-0.1453    ?     7.6995+-0.1202       ?
   math-spectral-norm                     2.9134+-0.0943          2.8859+-0.0645       
   regexp-dna                            11.4696+-0.1283    ?    11.6820+-0.2139       ? might be 1.0185x slower
   string-base64                          4.4170+-0.0872          4.3391+-0.0614         might be 1.0180x faster
   string-fasta                           6.4018+-0.1135          6.3781+-0.1241       
   string-tagcloud                       11.4927+-0.2361    ?    11.5964+-0.2181       ?
   string-unpack-code                    20.5333+-0.3631         20.1617+-0.1621         might be 1.0184x faster
   string-validate-input                  5.2815+-0.0860          5.2707+-0.0874       

   &lt;arithmetic&gt; *                         6.1393+-0.0354    ?     6.1540+-0.0280       ?
   &lt;geometric&gt;                            5.0460+-0.0270    ?     5.0513+-0.0221       ?
   &lt;harmonic&gt;                             4.1623+-0.0263          4.1611+-0.0291       

                                            TipOfTree             NoCompTimeArgs                                 
V8:
   crypto                                72.9880+-0.3284    ?    73.0395+-0.3671       ?
   deltablue                            223.6140+-1.4193    ?   225.3372+-1.1424       ?
   earley-boyer                          91.8322+-1.7376    ?    92.5651+-1.9726       ?
   raytrace                              58.4976+-0.9168    ?    58.7943+-0.7432       ?
   regexp                               106.2676+-0.3634    ?   107.4226+-0.9603       ? might be 1.0109x slower
   richards                             182.5372+-0.5436    !   184.3530+-0.2627       ! definitely 1.0099x slower
   splay                                 97.2508+-0.6331         96.4778+-0.4111       

   &lt;arithmetic&gt;                         118.9982+-0.4084    ?   119.7128+-0.3716       ?
   &lt;geometric&gt; *                        107.4427+-0.4634    ?   107.9671+-0.4743       ?
   &lt;harmonic&gt;                            98.1164+-0.5333    ?    98.5162+-0.5509       ?

                                            TipOfTree             NoCompTimeArgs                                 
Kraken:
   ai-astar                             502.6183+-3.6015    ?   506.2388+-4.7345       ?
   audio-beat-detection                 192.8065+-0.8792    ?   193.9236+-1.3722       ?
   audio-dft                            272.8947+-1.8728        272.4993+-3.5137       
   audio-fft                            125.4737+-0.6517    ?   126.1636+-1.0248       ?
   audio-oscillator                     255.4600+-1.6487        255.3413+-1.9681       
   imaging-darkroom                     422.4700+-0.4584    ^   419.7746+-1.4165       ^ definitely 1.0064x faster
   imaging-desaturate                   221.6168+-0.4444        221.3184+-0.8106       
   imaging-gaussian-blur                562.8225+-0.9280    ?   563.5646+-1.4490       ?
   json-parse-financial                  57.5406+-0.4912         57.4979+-0.2811       
   json-stringify-tinderbox              68.5846+-0.3008    ?    68.7109+-0.3577       ?
   stanford-crypto-aes                  133.2974+-2.0460    ?   134.2106+-1.9429       ?
   stanford-crypto-ccm                  102.7151+-0.7707        101.8204+-0.5318       
   stanford-crypto-pbkdf2               195.1052+-1.2864    !   198.6756+-2.0544       ! definitely 1.0183x slower
   stanford-crypto-sha256-iterative      71.6124+-0.2288    ?    71.8927+-0.6898       ?

   &lt;arithmetic&gt; *                       227.5013+-0.4851    ?   227.9737+-0.7908       ?
   &lt;geometric&gt;                          178.6384+-0.4575    ?   179.0348+-0.5937       ?
   &lt;harmonic&gt;                           140.4540+-0.4462    ?   140.7147+-0.4567       ?

                                            TipOfTree             NoCompTimeArgs                                 
All benchmarks:
   &lt;arithmetic&gt;                          88.8857+-0.1819    ?    89.1410+-0.2656       ?
   &lt;geometric&gt;                           23.0240+-0.0935    ?    23.0693+-0.0827       ?
   &lt;harmonic&gt;                             7.3236+-0.0456          7.3221+-0.0503       

                                            TipOfTree             NoCompTimeArgs                                 
Geomean of preferred means:
   &lt;scaled-result&gt;                       53.1401+-0.1801    ?    53.3057+-0.1747       ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488252</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-10-21 01:21:16 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/98082</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111892</attachid>
            <date>2011-10-20 21:00:45 -0700</date>
            <delta_ts>2011-10-20 21:04:12 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>killcode_patch_1.diff</filename>
            <type>text/plain</type>
            <size>16046</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTgwNjIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzIgQEAK
KzIwMTEtMTAtMjAgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBE
Rkcgc2hvdWxkIG5vdCB0cnkgdG8gcHJlZGljdCBhcmd1bWVudCB0eXBlcyBieSBsb29raW5nIGF0
IHRoZSB2YWx1ZXMgb2YKKyAgICAgICAgYXJndW1lbnQgcmVnaXN0ZXJzIGF0IHRoZSB0aW1lIG9m
IGNvbXBpbGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03MDU3OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKiBkZmcvREZHRHJpdmVyLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpjb21waWxlKToKKyAgICAgICAgKEpTQzo6REZHOjp0cnlD
b21waWxlKToKKyAgICAgICAgKEpTQzo6REZHOjp0cnlDb21waWxlRnVuY3Rpb24pOgorICAgICAg
ICAqIGRmZy9ERkdEcml2ZXIuaDoKKyAgICAgICAgKEpTQzo6REZHOjp0cnlDb21waWxlRnVuY3Rp
b24pOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6R3Jh
cGg6OnByZWRpY3RBcmd1bWVudFR5cGVzKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguaDoKKyAg
ICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4
ZWN1dGFibGU6OmNvbXBpbGVPcHRpbWl6ZWRGb3JDYWxsKToKKyAgICAgICAgKEpTQzo6RnVuY3Rp
b25FeGVjdXRhYmxlOjpjb21waWxlT3B0aW1pemVkRm9yQ29uc3RydWN0KToKKyAgICAgICAgKEpT
Qzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9yQ2FsbEludGVybmFsKToKKyAgICAgICAg
KEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9yQ29uc3RydWN0SW50ZXJuYWwpOgor
ICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5oOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4
ZWN1dGFibGU6OmNvbXBpbGVGb3JDYWxsKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRh
YmxlOjpjb21waWxlRm9yQ29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRh
YmxlOjpjb21waWxlRm9yKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpjb21w
aWxlT3B0aW1pemVkRm9yKToKKwogMjAxMS0xMC0yMCAgVmluY2VudCBTY2hlaWIgIDxzY2hlaWJA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIE1vdXNlTG9jayBjb21waWxlIGFuZCBydW4gdGltZSBm
bGFncy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
Y3BwCShyZXZpc2lvbiA5Nzk0MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODI0LDE2ICsxODI0LDYgQEAgdm9pZCBD
b2RlQmxvY2s6OmNvcHlEYXRhRnJvbUFsdGVybmF0aXZlKAogfQogCiAjaWYgRU5BQkxFKEpJVCkK
LS8vIEZJWE1FOiBJbXBsZW1lbnQgT1NSLiBJZiBjb21waWxlT3B0aW1pemVkKCkgaXMgY2FsbGVk
IGZyb20gc29tZXdoZXJlIG90aGVyIHRoYW4gdGhlCi0vLyBlcGlsb2d1ZSwgZG8gT1NSIGZyb20g
dGhlIG9sZCBjb2RlIGJsb2NrIHRvIHRoZSBuZXcgb25lLgotCi0vLyBGSVhNRTogQWZ0ZXIgZG9p
bmcgc3VjY2Vzc2Z1bCBvcHRpbWl6ZWQgY29tcGlsYXRpb24sIHJlc2V0IHRoZSBwcm9maWxpbmcg
Y291bnRlciB0byAtMSwgc28KLS8vIHRoYXQgdGhlIG5leHQgZXhlY3V0aW9uIG9mIHRoZSBvbGQg
Y29kZSBibG9jayB3aWxsIGp1bXAgc3RyYWlnaHQgaW50byBjb21waWxlT3B0aW1pemVkKCkKLS8v
IGFuZCBwZXJmb3JtIE9TUi4KLQotLy8gRklYTUU6IEVuc3VyZSB0aGF0IGEgY2FsbCB0byBjb21w
aWxlT3B0aW1pemVkKCkganVzdCBkb2VzIE9TUiAoYW5kIHJlc2V0cyB0aGUgY291bnRlciB0byAt
MSkKLS8vIGlmIHRoZSBjb2RlIGhhZCBhbHJlYWR5IGJlZW4gY29tcGlsZWQuCi0KIENvZGVCbG9j
ayogUHJvZ3JhbUNvZGVCbG9jazo6cmVwbGFjZW1lbnQoKQogewogICAgIHJldHVybiAmc3RhdGlj
X2Nhc3Q8UHJvZ3JhbUV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmdlbmVyYXRlZEJ5
dGVjb2RlKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCShy
ZXZpc2lvbiA5Nzk0MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQAogbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBERkcgewogCiBlbnVtIENvbXBpbGVNb2RlIHsgQ29tcGlsZUZ1bmN0aW9uLCBDb21waWxl
T3RoZXIgfTsKLWlubGluZSBib29sIGNvbXBpbGUoQ29tcGlsZU1vZGUgY29tcGlsZU1vZGUsIEV4
ZWNTdGF0ZSogZXhlYywgRXhlY1N0YXRlKiBjYWxsZWVBcmdzRXhlYywgQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIEpJVENvZGUmIGppdENvZGUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciogaml0Q29kZVdp
dGhBcml0eUNoZWNrKQoraW5saW5lIGJvb2wgY29tcGlsZShDb21waWxlTW9kZSBjb21waWxlTW9k
ZSwgRXhlY1N0YXRlKiBleGVjLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSklUQ29kZSYgaml0Q29k
ZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKiBqaXRDb2RlV2l0aEFyaXR5Q2hlY2spCiB7CiAgICAg
SlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKICAgICBHcmFw
aCBkZmc7CkBAIC00Myw3ICs0Myw3IEBAIGlubGluZSBib29sIGNvbXBpbGUoQ29tcGlsZU1vZGUg
Y29tcGlsZU0KICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIGlmIChjb21waWxlTW9k
ZSA9PSBDb21waWxlRnVuY3Rpb24pCi0gICAgICAgIGRmZy5wcmVkaWN0QXJndW1lbnRUeXBlcyhj
YWxsZWVBcmdzRXhlYywgY29kZUJsb2NrKTsKKyAgICAgICAgZGZnLnByZWRpY3RBcmd1bWVudFR5
cGVzKGNvZGVCbG9jayk7CiAgICAgCiAgICAgcHJvcGFnYXRlKGRmZywgZ2xvYmFsRGF0YSwgY29k
ZUJsb2NrKTsKICAgICAKQEAgLTY0LDEyICs2NCwxMiBAQCBpbmxpbmUgYm9vbCBjb21waWxlKENv
bXBpbGVNb2RlIGNvbXBpbGVNCiAKIGJvb2wgdHJ5Q29tcGlsZShFeGVjU3RhdGUqIGV4ZWMsIENv
ZGVCbG9jayogY29kZUJsb2NrLCBKSVRDb2RlJiBqaXRDb2RlKQogewotICAgIHJldHVybiBjb21w
aWxlKENvbXBpbGVPdGhlciwgZXhlYywgMCwgY29kZUJsb2NrLCBqaXRDb2RlLCAwKTsKKyAgICBy
ZXR1cm4gY29tcGlsZShDb21waWxlT3RoZXIsIGV4ZWMsIGNvZGVCbG9jaywgaml0Q29kZSwgMCk7
CiB9CiAKLWJvb2wgdHJ5Q29tcGlsZUZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgRXhlY1N0YXRl
KiBjYWxsZWVBcmdzRXhlYywgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpJVENvZGUmIGppdENvZGUs
IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYgaml0Q29kZVdpdGhBcml0eUNoZWNrKQorYm9vbCB0cnlD
b21waWxlRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSklU
Q29kZSYgaml0Q29kZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBqaXRDb2RlV2l0aEFyaXR5Q2hl
Y2spCiB7Ci0gICAgcmV0dXJuIGNvbXBpbGUoQ29tcGlsZUZ1bmN0aW9uLCBleGVjLCBjYWxsZWVB
cmdzRXhlYywgY29kZUJsb2NrLCBqaXRDb2RlLCAmaml0Q29kZVdpdGhBcml0eUNoZWNrKTsKKyAg
ICByZXR1cm4gY29tcGlsZShDb21waWxlRnVuY3Rpb24sIGV4ZWMsIGNvZGVCbG9jaywgaml0Q29k
ZSwgJmppdENvZGVXaXRoQXJpdHlDaGVjayk7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpE
RkcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuaAkocmV2aXNpb24gOTc5
NDIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zOSwxMCArMzksMTAgQEAgbmFtZXNwYWNlIERGRyB7CiAKICNpZiBFTkFCTEUoREZH
X0pJVCkKIGJvb2wgdHJ5Q29tcGlsZShFeGVjU3RhdGUqLCBDb2RlQmxvY2sqLCBKSVRDb2RlJik7
Ci1ib29sIHRyeUNvbXBpbGVGdW5jdGlvbihFeGVjU3RhdGUqLCBFeGVjU3RhdGUqIGNhbGxlZUFy
Z3NFeGVjLCBDb2RlQmxvY2sqLCBKSVRDb2RlJiwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBqaXRD
b2RlV2l0aEFyaXR5Q2hlY2spOworYm9vbCB0cnlDb21waWxlRnVuY3Rpb24oRXhlY1N0YXRlKiwg
Q29kZUJsb2NrKiwgSklUQ29kZSYsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYgaml0Q29kZVdpdGhB
cml0eUNoZWNrKTsKICNlbHNlCiBpbmxpbmUgYm9vbCB0cnlDb21waWxlKEV4ZWNTdGF0ZSosIENv
ZGVCbG9jayosIEpJVENvZGUmKSB7IHJldHVybiBmYWxzZTsgfQotaW5saW5lIGJvb2wgdHJ5Q29t
cGlsZUZ1bmN0aW9uKEV4ZWNTdGF0ZSosIEV4ZWNTdGF0ZSosIENvZGVCbG9jayosIEpJVENvZGUm
LCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImKSB7IHJldHVybiBmYWxzZTsgfQoraW5saW5lIGJvb2wg
dHJ5Q29tcGlsZUZ1bmN0aW9uKEV4ZWNTdGF0ZSosIENvZGVCbG9jayosIEpJVENvZGUmLCBNYWNy
b0Fzc2VtYmxlckNvZGVQdHImKSB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlmCiAKIH0gfSAvLyBu
YW1lc3BhY2UgSlNDOjpERkcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3Jh
cGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGgu
Y3BwCShyZXZpc2lvbiA5Nzk0MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3Jh
cGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODQsMTUgKzI4NCw4IEBAIHZvaWQgR3JhcGg6OnJl
ZkNoaWxkcmVuKE5vZGVJbmRleCBvcCkKICAgICB9CiB9CiAKLXZvaWQgR3JhcGg6OnByZWRpY3RB
cmd1bWVudFR5cGVzKEV4ZWNTdGF0ZSogZXhlYywgQ29kZUJsb2NrKiBjb2RlQmxvY2spCit2b2lk
IEdyYXBoOjpwcmVkaWN0QXJndW1lbnRUeXBlcyhDb2RlQmxvY2sqIGNvZGVCbG9jaykKIHsKLSAg
ICBpZiAoZXhlYykgewotICAgICAgICBzaXplX3QgbnVtYmVyT2ZBcmd1bWVudHMgPSBzdGQ6Om1p
bihleGVjLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpLCBtX2FyZ3VtZW50cy5zaXplKCkp
OwotICAgICAgICAKLSAgICAgICAgZm9yIChzaXplX3QgYXJnID0gMTsgYXJnIDwgbnVtYmVyT2ZB
cmd1bWVudHM7ICsrYXJnKQotICAgICAgICAgICAgYXQobV9hcmd1bWVudHNbYXJnXSkudmFyaWFi
bGVBY2Nlc3NEYXRhKCktPnByZWRpY3QocHJlZGljdGlvbkZyb21WYWx1ZShleGVjLT5hcmd1bWVu
dChhcmcgLSAxKSkpOwotICAgIH0KLSAgICAKICAgICBBU1NFUlQoY29kZUJsb2NrKTsKICAgICBB
U1NFUlQoY29kZUJsb2NrLT5hbHRlcm5hdGl2ZSgpKTsKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdHcmFwaC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHR3JhcGguaAkocmV2aXNpb24gOTc5NDIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0dyYXBoLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwMSw3ICsyMDEsNyBAQCBwdWJs
aWM6CiAgICAgY29uc3QgY2hhciogbmFtZU9mVmFyaWFibGVBY2Nlc3NEYXRhKFZhcmlhYmxlQWNj
ZXNzRGF0YSopOwogI2VuZGlmCiAKLSAgICB2b2lkIHByZWRpY3RBcmd1bWVudFR5cGVzKEV4ZWNT
dGF0ZSosIENvZGVCbG9jayopOworICAgIHZvaWQgcHJlZGljdEFyZ3VtZW50VHlwZXMoQ29kZUJs
b2NrKik7CiAgICAgCiAgICAgU3RydWN0dXJlU2V0KiBhZGRTdHJ1Y3R1cmVTZXQoY29uc3QgU3Ry
dWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAJKHJldmlzaW9uIDk3OTQyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM4NCwyNCArMzg0LDI0IEBAIHZvaWQgUHJvZ3JhbUV4ZWN1dGFibGU6OmNsZWFyQ29kZVZpcnR1
YWwKICAgICBCYXNlOjpjbGVhckNvZGVWaXJ0dWFsKCk7CiB9CiAKLUpTT2JqZWN0KiBGdW5jdGlv
bkV4ZWN1dGFibGU6OmNvbXBpbGVPcHRpbWl6ZWRGb3JDYWxsKEV4ZWNTdGF0ZSogZXhlYywgU2Nv
cGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW5Ob2RlLCBFeGVjU3RhdGUqIGNhbGxlZUFyZ3NFeGVjKQor
SlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZU9wdGltaXplZEZvckNhbGwoRXhl
Y1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbk5vZGUpCiB7CiAgICAgQVNT
RVJUKGV4ZWMtPmdsb2JhbERhdGEoKS5keW5hbWljR2xvYmFsT2JqZWN0KTsKICAgICBBU1NFUlQo
ISFtX2NvZGVCbG9ja0ZvckNhbGwpOwogICAgIEpTT2JqZWN0KiBlcnJvciA9IDA7CiAgICAgaWYg
KG1fY29kZUJsb2NrRm9yQ2FsbC0+Z2V0SklUVHlwZSgpICE9IEpJVENvZGU6OnRvcFRpZXJKSVQo
KSkKLSAgICAgICAgZXJyb3IgPSBjb21waWxlRm9yQ2FsbEludGVybmFsKGV4ZWMsIHNjb3BlQ2hh
aW5Ob2RlLCBjYWxsZWVBcmdzRXhlYywgSklUQ29kZTo6bmV4dFRpZXJKSVQobV9jb2RlQmxvY2tG
b3JDYWxsLT5nZXRKSVRUeXBlKCkpKTsKKyAgICAgICAgZXJyb3IgPSBjb21waWxlRm9yQ2FsbElu
dGVybmFsKGV4ZWMsIHNjb3BlQ2hhaW5Ob2RlLCBKSVRDb2RlOjpuZXh0VGllckpJVChtX2NvZGVC
bG9ja0ZvckNhbGwtPmdldEpJVFR5cGUoKSkpOwogICAgIEFTU0VSVCghIW1fY29kZUJsb2NrRm9y
Q2FsbCk7CiAgICAgcmV0dXJuIGVycm9yOwogfQogCi1KU09iamVjdCogRnVuY3Rpb25FeGVjdXRh
YmxlOjpjb21waWxlT3B0aW1pemVkRm9yQ29uc3RydWN0KEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVD
aGFpbk5vZGUqIHNjb3BlQ2hhaW5Ob2RlLCBFeGVjU3RhdGUqIGNhbGxlZUFyZ3NFeGVjKQorSlNP
YmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZU9wdGltaXplZEZvckNvbnN0cnVjdChF
eGVjU3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluTm9kZSkKIHsKICAgICBB
U1NFUlQoZXhlYy0+Z2xvYmFsRGF0YSgpLmR5bmFtaWNHbG9iYWxPYmplY3QpOwogICAgIEFTU0VS
VCghIW1fY29kZUJsb2NrRm9yQ29uc3RydWN0KTsKICAgICBKU09iamVjdCogZXJyb3IgPSAwOwog
ICAgIGlmIChtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdC0+Z2V0SklUVHlwZSgpICE9IEpJVENvZGU6
OnRvcFRpZXJKSVQoKSkKLSAgICAgICAgZXJyb3IgPSBjb21waWxlRm9yQ29uc3RydWN0SW50ZXJu
YWwoZXhlYywgc2NvcGVDaGFpbk5vZGUsIGNhbGxlZUFyZ3NFeGVjLCBKSVRDb2RlOjpuZXh0VGll
ckpJVChtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdC0+Z2V0SklUVHlwZSgpKSk7CisgICAgICAgIGVy
cm9yID0gY29tcGlsZUZvckNvbnN0cnVjdEludGVybmFsKGV4ZWMsIHNjb3BlQ2hhaW5Ob2RlLCBK
SVRDb2RlOjpuZXh0VGllckpJVChtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdC0+Z2V0SklUVHlwZSgp
KSk7CiAgICAgQVNTRVJUKCEhbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QpOwogICAgIHJldHVybiBl
cnJvcjsKIH0KQEAgLTQzNSw3ICs0MzUsNyBAQCBQYXNzT3duUHRyPEZ1bmN0aW9uQ29kZUJsb2Nr
PiBGdW5jdGlvbkV4CiAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiB9CiAKLUpTT2JqZWN0
KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3JDYWxsSW50ZXJuYWwoRXhlY1N0YXRlKiBl
eGVjLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbk5vZGUsIEV4ZWNTdGF0ZSogY2FsbGVlQXJn
c0V4ZWMsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKK0pTT2JqZWN0KiBGdW5jdGlvbkV4ZWN1
dGFibGU6OmNvbXBpbGVGb3JDYWxsSW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWlu
Tm9kZSogc2NvcGVDaGFpbk5vZGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKIHsKICNpZiAh
RU5BQkxFKEpJVCkKICAgICBVTlVTRURfUEFSQU0oaml0VHlwZSk7CkBAIC00NTksNyArNDU5LDcg
QEAgSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvcgogICAgIGlmIChnbG9i
YWxEYXRhLT5jYW5Vc2VKSVQoKSkgewogICAgICAgICBib29sIGRmZ0NvbXBpbGVkID0gZmFsc2U7
CiAgICAgICAgIGlmIChqaXRUeXBlID09IEpJVENvZGU6OkRGR0pJVCkKLSAgICAgICAgICAgIGRm
Z0NvbXBpbGVkID0gREZHOjp0cnlDb21waWxlRnVuY3Rpb24oZXhlYywgY2FsbGVlQXJnc0V4ZWMs
IG1fY29kZUJsb2NrRm9yQ2FsbC5nZXQoKSwgbV9qaXRDb2RlRm9yQ2FsbCwgbV9qaXRDb2RlRm9y
Q2FsbFdpdGhBcml0eUNoZWNrKTsKKyAgICAgICAgICAgIGRmZ0NvbXBpbGVkID0gREZHOjp0cnlD
b21waWxlRnVuY3Rpb24oZXhlYywgbV9jb2RlQmxvY2tGb3JDYWxsLmdldCgpLCBtX2ppdENvZGVG
b3JDYWxsLCBtX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2spOwogICAgICAgICBpZiAoZGZn
Q29tcGlsZWQpIHsKICAgICAgICAgICAgIGlmIChtX2NvZGVCbG9ja0ZvckNhbGwtPmFsdGVybmF0
aXZlKCkpCiAgICAgICAgICAgICAgICAgbV9jb2RlQmxvY2tGb3JDYWxsLT5hbHRlcm5hdGl2ZSgp
LT51bmxpbmtJbmNvbWluZ0NhbGxzKCk7CkBAIC00NzgsOCArNDc4LDYgQEAgSlNPYmplY3QqIEZ1
bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvcgogICAgICAgICAKICAgICAgICAgbV9jb2RlQmxv
Y2tGb3JDYWxsLT5zZXRKSVRDb2RlKG1faml0Q29kZUZvckNhbGwsIG1faml0Q29kZUZvckNhbGxX
aXRoQXJpdHlDaGVjayk7CiAgICAgfQotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oY2FsbGVlQXJn
c0V4ZWMpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoSklUKQpAQCAtNDk2LDcgKzQ5NCw3IEBAIEpT
T2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3IKICAgICByZXR1cm4gMDsKIH0K
IAotSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNvbnN0cnVjdEludGVy
bmFsKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW5Ob2RlLCBFeGVj
U3RhdGUqIGNhbGxlZUFyZ3NFeGVjLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCitKU09iamVj
dCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9yQ29uc3RydWN0SW50ZXJuYWwoRXhlY1N0
YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbk5vZGUsIEpJVENvZGU6OkpJVFR5
cGUgaml0VHlwZSkKIHsKICAgICBVTlVTRURfUEFSQU0oaml0VHlwZSk7CiAgICAgCkBAIC01MTks
NyArNTE3LDcgQEAgSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvcgogICAg
IGlmIChnbG9iYWxEYXRhLT5jYW5Vc2VKSVQoKSkgewogICAgICAgICBib29sIGRmZ0NvbXBpbGVk
ID0gZmFsc2U7CiAgICAgICAgIGlmIChqaXRUeXBlID09IEpJVENvZGU6OkRGR0pJVCkKLSAgICAg
ICAgICAgIGRmZ0NvbXBpbGVkID0gREZHOjp0cnlDb21waWxlRnVuY3Rpb24oZXhlYywgY2FsbGVl
QXJnc0V4ZWMsIG1fY29kZUJsb2NrRm9yQ29uc3RydWN0LmdldCgpLCBtX2ppdENvZGVGb3JDb25z
dHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrKTsKKyAgICAgICAgICAg
IGRmZ0NvbXBpbGVkID0gREZHOjp0cnlDb21waWxlRnVuY3Rpb24oZXhlYywgbV9jb2RlQmxvY2tG
b3JDb25zdHJ1Y3QuZ2V0KCksIG1faml0Q29kZUZvckNvbnN0cnVjdCwgbV9qaXRDb2RlRm9yQ29u
c3RydWN0V2l0aEFyaXR5Q2hlY2spOwogICAgICAgICBpZiAoZGZnQ29tcGlsZWQpIHsKICAgICAg
ICAgICAgIGlmIChtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdC0+YWx0ZXJuYXRpdmUoKSkKICAgICAg
ICAgICAgICAgICBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdC0+YWx0ZXJuYXRpdmUoKS0+dW5saW5r
SW5jb21pbmdDYWxscygpOwpAQCAtNTM4LDggKzUzNiw2IEBAIEpTT2JqZWN0KiBGdW5jdGlvbkV4
ZWN1dGFibGU6OmNvbXBpbGVGb3IKICAgICAgICAgCiAgICAgICAgIG1fY29kZUJsb2NrRm9yQ29u
c3RydWN0LT5zZXRKSVRDb2RlKG1faml0Q29kZUZvckNvbnN0cnVjdCwgbV9qaXRDb2RlRm9yQ29u
c3RydWN0V2l0aEFyaXR5Q2hlY2spOwogICAgIH0KLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGNh
bGxlZUFyZ3NFeGVjKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKEpJVCkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHJldmlzaW9uIDk3OTQyKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC00NjQsMTcgKzQ2NCwxNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAg
IFBhc3NPd25QdHI8RnVuY3Rpb25Db2RlQmxvY2s+IHByb2R1Y2VDb2RlQmxvY2tGb3IoRXhlY1N0
YXRlKiwgU2NvcGVDaGFpbk5vZGUqLCBDb21waWxhdGlvbktpbmQsIENvZGVTcGVjaWFsaXphdGlv
bktpbmQsIEpTT2JqZWN0KiYgZXhjZXB0aW9uKTsKIAotICAgICAgICBKU09iamVjdCogY29tcGls
ZUZvckNhbGwoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbk5vZGUs
IEV4ZWNTdGF0ZSogY2FsbGVlQXJnc0V4ZWMgPSAwKQorICAgICAgICBKU09iamVjdCogY29tcGls
ZUZvckNhbGwoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbk5vZGUp
CiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChleGVjLT5nbG9iYWxEYXRhKCkuZHluYW1p
Y0dsb2JhbE9iamVjdCk7CiAgICAgICAgICAgICBKU09iamVjdCogZXJyb3IgPSAwOwogICAgICAg
ICAgICAgaWYgKCFtX2NvZGVCbG9ja0ZvckNhbGwpCi0gICAgICAgICAgICAgICAgZXJyb3IgPSBj
b21waWxlRm9yQ2FsbEludGVybmFsKGV4ZWMsIHNjb3BlQ2hhaW5Ob2RlLCBjYWxsZWVBcmdzRXhl
YywgSklUQ29kZTo6Ym90dG9tVGllckpJVCgpKTsKKyAgICAgICAgICAgICAgICBlcnJvciA9IGNv
bXBpbGVGb3JDYWxsSW50ZXJuYWwoZXhlYywgc2NvcGVDaGFpbk5vZGUsIEpJVENvZGU6OmJvdHRv
bVRpZXJKSVQoKSk7CiAgICAgICAgICAgICBBU1NFUlQoIWVycm9yID09ICEhbV9jb2RlQmxvY2tG
b3JDYWxsKTsKICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKICAgICAgICAgfQogCi0gICAgICAg
IEpTT2JqZWN0KiBjb21waWxlT3B0aW1pemVkRm9yQ2FsbChFeGVjU3RhdGUqLCBTY29wZUNoYWlu
Tm9kZSosIEV4ZWNTdGF0ZSogY2FsbGVlQXJnc0V4ZWMgPSAwKTsKKyAgICAgICAgSlNPYmplY3Qq
IGNvbXBpbGVPcHRpbWl6ZWRGb3JDYWxsKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKik7CiAg
ICAgICAgIAogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIHZvaWQgamV0dGlzb25PcHRpbWl6ZWRD
b2RlRm9yQ2FsbChKU0dsb2JhbERhdGEmKTsKQEAgLTQ5MSwxNyArNDkxLDE3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuICptX2NvZGVCbG9ja0ZvckNhbGw7CiAgICAgICAg
IH0KIAotICAgICAgICBKU09iamVjdCogY29tcGlsZUZvckNvbnN0cnVjdChFeGVjU3RhdGUqIGV4
ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluTm9kZSwgRXhlY1N0YXRlKiBjYWxsZWVBcmdz
RXhlYyA9IDApCisgICAgICAgIEpTT2JqZWN0KiBjb21waWxlRm9yQ29uc3RydWN0KEV4ZWNTdGF0
ZSogZXhlYywgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW5Ob2RlKQogICAgICAgICB7CiAgICAg
ICAgICAgICBBU1NFUlQoZXhlYy0+Z2xvYmFsRGF0YSgpLmR5bmFtaWNHbG9iYWxPYmplY3QpOwog
ICAgICAgICAgICAgSlNPYmplY3QqIGVycm9yID0gMDsKICAgICAgICAgICAgIGlmICghbV9jb2Rl
QmxvY2tGb3JDb25zdHJ1Y3QpCi0gICAgICAgICAgICAgICAgZXJyb3IgPSBjb21waWxlRm9yQ29u
c3RydWN0SW50ZXJuYWwoZXhlYywgc2NvcGVDaGFpbk5vZGUsIGNhbGxlZUFyZ3NFeGVjLCBKSVRD
b2RlOjpib3R0b21UaWVySklUKCkpOworICAgICAgICAgICAgICAgIGVycm9yID0gY29tcGlsZUZv
ckNvbnN0cnVjdEludGVybmFsKGV4ZWMsIHNjb3BlQ2hhaW5Ob2RlLCBKSVRDb2RlOjpib3R0b21U
aWVySklUKCkpOwogICAgICAgICAgICAgQVNTRVJUKCFlcnJvciA9PSAhIW1fY29kZUJsb2NrRm9y
Q29uc3RydWN0KTsKICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKICAgICAgICAgfQogCi0gICAg
ICAgIEpTT2JqZWN0KiBjb21waWxlT3B0aW1pemVkRm9yQ29uc3RydWN0KEV4ZWNTdGF0ZSosIFNj
b3BlQ2hhaW5Ob2RlKiwgRXhlY1N0YXRlKiBjYWxsZWVBcmdzRXhlYyA9IDApOworICAgICAgICBK
U09iamVjdCogY29tcGlsZU9wdGltaXplZEZvckNvbnN0cnVjdChFeGVjU3RhdGUqLCBTY29wZUNo
YWluTm9kZSopOwogICAgICAgICAKICNpZiBFTkFCTEUoSklUKQogICAgICAgICB2b2lkIGpldHRp
c29uT3B0aW1pemVkQ29kZUZvckNvbnN0cnVjdChKU0dsb2JhbERhdGEmKTsKQEAgLTUyMCwzMCAr
NTIwLDI2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgSlNPYmplY3QqIGNv
bXBpbGVGb3IoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbk5vZGUs
IENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKICAgICAgICAgewotICAgICAgICAgICAgLy8g
Y29tcGlsZUZvciBzaG91bGQgb25seSBiZSBjYWxsZWQgd2l0aCBhIGNhbGxmcmFtZSBzZXQgdXAg
dG8gY2FsbCB0aGlzIGZ1bmN0aW9uLAotICAgICAgICAgICAgLy8gc2luY2Ugd2Ugd2lsbCBtYWtl
IHNwZWN1bGF0aXZlIG9wdGltaXphdGlvbnMgYmFzZWQgb24gdGhlIGFyZ3VtZW50cy4KICAgICAg
ICAgICAgIEFTU0VSVChleGVjLT5jYWxsZWUoKSk7CiAgICAgICAgICAgICBBU1NFUlQoZXhlYy0+
Y2FsbGVlKCktPmluaGVyaXRzKCZKU0Z1bmN0aW9uOjpzX2luZm8pKTsKICAgICAgICAgICAgIEFT
U0VSVChhc0Z1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+anNFeGVjdXRhYmxlKCkgPT0gdGhpcyk7
CiAKICAgICAgICAgICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKQotICAgICAgICAgICAgICAg
IHJldHVybiBjb21waWxlRm9yQ2FsbChleGVjLCBzY29wZUNoYWluTm9kZSwgZXhlYyk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIGNvbXBpbGVGb3JDYWxsKGV4ZWMsIHNjb3BlQ2hhaW5Ob2RlKTsK
ICAgICAgICAgICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOwotICAgICAgICAg
ICAgcmV0dXJuIGNvbXBpbGVGb3JDb25zdHJ1Y3QoZXhlYywgc2NvcGVDaGFpbk5vZGUsIGV4ZWMp
OworICAgICAgICAgICAgcmV0dXJuIGNvbXBpbGVGb3JDb25zdHJ1Y3QoZXhlYywgc2NvcGVDaGFp
bk5vZGUpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBKU09iamVjdCogY29tcGlsZU9w
dGltaXplZEZvcihFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluTm9k
ZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQogICAgICAgICB7Ci0gICAgICAgICAgICAv
LyBjb21waWxlT3B0aW1pemVkRm9yIHNob3VsZCBvbmx5IGJlIGNhbGxlZCB3aXRoIGEgY2FsbGZy
YW1lIHNldCB1cCB0byBjYWxsIHRoaXMgZnVuY3Rpb24sCi0gICAgICAgICAgICAvLyBzaW5jZSB3
ZSB3aWxsIG1ha2Ugc3BlY3VsYXRpdmUgb3B0aW1pemF0aW9ucyBiYXNlZCBvbiB0aGUgYXJndW1l
bnRzLgogICAgICAgICAgICAgQVNTRVJUKGV4ZWMtPmNhbGxlZSgpKTsKICAgICAgICAgICAgIEFT
U0VSVChleGVjLT5jYWxsZWUoKS0+aW5oZXJpdHMoJkpTRnVuY3Rpb246OnNfaW5mbykpOwogICAg
ICAgICAgICAgQVNTRVJUKGFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5qc0V4ZWN1dGFibGUo
KSA9PSB0aGlzKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKGtpbmQgPT0gQ29kZUZv
ckNhbGwpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBpbGVPcHRpbWl6ZWRGb3JDYWxsKGV4
ZWMsIHNjb3BlQ2hhaW5Ob2RlLCBleGVjKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gY29tcGls
ZU9wdGltaXplZEZvckNhbGwoZXhlYywgc2NvcGVDaGFpbk5vZGUpOwogICAgICAgICAgICAgQVNT
RVJUKGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCk7Ci0gICAgICAgICAgICByZXR1cm4gY29tcGls
ZU9wdGltaXplZEZvckNvbnN0cnVjdChleGVjLCBzY29wZUNoYWluTm9kZSwgZXhlYyk7CisgICAg
ICAgICAgICByZXR1cm4gY29tcGlsZU9wdGltaXplZEZvckNvbnN0cnVjdChleGVjLCBzY29wZUNo
YWluTm9kZSk7CiAgICAgICAgIH0KICAgICAgICAgCiAjaWYgRU5BQkxFKEpJVCkKQEAgLTYwNiw4
ICs2MDIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKEpT
R2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIGNvbnN0IFNvdXJjZUNvZGUmLCBi
b29sIGZvcmNlVXNlc0FyZ3VtZW50cywgRnVuY3Rpb25QYXJhbWV0ZXJzKiwgYm9vbCk7CiAgICAg
ICAgIEZ1bmN0aW9uRXhlY3V0YWJsZShFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBuYW1l
LCBjb25zdCBTb3VyY2VDb2RlJiwgYm9vbCBmb3JjZVVzZXNBcmd1bWVudHMsIEZ1bmN0aW9uUGFy
YW1ldGVycyosIGJvb2wpOwogCi0gICAgICAgIEpTT2JqZWN0KiBjb21waWxlRm9yQ2FsbEludGVy
bmFsKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKiwgRXhlY1N0YXRlKiBjYWxsZWVBcmdzRXhl
YywgSklUQ29kZTo6SklUVHlwZSk7Ci0gICAgICAgIEpTT2JqZWN0KiBjb21waWxlRm9yQ29uc3Ry
dWN0SW50ZXJuYWwoRXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqLCBFeGVjU3RhdGUqIGNhbGxl
ZUFyZ3NFeGVjLCBKSVRDb2RlOjpKSVRUeXBlKTsKKyAgICAgICAgSlNPYmplY3QqIGNvbXBpbGVG
b3JDYWxsSW50ZXJuYWwoRXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqLCBKSVRDb2RlOjpKSVRU
eXBlKTsKKyAgICAgICAgSlNPYmplY3QqIGNvbXBpbGVGb3JDb25zdHJ1Y3RJbnRlcm5hbChFeGVj
U3RhdGUqLCBTY29wZUNoYWluTm9kZSosIEpJVENvZGU6OkpJVFR5cGUpOwogICAgICAgICAKICAg
ICAgICAgT3duUHRyPEZ1bmN0aW9uQ29kZUJsb2NrPiYgY29kZUJsb2NrRm9yKENvZGVTcGVjaWFs
aXphdGlvbktpbmQga2luZCkKICAgICAgICAgewo=
</data>
<flag name="review"
          id="109833"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>