<?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>122563</bug_id>
          
          <creation_ts>2013-10-09 11:08:50 -0700</creation_ts>
          <short_desc>transition cti_op_* methods returning int to JIT operations.</short_desc>
          <delta_ts>2013-10-10 16:09:22 -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>122287</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Saboff">msaboff</reporter>
          <assigned_to name="Michael Saboff">msaboff</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>937999</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-10-09 11:08:50 -0700</bug_when>
    <thetext>Transition these stubs:
    cti_op_eq
    cti_op_eq_strings
    cti_op_jless
    cti_op_jlesseq
    cti_op_jgreater
    cti_op_jgreatereq
    cti_op_jtrue
    cti_has_property</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938485</commentid>
    <comment_count>1</comment_count>
      <attachid>213913</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-10-10 12:30:49 -0700</bug_when>
    <thetext>Created attachment 213913
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938594</commentid>
    <comment_count>2</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-10-10 16:09:22 -0700</bug_when>
    <thetext>Committed r157266: &lt;http://trac.webkit.org/changeset/157266&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213913</attachid>
            <date>2013-10-10 12:30:49 -0700</date>
            <delta_ts>2013-10-10 12:32:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>122563.patch</filename>
            <type>text/plain</type>
            <size>44761</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU3MjM3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBA
CisyMDEzLTEwLTEwICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIHRyYW5zaXRpb24gY3RpX29wXyogbWV0aG9kcyByZXR1cm5pbmcgaW50IHRvIEpJVCBvcGVy
YXRpb25zLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTIyNTYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
TW92ZWQgc2VydmVyYWwgb3BlcmF0aW9uQ29tcGFyZSogZnVuY3Rpb25zIGZyb20gREZHT3BlcmF0
aW9ucyB0byBKSVRPcGVyYXRpb25zIGFzIHdlbGwgYXMgY2hhbmdpbmcKKyAgICAgICAgZGZnQ29u
dmVydEpTVmFsdWVUb0Jvb2xlYW4gdG8gb3BlcmF0aW9uQ29udmVydEpTVmFsdWVUb0Jvb2xlYW4g
c28gdGhhdCB0aGV5IGNhbiBiZSBzaGFyZWQgd2l0aCB0aGUgYmFzZWxpbmUgSklULgorICAgICAg
ICBBZGRlZCBKSVRPcGVyYXRpb24gb3BlcmF0aW9uSGFzUHJvcGVydHkoKS4gIEFkZGVkIG5lZWRl
ZCBjYWxsT3BlcmF0aW9uIGhlbHBlcnMgYW5kIHRyYW5zaXRpb25lZCBiYXNlbGluZSBKSVQgY29k
ZQorICAgICAgICB0byB1c2UgdGhlIG5ldyBvcGVyYXRpb25zLgorICAgICAgICAKKyAgICAgICAg
KiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuaDoK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVMb2dpY2FsTm90KToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdEJyYW5jaCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1
bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlTG9naWNhbE5vdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRC
cmFuY2gpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUQXJpdGhtZXRp
Yy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3Bfamxlc3MpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRTbG93X29wX2psZXNzZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRT
bG93X29wX2pncmVhdGVyKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9qZ3JlYXRl
cmVxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9qbmxlc3MpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRTbG93X29wX2pubGVzc2VxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9qbmdyZWF0ZXIpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2puZ3Jl
YXRlcmVxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X2NvbXBhcmVBbmRKdW1wU2xvdyk6Cisg
ICAgICAgICogaml0L0pJVEFyaXRobWV0aWMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9jb21wYXJlQW5kSnVtcFNsb3cpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVzLmg6Cisg
ICAgICAgIChKU0M6OkpJVDo6Y2FsbE9wZXJhdGlvbik6CisgICAgICAgICogaml0L0pJVE9wY29k
ZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV4dF9wbmFtZSk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfamZhbHNlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9qdHJ1ZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZXEpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX25lcSk6CisgICAgICAgICogaml0L0pJVE9wY29k
ZXMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfamZhbHNlKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9qdHJ1ZSk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdFNsb3dfb3BfZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX25lcSk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXh0X3BuYW1lKToKKyAgICAgICAgKiBqaXQvSklU
T3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAg
KiBqaXQvSklUU3R1YnMuY3BwOgorICAgICAgICAqIGppdC9KSVRTdHVicy5oOgorCiAyMDEzLTEw
LTEwICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAg
T2JqZWN0aXZlLUMgQVBJOiBibG9ja3MgYXJlbid0IGNhbGxhYmxlIHZpYSAnbmV3JwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAx
NTcxNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01MTIsNjMgKzUxMiw2IEBAIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblJlZ0V4cFRlc3QKICAgICBKU1N0cmluZyogaW5wdXQgPSBhcmd1bWVudC0+aXNTdHJp
bmcoKSA/IGFzU3RyaW5nKGFyZ3VtZW50KSA6IGFzT2JqZWN0KGFyZ3VtZW50KS0+dG9TdHJpbmco
ZXhlYyk7CiAgICAgcmV0dXJuIGFzUmVnRXhwT2JqZWN0KGJhc2UpLT50ZXN0KGV4ZWMsIGlucHV0
KTsKIH0KLSAgICAgICAgCi1zaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlTGVz
cyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRPcDIpCi17Ci0gICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7Ci0gICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7Ci0gICAgCi0gICAgcmV0dXJuIGpzTGVz
czx0cnVlPihleGVjLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkT3AyKSk7Ci19Ci0KLXNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBh
cmVMZXNzRXEoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKQotewotICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwotICAg
IE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwotICAgIAotICAgIHJldHVy
biBqc0xlc3NFcTx0cnVlPihleGVjLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkT3AyKSk7Ci19Ci0KLXNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkNvbXBhcmVHcmVhdGVyKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikKLXsKLSAgICBWTSogdm0gPSAmZXhlYy0+
dm0oKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKLSAgICAK
LSAgICByZXR1cm4ganNMZXNzPGZhbHNlPihleGVjLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9w
MiksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSk7Ci19Ci0KLXNpemVfdCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkNvbXBhcmVHcmVhdGVyRXEoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKQotewotICAgIFZNKiB2
bSA9ICZleGVjLT52bSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4
ZWMpOwotICAgIAotICAgIHJldHVybiBqc0xlc3NFcTxmYWxzZT4oZXhlYywgSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRPcDIpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSkpOwotfQotCi1zaXpl
X3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlRXEoRXhlY1N0YXRlKiBleGVjLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKQotewotICAg
IFZNKiB2bSA9ICZleGVjLT52bSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGV4ZWMpOwotICAgIAotICAgIHJldHVybiBKU1ZhbHVlOjplcXVhbFNsb3dDYXNlSW5saW5l
KGV4ZWMsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRPcDIpKTsKLX0KLQotI2lmIFVTRShKU1ZBTFVFNjQpCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVTdHJpbmdFcShFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCog
bGVmdCwgSlNDZWxsKiByaWdodCkKLSNlbHNlCi1zaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRp
b25Db21wYXJlU3RyaW5nRXEoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIGxlZnQsIEpTQ2VsbCog
cmlnaHQpCi0jZW5kaWYKLXsKLSAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKLSAgICBOYXRpdmVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKLSAgICAKLSAgICBib29sIHJlc3VsdCA9
IGFzU3RyaW5nKGxlZnQpLT52YWx1ZShleGVjKSA9PSBhc1N0cmluZyhyaWdodCktPnZhbHVlKGV4
ZWMpOwotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jv
b2xlYW4ocmVzdWx0KSk7Ci0jZWxzZQotICAgIHJldHVybiByZXN1bHQ7Ci0jZW5kaWYKLX0KIAog
c2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxQ2VsbChFeGVjU3Rh
dGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRPcDIpCiB7CkBAIC0xMDc1LDE0ICsxMDE4LDYgQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gZGZn
Q29udmVydEpTVmFsdWVUbwogICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodmFsdWUpLnRvVUlu
dDMyKGV4ZWMpOwogfQogCi1zaXplX3QgSklUX09QRVJBVElPTiBkZmdDb252ZXJ0SlNWYWx1ZVRv
Qm9vbGVhbihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcCkKLXsKLSAg
ICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBleGVjKTsKLSAgICAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcCku
dG9Cb29sZWFuKGV4ZWMpOwotfQotCiB2b2lkIEpJVF9PUEVSQVRJT04gZGVidWdPcGVyYXRpb25Q
cmludFNwZWN1bGF0aW9uRmFpbHVyZShFeGVjU3RhdGUqIGV4ZWMsIHZvaWQqIGRlYnVnSW5mb1Jh
dywgdm9pZCogc2NyYXRjaCkKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAxNTcxNjQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAkod29ya2luZyBj
b3B5KQpAQCAtODksMTYgKzg5LDYgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25BcgogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBFeGVj
KEV4ZWNTdGF0ZSosIEpTQ2VsbCosIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKIC8vIFRoZXNlIGNv
bXBhcmlzb25zIHJldHVybiBhIGJvb2xlYW4gd2l0aGluIGEgc2l6ZV90IHN1Y2ggdGhhdCB0aGUg
dmFsdWUgaXMgemVybyBleHRlbmRlZCB0byBmaWxsIHRoZSByZWdpc3Rlci4KIHNpemVfdCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4cFRlc3QoRXhlY1N0YXRlKiwgSlNDZWxsKiwgSlNDZWxs
KikgV1RGX0lOVEVSTkFMOwotc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZUxl
c3MoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZE9wMikgV1RGX0lOVEVSTkFMOwotc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
Q29tcGFyZUxlc3NFcShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKSBXVEZfSU5URVJOQUw7Ci1zaXplX3QgSklUX09QRVJBVElP
TiBvcGVyYXRpb25Db21wYXJlR3JlYXRlcihFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKSBXVEZfSU5URVJOQUw7Ci1zaXplX3Qg
SklUX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlR3JlYXRlckVxKEV4ZWNTdGF0ZSosIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpIFdURl9JTlRF
Uk5BTDsKLXNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVFcShFeGVjU3RhdGUq
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKSBX
VEZfSU5URVJOQUw7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uQ29tcGFyZVN0cmluZ0VxKEV4ZWNTdGF0ZSosIEpTQ2VsbCogbGVmdCwg
SlNDZWxsKiByaWdodCkgV1RGX0lOVEVSTkFMOwotI2Vsc2UKLXNpemVfdCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkNvbXBhcmVTdHJpbmdFcShFeGVjU3RhdGUqLCBKU0NlbGwqIGxlZnQsIEpTQ2Vs
bCogcmlnaHQpIFdURl9JTlRFUk5BTDsKLSNlbmRpZgogc2l6ZV90IEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uQ29tcGFyZVN0cmljdEVxQ2VsbChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKSBXVEZfSU5URVJOQUw7CiBzaXplX3Qg
SklUX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlU3RyaWN0RXEoRXhlY1N0YXRlKiwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikgV1RGX0lOVEVS
TkFMOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUFjdGl2YXRpb24oRXhl
Y1N0YXRlKiwgaW50MzJfdCBvZmZzZXQpIFdURl9JTlRFUk5BTDsKQEAgLTE0Niw3ICsxMzYsNiBA
QCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkZUCiAvLyBUaGVzZSBvcGVy
YXRpb25zIGltcGxlbWVudCB0aGUgaW1wbGljaXRseSBjYWxsZWQgVG9JbnQzMiBhbmQgVG9Cb29s
ZWFuIGNvbnZlcnNpb25zIGZyb20gRVM1LgogLy8gVGhpcyBjb252ZXJzaW9uIHJldHVybnMgYW4g
aW50MzJfdCB3aXRoaW4gYSBzaXplX3Qgc3VjaCB0aGF0IHRoZSB2YWx1ZSBpcyB6ZXJvIGV4dGVu
ZGVkIHRvIGZpbGwgdGhlIHJlZ2lzdGVyLgogc2l6ZV90IEpJVF9PUEVSQVRJT04gZGZnQ29udmVy
dEpTVmFsdWVUb0ludDMyKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7
Ci1zaXplX3QgSklUX09QRVJBVElPTiBkZmdDb252ZXJ0SlNWYWx1ZVRvQm9vbGVhbihFeGVjU3Rh
dGUqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogCiB2b2lkIEpJVF9PUEVSQVRJT04g
ZGVidWdPcGVyYXRpb25QcmludFNwZWN1bGF0aW9uRmFpbHVyZShFeGVjU3RhdGUqLCB2b2lkKiwg
dm9pZCopIFdURl9JTlRFUk5BTDsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAxNTcxNjQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNjUxLDcgKzE2NTEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlTG9naWNhbE5vdChOCiAKICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCiAgICAg
ICAgICAgICBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICAgICAgc2xvd0Nhc2UsIHRoaXMsIGRm
Z0NvbnZlcnRKU1ZhbHVlVG9Cb29sZWFuLCByZXN1bHRQYXlsb2FkR1BSLCBhcmcxVGFnR1BSLAor
ICAgICAgICAgICAgICAgIHNsb3dDYXNlLCB0aGlzLCBvcGVyYXRpb25Db252ZXJ0SlNWYWx1ZVRv
Qm9vbGVhbiwgcmVzdWx0UGF5bG9hZEdQUiwgYXJnMVRhZ0dQUiwKICAgICAgICAgICAgICAgICBh
cmcxUGF5bG9hZEdQUikpOwogICAgIAogICAgICAgICBtX2ppdC54b3IzMihUcnVzdGVkSW1tMzIo
MSksIHJlc3VsdFBheWxvYWRHUFIpOwpAQCAtMTc5NSw3ICsxNzk1LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6ZW1pdEJyYW5jaChOb2RlKiBubwogCiAgICAgICAgIHNsb3dQYXRoLmxpbmsoJm1f
aml0KTsKICAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMocmVzdWx0R1BSKTsKLSAgICAg
ICAgY2FsbE9wZXJhdGlvbihkZmdDb252ZXJ0SlNWYWx1ZVRvQm9vbGVhbiwgcmVzdWx0R1BSLCB2
YWx1ZVRhZ0dQUiwgdmFsdWVQYXlsb2FkR1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25Db252ZXJ0SlNWYWx1ZVRvQm9vbGVhbiwgcmVzdWx0R1BSLCB2YWx1ZVRhZ0dQUiwgdmFs
dWVQYXlsb2FkR1BSKTsKICAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIp
OwogICAgIAogICAgICAgICBicmFuY2hUZXN0MzIoSklUQ29tcGlsZXI6Ok5vblplcm8sIHJlc3Vs
dEdQUiwgdGFrZW4pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxNTcxNjQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MDM0LDcgKzIwMzQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTG9naWNhbE5vdChO
CiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dDYXNlID0gbV9qaXQuYnJhbmNoVGVzdDY0
KEpJVENvbXBpbGVyOjpOb25aZXJvLCByZXN1bHRHUFIsIFRydXN0ZWRJbW0zMihzdGF0aWNfY2Fz
dDxpbnQzMl90Pih+MSkpKTsKICAgICAKICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCi0g
ICAgICAgICAgICBzbG93UGF0aENhbGwoc2xvd0Nhc2UsIHRoaXMsIGRmZ0NvbnZlcnRKU1ZhbHVl
VG9Cb29sZWFuLCByZXN1bHRHUFIsIGFyZzFHUFIpKTsKKyAgICAgICAgICAgIHNsb3dQYXRoQ2Fs
bChzbG93Q2FzZSwgdGhpcywgb3BlcmF0aW9uQ29udmVydEpTVmFsdWVUb0Jvb2xlYW4sIHJlc3Vs
dEdQUiwgYXJnMUdQUikpOwogICAgIAogICAgICAgICBtX2ppdC54b3I2NChUcnVzdGVkSW1tMzIo
c3RhdGljX2Nhc3Q8aW50MzJfdD4oVmFsdWVUcnVlKSksIHJlc3VsdEdQUik7CiAgICAgICAgIGpz
VmFsdWVSZXN1bHQocmVzdWx0R1BSLCBub2RlLCBEYXRhRm9ybWF0SlNCb29sZWFuLCBVc2VDaGls
ZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwpAQCAtMjE3Nyw3ICsyMTc3LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6ZW1pdEJyYW5jaChOb2RlKiBubwogICAgICAgICAgICAgdmFsdWUudXNlKCk7CiAg
ICAgCiAgICAgICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIpOwotICAg
ICAgICAgICAgY2FsbE9wZXJhdGlvbihkZmdDb252ZXJ0SlNWYWx1ZVRvQm9vbGVhbiwgcmVzdWx0
R1BSLCB2YWx1ZUdQUik7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNvbnZl
cnRKU1ZhbHVlVG9Cb29sZWFuLCByZXN1bHRHUFIsIHZhbHVlR1BSKTsKICAgICAgICAgICAgIHNp
bGVudEZpbGxBbGxSZWdpc3RlcnMocmVzdWx0R1BSKTsKICAgICAKICAgICAgICAgICAgIGJyYW5j
aFRlc3QzMihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgcmVzdWx0R1BSLCB0YWtlbik7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHJldmlzaW9uIDE1NzE2NCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTY2NCw3ICs2NjQsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICNlbmRpZgogCiAgICAgICAgIHZvaWQgZW1pdF9jb21wYXJlQW5kSnVt
cChPcGNvZGVJRCwgaW50IG9wMSwgaW50IG9wMiwgdW5zaWduZWQgdGFyZ2V0LCBSZWxhdGlvbmFs
Q29uZGl0aW9uKTsKLSAgICAgICAgdm9pZCBlbWl0X2NvbXBhcmVBbmRKdW1wU2xvdyhpbnQgb3Ax
LCBpbnQgb3AyLCB1bnNpZ25lZCB0YXJnZXQsIERvdWJsZUNvbmRpdGlvbiwgaW50IChKSVRfU1RV
QiAqc3R1YikoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSwgYm9vbCBpbnZlcnQsIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0X2NvbXBhcmVBbmRKdW1w
U2xvdyhpbnQgb3AxLCBpbnQgb3AyLCB1bnNpZ25lZCB0YXJnZXQsIERvdWJsZUNvbmRpdGlvbiwg
c2l6ZV90IChKSVRfT1BFUkFUSU9OICpvcGVyYXRpb24pKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSksIGJvb2wgaW52ZXJ0LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJik7CiAKICAgICAgICAgdm9pZCBlbWl0X29wX2FkZChJbnN0cnVjdGlvbiopOwog
ICAgICAgICB2b2lkIGVtaXRfb3BfYml0YW5kKEluc3RydWN0aW9uKik7CkBAIC04NjgsOSArODY4
LDE3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBhcHBl
bmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdChjb25zdCBGdW5jdGlvblB0
ciYsIGludCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9K
SVRPcGVyYXRpb25fRSwgaW50KTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FUCwgaW50LCB2b2lkKik7CisgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oU19KSVRPcGVyYXRpb25fRUNDLCBSZWdpc3RlcklE
LCBSZWdpc3RlcklEKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihTX0pJVE9wZXJhdGlvbl9FSiwgUmVnaXN0ZXJJRCk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oU19KSVRPcGVyYXRpb25fRUpKLCBSZWdpc3RlcklELCBSZWdp
c3RlcklEKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJ
VE9wZXJhdGlvbl9FT0pzcywgUmVnaXN0ZXJJRCwgUmVnaXN0ZXJJRCk7CiAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tPbkV4Y2Vw
dGlvbihKX0pJVE9wZXJhdGlvbl9FKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja09uRXhjZXB0aW9uKFZfSklUT3BlcmF0aW9u
X0VDYiwgQ29kZUJsb2NrKik7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVy
YXRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tPbkV4Y2VwdGlvbihaX0pJVE9wZXJhdGlvbl9FKTsK
KyNpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKFNfSklUT3BlcmF0aW9uX0VKLCBSZWdpc3RlcklELCBSZWdpc3RlcklEKTsKKyAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlvbl9F
SkosIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQpOworI2Vu
ZGlmCiAKICAgICAgICAgSnVtcCBjaGVja1N0cnVjdHVyZShSZWdpc3RlcklEIHJlZywgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFy
aXRobWV0aWMzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRBcml0aG1ldGljMzJfNjQuY3BwCShyZXZpc2lvbiAxNTcxNjQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEzNyw3ICsxMzcsNyBAQCB2b2lkIEpJVDo6ZW1pdF9jb21wYXJlQW5kSnVtcChPcGNvZGVJRCBv
CiAgICAgZW5kLmxpbmsodGhpcyk7CiB9CiAKLXZvaWQgSklUOjplbWl0X2NvbXBhcmVBbmRKdW1w
U2xvdyhpbnQgb3AxLCBpbnQgb3AyLCB1bnNpZ25lZCB0YXJnZXQsIERvdWJsZUNvbmRpdGlvbiwg
aW50IChKSVRfU1RVQiAqc3R1YikoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSwgYm9vbCBpbnZlcnQs
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdF9j
b21wYXJlQW5kSnVtcFNsb3coaW50IG9wMSwgaW50IG9wMiwgdW5zaWduZWQgdGFyZ2V0LCBEb3Vi
bGVDb25kaXRpb24sIHNpemVfdCAoSklUX09QRVJBVElPTiAqb3BlcmF0aW9uKShFeGVjU3RhdGUq
LCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpLCBib29sIGludmVydCwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBpZiAoaXNPcGVyYW5kQ29uc3Rh
bnRJbW1lZGlhdGVDaGFyKG9wMSkgfHwgaXNPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVDaGFyKG9w
MikpIHsKICAgICAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwpAQCAtMTU4LDExICsxNTgsMTAgQEAg
dm9pZCBKSVQ6OmVtaXRfY29tcGFyZUFuZEp1bXBTbG93KGludCBvcAogICAgICAgICAgICAgICAg
IGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gZG91YmxlIGNoZWNrCiAgICAgICAgIH0KICAgICB9Ci0g
ICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgc3R1Yik7Ci0gICAgc3R1YkNhbGwuYWRkQXJn
dW1lbnQob3AxKTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChvcDIpOwotICAgIHN0dWJDYWxs
LmNhbGwoKTsKLSAgICBlbWl0SnVtcFNsb3dUb0hvdChicmFuY2hUZXN0MzIoaW52ZXJ0ID8gWmVy
byA6IE5vblplcm8sIHJlZ1QwKSwgdGFyZ2V0KTsKKyAgICBlbWl0TG9hZChvcDEsIHJlZ1QxLCBy
ZWdUMCk7CisgICAgZW1pdExvYWQob3AyLCByZWdUMywgcmVnVDIpOworICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uLCByZWdUMSwgcmVnVDAsIHJlZ1QzLCByZWdUMik7CisgICAgZW1pdEp1bXBT
bG93VG9Ib3QoYnJhbmNoVGVzdDMyKGludmVydCA/IFplcm8gOiBOb25aZXJvLCByZXR1cm5WYWx1
ZVJlZ2lzdGVyKSwgdGFyZ2V0KTsKIH0KIAogLy8gTGVmdFNoaWZ0ICg8PCkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcAkocmV2aXNpb24gMTU3MTY0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5j
bHVkZSAiSklUSW5saW5lcy5oIgorI2luY2x1ZGUgIkpJVE9wZXJhdGlvbnMuaCIKICNpbmNsdWRl
ICJKSVRTdHViQ2FsbC5oIgogI2luY2x1ZGUgIkpJVFN0dWJzLmgiCiAjaW5jbHVkZSAiSlNBcnJh
eS5oIgpAQCAtMTI2LDcgKzEyNyw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9qbGVzcyhJbnN0
cnVjdGlvbioKICAgICBpbnQgb3AyID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsK
ICAgICB1bnNpZ25lZCB0YXJnZXQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwog
Ci0gICAgZW1pdF9jb21wYXJlQW5kSnVtcFNsb3cob3AxLCBvcDIsIHRhcmdldCwgRG91YmxlTGVz
c1RoYW4sIGN0aV9vcF9qbGVzcywgZmFsc2UsIGl0ZXIpOworICAgIGVtaXRfY29tcGFyZUFuZEp1
bXBTbG93KG9wMSwgb3AyLCB0YXJnZXQsIERvdWJsZUxlc3NUaGFuLCBvcGVyYXRpb25Db21wYXJl
TGVzcywgZmFsc2UsIGl0ZXIpOwogfQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfamxlc3NlcShJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJiBpdGVyKQpAQCAtMTM1LDcgKzEzNiw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9q
bGVzc2VxKEluc3RydWN0aW8KICAgICBpbnQgb3AyID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUu
b3BlcmFuZDsKICAgICB1bnNpZ25lZCB0YXJnZXQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5v
cGVyYW5kOwogCi0gICAgZW1pdF9jb21wYXJlQW5kSnVtcFNsb3cob3AxLCBvcDIsIHRhcmdldCwg
RG91YmxlTGVzc1RoYW5PckVxdWFsLCBjdGlfb3Bfamxlc3NlcSwgZmFsc2UsIGl0ZXIpOworICAg
IGVtaXRfY29tcGFyZUFuZEp1bXBTbG93KG9wMSwgb3AyLCB0YXJnZXQsIERvdWJsZUxlc3NUaGFu
T3JFcXVhbCwgb3BlcmF0aW9uQ29tcGFyZUxlc3NFcSwgZmFsc2UsIGl0ZXIpOwogfQogCiB2b2lk
IEpJVDo6ZW1pdFNsb3dfb3BfamdyZWF0ZXIoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
biwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKQEAgLTE0NCw3ICsxNDUs
NyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfamdyZWF0ZXIoSW5zdHJ1Y3RpCiAgICAgaW50IG9w
MiA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CiAgICAgdW5zaWduZWQgdGFyZ2V0
ID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKIAotICAgIGVtaXRfY29tcGFyZUFu
ZEp1bXBTbG93KG9wMSwgb3AyLCB0YXJnZXQsIERvdWJsZUdyZWF0ZXJUaGFuLCBjdGlfb3Bfamdy
ZWF0ZXIsIGZhbHNlLCBpdGVyKTsKKyAgICBlbWl0X2NvbXBhcmVBbmRKdW1wU2xvdyhvcDEsIG9w
MiwgdGFyZ2V0LCBEb3VibGVHcmVhdGVyVGhhbiwgb3BlcmF0aW9uQ29tcGFyZUdyZWF0ZXIsIGZh
bHNlLCBpdGVyKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2pncmVhdGVyZXEoSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYgaXRlcikKQEAgLTE1Myw3ICsxNTQsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfamdyZWF0
ZXJlcShJbnN0cnVjCiAgICAgaW50IG9wMiA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJh
bmQ7CiAgICAgdW5zaWduZWQgdGFyZ2V0ID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFu
ZDsKIAotICAgIGVtaXRfY29tcGFyZUFuZEp1bXBTbG93KG9wMSwgb3AyLCB0YXJnZXQsIERvdWJs
ZUdyZWF0ZXJUaGFuT3JFcXVhbCwgY3RpX29wX2pncmVhdGVyZXEsIGZhbHNlLCBpdGVyKTsKKyAg
ICBlbWl0X2NvbXBhcmVBbmRKdW1wU2xvdyhvcDEsIG9wMiwgdGFyZ2V0LCBEb3VibGVHcmVhdGVy
VGhhbk9yRXF1YWwsIG9wZXJhdGlvbkNvbXBhcmVHcmVhdGVyRXEsIGZhbHNlLCBpdGVyKTsKIH0K
IAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2pubGVzcyhJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQpAQCAtMTYyLDcg
KzE2Myw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9qbmxlc3MoSW5zdHJ1Y3Rpb24KICAgICBp
bnQgb3AyID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKICAgICB1bnNpZ25lZCB0
YXJnZXQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwogCi0gICAgZW1pdF9jb21w
YXJlQW5kSnVtcFNsb3cob3AxLCBvcDIsIHRhcmdldCwgRG91YmxlR3JlYXRlclRoYW5PckVxdWFs
T3JVbm9yZGVyZWQsIGN0aV9vcF9qbGVzcywgdHJ1ZSwgaXRlcik7CisgICAgZW1pdF9jb21wYXJl
QW5kSnVtcFNsb3cob3AxLCBvcDIsIHRhcmdldCwgRG91YmxlR3JlYXRlclRoYW5PckVxdWFsT3JV
bm9yZGVyZWQsIG9wZXJhdGlvbkNvbXBhcmVMZXNzLCB0cnVlLCBpdGVyKTsKIH0KIAogdm9pZCBK
SVQ6OmVtaXRTbG93X29wX2pubGVzc2VxKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24s
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCkBAIC0xNzEsNyArMTcyLDcg
QEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2pubGVzc2VxKEluc3RydWN0aQogICAgIGludCBvcDIg
PSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwogICAgIHVuc2lnbmVkIHRhcmdldCA9
IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CiAKLSAgICBlbWl0X2NvbXBhcmVBbmRK
dW1wU2xvdyhvcDEsIG9wMiwgdGFyZ2V0LCBEb3VibGVHcmVhdGVyVGhhbk9yVW5vcmRlcmVkLCBj
dGlfb3Bfamxlc3NlcSwgdHJ1ZSwgaXRlcik7CisgICAgZW1pdF9jb21wYXJlQW5kSnVtcFNsb3co
b3AxLCBvcDIsIHRhcmdldCwgRG91YmxlR3JlYXRlclRoYW5PclVub3JkZXJlZCwgb3BlcmF0aW9u
Q29tcGFyZUxlc3NFcSwgdHJ1ZSwgaXRlcik7CiB9CiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9q
bmdyZWF0ZXIoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYgaXRlcikKQEAgLTE4MCw3ICsxODEsNyBAQCB2b2lkIEpJVDo6ZW1p
dFNsb3dfb3Bfam5ncmVhdGVyKEluc3RydWN0CiAgICAgaW50IG9wMiA9IGN1cnJlbnRJbnN0cnVj
dGlvblsyXS51Lm9wZXJhbmQ7CiAgICAgdW5zaWduZWQgdGFyZ2V0ID0gY3VycmVudEluc3RydWN0
aW9uWzNdLnUub3BlcmFuZDsKIAotICAgIGVtaXRfY29tcGFyZUFuZEp1bXBTbG93KG9wMSwgb3Ay
LCB0YXJnZXQsIERvdWJsZUxlc3NUaGFuT3JFcXVhbE9yVW5vcmRlcmVkLCBjdGlfb3BfamdyZWF0
ZXIsIHRydWUsIGl0ZXIpOworICAgIGVtaXRfY29tcGFyZUFuZEp1bXBTbG93KG9wMSwgb3AyLCB0
YXJnZXQsIERvdWJsZUxlc3NUaGFuT3JFcXVhbE9yVW5vcmRlcmVkLCBvcGVyYXRpb25Db21wYXJl
R3JlYXRlciwgdHJ1ZSwgaXRlcik7CiB9CiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9qbmdyZWF0
ZXJlcShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJiBpdGVyKQpAQCAtMTg5LDcgKzE5MCw3IEBAIHZvaWQgSklUOjplbWl0U2xv
d19vcF9qbmdyZWF0ZXJlcShJbnN0cnUKICAgICBpbnQgb3AyID0gY3VycmVudEluc3RydWN0aW9u
WzJdLnUub3BlcmFuZDsKICAgICB1bnNpZ25lZCB0YXJnZXQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25b
M10udS5vcGVyYW5kOwogCi0gICAgZW1pdF9jb21wYXJlQW5kSnVtcFNsb3cob3AxLCBvcDIsIHRh
cmdldCwgRG91YmxlTGVzc1RoYW5PclVub3JkZXJlZCwgY3RpX29wX2pncmVhdGVyZXEsIHRydWUs
IGl0ZXIpOworICAgIGVtaXRfY29tcGFyZUFuZEp1bXBTbG93KG9wMSwgb3AyLCB0YXJnZXQsIERv
dWJsZUxlc3NUaGFuT3JVbm9yZGVyZWQsIG9wZXJhdGlvbkNvbXBhcmVHcmVhdGVyRXEsIHRydWUs
IGl0ZXIpOwogfQogCiAjaWYgVVNFKEpTVkFMVUU2NCkKQEAgLTQ1Nyw3ICs0NTgsNyBAQCB2b2lk
IEpJVDo6ZW1pdF9jb21wYXJlQW5kSnVtcChPcGNvZGVJRCwgCiAgICAgfQogfQogCi12b2lkIEpJ
VDo6ZW1pdF9jb21wYXJlQW5kSnVtcFNsb3coaW50IG9wMSwgaW50IG9wMiwgdW5zaWduZWQgdGFy
Z2V0LCBEb3VibGVDb25kaXRpb24gY29uZGl0aW9uLCBpbnQgKEpJVF9TVFVCICpzdHViKShTVFVC
X0FSR1NfREVDTEFSQVRJT04pLCBib29sIGludmVydCwgVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0X2NvbXBhcmVBbmRKdW1wU2xvdyhpbnQgb3Ax
LCBpbnQgb3AyLCB1bnNpZ25lZCB0YXJnZXQsIERvdWJsZUNvbmRpdGlvbiBjb25kaXRpb24sIHNp
emVfdCAoSklUX09QRVJBVElPTiAqb3BlcmF0aW9uKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUpLCBib29sIGludmVydCwgVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYgaXRlcikKIHsKICAgICBDT01QSUxFX0FTU0VSVChPUENPREVfTEVOR1RIKG9wX2ps
ZXNzKSA9PSBPUENPREVfTEVOR1RIKG9wX2psZXNzZXEpLCBPUENPREVfTEVOR1RIX29wX2psZXNz
ZXFfZXF1YWxzX29wX2psZXNzKTsKICAgICBDT01QSUxFX0FTU0VSVChPUENPREVfTEVOR1RIKG9w
X2psZXNzKSA9PSBPUENPREVfTEVOR1RIKG9wX2pubGVzcyksIE9QQ09ERV9MRU5HVEhfb3Bfam5s
ZXNzX2VxdWFsc19vcF9qbGVzcyk7CkBAIC00NzYsMTEgKzQ3NywxMSBAQCB2b2lkIEpJVDo6ZW1p
dF9jb21wYXJlQW5kSnVtcFNsb3coaW50IG9wCiAgICAgICAgIGxpbmtTbG93Q2FzZShpdGVyKTsK
ICAgICAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogICAgICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7
Ci0gICAgICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIHN0dWIpOwotICAgICAgICBzdHVi
Q2FsbC5hZGRBcmd1bWVudChvcDEsIHJlZ1QwKTsKLSAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1l
bnQob3AyLCByZWdUMSk7Ci0gICAgICAgIHN0dWJDYWxsLmNhbGwoKTsKLSAgICAgICAgZW1pdEp1
bXBTbG93VG9Ib3QoYnJhbmNoVGVzdDMyKGludmVydCA/IFplcm8gOiBOb25aZXJvLCByZWdUMCks
IHRhcmdldCk7CisKKyAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihvcDEsIGZpcnN0QXJn
dW1lbnRSZWdpc3Rlcik7CisgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIob3AyLCBzZWNv
bmRBcmd1bWVudFJlZ2lzdGVyKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb24sIGZp
cnN0QXJndW1lbnRSZWdpc3Rlciwgc2Vjb25kQXJndW1lbnRSZWdpc3Rlcik7CisgICAgICAgIGVt
aXRKdW1wU2xvd1RvSG90KGJyYW5jaFRlc3QzMihpbnZlcnQgPyBaZXJvIDogTm9uWmVybywgcmV0
dXJuVmFsdWVSZWdpc3RlciksIHRhcmdldCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAg
LTUwNCwxMiArNTA1LDkgQEAgdm9pZCBKSVQ6OmVtaXRfY29tcGFyZUFuZEp1bXBTbG93KGludCBv
cAogICAgICAgICAgICAgZmFpbDEubGluayh0aGlzKTsKICAgICAgICAgfQogCi0gICAgICAgIEpJ
VFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIHN0dWIpOwotICAgICAgICBzdHViQ2FsbC5hZGRBcmd1
bWVudChyZWdUMCk7Ci0gICAgICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KG9wMiwgcmVnVDIpOwot
ICAgICAgICBzdHViQ2FsbC5jYWxsKCk7Ci0gICAgICAgIGVtaXRKdW1wU2xvd1RvSG90KGJyYW5j
aFRlc3QzMihpbnZlcnQgPyBaZXJvIDogTm9uWmVybywgcmVnVDApLCB0YXJnZXQpOwotCisgICAg
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIob3AyLCByZWdUMSk7CisgICAgICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uLCByZWdUMCwgcmVnVDEpOworICAgICAgICBlbWl0SnVtcFNsb3dUb0hv
dChicmFuY2hUZXN0MzIoaW52ZXJ0ID8gWmVybyA6IE5vblplcm8sIHJldHVyblZhbHVlUmVnaXN0
ZXIpLCB0YXJnZXQpOwogICAgIH0gZWxzZSBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVJ
bnQob3AxKSkgewogICAgICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAKQEAgLTUzMCwxMSArNTI4
LDkgQEAgdm9pZCBKSVQ6OmVtaXRfY29tcGFyZUFuZEp1bXBTbG93KGludCBvcAogICAgICAgICAg
ICAgZmFpbDEubGluayh0aGlzKTsKICAgICAgICAgfQogCi0gICAgICAgIEpJVFN0dWJDYWxsIHN0
dWJDYWxsKHRoaXMsIHN0dWIpOwotICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChvcDEsIHJl
Z1QyKTsKLSAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocmVnVDEpOwotICAgICAgICBzdHVi
Q2FsbC5jYWxsKCk7Ci0gICAgICAgIGVtaXRKdW1wU2xvd1RvSG90KGJyYW5jaFRlc3QzMihpbnZl
cnQgPyBaZXJvIDogTm9uWmVybywgcmVnVDApLCB0YXJnZXQpOworICAgICAgICBlbWl0R2V0Vmly
dHVhbFJlZ2lzdGVyKG9wMSwgcmVnVDIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
biwgcmVnVDIsIHJlZ1QxKTsKKyAgICAgICAgZW1pdEp1bXBTbG93VG9Ib3QoYnJhbmNoVGVzdDMy
KGludmVydCA/IFplcm8gOiBOb25aZXJvLCByZXR1cm5WYWx1ZVJlZ2lzdGVyKSwgdGFyZ2V0KTsK
ICAgICB9IGVsc2UgewogICAgICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAKQEAgLTU1NywxMSAr
NTUzLDggQEAgdm9pZCBKSVQ6OmVtaXRfY29tcGFyZUFuZEp1bXBTbG93KGludCBvcAogICAgICAg
ICB9CiAKICAgICAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwotICAgICAgICBKSVRTdHViQ2FsbCBz
dHViQ2FsbCh0aGlzLCBzdHViKTsKLSAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocmVnVDAp
OwotICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChyZWdUMSk7Ci0gICAgICAgIHN0dWJDYWxs
LmNhbGwoKTsKLSAgICAgICAgZW1pdEp1bXBTbG93VG9Ib3QoYnJhbmNoVGVzdDMyKGludmVydCA/
IFplcm8gOiBOb25aZXJvLCByZWdUMCksIHRhcmdldCk7CisgICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uLCByZWdUMCwgcmVnVDEpOworICAgICAgICBlbWl0SnVtcFNsb3dUb0hvdChicmFu
Y2hUZXN0MzIoaW52ZXJ0ID8gWmVybyA6IE5vblplcm8sIHJldHVyblZhbHVlUmVnaXN0ZXIpLCB0
YXJnZXQpOwogICAgIH0KIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJ
bmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxp
bmVzLmgJKHJldmlzaW9uIDE1NzE2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNDMsNiArMjQzLDMwIEBAIEFMV0FZU19JTkxJ
TkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjoKICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHQob3BlcmF0aW9uLCBkc3QpOwogfQogCitBTFdB
WVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihTX0pJVE9w
ZXJhdGlvbl9FQ0Mgb3BlcmF0aW9uLCBSZWdpc3RlcklEIHJlZ09wMSwgUmVnaXN0ZXJJRCByZWdP
cDIpCit7CisgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKHJlZ09wMSwgcmVnT3AyKTsK
KyAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOworfQor
CitBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihT
X0pJVE9wZXJhdGlvbl9FSiBvcGVyYXRpb24sIFJlZ2lzdGVySUQgcmVnT3ApCit7CisgICAgc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKHJlZ09wKTsKKyAgICByZXR1cm4gYXBwZW5kQ2FsbFdp
dGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOworfQorCitBTFdBWVNfSU5MSU5FIE1hY3JvQXNz
ZW1ibGVyOjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlvbl9FSkogb3BlcmF0
aW9uLCBSZWdpc3RlcklEIHJlZ09wMSwgUmVnaXN0ZXJJRCByZWdPcDIpCit7CisgICAgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKHJlZ09wMSwgcmVnT3AyKTsKKyAgICByZXR1cm4gYXBwZW5k
Q2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOworfQorCitBTFdBWVNfSU5MSU5FIE1h
Y3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlvbl9FT0pz
cyBvcGVyYXRpb24sIFJlZ2lzdGVySUQgcmVnT3AxLCBSZWdpc3RlcklEIHJlZ09wMikKK3sKKyAg
ICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUocmVnT3AxLCByZWdPcDIpOworICAgIHJldHVy
biBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7Cit9CisKIEFMV0FZU19J
TkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9uV2l0aENhbGxGcmFt
ZVJvbGxiYWNrT25FeGNlcHRpb24oSl9KSVRPcGVyYXRpb25fRSBvcGVyYXRpb24pCiB7CiAgICAg
c2V0dXBBcmd1bWVudHNFeGVjU3RhdGUoKTsKQEAgLTI2MSw2ICsyODUsNDEgQEAgQUxXQVlTX0lO
TElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OgogICAgIHJldHVybiBhcHBlbmRDYWxsV2l0
aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24ob3BlcmF0aW9uKTsKIH0KIAorI2lmIFVTRShK
U1ZBTFVFMzJfNjQpCisKKy8vIEVuY29kZWRKU1ZhbHVlIGluIEpTVkFMVUUzMl82NCBpcyBhIDY0
LWJpdCBpbnRlZ2VyLiBXaGVuIGJlaW5nIGNvbXBpbGVkIGluIEFSTSBFQUJJLCBpdCBtdXN0IGJl
IGFsaWduZWQgZXZlbi1udW1iZXJlZCByZWdpc3RlciAocjAsIHIyIG9yIFtzcF0pLgorLy8gVG8g
YXZvaWQgYXNzZW1ibGllcyBmcm9tIHVzaW5nIHdyb25nIHJlZ2lzdGVycywgbGV0J3Mgb2NjdXB5
IHIxIG9yIHIzIHdpdGggYSBkdW1teSBhcmd1bWVudCB3aGVuIG5lY2Vzc2FyeS4KKyNpZiAoQ09N
UElMRVJfU1VQUE9SVFMoRUFCSSkgJiYgQ1BVKEFSTSkpIHx8IENQVShNSVBTKQorI2RlZmluZSBF
QUJJXzMyQklUX0RVTU1ZX0FSRyAgICAgIFRydXN0ZWRJbW0zMigwKSwKKyNlbHNlCisjZGVmaW5l
IEVBQklfMzJCSVRfRFVNTVlfQVJHCisjZW5kaWYKKworLy8gSlNWQUxVRTMyXzY0IGlzIGEgNjQt
Yml0IGludGVnZXIgdGhhdCBjYW5ub3QgYmUgcHV0IGhhbGYgaW4gYW4gYXJndW1lbnQgcmVnaXN0
ZXIgYW5kIGhhbGYgb24gc3RhY2sgd2hlbiB1c2luZyBTSDQgYXJjaGl0ZWN0dXJlLgorLy8gVG8g
YXZvaWQgdGhpcywgbGV0J3Mgb2NjdXB5IHRoZSA0dGggYXJndW1lbnQgcmVnaXN0ZXIgKHI3KSB3
aXRoIGEgZHVtbXkgYXJndW1lbnQgd2hlbiBuZWNlc3NhcnkuCisjaWYgQ1BVKFNINCkKKyNkZWZp
bmUgU0g0XzMyQklUX0RVTU1ZX0FSRyAgICAgIFRydXN0ZWRJbW0zMigwKSwKKyNlbHNlCisjZGVm
aW5lIFNINF8zMkJJVF9EVU1NWV9BUkcKKyNlbmRpZgorCitBTFdBWVNfSU5MSU5FIE1hY3JvQXNz
ZW1ibGVyOjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlvbl9FSiBvcGVyYXRp
b24sIFJlZ2lzdGVySUQgYXJnVGFnLCBSZWdpc3RlcklEIGFyZ1BheWxvYWQpCit7CisgICAgc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZ1BheWxvYWQs
IGFyZ1RhZyk7CisgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0
aW9uKTsKK30KKworQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmNhbGxP
cGVyYXRpb24oU19KSVRPcGVyYXRpb25fRUpKIG9wZXJhdGlvbiwgUmVnaXN0ZXJJRCBhcmcxVGFn
LCBSZWdpc3RlcklEIGFyZzFQYXlsb2FkLCBSZWdpc3RlcklEIGFyZzJUYWcsIFJlZ2lzdGVySUQg
YXJnMlBheWxvYWQpCit7CisgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJC
SVRfRFVNTVlfQVJHIGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBTSDRfMzJCSVRfRFVNTVlfQVJHIGFy
ZzJQYXlsb2FkLCBhcmcyVGFnKTsKKyAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVjayhvcGVyYXRpb24pOworfQorCisjdW5kZWYgRUFCSV8zMkJJVF9EVU1NWV9BUkcKKyN1bmRl
ZiBTSDRfMzJCSVRfRFVNTVlfQVJHCisKKyNlbmRpZiAvLyBVU0UoSlNWQUxVRTMyXzY0KQorCiBB
TFdBWVNfSU5MSU5FIEpJVDo6SnVtcCBKSVQ6OmNoZWNrU3RydWN0dXJlKFJlZ2lzdGVySUQgcmVn
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKICAgICByZXR1cm4gYnJhbmNoUHRyKE5vdEVxdWFs
LCBBZGRyZXNzKHJlZywgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIo
c3RydWN0dXJlKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMz
Ml82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzMzJfNjQuY3BwCShyZXZpc2lvbiAxNTcxNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5NywxMCArNDk3LDgg
QEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2pmYWxzZShJbnN0cnVjdGlvbgogICAgICAgICBub3RO
dW1iZXIubGluayh0aGlzKTsKICAgICB9CiAKLSAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlz
LCBjdGlfb3BfanRydWUpOwotICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KGNvbmQpOwotICAgIHN0
dWJDYWxsLmNhbGwoKTsKLSAgICBlbWl0SnVtcFNsb3dUb0hvdChicmFuY2hUZXN0MzIoWmVybywg
cmVnVDApLCB0YXJnZXQpOyAvLyBJbnZlcnRlZC4KKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
bkNvbnZlcnRKU1ZhbHVlVG9Cb29sZWFuLCByZWdUMSwgcmVnVDApOworICAgIGVtaXRKdW1wU2xv
d1RvSG90KGJyYW5jaFRlc3QzMihaZXJvLCByZXR1cm5WYWx1ZVJlZ2lzdGVyKSwgdGFyZ2V0KTsg
Ly8gSW52ZXJ0ZWQuCiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2p0cnVlKEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC01MzMsMTAgKzUzMSw4IEBAIHZvaWQgSklUOjplbWl0U2xv
d19vcF9qdHJ1ZShJbnN0cnVjdGlvbioKICAgICAgICAgbm90TnVtYmVyLmxpbmsodGhpcyk7CiAg
ICAgfQogCi0gICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX2p0cnVlKTsKLSAg
ICBzdHViQ2FsbC5hZGRBcmd1bWVudChjb25kKTsKLSAgICBzdHViQ2FsbC5jYWxsKCk7Ci0gICAg
ZW1pdEp1bXBTbG93VG9Ib3QoYnJhbmNoVGVzdDMyKE5vblplcm8sIHJlZ1QwKSwgdGFyZ2V0KTsK
KyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNvbnZlcnRKU1ZhbHVlVG9Cb29sZWFuLCByZWdU
MSwgcmVnVDApOworICAgIGVtaXRKdW1wU2xvd1RvSG90KGJyYW5jaFRlc3QzMihOb25aZXJvLCBy
ZXR1cm5WYWx1ZVJlZ2lzdGVyKSwgdGFyZ2V0KTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfamVx
X251bGwoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTYzNCwyMiArNjMwLDE4
IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9lcShJbnN0cnVjdGlvbiogY3UKICAgICBnZW5lcmlj
Q2FzZS5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QyLCBKU0NlbGw6OnN0
cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihtX3ZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0
KCkpKSk7CiAKICAgICAvLyBTdHJpbmcgY2FzZS4KLSAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbEVx
U3RyaW5ncyh0aGlzLCBjdGlfb3BfZXFfc3RyaW5ncyk7Ci0gICAgc3R1YkNhbGxFcVN0cmluZ3Mu
YWRkQXJndW1lbnQocmVnVDApOwotICAgIHN0dWJDYWxsRXFTdHJpbmdzLmFkZEFyZ3VtZW50KHJl
Z1QyKTsKLSAgICBzdHViQ2FsbEVxU3RyaW5ncy5jYWxsKCk7CisgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25Db21wYXJlU3RyaW5nRXEsIHJlZ1QwLCByZWdUMik7CiAgICAgc3RvcmVSZXN1bHQu
YXBwZW5kKGp1bXAoKSk7CiAKICAgICAvLyBHZW5lcmljIGNhc2UuCiAgICAgZ2VuZXJpY0Nhc2Uu
YXBwZW5kKGdldFNsb3dDYXNlKGl0ZXIpKTsgLy8gZG91YmxlcwogICAgIGdlbmVyaWNDYXNlLmxp
bmsodGhpcyk7Ci0gICAgSklUU3R1YkNhbGwgc3R1YkNhbGxFcSh0aGlzLCBjdGlfb3BfZXEpOwot
ICAgIHN0dWJDYWxsRXEuYWRkQXJndW1lbnQob3AxKTsKLSAgICBzdHViQ2FsbEVxLmFkZEFyZ3Vt
ZW50KG9wMik7Ci0gICAgc3R1YkNhbGxFcS5jYWxsKHJlZ1QwKTsKKyAgICBlbWl0TG9hZChvcDEs
IHJlZ1QxLCByZWdUMCk7CisgICAgZW1pdExvYWQob3AyLCByZWdUMywgcmVnVDIpOworICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uQ29tcGFyZUVxLCByZWdUMSwgcmVnVDAsIHJlZ1QzLCByZWdU
Mik7CiAKICAgICBzdG9yZVJlc3VsdC5saW5rKHRoaXMpOwotICAgIGVtaXRTdG9yZUJvb2woZHN0
LCByZWdUMCk7CisgICAgZW1pdFN0b3JlQm9vbChkc3QsIHJldHVyblZhbHVlUmVnaXN0ZXIpOwog
fQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9uZXEoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKQEAgLTY4MiwyMyArNjc0LDE3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9uZXEoSW5zdHJ1
Y3Rpb24qIGMKICAgICBnZW5lcmljQ2FzZS5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRy
ZXNzKHJlZ1QyLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihtX3Zt
LT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CiAKICAgICAvLyBTdHJpbmcgY2FzZS4KLSAgICBK
SVRTdHViQ2FsbCBzdHViQ2FsbEVxU3RyaW5ncyh0aGlzLCBjdGlfb3BfZXFfc3RyaW5ncyk7Ci0g
ICAgc3R1YkNhbGxFcVN0cmluZ3MuYWRkQXJndW1lbnQocmVnVDApOwotICAgIHN0dWJDYWxsRXFT
dHJpbmdzLmFkZEFyZ3VtZW50KHJlZ1QyKTsKLSAgICBzdHViQ2FsbEVxU3RyaW5ncy5jYWxsKHJl
Z1QwKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNvbXBhcmVTdHJpbmdFcSwgcmVnVDAs
IHJlZ1QyKTsKICAgICBzdG9yZVJlc3VsdC5hcHBlbmQoanVtcCgpKTsKIAogICAgIC8vIEdlbmVy
aWMgY2FzZS4KICAgICBnZW5lcmljQ2FzZS5hcHBlbmQoZ2V0U2xvd0Nhc2UoaXRlcikpOyAvLyBk
b3VibGVzCiAgICAgZ2VuZXJpY0Nhc2UubGluayh0aGlzKTsKLSAgICBKSVRTdHViQ2FsbCBzdHVi
Q2FsbEVxKHRoaXMsIGN0aV9vcF9lcSk7Ci0gICAgc3R1YkNhbGxFcS5hZGRBcmd1bWVudChyZWdU
MSwgcmVnVDApOwotICAgIHN0dWJDYWxsRXEuYWRkQXJndW1lbnQocmVnVDMsIHJlZ1QyKTsKLSAg
ICBzdHViQ2FsbEVxLmNhbGwocmVnVDApOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ29t
cGFyZUVxLCByZWdUMSwgcmVnVDAsIHJlZ1QzLCByZWdUMik7CiAKICAgICBzdG9yZVJlc3VsdC5s
aW5rKHRoaXMpOwotICAgIHhvcjMyKFRydXN0ZWRJbW0zMigweDEpLCByZWdUMCk7Ci0gICAgZW1p
dFN0b3JlQm9vbChkc3QsIHJlZ1QwKTsKKyAgICB4b3IzMihUcnVzdGVkSW1tMzIoMHgxKSwgcmV0
dXJuVmFsdWVSZWdpc3Rlcik7CisgICAgZW1pdFN0b3JlQm9vbChkc3QsIHJldHVyblZhbHVlUmVn
aXN0ZXIpOwogfQogCiB2b2lkIEpJVDo6Y29tcGlsZU9wU3RyaWN0RXEoSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgQ29tcGlsZU9wU3RyaWN0RXFUeXBlIHR5cGUpCkBAIC05MzUsMTAg
KzkyMSw3IEBAIHZvaWQgSklUOjplbWl0X29wX25leHRfcG5hbWUoSW5zdHJ1Y3Rpb24KICAgICAv
LyBTbG93IGNhc2U6IEFzayB0aGUgb2JqZWN0IGlmIGkgaXMgdmFsaWQuCiAgICAgY2FsbEhhc1By
b3BlcnR5LmxpbmsodGhpcyk7CiAgICAgbG9hZFB0cihhZGRyZXNzRm9yKGRzdCksIHJlZ1QxKTsK
LSAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfaGFzX3Byb3BlcnR5KTsKLSAgICBz
dHViQ2FsbC5hZGRBcmd1bWVudChyZWdUMCk7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocmVn
VDEpOwotICAgIHN0dWJDYWxsLmNhbGwoKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkhh
c1Byb3BlcnR5LCByZWdUMCwgcmVnVDEpOwogCiAgICAgLy8gVGVzdCBmb3IgdmFsaWQga2V5Lgog
ICAgIGFkZEp1bXAoYnJhbmNoVGVzdDMyKE5vblplcm8sIHJlZ1QwKSwgdGFyZ2V0KTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkocmV2aXNpb24gMTU3MTY0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTkxLDEwICs1OTEsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9uZXh0X3BuYW1lKElu
c3RydWN0aW9uCiAgICAgLy8gU2xvdyBjYXNlOiBBc2sgdGhlIG9iamVjdCBpZiBpIGlzIHZhbGlk
LgogICAgIGNhbGxIYXNQcm9wZXJ0eS5saW5rKHRoaXMpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVn
aXN0ZXIoZHN0LCByZWdUMSk7Ci0gICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX2hh
c19wcm9wZXJ0eSk7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocmVnVDApOwotICAgIHN0dWJD
YWxsLmFkZEFyZ3VtZW50KHJlZ1QxKTsKLSAgICBzdHViQ2FsbC5jYWxsKCk7CisgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25IYXNQcm9wZXJ0eSwgcmVnVDAsIHJlZ1QxKTsKIAogICAgIC8vIFRl
c3QgZm9yIHZhbGlkIGtleS4KICAgICBhZGRKdW1wKGJyYW5jaFRlc3QzMihOb25aZXJvLCByZWdU
MCksIHRhcmdldCk7CkBAIC05NzUsMTkgKzk3MiwxNSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
bm90KEluc3RydWN0aW9uKiBjCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfamZhbHNlKEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
IGl0ZXIpCiB7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwotICAgIEpJVFN0dWJDYWxsIHN0dWJD
YWxsKHRoaXMsIGN0aV9vcF9qdHJ1ZSk7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocmVnVDAp
OwotICAgIHN0dWJDYWxsLmNhbGwoKTsKLSAgICBlbWl0SnVtcFNsb3dUb0hvdChicmFuY2hUZXN0
MzIoWmVybywgcmVnVDApLCBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsgLy8gaW52
ZXJ0ZWQhCisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Db252ZXJ0SlNWYWx1ZVRvQm9vbGVh
biwgcmVnVDApOworICAgIGVtaXRKdW1wU2xvd1RvSG90KGJyYW5jaFRlc3QzMihaZXJvLCByZXR1
cm5WYWx1ZVJlZ2lzdGVyKSwgY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7IC8vIGlu
dmVydGVkIQogfQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfanRydWUoSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikK
IHsKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7Ci0gICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhp
cywgY3RpX29wX2p0cnVlKTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChyZWdUMCk7Ci0gICAg
c3R1YkNhbGwuY2FsbCgpOwotICAgIGVtaXRKdW1wU2xvd1RvSG90KGJyYW5jaFRlc3QzMihOb25a
ZXJvLCByZWdUMCksIGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOworICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uQ29udmVydEpTVmFsdWVUb0Jvb2xlYW4sIHJlZ1QwKTsKKyAgICBl
bWl0SnVtcFNsb3dUb0hvdChicmFuY2hUZXN0MzIoTm9uWmVybywgcmV0dXJuVmFsdWVSZWdpc3Rl
ciksIGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOwogfQogCiB2b2lkIEpJVDo6ZW1p
dFNsb3dfb3BfYml0eG9yKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCkBAIC0xMDA5LDI0ICsxMDAyLDE4IEBAIHZv
aWQgSklUOjplbWl0U2xvd19vcF9iaXRvcihJbnN0cnVjdGlvbioKIHZvaWQgSklUOjplbWl0U2xv
d19vcF9lcShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKLSAgICBK
SVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfZXEpOwotICAgIHN0dWJDYWxsLmFkZEFy
Z3VtZW50KHJlZ1QwKTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChyZWdUMSk7Ci0gICAgc3R1
YkNhbGwuY2FsbCgpOwotICAgIGVtaXRUYWdBc0Jvb2xJbW1lZGlhdGUocmVnVDApOwotICAgIGVt
aXRQdXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7Cisg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Db21wYXJlRXEsIHJlZ1QwLCByZWdUMSk7CisgICAg
ZW1pdFRhZ0FzQm9vbEltbWVkaWF0ZShyZXR1cm5WYWx1ZVJlZ2lzdGVyKTsKKyAgICBlbWl0UHV0
VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIHJldHVyblZh
bHVlUmVnaXN0ZXIpOwogfQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbmVxKEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0
ZXIpCiB7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwotICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxs
KHRoaXMsIGN0aV9vcF9lcSk7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocmVnVDApOwotICAg
IHN0dWJDYWxsLmFkZEFyZ3VtZW50KHJlZ1QxKTsKLSAgICBzdHViQ2FsbC5jYWxsKCk7CisgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25Db21wYXJlRXEsIHJlZ1QwLCByZWdUMSk7CiAgICAgeG9y
MzIoVHJ1c3RlZEltbTMyKDB4MSksIHJlZ1QwKTsKLSAgICBlbWl0VGFnQXNCb29sSW1tZWRpYXRl
KHJlZ1QwKTsKLSAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsx
XS51Lm9wZXJhbmQpOworICAgIGVtaXRUYWdBc0Jvb2xJbW1lZGlhdGUocmV0dXJuVmFsdWVSZWdp
c3Rlcik7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kLCByZXR1cm5WYWx1ZVJlZ2lzdGVyKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRTbG93
X29wX3N0cmljdGVxKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDE1NzE2NCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3MCw2
ICs2NzAsNzkgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25WaXJ0dWFsQ29ucwogICAg
IHJldHVybiB2aXJ0dWFsRm9yKGV4ZWNDYWxsZWUsIENvZGVGb3JDb25zdHJ1Y3QpOwogfQogCisK
K3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVMZXNzKEV4ZWNTdGF0ZSogZXhl
YywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikK
K3sKKyAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBleGVjKTsKKyAgICAKKyAgICByZXR1cm4ganNMZXNzPHRydWU+KGV4ZWMsIEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKTsK
K30KKworc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZUxlc3NFcShFeGVjU3Rh
dGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRPcDIpCit7CisgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisKKyAgICByZXR1cm4ganNMZXNzRXE8dHJ1ZT4oZXhl
YywgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9w
MikpOworfQorCitzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlR3JlYXRlcihF
eGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRPcDIpCit7CisgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisKKyAgICByZXR1cm4ganNMZXNzPGZhbHNl
PihleGVjLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMiksIEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkT3AxKSk7Cit9CisKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVHcmVh
dGVyRXEoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkT3AyKQoreworICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOworICAgIE5h
dGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOworCisgICAgcmV0dXJuIGpzTGVz
c0VxPGZhbHNlPihleGVjLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMiksIEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkT3AxKSk7Cit9CisKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNv
bnZlcnRKU1ZhbHVlVG9Cb29sZWFuKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZE9wKQoreworICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOworICAgIAorICAgIHJldHVybiBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZE9wKS50b0Jvb2xlYW4oZXhlYyk7Cit9CisKK3NpemVfdCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkNvbXBhcmVFcShFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpCit7CisgICAgVk0qIHZtID0gJmV4ZWMt
PnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZXF1YWxTbG93Q2FzZUlubGluZShleGVjLCBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSk7Cit9CisKKyNpZiBV
U0UoSlNWQUxVRTY0KQorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21w
YXJlU3RyaW5nRXEoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIGxlZnQsIEpTQ2VsbCogcmlnaHQp
CisjZWxzZQorc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZVN0cmluZ0VxKEV4
ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBsZWZ0LCBKU0NlbGwqIHJpZ2h0KQorI2VuZGlmCit7Cisg
ICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgZXhlYyk7CisKKyAgICBib29sIHJlc3VsdCA9IGFzU3RyaW5nKGxlZnQpLT52YWx1ZShl
eGVjKSA9PSBhc1N0cmluZyhyaWdodCktPnZhbHVlKGV4ZWMpOworI2lmIFVTRShKU1ZBTFVFNjQp
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ocmVzdWx0KSk7CisjZWxzZQor
ICAgIHJldHVybiByZXN1bHQ7CisjZW5kaWYKK30KKworc2l6ZV90IEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uSGFzUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZSwgSlNTdHJp
bmcqIHByb3BlcnR5KQoreworICAgIGludCByZXN1bHQgPSBiYXNlLT5oYXNQcm9wZXJ0eShleGVj
LCBJZGVudGlmaWVyKGV4ZWMsIHByb3BlcnR5LT52YWx1ZShleGVjKSkpOworICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisgICAgCisKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
TmV3UmVnZXhwKEV4ZWNTdGF0ZSogZXhlYywgdm9pZCogcmVnZXhwUHRyKQogewogICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuaAkocmV2aXNpb24gMTU3MTY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgQzogSlNDZWxsKgogICAgIENiOiBDb2RlQmxvY2sqCiAgICAgQTogSlNBcnJh
eSoKKyAgICBSOiBSZWdpc3RlcgogICAgIFM6IHNpemVfdAogICAgIFo6IGludDMyX3QKICAgICBE
OiBkb3VibGUKQEAgLTk5LDYgKzEwMCw3IEBAIHR5cGVkZWYgaW50MzJfdCBKSVRfT1BFUkFUSU9O
ICgqWl9KSVRPcGUKIHR5cGVkZWYgc2l6ZV90IEpJVF9PUEVSQVRJT04gKCpTX0pJVE9wZXJhdGlv
bl9FQ0MpKEV4ZWNTdGF0ZSosIEpTQ2VsbCosIEpTQ2VsbCopOwogdHlwZWRlZiBzaXplX3QgSklU
X09QRVJBVElPTiAoKlNfSklUT3BlcmF0aW9uX0VKKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1
ZSk7CiB0eXBlZGVmIHNpemVfdCBKSVRfT1BFUkFUSU9OICgqU19KSVRPcGVyYXRpb25fRUpKKShF
eGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpOwordHlwZWRlZiBzaXpl
X3QgSklUX09QRVJBVElPTiAoKlNfSklUT3BlcmF0aW9uX0VPSnNzKShFeGVjU3RhdGUqLCBKU09i
amVjdCosIEpTU3RyaW5nKik7CiB0eXBlZGVmIHNpemVfdCBKSVRfT1BFUkFUSU9OICgqU19KSVRP
cGVyYXRpb25fSikoRW5jb2RlZEpTVmFsdWUpOwogdHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04g
KCpWX0pJVE9wZXJhdGlvbl9FKShFeGVjU3RhdGUqKTsKIHR5cGVkZWYgdm9pZCBKSVRfT1BFUkFU
SU9OICgqVl9KSVRPcGVyYXRpb25fRU9aRCkoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBpbnQzMl90
LCBkb3VibGUpOwpAQCAtMjA1LDYgKzIwNywxOCBAQCBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkxpbmtDYWxsKEV4CiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkxpbmtDbG9zdXJl
Q2FsbChFeGVjU3RhdGUqKSBXVEZfSU5URVJOQUw7CiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblZpcnR1YWxDb25zdHJ1Y3QoRXhlY1N0YXRlKikgV1RGX0lOVEVSTkFMOwogY2hhciogSklU
X09QRVJBVElPTiBvcGVyYXRpb25MaW5rQ29uc3RydWN0KEV4ZWNTdGF0ZSopIFdURl9JTlRFUk5B
TDsKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVMZXNzKEV4ZWNTdGF0ZSos
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpIFdU
Rl9JTlRFUk5BTDsKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVMZXNzRXEo
RXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZE9wMikgV1RGX0lOVEVSTkFMOworc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29t
cGFyZUdyZWF0ZXIoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZE9wMikgV1RGX0lOVEVSTkFMOworc2l6ZV90IEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uQ29tcGFyZUdyZWF0ZXJFcShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKSBXVEZfSU5URVJOQUw7CitzaXplX3Qg
SklUX09QRVJBVElPTiBvcGVyYXRpb25Db252ZXJ0SlNWYWx1ZVRvQm9vbGVhbihFeGVjU3RhdGUq
LCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOworc2l6ZV90IEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uQ29tcGFyZUVxKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSkgV1RGX0lOVEVSTkFMOworI2lmIFVTRShKU1ZBTFVFNjQpCitFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVTdHJpbmdFcShFeGVjU3RhdGUqLCBKU0NlbGwqIGxl
ZnQsIEpTQ2VsbCogcmlnaHQpIFdURl9JTlRFUk5BTDsKKyNlbHNlCitzaXplX3QgSklUX09QRVJB
VElPTiBvcGVyYXRpb25Db21wYXJlU3RyaW5nRXEoRXhlY1N0YXRlKiwgSlNDZWxsKiBsZWZ0LCBK
U0NlbGwqIHJpZ2h0KSBXVEZfSU5URVJOQUw7CisjZW5kaWYKK3NpemVfdCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkhhc1Byb3BlcnR5KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNTdHJpbmcqKSBX
VEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld1Jl
Z2V4cChFeGVjU3RhdGUqLCB2b2lkKikgV1RGX0lOVEVSTkFMOwogCiB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkocmV2aXNpb24gMTU3MTY0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NDQs
MTg1ICsxNDQ0LDYgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCosIG9wX2xvYWRfdmFyYQog
ICAgIHJldHVybiBuZXdDYWxsRnJhbWU7CiB9CiAKLURFRklORV9TVFVCX0ZVTkNUSU9OKGludCwg
b3Bfamxlc3MpCi17Ci0gICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwotCi0g
ICAgSlNWYWx1ZSBzcmMxID0gc3RhY2tGcmFtZS5hcmdzWzBdLmpzVmFsdWUoKTsKLSAgICBKU1Zh
bHVlIHNyYzIgPSBzdGFja0ZyYW1lLmFyZ3NbMV0uanNWYWx1ZSgpOwotICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gc3RhY2tGcmFtZS5jYWxsRnJhbWU7Ci0KLSAgICBib29sIHJlc3VsdCA9IGpz
TGVzczx0cnVlPihjYWxsRnJhbWUsIHNyYzEsIHNyYzIpOwotICAgIENIRUNLX0ZPUl9FWENFUFRJ
T05fQVRfRU5EKCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotREVGSU5FX1NUVUJfRlVOQ1RJ
T04oaW50LCBvcF9qbGVzc2VxKQotewotICAgIFNUVUJfSU5JVF9TVEFDS19GUkFNRShzdGFja0Zy
YW1lKTsKLQotICAgIEpTVmFsdWUgc3JjMSA9IHN0YWNrRnJhbWUuYXJnc1swXS5qc1ZhbHVlKCk7
Ci0gICAgSlNWYWx1ZSBzcmMyID0gc3RhY2tGcmFtZS5hcmdzWzFdLmpzVmFsdWUoKTsKLSAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IHN0YWNrRnJhbWUuY2FsbEZyYW1lOwotCi0gICAgYm9vbCBy
ZXN1bHQgPSBqc0xlc3NFcTx0cnVlPihjYWxsRnJhbWUsIHNyYzEsIHNyYzIpOwotICAgIENIRUNL
X0ZPUl9FWENFUFRJT05fQVRfRU5EKCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotREVGSU5F
X1NUVUJfRlVOQ1RJT04oaW50LCBvcF9qZ3JlYXRlcikKLXsKLSAgICBTVFVCX0lOSVRfU1RBQ0tf
RlJBTUUoc3RhY2tGcmFtZSk7Ci0KLSAgICBKU1ZhbHVlIHNyYzEgPSBzdGFja0ZyYW1lLmFyZ3Nb
MF0uanNWYWx1ZSgpOwotICAgIEpTVmFsdWUgc3JjMiA9IHN0YWNrRnJhbWUuYXJnc1sxXS5qc1Zh
bHVlKCk7Ci0gICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxGcmFtZTsK
LQotICAgIGJvb2wgcmVzdWx0ID0ganNMZXNzPGZhbHNlPihjYWxsRnJhbWUsIHNyYzIsIHNyYzEp
OwotICAgIENIRUNLX0ZPUl9FWENFUFRJT05fQVRfRU5EKCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLQotREVGSU5FX1NUVUJfRlVOQ1RJT04oaW50LCBvcF9qZ3JlYXRlcmVxKQotewotICAgIFNU
VUJfSU5JVF9TVEFDS19GUkFNRShzdGFja0ZyYW1lKTsKLQotICAgIEpTVmFsdWUgc3JjMSA9IHN0
YWNrRnJhbWUuYXJnc1swXS5qc1ZhbHVlKCk7Ci0gICAgSlNWYWx1ZSBzcmMyID0gc3RhY2tGcmFt
ZS5hcmdzWzFdLmpzVmFsdWUoKTsKLSAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IHN0YWNrRnJh
bWUuY2FsbEZyYW1lOwotCi0gICAgYm9vbCByZXN1bHQgPSBqc0xlc3NFcTxmYWxzZT4oY2FsbEZy
YW1lLCBzcmMyLCBzcmMxKTsKLSAgICBDSEVDS19GT1JfRVhDRVBUSU9OX0FUX0VORCgpOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci0KLURFRklORV9TVFVCX0ZVTkNUSU9OKGludCwgb3BfanRydWUp
Ci17Ci0gICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwotCi0gICAgSlNWYWx1
ZSBzcmMxID0gc3RhY2tGcmFtZS5hcmdzWzBdLmpzVmFsdWUoKTsKLQotICAgIGJvb2wgcmVzdWx0
ID0gc3JjMS50b0Jvb2xlYW4oc3RhY2tGcmFtZS5jYWxsRnJhbWUpOwotICAgIENIRUNLX0ZPUl9F
WENFUFRJT05fQVRfRU5EKCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotREVGSU5FX1NUVUJf
RlVOQ1RJT04oaW50LCBvcF9lcSkKLXsKLSAgICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tG
cmFtZSk7Ci0KLSAgICBKU1ZhbHVlIHNyYzEgPSBzdGFja0ZyYW1lLmFyZ3NbMF0uanNWYWx1ZSgp
OwotICAgIEpTVmFsdWUgc3JjMiA9IHN0YWNrRnJhbWUuYXJnc1sxXS5qc1ZhbHVlKCk7Ci0KLSNp
ZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgIHN0YXJ0OgotICAgIGlmIChzcmMyLmlzVW5kZWZpbmVk
KCkpIHsKLSAgICAgICAgcmV0dXJuIHNyYzEuaXNOdWxsKCkgfHwgCi0gICAgICAgICAgICAgICAo
c3JjMS5pc0NlbGwoKSAmJiBzcmMxLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKS0+bWFzcXVlcmFkZXNB
c1VuZGVmaW5lZChzdGFja0ZyYW1lLmNhbGxGcmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSkK
LSAgICAgICAgICAgICAgIHx8IHNyYzEuaXNVbmRlZmluZWQoKTsKLSAgICB9Ci0gICAgCi0gICAg
aWYgKHNyYzIuaXNOdWxsKCkpIHsKLSAgICAgICAgcmV0dXJuIHNyYzEuaXNVbmRlZmluZWQoKSB8
fCAKLSAgICAgICAgICAgICAgIChzcmMxLmlzQ2VsbCgpICYmIHNyYzEuYXNDZWxsKCktPnN0cnVj
dHVyZSgpLT5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkKHN0YWNrRnJhbWUuY2FsbEZyYW1lLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCkpKQotICAgICAgICAgICAgICAgfHwgc3JjMS5pc051bGwoKTsKLSAg
ICB9Ci0KLSAgICBpZiAoc3JjMS5pc0ludDMyKCkpIHsKLSAgICAgICAgaWYgKHNyYzIuaXNEb3Vi
bGUoKSkKLSAgICAgICAgICAgIHJldHVybiBzcmMxLmFzSW50MzIoKSA9PSBzcmMyLmFzRG91Ymxl
KCk7Ci0gICAgICAgIGRvdWJsZSBkID0gc3JjMi50b051bWJlcihzdGFja0ZyYW1lLmNhbGxGcmFt
ZSk7Ci0gICAgICAgIENIRUNLX0ZPUl9FWENFUFRJT04oKTsKLSAgICAgICAgcmV0dXJuIHNyYzEu
YXNJbnQzMigpID09IGQ7Ci0gICAgfQotCi0gICAgaWYgKHNyYzEuaXNEb3VibGUoKSkgewotICAg
ICAgICBpZiAoc3JjMi5pc0ludDMyKCkpCi0gICAgICAgICAgICByZXR1cm4gc3JjMS5hc0RvdWJs
ZSgpID09IHNyYzIuYXNJbnQzMigpOwotICAgICAgICBkb3VibGUgZCA9IHNyYzIudG9OdW1iZXIo
c3RhY2tGcmFtZS5jYWxsRnJhbWUpOwotICAgICAgICBDSEVDS19GT1JfRVhDRVBUSU9OKCk7Ci0g
ICAgICAgIHJldHVybiBzcmMxLmFzRG91YmxlKCkgPT0gZDsKLSAgICB9Ci0KLSAgICBpZiAoc3Jj
MS5pc1RydWUoKSkgewotICAgICAgICBpZiAoc3JjMi5pc0ZhbHNlKCkpCi0gICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIGRvdWJsZSBkID0gc3JjMi50b051bWJlcihzdGFja0ZyYW1l
LmNhbGxGcmFtZSk7Ci0gICAgICAgIENIRUNLX0ZPUl9FWENFUFRJT04oKTsKLSAgICAgICAgcmV0
dXJuIGQgPT0gMS4wOwotICAgIH0KLQotICAgIGlmIChzcmMxLmlzRmFsc2UoKSkgewotICAgICAg
ICBpZiAoc3JjMi5pc1RydWUoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
ZG91YmxlIGQgPSBzcmMyLnRvTnVtYmVyKHN0YWNrRnJhbWUuY2FsbEZyYW1lKTsKLSAgICAgICAg
Q0hFQ0tfRk9SX0VYQ0VQVElPTigpOwotICAgICAgICByZXR1cm4gZCA9PSAwLjA7Ci0gICAgfQot
ICAgIAotICAgIGlmIChzcmMxLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIHJldHVybiBzcmMyLmlz
Q2VsbCgpICYmIHNyYzIuYXNDZWxsKCktPnN0cnVjdHVyZSgpLT5tYXNxdWVyYWRlc0FzVW5kZWZp
bmVkKHN0YWNrRnJhbWUuY2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOwotICAgIAot
ICAgIGlmIChzcmMxLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gc3JjMi5pc0NlbGwoKSAmJiBz
cmMyLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKS0+bWFzcXVlcmFkZXNBc1VuZGVmaW5lZChzdGFja0Zy
YW1lLmNhbGxGcmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKLQotICAgIEpTQ2VsbCogY2Vs
bDEgPSBzcmMxLmFzQ2VsbCgpOwotCi0gICAgaWYgKGNlbGwxLT5pc1N0cmluZygpKSB7Ci0gICAg
ICAgIGlmIChzcmMyLmlzSW50MzIoKSkKLSAgICAgICAgICAgIHJldHVybiBqc1RvTnVtYmVyKGpz
Q2FzdDxKU1N0cmluZyo+KGNlbGwxKS0+dmFsdWUoc3RhY2tGcmFtZS5jYWxsRnJhbWUpKSA9PSBz
cmMyLmFzSW50MzIoKTsKLSAgICAgICAgICAgIAotICAgICAgICBpZiAoc3JjMi5pc0RvdWJsZSgp
KQotICAgICAgICAgICAgcmV0dXJuIGpzVG9OdW1iZXIoanNDYXN0PEpTU3RyaW5nKj4oY2VsbDEp
LT52YWx1ZShzdGFja0ZyYW1lLmNhbGxGcmFtZSkpID09IHNyYzIuYXNEb3VibGUoKTsKLQotICAg
ICAgICBpZiAoc3JjMi5pc1RydWUoKSkKLSAgICAgICAgICAgIHJldHVybiBqc1RvTnVtYmVyKGpz
Q2FzdDxKU1N0cmluZyo+KGNlbGwxKS0+dmFsdWUoc3RhY2tGcmFtZS5jYWxsRnJhbWUpKSA9PSAx
LjA7Ci0KLSAgICAgICAgaWYgKHNyYzIuaXNGYWxzZSgpKQotICAgICAgICAgICAgcmV0dXJuIGpz
VG9OdW1iZXIoanNDYXN0PEpTU3RyaW5nKj4oY2VsbDEpLT52YWx1ZShzdGFja0ZyYW1lLmNhbGxG
cmFtZSkpID09IDAuMDsKLQotICAgICAgICBKU0NlbGwqIGNlbGwyID0gc3JjMi5hc0NlbGwoKTsK
LSAgICAgICAgaWYgKGNlbGwyLT5pc1N0cmluZygpKQotICAgICAgICAgICAgcmV0dXJuIGpzQ2Fz
dDxKU1N0cmluZyo+KGNlbGwxKS0+dmFsdWUoc3RhY2tGcmFtZS5jYWxsRnJhbWUpID09IGpzQ2Fz
dDxKU1N0cmluZyo+KGNlbGwyKS0+dmFsdWUoc3RhY2tGcmFtZS5jYWxsRnJhbWUpOwotCi0gICAg
ICAgIHNyYzIgPSBhc09iamVjdChjZWxsMiktPnRvUHJpbWl0aXZlKHN0YWNrRnJhbWUuY2FsbEZy
YW1lKTsKLSAgICAgICAgQ0hFQ0tfRk9SX0VYQ0VQVElPTigpOwotICAgICAgICBnb3RvIHN0YXJ0
OwotICAgIH0KLQotICAgIGlmIChzcmMyLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBhc09i
amVjdChjZWxsMSkgPT0gYXNPYmplY3Qoc3JjMik7Ci0gICAgc3JjMSA9IGFzT2JqZWN0KGNlbGwx
KS0+dG9QcmltaXRpdmUoc3RhY2tGcmFtZS5jYWxsRnJhbWUpOwotICAgIENIRUNLX0ZPUl9FWENF
UFRJT04oKTsKLSAgICBnb3RvIHN0YXJ0OwotICAgIAotI2Vsc2UgLy8gVVNFKEpTVkFMVUUzMl82
NCkKLSAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IHN0YWNrRnJhbWUuY2FsbEZyYW1lOwotICAg
IAotICAgIGJvb2wgcmVzdWx0ID0gSlNWYWx1ZTo6ZXF1YWxTbG93Q2FzZUlubGluZShjYWxsRnJh
bWUsIHNyYzEsIHNyYzIpOwotICAgIENIRUNLX0ZPUl9FWENFUFRJT05fQVRfRU5EKCk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLSNlbmRpZiAvLyBVU0UoSlNWQUxVRTMyXzY0KQotfQotCi1ERUZJTkVf
U1RVQl9GVU5DVElPTihpbnQsIG9wX2VxX3N0cmluZ3MpCi17Ci0jaWYgVVNFKEpTVkFMVUUzMl82
NCkKLSAgICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7Ci0KLSAgICBKU1N0cmlu
Zyogc3RyaW5nMSA9IHN0YWNrRnJhbWUuYXJnc1swXS5qc1N0cmluZygpOwotICAgIEpTU3RyaW5n
KiBzdHJpbmcyID0gc3RhY2tGcmFtZS5hcmdzWzFdLmpzU3RyaW5nKCk7Ci0KLSAgICBBU1NFUlQo
c3RyaW5nMS0+aXNTdHJpbmcoKSk7Ci0gICAgQVNTRVJUKHN0cmluZzItPmlzU3RyaW5nKCkpOwot
ICAgIHJldHVybiBzdHJpbmcxLT52YWx1ZShzdGFja0ZyYW1lLmNhbGxGcmFtZSkgPT0gc3RyaW5n
Mi0+dmFsdWUoc3RhY2tGcmFtZS5jYWxsRnJhbWUpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0o
YXJncyk7Ci0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gMDsK
LSNlbmRpZgotfQotCiBERUZJTkVfU1RVQl9GVU5DVElPTihKU09iamVjdCosIG9wX25ld19mdW5j
X2V4cCkKIHsKICAgICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7CkBAIC0xNjU3
LDE3ICsxNDc4LDYgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04oSlNQcm9wZXJ0eU5hbWVJdGVyYQog
ICAgIHJldHVybiBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yOwogfQogCi1ERUZJTkVfU1RVQl9GVU5D
VElPTihpbnQsIGhhc19wcm9wZXJ0eSkKLXsKLSAgICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3Rh
Y2tGcmFtZSk7Ci0KLSAgICBKU09iamVjdCogYmFzZSA9IHN0YWNrRnJhbWUuYXJnc1swXS5qc09i
amVjdCgpOwotICAgIEpTU3RyaW5nKiBwcm9wZXJ0eSA9IHN0YWNrRnJhbWUuYXJnc1sxXS5qc1N0
cmluZygpOwotICAgIGludCByZXN1bHQgPSBiYXNlLT5oYXNQcm9wZXJ0eShzdGFja0ZyYW1lLmNh
bGxGcmFtZSwgSWRlbnRpZmllcihzdGFja0ZyYW1lLmNhbGxGcmFtZSwgcHJvcGVydHktPnZhbHVl
KHN0YWNrRnJhbWUuY2FsbEZyYW1lKSkpOwotICAgIENIRUNLX0ZPUl9FWENFUFRJT05fQVRfRU5E
KCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQogREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwg
b3BfcHVzaF93aXRoX3Njb3BlKQogewogICAgIFNUVUJfSU5JVF9TVEFDS19GUkFNRShzdGFja0Zy
YW1lKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmgJKHJldmlzaW9uIDE1
NzE2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuaAkod29ya2luZyBj
b3B5KQpAQCAtMzU5LDE2ICszNTksOCBAQCB2b2lkIEpJVF9TVFVCIGN0aV9vcF9wdXNoX25hbWVf
c2NvcGUoU1RVCiB2b2lkIEpJVF9TVFVCIGN0aV9vcF9wdXNoX3dpdGhfc2NvcGUoU1RVQl9BUkdT
X0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7CiBKU09iamVjdCogSklUX1NUVUIgY3RpX29wX3B1
dF9ieV9pZF90cmFuc2l0aW9uX3JlYWxsb2MoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5U
RVJOQUw7CiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBKSVRfU1RVQiBjdGlfb3BfZ2V0X3BuYW1l
cyhTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKLWludCBKSVRfU1RVQiBjdGlf
b3BfZXEoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7Ci1pbnQgSklUX1NUVUIg
Y3RpX29wX2VxX3N0cmluZ3MoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7Ci1p
bnQgSklUX1NUVUIgY3RpX29wX2psZXNzKFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVS
TkFMOwotaW50IEpJVF9TVFVCIGN0aV9vcF9qbGVzc2VxKFNUVUJfQVJHU19ERUNMQVJBVElPTikg
V1RGX0lOVEVSTkFMOwotaW50IEpJVF9TVFVCIGN0aV9vcF9qZ3JlYXRlcihTVFVCX0FSR1NfREVD
TEFSQVRJT04pIFdURl9JTlRFUk5BTDsKLWludCBKSVRfU1RVQiBjdGlfb3BfamdyZWF0ZXJlcShT
VFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKLWludCBKSVRfU1RVQiBjdGlfb3Bf
anRydWUoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7CiB2b2lkKiBKSVRfU1RV
QiBjdGlfb3BfbG9hZF92YXJhcmdzKFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFM
Owogdm9pZCBKSVRfU1RVQiBjdGlfaGFuZGxlX3dhdGNoZG9nX3RpbWVyKFNUVUJfQVJHU19ERUNM
QVJBVElPTikgV1RGX0lOVEVSTkFMOwotaW50IEpJVF9TVFVCIGN0aV9oYXNfcHJvcGVydHkoU1RV
Ql9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9TVFVCIGN0aV9vcF9k
ZWJ1ZyhTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX1NUVUIg
Y3RpX29wX3BvcF9zY29wZShTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKIHZv
aWQgSklUX1NUVUIgY3RpX29wX3Byb2ZpbGVfZGlkX2NhbGwoU1RVQl9BUkdTX0RFQ0xBUkFUSU9O
KSBXVEZfSU5URVJOQUw7Cg==
</data>
<flag name="review"
          id="236361"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>