<?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>124171</bug_id>
          
          <creation_ts>2013-11-11 16:29:10 -0800</creation_ts>
          <short_desc>Get rid of the lastResultRegister optimization in the baseline JIT</short_desc>
          <delta_ts>2013-11-11 19:26:46 -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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>124138</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>mario</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>949482</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-11-11 16:29:10 -0800</bug_when>
    <thetext>It causes way too many bugs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>949486</commentid>
    <comment_count>1</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-11-11 16:34:13 -0800</bug_when>
    <thetext>Already rs=markh</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>949492</commentid>
    <comment_count>2</comment_count>
      <attachid>216622</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-11-11 16:52:40 -0800</bug_when>
    <thetext>Created attachment 216622
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>949521</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-11-11 19:26:46 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/159091</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>216622</attachid>
            <date>2013-11-11 16:52:40 -0800</date>
            <delta_ts>2013-11-11 16:52:40 -0800</delta_ts>
            <desc>patch for landing</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>42216</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU5MDgzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkwIEBA
CisyMDEzLTExLTExICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
R2V0IHJpZCBvZiB0aGUgbGFzdFJlc3VsdFJlZ2lzdGVyIG9wdGltaXphdGlvbiBpbiB0aGUgYmFz
ZWxpbmUgSklUCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMjQxNzEKKworICAgICAgICBSdWJiZXIgc3RhbXBlZCBieSBNYXJrIEhhaG5lbmJlcmcuCisg
ICAgICAgIAorICAgICAgICBUaGUgYmFzZWxpbmUgSklUIG5vIGxvbmdlciBuZWVkcyBhbWF6aW5n
IHRocm91Z2hwdXQuIEFuZCB0aGlzIG9wdGltaXphdGlvbiBoYXMgY2F1c2VkCisgICAgICAgIHdh
eSB0b28gbWFueSBPU1IgZXhpdCBidWdzLiBBbmQgaXQgY29uc3RyYWlucyBob3cgbXVjaCB3ZSBj
YW4gZG8gaW4gdGhlIERGRy9GVEwuIFNvLAorICAgICAgICBJJ20gZ2V0dGluZyByaWQgb2YgaXQu
CisKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6T1NS
RXhpdDo6T1NSRXhpdCk6CisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdDo6Y29udmVydFRvRm9y
d2FyZCk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXQuaDoKKyAgICAgICAgKiBkZmcvREZHT1NS
RXhpdENvbXBpbGVyMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXRDb21waWxl
cjo6Y29tcGlsZUV4aXQpOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdCk6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6U3BlY3VsYXRpdmVKSVQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlTW92SGludCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVDdXJyZW50QmxvY2spOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5oOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvTExWTS5jcHA6CisgICAgICAgIChKU0M6
OkZUTDo6TG93ZXJERkdUb0xMVk06Okxvd2VyREZHVG9MTFZNKToKKyAgICAgICAgKEpTQzo6RlRM
OjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZVpvbWJpZUhpbnQpOgorICAgICAgICAoSlNDOjpGVEw6
Okxvd2VyREZHVG9MTFZNOjpjb21waWxlSW52YWxpZGF0aW9uUG9pbnQpOgorICAgICAgICAoSlND
OjpGVEw6Okxvd2VyREZHVG9MTFZNOjphcHBlbmRPU1JFeGl0KToKKyAgICAgICAgKEpTQzo6RlRM
OjpMb3dlckRGR1RvTExWTTo6b2JzZXJ2ZU1vdkhpbnQpOgorICAgICAgICAqIGZ0bC9GVExPU1JF
eGl0LmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpPU1JFeGl0OjpPU1JFeGl0KToKKyAgICAgICAg
KEpTQzo6RlRMOjpPU1JFeGl0Ojpjb252ZXJ0VG9Gb3J3YXJkKToKKyAgICAgICAgKiBmdGwvRlRM
T1NSRXhpdC5oOgorICAgICAgICAqIGZ0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwOgorICAgICAg
ICAoSlNDOjpGVEw6OmNvbXBpbGVTdHViKToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUOjpKSVQpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFp
blBhc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKToKKyAg
ICAgICAgKiBqaXQvSklULmg6CisgICAgICAgIChKU0M6OkpJVDo6YXBwZW5kQ2FsbCk6CisgICAg
ICAgICogaml0L0pJVEFyaXRobWV0aWMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF9sc2hpZnQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRSaWdodFNoaWZ0KToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2JpdGFuZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9iaXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9iaXR4b3IpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfaW5jKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2RlYyk6
CisgICAgICAgICogaml0L0pJVENhbGwuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRQdXRD
YWxsUmVzdWx0KToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlTG9hZFZhcmFyZ3MpOgorICAg
ICAgICAqIGppdC9KSVRJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEdldEZyb21D
YWxsRnJhbWVIZWFkZXJQdHIpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRHZXRGcm9tQ2FsbEZy
YW1lSGVhZGVyMzIpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVh
ZGVyNjQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRMb2FkVGFnKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0TG9hZFBheWxvYWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRMb2FkMik6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdEdldFZpcnR1YWxSZWdpc3Rlcik6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdEdldFZpcnR1YWxSZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRQ
dXRWaXJ0dWFsUmVnaXN0ZXIpOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX21vdik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9j
YXRjaCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXdfZnVuYyk6CisgICAgICAgICog
aml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9tb3Yp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfdG9fcHJpbWl0aXZlKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX3RvX251bWJlcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9j
YXRjaCk6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX3Jlc29sdmVfc2NvcGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfZ2V0X2Zyb21fc2NvcGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X3RvX3Nj
b3BlKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX2dldF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfcG5hbWUp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRSZXNvbHZlQ2xvc3VyZSk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9yZXNvbHZlX3Njb3BlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2dldF9mcm9tX3Njb3BlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2luaXRfZ2xvYmFs
X2NvbnN0KToKKyAgICAgICAgKiBqaXQvU2xvd1BhdGhDYWxsLmg6CisgICAgICAgIChKU0M6OkpJ
VFNsb3dQYXRoQ2FsbDo6Y2FsbCk6CisKIDIwMTMtMTEtMTEgIEZpbGlwIFBpemxvICA8ZnBpemxv
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgQ29uc3RhbnRGb2xkaW5nUGhhc2UncyB3ZWly
ZG8gY29tcGlsZS10aW1lIG9wdGltaXphdGlvbgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFeGl0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkV4aXQuY3BwCShyZXZpc2lvbiAxNTkwNjMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw2IEBA
IE9TUkV4aXQ6Ok9TUkV4aXQoRXhpdEtpbmQga2luZCwgSlNWYWx1ZVMKICAgICAsIG1fcGF0Y2hh
YmxlQ29kZU9mZnNldCgwKQogICAgICwgbV9yZWNvdmVyeUluZGV4KHJlY292ZXJ5SW5kZXgpCiAg
ICAgLCBtX3N0cmVhbUluZGV4KHN0cmVhbUluZGV4KQotICAgICwgbV9sYXN0U2V0T3BlcmFuZChq
aXQtPm1fbGFzdFNldE9wZXJhbmQpCiB7CiAgICAgQVNTRVJUKG1fY29kZU9yaWdpbi5pc1NldCgp
KTsKIH0KQEAgLTg1LDcgKzg0LDYgQEAgdm9pZCBPU1JFeGl0Ojpjb252ZXJ0VG9Gb3J3YXJkKEJh
c2ljQmxvYwogICAgIAogICAgIEFTU0VSVChsYXN0TW92SGludCk7CiAgICAgQVNTRVJUKGxhc3RN
b3ZIaW50LT5jaGlsZDEoKSA9PSBjdXJyZW50Tm9kZSk7Ci0gICAgbV9sYXN0U2V0T3BlcmFuZCA9
IGxhc3RNb3ZIaW50LT5sb2NhbCgpOwogICAgIG1fdmFsdWVSZWNvdmVyeU92ZXJyaWRlID0gYWRv
cHRSZWYoCiAgICAgICAgIG5ldyBWYWx1ZVJlY292ZXJ5T3ZlcnJpZGUobGFzdE1vdkhpbnQtPmxv
Y2FsKCksIHZhbHVlUmVjb3ZlcnkpKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRXhpdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSRXhpdC5oCShyZXZpc2lvbiAxNTkwNjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkV4aXQuaAkod29ya2luZyBjb3B5KQpAQCAtMTA1LDcgKzEwNSw2IEBAIHN0cnVj
dCBPU1JFeGl0IDogcHVibGljIE9TUkV4aXRCYXNlIHsKICAgICB2b2lkIGNvbnZlcnRUb0Zvcndh
cmQoQmFzaWNCbG9jayosIE5vZGUqLCB1bnNpZ25lZCBub2RlSW5kZXgsIGNvbnN0IFZhbHVlUmVj
b3ZlcnkmKTsKIAogICAgIHVuc2lnbmVkIG1fc3RyZWFtSW5kZXg7Ci0gICAgVmlydHVhbFJlZ2lz
dGVyIG1fbGFzdFNldE9wZXJhbmQ7CiAgICAgCiAgICAgUmVmUHRyPFZhbHVlUmVjb3ZlcnlPdmVy
cmlkZT4gbV92YWx1ZVJlY292ZXJ5T3ZlcnJpZGU7CiB9OwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHAJKHJldmlz
aW9uIDE1OTA2MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBp
bGVyMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OTMsMTQgKzQ5Myw3IEBAIHZvaWQgT1NS
RXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChjb25zdCAKICAgICAgICAgfQogICAgIH0KICAgICAK
LSAgICAvLyAxMSkgTG9hZCB0aGUgcmVzdWx0IG9mIHRoZSBsYXN0IGJ5dGVjb2RlIG9wZXJhdGlv
biBpbnRvIHJlZ1QwLgotICAgIAotICAgIGlmIChleGl0Lm1fbGFzdFNldE9wZXJhbmQuaXNWYWxp
ZCgpKSB7Ci0gICAgICAgIG1faml0LmxvYWQzMihBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3Io
ZXhpdC5tX2xhc3RTZXRPcGVyYW5kKSwgR1BSSW5mbzo6Y2FjaGVkUmVzdWx0UmVnaXN0ZXIpOwot
ICAgICAgICBtX2ppdC5sb2FkMzIoQXNzZW1ibHlIZWxwZXJzOjp0YWdGb3IoZXhpdC5tX2xhc3RT
ZXRPcGVyYW5kKSwgR1BSSW5mbzo6Y2FjaGVkUmVzdWx0UmVnaXN0ZXIyKTsKLSAgICB9Ci0gICAg
Ci0gICAgLy8gMTIpIEFuZCBmaW5pc2guCisgICAgLy8gMTEpIEFuZCBmaW5pc2guCiAgICAgCiAg
ICAgYWRqdXN0QW5kSnVtcFRvVGFyZ2V0KG1faml0LCBleGl0KTsKIH0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwCShyZXZp
c2lvbiAxNTkwNjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21w
aWxlcjY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMyLDEyICs0MzIsNyBAQCB2b2lkIE9TUkV4
aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoY29uc3QgCiAgICAgICAgIH0KICAgICB9CiAgICAgCi0g
ICAgLy8gMTEpIExvYWQgdGhlIHJlc3VsdCBvZiB0aGUgbGFzdCBieXRlY29kZSBvcGVyYXRpb24g
aW50byByZWdUMC4KLSAgICAKLSAgICBpZiAoZXhpdC5tX2xhc3RTZXRPcGVyYW5kLmlzVmFsaWQo
KSkKLSAgICAgICAgbV9qaXQubG9hZDY0KEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihleGl0
Lm1fbGFzdFNldE9wZXJhbmQpLCBHUFJJbmZvOjpjYWNoZWRSZXN1bHRSZWdpc3Rlcik7Ci0gICAg
Ci0gICAgLy8gMTIpIEFuZCBmaW5pc2guCisgICAgLy8gMTEpIEFuZCBmaW5pc2guCiAgICAgCiAg
ICAgYWRqdXN0QW5kSnVtcFRvVGFyZ2V0KG1faml0LCBleGl0KTsKIH0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAx
NTkwNjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNiBAQCBTcGVjdWxhdGl2ZUpJVDo6U3BlY3Vs
YXRpdmVKSVQoSklUQ29tcGlsCiAgICAgLCBtX2N1cnJlbnROb2RlKDApCiAgICAgLCBtX2luZGV4
SW5CbG9jaygwKQogICAgICwgbV9nZW5lcmF0aW9uSW5mbyhtX2ppdC5jb2RlQmxvY2soKS0+bV9u
dW1DYWxsZWVSZWdpc3RlcnMpCi0gICAgLCBtX2xhc3RTZXRPcGVyYW5kKFZpcnR1YWxSZWdpc3Rl
cigpKQogICAgICwgbV9zdGF0ZShtX2ppdC5ncmFwaCgpKQogICAgICwgbV9pbnRlcnByZXRlciht
X2ppdC5ncmFwaCgpLCBtX3N0YXRlKQogICAgICwgbV9zdHJlYW0oJmppdC5qaXRDb2RlKCktPnZh
cmlhYmxlRXZlbnRTdHJlYW0pCkBAIC0xNTM5LDggKzE1MzgsNiBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlTW92SGludChOb2RlCiB7CiAgICAgQVNTRVJUKG5vZGUtPmNvbnRhaW5zTW92
SGludCgpICYmIG5vZGUtPm9wKCkgIT0gWm9tYmllSGludCk7CiAgICAgCi0gICAgbV9sYXN0U2V0
T3BlcmFuZCA9IG5vZGUtPmxvY2FsKCk7Ci0KICAgICBOb2RlKiBjaGlsZCA9IG5vZGUtPmNoaWxk
MSgpLm5vZGUoKTsKICAgICBub3RpY2VPU1JCaXJ0aChjaGlsZCk7CiAgICAgCkBAIC0xNjIxLDcg
KzE2MTgsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3VycmVudEJsb2NrCiAgICAg
ICAgICAgICBWYXJpYWJsZUV2ZW50OjpzZXRMb2NhbCh2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChp
KSwgdmFyaWFibGUtPm1hY2hpbmVMb2NhbCgpLCBmb3JtYXQpKTsKICAgICB9CiAgICAgCi0gICAg
bV9sYXN0U2V0T3BlcmFuZCA9IFZpcnR1YWxSZWdpc3RlcigpOwogICAgIG1fY29kZU9yaWdpbkZv
ckV4aXRUYXJnZXQgPSBDb2RlT3JpZ2luKCk7CiAgICAgbV9jb2RlT3JpZ2luRm9yRXhpdFByb2Zp
bGUgPSBDb2RlT3JpZ2luKCk7CiAgICAgCkBAIC0xNjY3LDcgKzE2NjMsNiBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlQ3VycmVudEJsb2NrCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBjYXNlIFpvbWJpZUhpbnQ6IHsKLSAgICAgICAg
ICAgICAgICBtX2xhc3RTZXRPcGVyYW5kID0gbV9jdXJyZW50Tm9kZS0+bG9jYWwoKTsKICAgICAg
ICAgICAgICAgICByZWNvcmRTZXRMb2NhbChEYXRhRm9ybWF0RGVhZCk7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAxNTkwNjMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTIy
NTQsNyArMjI1NCw2IEBAIHB1YmxpYzoKICAgICB9OwogICAgIFZlY3RvcjxCcmFuY2hSZWNvcmQs
IDg+IG1fYnJhbmNoZXM7CiAKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgbV9sYXN0U2V0T3BlcmFuZDsK
ICAgICBDb2RlT3JpZ2luIG1fY29kZU9yaWdpbkZvckV4aXRUYXJnZXQ7CiAgICAgQ29kZU9yaWdp
biBtX2NvZGVPcmlnaW5Gb3JFeGl0UHJvZmlsZTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCShyZXZpc2lvbiAxNTkwNjMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzEsNyArNzEsNiBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9oZWFwcyhz
dGF0ZS5jb250ZXh0KQogICAgICAgICAsIG1fb3V0KHN0YXRlLmNvbnRleHQpCiAgICAgICAgICwg
bV92YWx1ZVNvdXJjZXMoT3BlcmFuZHNMaWtlLCBzdGF0ZS5ncmFwaC5ibG9jaygwKS0+dmFyaWFi
bGVzQXRIZWFkKQotICAgICAgICAsIG1fbGFzdFNldE9wZXJhbmQoVmlydHVhbFJlZ2lzdGVyKCkp
CiAgICAgICAgICwgbV9zdGF0ZShzdGF0ZS5ncmFwaCkKICAgICAgICAgLCBtX2ludGVycHJldGVy
KHN0YXRlLmdyYXBoLCBtX3N0YXRlKQogICAgICAgICAsIG1fc3RhY2ttYXBJRHMoMCkKQEAgLTY3
Niw3ICs2NzUsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcGlsZVpvbWJpZUhpbnQoKQogICAg
IHsKICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiBkYXRhID0gbV9ub2RlLT52YXJpYWJsZUFj
Y2Vzc0RhdGEoKTsKLSAgICAgICAgbV9sYXN0U2V0T3BlcmFuZCA9IGRhdGEtPmxvY2FsKCk7CiAg
ICAgICAgIG1fdmFsdWVTb3VyY2VzLm9wZXJhbmQoZGF0YS0+bG9jYWwoKSkgPSBWYWx1ZVNvdXJj
ZShTb3VyY2VJc0RlYWQpOwogICAgIH0KICAgICAKQEAgLTI1NTAsNyArMjU0OCw3IEBAIHByaXZh
dGU6CiAgICAgICAgIAogICAgICAgICBtX2Z0bFN0YXRlLmppdENvZGUtPm9zckV4aXQuYXBwZW5k
KE9TUkV4aXQoCiAgICAgICAgICAgICBVbmNvdW50YWJsZUludmFsaWRhdGlvbiwgSW52YWxpZFZh
bHVlRm9ybWF0LCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlKCksCi0gICAgICAgICAgICBt
X2NvZGVPcmlnaW5Gb3JFeGl0VGFyZ2V0LCBtX2NvZGVPcmlnaW5Gb3JFeGl0UHJvZmlsZSwgbV9s
YXN0U2V0T3BlcmFuZC5vZmZzZXQoKSwKKyAgICAgICAgICAgIG1fY29kZU9yaWdpbkZvckV4aXRU
YXJnZXQsIG1fY29kZU9yaWdpbkZvckV4aXRQcm9maWxlLAogICAgICAgICAgICAgbV92YWx1ZVNv
dXJjZXMubnVtYmVyT2ZBcmd1bWVudHMoKSwgbV92YWx1ZVNvdXJjZXMubnVtYmVyT2ZMb2NhbHMo
KSkpOwogICAgICAgICBtX2Z0bFN0YXRlLmZpbmFsaXplci0+b3NyRXhpdC5hcHBlbmQoT1NSRXhp
dENvbXBpbGF0aW9uSW5mbygpKTsKICAgICAgICAgCkBAIC0zODk3LDcgKzM4OTUsNyBAQCBwcml2
YXRlOgogICAgICAgICAKICAgICAgICAgbV9mdGxTdGF0ZS5qaXRDb2RlLT5vc3JFeGl0LmFwcGVu
ZChPU1JFeGl0KAogICAgICAgICAgICAga2luZCwgbG93VmFsdWUuZm9ybWF0KCksIG1fZ3JhcGgu
bWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZUZvcihoaWdoVmFsdWUpLAotICAgICAgICAgICAg
bV9jb2RlT3JpZ2luRm9yRXhpdFRhcmdldCwgbV9jb2RlT3JpZ2luRm9yRXhpdFByb2ZpbGUsIG1f
bGFzdFNldE9wZXJhbmQub2Zmc2V0KCksCisgICAgICAgICAgICBtX2NvZGVPcmlnaW5Gb3JFeGl0
VGFyZ2V0LCBtX2NvZGVPcmlnaW5Gb3JFeGl0UHJvZmlsZSwKICAgICAgICAgICAgIG1fdmFsdWVT
b3VyY2VzLm51bWJlck9mQXJndW1lbnRzKCksIG1fdmFsdWVTb3VyY2VzLm51bWJlck9mTG9jYWxz
KCkpKTsKICAgICAgICAgbV9mdGxTdGF0ZS5maW5hbGl6ZXItPm9zckV4aXQuYXBwZW5kKE9TUkV4
aXRDb21waWxhdGlvbkluZm8oKSk7CiAgICAgICAgIApAQCAtNDExNiw3ICs0MTE0LDYgQEAgcHJp
dmF0ZToKICAgICAgICAgCiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kID0gbm9kZS0+
bG9jYWwoKTsKICAgICAgICAgCi0gICAgICAgIG1fbGFzdFNldE9wZXJhbmQgPSBvcGVyYW5kOwog
ICAgICAgICBtX3ZhbHVlU291cmNlcy5vcGVyYW5kKG9wZXJhbmQpID0gVmFsdWVTb3VyY2Uobm9k
ZS0+Y2hpbGQxKCkubm9kZSgpKTsKICAgICB9CiAgICAgCkBAIC00MjgwLDcgKzQyNzcsNiBAQCBw
cml2YXRlOgogICAgIEhhc2hNYXA8Tm9kZSosIExWYWx1ZT4gbV9waGlzOwogICAgIAogICAgIE9w
ZXJhbmRzPFZhbHVlU291cmNlPiBtX3ZhbHVlU291cmNlczsKLSAgICBWaXJ0dWFsUmVnaXN0ZXIg
bV9sYXN0U2V0T3BlcmFuZDsKICAgICAKICAgICBJblBsYWNlQWJzdHJhY3RTdGF0ZSBtX3N0YXRl
OwogICAgIEFic3RyYWN0SW50ZXJwcmV0ZXI8SW5QbGFjZUFic3RyYWN0U3RhdGU+IG1faW50ZXJw
cmV0ZXI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdC5jcHAJKHJl
dmlzaW9uIDE1OTA2MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDEzICs0MywxMiBAQCB1c2luZyBuYW1lc3BhY2UgREZH
OwogT1NSRXhpdDo6T1NSRXhpdCgKICAgICBFeGl0S2luZCBleGl0S2luZCwgVmFsdWVGb3JtYXQg
cHJvZmlsZVZhbHVlRm9ybWF0LAogICAgIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUgdmFs
dWVQcm9maWxlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sCi0gICAgQ29kZU9yaWdpbiBvcmlnaW5G
b3JQcm9maWxlLCBpbnQgbGFzdFNldE9wZXJhbmQsIHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRz
LAorICAgIENvZGVPcmlnaW4gb3JpZ2luRm9yUHJvZmlsZSwgdW5zaWduZWQgbnVtYmVyT2ZBcmd1
bWVudHMsCiAgICAgdW5zaWduZWQgbnVtYmVyT2ZMb2NhbHMpCiAgICAgOiBPU1JFeGl0QmFzZShl
eGl0S2luZCwgY29kZU9yaWdpbiwgb3JpZ2luRm9yUHJvZmlsZSkKICAgICAsIG1fcHJvZmlsZVZh
bHVlRm9ybWF0KHByb2ZpbGVWYWx1ZUZvcm1hdCkKICAgICAsIG1fdmFsdWVQcm9maWxlKHZhbHVl
UHJvZmlsZSkKICAgICAsIG1fcGF0Y2hhYmxlQ29kZU9mZnNldCgwKQotICAgICwgbV9sYXN0U2V0
T3BlcmFuZChsYXN0U2V0T3BlcmFuZCkKICAgICAsIG1fdmFsdWVzKG51bWJlck9mQXJndW1lbnRz
LCBudW1iZXJPZkxvY2FscykKIHsKIH0KQEAgLTc5LDcgKzc4LDYgQEAgdm9pZCBPU1JFeGl0Ojpj
b252ZXJ0VG9Gb3J3YXJkKAogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgVmlydHVhbFJlZ2lz
dGVyIG92ZXJyaWRkZW5PcGVyYW5kID0gbGFzdE1vdkhpbnQtPmxvY2FsKCk7Ci0gICAgbV9sYXN0
U2V0T3BlcmFuZCA9IG92ZXJyaWRkZW5PcGVyYW5kOwogICAgIAogICAgIC8vIElzIHRoZSB2YWx1
ZSBmb3IgdGhpcyBvcGVyYW5kIGJlaW5nIHBhc3NlZCBhcyBhbiBhcmd1bWVudCB0byB0aGUgZXhp
dCwgb3IgaXMKICAgICAvLyBpdCBzb21ldGhpbmcgZWxzZT8gSWYgaXQncyBhbiBhcmd1bWVudCBh
bHJlYWR5LCB0aGVuIHJlcGxhY2UgdGhhdCBhcmd1bWVudDsKQEAgLTk0LDcgKzkyLDcgQEAgdm9p
ZCBPU1JFeGl0Ojpjb252ZXJ0VG9Gb3J3YXJkKAogICAgIAogICAgIHVuc2lnbmVkIGFyZ3VtZW50
ID0gYXJndW1lbnRzLnNpemUoKTsKICAgICBhcmd1bWVudHMuYXBwZW5kKHZhbHVlLnZhbHVlKCkp
OwotICAgIG1fdmFsdWVzLm9wZXJhbmQobV9sYXN0U2V0T3BlcmFuZCkgPSBFeGl0VmFsdWU6OmV4
aXRBcmd1bWVudCgKKyAgICBtX3ZhbHVlcy5vcGVyYW5kKG92ZXJyaWRkZW5PcGVyYW5kKSA9IEV4
aXRWYWx1ZTo6ZXhpdEFyZ3VtZW50KAogICAgICAgICBFeGl0QXJndW1lbnQodmFsdWUuZm9ybWF0
KCksIGFyZ3VtZW50KSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
T1NSRXhpdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NS
RXhpdC5oCShyZXZpc2lvbiAxNTkwNjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TE9TUkV4aXQuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ1LDcgKzE0NSw3IEBAIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgRlRMIHsKIHN0cnVjdCBPU1JFeGl0IDogcHVibGljIERGRzo6T1NSRXhp
dEJhc2UgewogICAgIE9TUkV4aXQoCiAgICAgICAgIEV4aXRLaW5kLCBWYWx1ZUZvcm1hdCBwcm9m
aWxlVmFsdWVGb3JtYXQsIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUsCi0gICAgICAgIENv
ZGVPcmlnaW4sIENvZGVPcmlnaW4gb3JpZ2luRm9yUHJvZmlsZSwgaW50IGxhc3RTZXRPcGVyYW5k
LAorICAgICAgICBDb2RlT3JpZ2luLCBDb2RlT3JpZ2luIG9yaWdpbkZvclByb2ZpbGUsCiAgICAg
ICAgIHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRzLCB1bnNpZ25lZCBudW1iZXJPZkxvY2Fscyk7
CiAgICAgCiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG1fY29kZTsKQEAgLTE2MSw4ICsxNjEs
NiBAQCBzdHJ1Y3QgT1NSRXhpdCA6IHB1YmxpYyBERkc6Ok9TUkV4aXRCYXNlCiAgICAgLy8gT2Zm
c2V0IHdpdGhpbiB0aGUgZXhpdCBzdHVicyBvZiB0aGUgc3R1YiBmb3IgdGhpcyBleGl0LgogICAg
IHVuc2lnbmVkIG1fcGF0Y2hhYmxlQ29kZU9mZnNldDsKICAgICAKLSAgICBWaXJ0dWFsUmVnaXN0
ZXIgbV9sYXN0U2V0T3BlcmFuZDsKLSAgICAKICAgICBPcGVyYW5kczxFeGl0VmFsdWU+IG1fdmFs
dWVzOwogICAgIAogICAgIHVpbnQzMl90IG1fc3RhY2ttYXBJRDsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAJKHJldmlzaW9uIDE1
OTA2MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTY0LDEyICsxNjQsNiBAQCBzdGF0aWMgdm9pZCBjb21waWxl
U3R1YigKICAgICAKICAgICBoYW5kbGVFeGl0Q291bnRzKGppdCwgZXhpdCk7CiAgICAgcmVpZnlJ
bmxpbmVkQ2FsbEZyYW1lcyhqaXQsIGV4aXQpOwotICAgIAotICAgIGlmIChleGl0Lm1fbGFzdFNl
dE9wZXJhbmQuaXNWYWxpZCgpKSB7Ci0gICAgICAgIGppdC5sb2FkNjQoCi0gICAgICAgICAgICBB
c3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3IoZXhpdC5tX2xhc3RTZXRPcGVyYW5kKSwgR1BSSW5m
bzo6Y2FjaGVkUmVzdWx0UmVnaXN0ZXIpOwotICAgIH0KLSAgICAKICAgICBhZGp1c3RBbmRKdW1w
VG9UYXJnZXQoaml0LCBleGl0KTsKICAgICAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2
bSwgJmppdCwgY29kZUJsb2NrKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJl
dmlzaW9uIDE1OTA2MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkod29y
a2luZyBjb3B5KQpAQCAtODAsMTYgKzgwLDYgQEAgSklUOjpKSVQoVk0qIHZtLCBDb2RlQmxvY2sq
IGNvZGVCbG9jaykKICAgICAsIG1fcHV0QnlJZEluZGV4KFVJTlRfTUFYKQogICAgICwgbV9ieVZh
bEluc3RydWN0aW9uSW5kZXgoVUlOVF9NQVgpCiAgICAgLCBtX2NhbGxMaW5rSW5mb0luZGV4KFVJ
TlRfTUFYKQotI2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgLCBtX2p1bXBUYXJnZXRJbmRleCgw
KQotICAgICwgbV9tYXBwZWRCeXRlY29kZU9mZnNldCgodW5zaWduZWQpLTEpCi0gICAgLCBtX21h
cHBlZFZpcnR1YWxSZWdpc3RlckluZGV4KFVJTlRfTUFYKQotICAgICwgbV9tYXBwZWRUYWcoKFJl
Z2lzdGVySUQpLTEpCi0gICAgLCBtX21hcHBlZFBheWxvYWQoKFJlZ2lzdGVySUQpLTEpCi0jZWxz
ZQotICAgICwgbV9sYXN0UmVzdWx0Qnl0ZWNvZGVSZWdpc3RlcihzdGQ6Om51bWVyaWNfbGltaXRz
PGludD46Om1heCgpKQotICAgICwgbV9qdW1wVGFyZ2V0c1Bvc2l0aW9uKDApCi0jZW5kaWYKICAg
ICAsIG1fcmFuZG9tR2VuZXJhdG9yKGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyKCkpCiAj
aWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQogICAgICwgbV9jYW5CZU9wdGltaXplZChmYWxzZSkK
QEAgLTE4MSwxMSArMTcxLDYgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQog
ICAgICAgICAgICAgc2FtcGxlSW5zdHJ1Y3Rpb24oY3VycmVudEluc3RydWN0aW9uKTsKICNlbmRp
ZgogCi0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgaWYgKGF0SnVtcFRhcmdldCgpKQotICAg
ICAgICAgICAga2lsbExhc3RSZXN1bHRSZWdpc3RlcigpOwotI2VuZGlmCi0KICAgICAgICAgbV9s
YWJlbHNbbV9ieXRlY29kZU9mZnNldF0gPSBsYWJlbCgpOwogCiAjaWYgRU5BQkxFKEpJVF9WRVJC
T1NFKQpAQCAtMzc2LDEwICszNjEsNiBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2Fz
ZXMoKQogI2VuZGlmCiAKICAgICBmb3IgKFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Ig
aXRlciA9IG1fc2xvd0Nhc2VzLmJlZ2luKCk7IGl0ZXIgIT0gbV9zbG93Q2FzZXMuZW5kKCk7KSB7
Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAga2lsbExhc3RSZXN1bHRSZWdpc3RlcigpOwot
I2VuZGlmCi0KICAgICAgICAgbV9ieXRlY29kZU9mZnNldCA9IGl0ZXItPnRvOwogCiAgICAgICAg
IHVuc2lnbmVkIGZpcnN0VG8gPSBtX2J5dGVjb2RlT2Zmc2V0OwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5oCShyZXZpc2lvbiAxNTkwNjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNjYsMTEgKzI2Niw2IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB7CiAgICAgICAgICAgICBDYWxsIGZ1bmN0aW9uQ2FsbCA9IGNhbGwoKTsKICAg
ICAgICAgICAgIG1fY2FsbHMuYXBwZW5kKENhbGxSZWNvcmQoZnVuY3Rpb25DYWxsLCBtX2J5dGVj
b2RlT2Zmc2V0LCBmdW5jdGlvbi52YWx1ZSgpKSk7Ci0jaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAg
ICAgICAgICAgIHVubWFwKCk7Ci0jZWxzZQotICAgICAgICAgICAga2lsbExhc3RSZXN1bHRSZWdp
c3RlcigpOwotI2VuZGlmCiAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb25DYWxsOwogICAgICAg
ICB9CiAKQEAgLTM5MCwxOSArMzg1LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lk
IGVtaXRTdG9yZShpbnQgaW5kZXgsIGNvbnN0IEpTVmFsdWUgY29uc3RhbnQsIFJlZ2lzdGVySUQg
YmFzZSA9IGNhbGxGcmFtZVJlZ2lzdGVyKTsKICAgICAgICAgdm9pZCBlbWl0U3RvcmVJbnQzMihp
bnQgaW5kZXgsIFJlZ2lzdGVySUQgcGF5bG9hZCwgYm9vbCBpbmRleElzSW50MzIgPSBmYWxzZSk7
CiAgICAgICAgIHZvaWQgZW1pdFN0b3JlSW50MzIoaW50IGluZGV4LCBUcnVzdGVkSW1tMzIgcGF5
bG9hZCwgYm9vbCBpbmRleElzSW50MzIgPSBmYWxzZSk7Ci0gICAgICAgIHZvaWQgZW1pdFN0b3Jl
QW5kTWFwSW50MzIoaW50IGluZGV4LCBSZWdpc3RlcklEIHRhZywgUmVnaXN0ZXJJRCBwYXlsb2Fk
LCBib29sIGluZGV4SXNJbnQzMiwgc2l6ZV90IG9wY29kZUxlbmd0aCk7CiAgICAgICAgIHZvaWQg
ZW1pdFN0b3JlQ2VsbChpbnQgaW5kZXgsIFJlZ2lzdGVySUQgcGF5bG9hZCwgYm9vbCBpbmRleElz
Q2VsbCA9IGZhbHNlKTsKICAgICAgICAgdm9pZCBlbWl0U3RvcmVCb29sKGludCBpbmRleCwgUmVn
aXN0ZXJJRCBwYXlsb2FkLCBib29sIGluZGV4SXNCb29sID0gZmFsc2UpOwogICAgICAgICB2b2lk
IGVtaXRTdG9yZURvdWJsZShpbnQgaW5kZXgsIEZQUmVnaXN0ZXJJRCB2YWx1ZSk7CiAKLSAgICAg
ICAgYm9vbCBpc0xhYmVsZWQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpOwotICAgICAgICB2b2lk
IG1hcCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgaW50IHZpcnR1YWxSZWdpc3RlckluZGV4LCBS
ZWdpc3RlcklEIHRhZywgUmVnaXN0ZXJJRCBwYXlsb2FkKTsKLSAgICAgICAgdm9pZCB1bm1hcChS
ZWdpc3RlcklEKTsKLSAgICAgICAgdm9pZCB1bm1hcCgpOwotICAgICAgICBib29sIGlzTWFwcGVk
KGludCB2aXJ0dWFsUmVnaXN0ZXJJbmRleCk7Ci0gICAgICAgIGJvb2wgZ2V0TWFwcGVkUGF5bG9h
ZChpbnQgdmlydHVhbFJlZ2lzdGVySW5kZXgsIFJlZ2lzdGVySUQmIHBheWxvYWQpOwotICAgICAg
ICBib29sIGdldE1hcHBlZFRhZyhpbnQgdmlydHVhbFJlZ2lzdGVySW5kZXgsIFJlZ2lzdGVySUQm
IHRhZyk7Ci0gICAgICAgIAogICAgICAgICB2b2lkIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2Vs
bChpbnQgdmlydHVhbFJlZ2lzdGVySW5kZXgpOwogICAgICAgICB2b2lkIGVtaXRKdW1wU2xvd0Nh
c2VJZk5vdEpTQ2VsbChpbnQgdmlydHVhbFJlZ2lzdGVySW5kZXgsIFJlZ2lzdGVySUQgdGFnKTsK
IApAQCAtNDM1LDggKzQyMSw2IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIGludDMyX3Qg
Z2V0Q29uc3RhbnRPcGVyYW5kSW1tZWRpYXRlSW50KGludCBzcmMpOwogCi0gICAgICAgIHZvaWQg
a2lsbExhc3RSZXN1bHRSZWdpc3RlcigpOwotCiAgICAgICAgIEp1bXAgZW1pdEp1bXBJZkpTQ2Vs
bChSZWdpc3RlcklEKTsKICAgICAgICAgSnVtcCBlbWl0SnVtcElmQm90aEpTQ2VsbHMoUmVnaXN0
ZXJJRCwgUmVnaXN0ZXJJRCwgUmVnaXN0ZXJJRCk7CiAgICAgICAgIHZvaWQgZW1pdEp1bXBTbG93
Q2FzZUlmSlNDZWxsKFJlZ2lzdGVySUQpOwpAQCAtNjQ1LDggKzYyOSw2IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBib29sIGlzT3BlcmFuZENvbnN0YW50SW1tZWRpYXRlSW50KGludCBzcmMp
OwogICAgICAgICBib29sIGlzT3BlcmFuZENvbnN0YW50SW1tZWRpYXRlQ2hhcihpbnQgc3JjKTsK
IAotICAgICAgICBib29sIGF0SnVtcFRhcmdldCgpOwotCiAgICAgICAgIEp1bXAgZ2V0U2xvd0Nh
c2UoVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKICAgICAgICAgewogICAg
ICAgICAgICAgcmV0dXJuIGl0ZXIrKy0+ZnJvbTsKQEAgLTgxNSwxNyArNzk3LDYgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIHVuc2lnbmVkIG1fYnlWYWxJbnN0cnVjdGlvbkluZGV4OwogICAg
ICAgICB1bnNpZ25lZCBtX2NhbGxMaW5rSW5mb0luZGV4OwogCi0jaWYgVVNFKEpTVkFMVUUzMl82
NCkKLSAgICAgICAgdW5zaWduZWQgbV9qdW1wVGFyZ2V0SW5kZXg7Ci0gICAgICAgIHVuc2lnbmVk
IG1fbWFwcGVkQnl0ZWNvZGVPZmZzZXQ7Ci0gICAgICAgIGludCBtX21hcHBlZFZpcnR1YWxSZWdp
c3RlckluZGV4OwotICAgICAgICBSZWdpc3RlcklEIG1fbWFwcGVkVGFnOwotICAgICAgICBSZWdp
c3RlcklEIG1fbWFwcGVkUGF5bG9hZDsKLSNlbHNlCi0gICAgICAgIGludCBtX2xhc3RSZXN1bHRC
eXRlY29kZVJlZ2lzdGVyOwotI2VuZGlmCi0gICAgICAgIHVuc2lnbmVkIG1fanVtcFRhcmdldHNQ
b3NpdGlvbjsKLQogICAgICAgICBPd25QdHI8SklURGlzYXNzZW1ibGVyPiBtX2Rpc2Fzc2VtYmxl
cjsKICAgICAgICAgUmVmUHRyPFByb2ZpbGVyOjpDb21waWxhdGlvbj4gbV9jb21waWxhdGlvbjsK
ICAgICAgICAgV2Vha1JhbmRvbSBtX3JhbmRvbUdlbmVyYXRvcjsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYzMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMzMl82NC5jcHAJKHJldmlzaW9uIDE1
OTA2MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYzMyXzY0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTc1LDcgKzE3NSw3IEBAIHZvaWQgSklUOjplbWl0X29wX2xz
aGlmdChJbnN0cnVjdGlvbiogY3UKICAgICAgICAgZW1pdExvYWQob3AxLCByZWdUMSwgcmVnVDAp
OwogICAgICAgICBhZGRTbG93Q2FzZShicmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIFRydXN0ZWRJ
bW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpKTsKICAgICAgICAgbHNoaWZ0MzIoSW1tMzIoZ2V0Q29u
c3RhbnRPcGVyYW5kKG9wMikuYXNJbnQzMigpKSwgcmVnVDApOwotICAgICAgICBlbWl0U3RvcmVB
bmRNYXBJbnQzMihkc3QsIHJlZ1QxLCByZWdUMCwgZHN0ID09IG9wMSwgT1BDT0RFX0xFTkdUSChv
cF9sc2hpZnQpKTsKKyAgICAgICAgZW1pdFN0b3JlSW50MzIoZHN0LCByZWdUMCwgZHN0ID09IG9w
MSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE4NCw3ICsxODQsNyBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9sc2hpZnQoSW5zdHJ1Y3Rpb24qIGN1CiAgICAgICAgIGFkZFNsb3dDYXNlKGJy
YW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSkp
OwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMywgVHJ1c3RlZEltbTMy
KEpTVmFsdWU6OkludDMyVGFnKSkpOwogICAgIGxzaGlmdDMyKHJlZ1QyLCByZWdUMCk7Ci0gICAg
ZW1pdFN0b3JlQW5kTWFwSW50MzIoZHN0LCByZWdUMSwgcmVnVDAsIGRzdCA9PSBvcDEgfHwgZHN0
ID09IG9wMiwgT1BDT0RFX0xFTkdUSChvcF9sc2hpZnQpKTsKKyAgICBlbWl0U3RvcmVJbnQzMihk
c3QsIHJlZ1QwLCBkc3QgPT0gb3AxIHx8IGRzdCA9PSBvcDIpOwogfQogCiB2b2lkIEpJVDo6ZW1p
dFNsb3dfb3BfbHNoaWZ0KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCkBAIC0yMjMsNyArMjIzLDcgQEAgdm9pZCBK
SVQ6OmVtaXRSaWdodFNoaWZ0KEluc3RydWN0aW9uKiBjdQogICAgICAgICAgICAgICAgIHJzaGlm
dDMyKEltbTMyKHNoaWZ0KSwgcmVnVDApOwogICAgICAgICB9IGVsc2UgaWYgKGlzVW5zaWduZWQp
IC8vIHNpZ25lZCByaWdodCBzaGlmdCBieSB6ZXJvIGlzIHNpbXBseSB0b0ludCBjb252ZXJzaW9u
CiAgICAgICAgICAgICBhZGRTbG93Q2FzZShicmFuY2gzMihMZXNzVGhhbiwgcmVnVDAsIFRydXN0
ZWRJbW0zMigwKSkpOwotICAgICAgICBlbWl0U3RvcmVBbmRNYXBJbnQzMihkc3QsIHJlZ1QxLCBy
ZWdUMCwgZHN0ID09IG9wMSwgT1BDT0RFX0xFTkdUSChvcF9yc2hpZnQpKTsKKyAgICAgICAgZW1p
dFN0b3JlSW50MzIoZHN0LCByZWdUMCwgZHN0ID09IG9wMSk7CiAgICAgfSBlbHNlIHsKICAgICAg
ICAgZW1pdExvYWQyKG9wMSwgcmVnVDEsIHJlZ1QwLCBvcDIsIHJlZ1QzLCByZWdUMik7CiAgICAg
ICAgIGlmICghaXNPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVJbnQob3AxKSkKQEAgLTIzNCw3ICsy
MzQsNyBAQCB2b2lkIEpJVDo6ZW1pdFJpZ2h0U2hpZnQoSW5zdHJ1Y3Rpb24qIGN1CiAgICAgICAg
ICAgICBhZGRTbG93Q2FzZShicmFuY2gzMihMZXNzVGhhbiwgcmVnVDAsIFRydXN0ZWRJbW0zMigw
KSkpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHJzaGlmdDMyKHJlZ1QyLCByZWdUMCk7
Ci0gICAgICAgIGVtaXRTdG9yZUFuZE1hcEludDMyKGRzdCwgcmVnVDEsIHJlZ1QwLCBkc3QgPT0g
b3AxLCBPUENPREVfTEVOR1RIKG9wX3JzaGlmdCkpOworICAgICAgICBlbWl0U3RvcmVJbnQzMihk
c3QsIHJlZ1QwLCBkc3QgPT0gb3AxKTsKICAgICB9CiB9CiAKQEAgLTMzNyw3ICszMzcsNyBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9iaXRhbmQoSW5zdHJ1Y3Rpb24qIGN1CiAgICAgICAgIGVtaXRMb2Fk
KG9wLCByZWdUMSwgcmVnVDApOwogICAgICAgICBhZGRTbG93Q2FzZShicmFuY2gzMihOb3RFcXVh
bCwgcmVnVDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpKTsKICAgICAgICAgYW5k
MzIoSW1tMzIoY29uc3RhbnQpLCByZWdUMCk7Ci0gICAgICAgIGVtaXRTdG9yZUFuZE1hcEludDMy
KGRzdCwgcmVnVDEsIHJlZ1QwLCBkc3QgPT0gb3AsIE9QQ09ERV9MRU5HVEgob3BfYml0YW5kKSk7
CisgICAgICAgIGVtaXRTdG9yZUludDMyKGRzdCwgcmVnVDAsIGRzdCA9PSBvcCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTM0NSw3ICszNDUsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9i
aXRhbmQoSW5zdHJ1Y3Rpb24qIGN1CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoTm90RXF1YWws
IHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpKSk7CiAgICAgYWRkU2xvd0Nh
c2UoYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QzLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJU
YWcpKSk7CiAgICAgYW5kMzIocmVnVDIsIHJlZ1QwKTsKLSAgICBlbWl0U3RvcmVBbmRNYXBJbnQz
Mihkc3QsIHJlZ1QxLCByZWdUMCwgKG9wMSA9PSBkc3QgfHwgb3AyID09IGRzdCksIE9QQ09ERV9M
RU5HVEgob3BfYml0YW5kKSk7CisgICAgZW1pdFN0b3JlSW50MzIoZHN0LCByZWdUMCwgb3AxID09
IGRzdCB8fCBvcDIgPT0gZHN0KTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2JpdGFuZChJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJiBpdGVyKQpAQCAtMzc3LDcgKzM3Nyw3IEBAIHZvaWQgSklUOjplbWl0X29wX2JpdG9y
KEluc3RydWN0aW9uKiBjdXIKICAgICAgICAgZW1pdExvYWQob3AsIHJlZ1QxLCByZWdUMCk7CiAg
ICAgICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMy
KEpTVmFsdWU6OkludDMyVGFnKSkpOwogICAgICAgICBvcjMyKEltbTMyKGNvbnN0YW50KSwgcmVn
VDApOwotICAgICAgICBlbWl0U3RvcmVBbmRNYXBJbnQzMihkc3QsIHJlZ1QxLCByZWdUMCwgb3Ag
PT0gZHN0LCBPUENPREVfTEVOR1RIKG9wX2JpdG9yKSk7CisgICAgICAgIGVtaXRTdG9yZUludDMy
KGRzdCwgcmVnVDAsIG9wID09IGRzdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTM4
NSw3ICszODUsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9iaXRvcihJbnN0cnVjdGlvbiogY3VyCiAg
ICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6SW50MzJUYWcpKSk7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoTm90RXF1YWwsIHJl
Z1QzLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpKSk7CiAgICAgb3IzMihyZWdUMiwg
cmVnVDApOwotICAgIGVtaXRTdG9yZUFuZE1hcEludDMyKGRzdCwgcmVnVDEsIHJlZ1QwLCAob3Ax
ID09IGRzdCB8fCBvcDIgPT0gZHN0KSwgT1BDT0RFX0xFTkdUSChvcF9iaXRvcikpOworICAgIGVt
aXRTdG9yZUludDMyKGRzdCwgcmVnVDAsIG9wMSA9PSBkc3QgfHwgb3AyID09IGRzdCk7CiB9CiAK
IHZvaWQgSklUOjplbWl0U2xvd19vcF9iaXRvcihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQpAQCAtNDE3LDcgKzQx
Nyw3IEBAIHZvaWQgSklUOjplbWl0X29wX2JpdHhvcihJbnN0cnVjdGlvbiogY3UKICAgICAgICAg
ZW1pdExvYWQob3AsIHJlZ1QxLCByZWdUMCk7CiAgICAgICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMy
KE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSkpOwogICAg
ICAgICB4b3IzMihJbW0zMihjb25zdGFudCksIHJlZ1QwKTsKLSAgICAgICAgZW1pdFN0b3JlQW5k
TWFwSW50MzIoZHN0LCByZWdUMSwgcmVnVDAsIG9wID09IGRzdCwgT1BDT0RFX0xFTkdUSChvcF9i
aXR4b3IpKTsKKyAgICAgICAgZW1pdFN0b3JlSW50MzIoZHN0LCByZWdUMCwgb3AgPT0gZHN0KTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDI1LDcgKzQyNSw3IEBAIHZvaWQgSklUOjpl
bWl0X29wX2JpdHhvcihJbnN0cnVjdGlvbiogY3UKICAgICBhZGRTbG93Q2FzZShicmFuY2gzMihO
b3RFcXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpKTsKICAgICBh
ZGRTbG93Q2FzZShicmFuY2gzMihOb3RFcXVhbCwgcmVnVDMsIFRydXN0ZWRJbW0zMihKU1ZhbHVl
OjpJbnQzMlRhZykpKTsKICAgICB4b3IzMihyZWdUMiwgcmVnVDApOwotICAgIGVtaXRTdG9yZUFu
ZE1hcEludDMyKGRzdCwgcmVnVDEsIHJlZ1QwLCAob3AxID09IGRzdCB8fCBvcDIgPT0gZHN0KSwg
T1BDT0RFX0xFTkdUSChvcF9iaXR4b3IpKTsKKyAgICBlbWl0U3RvcmVJbnQzMihkc3QsIHJlZ1Qw
LCBvcDEgPT0gZHN0IHx8IG9wMiA9PSBkc3QpOwogfQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
Yml0eG9yKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCkBAIC00NTEsNyArNDUxLDcgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfaW5jKEluc3RydWN0aW9uKiBjdXJyZQogCiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoTm90
RXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpKSk7CiAgICAgYWRk
U2xvd0Nhc2UoYnJhbmNoQWRkMzIoT3ZlcmZsb3csIFRydXN0ZWRJbW0zMigxKSwgcmVnVDApKTsK
LSAgICBlbWl0U3RvcmVBbmRNYXBJbnQzMihzcmNEc3QsIHJlZ1QxLCByZWdUMCwgdHJ1ZSwgT1BD
T0RFX0xFTkdUSChvcF9pbmMpKTsKKyAgICBlbWl0U3RvcmVJbnQzMihzcmNEc3QsIHJlZ1QwLCB0
cnVlKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2luYyhJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQpAQCAt
NDc0LDcgKzQ3NCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2RlYyhJbnN0cnVjdGlvbiogY3VycmUK
IAogICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMy
KEpTVmFsdWU6OkludDMyVGFnKSkpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaFN1YjMyKE92ZXJm
bG93LCBUcnVzdGVkSW1tMzIoMSksIHJlZ1QwKSk7Ci0gICAgZW1pdFN0b3JlQW5kTWFwSW50MzIo
c3JjRHN0LCByZWdUMSwgcmVnVDAsIHRydWUsIE9QQ09ERV9MRU5HVEgob3BfZGVjKSk7CisgICAg
ZW1pdFN0b3JlSW50MzIoc3JjRHN0LCByZWdUMCwgdHJ1ZSk7CiB9CiAKIHZvaWQgSklUOjplbWl0
U2xvd19vcF9kZWMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUQ2FsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRDYWxsLmNwcAkocmV2aXNpb24gMTU5MDYzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRDYWxsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsMTMgKzU1LDYgQEAgdm9pZCBKSVQ6
OmVtaXRQdXRDYWxsUmVzdWx0KEluc3RydWN0aW9uKgogICAgIGludCBkc3QgPSBpbnN0cnVjdGlv
blsxXS51Lm9wZXJhbmQ7CiAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShyZWdUNCk7CiAgICAg
ZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QpOwotICAgIGlmIChjYW5CZU9wdGltaXplZE9ySW5s
aW5lZCgpKSB7Ci0gICAgICAgIC8vIE1ha2UgbGFzdFJlc3VsdFJlZ2lzdGVyIHRyYWNraW5nIHNp
bXBsZXIgaW4gdGhlIERGRy4gVGhpcyBpcyBuZWVkZWQgYmVjYXVzZQotICAgICAgICAvLyB0aGUg
REZHIG1heSBoYXZlIHRoZSBTZXRMb2NhbCBjb3JyZXNwb25kaW5nIHRvIHRoaXMgQ2FsbCdzIHJl
dHVybiB2YWx1ZSBpbgotICAgICAgICAvLyBhIGRpZmZlcmVudCBiYXNpYyBibG9jaywgaWYgaW5s
aW5pbmcgaGFwcGVuZWQuIFRoZSBERkcgaXNuJ3Qgc21hcnQgZW5vdWdoIHRvCi0gICAgICAgIC8v
IHRyYWNrIHRoZSBiYXNlbGluZSBKSVQncyBsYXN0IHJlc3VsdCByZWdpc3RlciBhY3Jvc3MgYmFz
aWMgYmxvY2tzLgotICAgICAgICBraWxsTGFzdFJlc3VsdFJlZ2lzdGVyKCk7Ci0gICAgfQogfQog
CiB2b2lkIEpJVDo6Y29tcGlsZUxvYWRWYXJhcmdzKEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikK
QEAgLTcwLDggKzYzLDYgQEAgdm9pZCBKSVQ6OmNvbXBpbGVMb2FkVmFyYXJncyhJbnN0cnVjdGlv
bgogICAgIGludCBhcmd1bWVudHMgPSBpbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQ7CiAgICAgaW50
IGZpcnN0RnJlZVJlZ2lzdGVyID0gaW5zdHJ1Y3Rpb25bNV0udS5vcGVyYW5kOwogCi0gICAga2ls
bExhc3RSZXN1bHRSZWdpc3RlcigpOwotCiAgICAgSnVtcExpc3Qgc2xvd0Nhc2U7CiAgICAgSnVt
cExpc3QgZW5kOwogICAgIGJvb2wgY2FuT3B0aW1pemUgPSBtX2NvZGVCbG9jay0+dXNlc0FyZ3Vt
ZW50cygpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAkocmV2aXNp
b24gMTU5MDYzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTU3LDI0ICs1NywxNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjpl
bWl0UHV0SW50VG9DYWxsCiBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjplbWl0R2V0RnJvbUNhbGxG
cmFtZUhlYWRlclB0cihKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJFbnRyeSBlbnRyeSwgUmVnaXN0
ZXJJRCB0bywgUmVnaXN0ZXJJRCBmcm9tKQogewogICAgIGxvYWRQdHIoQWRkcmVzcyhmcm9tLCBl
bnRyeSAqIHNpemVvZihSZWdpc3RlcikpLCB0byk7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICBr
aWxsTGFzdFJlc3VsdFJlZ2lzdGVyKCk7Ci0jZW5kaWYKIH0KIAogQUxXQVlTX0lOTElORSB2b2lk
IEpJVDo6ZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXIzMihKU1N0YWNrOjpDYWxsRnJhbWVIZWFk
ZXJFbnRyeSBlbnRyeSwgUmVnaXN0ZXJJRCB0bywgUmVnaXN0ZXJJRCBmcm9tKQogewogICAgIGxv
YWQzMihBZGRyZXNzKGZyb20sIGVudHJ5ICogc2l6ZW9mKFJlZ2lzdGVyKSksIHRvKTsKLSNpZiBV
U0UoSlNWQUxVRTY0KQotICAgIGtpbGxMYXN0UmVzdWx0UmVnaXN0ZXIoKTsKLSNlbmRpZgogfQog
CiAjaWYgVVNFKEpTVkFMVUU2NCkKIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRHZXRGcm9t
Q2FsbEZyYW1lSGVhZGVyNjQoSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyRW50cnkgZW50cnksIFJl
Z2lzdGVySUQgdG8sIFJlZ2lzdGVySUQgZnJvbSkKIHsKICAgICBsb2FkNjQoQWRkcmVzcyhmcm9t
LCBlbnRyeSAqIHNpemVvZihSZWdpc3RlcikpLCB0byk7Ci0gICAga2lsbExhc3RSZXN1bHRSZWdp
c3RlcigpOwogfQogI2VuZGlmCiAKQEAgLTEwNiwxNiArOTksNiBAQCBBTFdBWVNfSU5MSU5FIEpJ
VDo6Q2FsbCBKSVQ6OmVtaXROYWtlZENhCiAgICAgcmV0dXJuIG5ha2VkQ2FsbDsKIH0KIAotQUxX
QVlTX0lOTElORSBib29sIEpJVDo6YXRKdW1wVGFyZ2V0KCkKLXsKLSAgICB3aGlsZSAobV9qdW1w
VGFyZ2V0c1Bvc2l0aW9uIDwgbV9jb2RlQmxvY2stPm51bWJlck9mSnVtcFRhcmdldHMoKSAmJiBt
X2NvZGVCbG9jay0+anVtcFRhcmdldChtX2p1bXBUYXJnZXRzUG9zaXRpb24pIDw9IG1fYnl0ZWNv
ZGVPZmZzZXQpIHsKLSAgICAgICAgaWYgKG1fY29kZUJsb2NrLT5qdW1wVGFyZ2V0KG1fanVtcFRh
cmdldHNQb3NpdGlvbikgPT0gbV9ieXRlY29kZU9mZnNldCkKLSAgICAgICAgICAgIHJldHVybiB0
cnVlOwotICAgICAgICArK21fanVtcFRhcmdldHNQb3NpdGlvbjsKLSAgICB9Ci0gICAgcmV0dXJu
IGZhbHNlOwotfQotCiBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjp1cGRhdGVUb3BDYWxsRnJhbWUo
KQogewogICAgIEFTU0VSVChzdGF0aWNfY2FzdDxpbnQ+KG1fYnl0ZWNvZGVPZmZzZXQpID49IDAp
OwpAQCAtODA2LDQwICs3ODksMjIgQEAgaW5saW5lIEpJVEFycmF5TW9kZSBKSVQ6OmNob29zZUFy
cmF5TW9kZQogCiBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRMb2FkVGFnKGludCBpbmRleCwgUmVnaXN0
ZXJJRCB0YWcpCiB7Ci0gICAgUmVnaXN0ZXJJRCBtYXBwZWRUYWc7Ci0gICAgaWYgKGdldE1hcHBl
ZFRhZyhpbmRleCwgbWFwcGVkVGFnKSkgewotICAgICAgICBtb3ZlKG1hcHBlZFRhZywgdGFnKTsK
LSAgICAgICAgdW5tYXAodGFnKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIGlmICht
X2NvZGVCbG9jay0+aXNDb25zdGFudFJlZ2lzdGVySW5kZXgoaW5kZXgpKSB7CiAgICAgICAgIG1v
dmUoSW1tMzIoZ2V0Q29uc3RhbnRPcGVyYW5kKGluZGV4KS50YWcoKSksIHRhZyk7Ci0gICAgICAg
IHVubWFwKHRhZyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBsb2FkMzIodGFnRm9y
KGluZGV4KSwgdGFnKTsKLSAgICB1bm1hcCh0YWcpOwogfQogCiBpbmxpbmUgdm9pZCBKSVQ6OmVt
aXRMb2FkUGF5bG9hZChpbnQgaW5kZXgsIFJlZ2lzdGVySUQgcGF5bG9hZCkKIHsKLSAgICBSZWdp
c3RlcklEIG1hcHBlZFBheWxvYWQ7Ci0gICAgaWYgKGdldE1hcHBlZFBheWxvYWQoaW5kZXgsIG1h
cHBlZFBheWxvYWQpKSB7Ci0gICAgICAgIG1vdmUobWFwcGVkUGF5bG9hZCwgcGF5bG9hZCk7Ci0g
ICAgICAgIHVubWFwKHBheWxvYWQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgaWYg
KG1fY29kZUJsb2NrLT5pc0NvbnN0YW50UmVnaXN0ZXJJbmRleChpbmRleCkpIHsKICAgICAgICAg
bW92ZShJbW0zMihnZXRDb25zdGFudE9wZXJhbmQoaW5kZXgpLnBheWxvYWQoKSksIHBheWxvYWQp
OwotICAgICAgICB1bm1hcChwYXlsb2FkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAg
IGxvYWQzMihwYXlsb2FkRm9yKGluZGV4KSwgcGF5bG9hZCk7Ci0gICAgdW5tYXAocGF5bG9hZCk7
CiB9CiAKIGlubGluZSB2b2lkIEpJVDo6ZW1pdExvYWQoY29uc3QgSlNWYWx1ZSYgdiwgUmVnaXN0
ZXJJRCB0YWcsIFJlZ2lzdGVySUQgcGF5bG9hZCkKQEAgLTg3MSwxMSArODM2LDYgQEAgaW5saW5l
IHZvaWQgSklUOjplbWl0TG9hZChpbnQgaW5kZXgsIFJlZwogCiBpbmxpbmUgdm9pZCBKSVQ6OmVt
aXRMb2FkMihpbnQgaW5kZXgxLCBSZWdpc3RlcklEIHRhZzEsIFJlZ2lzdGVySUQgcGF5bG9hZDEs
IGludCBpbmRleDIsIFJlZ2lzdGVySUQgdGFnMiwgUmVnaXN0ZXJJRCBwYXlsb2FkMikKIHsKLSAg
ICBpZiAoaXNNYXBwZWQoaW5kZXgxKSkgewotICAgICAgICBlbWl0TG9hZChpbmRleDEsIHRhZzEs
IHBheWxvYWQxKTsKLSAgICAgICAgZW1pdExvYWQoaW5kZXgyLCB0YWcyLCBwYXlsb2FkMik7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9CiAgICAgZW1pdExvYWQoaW5kZXgyLCB0YWcyLCBwYXlsb2Fk
Mik7CiAgICAgZW1pdExvYWQoaW5kZXgxLCB0YWcxLCBwYXlsb2FkMSk7CiB9CkBAIC05MTIsMTIg
Kzg3Miw2IEBAIGlubGluZSB2b2lkIEpJVDo6ZW1pdFN0b3JlSW50MzIoaW50IGluZGUKICAgICAg
ICAgc3RvcmUzMihUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpLCB0YWdGb3IoaW5kZXgs
IGNhbGxGcmFtZVJlZ2lzdGVyKSk7CiB9CiAKLWlubGluZSB2b2lkIEpJVDo6ZW1pdFN0b3JlQW5k
TWFwSW50MzIoaW50IGluZGV4LCBSZWdpc3RlcklEIHRhZywgUmVnaXN0ZXJJRCBwYXlsb2FkLCBi
b29sIGluZGV4SXNJbnQzMiwgc2l6ZV90IG9wY29kZUxlbmd0aCkKLXsKLSAgICBlbWl0U3RvcmVJ
bnQzMihpbmRleCwgcGF5bG9hZCwgaW5kZXhJc0ludDMyKTsKLSAgICBtYXAobV9ieXRlY29kZU9m
ZnNldCArIG9wY29kZUxlbmd0aCwgaW5kZXgsIHRhZywgcGF5bG9hZCk7Ci19Ci0KIGlubGluZSB2
b2lkIEpJVDo6ZW1pdFN0b3JlSW50MzIoaW50IGluZGV4LCBUcnVzdGVkSW1tMzIgcGF5bG9hZCwg
Ym9vbCBpbmRleElzSW50MzIpCiB7CiAgICAgc3RvcmUzMihwYXlsb2FkLCBwYXlsb2FkRm9yKGlu
ZGV4LCBjYWxsRnJhbWVSZWdpc3RlcikpOwpAQCAtOTU1LDgxICs5MDksNiBAQCBBTFdBWVNfSU5M
SU5FIHZvaWQgSklUOjplbWl0SW5pdFJlZ2lzdGVyCiAgICAgZW1pdFN0b3JlKGRzdCwganNVbmRl
ZmluZWQoKSk7CiB9CiAKLWlubGluZSBib29sIEpJVDo6aXNMYWJlbGVkKHVuc2lnbmVkIGJ5dGVj
b2RlT2Zmc2V0KQotewotICAgIGZvciAoc2l6ZV90IG51bWJlck9mSnVtcFRhcmdldHMgPSBtX2Nv
ZGVCbG9jay0+bnVtYmVyT2ZKdW1wVGFyZ2V0cygpOyBtX2p1bXBUYXJnZXRJbmRleCAhPSBudW1i
ZXJPZkp1bXBUYXJnZXRzOyArK21fanVtcFRhcmdldEluZGV4KSB7Ci0gICAgICAgIHVuc2lnbmVk
IGp1bXBUYXJnZXQgPSBtX2NvZGVCbG9jay0+anVtcFRhcmdldChtX2p1bXBUYXJnZXRJbmRleCk7
Ci0gICAgICAgIGlmIChqdW1wVGFyZ2V0ID09IGJ5dGVjb2RlT2Zmc2V0KQotICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgICAgIGlmIChqdW1wVGFyZ2V0ID4gYnl0ZWNvZGVPZmZzZXQpCi0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQot
aW5saW5lIHZvaWQgSklUOjptYXAodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGludCB2aXJ0dWFs
UmVnaXN0ZXJJbmRleCwgUmVnaXN0ZXJJRCB0YWcsIFJlZ2lzdGVySUQgcGF5bG9hZCkKLXsKLSAg
ICBpZiAoaXNMYWJlbGVkKGJ5dGVjb2RlT2Zmc2V0KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
bV9tYXBwZWRCeXRlY29kZU9mZnNldCA9IGJ5dGVjb2RlT2Zmc2V0OwotICAgIG1fbWFwcGVkVmly
dHVhbFJlZ2lzdGVySW5kZXggPSB2aXJ0dWFsUmVnaXN0ZXJJbmRleDsKLSAgICBtX21hcHBlZFRh
ZyA9IHRhZzsKLSAgICBtX21hcHBlZFBheWxvYWQgPSBwYXlsb2FkOwotICAgIAotICAgIEFTU0VS
VCghY2FuQmVPcHRpbWl6ZWRPcklubGluZWQoKSB8fCBtX21hcHBlZFBheWxvYWQgPT0gcmVnVDAp
OwotICAgIEFTU0VSVCghY2FuQmVPcHRpbWl6ZWRPcklubGluZWQoKSB8fCBtX21hcHBlZFRhZyA9
PSByZWdUMSk7Ci19Ci0KLWlubGluZSB2b2lkIEpJVDo6dW5tYXAoUmVnaXN0ZXJJRCByZWdpc3Rl
cklEKQotewotICAgIGlmIChtX21hcHBlZFRhZyA9PSByZWdpc3RlcklEKQotICAgICAgICBtX21h
cHBlZFRhZyA9IChSZWdpc3RlcklEKS0xOwotICAgIGVsc2UgaWYgKG1fbWFwcGVkUGF5bG9hZCA9
PSByZWdpc3RlcklEKQotICAgICAgICBtX21hcHBlZFBheWxvYWQgPSAoUmVnaXN0ZXJJRCktMTsK
LX0KLQotaW5saW5lIHZvaWQgSklUOjp1bm1hcCgpCi17Ci0gICAgbV9tYXBwZWRCeXRlY29kZU9m
ZnNldCA9ICh1bnNpZ25lZCktMTsKLSAgICBtX21hcHBlZFZpcnR1YWxSZWdpc3RlckluZGV4ID0g
VUlOVF9NQVg7Ci0gICAgbV9tYXBwZWRUYWcgPSAoUmVnaXN0ZXJJRCktMTsKLSAgICBtX21hcHBl
ZFBheWxvYWQgPSAoUmVnaXN0ZXJJRCktMTsKLX0KLQotaW5saW5lIGJvb2wgSklUOjppc01hcHBl
ZChpbnQgdmlydHVhbFJlZ2lzdGVySW5kZXgpCi17Ci0gICAgaWYgKG1fbWFwcGVkQnl0ZWNvZGVP
ZmZzZXQgIT0gbV9ieXRlY29kZU9mZnNldCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlm
IChtX21hcHBlZFZpcnR1YWxSZWdpc3RlckluZGV4ICE9IHZpcnR1YWxSZWdpc3RlckluZGV4KQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWlubGluZSBib29s
IEpJVDo6Z2V0TWFwcGVkUGF5bG9hZChpbnQgdmlydHVhbFJlZ2lzdGVySW5kZXgsIFJlZ2lzdGVy
SUQmIHBheWxvYWQpCi17Ci0gICAgaWYgKG1fbWFwcGVkQnl0ZWNvZGVPZmZzZXQgIT0gbV9ieXRl
Y29kZU9mZnNldCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChtX21hcHBlZFZpcnR1
YWxSZWdpc3RlckluZGV4ICE9IHZpcnR1YWxSZWdpc3RlckluZGV4KQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgaWYgKG1fbWFwcGVkUGF5bG9hZCA9PSAoUmVnaXN0ZXJJRCktMSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIHBheWxvYWQgPSBtX21hcHBlZFBheWxvYWQ7Ci0gICAgcmV0
dXJuIHRydWU7Ci19Ci0KLWlubGluZSBib29sIEpJVDo6Z2V0TWFwcGVkVGFnKGludCB2aXJ0dWFs
UmVnaXN0ZXJJbmRleCwgUmVnaXN0ZXJJRCYgdGFnKQotewotICAgIGlmIChtX21hcHBlZEJ5dGVj
b2RlT2Zmc2V0ICE9IG1fYnl0ZWNvZGVPZmZzZXQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICBpZiAobV9tYXBwZWRWaXJ0dWFsUmVnaXN0ZXJJbmRleCAhPSB2aXJ0dWFsUmVnaXN0ZXJJbmRl
eCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChtX21hcHBlZFRhZyA9PSAoUmVnaXN0
ZXJJRCktMSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHRhZyA9IG1fbWFwcGVkVGFnOwot
ICAgIHJldHVybiB0cnVlOwotfQotCiBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRKdW1wU2xvd0Nhc2VJ
Zk5vdEpTQ2VsbChpbnQgdmlydHVhbFJlZ2lzdGVySW5kZXgpCiB7CiAgICAgaWYgKCFtX2NvZGVC
bG9jay0+aXNLbm93bk5vdEltbWVkaWF0ZSh2aXJ0dWFsUmVnaXN0ZXJJbmRleCkpIHsKQEAgLTEw
NzQsMTEgKzk1Myw2IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKSVQ6OmdldE9wZXJhbmRDb25zdGEK
IAogI2Vsc2UgLy8gVVNFKEpTVkFMVUUzMl82NCkKIAotQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6
a2lsbExhc3RSZXN1bHRSZWdpc3RlcigpCi17Ci0gICAgbV9sYXN0UmVzdWx0Qnl0ZWNvZGVSZWdp
c3RlciA9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCk7Ci19Ci0KIC8vIGdldCBhcmcg
cHV0cyBhbiBhcmcgZnJvbSB0aGUgU0YgcmVnaXN0ZXIgYXJyYXkgaW50byBhIGgvdyByZWdpc3Rl
cgogQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6ZW1pdEdldFZpcnR1YWxSZWdpc3RlcihpbnQgc3Jj
LCBSZWdpc3RlcklEIGRzdCkKIHsKQEAgLTEwOTEsMjAgKzk2NSwxMCBAQCBBTFdBWVNfSU5MSU5F
IHZvaWQgSklUOjplbWl0R2V0VmlydHVhbFJlCiAgICAgICAgICAgICBtb3ZlKFRydXN0ZWRJbW02
NChKU1ZhbHVlOjplbmNvZGUodmFsdWUpKSwgZHN0KTsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgbW92ZShJbW02NChKU1ZhbHVlOjplbmNvZGUodmFsdWUpKSwgZHN0KTsKLSAgICAgICAga2ls
bExhc3RSZXN1bHRSZWdpc3RlcigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYg
KHNyYyA9PSBtX2xhc3RSZXN1bHRCeXRlY29kZVJlZ2lzdGVyICYmIG9wZXJhbmRJc0xvY2FsKHNy
YykgJiYgbV9jb2RlQmxvY2stPmlzVGVtcG9yYXJ5UmVnaXN0ZXJJbmRleChWaXJ0dWFsUmVnaXN0
ZXIoc3JjKS50b0xvY2FsKCkpICYmICFhdEp1bXBUYXJnZXQoKSkgewotICAgICAgICAvLyBUaGUg
YXJndW1lbnQgd2Ugd2FudCBpcyBhbHJlYWR5IHN0b3JlZCBpbiBlYXgKLSAgICAgICAgaWYgKGRz
dCAhPSBjYWNoZWRSZXN1bHRSZWdpc3RlcikKLSAgICAgICAgICAgIG1vdmUoY2FjaGVkUmVzdWx0
UmVnaXN0ZXIsIGRzdCk7Ci0gICAgICAgIGtpbGxMYXN0UmVzdWx0UmVnaXN0ZXIoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAogICAgIGxvYWQ2NChBZGRyZXNzKGNhbGxGcmFtZVJlZ2lzdGVy
LCBzcmMgKiBzaXplb2YoUmVnaXN0ZXIpKSwgZHN0KTsKLSAgICBraWxsTGFzdFJlc3VsdFJlZ2lz
dGVyKCk7CiB9CiAKIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXIoVmlydHVhbFJlZ2lzdGVyIHNyYywgUmVnaXN0ZXJJRCBkc3QpCkBAIC0xMTE0LDEzICs5Nzgs
OCBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjplbWl0R2V0VmlydHVhbFJlCiAKIEFMV0FZU19J
TkxJTkUgdm9pZCBKSVQ6OmVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXJzKGludCBzcmMxLCBSZWdpc3Rl
cklEIGRzdDEsIGludCBzcmMyLCBSZWdpc3RlcklEIGRzdDIpCiB7Ci0gICAgaWYgKHNyYzIgPT0g
bV9sYXN0UmVzdWx0Qnl0ZWNvZGVSZWdpc3RlcikgewotICAgICAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKHNyYzIsIGRzdDIpOwotICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHNyYzEs
IGRzdDEpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoc3Jj
MSwgZHN0MSk7Ci0gICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoc3JjMiwgZHN0Mik7Ci0g
ICAgfQorICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoc3JjMSwgZHN0MSk7CisgICAgZW1pdEdl
dFZpcnR1YWxSZWdpc3RlcihzcmMyLCBkc3QyKTsKIH0KIAogQUxXQVlTX0lOTElORSB2b2lkIEpJ
VDo6ZW1pdEdldFZpcnR1YWxSZWdpc3RlcnMoVmlydHVhbFJlZ2lzdGVyIHNyYzEsIFJlZ2lzdGVy
SUQgZHN0MSwgVmlydHVhbFJlZ2lzdGVyIHNyYzIsIFJlZ2lzdGVySUQgZHN0MikKQEAgLTExNDEs
NyArMTAwMCw2IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKSVQ6OmlzT3BlcmFuZENvbnN0YW4KIEFM
V0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoaW50IGRzdCwgUmVn
aXN0ZXJJRCBmcm9tKQogewogICAgIHN0b3JlNjQoZnJvbSwgQWRkcmVzcyhjYWxsRnJhbWVSZWdp
c3RlciwgZHN0ICogc2l6ZW9mKFJlZ2lzdGVyKSkpOwotICAgIG1fbGFzdFJlc3VsdEJ5dGVjb2Rl
UmVnaXN0ZXIgPSAoZnJvbSA9PSBjYWNoZWRSZXN1bHRSZWdpc3RlcikgPyBkc3QgOiBzdGQ6Om51
bWVyaWNfbGltaXRzPGludD46Om1heCgpOwogfQogCiBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjpl
bWl0UHV0VmlydHVhbFJlZ2lzdGVyKFZpcnR1YWxSZWdpc3RlciBkc3QsIFJlZ2lzdGVySUQgZnJv
bSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5j
cHAJKHJldmlzaW9uIDE1OTA2MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bj
b2RlczMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA0LDcgKzIwNCw2IEBAIHZvaWQgSklU
OjplbWl0X29wX21vdihJbnN0cnVjdGlvbiogY3VycmUKICAgICBlbHNlIHsKICAgICAgICAgZW1p
dExvYWQoc3JjLCByZWdUMSwgcmVnVDApOwogICAgICAgICBlbWl0U3RvcmUoZHN0LCByZWdUMSwg
cmVnVDApOwotICAgICAgICBtYXAobV9ieXRlY29kZU9mZnNldCArIE9QQ09ERV9MRU5HVEgob3Bf
bW92KSwgZHN0LCByZWdUMSwgcmVnVDApOwogICAgIH0KIH0KIApAQCAtNDMyLDcgKzQzMSw2IEBA
IHZvaWQgSklUOjplbWl0X29wX3RvX3ByaW1pdGl2ZShJbnN0cnVjdGkKIAogICAgIGlmIChkc3Qg
IT0gc3JjKQogICAgICAgICBlbWl0U3RvcmUoZHN0LCByZWdUMSwgcmVnVDApOwotICAgIG1hcCht
X2J5dGVjb2RlT2Zmc2V0ICsgT1BDT0RFX0xFTkdUSChvcF90b19wcmltaXRpdmUpLCBkc3QsIHJl
Z1QxLCByZWdUMCk7CiB9CiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF90b19wcmltaXRpdmUoSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYgaXRlcikKQEAgLTk1Niw3ICs5NTQsNiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90b19udW1i
ZXIoSW5zdHJ1Y3Rpb24qCiAKICAgICBpZiAoc3JjICE9IGRzdCkKICAgICAgICAgZW1pdFN0b3Jl
KGRzdCwgcmVnVDEsIHJlZ1QwKTsKLSAgICBtYXAobV9ieXRlY29kZU9mZnNldCArIE9QQ09ERV9M
RU5HVEgob3BfdG9fbnVtYmVyKSwgZHN0LCByZWdUMSwgcmVnVDApOwogfQogCiB2b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfdG9fbnVtYmVyKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCkBAIC05OTAsNyArOTg3LDYgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfY2F0Y2goSW5zdHJ1Y3Rpb24qIGN1cgogCiAgICAgdW5zaWduZWQg
ZXhjZXB0aW9uID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKICAgICBlbWl0U3Rv
cmUoZXhjZXB0aW9uLCByZWdUMSwgcmVnVDApOwotICAgIG1hcChtX2J5dGVjb2RlT2Zmc2V0ICsg
T1BDT0RFX0xFTkdUSChvcF9jYXRjaCksIGV4Y2VwdGlvbiwgcmVnVDEsIHJlZ1QwKTsKIH0KIAog
dm9pZCBKSVQ6OmVtaXRfb3Bfc3dpdGNoX2ltbShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCShyZXZp
c2lvbiAxNTkwNjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01NSwzMCArNTUsMTAgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbW92
KEluc3RydWN0aW9uKiBjdXJyZQogICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kOwogICAgIGludCBzcmMgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5k
OwogCi0gICAgaWYgKGNhbkJlT3B0aW1pemVkT3JJbmxpbmVkKCkpIHsKLSAgICAgICAgLy8gVXNl
IHNpbXBsZXIgYXBwcm9hY2gsIHNpbmNlIHRoZSBERkcgdGhpbmtzIHRoYXQgdGhlIGxhc3QgcmVz
dWx0IHJlZ2lzdGVyCi0gICAgICAgIC8vIGlzIGFsd2F5cyBzZXQgdG8gdGhlIGRlc3RpbmF0aW9u
IG9uIGV2ZXJ5IG9wZXJhdGlvbi4KLSAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihzcmMs
IHJlZ1QwKTsKLSAgICAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QpOwotICAgIH0gZWxz
ZSB7Ci0gICAgICAgIGlmIChtX2NvZGVCbG9jay0+aXNDb25zdGFudFJlZ2lzdGVySW5kZXgoc3Jj
KSkgewotICAgICAgICAgICAgaWYgKCFnZXRDb25zdGFudE9wZXJhbmQoc3JjKS5pc051bWJlcigp
KQotICAgICAgICAgICAgICAgIHN0b3JlNjQoVHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShn
ZXRDb25zdGFudE9wZXJhbmQoc3JjKSkpLCBBZGRyZXNzKGNhbGxGcmFtZVJlZ2lzdGVyLCBkc3Qg
KiBzaXplb2YoUmVnaXN0ZXIpKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg
c3RvcmU2NChJbW02NChKU1ZhbHVlOjplbmNvZGUoZ2V0Q29uc3RhbnRPcGVyYW5kKHNyYykpKSwg
QWRkcmVzcyhjYWxsRnJhbWVSZWdpc3RlciwgZHN0ICogc2l6ZW9mKFJlZ2lzdGVyKSkpOwotICAg
ICAgICAgICAgaWYgKGRzdCA9PSBtX2xhc3RSZXN1bHRCeXRlY29kZVJlZ2lzdGVyKQotICAgICAg
ICAgICAgICAgIGtpbGxMYXN0UmVzdWx0UmVnaXN0ZXIoKTsKLSAgICAgICAgfSBlbHNlIGlmICgo
c3JjID09IG1fbGFzdFJlc3VsdEJ5dGVjb2RlUmVnaXN0ZXIpIHx8IChkc3QgPT0gbV9sYXN0UmVz
dWx0Qnl0ZWNvZGVSZWdpc3RlcikpIHsKLSAgICAgICAgICAgIC8vIElmIGVpdGhlciB0aGUgc3Jj
IG9yIGRzdCBpcyB0aGUgY2FjaGVkIHJlZ2lzdGVyIGdvIHRob3VnaAotICAgICAgICAgICAgLy8g
Z2V0L3B1dCByZWdpc3RlcnMgdG8gbWFrZSBzdXJlIHdlIHRyYWNrIHRoaXMgY29ycmVjdGx5Lgot
ICAgICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihzcmMsIHJlZ1QwKTsKLSAgICAgICAg
ICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIC8vIFBlcmZvcm0gdGhlIGNvcHkgdmlhIHJlZ1QxOyBkbyBub3QgZGlzdHVyYiBhbnkg
bWFwcGluZyBpbiByZWdUMC4KLSAgICAgICAgICAgIGxvYWQ2NChBZGRyZXNzKGNhbGxGcmFtZVJl
Z2lzdGVyLCBzcmMgKiBzaXplb2YoUmVnaXN0ZXIpKSwgcmVnVDEpOwotICAgICAgICAgICAgc3Rv
cmU2NChyZWdUMSwgQWRkcmVzcyhjYWxsRnJhbWVSZWdpc3RlciwgZHN0ICogc2l6ZW9mKFJlZ2lz
dGVyKSkpOwotICAgICAgICB9Ci0gICAgfQorICAgIC8vIFVzZSBzaW1wbGVyIGFwcHJvYWNoLCBz
aW5jZSB0aGUgREZHIHRoaW5rcyB0aGF0IHRoZSBsYXN0IHJlc3VsdCByZWdpc3RlcgorICAgIC8v
IGlzIGFsd2F5cyBzZXQgdG8gdGhlIGRlc3RpbmF0aW9uIG9uIGV2ZXJ5IG9wZXJhdGlvbi4KKyAg
ICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHNyYywgcmVnVDApOworICAgIGVtaXRQdXRWaXJ0dWFs
UmVnaXN0ZXIoZHN0KTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfZW5kKEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC02NjEsNyArNjQxLDYgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
cHVzaF9uYW1lX3Njb3BlKEluc3RydQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9jYXRjaChJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIGtpbGxMYXN0UmVzdWx0UmVnaXN0ZXIo
KTsgLy8gRklYTUU6IEltcGxpY2l0bHkgdHJlYXQgb3BfY2F0Y2ggYXMgYSBsYWJlbGVkIHN0YXRl
bWVudCwgYW5kIHJlbW92ZSB0aGlzIGxpbmUgb2YgY29kZS4KICAgICBtb3ZlKHJlZ1QwLCBjYWxs
RnJhbWVSZWdpc3Rlcik7CiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKG1fdm0pLCByZWdUMyk7CiAg
ICAgbG9hZDY0KEFkZHJlc3MocmVnVDMsIFZNOjpleGNlcHRpb25PZmZzZXQoKSksIHJlZ1QwKTsK
QEAgLTExODgsMTQgKzExNjcsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfZnVuYyhJbnN0cnVj
dGlvbiogCiAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jRXhlYyA9IG1fY29kZUJsb2NrLT5m
dW5jdGlvbkRlY2woY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7CiAgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25OZXdGdW5jdGlvbiwgZHN0LCBmdW5jRXhlYyk7CiAKLSAgICBpZiAo
Y3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCkgewotI2lmIFVTRShKU1ZBTFVFMzJfNjQp
ICAgICAgICAKLSAgICAgICAgdW5tYXAoKTsKLSNlbHNlCi0gICAgICAgIGtpbGxMYXN0UmVzdWx0
UmVnaXN0ZXIoKTsKLSNlbmRpZgorICAgIGlmIChjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVy
YW5kKQogICAgICAgICBsYXp5SnVtcC5saW5rKHRoaXMpOwotICAgIH0KIH0KIAogdm9pZCBKSVQ6
OmVtaXRfb3BfbmV3X2Z1bmNfZXhwKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nl
c3MzMl82NC5jcHAJKHJldmlzaW9uIDE1OTA2MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3NSw3ICsx
NzUsNiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKEluc3RydWN0aW9uCiAKICAgICBl
bWl0VmFsdWVQcm9maWxpbmdTaXRlKHJlZ1Q0KTsKICAgICBlbWl0U3RvcmUoZHN0LCByZWdUMSwg
cmVnVDApOwotICAgIG1hcChtX2J5dGVjb2RlT2Zmc2V0ICsgT1BDT0RFX0xFTkdUSChvcF9nZXRf
YnlfdmFsKSwgZHN0LCByZWdUMSwgcmVnVDApOwogICAgIAogICAgIG1fYnlWYWxDb21waWxhdGlv
bkluZm8uYXBwZW5kKEJ5VmFsQ29tcGlsYXRpb25JbmZvKG1fYnl0ZWNvZGVPZmZzZXQsIGJhZFR5
cGUsIG1vZGUsIGRvbmUpKTsKIH0KQEAgLTQ5MSw3ICs0OTAsNiBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9nZXRfYnlfaWQoSW5zdHJ1Y3Rpb24qCiAKICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKHJl
Z1Q0KTsKICAgICBlbWl0U3RvcmUoZHN0LCByZWdUMSwgcmVnVDApOwotICAgIG1hcChtX2J5dGVj
b2RlT2Zmc2V0ICsgT1BDT0RFX0xFTkdUSChvcF9nZXRfYnlfaWQpLCBkc3QsIHJlZ1QxLCByZWdU
MCk7CiB9CiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWQoSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikK
QEAgLTY0Niw3ICs2NDQsNiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfcG5hbWUoSW5zdHJ1
Y3RpCiAgICAgY29tcGlsZUdldERpcmVjdE9mZnNldChyZWdUMiwgcmVnVDEsIHJlZ1QwLCByZWdU
Myk7ICAgIAogICAgIAogICAgIGVtaXRTdG9yZShkc3QsIHJlZ1QxLCByZWdUMCk7Ci0gICAgbWFw
KG1fYnl0ZWNvZGVPZmZzZXQgKyBPUENPREVfTEVOR1RIKG9wX2dldF9ieV9wbmFtZSksIGRzdCwg
cmVnVDEsIHJlZ1QwKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9wbmFtZShJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJiBpdGVyKQpAQCAtNjg3LDcgKzY4NCw2IEBAIHZvaWQgSklUOjplbWl0UmVzb2x2ZUNs
b3N1cmUoaW50IGRzdCwgYm8KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGVwdGg7ICsr
aSkKICAgICAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU1Njb3BlOjpvZmZzZXRPZk5leHQo
KSksIHJlZ1QwKTsKICAgICBlbWl0U3RvcmUoZHN0LCByZWdUMSwgcmVnVDApOwotICAgIG1hcCht
X2J5dGVjb2RlT2Zmc2V0ICsgT1BDT0RFX0xFTkdUSChvcF9yZXNvbHZlX3Njb3BlKSwgZHN0LCBy
ZWdUMSwgcmVnVDApOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9yZXNvbHZlX3Njb3BlKEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC03MDUsNyArNzAxLDYgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfcmVzb2x2ZV9zY29wZShJbnN0cnVjdAogICAgICAgICBtb3ZlKFRydXN0ZWRJbW0z
MihKU1ZhbHVlOjpDZWxsVGFnKSwgcmVnVDEpOwogICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIo
bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgcmVnVDApOwogICAgICAgICBlbWl0U3RvcmUo
ZHN0LCByZWdUMSwgcmVnVDApOwotICAgICAgICBtYXAobV9ieXRlY29kZU9mZnNldCArIE9QQ09E
RV9MRU5HVEgob3BfcmVzb2x2ZV9zY29wZSksIGRzdCwgcmVnVDEsIHJlZ1QwKTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBDbG9zdXJlVmFyOgogICAgIGNhc2UgQ2xvc3VyZVZhcldpdGhWYXJJ
bmplY3Rpb25DaGVja3M6CkBAIC03ODgsNyArNzgzLDYgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0
X2Zyb21fc2NvcGUoSW5zdHJ1YwogICAgIH0KICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKHJl
Z1Q0KTsKICAgICBlbWl0U3RvcmUoZHN0LCByZWdUMSwgcmVnVDApOwotICAgIG1hcChtX2J5dGVj
b2RlT2Zmc2V0ICsgT1BDT0RFX0xFTkdUSChvcF9nZXRfZnJvbV9zY29wZSksIGRzdCwgcmVnVDEs
IHJlZ1QwKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9mcm9tX3Njb3BlKEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImIGl0ZXIpCkBAIC04ODcsNyArODgxLDYgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaW5pdF9nbG9i
YWxfY29uc3QoSW5zdAogCiAgICAgc3RvcmUzMihyZWdUMSwgcmVnaXN0ZXJQb2ludGVyLT50YWdQ
b2ludGVyKCkpOwogICAgIHN0b3JlMzIocmVnVDAsIHJlZ2lzdGVyUG9pbnRlci0+cGF5bG9hZFBv
aW50ZXIoKSk7Ci0gICAgbWFwKG1fYnl0ZWNvZGVPZmZzZXQgKyBPUENPREVfTEVOR1RIKG9wX2lu
aXRfZ2xvYmFsX2NvbnN0KSwgdmFsdWUsIHJlZ1QxLCByZWdUMCk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vz
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0
eUFjY2Vzcy5jcHAJKHJldmlzaW9uIDE1OTA2MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NzUsNyArNjc1LDYg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9zY29wZShJbnN0cnVjdAogICAgICAgICBlbWl0
UmVzb2x2ZUNsb3N1cmUoZHN0LCBuZWVkc1ZhckluamVjdGlvbkNoZWNrcyhyZXNvbHZlVHlwZSks
IGRlcHRoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBEeW5hbWljOgotICAgICAgICBraWxs
TGFzdFJlc3VsdFJlZ2lzdGVyKCk7CiAgICAgICAgIGFkZFNsb3dDYXNlKGp1bXAoKSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KQEAgLTc0NCw3ICs3NDMsNiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9n
ZXRfZnJvbV9zY29wZShJbnN0cnVjCiAgICAgICAgIGVtaXRHZXRDbG9zdXJlVmFyKHNjb3BlLCAq
b3BlcmFuZFNsb3QpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIER5bmFtaWM6Ci0gICAgICAg
IGtpbGxMYXN0UmVzdWx0UmVnaXN0ZXIoKTsKICAgICAgICAgYWRkU2xvd0Nhc2UoanVtcCgpKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtODEyLDcgKzgxMCw2IEBAIHZvaWQgSklUOjplbWl0
X29wX3B1dF90b19zY29wZShJbnN0cnVjdGkKICAgICAgICAgZW1pdFB1dENsb3N1cmVWYXIoc2Nv
cGUsICpvcGVyYW5kU2xvdCwgdmFsdWUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIER5bmFt
aWM6Ci0gICAgICAgIGtpbGxMYXN0UmVzdWx0UmVnaXN0ZXIoKTsKICAgICAgICAgYWRkU2xvd0Nh
c2UoanVtcCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9TbG93UGF0aENhbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1Nsb3dQYXRoQ2FsbC5oCShyZXZpc2lvbiAxNTkwNjMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1Nsb3dQYXRoQ2FsbC5oCSh3b3JraW5nIGNvcHkpCkBAIC03NywxMSAr
NzcsNiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2ppdC0+c2FtcGxlSW5zdHJ1Y3Rpb24obV9q
aXQtPm1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpICsgbV9qaXQtPm1fYnl0ZWNv
ZGVPZmZzZXQsIGZhbHNlKTsKICNlbmRpZgogICAgICAgICAKLSNpZiBVU0UoSlNWQUxVRTMyXzY0
KQotICAgICAgICBtX2ppdC0+dW5tYXAoKTsKLSNlbHNlCi0gICAgICAgIG1faml0LT5raWxsTGFz
dFJlc3VsdFJlZ2lzdGVyKCk7Ci0jZW5kaWYgICAKICAgICAgICAgbV9qaXQtPmV4Y2VwdGlvbkNo
ZWNrKCk7CiAgICAgICAgIHJldHVybiBjYWxsOwogICAgIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>