<?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>64760</bug_id>
          
          <creation_ts>2011-07-18 15:31:47 -0700</creation_ts>
          <short_desc>DFG JIT - Should be able to compile program code.</short_desc>
          <delta_ts>2011-07-18 17:26: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>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Gavin Barraclough">barraclough</reporter>
          <assigned_to name="Gavin Barraclough">barraclough</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>438773</commentid>
    <comment_count>0</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-07-18 15:31:47 -0700</bug_when>
    <thetext>Add support for op_end, hooks to compile program code in Executable.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438776</commentid>
    <comment_count>1</comment_count>
      <attachid>101223</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-07-18 15:36:03 -0700</bug_when>
    <thetext>Created attachment 101223
The patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438785</commentid>
    <comment_count>2</comment_count>
      <attachid>101223</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-07-18 15:46:05 -0700</bug_when>
    <thetext>Comment on attachment 101223
The patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438854</commentid>
    <comment_count>3</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-07-18 17:26:40 -0700</bug_when>
    <thetext>Fixed in r91225</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101223</attachid>
            <date>2011-07-18 15:36:03 -0700</date>
            <delta_ts>2011-07-18 15:46:04 -0700</delta_ts>
            <desc>The patch</desc>
            <filename>64760.patch</filename>
            <type>text/plain</type>
            <size>18414</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTEyMTQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzQgQEAK
KzIwMTEtMDctMTggIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgor
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDc2MAor
ICAgICAgICBERkcgSklUIC0gU2hvdWxkIGJlIGFibGUgdG8gY29tcGlsZSBwcm9ncmFtIGNvZGUu
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1
cHBvcnQgZm9yIG9wX2VuZCwgaG9va3MgdG8gY29tcGlsZSBwcm9ncmFtIGNvZGUgaW4gRXhlY3V0
YWJsZS5jcHAuCisKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgICAgIC0g
QWRkIHN1cHBvcnQgZm9yIG9wX2VuZAorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGVFbnRyeSk6CisgICAgICAg
IChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGVCb2R5KToKKyAgICAgICAgKEpTQzo6REZH
OjpKSVRDb21waWxlcjo6bGluayk6CisgICAgICAgICAgICAtIEFkZGVkLCBzZXBhcmF0ZSBvdXQg
c3RlcHMgb2YgY29tcGlsZUZ1bmN0aW9uLgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVy
Ojpjb21waWxlKToKKyAgICAgICAgICAgIC0gQWRkZWQsIGNvbXBpbGUgcHJvZ3JhbSBjb2RlLgor
ICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24pOgorICAgICAg
ICAgICAgLSBTZWN0aW9ucyBzZXBhcmF0ZWQgb3V0IHRvIGhlbHBlciBmdW5jdGlvbnMuCisgICAg
ICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmg6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGls
ZXI6OkpJVENvbXBpbGVyKToKKyAgICAgICAgICAgIC0gQWRkZWQgbV9leGNlcHRpb25DaGVja0Nv
dW50LgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OnRy
eURGR0NvbXBpbGUpOgorICAgICAgICAoSlNDOjp0cnlERkdDb21waWxlRnVuY3Rpb24pOgorICAg
ICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6Y29tcGlsZUludGVybmFsKToKKyAgICAgICAg
KEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9yQ2FsbEludGVybmFsKToKKyAgICAg
ICAgICAgIC0gUmVuYW1lZCB0cnlERkdDb21waWxlIHRvIHRyeURGR0NvbXBpbGVGdW5jdGlvbiwg
YWRkZWQgdHJ5REZHQ29tcGlsZSB0byBjb21waWxlIHByb2dyYW0gY29kZS4KKwogMjAxMS0wNy0x
OCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIERGRyBKSVQgZG9l
cyBub3Qgb3B0aW1pemUgZXF1YWwtbnVsbCBjb21wYXJpc29ucyBhbmQgYnJhbmNoZXMuCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAko
cmV2aXNpb24gOTExNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTExMiwxMCArMTExMiwxMyBAQCBib29sIEJ5
dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICBMQVNUX09QQ09E
RShvcF9sb29wX2lmX2dyZWF0ZXJlcSk7CiAgICAgICAgIH0KIAotICAgICAgICBjYXNlIG9wX3Jl
dDogeworICAgICAgICBjYXNlIG9wX3JldDoKICAgICAgICAgICAgIGFkZFRvR3JhcGgoUmV0dXJu
LCBnZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpOwogICAgICAgICAgICAgTEFT
VF9PUENPREUob3BfcmV0KTsKLSAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIGNhc2Ug
b3BfZW5kOgorICAgICAgICAgICAgYWRkVG9HcmFwaChSZXR1cm4sIGdldChjdXJyZW50SW5zdHJ1
Y3Rpb25bMV0udS5vcGVyYW5kKSk7CisgICAgICAgICAgICBMQVNUX09QQ09ERShvcF9lbmQpOwog
ICAgICAgICAgICAgCiAgICAgICAgIGNhc2Ugb3BfY2FsbDogewogICAgICAgICAgICAgTm9kZUlu
ZGV4IGNhbGwgPSBhZGRDYWxsKGludGVycHJldGVyLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIENhbGwp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJ
KHJldmlzaW9uIDkxMTY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21w
aWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyMywzOCArMjIzLDIxIEBAIHZvaWQgSklUQ29t
cGlsZXI6OmxpbmtTcGVjdWxhdGlvbkNoZWNrcygKICAgICBBU1NFUlQoIShlbnRyaWVzSXRlciAh
PSBlbnRyaWVzRW5kKSk7CiB9CiAKLXZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbihK
SVRDb2RlJiBlbnRyeSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBlbnRyeVdpdGhBcml0eUNoZWNr
KQordm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZUVudHJ5KCkKIHsKLSAgICAvLyA9PT0gU3RhZ2Ug
MSAtIEZ1bmN0aW9uIGhlYWRlciBjb2RlIGdlbmVyYXRpb24gPT09Ci0gICAgLy8KICAgICAvLyBU
aGlzIGNvZGUgY3VycmVudGx5IG1hdGNoZXMgdGhlIG9sZCBKSVQuIEluIHRoZSBmdW5jdGlvbiBo
ZWFkZXIgd2UgbmVlZCB0bwogICAgIC8vIHBvcCB0aGUgcmV0dXJuIGFkZHJlc3MgKHNpbmNlIHdl
IGRvIG5vdCBhbGxvdyBhbnkgcmVjdXJzaW9uIG9uIHRoZSBtYWNoaW5lCiAgICAgLy8gc3RhY2sp
LCBhbmQgcGVyZm9ybSBhIGZhc3QgcmVnaXN0ZXIgZmlsZSBjaGVjay4KLQotICAgIC8vIFRoaXMg
aXMgdGhlIG1haW4gZW50cnkgcG9pbnQsIHdpdGhvdXQgcGVyZm9ybWluZyBhbiBhcml0eSBjaGVj
ay4KICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTU2MjkyCiAgICAgLy8gV2UnbGwgbmVlZCB0byBjb252ZXJ0IHRoZSByZW1haW5pbmcgY3RpXyBz
dHlsZSBjYWxscyAoc3BlY2lmaWNhbGx5IHRoZSByZWdpc3RlciBmaWxlCiAgICAgLy8gY2hlY2sp
IHdoaWNoIHdpbGwgYmUgZGVwZW5kZW50IG9uIHN0YWNrIGxheW91dC4gKFdlJ2QgbmVlZCB0byBh
Y2NvdW50IGZvciB0aGlzIGluCiAgICAgLy8gYm90aCBub3JtYWwgcmV0dXJuIGNvZGUgYW5kIHdo
ZW4ganVtcGluZyB0byBhbiBleGNlcHRpb24gaGFuZGxlcikuCiAgICAgcHJlc2VydmVSZXR1cm5B
ZGRyZXNzQWZ0ZXJDYWxsKEdQUkluZm86OnJlZ1QyKTsKICAgICBlbWl0UHV0VG9DYWxsRnJhbWVI
ZWFkZXIoR1BSSW5mbzo6cmVnVDIsIFJlZ2lzdGVyRmlsZTo6UmV0dXJuUEMpOwotICAgIC8vIElm
IHdlIG5lZWRlZCB0byBwZXJmb3JtIGFuIGFyaXR5IGNoZWNrIHdlIHdpbGwgYWxyZWFkeSBoYXZl
IG1vdmVkIHRoZSByZXR1cm4gYWRkcmVzcywKLSAgICAvLyBzbyBlbnRlciBhZnRlciB0aGlzLgot
ICAgIExhYmVsIGZyb21Bcml0eUNoZWNrKHRoaXMpOwotCi0gICAgLy8gU2V0dXAgYSBwb2ludGVy
IHRvIHRoZSBjb2RlYmxvY2sgaW4gdGhlIENhbGxGcmFtZUhlYWRlci4KLSAgICBlbWl0UHV0SW1t
ZWRpYXRlVG9DYWxsRnJhbWVIZWFkZXIobV9jb2RlQmxvY2ssIFJlZ2lzdGVyRmlsZTo6Q29kZUJs
b2NrKTsKLQotICAgIC8vIFBsYW50IGEgY2hlY2sgdGhhdCBzdWZmaWNpZW50IHNwYWNlIGlzIGF2
YWlsYWJsZSBpbiB0aGUgUmVnaXN0ZXJGaWxlLgotICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYyOTEKLSAgICBhZGRQdHIoSW1tMzIobV9jb2Rl
QmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzICogc2l6ZW9mKFJlZ2lzdGVyKSksIEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjpyZWdUMSk7Ci0gICAgSnVtcCByZWdpc3RlckZp
bGVDaGVjayA9IGJyYW5jaFB0cihCZWxvdywgQWJzb2x1dGVBZGRyZXNzKG1fZ2xvYmFsRGF0YS0+
aW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpLmFkZHJlc3NPZkVuZCgpKSwgR1BSSW5mbzo6cmVn
VDEpOwotICAgIC8vIFJldHVybiBoZXJlIGFmdGVyIHJlZ2lzdGVyIGZpbGUgY2hlY2suCi0gICAg
TGFiZWwgZnJvbVJlZ2lzdGVyRmlsZUNoZWNrID0gbGFiZWwoKTsKLQorfQogCi0gICAgLy8gPT09
IFN0YWdlIDIgLSBGdW5jdGlvbiBib2R5IGNvZGUgZ2VuZXJhdGlvbiA9PT0KLSAgICAvLwordm9p
ZCBKSVRDb21waWxlcjo6Y29tcGlsZUJvZHkoKQorewogICAgIC8vIFdlIGdlbmVyYXRlIHRoZSBz
cGVjdWxhdGl2ZSBjb2RlIHBhdGgsIGZvbGxvd2VkIGJ5IHRoZSBub24tc3BlY3VsYXRpdmUKICAg
ICAvLyBjb2RlIGZvciB0aGUgZnVuY3Rpb24uIE5leHQgd2UgbmVlZCB0byBsaW5rIHRoZSB0d28g
dG9nZXRoZXIsIG1ha2luZwogICAgIC8vIGJhaWwtb3V0cyBmcm9tIHRoZSBzcGVjdWxhdGl2ZSBw
YXRoIGp1bXAgdG8gdGhlIGNvcnJlc3BvbmRpbmcgcG9pbnQgb24KQEAgLTMwNCwyNCArMjg3LDE3
IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbihKSVRDb2QKICAgICAgICAgbm9u
U3BlY3VsYXRpdmUuY29tcGlsZShjaGVja0l0ZXJhdG9yKTsKICAgICB9CiAKLSAgICAvLyA9PT0g
U3RhZ2UgMyAtIEZ1bmN0aW9uIGZvb3RlciBjb2RlIGdlbmVyYXRpb24gPT09Ci0gICAgLy8KLSAg
ICAvLyBHZW5lcmF0ZSBjb2RlIHRvIGxvb2t1cCBhbmQganVtcCB0byBleGNlcHRpb24gaGFuZGxl
cnMsIHRvIHBlcmZvcm0gdGhlIHNsb3cKLSAgICAvLyByZWdpc3RlciBmaWxlIGNoZWNrIChpZiB0
aGUgZmFzdCBvbmUgaW4gdGhlIGZ1bmN0aW9uIGhlYWRlciBmYWlscyksIGFuZAotICAgIC8vIGdl
bmVyYXRlIHRoZSBlbnRyeSBwb2ludCB3aXRoIGFyaXR5IGNoZWNrLgotCiAgICAgLy8gSXRlcmF0
ZSBvdmVyIHRoZSBtX2NhbGxzIHZlY3RvciwgY2hlY2tpbmcgZm9yIGV4Y2VwdGlvbiBjaGVja3Ms
CiAgICAgLy8gYW5kIGxpbmtpbmcgdGhlbSB0byBoZXJlLgotICAgIHVuc2lnbmVkIGV4Y2VwdGlv
bkNoZWNrQ291bnQgPSAwOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2NhbGxzLnNp
emUoKTsgKytpKSB7CiAgICAgICAgIEp1bXAmIGV4Y2VwdGlvbkNoZWNrID0gbV9jYWxsc1tpXS5t
X2V4Y2VwdGlvbkNoZWNrOwogICAgICAgICBpZiAoZXhjZXB0aW9uQ2hlY2suaXNTZXQoKSkgewog
ICAgICAgICAgICAgZXhjZXB0aW9uQ2hlY2subGluayh0aGlzKTsKLSAgICAgICAgICAgICsrZXhj
ZXB0aW9uQ2hlY2tDb3VudDsKKyAgICAgICAgICAgICsrbV9leGNlcHRpb25DaGVja0NvdW50Owog
ICAgICAgICB9CiAgICAgfQogICAgIC8vIElmIGFueSBleGNlcHRpb24gY2hlY2tzIHdlcmUgbGlu
a2VkLCBnZW5lcmF0ZSBjb2RlIHRvIGxvb2t1cCBhIGhhbmRsZXIuCi0gICAgaWYgKGV4Y2VwdGlv
bkNoZWNrQ291bnQpIHsKKyAgICBpZiAobV9leGNlcHRpb25DaGVja0NvdW50KSB7CiAgICAgICAg
IC8vIGxvb2t1cEV4Y2VwdGlvbkhhbmRsZXIgaXMgcGFzc2VkIHR3byBhcmd1bWVudHMsIGV4ZWMg
KHRoZSBDYWxsRnJhbWUqKSwgYW5kCiAgICAgICAgIC8vIGFuIGlkZW50aWZpZXIgZm9yIHRoZSBv
cGVyYXRpb24gdGhhdCB0aHJldyB0aGUgZXhjZXB0aW9uLCB3aGljaCB3ZSBjYW4gdXNlCiAgICAg
ICAgIC8vIHRvIGxvb2sgdXAgaGFuZGxlciBpbmZvcm1hdGlvbi4gVGhlIGlkZW50aWZpZXIgd2Ug
dXNlIGlzIHRoZSByZXR1cm4gYWRkcmVzcwpAQCAtMzM0LDM4ICszMTAsMTEgQEAgdm9pZCBKSVRD
b21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKEpJVENvZAogICAgICAgICAvLyBhbmQgdGhlIGFkZHJl
c3Mgb2YgdGhlIGhhbmRsZXIgaW4gcmV0dXJuVmFsdWVHUFIyLgogICAgICAgICBqdW1wKEdQUklu
Zm86OnJldHVyblZhbHVlR1BSMik7CiAgICAgfQorfQogCi0gICAgLy8gR2VuZXJhdGUgdGhlIHJl
Z2lzdGVyIGZpbGUgY2hlY2s7IGlmIHRoZSBmYXN0IGNoZWNrIGluIHRoZSBmdW5jdGlvbiBoZWFk
IGZhaWxzLAotICAgIC8vIHdlIG5lZWQgdG8gY2FsbCBvdXQgdG8gYSBoZWxwZXIgZnVuY3Rpb24g
dG8gY2hlY2sgd2hldGhlciBtb3JlIHNwYWNlIGlzIGF2YWlsYWJsZS4KLSAgICAvLyBGSVhNRTog
Y2hhbmdlIHRoaXMgZnJvbSBhIGN0aSBjYWxsIHRvIGEgREZHIHN0eWxlIG9wZXJhdGlvbiAobm9y
bWFsIEMgY2FsbGluZyBjb252ZW50aW9ucykuCi0gICAgcmVnaXN0ZXJGaWxlQ2hlY2subGluayh0
aGlzKTsKLSAgICBtb3ZlKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApOwotICAgIHBva2UoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIE9CSkVDVF9PRkZTRVRP
RihzdHJ1Y3QgSklUU3RhY2tGcmFtZSwgY2FsbEZyYW1lKSAvIHNpemVvZih2b2lkKikpOwotICAg
IENhbGwgY2FsbFJlZ2lzdGVyRmlsZUNoZWNrID0gY2FsbCgpOwotICAgIGp1bXAoZnJvbVJlZ2lz
dGVyRmlsZUNoZWNrKTsKLQotICAgIC8vIFRoZSBmYXN0IGVudHJ5IHBvaW50IGludG8gYSBmdW5j
dGlvbiBkb2VzIG5vdCBjaGVjayB0aGUgY29ycmVjdCBudW1iZXIgb2YgYXJndW1lbnRzCi0gICAg
Ly8gaGF2ZSBiZWVuIHBhc3NlZCB0byB0aGUgY2FsbCAod2Ugb25seSB1c2UgdGhlIGZhc3QgZW50
cnkgcG9pbnQgd2hlcmUgd2UgY2FuIHN0YXRpY2FsbHkKLSAgICAvLyBkZXRlcm1pbmUgdGhlIGNv
cnJlY3QgbnVtYmVyIG9mIGFyZ3VtZW50cyBoYXZlIGJlZW4gcGFzc2VkLCBvciBoYXZlIGFscmVh
ZHkgY2hlY2tlZCkuCi0gICAgLy8gSW4gY2FzZXMgd2hlcmUgYW4gYXJpdHkgY2hlY2sgaXMgbmVj
ZXNzYXJ5LCB3ZSBlbnRlciBoZXJlLgotICAgIC8vIEZJWE1FOiBjaGFuZ2UgdGhpcyBmcm9tIGEg
Y3RpIGNhbGwgdG8gYSBERkcgc3R5bGUgb3BlcmF0aW9uIChub3JtYWwgQyBjYWxsaW5nIGNvbnZl
bnRpb25zKS4KLSAgICBMYWJlbCBhcml0eUNoZWNrID0gbGFiZWwoKTsKLSAgICBwcmVzZXJ2ZVJl
dHVybkFkZHJlc3NBZnRlckNhbGwoR1BSSW5mbzo6cmVnVDIpOwotICAgIGVtaXRQdXRUb0NhbGxG
cmFtZUhlYWRlcihHUFJJbmZvOjpyZWdUMiwgUmVnaXN0ZXJGaWxlOjpSZXR1cm5QQyk7Ci0gICAg
YnJhbmNoMzIoRXF1YWwsIEdQUkluZm86OnJlZ1QxLCBJbW0zMihtX2NvZGVCbG9jay0+bV9udW1Q
YXJhbWV0ZXJzKSkubGlua1RvKGZyb21Bcml0eUNoZWNrLCB0aGlzKTsKLSAgICBtb3ZlKHN0YWNr
UG9pbnRlclJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIHBva2UoR1BSSW5m
bzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIE9CSkVDVF9PRkZTRVRPRihzdHJ1Y3QgSklUU3RhY2tGcmFt
ZSwgY2FsbEZyYW1lKSAvIHNpemVvZih2b2lkKikpOwotICAgIENhbGwgY2FsbEFyaXR5Q2hlY2sg
PSBjYWxsKCk7Ci0gICAgbW92ZShHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVn
aXN0ZXIpOwotICAgIGp1bXAoZnJvbUFyaXR5Q2hlY2spOwotCi0KLSAgICAvLyA9PT0gU3RhZ2Ug
NCAtIExpbmsgPT09Ci0gICAgLy8KK3ZvaWQgSklUQ29tcGlsZXI6OmxpbmsoTGlua0J1ZmZlciYg
bGlua0J1ZmZlcikKK3sKICAgICAvLyBMaW5rIHRoZSBjb2RlLCBwb3B1bGF0ZSBkYXRhIGluIENv
ZGVCbG9jayBkYXRhIHN0cnVjdHVyZXMuCi0KLSAgICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIoKm1f
Z2xvYmFsRGF0YSwgdGhpcywgbV9nbG9iYWxEYXRhLT5leGVjdXRhYmxlQWxsb2NhdG9yKTsKLQog
I2lmIERGR19ERUJVR19WRVJCT1NFCiAgICAgZnByaW50ZihzdGRlcnIsICJKSVQgY29kZSBzdGFy
dCBhdCAlcFxuIiwgbGlua0J1ZmZlci5kZWJ1Z0FkZHJlc3MoKSk7CiAjZW5kaWYKQEAgLTM3Nyw3
ICszMjYsNyBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24oSklUQ29kCiAgICAg
fQogCiAgICAgaWYgKG1fY29kZUJsb2NrLT5uZWVkc0NhbGxSZXR1cm5JbmRpY2VzKCkpIHsKLSAg
ICAgICAgbV9jb2RlQmxvY2stPmNhbGxSZXR1cm5JbmRleFZlY3RvcigpLnJlc2VydmVDYXBhY2l0
eShleGNlcHRpb25DaGVja0NvdW50KTsKKyAgICAgICAgbV9jb2RlQmxvY2stPmNhbGxSZXR1cm5J
bmRleFZlY3RvcigpLnJlc2VydmVDYXBhY2l0eShtX2V4Y2VwdGlvbkNoZWNrQ291bnQpOwogICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9jYWxscy5zaXplKCk7ICsraSkgewogICAg
ICAgICAgICAgaWYgKG1fY2FsbHNbaV0ubV9oYW5kbGVzRXhjZXB0aW9ucykgewogICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIHJldHVybkFkZHJlc3NPZmZzZXQgPSBsaW5rQnVmZmVyLnJldHVybkFk
ZHJlc3NPZmZzZXQobV9jYWxsc1tpXS5tX2NhbGwpOwpAQCAtNDE5LDYgKzM2OCw3NSBAQCB2b2lk
IEpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24oSklUQ29kCiAgICAgICAgIGluZm8uY2FjaGVk
UHJvdG90eXBlLnNldExvY2F0aW9uKGxpbmtCdWZmZXIubG9jYXRpb25PZihtX21ldGhvZEdldHNb
aV0ubV9wcm90b09iaikpOwogICAgICAgICBpbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiA9IGxpbmtC
dWZmZXIubG9jYXRpb25PZihtX21ldGhvZEdldHNbaV0ubV9zbG93Q2FsbCk7CiAgICAgfQorfQor
Cit2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlKEpJVENvZGUmIGVudHJ5KQoreworICAgIC8vIFBy
ZXNlcnZlIHRoZSByZXR1cm4gYWRkcmVzcyB0byB0aGUgY2FsbGZyYW1lLgorICAgIGNvbXBpbGVF
bnRyeSgpOworICAgIC8vIEdlbmVyYXRlIHRoZSBib2R5IG9mIHRoZSBwcm9ncmFtLgorICAgIGNv
bXBpbGVCb2R5KCk7CisgICAgLy8gTGluaworICAgIExpbmtCdWZmZXIgbGlua0J1ZmZlcigqbV9n
bG9iYWxEYXRhLCB0aGlzLCBtX2dsb2JhbERhdGEtPmV4ZWN1dGFibGVBbGxvY2F0b3IpOworICAg
IGxpbmsobGlua0J1ZmZlcik7CisgICAgZW50cnkgPSBKSVRDb2RlKGxpbmtCdWZmZXIuZmluYWxp
emVDb2RlKCksIEpJVENvZGU6OkRGR0pJVCk7Cit9CisKK3ZvaWQgSklUQ29tcGlsZXI6OmNvbXBp
bGVGdW5jdGlvbihKSVRDb2RlJiBlbnRyeSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBlbnRyeVdp
dGhBcml0eUNoZWNrKQoreworICAgIGNvbXBpbGVFbnRyeSgpOworCisgICAgLy8gPT09IEZ1bmN0
aW9uIGhlYWRlciBjb2RlIGdlbmVyYXRpb24gPT09CisgICAgLy8gVGhpcyBpcyB0aGUgbWFpbiBl
bnRyeSBwb2ludCwgd2l0aG91dCBwZXJmb3JtaW5nIGFuIGFyaXR5IGNoZWNrLgorICAgIC8vIElm
IHdlIG5lZWRlZCB0byBwZXJmb3JtIGFuIGFyaXR5IGNoZWNrIHdlIHdpbGwgYWxyZWFkeSBoYXZl
IG1vdmVkIHRoZSByZXR1cm4gYWRkcmVzcywKKyAgICAvLyBzbyBlbnRlciBhZnRlciB0aGlzLgor
ICAgIExhYmVsIGZyb21Bcml0eUNoZWNrKHRoaXMpOworICAgIC8vIFNldHVwIGEgcG9pbnRlciB0
byB0aGUgY29kZWJsb2NrIGluIHRoZSBDYWxsRnJhbWVIZWFkZXIuCisgICAgZW1pdFB1dEltbWVk
aWF0ZVRvQ2FsbEZyYW1lSGVhZGVyKG1fY29kZUJsb2NrLCBSZWdpc3RlckZpbGU6OkNvZGVCbG9j
ayk7CisgICAgLy8gUGxhbnQgYSBjaGVjayB0aGF0IHN1ZmZpY2llbnQgc3BhY2UgaXMgYXZhaWxh
YmxlIGluIHRoZSBSZWdpc3RlckZpbGUuCisgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjI5MQorICAgIGFkZFB0cihJbW0zMihtX2NvZGVCbG9j
ay0+bV9udW1DYWxsZWVSZWdpc3RlcnMgKiBzaXplb2YoUmVnaXN0ZXIpKSwgR1BSSW5mbzo6Y2Fs
bEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OnJlZ1QxKTsKKyAgICBKdW1wIHJlZ2lzdGVyRmlsZUNo
ZWNrID0gYnJhbmNoUHRyKEJlbG93LCBBYnNvbHV0ZUFkZHJlc3MobV9nbG9iYWxEYXRhLT5pbnRl
cnByZXRlci0+cmVnaXN0ZXJGaWxlKCkuYWRkcmVzc09mRW5kKCkpLCBHUFJJbmZvOjpyZWdUMSk7
CisgICAgLy8gUmV0dXJuIGhlcmUgYWZ0ZXIgcmVnaXN0ZXIgZmlsZSBjaGVjay4KKyAgICBMYWJl
bCBmcm9tUmVnaXN0ZXJGaWxlQ2hlY2sgPSBsYWJlbCgpOworCisKKyAgICAvLyA9PT0gRnVuY3Rp
b24gYm9keSBjb2RlIGdlbmVyYXRpb24gPT09CisgICAgY29tcGlsZUJvZHkoKTsKKworICAgIC8v
ID09PSBGdW5jdGlvbiBmb290ZXIgY29kZSBnZW5lcmF0aW9uID09PQorICAgIC8vCisgICAgLy8g
R2VuZXJhdGUgY29kZSB0byBwZXJmb3JtIHRoZSBzbG93IHJlZ2lzdGVyIGZpbGUgY2hlY2sgKGlm
IHRoZSBmYXN0IG9uZSBpbgorICAgIC8vIHRoZSBmdW5jdGlvbiBoZWFkZXIgZmFpbHMpLCBhbmQg
Z2VuZXJhdGUgdGhlIGVudHJ5IHBvaW50IHdpdGggYXJpdHkgY2hlY2suCisgICAgLy8KKyAgICAv
LyBHZW5lcmF0ZSB0aGUgcmVnaXN0ZXIgZmlsZSBjaGVjazsgaWYgdGhlIGZhc3QgY2hlY2sgaW4g
dGhlIGZ1bmN0aW9uIGhlYWQgZmFpbHMsCisgICAgLy8gd2UgbmVlZCB0byBjYWxsIG91dCB0byBh
IGhlbHBlciBmdW5jdGlvbiB0byBjaGVjayB3aGV0aGVyIG1vcmUgc3BhY2UgaXMgYXZhaWxhYmxl
LgorICAgIC8vIEZJWE1FOiBjaGFuZ2UgdGhpcyBmcm9tIGEgY3RpIGNhbGwgdG8gYSBERkcgc3R5
bGUgb3BlcmF0aW9uIChub3JtYWwgQyBjYWxsaW5nIGNvbnZlbnRpb25zKS4KKyAgICByZWdpc3Rl
ckZpbGVDaGVjay5saW5rKHRoaXMpOworICAgIG1vdmUoc3RhY2tQb2ludGVyUmVnaXN0ZXIsIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgcG9rZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rl
ciwgT0JKRUNUX09GRlNFVE9GKHN0cnVjdCBKSVRTdGFja0ZyYW1lLCBjYWxsRnJhbWUpIC8gc2l6
ZW9mKHZvaWQqKSk7CisgICAgQ2FsbCBjYWxsUmVnaXN0ZXJGaWxlQ2hlY2sgPSBjYWxsKCk7Cisg
ICAganVtcChmcm9tUmVnaXN0ZXJGaWxlQ2hlY2spOworICAgIAorICAgIC8vIFRoZSBmYXN0IGVu
dHJ5IHBvaW50IGludG8gYSBmdW5jdGlvbiBkb2VzIG5vdCBjaGVjayB0aGUgY29ycmVjdCBudW1i
ZXIgb2YgYXJndW1lbnRzCisgICAgLy8gaGF2ZSBiZWVuIHBhc3NlZCB0byB0aGUgY2FsbCAod2Ug
b25seSB1c2UgdGhlIGZhc3QgZW50cnkgcG9pbnQgd2hlcmUgd2UgY2FuIHN0YXRpY2FsbHkKKyAg
ICAvLyBkZXRlcm1pbmUgdGhlIGNvcnJlY3QgbnVtYmVyIG9mIGFyZ3VtZW50cyBoYXZlIGJlZW4g
cGFzc2VkLCBvciBoYXZlIGFscmVhZHkgY2hlY2tlZCkuCisgICAgLy8gSW4gY2FzZXMgd2hlcmUg
YW4gYXJpdHkgY2hlY2sgaXMgbmVjZXNzYXJ5LCB3ZSBlbnRlciBoZXJlLgorICAgIC8vIEZJWE1F
OiBjaGFuZ2UgdGhpcyBmcm9tIGEgY3RpIGNhbGwgdG8gYSBERkcgc3R5bGUgb3BlcmF0aW9uIChu
b3JtYWwgQyBjYWxsaW5nIGNvbnZlbnRpb25zKS4KKyAgICBMYWJlbCBhcml0eUNoZWNrID0gbGFi
ZWwoKTsKKyAgICBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwoR1BSSW5mbzo6cmVnVDIp
OworICAgIGVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcihHUFJJbmZvOjpyZWdUMiwgUmVnaXN0ZXJG
aWxlOjpSZXR1cm5QQyk7CisgICAgYnJhbmNoMzIoRXF1YWwsIEdQUkluZm86OnJlZ1QxLCBJbW0z
MihtX2NvZGVCbG9jay0+bV9udW1QYXJhbWV0ZXJzKSkubGlua1RvKGZyb21Bcml0eUNoZWNrLCB0
aGlzKTsKKyAgICBtb3ZlKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApOworICAgIHBva2UoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIE9CSkVDVF9PRkZTRVRP
RihzdHJ1Y3QgSklUU3RhY2tGcmFtZSwgY2FsbEZyYW1lKSAvIHNpemVvZih2b2lkKikpOworICAg
IENhbGwgY2FsbEFyaXR5Q2hlY2sgPSBjYWxsKCk7CisgICAgbW92ZShHUFJJbmZvOjpyZWdUMCwg
R1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgIGp1bXAoZnJvbUFyaXR5Q2hlY2spOwor
CisKKyAgICAvLyA9PT0gTGluayA9PT0KKyAgICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIoKm1fZ2xv
YmFsRGF0YSwgdGhpcywgbV9nbG9iYWxEYXRhLT5leGVjdXRhYmxlQWxsb2NhdG9yKTsKKyAgICBs
aW5rKGxpbmtCdWZmZXIpOwogICAgIAogICAgIC8vIEZJWE1FOiBzd2l0Y2ggdGhlIHJlZ2lzdGVy
IGZpbGUgY2hlY2sgJiBhcml0eSBjaGVjayBvdmVyIHRvIERGR09wZXJ0YWlvbiBzdHlsZSBjYWxs
cywgbm90IEpJVCBzdHVicy4KICAgICBsaW5rQnVmZmVyLmxpbmsoY2FsbFJlZ2lzdGVyRmlsZUNo
ZWNrLCBjdGlfcmVnaXN0ZXJfZmlsZV9jaGVjayk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdKSVRDb21waWxlci5oCShyZXZpc2lvbiA5MTE2NCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTEwLDkg
KzExMCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIDogbV9nbG9iYWxEYXRhKGdsb2JhbERhdGEpCiAg
ICAgICAgICwgbV9ncmFwaChkZmcpCiAgICAgICAgICwgbV9jb2RlQmxvY2soY29kZUJsb2NrKQor
ICAgICAgICAsIG1fZXhjZXB0aW9uQ2hlY2tDb3VudCgwKQogICAgIHsKICAgICB9CiAKKyAgICB2
b2lkIGNvbXBpbGUoSklUQ29kZSYgZW50cnkpOwogICAgIHZvaWQgY29tcGlsZUZ1bmN0aW9uKEpJ
VENvZGUmIGVudHJ5LCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImIGVudHJ5V2l0aEFyaXR5Q2hlY2sp
OwogCiAgICAgLy8gQWNjZXNzb3JzIGZvciBwcm9wZXJ0aWVzLgpAQCAtMjc5LDYgKzI4MSwxMSBA
QCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgorICAgIC8vIEludGVybmFsIGltcGxlbWVudGF0
aW9uIHRvIGNvbXBpbGUuCisgICAgdm9pZCBjb21waWxlRW50cnkoKTsKKyAgICB2b2lkIGNvbXBp
bGVCb2R5KCk7CisgICAgdm9pZCBsaW5rKExpbmtCdWZmZXImKTsKKwogICAgIC8vIFRoZXNlIG1l
dGhvZHMgdXNlZCBpbiBsaW5raW5nIHRoZSBzcGVjdWxhdGl2ZSAmIG5vbi1zcGVjdWxhdGl2ZSBw
YXRocyB0b2dldGhlci4KICAgICB2b2lkIGZpbGxOdW1lcmljVG9Eb3VibGUoTm9kZUluZGV4LCBG
UFJSZWcsIEdQUlJlZyB0ZW1wb3JhcnkpOwogICAgIHZvaWQgZmlsbEludDMyVG9JbnRlZ2VyKE5v
ZGVJbmRleCwgR1BSUmVnKTsKQEAgLTI5Niw3ICszMDMsOSBAQCBwcml2YXRlOgogICAgIENvZGVC
bG9jayogbV9jb2RlQmxvY2s7CiAKICAgICAvLyBWZWN0b3Igb2YgY2FsbHMgb3V0IGZyb20gSklU
IGNvZGUsIGluY2x1ZGluZyBleGNlcHRpb24gaGFuZGxlciBpbmZvcm1hdGlvbi4KKyAgICAvLyBD
b3VudCBvZiB0aGUgbnVtYmVyIG9mIENhbGxSZWNvcmRzIHdpdGggZXhjZXB0aW9uIGhhbmRsZXJz
LgogICAgIFZlY3RvcjxDYWxsUmVjb3JkPiBtX2NhbGxzOworICAgIHVuc2lnbmVkIG1fZXhjZXB0
aW9uQ2hlY2tDb3VudDsKIAogICAgIHN0cnVjdCBQcm9wZXJ0eUFjY2Vzc1JlY29yZCB7CiAgICAg
ICAgIFByb3BlcnR5QWNjZXNzUmVjb3JkKENhbGwgZnVuY3Rpb25DYWxsLCBpbnQ4X3QgZGVsdGFD
aGVja0ltbVRvQ2FsbCwgaW50OF90IGRlbHRhQ2FsbFRvU3RydWN0Q2hlY2ssIGludDhfdCBkZWx0
YUNhbGxUb0xvYWRPclN0b3JlLCBpbnQ4X3QgZGVsdGFDYWxsVG9TbG93Q2FzZSwgaW50OF90IGRl
bHRhQ2FsbFRvRG9uZSwgaW50OF90IGJhc2VHUFIsIGludDhfdCB2YWx1ZUdQUiwgaW50OF90IHNj
cmF0Y2hHUFIpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRh
YmxlLmNwcAkocmV2aXNpb24gOTExNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGVjdXRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNTEgQEAgbmFtZXNw
YWNlIEpTQyB7CiBjb25zdCBDbGFzc0luZm8gRXhlY3V0YWJsZUJhc2U6OnNfaW5mbyA9IHsgIkV4
ZWN1dGFibGUiLCAwLCAwLCAwIH07CiAKICNpZiBFTkFCTEUoSklUKQorI2lmIEVOQUJMRShERkdf
SklUKQorc3RhdGljIGJvb2wgdHJ5REZHQ29tcGlsZShFeGVjU3RhdGUqIGV4ZWMsIENvZGVCbG9j
ayogY29kZUJsb2NrLCBKSVRDb2RlJiBqaXRDb2RlKQoreworI2lmIEVOQUJMRShERkdfSklUX1JF
U1RSSUNUSU9OUykKKyAgICAvLyBGSVhNRTogTm8gZmxvdyBjb250cm9sIHlldCBzdXBwb3J0ZWQs
IGRvbid0IGJvdGhlciBzY2FubmluZyB0aGUgYnl0ZWNvZGUgaWYgdGhlcmUgYXJlIGFueSBqdW1w
IHRhcmdldHMuCisgICAgaWYgKGNvZGVCbG9jay0+bnVtYmVyT2ZKdW1wVGFyZ2V0cygpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CisgICAgREZHOjpHcmFwaCBkZmcoY29kZUJsb2NrLT5t
X251bVBhcmFtZXRlcnMsIGNvZGVCbG9jay0+bV9udW1WYXJzKTsKKyAgICBpZiAoIXBhcnNlKGRm
ZywgZ2xvYmFsRGF0YSwgY29kZUJsb2NrKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
ZGZnLnByZWRpY3RBcmd1bWVudFR5cGVzKGV4ZWMpOworCisgICAgREZHOjpKSVRDb21waWxlciBk
YXRhRmxvd0pJVChnbG9iYWxEYXRhLCBkZmcsIGNvZGVCbG9jayk7CisgICAgZGF0YUZsb3dKSVQu
Y29tcGlsZShqaXRDb2RlKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wgdHJ5
REZHQ29tcGlsZUZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IEpJVENvZGUmIGppdENvZGUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYgaml0Q29kZVdpdGhBcml0
eUNoZWNrKQoreworI2lmIEVOQUJMRShERkdfSklUX1JFU1RSSUNUSU9OUykKKyAgICAvLyBGSVhN
RTogTm8gZmxvdyBjb250cm9sIHlldCBzdXBwb3J0ZWQsIGRvbid0IGJvdGhlciBzY2FubmluZyB0
aGUgYnl0ZWNvZGUgaWYgdGhlcmUgYXJlIGFueSBqdW1wIHRhcmdldHMuCisgICAgaWYgKGNvZGVC
bG9jay0+bnVtYmVyT2ZKdW1wVGFyZ2V0cygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5k
aWYKKworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7
CisgICAgREZHOjpHcmFwaCBkZmcoY29kZUJsb2NrLT5tX251bVBhcmFtZXRlcnMsIGNvZGVCbG9j
ay0+bV9udW1WYXJzKTsKKyAgICBpZiAoIXBhcnNlKGRmZywgZ2xvYmFsRGF0YSwgY29kZUJsb2Nr
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZGZnLnByZWRpY3RBcmd1bWVudFR5cGVz
KGV4ZWMpOworCisgICAgREZHOjpKSVRDb21waWxlciBkYXRhRmxvd0pJVChnbG9iYWxEYXRhLCBk
ZmcsIGNvZGVCbG9jayk7CisgICAgZGF0YUZsb3dKSVQuY29tcGlsZUZ1bmN0aW9uKGppdENvZGUs
IGppdENvZGVXaXRoQXJpdHlDaGVjayk7CisgICAgcmV0dXJuIHRydWU7Cit9CisjZWxzZQorc3Rh
dGljIGJvb2wgdHJ5REZHQ29tcGlsZShFeGVjU3RhdGUqLCBDb2RlQmxvY2sqLCBKSVRDb2RlJikg
eyByZXR1cm4gZmFsc2U7IH0KK3N0YXRpYyBib29sIHRyeURGR0NvbXBpbGVGdW5jdGlvbihFeGVj
U3RhdGUqLCBDb2RlQmxvY2sqLCBKSVRDb2RlJiwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJikgeyBy
ZXR1cm4gZmFsc2U7IH0KKyNlbmRpZgorCiBjbGFzcyBFeGVjdXRhYmxlRmluYWxpemVyIDogcHVi
bGljIFdlYWtIYW5kbGVPd25lciB7CiAgICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEhhbmRsZTxV
bmtub3duPiBoYW5kbGUsIHZvaWQqKQogICAgIHsKQEAgLTIyNiw3ICsyNzEsOSBAQCBKU09iamVj
dCogUHJvZ3JhbUV4ZWN1dGFibGU6OmNvbXBpbGVJbnRlCiAKICNpZiBFTkFCTEUoSklUKQogICAg
IGlmIChleGVjLT5nbG9iYWxEYXRhKCkuY2FuVXNlSklUKCkpIHsKLSAgICAgICAgbV9qaXRDb2Rl
Rm9yQ2FsbCA9IEpJVDo6Y29tcGlsZShzY29wZUNoYWluTm9kZS0+Z2xvYmFsRGF0YSwgbV9wcm9n
cmFtQ29kZUJsb2NrLmdldCgpKTsKKyAgICAgICAgYm9vbCBkZmdDb21waWxlZCA9IHRyeURGR0Nv
bXBpbGUoZXhlYywgbV9wcm9ncmFtQ29kZUJsb2NrLmdldCgpLCBtX2ppdENvZGVGb3JDYWxsKTsK
KyAgICAgICAgaWYgKCFkZmdDb21waWxlZCkKKyAgICAgICAgICAgIG1faml0Q29kZUZvckNhbGwg
PSBKSVQ6OmNvbXBpbGUoc2NvcGVDaGFpbk5vZGUtPmdsb2JhbERhdGEsIG1fcHJvZ3JhbUNvZGVC
bG9jay5nZXQoKSk7CiAjaWYgIUVOQUJMRShPUENPREVfU0FNUExJTkcpCiAgICAgICAgIGlmICgh
Qnl0ZWNvZGVHZW5lcmF0b3I6OmR1bXBzR2VuZXJhdGVkQ29kZSgpKQogICAgICAgICAgICAgbV9w
cm9ncmFtQ29kZUJsb2NrLT5kaXNjYXJkQnl0ZWNvZGUoKTsKQEAgLTI1OCwzNiArMzA1LDYgQEAg
dm9pZCBQcm9ncmFtRXhlY3V0YWJsZTo6dW5saW5rQ2FsbHMoKQogI2VuZGlmCiB9CiAKLSNpZiBF
TkFCTEUoSklUKQotc3RhdGljIGJvb2wgdHJ5REZHQ29tcGlsZShFeGVjU3RhdGUqIGV4ZWMsIENv
ZGVCbG9jayogY29kZUJsb2NrLCBKSVRDb2RlJiBqaXRDb2RlLCBNYWNyb0Fzc2VtYmxlckNvZGVQ
dHImIGppdENvZGVXaXRoQXJpdHlDaGVjaykKLXsKLSAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOwotI2lmIEVOQUJMRShERkdfSklUKQotI2lmIEVOQUJM
RShERkdfSklUX1JFU1RSSUNUSU9OUykKLSAgICAvLyBGSVhNRTogTm8gZmxvdyBjb250cm9sIHll
dCBzdXBwb3J0ZWQsIGRvbid0IGJvdGhlciBzY2FubmluZyB0aGUgYnl0ZWNvZGUgaWYgdGhlcmUg
YXJlIGFueSBqdW1wIHRhcmdldHMuCi0gICAgaWYgKGNvZGVCbG9jay0+bnVtYmVyT2ZKdW1wVGFy
Z2V0cygpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKLQotICAgIERGRzo6R3JhcGgg
ZGZnKGNvZGVCbG9jay0+bV9udW1QYXJhbWV0ZXJzLCBjb2RlQmxvY2stPm1fbnVtVmFycyk7Ci0g
ICAgaWYgKCFwYXJzZShkZmcsIGdsb2JhbERhdGEsIGNvZGVCbG9jaykpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIGRmZy5wcmVkaWN0QXJndW1lbnRUeXBlcyhleGVjKTsKLQotICAgIERG
Rzo6SklUQ29tcGlsZXIgZGF0YUZsb3dKSVQoZ2xvYmFsRGF0YSwgZGZnLCBjb2RlQmxvY2spOwot
ICAgIGRhdGFGbG93SklULmNvbXBpbGVGdW5jdGlvbihqaXRDb2RlLCBqaXRDb2RlV2l0aEFyaXR5
Q2hlY2spOwotICAgIHJldHVybiB0cnVlOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oZ2xvYmFs
RGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKGNvZGVCbG9jayk7Ci0gICAgVU5VU0VEX1BBUkFNKGpp
dENvZGUpOwotICAgIFVOVVNFRF9QQVJBTShqaXRDb2RlV2l0aEFyaXR5Q2hlY2spOwotICAgIHJl
dHVybiBmYWxzZTsKLSNlbmRpZgotfQotI2VuZGlmCi0KIHZvaWQgUHJvZ3JhbUV4ZWN1dGFibGU6
OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyh0aGlzLCAmc19pbmZvKTsKQEAgLTMzMiw3ICszNDksNyBAQCBKU09iamVj
dCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9yCiAKICNpZiBFTkFCTEUoSklUKQogICAg
IGlmIChleGVjLT5nbG9iYWxEYXRhKCkuY2FuVXNlSklUKCkpIHsKLSAgICAgICAgYm9vbCBkZmdD
b21waWxlZCA9IHRyeURGR0NvbXBpbGUoZXhlYywgbV9jb2RlQmxvY2tGb3JDYWxsLmdldCgpLCBt
X2ppdENvZGVGb3JDYWxsLCBtX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2spOworICAgICAg
ICBib29sIGRmZ0NvbXBpbGVkID0gdHJ5REZHQ29tcGlsZUZ1bmN0aW9uKGV4ZWMsIG1fY29kZUJs
b2NrRm9yQ2FsbC5nZXQoKSwgbV9qaXRDb2RlRm9yQ2FsbCwgbV9qaXRDb2RlRm9yQ2FsbFdpdGhB
cml0eUNoZWNrKTsKICAgICAgICAgaWYgKCFkZmdDb21waWxlZCkKICAgICAgICAgICAgIG1faml0
Q29kZUZvckNhbGwgPSBKSVQ6OmNvbXBpbGUoc2NvcGVDaGFpbk5vZGUtPmdsb2JhbERhdGEsIG1f
Y29kZUJsb2NrRm9yQ2FsbC5nZXQoKSwgJm1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjayk7
CiAK
</data>
<flag name="review"
          id="96067"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>