<?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>116557</bug_id>
          
          <creation_ts>2013-05-21 10:38:41 -0700</creation_ts>
          <short_desc>fourthTier: add heuristics to reduce the likelihood of a trivially inlineable function being independently compiled by the concurrent JIT</short_desc>
          <delta_ts>2013-05-24 14:06:02 -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>
          <dependson>116696</dependson>
          <blocked>112836</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>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>891885</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-05-21 10:38:41 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>893081</commentid>
    <comment_count>1</comment_count>
      <attachid>202751</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-05-23 16:25:10 -0700</bug_when>
    <thetext>Created attachment 202751
WRONG PATCH</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>893082</commentid>
    <comment_count>2</comment_count>
      <attachid>202751</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-05-23 16:25:35 -0700</bug_when>
    <thetext>Comment on attachment 202751
WRONG PATCH

WRONG PATCH</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>893125</commentid>
    <comment_count>3</comment_count>
      <attachid>202763</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-05-23 21:53:48 -0700</bug_when>
    <thetext>Created attachment 202763
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>893126</commentid>
    <comment_count>4</comment_count>
      <attachid>202763</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-05-23 22:01:10 -0700</bug_when>
    <thetext>Comment on attachment 202763
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>893435</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-05-24 14:06:02 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/150657</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>202751</attachid>
            <date>2013-05-23 16:25:10 -0700</date>
            <delta_ts>2013-05-23 21:53:48 -0700</delta_ts>
            <desc>WRONG PATCH</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>31771</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTUwNjE2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU5IEBA
CisyMDEzLTA1LTIzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
Zm91cnRoVGllcjogcmF0aW9uYWxpemUgREZHOjpDYXBhYmlsaXR5TGV2ZWwgYW5kIERGR0NhcGFi
aWxpdGllcy5baHxjcHBdCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMTY2OTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAg
ICAgICAgCisgICAgICAgIE1ha2UgaXQgc28gdGhhdCBhbGwgY2FwYWJpbGl0eSBjYWxjdWxhdGlv
biBpcyBmdW5uZWxlZCB0aHJvdWdoIG9uZSBmdW5jdGlvbiwgd2hpY2ggdGVsbHMKKyAgICAgICAg
eW91IGV2ZXJ5dGhpbmcgeW91IHdhbnRlZCB0byBrbm93OiBjYW4gaXQgYmUgaW5saW5lZCwgYW5k
IGNhbiBpdCBiZSBjb21waWxlZC4KKyAgICAgICAgCisgICAgICAgIFRoaXMgd29yayB3aWxsIGhl
bHAgd2l0aCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE2NTU3LCBz
aW5jZSBub3cgdGhlCisgICAgICAgIEpJVCBoYXMgYSBmYWlybHkgYXV0aG9yaXRhdGl2ZSBhbnN3
ZXIgdG8gdGhlICJjYW4gaXQgYmUgaW5saW5lZCIgcXVlc3Rpb24uCisKKyAgICAgICAgKiBieXRl
Y29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OkNvZGVCbG9jayk6
CisgICAgICAgIChKU0M6OlByb2dyYW1Db2RlQmxvY2s6OmNhcGFiaWxpdHlMZXZlbEludGVybmFs
KToKKyAgICAgICAgKEpTQzo6RXZhbENvZGVCbG9jazo6Y2FwYWJpbGl0eUxldmVsSW50ZXJuYWwp
OgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNvZGVCbG9jazo6Y2FwYWJpbGl0eUxldmVsSW50ZXJu
YWwpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoQ29kZUJsb2Nr
KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpjYXBhYmlsaXR5TGV2ZWwpOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmNhcGFiaWxpdHlMZXZlbFN0YXRlKToKKyAgICAgICAgKFByb2dyYW1D
b2RlQmxvY2spOgorICAgICAgICAoRXZhbENvZGVCbG9jayk6CisgICAgICAgIChGdW5jdGlvbkNv
ZGVCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6ZGVidWdGYWlsKToKKyAgICAgICAgKERGRyk6CisgICAgICAgIChKU0M6OkRGRzo6
Y2FuSW5saW5lUmVzb2x2ZU9wZXJhdGlvbnMpOgorICAgICAgICAoSlNDOjpERkc6OmNhcGFiaWxp
dHlMZXZlbCk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5oOgorICAgICAgICAoREZH
KToKKyAgICAgICAgKEpTQzo6REZHOjpjYXBhYmlsaXR5TGV2ZWwpOgorICAgICAgICAoSlNDOjpE
Rkc6OmV2YWxDYXBhYmlsaXR5TGV2ZWwpOgorICAgICAgICAoSlNDOjpERkc6OnByb2dyYW1DYXBh
YmlsaXR5TGV2ZWwpOgorICAgICAgICAoSlNDOjpERkc6OmZ1bmN0aW9uRm9yQ2FsbENhcGFiaWxp
dHlMZXZlbCk6CisgICAgICAgIChKU0M6OkRGRzo6ZnVuY3Rpb25Gb3JDb25zdHJ1Y3RDYXBhYmls
aXR5TGV2ZWwpOgorICAgICAgICAoSlNDOjpERkc6OmNhbklubGluZUZ1bmN0aW9uRm9yQ2FsbCk6
CisgICAgICAgIChKU0M6OkRGRzo6Y2FuSW5saW5lRnVuY3Rpb25Gb3JDbG9zdXJlQ2FsbCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6Y2FuSW5saW5lRnVuY3Rpb25Gb3JDb25zdHJ1Y3QpOgorICAgICAg
ICAqIGRmZy9ERkdDb21tb24uaDoKKyAgICAgICAgKEpTQzo6REZHOjpjYW5Db21waWxlKToKKyAg
ICAgICAgKERGRyk6CisgICAgICAgIChKU0M6OkRGRzo6Y2FuSW5saW5lKToKKyAgICAgICAgKEpT
Qzo6REZHOjpsZWFzdFVwcGVyQm91bmQpOgorICAgICAgICAqIGRmZy9ERkdEcml2ZXIuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OmNvbXBpbGUpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAg
ICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVy
dHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlJZFRy
YW5zaXRpb24pOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAg
ICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKToKKyAgICAg
ICAgKiB0b29scy9Db2RlUHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6OkNvZGVQcm9maWxlOjpz
YW1wbGUpOgorCiAyMDEzLTA1LTIyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAK
ICAgICAgICAgTWVyZ2UgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTQ5MTYyLCBz
aW5jZSB3ZSBuZWVkIGl0IGFmdGVyCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMTUwNjE0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OTgsNyAr
MTU5OCw3IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKENvcHlQYXJzZWRCbG9ja1RhZywKICAgICAs
IG1fcmVzb2x2ZU9wZXJhdGlvbnMob3RoZXIubV9yZXNvbHZlT3BlcmF0aW9ucykKICAgICAsIG1f
cHV0VG9CYXNlT3BlcmF0aW9ucyhvdGhlci5tX3B1dFRvQmFzZU9wZXJhdGlvbnMpCiAjaWYgRU5B
QkxFKEpJVCkKLSAgICAsIG1fY2FuQ29tcGlsZVdpdGhERkdTdGF0ZShERkc6OkNhcGFiaWxpdHlM
ZXZlbE5vdFNldCkKKyAgICAsIG1fY2FwYWJpbGl0eUxldmVsU3RhdGUoREZHOjpDYXBhYmlsaXR5
TGV2ZWxOb3RTZXQpCiAjZW5kaWYKIHsKICAgICBzZXROdW1QYXJhbWV0ZXJzKG90aGVyLm51bVBh
cmFtZXRlcnMoKSk7CkBAIC0yODUxLDIxICsyODUxLDIxIEBAIENvbXBpbGF0aW9uUmVzdWx0IEZ1
bmN0aW9uQ29kZUJsb2NrOjpyZXAKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVj
dXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5yZXBsYWNlV2l0aERlZmVycmVkT3B0aW1pemVk
Q29kZUZvcihwbGFuLCBtX2lzQ29uc3RydWN0b3IgPyBDb2RlRm9yQ29uc3RydWN0IDogQ29kZUZv
ckNhbGwpOwogfQogCi1ERkc6OkNhcGFiaWxpdHlMZXZlbCBQcm9ncmFtQ29kZUJsb2NrOjpjYW5D
b21waWxlV2l0aERGR0ludGVybmFsKCkKK0RGRzo6Q2FwYWJpbGl0eUxldmVsIFByb2dyYW1Db2Rl
QmxvY2s6OmNhcGFiaWxpdHlMZXZlbEludGVybmFsKCkKIHsKLSAgICByZXR1cm4gREZHOjpjYW5D
b21waWxlUHJvZ3JhbSh0aGlzKTsKKyAgICByZXR1cm4gREZHOjpwcm9ncmFtQ2FwYWJpbGl0eUxl
dmVsKHRoaXMpOwogfQogCi1ERkc6OkNhcGFiaWxpdHlMZXZlbCBFdmFsQ29kZUJsb2NrOjpjYW5D
b21waWxlV2l0aERGR0ludGVybmFsKCkKK0RGRzo6Q2FwYWJpbGl0eUxldmVsIEV2YWxDb2RlQmxv
Y2s6OmNhcGFiaWxpdHlMZXZlbEludGVybmFsKCkKIHsKLSAgICByZXR1cm4gREZHOjpjYW5Db21w
aWxlRXZhbCh0aGlzKTsKKyAgICByZXR1cm4gREZHOjpldmFsQ2FwYWJpbGl0eUxldmVsKHRoaXMp
OwogfQogCi1ERkc6OkNhcGFiaWxpdHlMZXZlbCBGdW5jdGlvbkNvZGVCbG9jazo6Y2FuQ29tcGls
ZVdpdGhERkdJbnRlcm5hbCgpCitERkc6OkNhcGFiaWxpdHlMZXZlbCBGdW5jdGlvbkNvZGVCbG9j
azo6Y2FwYWJpbGl0eUxldmVsSW50ZXJuYWwoKQogewogICAgIGlmIChtX2lzQ29uc3RydWN0b3Ip
Ci0gICAgICAgIHJldHVybiBERkc6OmNhbkNvbXBpbGVGdW5jdGlvbkZvckNvbnN0cnVjdCh0aGlz
KTsKLSAgICByZXR1cm4gREZHOjpjYW5Db21waWxlRnVuY3Rpb25Gb3JDYWxsKHRoaXMpOworICAg
ICAgICByZXR1cm4gREZHOjpmdW5jdGlvbkZvckNvbnN0cnVjdENhcGFiaWxpdHlMZXZlbCh0aGlz
KTsKKyAgICByZXR1cm4gREZHOjpmdW5jdGlvbkZvckNhbGxDYXBhYmlsaXR5TGV2ZWwodGhpcyk7
CiB9CiAKIHZvaWQgUHJvZ3JhbUNvZGVCbG9jazo6amV0dGlzb24oKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMTUwNjE0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMDYsMTQgKzMwNiwxNCBAQCBwdWJsaWM6CiAgICAgfQogICAgIHZpcnR1YWwgQ29kZUJs
b2NrKiByZXBsYWNlbWVudCgpID0gMDsKIAotICAgIHZpcnR1YWwgREZHOjpDYXBhYmlsaXR5TGV2
ZWwgY2FuQ29tcGlsZVdpdGhERkdJbnRlcm5hbCgpID0gMDsKLSAgICBERkc6OkNhcGFiaWxpdHlM
ZXZlbCBjYW5Db21waWxlV2l0aERGRygpCisgICAgdmlydHVhbCBERkc6OkNhcGFiaWxpdHlMZXZl
bCBjYXBhYmlsaXR5TGV2ZWxJbnRlcm5hbCgpID0gMDsKKyAgICBERkc6OkNhcGFiaWxpdHlMZXZl
bCBjYXBhYmlsaXR5TGV2ZWwoKQogICAgIHsKLSAgICAgICAgREZHOjpDYXBhYmlsaXR5TGV2ZWwg
cmVzdWx0ID0gY2FuQ29tcGlsZVdpdGhERkdJbnRlcm5hbCgpOwotICAgICAgICBtX2NhbkNvbXBp
bGVXaXRoREZHU3RhdGUgPSByZXN1bHQ7CisgICAgICAgIERGRzo6Q2FwYWJpbGl0eUxldmVsIHJl
c3VsdCA9IGNhcGFiaWxpdHlMZXZlbEludGVybmFsKCk7CisgICAgICAgIG1fY2FwYWJpbGl0eUxl
dmVsU3RhdGUgPSByZXN1bHQ7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQotICAgIERG
Rzo6Q2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGVXaXRoREZHU3RhdGUoKSB7IHJldHVybiBtX2Nh
bkNvbXBpbGVXaXRoREZHU3RhdGU7IH0KKyAgICBERkc6OkNhcGFiaWxpdHlMZXZlbCBjYXBhYmls
aXR5TGV2ZWxTdGF0ZSgpIHsgcmV0dXJuIG1fY2FwYWJpbGl0eUxldmVsU3RhdGU7IH0KIAogICAg
IGJvb2wgaGFzT3B0aW1pemVkUmVwbGFjZW1lbnQoKTsKICNlbHNlCkBAIC05MDYsNyArOTA2LDcg
QEAgcHVibGljOgogICAgIC8vIHdpdGhvdXQgaG9sZGluZyBhbnkgbG9ja3MsIGJlY2F1c2UgdGhl
IEdDIGlzIGd1YXJhbnRlZWQgdG8gd2FpdCB1bnRpbCBhbnkKICAgICAvLyBjb25jdXJyZW50IGNv
bXBpbGF0aW9uIHRocmVhZHMgZmluaXNoIHdoYXQgdGhleSdyZSBkb2luZy4KICAgICBDb25jdXJy
ZW50SklUTG9jayBtX2xvY2s7Ci0KKyAgICAKIHByb3RlY3RlZDoKICNpZiBFTkFCTEUoSklUKQog
ICAgIHZpcnR1YWwgQ29tcGlsYXRpb25SZXN1bHQgaml0Q29tcGlsZUltcGwoRXhlY1N0YXRlKikg
PSAwOwpAQCAtMTEwMyw3ICsxMTAzLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgIE93blB0cjxS
YXJlRGF0YT4gbV9yYXJlRGF0YTsKICNpZiBFTkFCTEUoSklUKQotICAgIERGRzo6Q2FwYWJpbGl0
eUxldmVsIG1fY2FuQ29tcGlsZVdpdGhERkdTdGF0ZTsKKyAgICBERkc6OkNhcGFiaWxpdHlMZXZl
bCBtX2NhcGFiaWxpdHlMZXZlbFN0YXRlOwogI2VuZGlmCiB9OwogCkBAIC0xMTQyLDcgKzExNDIs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGpldHRpc29uKCk7CiAgICAgdmlydHVh
bCBDb21waWxhdGlvblJlc3VsdCBqaXRDb21waWxlSW1wbChFeGVjU3RhdGUqKTsKICAgICB2aXJ0
dWFsIENvZGVCbG9jayogcmVwbGFjZW1lbnQoKTsKLSAgICB2aXJ0dWFsIERGRzo6Q2FwYWJpbGl0
eUxldmVsIGNhbkNvbXBpbGVXaXRoREZHSW50ZXJuYWwoKTsKKyAgICB2aXJ0dWFsIERGRzo6Q2Fw
YWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbEludGVybmFsKCk7CiAjZW5kaWYKIH07CiAKQEAg
LTExNjgsNyArMTE2OCw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgamV0dGlzb24o
KTsKICAgICB2aXJ0dWFsIENvbXBpbGF0aW9uUmVzdWx0IGppdENvbXBpbGVJbXBsKEV4ZWNTdGF0
ZSopOwogICAgIHZpcnR1YWwgQ29kZUJsb2NrKiByZXBsYWNlbWVudCgpOwotICAgIHZpcnR1YWwg
REZHOjpDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZVdpdGhERkdJbnRlcm5hbCgpOworICAgIHZp
cnR1YWwgREZHOjpDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsSW50ZXJuYWwoKTsKICNl
bmRpZgogCiBwcml2YXRlOgpAQCAtMTE5NCw3ICsxMTk0LDcgQEAgcHJvdGVjdGVkOgogICAgIHZp
cnR1YWwgdm9pZCBqZXR0aXNvbigpOwogICAgIHZpcnR1YWwgQ29tcGlsYXRpb25SZXN1bHQgaml0
Q29tcGlsZUltcGwoRXhlY1N0YXRlKik7CiAgICAgdmlydHVhbCBDb2RlQmxvY2sqIHJlcGxhY2Vt
ZW50KCk7Ci0gICAgdmlydHVhbCBERkc6OkNhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlV2l0aERG
R0ludGVybmFsKCk7CisgICAgdmlydHVhbCBERkc6OkNhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5
TGV2ZWxJbnRlcm5hbCgpOwogI2VuZGlmCiB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCShyZXZpc2lvbiAxNTA2MTQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTY2LDUyICs2NiwyMDEgQEAgYm9vbCBtaWdodElubGluZUZ1bmN0aW9uRm9yQ29uc3RydWN0KENv
ZAogICAgICAgICAmJiAhY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+bmVlZHNBY3RpdmF0
aW9uKCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBkZWJ1Z0ZhaWwoQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIE9wY29kZUlEIG9wY29kZUlELCBib29sIHJlc3VsdCkKK2lubGluZSB2b2lkIGRlYnVn
RmFpbChDb2RlQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIENhcGFiaWxpdHlM
ZXZlbCByZXN1bHQpCiB7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsICFyZXN1bHQpOwotI2lm
IERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKLSAgICBkYXRhTG9nRigiQ2Fubm90IGhhbmRsZSBj
b2RlIGJsb2NrICVwIGJlY2F1c2Ugb2Ygb3Bjb2RlICVzLlxuIiwgY29kZUJsb2NrLCBvcGNvZGVO
YW1lc1tvcGNvZGVJRF0pOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oY29kZUJsb2NrKTsKLSAg
ICBVTlVTRURfUEFSQU0ob3Bjb2RlSUQpOwotICAgIFVOVVNFRF9QQVJBTShyZXN1bHQpOwotI2Vu
ZGlmCisgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VDb21waWxhdGlvbigpICYmICFjYW5Db21waWxl
KHJlc3VsdCkpCisgICAgICAgIGRhdGFMb2coIkNhbm5vdCBjb21waWxlIGNvZGUgYmxvY2sgIiwg
KmNvZGVCbG9jaywgIiBiZWNhdXNlIG9mIG9wY29kZSAlcy5cbiIsIG9wY29kZU5hbWVzW29wY29k
ZUlEXSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBkZWJ1Z0ZhaWwoQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIE9wY29kZUlEIG9wY29kZUlELCBDYXBhYmlsaXR5TGV2ZWwgcmVzdWx0KQorLy8gT3Bj
b2RlIGNoZWNraW5nLgoraW5saW5lIGJvb2wgY2FuSW5saW5lUmVzb2x2ZU9wZXJhdGlvbnMoUmVz
b2x2ZU9wZXJhdGlvbnMqIG9wZXJhdGlvbnMpCiB7Ci0gICAgQVNTRVJUKHJlc3VsdCAhPSBDYW5D
b21waWxlKTsKLSNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgaWYgKHJlc3VsdCA9
PSBDYW5ub3RDb21waWxlKQotICAgICAgICBkYXRhTG9nRigiQ2Fubm90IGhhbmRsZSBjb2RlIGJs
b2NrICVwIGJlY2F1c2Ugb2Ygb3Bjb2RlICVzLlxuIiwgY29kZUJsb2NrLCBvcGNvZGVOYW1lc1tv
cGNvZGVJRF0pOwotICAgIGVsc2UgewotICAgICAgICBkYXRhTG9nRigiQ2Fubm90IGNvbXBpbGUg
Y29kZSBibG9jayAlcCBiZWNhdXNlIG9mIG9wY29kZSAlcywgYnV0IGlubGluaW5nIG1pZ2h0IGJl
IHBvc3NpYmxlLlxuIiwgY29kZUJsb2NrLCBvcGNvZGVOYW1lc1tvcGNvZGVJRF0pOworICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBvcGVyYXRpb25zLT5zaXplKCk7IGkrKykgeworICAgICAg
ICBzd2l0Y2ggKG9wZXJhdGlvbnMtPmRhdGEoKVtpXS5tX29wZXJhdGlvbikgeworICAgICAgICBj
YXNlIFJlc29sdmVPcGVyYXRpb246OlJldHVybkdsb2JhbE9iamVjdEFzQmFzZToKKyAgICAgICAg
Y2FzZSBSZXNvbHZlT3BlcmF0aW9uOjpTZXRCYXNlVG9HbG9iYWw6CisgICAgICAgIGNhc2UgUmVz
b2x2ZU9wZXJhdGlvbjo6U2V0QmFzZVRvVW5kZWZpbmVkOgorICAgICAgICBjYXNlIFJlc29sdmVP
cGVyYXRpb246OkdldEFuZFJldHVybkdsb2JhbFByb3BlcnR5OgorICAgICAgICBjYXNlIFJlc29s
dmVPcGVyYXRpb246OkdldEFuZFJldHVybkdsb2JhbFZhcjoKKyAgICAgICAgY2FzZSBSZXNvbHZl
T3BlcmF0aW9uOjpHZXRBbmRSZXR1cm5HbG9iYWxWYXJXYXRjaGFibGU6CisgICAgICAgIGNhc2Ug
UmVzb2x2ZU9wZXJhdGlvbjo6U2tpcFNjb3BlczoKKyAgICAgICAgY2FzZSBSZXNvbHZlT3BlcmF0
aW9uOjpTZXRCYXNlVG9TY29wZToKKyAgICAgICAgY2FzZSBSZXNvbHZlT3BlcmF0aW9uOjpSZXR1
cm5TY29wZUFzQmFzZToKKyAgICAgICAgY2FzZSBSZXNvbHZlT3BlcmF0aW9uOjpHZXRBbmRSZXR1
cm5TY29wZWRWYXI6CisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBjYXNlIFJlc29s
dmVPcGVyYXRpb246OkZhaWw6CisgICAgICAgICAgICAvLyBGYWxsLWJhY2sgcmVzb2x2ZXMgZG9u
J3Qga25vdyBob3cgdG8gZGVhbCB3aXRoIHRoZSBFeGVjU3RhdGUqIGhhdmluZyBhIGRpZmZlcmVu
dAorICAgICAgICAgICAgLy8gZ2xvYmFsIG9iamVjdCAoYW5kIHNjb3BlKSB0aGFuIHRoZSBpbmxp
bmVkIGNvZGUgdGhhdCBpcyBpbnZva2luZyB0aGF0IHJlc29sdmUuCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAgICAgY2FzZSBSZXNvbHZlT3BlcmF0aW9uOjpTa2lwVG9wU2NvcGVO
b2RlOgorICAgICAgICAgICAgLy8gV2UgZG9uJ3QgaW5saW5lIGNvZGUgYmxvY2tzIHRoYXQgY3Jl
YXRlIGFjdGl2YXRpb25zLiBDcmVhdGlvbiBvZgorICAgICAgICAgICAgLy8gYWN0aXZhdGlvbnMg
aXMgdGhlIG9ubHkgdGhpbmcgdGhhdCBsZWFkcyB0byBTa2lwVG9wU2NvcGVOb2RlLgorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGNhc2UgUmVzb2x2ZU9wZXJhdGlvbjo6Q2hl
Y2tGb3JEeW5hbWljRW50cmllc0JlZm9yZUdsb2JhbFNjb3BlOgorICAgICAgICAgICAgLy8gVGhp
cyB3b3VsZCBiZSBlYXN5IHRvIHN1cHBvcnQgaW4gYWxsIGNhc2VzLgorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICB9CiAgICAgfQotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oY29k
ZUJsb2NrKTsKLSAgICBVTlVTRURfUEFSQU0ob3Bjb2RlSUQpOwotICAgIFVOVVNFRF9QQVJBTShy
ZXN1bHQpOworICAgIHJldHVybiB0cnVlOworfQorCitDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0
eUxldmVsKE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rp
b24qIHBjKQoreworICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKKyAgICBjYXNlIG9wX2VudGVyOgor
ICAgIGNhc2Ugb3BfdG9fdGhpczoKKyAgICBjYXNlIG9wX2NyZWF0ZV90aGlzOgorICAgIGNhc2Ug
b3BfZ2V0X2NhbGxlZToKKyAgICBjYXNlIG9wX2JpdGFuZDoKKyAgICBjYXNlIG9wX2JpdG9yOgor
ICAgIGNhc2Ugb3BfYml0eG9yOgorICAgIGNhc2Ugb3BfcnNoaWZ0OgorICAgIGNhc2Ugb3BfbHNo
aWZ0OgorICAgIGNhc2Ugb3BfdXJzaGlmdDoKKyAgICBjYXNlIG9wX2luYzoKKyAgICBjYXNlIG9w
X2RlYzoKKyAgICBjYXNlIG9wX2FkZDoKKyAgICBjYXNlIG9wX3N1YjoKKyAgICBjYXNlIG9wX25l
Z2F0ZToKKyAgICBjYXNlIG9wX211bDoKKyAgICBjYXNlIG9wX21vZDoKKyAgICBjYXNlIG9wX2Rp
djoKKyNpZiBFTkFCTEUoREVCVUdfV0lUSF9CUkVBS1BPSU5UKQorICAgIGNhc2Ugb3BfZGVidWc6
CiAjZW5kaWYKKyAgICBjYXNlIG9wX21vdjoKKyAgICBjYXNlIG9wX2NoZWNrX2hhc19pbnN0YW5j
ZToKKyAgICBjYXNlIG9wX2luc3RhbmNlb2Y6CisgICAgY2FzZSBvcF9pc191bmRlZmluZWQ6Cisg
ICAgY2FzZSBvcF9pc19ib29sZWFuOgorICAgIGNhc2Ugb3BfaXNfbnVtYmVyOgorICAgIGNhc2Ug
b3BfaXNfc3RyaW5nOgorICAgIGNhc2Ugb3BfaXNfb2JqZWN0OgorICAgIGNhc2Ugb3BfaXNfZnVu
Y3Rpb246CisgICAgY2FzZSBvcF9ub3Q6CisgICAgY2FzZSBvcF9sZXNzOgorICAgIGNhc2Ugb3Bf
bGVzc2VxOgorICAgIGNhc2Ugb3BfZ3JlYXRlcjoKKyAgICBjYXNlIG9wX2dyZWF0ZXJlcToKKyAg
ICBjYXNlIG9wX2VxOgorICAgIGNhc2Ugb3BfZXFfbnVsbDoKKyAgICBjYXNlIG9wX3N0cmljdGVx
OgorICAgIGNhc2Ugb3BfbmVxOgorICAgIGNhc2Ugb3BfbmVxX251bGw6CisgICAgY2FzZSBvcF9u
c3RyaWN0ZXE6CisgICAgY2FzZSBvcF9nZXRfYnlfdmFsOgorICAgIGNhc2Ugb3BfcHV0X2J5X3Zh
bDoKKyAgICBjYXNlIG9wX2dldF9ieV9pZDoKKyAgICBjYXNlIG9wX2dldF9ieV9pZF9vdXRfb2Zf
bGluZToKKyAgICBjYXNlIG9wX2dldF9hcnJheV9sZW5ndGg6CisgICAgY2FzZSBvcF9wdXRfYnlf
aWQ6CisgICAgY2FzZSBvcF9wdXRfYnlfaWRfb3V0X29mX2xpbmU6CisgICAgY2FzZSBvcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlv
bl9kaXJlY3Rfb3V0X29mX2xpbmU6CisgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9u
b3JtYWw6CisgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29mX2xp
bmU6CisgICAgY2FzZSBvcF9pbml0X2dsb2JhbF9jb25zdF9ub3A6CisgICAgY2FzZSBvcF9pbml0
X2dsb2JhbF9jb25zdDoKKyAgICBjYXNlIG9wX2luaXRfZ2xvYmFsX2NvbnN0X2NoZWNrOgorICAg
IGNhc2Ugb3Bfam1wOgorICAgIGNhc2Ugb3BfanRydWU6CisgICAgY2FzZSBvcF9qZmFsc2U6Cisg
ICAgY2FzZSBvcF9qZXFfbnVsbDoKKyAgICBjYXNlIG9wX2puZXFfbnVsbDoKKyAgICBjYXNlIG9w
X2psZXNzOgorICAgIGNhc2Ugb3Bfamxlc3NlcToKKyAgICBjYXNlIG9wX2pncmVhdGVyOgorICAg
IGNhc2Ugb3BfamdyZWF0ZXJlcToKKyAgICBjYXNlIG9wX2pubGVzczoKKyAgICBjYXNlIG9wX2pu
bGVzc2VxOgorICAgIGNhc2Ugb3Bfam5ncmVhdGVyOgorICAgIGNhc2Ugb3Bfam5ncmVhdGVyZXE6
CisgICAgY2FzZSBvcF9sb29wX2hpbnQ6CisgICAgY2FzZSBvcF9yZXQ6CisgICAgY2FzZSBvcF9l
bmQ6CisgICAgY2FzZSBvcF9jYWxsX3B1dF9yZXN1bHQ6CisgICAgY2FzZSBvcF9uZXdfb2JqZWN0
OgorICAgIGNhc2Ugb3BfbmV3X2FycmF5OgorICAgIGNhc2Ugb3BfbmV3X2FycmF5X3dpdGhfc2l6
ZToKKyAgICBjYXNlIG9wX25ld19hcnJheV9idWZmZXI6CisgICAgY2FzZSBvcF9zdHJjYXQ6Cisg
ICAgY2FzZSBvcF90b19wcmltaXRpdmU6CisgICAgY2FzZSBvcF90aHJvdzoKKyAgICBjYXNlIG9w
X3Rocm93X3N0YXRpY19lcnJvcjoKKyAgICBjYXNlIG9wX2NhbGw6CisgICAgY2FzZSBvcF9jb25z
dHJ1Y3Q6CisgICAgY2FzZSBvcF9pbml0X2xhenlfcmVnOgorICAgIGNhc2Ugb3BfY3JlYXRlX2Fy
Z3VtZW50czoKKyAgICBjYXNlIG9wX3RlYXJfb2ZmX2FyZ3VtZW50czoKKyAgICBjYXNlIG9wX2dl
dF9hcmd1bWVudF9ieV92YWw6CisgICAgY2FzZSBvcF9nZXRfYXJndW1lbnRzX2xlbmd0aDoKKyAg
ICBjYXNlIG9wX2puZXFfcHRyOgorICAgIGNhc2Ugb3BfcHV0X3RvX2Jhc2VfdmFyaWFibGU6Cisg
ICAgY2FzZSBvcF9wdXRfdG9fYmFzZToKKyAgICBjYXNlIG9wX3R5cGVvZjoKKyAgICBjYXNlIG9w
X3RvX251bWJlcjoKKyAgICAgICAgcmV0dXJuIENhbkNvbXBpbGVBbmRJbmxpbmU7CisgICAgICAg
IAorICAgIGNhc2Ugb3BfY2FsbF92YXJhcmdzOgorICAgICAgICBpZiAoY29kZUJsb2NrLT51c2Vz
QXJndW1lbnRzKCkgJiYgcGNbM10udS5vcGVyYW5kID09IGNvZGVCbG9jay0+YXJndW1lbnRzUmVn
aXN0ZXIoKSkKKyAgICAgICAgICAgIHJldHVybiBDYW5JbmxpbmU7CisgICAgICAgIHJldHVybiBD
YW5ub3RDb21waWxlOworCisgICAgY2FzZSBvcF9yZXNvbHZlOgorICAgIGNhc2Ugb3BfcmVzb2x2
ZV9nbG9iYWxfcHJvcGVydHk6CisgICAgY2FzZSBvcF9yZXNvbHZlX2dsb2JhbF92YXI6CisgICAg
Y2FzZSBvcF9yZXNvbHZlX3Njb3BlZF92YXI6CisgICAgY2FzZSBvcF9yZXNvbHZlX3Njb3BlZF92
YXJfb25fdG9wX3Njb3BlOgorICAgIGNhc2Ugb3BfcmVzb2x2ZV9zY29wZWRfdmFyX3dpdGhfdG9w
X3Njb3BlX2NoZWNrOgorICAgICAgICBpZiAoY2FuSW5saW5lUmVzb2x2ZU9wZXJhdGlvbnMocGNb
M10udS5yZXNvbHZlT3BlcmF0aW9ucykpCisgICAgICAgICAgICByZXR1cm4gQ2FuQ29tcGlsZUFu
ZElubGluZTsKKyAgICAgICAgcmV0dXJuIENhbkNvbXBpbGU7CisKKyAgICBjYXNlIG9wX2dldF9z
Y29wZWRfdmFyOgorICAgIGNhc2Ugb3BfcHV0X3Njb3BlZF92YXI6CisgICAgICAgIGlmICghY29k
ZUJsb2NrLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkpCisgICAgICAgICAgICByZXR1cm4gQ2FuQ29t
cGlsZUFuZElubGluZTsKKyAgICAgICAgcmV0dXJuIENhbkNvbXBpbGU7CisKKyAgICBjYXNlIG9w
X3Jlc29sdmVfYmFzZV90b19nbG9iYWw6CisgICAgY2FzZSBvcF9yZXNvbHZlX2Jhc2VfdG9fZ2xv
YmFsX2R5bmFtaWM6CisgICAgY2FzZSBvcF9yZXNvbHZlX2Jhc2VfdG9fc2NvcGU6CisgICAgY2Fz
ZSBvcF9yZXNvbHZlX2Jhc2VfdG9fc2NvcGVfd2l0aF90b3Bfc2NvcGVfY2hlY2s6CisgICAgY2Fz
ZSBvcF9yZXNvbHZlX2Jhc2U6CisgICAgY2FzZSBvcF9yZXNvbHZlX3dpdGhfYmFzZToKKyAgICBj
YXNlIG9wX3Jlc29sdmVfd2l0aF90aGlzOgorICAgICAgICBpZiAoY2FuSW5saW5lUmVzb2x2ZU9w
ZXJhdGlvbnMocGNbNF0udS5yZXNvbHZlT3BlcmF0aW9ucykpCisgICAgICAgICAgICByZXR1cm4g
Q2FuQ29tcGlsZUFuZElubGluZTsKKyAgICAgICAgcmV0dXJuIENhbkNvbXBpbGU7CisKKyAgICBj
YXNlIG9wX25ld19yZWdleHA6IAorICAgIGNhc2Ugb3BfY3JlYXRlX2FjdGl2YXRpb246CisgICAg
Y2FzZSBvcF90ZWFyX29mZl9hY3RpdmF0aW9uOgorICAgIGNhc2Ugb3BfbmV3X2Z1bmM6CisgICAg
Y2FzZSBvcF9uZXdfZnVuY19leHA6CisgICAgICAgIHJldHVybiBDYW5Db21waWxlOworCisgICAg
ZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIENhbm5vdENvbXBpbGU7CisgICAgfQogfQogCi10ZW1w
bGF0ZTx0eXBlbmFtZSBSZXR1cm5UeXBlLCBSZXR1cm5UeXBlICgqY2FuSGFuZGxlT3Bjb2RlKShP
cGNvZGVJRCwgQ29kZUJsb2NrKiwgSW5zdHJ1Y3Rpb24qKT4KLVJldHVyblR5cGUgY2FuSGFuZGxl
T3Bjb2RlcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgUmV0dXJuVHlwZSBpbml0aWFsVmFsdWUpCitD
YXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKENvZGVCbG9jayogY29kZUJsb2NrKQogewog
ICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0
ZXI7CiAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0
cnVjdGlvbnMoKS5iZWdpbigpOwogICAgIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQgPSBjb2Rl
QmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKTsKLSAgICBSZXR1cm5UeXBlIHJlc3VsdCA9IGlu
aXRpYWxWYWx1ZTsKKyAgICBDYXBhYmlsaXR5TGV2ZWwgcmVzdWx0ID0gQ2FuQ29tcGlsZUFuZElu
bGluZTsKICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gMDsgYnl0ZWNv
ZGVPZmZzZXQgPCBpbnN0cnVjdGlvbkNvdW50OyApIHsKICAgICAgICAgc3dpdGNoIChpbnRlcnBy
ZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdLnUub3Bj
b2RlKSkgewogI2RlZmluZSBERUZJTkVfT1Aob3Bjb2RlLCBsZW5ndGgpIFwKICAgICAgICAgY2Fz
ZSBvcGNvZGU6IHsgXAotICAgICAgICAgICAgUmV0dXJuVHlwZSBjdXJyZW50ID0gY2FuSGFuZGxl
T3Bjb2RlKCBcCi0gICAgICAgICAgICAgICAgb3Bjb2RlLCBjb2RlQmxvY2ssIGluc3RydWN0aW9u
c0JlZ2luICsgYnl0ZWNvZGVPZmZzZXQpOyBcCi0gICAgICAgICAgICBpZiAoY3VycmVudCA8IHJl
c3VsdCkgeyBcCi0gICAgICAgICAgICAgICAgcmVzdWx0ID0gY3VycmVudDsgXAotICAgICAgICAg
ICAgICAgIGRlYnVnRmFpbChjb2RlQmxvY2ssIG9wY29kZSwgY3VycmVudCk7IFwKLSAgICAgICAg
ICAgIH0gXAorICAgICAgICAgICAgcmVzdWx0ID0gbGVhc3RVcHBlckJvdW5kKHJlc3VsdCwgY2Fw
YWJpbGl0eUxldmVsKG9wY29kZSwgY29kZUJsb2NrLCBpbnN0cnVjdGlvbnNCZWdpbiArIGJ5dGVj
b2RlT2Zmc2V0KSk7IFwKKyAgICAgICAgICAgIGRlYnVnRmFpbChjb2RlQmxvY2ssIG9wY29kZSwg
cmVzdWx0KTsgXAogICAgICAgICAgICAgYnl0ZWNvZGVPZmZzZXQgKz0gbGVuZ3RoOyBcCiAgICAg
ICAgICAgICBicmVhazsgXAogICAgICAgICB9CkBAIC0xMjYsMTggKzI3NSw2IEBAIFJldHVyblR5
cGUgY2FuSGFuZGxlT3Bjb2RlcyhDb2RlQmxvY2sqIGMKICAgICByZXR1cm4gcmVzdWx0OwogfQog
Ci1DYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZU9wY29kZXMoQ29kZUJsb2NrKiBjb2RlQmxvY2sp
Ci17Ci0gICAgaWYgKCFNYWNyb0Fzc2VtYmxlcjo6c3VwcG9ydHNGbG9hdGluZ1BvaW50KCkpCi0g
ICAgICAgIHJldHVybiBDYW5ub3RDb21waWxlOwotICAgIHJldHVybiBjYW5IYW5kbGVPcGNvZGVz
PENhcGFiaWxpdHlMZXZlbCwgY2FuQ29tcGlsZU9wY29kZT4oY29kZUJsb2NrLCBDYW5Db21waWxl
KTsKLX0KLQotYm9vbCBjYW5JbmxpbmVPcGNvZGVzKENvZGVCbG9jayogY29kZUJsb2NrKQotewot
ICAgIHJldHVybiBjYW5IYW5kbGVPcGNvZGVzPGJvb2wsIGNhbklubGluZU9wY29kZT4oY29kZUJs
b2NrLCB0cnVlKTsKLX0KLQogI2VuZGlmCiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaAkocmV2aXNp
b24gMTUwNjE0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMu
aAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDcsMjE4ICs0Nyw5IEBAIGJvb2wgbWlnaHRJ
bmxpbmVGdW5jdGlvbkZvckNhbGwoQ29kZUJsb2MKIGJvb2wgbWlnaHRJbmxpbmVGdW5jdGlvbkZv
ckNsb3N1cmVDYWxsKENvZGVCbG9jayopOwogYm9vbCBtaWdodElubGluZUZ1bmN0aW9uRm9yQ29u
c3RydWN0KENvZGVCbG9jayopOwogCi0vLyBPcGNvZGUgY2hlY2tpbmcuCi1pbmxpbmUgYm9vbCBj
YW5JbmxpbmVSZXNvbHZlT3BlcmF0aW9ucyhSZXNvbHZlT3BlcmF0aW9ucyogb3BlcmF0aW9ucykK
LXsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgb3BlcmF0aW9ucy0+c2l6ZSgpOyBpKysp
IHsKLSAgICAgICAgc3dpdGNoIChvcGVyYXRpb25zLT5kYXRhKClbaV0ubV9vcGVyYXRpb24pIHsK
LSAgICAgICAgY2FzZSBSZXNvbHZlT3BlcmF0aW9uOjpSZXR1cm5HbG9iYWxPYmplY3RBc0Jhc2U6
Ci0gICAgICAgIGNhc2UgUmVzb2x2ZU9wZXJhdGlvbjo6U2V0QmFzZVRvR2xvYmFsOgotICAgICAg
ICBjYXNlIFJlc29sdmVPcGVyYXRpb246OlNldEJhc2VUb1VuZGVmaW5lZDoKLSAgICAgICAgY2Fz
ZSBSZXNvbHZlT3BlcmF0aW9uOjpHZXRBbmRSZXR1cm5HbG9iYWxQcm9wZXJ0eToKLSAgICAgICAg
Y2FzZSBSZXNvbHZlT3BlcmF0aW9uOjpHZXRBbmRSZXR1cm5HbG9iYWxWYXI6Ci0gICAgICAgIGNh
c2UgUmVzb2x2ZU9wZXJhdGlvbjo6R2V0QW5kUmV0dXJuR2xvYmFsVmFyV2F0Y2hhYmxlOgotICAg
ICAgICBjYXNlIFJlc29sdmVPcGVyYXRpb246OlNraXBTY29wZXM6Ci0gICAgICAgIGNhc2UgUmVz
b2x2ZU9wZXJhdGlvbjo6U2V0QmFzZVRvU2NvcGU6Ci0gICAgICAgIGNhc2UgUmVzb2x2ZU9wZXJh
dGlvbjo6UmV0dXJuU2NvcGVBc0Jhc2U6Ci0gICAgICAgIGNhc2UgUmVzb2x2ZU9wZXJhdGlvbjo6
R2V0QW5kUmV0dXJuU2NvcGVkVmFyOgotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAg
Y2FzZSBSZXNvbHZlT3BlcmF0aW9uOjpGYWlsOgotICAgICAgICAgICAgLy8gRmFsbC1iYWNrIHJl
c29sdmVzIGRvbid0IGtub3cgaG93IHRvIGRlYWwgd2l0aCB0aGUgRXhlY1N0YXRlKiBoYXZpbmcg
YSBkaWZmZXJlbnQKLSAgICAgICAgICAgIC8vIGdsb2JhbCBvYmplY3QgKGFuZCBzY29wZSkgdGhh
biB0aGUgaW5saW5lZCBjb2RlIHRoYXQgaXMgaW52b2tpbmcgdGhhdCByZXNvbHZlLgotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIGNhc2UgUmVzb2x2ZU9wZXJhdGlvbjo6U2tp
cFRvcFNjb3BlTm9kZToKLSAgICAgICAgICAgIC8vIFdlIGRvbid0IGlubGluZSBjb2RlIGJsb2Nr
cyB0aGF0IGNyZWF0ZSBhY3RpdmF0aW9ucy4gQ3JlYXRpb24gb2YKLSAgICAgICAgICAgIC8vIGFj
dGl2YXRpb25zIGlzIHRoZSBvbmx5IHRoaW5nIHRoYXQgbGVhZHMgdG8gU2tpcFRvcFNjb3BlTm9k
ZS4KLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBjYXNlIFJlc29sdmVPcGVy
YXRpb246OkNoZWNrRm9yRHluYW1pY0VudHJpZXNCZWZvcmVHbG9iYWxTY29wZToKLSAgICAgICAg
ICAgIC8vIFRoaXMgd291bGQgYmUgZWFzeSB0byBzdXBwb3J0IGluIGFsbCBjYXNlcy4KLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsK
LX0KLQotaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlT3Bjb2RlKE9wY29kZUlEIG9w
Y29kZUlELCBDb2RlQmxvY2sqLCBJbnN0cnVjdGlvbiopCi17Ci0gICAgc3dpdGNoIChvcGNvZGVJ
RCkgewotICAgIGNhc2Ugb3BfZW50ZXI6Ci0gICAgY2FzZSBvcF90b190aGlzOgotICAgIGNhc2Ug
b3BfY3JlYXRlX3RoaXM6Ci0gICAgY2FzZSBvcF9nZXRfY2FsbGVlOgotICAgIGNhc2Ugb3BfYml0
YW5kOgotICAgIGNhc2Ugb3BfYml0b3I6Ci0gICAgY2FzZSBvcF9iaXR4b3I6Ci0gICAgY2FzZSBv
cF9yc2hpZnQ6Ci0gICAgY2FzZSBvcF9sc2hpZnQ6Ci0gICAgY2FzZSBvcF91cnNoaWZ0OgotICAg
IGNhc2Ugb3BfaW5jOgotICAgIGNhc2Ugb3BfZGVjOgotICAgIGNhc2Ugb3BfYWRkOgotICAgIGNh
c2Ugb3Bfc3ViOgotICAgIGNhc2Ugb3BfbmVnYXRlOgotICAgIGNhc2Ugb3BfbXVsOgotICAgIGNh
c2Ugb3BfbW9kOgotICAgIGNhc2Ugb3BfZGl2OgotI2lmIEVOQUJMRShERUJVR19XSVRIX0JSRUFL
UE9JTlQpCi0gICAgY2FzZSBvcF9kZWJ1ZzoKLSNlbmRpZgotICAgIGNhc2Ugb3BfbW92OgotICAg
IGNhc2Ugb3BfY2hlY2tfaGFzX2luc3RhbmNlOgotICAgIGNhc2Ugb3BfaW5zdGFuY2VvZjoKLSAg
ICBjYXNlIG9wX2lzX3VuZGVmaW5lZDoKLSAgICBjYXNlIG9wX2lzX2Jvb2xlYW46Ci0gICAgY2Fz
ZSBvcF9pc19udW1iZXI6Ci0gICAgY2FzZSBvcF9pc19zdHJpbmc6Ci0gICAgY2FzZSBvcF9pc19v
YmplY3Q6Ci0gICAgY2FzZSBvcF9pc19mdW5jdGlvbjoKLSAgICBjYXNlIG9wX25vdDoKLSAgICBj
YXNlIG9wX2xlc3M6Ci0gICAgY2FzZSBvcF9sZXNzZXE6Ci0gICAgY2FzZSBvcF9ncmVhdGVyOgot
ICAgIGNhc2Ugb3BfZ3JlYXRlcmVxOgotICAgIGNhc2Ugb3BfZXE6Ci0gICAgY2FzZSBvcF9lcV9u
dWxsOgotICAgIGNhc2Ugb3Bfc3RyaWN0ZXE6Ci0gICAgY2FzZSBvcF9uZXE6Ci0gICAgY2FzZSBv
cF9uZXFfbnVsbDoKLSAgICBjYXNlIG9wX25zdHJpY3RlcToKLSAgICBjYXNlIG9wX2dldF9ieV92
YWw6Ci0gICAgY2FzZSBvcF9wdXRfYnlfdmFsOgotICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOgotICAg
IGNhc2Ugb3BfZ2V0X2J5X2lkX291dF9vZl9saW5lOgotICAgIGNhc2Ugb3BfZ2V0X2FycmF5X2xl
bmd0aDoKLSAgICBjYXNlIG9wX3B1dF9ieV9pZDoKLSAgICBjYXNlIG9wX3B1dF9ieV9pZF9vdXRf
b2ZfbGluZToKLSAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKLSAgICBj
YXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdF9vdXRfb2ZfbGluZToKLSAgICBjYXNl
IG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKLSAgICBjYXNlIG9wX3B1dF9ieV9pZF90
cmFuc2l0aW9uX25vcm1hbF9vdXRfb2ZfbGluZToKLSAgICBjYXNlIG9wX2luaXRfZ2xvYmFsX2Nv
bnN0X25vcDoKLSAgICBjYXNlIG9wX2luaXRfZ2xvYmFsX2NvbnN0OgotICAgIGNhc2Ugb3BfaW5p
dF9nbG9iYWxfY29uc3RfY2hlY2s6Ci0gICAgY2FzZSBvcF9qbXA6Ci0gICAgY2FzZSBvcF9qdHJ1
ZToKLSAgICBjYXNlIG9wX2pmYWxzZToKLSAgICBjYXNlIG9wX2plcV9udWxsOgotICAgIGNhc2Ug
b3Bfam5lcV9udWxsOgotICAgIGNhc2Ugb3Bfamxlc3M6Ci0gICAgY2FzZSBvcF9qbGVzc2VxOgot
ICAgIGNhc2Ugb3BfamdyZWF0ZXI6Ci0gICAgY2FzZSBvcF9qZ3JlYXRlcmVxOgotICAgIGNhc2Ug
b3Bfam5sZXNzOgotICAgIGNhc2Ugb3Bfam5sZXNzZXE6Ci0gICAgY2FzZSBvcF9qbmdyZWF0ZXI6
Ci0gICAgY2FzZSBvcF9qbmdyZWF0ZXJlcToKLSAgICBjYXNlIG9wX2xvb3BfaGludDoKLSAgICBj
YXNlIG9wX3JldDoKLSAgICBjYXNlIG9wX2VuZDoKLSAgICBjYXNlIG9wX2NhbGxfcHV0X3Jlc3Vs
dDoKLSAgICBjYXNlIG9wX25ld19vYmplY3Q6Ci0gICAgY2FzZSBvcF9uZXdfYXJyYXk6Ci0gICAg
Y2FzZSBvcF9uZXdfYXJyYXlfd2l0aF9zaXplOgotICAgIGNhc2Ugb3BfbmV3X2FycmF5X2J1ZmZl
cjoKLSAgICBjYXNlIG9wX3N0cmNhdDoKLSAgICBjYXNlIG9wX3RvX3ByaW1pdGl2ZToKLSAgICBj
YXNlIG9wX3Rocm93OgotICAgIGNhc2Ugb3BfdGhyb3dfc3RhdGljX2Vycm9yOgotICAgIGNhc2Ug
b3BfY2FsbDoKLSAgICBjYXNlIG9wX2NvbnN0cnVjdDoKLSAgICBjYXNlIG9wX25ld19yZWdleHA6
IAotICAgIGNhc2Ugb3BfaW5pdF9sYXp5X3JlZzoKLSAgICBjYXNlIG9wX2NyZWF0ZV9hY3RpdmF0
aW9uOgotICAgIGNhc2Ugb3BfdGVhcl9vZmZfYWN0aXZhdGlvbjoKLSAgICBjYXNlIG9wX2NyZWF0
ZV9hcmd1bWVudHM6Ci0gICAgY2FzZSBvcF90ZWFyX29mZl9hcmd1bWVudHM6Ci0gICAgY2FzZSBv
cF9uZXdfZnVuYzoKLSAgICBjYXNlIG9wX25ld19mdW5jX2V4cDoKLSAgICBjYXNlIG9wX2dldF9h
cmd1bWVudF9ieV92YWw6Ci0gICAgY2FzZSBvcF9nZXRfYXJndW1lbnRzX2xlbmd0aDoKLSAgICBj
YXNlIG9wX2puZXFfcHRyOgotICAgIGNhc2Ugb3BfcHV0X3RvX2Jhc2VfdmFyaWFibGU6Ci0gICAg
Y2FzZSBvcF9wdXRfdG9fYmFzZToKLSAgICBjYXNlIG9wX3R5cGVvZjoKLSAgICBjYXNlIG9wX3Rv
X251bWJlcjoKLSAgICAgICAgcmV0dXJuIENhbkNvbXBpbGU7Ci0gICAgICAgIAotICAgIGNhc2Ug
b3BfY2FsbF92YXJhcmdzOgotICAgICAgICByZXR1cm4gTWF5SW5saW5lOwotCi0gICAgY2FzZSBv
cF9yZXNvbHZlOgotICAgIGNhc2Ugb3BfcmVzb2x2ZV9nbG9iYWxfcHJvcGVydHk6Ci0gICAgY2Fz
ZSBvcF9yZXNvbHZlX2dsb2JhbF92YXI6Ci0gICAgY2FzZSBvcF9yZXNvbHZlX3Njb3BlZF92YXI6
Ci0gICAgY2FzZSBvcF9yZXNvbHZlX3Njb3BlZF92YXJfb25fdG9wX3Njb3BlOgotICAgIGNhc2Ug
b3BfcmVzb2x2ZV9zY29wZWRfdmFyX3dpdGhfdG9wX3Njb3BlX2NoZWNrOgotICAgICAgICByZXR1
cm4gQ2FuQ29tcGlsZTsKLQotICAgIGNhc2Ugb3BfZ2V0X3Njb3BlZF92YXI6Ci0gICAgY2FzZSBv
cF9wdXRfc2NvcGVkX3ZhcjoKLSAgICAgICAgcmV0dXJuIENhbkNvbXBpbGU7Ci0KLSAgICBjYXNl
IG9wX3Jlc29sdmVfYmFzZV90b19nbG9iYWw6Ci0gICAgY2FzZSBvcF9yZXNvbHZlX2Jhc2VfdG9f
Z2xvYmFsX2R5bmFtaWM6Ci0gICAgY2FzZSBvcF9yZXNvbHZlX2Jhc2VfdG9fc2NvcGU6Ci0gICAg
Y2FzZSBvcF9yZXNvbHZlX2Jhc2VfdG9fc2NvcGVfd2l0aF90b3Bfc2NvcGVfY2hlY2s6Ci0gICAg
Y2FzZSBvcF9yZXNvbHZlX2Jhc2U6Ci0gICAgY2FzZSBvcF9yZXNvbHZlX3dpdGhfYmFzZToKLSAg
ICBjYXNlIG9wX3Jlc29sdmVfd2l0aF90aGlzOgotICAgICAgICByZXR1cm4gQ2FuQ29tcGlsZTsK
LQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBDYW5ub3RDb21waWxlOwotICAgIH0KLX0K
LQotaW5saW5lIGJvb2wgY2FuSW5saW5lT3Bjb2RlKE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24qIHBjKQotewotICAgIHN3aXRjaCAob3Bjb2RlSUQp
IHsKLSAgICBjYXNlIG9wX3Jlc29sdmU6Ci0gICAgY2FzZSBvcF9yZXNvbHZlX2dsb2JhbF9wcm9w
ZXJ0eToKLSAgICBjYXNlIG9wX3Jlc29sdmVfZ2xvYmFsX3ZhcjoKLSAgICBjYXNlIG9wX3Jlc29s
dmVfc2NvcGVkX3ZhcjoKLSAgICBjYXNlIG9wX3Jlc29sdmVfc2NvcGVkX3Zhcl9vbl90b3Bfc2Nv
cGU6Ci0gICAgY2FzZSBvcF9yZXNvbHZlX3Njb3BlZF92YXJfd2l0aF90b3Bfc2NvcGVfY2hlY2s6
Ci0gICAgICAgIHJldHVybiBjYW5JbmxpbmVSZXNvbHZlT3BlcmF0aW9ucyhwY1szXS51LnJlc29s
dmVPcGVyYXRpb25zKTsKLQotICAgIGNhc2Ugb3BfcmVzb2x2ZV9iYXNlX3RvX2dsb2JhbDoKLSAg
ICBjYXNlIG9wX3Jlc29sdmVfYmFzZV90b19nbG9iYWxfZHluYW1pYzoKLSAgICBjYXNlIG9wX3Jl
c29sdmVfYmFzZV90b19zY29wZToKLSAgICBjYXNlIG9wX3Jlc29sdmVfYmFzZV90b19zY29wZV93
aXRoX3RvcF9zY29wZV9jaGVjazoKLSAgICBjYXNlIG9wX3Jlc29sdmVfYmFzZToKLSAgICBjYXNl
IG9wX3Jlc29sdmVfd2l0aF9iYXNlOgotICAgIGNhc2Ugb3BfcmVzb2x2ZV93aXRoX3RoaXM6Ci0g
ICAgICAgIHJldHVybiBjYW5JbmxpbmVSZXNvbHZlT3BlcmF0aW9ucyhwY1s0XS51LnJlc29sdmVP
cGVyYXRpb25zKTsKLQotICAgIGNhc2Ugb3BfZ2V0X3Njb3BlZF92YXI6Ci0gICAgY2FzZSBvcF9w
dXRfc2NvcGVkX3ZhcjoKLSAgICAgICAgcmV0dXJuICFjb2RlQmxvY2stPm5lZWRzRnVsbFNjb3Bl
Q2hhaW4oKTsKLQotICAgIC8vIElubGluaW5nIGRvZXNuJ3QgY29ycmVjdGx5IHJlbWFwIHJlZ3Vs
YXIgZXhwcmVzc2lvbiBvcGVyYW5kcy4KLSAgICBjYXNlIG9wX25ld19yZWdleHA6Ci0gICAgICAg
IAotICAgIC8vIFdlIGRvbid0IHN1cHBvcnQgaW5saW5pbmcgY29kZSB0aGF0IGNyZWF0ZXMgYWN0
aXZhdGlvbnMgb3IgaGFzIG5lc3RlZCBmdW5jdGlvbnMuCi0gICAgY2FzZSBvcF9jcmVhdGVfYWN0
aXZhdGlvbjoKLSAgICBjYXNlIG9wX3RlYXJfb2ZmX2FjdGl2YXRpb246Ci0gICAgY2FzZSBvcF9u
ZXdfZnVuYzoKLSAgICBjYXNlIG9wX25ld19mdW5jX2V4cDoKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICAKLSAgICAvLyBJbmxpbmluZyBzdXBwb3J0cyBvcF9jYWxsX3ZhcmFyZ3MgaWYg
aXQncyBhIGNhbGwgdGhhdCBqdXN0IGZvcndhcmRzIHRoZSBjYWxsZXIncwotICAgIC8vIGFyZ3Vt
ZW50cy4KLSAgICBjYXNlIG9wX2NhbGxfdmFyYXJnczoKLSAgICAgICAgcmV0dXJuIGNvZGVCbG9j
ay0+dXNlc0FyZ3VtZW50cygpICYmIHBjWzNdLnUub3BlcmFuZCA9PSBjb2RlQmxvY2stPmFyZ3Vt
ZW50c1JlZ2lzdGVyKCk7Ci0gICAgICAgIAotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBj
YW5Db21waWxlT3Bjb2RlKG9wY29kZUlELCBjb2RlQmxvY2ssIHBjKSA9PSBDYW5Db21waWxlOwot
ICAgIH0KLX0KK2lubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlE
IG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24qIHBjKTsKIAotQ2Fw
YWJpbGl0eUxldmVsIGNhbkNvbXBpbGVPcGNvZGVzKENvZGVCbG9jayopOwotYm9vbCBjYW5Jbmxp
bmVPcGNvZGVzKENvZGVCbG9jayopOworQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChD
b2RlQmxvY2sqKTsKICNlbHNlIC8vIEVOQUJMRShERkdfSklUKQogaW5saW5lIGJvb2wgbWlnaHRD
b21waWxlRXZhbChDb2RlQmxvY2sqKSB7IHJldHVybiBmYWxzZTsgfQogaW5saW5lIGJvb2wgbWln
aHRDb21waWxlUHJvZ3JhbShDb2RlQmxvY2sqKSB7IHJldHVybiBmYWxzZTsgfQpAQCAtMjY4LDU3
ICs1OSw1NSBAQCBpbmxpbmUgYm9vbCBtaWdodElubGluZUZ1bmN0aW9uRm9yQ2FsbChDCiBpbmxp
bmUgYm9vbCBtaWdodElubGluZUZ1bmN0aW9uRm9yQ2xvc3VyZUNhbGwoQ29kZUJsb2NrKikgeyBy
ZXR1cm4gZmFsc2U7IH0KIGlubGluZSBib29sIG1pZ2h0SW5saW5lRnVuY3Rpb25Gb3JDb25zdHJ1
Y3QoQ29kZUJsb2NrKikgeyByZXR1cm4gZmFsc2U7IH0KIAotaW5saW5lIENhcGFiaWxpdHlMZXZl
bCBjYW5Db21waWxlT3Bjb2RlKE9wY29kZUlELCBDb2RlQmxvY2sqLCBJbnN0cnVjdGlvbiopIHsg
cmV0dXJuIENhbm5vdENvbXBpbGU7IH0KLWlubGluZSBib29sIGNhbklubGluZU9wY29kZShPcGNv
ZGVJRCwgQ29kZUJsb2NrKiwgSW5zdHJ1Y3Rpb24qKSB7IHJldHVybiBmYWxzZTsgfQotaW5saW5l
IENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlT3Bjb2RlcyhDb2RlQmxvY2sqKSB7IHJldHVybiBD
YW5ub3RDb21waWxlOyB9Ci1pbmxpbmUgYm9vbCBjYW5JbmxpbmVPcGNvZGVzKENvZGVCbG9jayop
IHsgcmV0dXJuIGZhbHNlOyB9CitpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZl
bChPcGNvZGVJRCwgQ29kZUJsb2NrKiwgSW5zdHJ1Y3Rpb24qKSB7IHJldHVybiBDYW5ub3RDb21w
aWxlOyB9CitpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChDb2RlQmxvY2sq
KSB7IHJldHVybiBDYW5ub3RDb21waWxlOyB9CiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCiAK
LWlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZUV2YWwoQ29kZUJsb2NrKiBjb2RlQmxv
Y2spCitpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGV2YWxDYXBhYmlsaXR5TGV2ZWwoQ29kZUJsb2Nr
KiBjb2RlQmxvY2spCiB7CiAgICAgaWYgKCFtaWdodENvbXBpbGVFdmFsKGNvZGVCbG9jaykpCiAg
ICAgICAgIHJldHVybiBDYW5ub3RDb21waWxlOwogICAgIAotICAgIHJldHVybiBjYW5Db21waWxl
T3Bjb2Rlcyhjb2RlQmxvY2spOworICAgIHJldHVybiBjYXBhYmlsaXR5TGV2ZWwoY29kZUJsb2Nr
KTsKIH0KIAotaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlUHJvZ3JhbShDb2RlQmxv
Y2sqIGNvZGVCbG9jaykKK2lubGluZSBDYXBhYmlsaXR5TGV2ZWwgcHJvZ3JhbUNhcGFiaWxpdHlM
ZXZlbChDb2RlQmxvY2sqIGNvZGVCbG9jaykKIHsKICAgICBpZiAoIW1pZ2h0Q29tcGlsZVByb2dy
YW0oY29kZUJsb2NrKSkKICAgICAgICAgcmV0dXJuIENhbm5vdENvbXBpbGU7CiAgICAgCi0gICAg
cmV0dXJuIGNhbkNvbXBpbGVPcGNvZGVzKGNvZGVCbG9jayk7CisgICAgcmV0dXJuIGNhcGFiaWxp
dHlMZXZlbChjb2RlQmxvY2spOwogfQogCi1pbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBp
bGVGdW5jdGlvbkZvckNhbGwoQ29kZUJsb2NrKiBjb2RlQmxvY2spCitpbmxpbmUgQ2FwYWJpbGl0
eUxldmVsIGZ1bmN0aW9uRm9yQ2FsbENhcGFiaWxpdHlMZXZlbChDb2RlQmxvY2sqIGNvZGVCbG9j
aykKIHsKICAgICBpZiAoIW1pZ2h0Q29tcGlsZUZ1bmN0aW9uRm9yQ2FsbChjb2RlQmxvY2spKQog
ICAgICAgICByZXR1cm4gQ2Fubm90Q29tcGlsZTsKICAgICAKLSAgICByZXR1cm4gY2FuQ29tcGls
ZU9wY29kZXMoY29kZUJsb2NrKTsKKyAgICByZXR1cm4gY2FwYWJpbGl0eUxldmVsKGNvZGVCbG9j
ayk7CiB9CiAKLWlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZUZ1bmN0aW9uRm9yQ29u
c3RydWN0KENvZGVCbG9jayogY29kZUJsb2NrKQoraW5saW5lIENhcGFiaWxpdHlMZXZlbCBmdW5j
dGlvbkZvckNvbnN0cnVjdENhcGFiaWxpdHlMZXZlbChDb2RlQmxvY2sqIGNvZGVCbG9jaykKIHsK
ICAgICBpZiAoIW1pZ2h0Q29tcGlsZUZ1bmN0aW9uRm9yQ29uc3RydWN0KGNvZGVCbG9jaykpCiAg
ICAgICAgIHJldHVybiBDYW5ub3RDb21waWxlOwogICAgIAotICAgIHJldHVybiBjYW5Db21waWxl
T3Bjb2Rlcyhjb2RlQmxvY2spOworICAgIHJldHVybiBjYXBhYmlsaXR5TGV2ZWwoY29kZUJsb2Nr
KTsKIH0KIAogaW5saW5lIGJvb2wgY2FuSW5saW5lRnVuY3Rpb25Gb3JDYWxsKENvZGVCbG9jayog
Y29kZUJsb2NrKQogewotICAgIHJldHVybiBtaWdodElubGluZUZ1bmN0aW9uRm9yQ2FsbChjb2Rl
QmxvY2spICYmIGNhbklubGluZU9wY29kZXMoY29kZUJsb2NrKTsKKyAgICByZXR1cm4gbWlnaHRJ
bmxpbmVGdW5jdGlvbkZvckNhbGwoY29kZUJsb2NrKSAmJiBjYW5JbmxpbmUoY2FwYWJpbGl0eUxl
dmVsKGNvZGVCbG9jaykpOwogfQogCiBpbmxpbmUgYm9vbCBjYW5JbmxpbmVGdW5jdGlvbkZvckNs
b3N1cmVDYWxsKENvZGVCbG9jayogY29kZUJsb2NrKQogewotICAgIHJldHVybiBtaWdodElubGlu
ZUZ1bmN0aW9uRm9yQ2xvc3VyZUNhbGwoY29kZUJsb2NrKSAmJiBjYW5JbmxpbmVPcGNvZGVzKGNv
ZGVCbG9jayk7CisgICAgcmV0dXJuIG1pZ2h0SW5saW5lRnVuY3Rpb25Gb3JDbG9zdXJlQ2FsbChj
b2RlQmxvY2spICYmIGNhbklubGluZShjYXBhYmlsaXR5TGV2ZWwoY29kZUJsb2NrKSk7CiB9CiAK
IGlubGluZSBib29sIGNhbklubGluZUZ1bmN0aW9uRm9yQ29uc3RydWN0KENvZGVCbG9jayogY29k
ZUJsb2NrKQogewotICAgIHJldHVybiBtaWdodElubGluZUZ1bmN0aW9uRm9yQ29uc3RydWN0KGNv
ZGVCbG9jaykgJiYgY2FuSW5saW5lT3Bjb2Rlcyhjb2RlQmxvY2spOworICAgIHJldHVybiBtaWdo
dElubGluZUZ1bmN0aW9uRm9yQ29uc3RydWN0KGNvZGVCbG9jaykgJiYgY2FuSW5saW5lKGNhcGFi
aWxpdHlMZXZlbChjb2RlQmxvY2spKTsKIH0KIAogaW5saW5lIGJvb2wgbWlnaHRJbmxpbmVGdW5j
dGlvbkZvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5k
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCShyZXZpc2lvbiAxNTA2
MTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNzksNyArMjc5LDYwIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsK
IAogLy8gUHV0IHRoaW5ncyBoZXJlIHRoYXQgbXVzdCBiZSBkZWZpbmVkIGV2ZW4gaWYgRU5BQkxF
KERGR19KSVQpIGlzIGZhbHNlLgogCi1lbnVtIENhcGFiaWxpdHlMZXZlbCB7IENhbm5vdENvbXBp
bGUsIE1heUlubGluZSwgQ2FuQ29tcGlsZSwgQ2FwYWJpbGl0eUxldmVsTm90U2V0IH07CitlbnVt
IENhcGFiaWxpdHlMZXZlbCB7IENhbm5vdENvbXBpbGUsIENhbklubGluZSwgQ2FuQ29tcGlsZSwg
Q2FuQ29tcGlsZUFuZElubGluZSwgQ2FwYWJpbGl0eUxldmVsTm90U2V0IH07CisKK2lubGluZSBi
b29sIGNhbkNvbXBpbGUoQ2FwYWJpbGl0eUxldmVsIGxldmVsKQoreworICAgIHN3aXRjaCAobGV2
ZWwpIHsKKyAgICBjYXNlIENhbkNvbXBpbGU6CisgICAgY2FzZSBDYW5Db21waWxlQW5kSW5saW5l
OgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorfQorCitpbmxpbmUgYm9vbCBjYW5JbmxpbmUoQ2FwYWJpbGl0eUxldmVsIGxl
dmVsKQoreworICAgIHN3aXRjaCAobGV2ZWwpIHsKKyAgICBjYXNlIENhbklubGluZToKKyAgICBj
YXNlIENhbkNvbXBpbGVBbmRJbmxpbmU6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1
bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2lubGluZSBDYXBhYmlsaXR5
TGV2ZWwgbGVhc3RVcHBlckJvdW5kKENhcGFiaWxpdHlMZXZlbCBhLCBDYXBhYmlsaXR5TGV2ZWwg
YikKK3sKKyAgICBzd2l0Y2ggKGEpIHsKKyAgICBjYXNlIENhbm5vdENvbXBpbGU6CisgICAgICAg
IHJldHVybiBDYW5ub3RDb21waWxlOworICAgIGNhc2UgQ2FuSW5saW5lOgorICAgICAgICBzd2l0
Y2ggKGIpIHsKKyAgICAgICAgY2FzZSBDYW5JbmxpbmU6CisgICAgICAgIGNhc2UgQ2FuQ29tcGls
ZUFuZElubGluZToKKyAgICAgICAgICAgIHJldHVybiBDYW5JbmxpbmU7CisgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICByZXR1cm4gQ2Fubm90Q29tcGlsZTsKKyAgICAgICAgfQorICAgIGNh
c2UgQ2FuQ29tcGlsZToKKyAgICAgICAgc3dpdGNoIChiKSB7CisgICAgICAgIGNhc2UgQ2FuQ29t
cGlsZToKKyAgICAgICAgY2FzZSBDYW5Db21waWxlQW5kSW5saW5lOgorICAgICAgICAgICAgcmV0
dXJuIENhbkNvbXBpbGU7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gQ2Fu
bm90Q29tcGlsZTsKKyAgICAgICAgfQorICAgIGNhc2UgQ2FuQ29tcGlsZUFuZElubGluZToKKyAg
ICAgICAgcmV0dXJuIGI7CisgICAgY2FzZSBDYXBhYmlsaXR5TGV2ZWxOb3RTZXQ6CisgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gQ2Fubm90Q29tcGlsZTsKKyAg
ICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIENhbm5vdENvbXBpbGU7
Cit9CiAKIC8vIFVuY29uZGl0aW9uYWxseSBkaXNhYmxlIERGRyBkaXNhc3NlbWJseSBzdXBwb3J0
IGlmIHRoZSBERkcgaXMgbm90IGNvbXBpbGVkIGluLgogaW5saW5lIGJvb2wgc2hvdWxkU2hvd0Rp
c2Fzc2VtYmx5KCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAJ
KHJldmlzaW9uIDE1MDYxNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBAQCBzdGF0aWMgQ29tcGlsYXRpb25S
ZXN1bHQgY29tcGlsZShDb21waWxlCiAgICAgCiAgICAgQVNTRVJUKG9zckVudHJ5Qnl0ZWNvZGVJ
bmRleCAhPSBVSU5UX01BWCk7CiAKLSAgICBpZiAoIU9wdGlvbnM6OnVzZURGR0pJVCgpKQorICAg
IGlmICghT3B0aW9uczo6dXNlREZHSklUKCkgfHwgIU1hY3JvQXNzZW1ibGVyOjpzdXBwb3J0c0Zs
b2F0aW5nUG9pbnQoKSkKICAgICAgICAgcmV0dXJuIENvbXBpbGF0aW9uRmFpbGVkOwogICAgIAog
ICAgIGlmIChsb2dDb21waWxhdGlvbkNoYW5nZXMoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5jcHAJKHJldmlzaW9uIDE1MDYxNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAyLDE4ICs2MDIsMjAgQEAgQUxXQVlTX0lOTElO
RSB2b2lkIFByb3BlcnR5U3R1YkNvbXBpbGF0aQogUGFzc1JlZlB0cjxKSVRDb2RlPiBKSVQ6OnBy
aXZhdGVDb21waWxlKENvZGVQdHIqIGZ1bmN0aW9uRW50cnlBcml0eUNoZWNrLCBKSVRDb21waWxh
dGlvbkVmZm9ydCBlZmZvcnQpCiB7CiAjaWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQotICAgIERG
Rzo6Q2FwYWJpbGl0eUxldmVsIGxldmVsID0gbV9jb2RlQmxvY2stPmNhbkNvbXBpbGVXaXRoREZH
KCk7CisgICAgREZHOjpDYXBhYmlsaXR5TGV2ZWwgbGV2ZWwgPSBtX2NvZGVCbG9jay0+Y2FwYWJp
bGl0eUxldmVsKCk7CiAgICAgc3dpdGNoIChsZXZlbCkgewogICAgIGNhc2UgREZHOjpDYW5ub3RD
b21waWxlOgogICAgICAgICBtX2NhbkJlT3B0aW1pemVkID0gZmFsc2U7CisgICAgICAgIG1fY2Fu
QmVPcHRpbWl6ZWRPcklubGluZWQgPSBmYWxzZTsKICAgICAgICAgbV9zaG91bGRFbWl0UHJvZmls
aW5nID0gZmFsc2U7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgREZHOjpNYXlJbmxpbmU6Cisg
ICAgY2FzZSBERkc6OkNhbklubGluZToKICAgICAgICAgbV9jYW5CZU9wdGltaXplZCA9IGZhbHNl
OwogICAgICAgICBtX2NhbkJlT3B0aW1pemVkT3JJbmxpbmVkID0gdHJ1ZTsKICAgICAgICAgbV9z
aG91bGRFbWl0UHJvZmlsaW5nID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBERkc6
OkNhbkNvbXBpbGU6CisgICAgY2FzZSBERkc6OkNhbkNvbXBpbGVBbmRJbmxpbmU6CiAgICAgICAg
IG1fY2FuQmVPcHRpbWl6ZWQgPSB0cnVlOwogICAgICAgICBtX2NhbkJlT3B0aW1pemVkT3JJbmxp
bmVkID0gdHJ1ZTsKICAgICAgICAgbV9zaG91bGRFbWl0UHJvZmlsaW5nID0gdHJ1ZTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMy
XzY0LmNwcAkocmV2aXNpb24gMTUwNjE0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQ4LDcgKzY0OCw3
IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW8KICAgICAvLyBJZiB3
ZSBzdWNjZWVkIGluIGFsbCBvZiBvdXIgY2hlY2tzLCBhbmQgdGhlIGNvZGUgd2FzIG9wdGltaXph
YmxlLCB0aGVuIG1ha2Ugc3VyZSB3ZQogICAgIC8vIGRlY3JlbWVudCB0aGUgcmFyZSBjYXNlIGNv
dW50ZXIuCiAjaWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQotICAgIGlmIChtX2NvZGVCbG9jay0+
Y2FuQ29tcGlsZVdpdGhERkcoKSA+PSBERkc6Ok1heUlubGluZSkgeworICAgIGlmIChtX2NvZGVC
bG9jay0+Y2FwYWJpbGl0eUxldmVsU3RhdGUoKSAhPSBERkc6OkNhbm5vdENvbXBpbGUpIHsKICAg
ICAgICAgc3ViMzIoCiAgICAgICAgICAgICBUcnVzdGVkSW1tMzIoMSksCiAgICAgICAgICAgICBB
YnNvbHV0ZUFkZHJlc3MoJm1fY29kZUJsb2NrLT5yYXJlQ2FzZVByb2ZpbGVGb3JCeXRlY29kZU9m
ZnNldChzdHViSW5mby0+Ynl0ZWNvZGVJbmRleCktPm1fY291bnRlcikpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHJldmlzaW9u
IDE1MDYxNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3Mu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MDUsNyArNzA1LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVD
b21waWxlUHV0QnlJZFRyYW5zaXRpbwogICAgIC8vIElmIHdlIHN1Y2NlZWQgaW4gYWxsIG9mIG91
ciBjaGVja3MsIGFuZCB0aGUgY29kZSB3YXMgb3B0aW1pemFibGUsIHRoZW4gbWFrZSBzdXJlIHdl
CiAgICAgLy8gZGVjcmVtZW50IHRoZSByYXJlIGNhc2UgY291bnRlci4KICNpZiBFTkFCTEUoVkFM
VUVfUFJPRklMRVIpCi0gICAgaWYgKG1fY29kZUJsb2NrLT5jYW5Db21waWxlV2l0aERGRygpID49
IERGRzo6TWF5SW5saW5lKSB7CisgICAgaWYgKG1fY29kZUJsb2NrLT5jYXBhYmlsaXR5TGV2ZWxT
dGF0ZSgpICE9IERGRzo6Q2Fubm90Q29tcGlsZSkgewogICAgICAgICBzdWIzMigKICAgICAgICAg
ICAgIFRydXN0ZWRJbW0zMigxKSwKICAgICAgICAgICAgIEFic29sdXRlQWRkcmVzcygmbV9jb2Rl
QmxvY2stPnJhcmVDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KHN0dWJJbmZvLT5ieXRlY29k
ZUluZGV4KS0+bV9jb3VudGVyKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMv
Q29kZVByb2ZpbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29s
cy9Db2RlUHJvZmlsZS5jcHAJKHJldmlzaW9uIDE1MDYxNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS90b29scy9Db2RlUHJvZmlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNyw3ICsxMDcs
NyBAQCB2b2lkIENvZGVQcm9maWxlOjpzYW1wbGUodm9pZCogcGMsIHZvaWQqCiAgICAgICAgICAg
ICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IHN0YXRpY19jYXN0PENvZGVCbG9jayo+KG93bmVyVUlE
KTsKICAgICAgICAgICAgIGlmIChjb2RlQmxvY2stPmppdFR5cGUoKSA9PSBKSVRDb2RlOjpERkdK
SVQpCiAgICAgICAgICAgICAgICAgdHlwZSA9IERGR0pJVDsKLSAgICAgICAgICAgIGVsc2UgaWYg
KGNvZGVCbG9jay0+Y2FuQ29tcGlsZVdpdGhERkdTdGF0ZSgpICE9IERGRzo6Q2FuQ29tcGlsZSkK
KyAgICAgICAgICAgIGVsc2UgaWYgKCFjYW5Db21waWxlKGNvZGVCbG9jay0+Y2FwYWJpbGl0eUxl
dmVsU3RhdGUoKSkpCiAgICAgICAgICAgICAgICAgdHlwZSA9IEJhc2VsaW5lT25seTsKICAgICAg
ICAgICAgIGVsc2UgaWYgKGNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKSkKICAgICAgICAgICAgICAg
ICB0eXBlID0gQmFzZWxpbmVPU1I7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>202763</attachid>
            <date>2013-05-23 21:53:48 -0700</date>
            <delta_ts>2013-05-23 22:01:10 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>22375</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTUwNjIzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg2IEBA
CisyMDEzLTA1LTIzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
Zm91cnRoVGllcjogYWRkIGhldXJpc3RpY3MgdG8gcmVkdWNlIHRoZSBsaWtlbGlob29kIG9mIGEg
dHJpdmlhbGx5IGlubGluZWFibGUgZnVuY3Rpb24gYmVpbmcgaW5kZXBlbmRlbnRseSBjb21waWxl
ZCBieSB0aGUgY29uY3VycmVudCBKSVQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTExNjU1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorICAgICAgICAKKyAgICAgICAgVGhpcyBpbnRyb2R1Y2VzIGEgZmFpcmx5IGNvbXByZWhl
bnNpdmUgbWVjaGFuaXNtIGZvciBwcmV2ZW50aW5nIHRyaXZpYWxseSBpbmxpbmVhYmxlCisgICAg
ICAgIGZ1bmN0aW9ucyBmcm9tIGJlaW5nIGNvbXBpbGVkIGluZGVwZW5kZW50bHkgb2YgYWxsIG9m
IHRoZSB0aGluZ3MgaW50byB3aGljaCB0aGV5IGVuZAorICAgICAgICB1cCBiZWluZyBpbmxpbmVk
LgorICAgICAgICAKKyAgICAgICAgVGhlIHRyaWNrIGlzIENvZGVCbG9jazo6bV9zaG91bGRBbHdh
eXNCZUlubGluZWQsIG9yIFNBQkkgZm9yIHNob3J0ICh0aGF0J3Mgd2hhdCB0aGUKKyAgICAgICAg
ZGVidWcgbG9nZ2luZyBjYWxscyBpdCkuIEEgU0FCSSBmdW5jdGlvbiBpcyBvbmUgdGhhdCB3ZSBj
dXJyZW50bHkgYmVsaWV2ZSBzaG91bGQKKyAgICAgICAgbmV2ZXIgYmUgREZHIG9wdGltaXplZCBi
ZWNhdXNlIGl0IHNob3VsZCBhbHdheXMgYmUgaW5saW5lZCBpbnRvIHRoZSBmdW5jdGlvbnMgdGhh
dAorICAgICAgICBjYWxsIGl0LiBTQUJJIGZvbGxvd3MgImlubm9jZW50IHVudGlsIHByb3ZlbiBn
dWlsdHkiOiBhbGwgZnVuY3Rpb25zIHN0YXJ0IG91dCBTQUJJCisgICAgICAgIGFuZCBoYXZlIFNB
Qkkgc2V0IHRvIGZhbHNlIGlmIHdlIHNlZSBwcm9vZiB0aGF0IHRoYXQgZnVuY3Rpb24gbWF5IGJl
IGNhbGxlZCBpbiBzb21lCisgICAgICAgIHBvc3NpYmx5IG5vbi1pbmxpbmVhYmxlIHdheS4gU28g
bG9uZyBhcyBhIGZ1bmN0aW9uIGlzIFNBQkksIGl0IHdpbGwgbm90IHRpZXIgdXAgdG8KKyAgICAg
ICAgdGhlIERGRzogY3RpX29wdGltaXplIHdpbGwgcGVycGV0dWFsbHkgcG9zdHBvbmUgaXRzIG9w
dGltaXphdGlvbi4gQmVjYXVzZSBTQUJJIGhhcworICAgICAgICBzdWNoIGEgc2V2ZXJlIGVmZmVj
dCwgd2UgbWFrZSB0aGUgYnVyZGVuIG9mIHByb29mIG9mIGd1aWx0IHF1aXRlIGxvdy4gU0FCSSBn
ZXRzCisgICAgICAgIGNsZWFyZWQgaWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgaGFwcGVuOgorICAg
ICAgICAKKyAgICAgICAgLSBZb3UgZ2V0IGNhbGxlZCBmcm9tIG5hdGl2ZSBjb2RlIChlaXRoZXIg
dGhyb3VnaCBDYWxsRGF0YSBvciBDYWNoZWRDYWxsKS4KKyAgICAgICAgCisgICAgICAgIC0gWW91
IGdldCBjYWxsZWQgZnJvbSBhbiBldmFsLCBzaW5jZSBldmFsIGNvZGUgdGFrZXMgYSBsb25nIHRp
bWUgdG8gZ2V0IERGRworICAgICAgICAgIG9wdGltaXplZC4KKyAgICAgICAgCisgICAgICAgIC0g
WW91IGdldCBjYWxsZWQgZnJvbSBnbG9iYWwgY29kZSwgc2luY2Ugb2Z0ZW4gZ2xvYmFsIGNvZGUg
ZG9lc24ndCB0aWVyLXVwIHNpbmNlCisgICAgICAgICAgaXQncyBydW4tb25jZS4KKyAgICAgICAg
CisgICAgICAgIC0gWW91IGdldCBjYWxsZWQgcmVjdXJzaXZlbHksIHdoZXJlIHJlY3Vyc2lvbiBp
cyBkZXRlY3RlZCBieSBhIHN0YWNrIHdhbGsgb2YgZGVwdGgKKyAgICAgICAgICBPcHRpb25zOjpt
YXhpbXVtSW5saW5pbmdEZXB0aCgpLgorICAgICAgICAKKyAgICAgICAgLSBZb3UgZ2V0IGNhbGxl
ZCB0aHJvdWdoIGFuIHVubGlua2VkIHZpcnR1YWwgY2FsbC4KKyAgICAgICAgCisgICAgICAgIC0g
WW91IGdldCBjYWxsZWQgZnJvbSBERkcgY29kZSwgc2luY2UgaWYgdGhlIGNhbGxlciB3YXMgYWxy
ZWFkeSBERkcgb3B0aW1pemVkIGFuZAorICAgICAgICAgIGRpZG4ndCBpbmxpbmUgeW91IHRoZW4g
b2J2aW91c2x5LCB5b3UgbWlnaHQgbm90IGdldCBpbmxpbmVkLgorICAgICAgICAKKyAgICAgICAg
LSBZb3UndmUgdGllcmVkIHVwIHRvIHRoZSBiYXNlbGluZSBKSVQgYW5kIHlvdSBnZXQgY2FsbGVk
IGZyb20gdGhlIGludGVycHJldGVyLgorICAgICAgICAgIFRoZSBpZGVhIGhlcmUgaXMgdGhhdCB0
aGlzIGtpbmQgb2YgZW5zdXJlcyB0aGF0IHlvdSBzdGF5IFNBQkkgb25seSBpZiB5b3UncmUKKyAg
ICAgICAgICBjYWxsZWQgbm8gbW9yZSBmcmVxdWVudGx5IHRoYW4gYW55IG9mIHlvdXIgY2FsbGVy
cy4KKyAgICAgICAgCisgICAgICAgIC0gWW91IGdldCBjYWxsZWQgZnJvbSBhIGNvZGUgYmxvY2sg
dGhhdCBpc24ndCBhIERGRyBjYW5kaWRhdGUuCisgICAgICAgIAorICAgICAgICAtIFlvdSBhcmVu
J3QgYW4gaW5saW5pbmcgY2FuZGlkYXRlLgorICAgICAgICAKKyAgICAgICAgTW9zdCBvZiB0aGUg
aGV1cmlzdGljcyBmb3IgU0FCSSBhcmUgaW4gQ29kZUJsb2NrOjpub3RpY2VJbmNvbWluZ0NhbGwo
KS4KKyAgICAgICAgCisgICAgICAgIFRoaXMgaXMgbmV1dHJhbCBvbiBTdW5TcGlkZXIgYW5kIFY4
U3BpZGVyLCBhbmQgYXBwZWFycyB0byBiZSBhIHNsaWdodCBzcGVlZC11cCBvbgorICAgICAgICBW
OHY3LCB3aGljaCB3YXMgcHJldmlvdXNseSBhZHZlcnNlbHkgYWZmZWN0ZWQgYnkgY29uY3VycmVu
dCBjb21waWxhdGlvbi4gSSBhbHNvCisgICAgICAgIGNvbmZpcm1lZCB0aGF0IGZvciBleGFtcGxl
IG9uIFY4L3JpY2hhcmRzLCBpdCBkcmFtYXRpY2FsbHkgcmVkdWNlcyB0aGUgbnVtYmVyIG9mCisg
ICAgICAgIGNvZGUgYmxvY2tzIHRoYXQgZ2V0IERGRyBjb21waWxlZC4gSXQgaXMgYSBzcGVlZC11
cCBvbiB0aG9zZSBWOHY3IGJlbmNobWFya3MgdGhhdAorICAgICAgICBzYXcgcmVncmVzc2lvbnMg
ZnJvbSBjb25jdXJyZW50IGNvbXBpbGF0aW9uLgorICAgICAgICAKKyAgICAgICAgKiBieXRlY29k
ZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXBBc3N1bWluZ0pJ
VFR5cGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OkNvZGVCbG9jayk6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6bGlua0luY29taW5nQ2FsbCk6CisgICAgICAgIChKU0MpOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6Om5vdGljZUluY29taW5nQ2FsbCk6CisgICAgICAgICogYnl0ZWNv
ZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChDb2RlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdD
YXBhYmlsaXRpZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjptaWdodElubGluZUZ1bmN0aW9uKToK
KyAgICAgICAgKERGRyk6CisgICAgICAgICogZGZnL0RGR1BsYW4uY3BwOgorICAgICAgICAoSlND
OjpERkc6OlBsYW46OmNvbXBpbGVJblRocmVhZCk6CisgICAgICAgICogZGZnL0RGR1JlcGF0Y2gu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OmRmZ0xpbmtGb3IpOgorICAgICAgICAqIGludGVycHJl
dGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGVD
YWxsKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGVDb25zdHJ1Y3QpOgorICAg
ICAgICAoSlNDOjpJbnRlcnByZXRlcjo6cHJlcGFyZUZvclJlcGVhdENhbGwpOgorICAgICAgICAq
IGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlKToKKyAgICAg
ICAgKEpTQzo6SklUOjpsaW5rRm9yKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgIChK
SVQpOgorICAgICAgICAqIGppdC9KSVRTdHVicy5jcHA6CisgICAgICAgIChKU0M6OkRFRklORV9T
VFVCX0ZVTkNUSU9OKToKKyAgICAgICAgKEpTQzo6bGF6eUxpbmtGb3IpOgorICAgICAgICAqIGxs
aW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNldFVwQ2FsbCk6
CisKIDIwMTMtMDUtMjMgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAg
ICBmb3VydGhUaWVyOiByYXRpb25hbGl6ZSBERkc6OkNhcGFiaWxpdHlMZXZlbCBhbmQgREZHQ2Fw
YWJpbGl0aWVzLltofGNwcF0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAxNTA2MjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDYgKzExMyw4
IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQXNzdW1pbmdKSVRUeXBlKFByaW4KICAgICBvdXQucHJp
bnQoaW5mZXJyZWROYW1lKCksICIjIiwgaGFzaCgpLCAiOlsiLCBSYXdQb2ludGVyKHRoaXMpLCAi
LT4iLCBSYXdQb2ludGVyKG93bmVyRXhlY3V0YWJsZSgpKSwgIiwgIiwgaml0VHlwZSwgY29kZVR5
cGUoKSk7CiAgICAgaWYgKGNvZGVUeXBlKCkgPT0gRnVuY3Rpb25Db2RlKQogICAgICAgICBvdXQu
cHJpbnQoc3BlY2lhbGl6YXRpb25LaW5kKCkpOworICAgIGlmIChtX3Nob3VsZEFsd2F5c0JlSW5s
aW5lZCkKKyAgICAgICAgb3V0LnByaW50KCIgKFNBQkkpIik7CiAgICAgb3V0LnByaW50KCJdIik7
CiB9CiAKQEAgLTE1NzYsNiArMTU3OCw3IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKENvcHlQYXJz
ZWRCbG9ja1RhZywKICAgICAsIG1fbnVtQ2FsbGVlUmVnaXN0ZXJzKG90aGVyLm1fbnVtQ2FsbGVl
UmVnaXN0ZXJzKQogICAgICwgbV9udW1WYXJzKG90aGVyLm1fbnVtVmFycykKICAgICAsIG1faXND
b25zdHJ1Y3RvcihvdGhlci5tX2lzQ29uc3RydWN0b3IpCisgICAgLCBtX3Nob3VsZEFsd2F5c0Jl
SW5saW5lZCh0cnVlKQogICAgICwgbV91bmxpbmtlZENvZGUoKm90aGVyLm1fdm0sIG90aGVyLm1f
b3duZXJFeGVjdXRhYmxlLmdldCgpLCBvdGhlci5tX3VubGlua2VkQ29kZS5nZXQoKSkKICAgICAs
IG1fb3duZXJFeGVjdXRhYmxlKCpvdGhlci5tX3ZtLCBvdGhlci5tX293bmVyRXhlY3V0YWJsZS5n
ZXQoKSwgb3RoZXIubV9vd25lckV4ZWN1dGFibGUuZ2V0KCkpCiAgICAgLCBtX3ZtKG90aGVyLm1f
dm0pCkBAIC0xNjIyLDYgKzE2MjUsNyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVj
dXRhYmxlKiBvCiAgICAgLCBtX251bUNhbGxlZVJlZ2lzdGVycyh1bmxpbmtlZENvZGVCbG9jay0+
bV9udW1DYWxsZWVSZWdpc3RlcnMpCiAgICAgLCBtX251bVZhcnModW5saW5rZWRDb2RlQmxvY2st
Pm1fbnVtVmFycykKICAgICAsIG1faXNDb25zdHJ1Y3Rvcih1bmxpbmtlZENvZGVCbG9jay0+aXND
b25zdHJ1Y3RvcigpKQorICAgICwgbV9zaG91bGRBbHdheXNCZUlubGluZWQodHJ1ZSkKICAgICAs
IG1fdW5saW5rZWRDb2RlKGdsb2JhbE9iamVjdC0+dm0oKSwgb3duZXJFeGVjdXRhYmxlLCB1bmxp
bmtlZENvZGVCbG9jaykKICAgICAsIG1fb3duZXJFeGVjdXRhYmxlKGdsb2JhbE9iamVjdC0+dm0o
KSwgb3duZXJFeGVjdXRhYmxlLCBvd25lckV4ZWN1dGFibGUpCiAgICAgLCBtX3ZtKHVubGlua2Vk
Q29kZUJsb2NrLT52bSgpKQpAQCAtMjU2OSw2ICsyNTczLDEyIEBAIHZvaWQgQ29kZUJsb2NrOjp1
bmxpbmtDYWxscygpCiAgICAgfQogfQogCit2b2lkIENvZGVCbG9jazo6bGlua0luY29taW5nQ2Fs
bChFeGVjU3RhdGUqIGNhbGxlckZyYW1lLCBDYWxsTGlua0luZm8qIGluY29taW5nKQoreworICAg
IG5vdGljZUluY29taW5nQ2FsbChjYWxsZXJGcmFtZSk7CisgICAgbV9pbmNvbWluZ0NhbGxzLnB1
c2goaW5jb21pbmcpOworfQorCiB2b2lkIENvZGVCbG9jazo6dW5saW5rSW5jb21pbmdDYWxscygp
CiB7CiAjaWYgRU5BQkxFKExMSU5UKQpAQCAtMjU4NCw2ICsyNTk0LDEyIEBAIHZvaWQgQ29kZUJs
b2NrOjp1bmxpbmtJbmNvbWluZ0NhbGxzKCkKICNlbmRpZiAvLyBFTkFCTEUoSklUKQogCiAjaWYg
RU5BQkxFKExMSU5UKQordm9pZCBDb2RlQmxvY2s6OmxpbmtJbmNvbWluZ0NhbGwoRXhlY1N0YXRl
KiBjYWxsZXJGcmFtZSwgTExJbnRDYWxsTGlua0luZm8qIGluY29taW5nKQoreworICAgIG5vdGlj
ZUluY29taW5nQ2FsbChjYWxsZXJGcmFtZSk7CisgICAgbV9pbmNvbWluZ0xMSW50Q2FsbHMucHVz
aChpbmNvbWluZyk7Cit9CisKIEluc3RydWN0aW9uKiBDb2RlQmxvY2s6OmFkanVzdFBDSWZBdENh
bGxTaXRlKEluc3RydWN0aW9uKiBwb3RlbnRpYWxSZXR1cm5QQykKIHsKICAgICBBU1NFUlQocG90
ZW50aWFsUmV0dXJuUEMpOwpAQCAtMjkyNCw2ICsyOTQwLDcwIEBAIEpTR2xvYmFsT2JqZWN0KiBD
b2RlQmxvY2s6Omdsb2JhbE9iamVjdEYKICAgICByZXR1cm4ganNDYXN0PEZ1bmN0aW9uRXhlY3V0
YWJsZSo+KGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5leGVjdXRhYmxlLmdldCgpKS0+Z2Vu
ZXJhdGVkQnl0ZWNvZGUoKS5nbG9iYWxPYmplY3QoKTsKIH0KIAordm9pZCBDb2RlQmxvY2s6Om5v
dGljZUluY29taW5nQ2FsbChFeGVjU3RhdGUqIGNhbGxlckZyYW1lKQoreworICAgIENvZGVCbG9j
ayogY2FsbGVyQ29kZUJsb2NrID0gY2FsbGVyRnJhbWUtPmNvZGVCbG9jaygpOworICAgIAorICAg
IGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpCisgICAgICAgIGRhdGFMb2coIk5vdGljaW5nIGNh
bGwgbGluayBmcm9tICIsICpjYWxsZXJDb2RlQmxvY2ssICIgdG8gIiwgKnRoaXMsICJcbiIpOwor
ICAgIAorICAgIGlmICghbV9zaG91bGRBbHdheXNCZUlubGluZWQpCisgICAgICAgIHJldHVybjsK
KyAgICAKKyAgICBpZiAoIWhhc0Jhc2VsaW5lSklUUHJvZmlsaW5nKCkpCisgICAgICAgIHJldHVy
bjsKKyAgICAKKyAgICBpZiAoIURGRzo6bWlnaHRJbmxpbmVGdW5jdGlvbih0aGlzKSkKKyAgICAg
ICAgcmV0dXJuOworICAgIAorICAgIGlmICghY2FuSW5saW5lKG1fY2FwYWJpbGl0eUxldmVsU3Rh
dGUpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgaWYgKGNhbGxlckNvZGVCbG9jay0+aml0
VHlwZSgpID09IEpJVENvZGU6OkludGVycHJldGVyVGh1bmspIHsKKyAgICAgICAgLy8gSWYgdGhl
IGNhbGxlciBpcyBzdGlsbCBpbiB0aGUgaW50ZXJwcmV0ZXIsIHRoZW4gd2UgY2FuJ3QgZXhwZWN0
IGlubGluaW5nIHRvCisgICAgICAgIC8vIGhhcHBlbiBhbnl0aW1lIHNvb24uIEFzc3VtZSBpdCdz
IHByb2ZpdGFibGUgdG8gb3B0aW1pemUgaXQgc2VwYXJhdGVseS4gVGhpcworICAgICAgICAvLyBl
bnN1cmVzIHRoYXQgYSBmdW5jdGlvbiBpcyBTQUJJIG9ubHkgaWYgaXQgaXMgY2FsbGVkIG5vIG1v
cmUgZnJlcXVlbnRseSB0aGFuCisgICAgICAgIC8vIGFueSBvZiBpdHMgY2FsbGVycy4KKyAgICAg
ICAgbV9zaG91bGRBbHdheXNCZUlubGluZWQgPSBmYWxzZTsKKyAgICAgICAgaWYgKE9wdGlvbnM6
OnZlcmJvc2VPU1IoKSkKKyAgICAgICAgICAgIGRhdGFMb2coIiAgICBNYXJraW5nIFNBQkkgYmVj
YXVzZSBjYWxsZXIgaXMgaW4gTExJbnQuXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICAKKyAgICBpZiAoY2FsbGVyQ29kZUJsb2NrLT5jb2RlVHlwZSgpICE9IEZ1bmN0aW9uQ29kZSkg
eworICAgICAgICAvLyBJZiB0aGUgY2FsbGVyIGlzIGVpdGhlciBldmFsIG9yIGdsb2JhbCBjb2Rl
LCBhc3N1bWUgdGhhdCB0aGF0IHdvbid0IGJlCisgICAgICAgIC8vIG9wdGltaXplZCBhbnl0aW1l
IHNvb24uIEZvciBldmFsIGNvZGUgdGhpcyBpcyBwYXJ0aWN1bGFybHkgdHJ1ZSBzaW5jZSB3ZQor
ICAgICAgICAvLyBkZWxheSBldmFsIG9wdGltaXphdGlvbiBieSBhICpsb3QqLgorICAgICAgICBt
X3Nob3VsZEFsd2F5c0JlSW5saW5lZCA9IGZhbHNlOworICAgICAgICBpZiAoT3B0aW9uczo6dmVy
Ym9zZU9TUigpKQorICAgICAgICAgICAgZGF0YUxvZygiICAgIE1hcmtpbmcgU0FCSSBiZWNhdXNl
IGNhbGxlciBpcyBub3QgYSBmdW5jdGlvbi5cbiIpOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIAorICAgIEV4ZWNTdGF0ZSogZnJhbWUgPSBjYWxsZXJGcmFtZTsKKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSBPcHRpb25zOjptYXhpbXVtSW5saW5pbmdEZXB0aCgpOyBpLS07IGZyYW1lID0gZnJh
bWUtPmNhbGxlckZyYW1lKCkpIHsKKyAgICAgICAgaWYgKGZyYW1lLT5oYXNIb3N0Q2FsbEZyYW1l
RmxhZygpKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmIChmcmFtZS0+Y29kZUJsb2Nr
KCkgPT0gdGhpcykgeworICAgICAgICAgICAgLy8gUmVjdXJzaXZlIGNhbGxzIHdvbid0IGJlIGlu
bGluZWQuCisgICAgICAgICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZU9TUigpKQorICAgICAgICAg
ICAgICAgIGRhdGFMb2coIiAgICBNYXJraW5nIFNBQkkgYmVjYXVzZSByZWN1cnNpb24gd2FzIGRl
dGVjdGVkLlxuIik7CisgICAgICAgICAgICBtX3Nob3VsZEFsd2F5c0JlSW5saW5lZCA9IGZhbHNl
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIFJFTEVB
U0VfQVNTRVJUKGNhbGxlckNvZGVCbG9jay0+bV9jYXBhYmlsaXR5TGV2ZWxTdGF0ZSAhPSBERkc6
OkNhcGFiaWxpdHlMZXZlbE5vdFNldCk7CisgICAgCisgICAgaWYgKGNhbkNvbXBpbGUoY2FsbGVy
Q29kZUJsb2NrLT5tX2NhcGFiaWxpdHlMZXZlbFN0YXRlKSkKKyAgICAgICAgcmV0dXJuOworICAg
IAorICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpCisgICAgICAgIGRhdGFMb2coIiAgICBN
YXJraW5nIFNBQkkgYmVjYXVzZSB0aGUgY2FsbGVyIGlzIG5vdCBhIERGRyBjYW5kaWRhdGUuXG4i
KTsKKyAgICAKKyAgICBtX3Nob3VsZEFsd2F5c0JlSW5saW5lZCA9IGZhbHNlOworfQorCiB1bnNp
Z25lZCBDb2RlQmxvY2s6OnJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyKCkgY29uc3QKIHsKICAg
ICBBU1NFUlQobV9yZW9wdGltaXphdGlvblJldHJ5Q291bnRlciA8PSBPcHRpb25zOjpyZW9wdGlt
aXphdGlvblJldHJ5Q291bnRlck1heCgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9uIDE1MDYyMikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMjE0LDEyICsy
MTQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHVubGlua0NhbGxzKCk7CiAgICAgICAgIAotICAg
IGJvb2wgaGFzSW5jb21pbmdDYWxscygpIHsgcmV0dXJuIG1faW5jb21pbmdDYWxscy5iZWdpbigp
ICE9IG1faW5jb21pbmdDYWxscy5lbmQoKTsgfQotICAgICAgICAKLSAgICB2b2lkIGxpbmtJbmNv
bWluZ0NhbGwoQ2FsbExpbmtJbmZvKiBpbmNvbWluZykKLSAgICB7Ci0gICAgICAgIG1faW5jb21p
bmdDYWxscy5wdXNoKGluY29taW5nKTsKLSAgICB9CisgICAgdm9pZCBsaW5rSW5jb21pbmdDYWxs
KEV4ZWNTdGF0ZSogY2FsbGVyRnJhbWUsIENhbGxMaW5rSW5mbyopOwogICAgICAgICAKICAgICBi
b29sIGlzSW5jb21pbmdDYWxsQWxyZWFkeUxpbmtlZChDYWxsTGlua0luZm8qIGluY29taW5nKQog
ICAgIHsKQEAgLTIyOCwxMCArMjIzLDcgQEAgcHVibGljOgogI2VuZGlmIC8vIEVOQUJMRShKSVQp
CiAKICNpZiBFTkFCTEUoTExJTlQpCi0gICAgdm9pZCBsaW5rSW5jb21pbmdDYWxsKExMSW50Q2Fs
bExpbmtJbmZvKiBpbmNvbWluZykKLSAgICB7Ci0gICAgICAgIG1faW5jb21pbmdMTEludENhbGxz
LnB1c2goaW5jb21pbmcpOwotICAgIH0KKyAgICB2b2lkIGxpbmtJbmNvbWluZ0NhbGwoRXhlY1N0
YXRlKiBjYWxsZXJGcmFtZSwgTExJbnRDYWxsTGlua0luZm8qKTsKICNlbmRpZiAvLyBFTkFCTEUo
TExJTlQpCiAgICAgICAgIAogICAgIHZvaWQgdW5saW5rSW5jb21pbmdDYWxscygpOwpAQCAtOTA3
LDYgKzg5OSw4IEBAIHB1YmxpYzoKICAgICAvLyBjb25jdXJyZW50IGNvbXBpbGF0aW9uIHRocmVh
ZHMgZmluaXNoIHdoYXQgdGhleSdyZSBkb2luZy4KICAgICBDb25jdXJyZW50SklUTG9jayBtX2xv
Y2s7CiAgICAgCisgICAgYm9vbCBtX3Nob3VsZEFsd2F5c0JlSW5saW5lZDsKKyAgICAKIHByb3Rl
Y3RlZDoKICNpZiBFTkFCTEUoSklUKQogICAgIHZpcnR1YWwgQ29tcGlsYXRpb25SZXN1bHQgaml0
Q29tcGlsZUltcGwoRXhlY1N0YXRlKikgPSAwOwpAQCAtOTE2LDcgKzkxMCw5IEBAIHByb3RlY3Rl
ZDoKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgREZHQ29kZUJsb2NrczsKLSAgICAgICAg
CisgICAgCisgICAgdm9pZCBub3RpY2VJbmNvbWluZ0NhbGwoRXhlY1N0YXRlKiBjYWxsZXJGcmFt
ZSk7CisgICAgCiAgICAgZG91YmxlIG9wdGltaXphdGlvblRocmVzaG9sZFNjYWxpbmdGYWN0b3Io
KTsKIAogI2lmIEVOQUJMRShKSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NhcGFiaWxpdGllcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2FwYWJpbGl0aWVzLmgJKHJldmlzaW9uIDE1MDYyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTExOCw2ICsxMTgs
MTEgQEAgaW5saW5lIGJvb2wgbWlnaHRJbmxpbmVGdW5jdGlvbkZvcihDb2RlQgogICAgIHJldHVy
biBtaWdodElubGluZUZ1bmN0aW9uRm9yQ29uc3RydWN0KGNvZGVCbG9jayk7CiB9CiAKK2lubGlu
ZSBib29sIG1pZ2h0SW5saW5lRnVuY3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2spCit7CisgICAg
cmV0dXJuIG1pZ2h0SW5saW5lRnVuY3Rpb25Gb3IoY29kZUJsb2NrLCBjb2RlQmxvY2stPnNwZWNp
YWxpemF0aW9uS2luZCgpKTsKK30KKwogaW5saW5lIGJvb2wgY2FuSW5saW5lRnVuY3Rpb25Gb3Io
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwgYm9vbCBp
c0Nsb3N1cmVDYWxsKQogewogICAgIGlmIChpc0Nsb3N1cmVDYWxsKSB7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJKHJldmlzaW9uIDE1MDYyMikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNiw3ICsx
MTYsNyBAQCB2b2lkIFBsYW46OmNvbXBpbGVJblRocmVhZChMb25nTGl2ZWRTdGF0CiAgICAgICAg
ICAgICBwYXRoTmFtZSA9ICJGVEwiOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAg
ICAgICAgZGF0YUxvZygiQ29tcGlsZWQgIiwgKmNvZGVCbG9jaywgIiB3aXRoICIsIHBhdGhOYW1l
LCAiIGluICIsIGN1cnJlbnRUaW1lTVMoKSAtIGJlZm9yZSwgIiBtcy5cbiIpOworICAgICAgICBk
YXRhTG9nKCJPcHRpbWl6ZWQgIiwgKmNvZGVCbG9jay0+YWx0ZXJuYXRpdmUoKSwgIiB3aXRoICIs
IHBhdGhOYW1lLCAiIGluICIsIGN1cnJlbnRUaW1lTVMoKSAtIGJlZm9yZSwgIiBtcy5cbiIpOwog
ICAgIH0KIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZXBhdGNoLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlcGF0Y2guY3Bw
CShyZXZpc2lvbiAxNTA2MjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlcGF0
Y2guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTI5LDYgKzExMjksMTAgQEAgdm9pZCBkZmdMaW5r
Rm9yKEV4ZWNTdGF0ZSogZXhlYywgQ2FsbExpbgogewogICAgIEFTU0VSVCghY2FsbExpbmtJbmZv
LnN0dWIpOwogICAgIAorICAgIC8vIElmIHlvdSdyZSBiZWluZyBjYWxsLWxpbmtlZCBmcm9tIGEg
REZHIGNhbGxlciB0aGVuIHlvdSBvYnZpb3VzbHkgZGlkbid0IGdldCBpbmxpbmVkLgorICAgIGlm
IChjYWxsZWVDb2RlQmxvY2spCisgICAgICAgIGNhbGxlZUNvZGVCbG9jay0+bV9zaG91bGRBbHdh
eXNCZUlubGluZWQgPSBmYWxzZTsKKyAgICAKICAgICBDb2RlQmxvY2sqIGNhbGxlckNvZGVCbG9j
ayA9IGV4ZWMtPmNhbGxlckZyYW1lKCktPmNvZGVCbG9jaygpOwogICAgIFZNKiB2bSA9IGNhbGxl
ckNvZGVCbG9jay0+dm0oKTsKICAgICAKQEAgLTExNDAsNyArMTE0NCw3IEBAIHZvaWQgZGZnTGlu
a0ZvcihFeGVjU3RhdGUqIGV4ZWMsIENhbGxMaW4KICAgICByZXBhdGNoQnVmZmVyLnJlbGluayhj
YWxsTGlua0luZm8uaG90UGF0aE90aGVyLCBjb2RlUHRyKTsKICAgICAKICAgICBpZiAoY2FsbGVl
Q29kZUJsb2NrKQotICAgICAgICBjYWxsZWVDb2RlQmxvY2stPmxpbmtJbmNvbWluZ0NhbGwoJmNh
bGxMaW5rSW5mbyk7CisgICAgICAgIGNhbGxlZUNvZGVCbG9jay0+bGlua0luY29taW5nQ2FsbChl
eGVjLT5jYWxsZXJGcmFtZSgpLCAmY2FsbExpbmtJbmZvKTsKICAgICAKICAgICBpZiAoa2luZCA9
PSBDb2RlRm9yQ2FsbCkgewogICAgICAgICByZXBhdGNoQnVmZmVyLnJlbGluayhjYWxsTGlua0lu
Zm8uY2FsbFJldHVybkxvY2F0aW9uLCB2bS0+Z2V0Q1RJU3R1YihsaW5rQ2xvc3VyZUNhbGxUaHVu
a0dlbmVyYXRvcikuY29kZSgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkocmV2aXNpb24gMTUwNjIyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTAyOSw2ICsxMDI5LDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNhbGwo
Q2FsbEZyYQogICAgICAgICB9CiAgICAgICAgIG5ld0NvZGVCbG9jayA9ICZjYWxsRGF0YS5qcy5m
dW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEJ5dGVjb2RlRm9yQ2FsbCgpOwogICAgICAgICBB
U1NFUlQoISFuZXdDb2RlQmxvY2spOworICAgICAgICBuZXdDb2RlQmxvY2stPm1fc2hvdWxkQWx3
YXlzQmVJbmxpbmVkID0gZmFsc2U7CiAgICAgfSBlbHNlCiAgICAgICAgIG5ld0NvZGVCbG9jayA9
IDA7CiAKQEAgLTExMDQsNiArMTEwNSw3IEBAIEpTT2JqZWN0KiBJbnRlcnByZXRlcjo6ZXhlY3V0
ZUNvbnN0cnVjdCgKICAgICAgICAgfQogICAgICAgICBuZXdDb2RlQmxvY2sgPSAmY29uc3RydWN0
RGF0YS5qcy5mdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEJ5dGVjb2RlRm9yQ29uc3RydWN0
KCk7CiAgICAgICAgIEFTU0VSVCghIW5ld0NvZGVCbG9jayk7CisgICAgICAgIG5ld0NvZGVCbG9j
ay0+bV9zaG91bGRBbHdheXNCZUlubGluZWQgPSBmYWxzZTsKICAgICB9IGVsc2UKICAgICAgICAg
bmV3Q29kZUJsb2NrID0gMDsKIApAQCAtMTE2OSw2ICsxMTcxLDcgQEAgQ2FsbEZyYW1lQ2xvc3Vy
ZSBJbnRlcnByZXRlcjo6cHJlcGFyZUZvcgogICAgICAgICByZXR1cm4gQ2FsbEZyYW1lQ2xvc3Vy
ZSgpOwogICAgIH0KICAgICBDb2RlQmxvY2sqIG5ld0NvZGVCbG9jayA9ICZmdW5jdGlvbkV4ZWN1
dGFibGUtPmdlbmVyYXRlZEJ5dGVjb2RlRm9yQ2FsbCgpOworICAgIG5ld0NvZGVCbG9jay0+bV9z
aG91bGRBbHdheXNCZUlubGluZWQgPSBmYWxzZTsKIAogICAgIHNpemVfdCBhcmdzQ291bnQgPSBh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmNwcAkocmV2aXNpb24gMTUwNjIyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw4ICszNSw3IEBAIEpTQzo6TWFjcm9Bc3NlbWJsZXJY
ODZDb21tb246OlNTRTJDaGVja1MKICNlbmRpZgogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCi0j
aW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmg+Ci0jaW5jbHVkZSAi
REZHTm9kZS5oIiAvLyBmb3IgREZHX1NVQ0NFU1NfU1RBVFMKKyNpbmNsdWRlICJERkdDYXBhYmls
aXRpZXMuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpJVElubGluZXMu
aCIKICNpbmNsdWRlICJKSVRTdHViQ2FsbC5oIgpAQCAtNDcsNiArNDYsNyBAQCBKU0M6Ok1hY3Jv
QXNzZW1ibGVyWDg2Q29tbW9uOjpTU0UyQ2hlY2tTCiAjaW5jbHVkZSAiUmVwYXRjaEJ1ZmZlci5o
IgogI2luY2x1ZGUgIlJlc3VsdFR5cGUuaCIKICNpbmNsdWRlICJTYW1wbGluZ1Rvb2wuaCIKKyNp
bmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaD4KIAogdXNpbmcgbmFt
ZXNwYWNlIHN0ZDsKIApAQCAtNjI0LDYgKzYyNCwxOCBAQCBQYXNzUmVmUHRyPEpJVENvZGU+IEpJ
VDo6cHJpdmF0ZUNvbXBpbGUoCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KKyAgICAKKyAgICBzd2l0Y2ggKG1fY29kZUJsb2NrLT5j
b2RlVHlwZSgpKSB7CisgICAgY2FzZSBHbG9iYWxDb2RlOgorICAgIGNhc2UgRXZhbENvZGU6Cisg
ICAgICAgIG1fY29kZUJsb2NrLT5tX3Nob3VsZEFsd2F5c0JlSW5saW5lZCA9IGZhbHNlOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEZ1bmN0aW9uQ29kZToKKyAgICAgICAgLy8gV2UgY291bGQg
aGF2ZSBhbHJlYWR5IHNldCBpdCB0byBmYWxzZSBiZWNhdXNlIHdlIGRldGVjdGVkIGFuIHVuaW5s
aW5lYWJsZSBjYWxsLgorICAgICAgICAvLyBEb24ndCBvdmVycmlkZSB0aGF0IG9ic2VydmF0aW9u
LgorICAgICAgICBtX2NvZGVCbG9jay0+bV9zaG91bGRBbHdheXNCZUlubGluZWQgJj0gY2FuSW5s
aW5lKGxldmVsKSAmJiBERkc6Om1pZ2h0SW5saW5lRnVuY3Rpb24obV9jb2RlQmxvY2spOworICAg
ICAgICBicmVhazsKKyAgICB9CiAjZW5kaWYKICAgICAKICAgICBpZiAoT3B0aW9uczo6c2hvd0Rp
c2Fzc2VtYmx5KCkgfHwgbV92bS0+bV9wZXJCeXRlY29kZVByb2ZpbGVyKQpAQCAtNzA3LDYgKzcx
OSw3IEBAIFBhc3NSZWZQdHI8SklUQ29kZT4gSklUOjpwcml2YXRlQ29tcGlsZSgKICAgICAgICAg
anVtcChmdW5jdGlvbkJvZHkpOwogCiAgICAgICAgIGFyaXR5Q2hlY2sgPSBsYWJlbCgpOworICAg
ICAgICBzdG9yZTgoVHJ1c3RlZEltbTMyKDApLCAmbV9jb2RlQmxvY2stPm1fc2hvdWxkQWx3YXlz
QmVJbmxpbmVkKTsKICAgICAgICAgcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKHJlZ1Qy
KTsKICAgICAgICAgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKHJlZ1QyLCBKU1N0YWNrOjpSZXR1
cm5QQyk7CiAgICAgICAgIGVtaXRQdXRJbW1lZGlhdGVUb0NhbGxGcmFtZUhlYWRlcihtX2NvZGVC
bG9jaywgSlNTdGFjazo6Q29kZUJsb2NrKTsKQEAgLTg0Miw3ICs4NTUsNyBAQCBQYXNzUmVmUHRy
PEpJVENvZGU+IEpJVDo6cHJpdmF0ZUNvbXBpbGUoCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBE
aXJlY3RKSVRDb2RlKHJlc3VsdCwgSklUQ29kZTo6QmFzZWxpbmVKSVQpKTsKIH0KIAotdm9pZCBK
SVQ6OmxpbmtGb3IoSlNGdW5jdGlvbiogY2FsbGVlLCBDb2RlQmxvY2sqIGNhbGxlckNvZGVCbG9j
aywgQ29kZUJsb2NrKiBjYWxsZWVDb2RlQmxvY2ssIEpJVDo6Q29kZVB0ciBjb2RlLCBDYWxsTGlu
a0luZm8qIGNhbGxMaW5rSW5mbywgVk0qIHZtLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQp
Cit2b2lkIEpJVDo6bGlua0ZvcihFeGVjU3RhdGUqIGV4ZWMsIEpTRnVuY3Rpb24qIGNhbGxlZSwg
Q29kZUJsb2NrKiBjYWxsZXJDb2RlQmxvY2ssIENvZGVCbG9jayogY2FsbGVlQ29kZUJsb2NrLCBK
SVQ6OkNvZGVQdHIgY29kZSwgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8sIFZNKiB2bSwgQ29k
ZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQogewogICAgIFJlcGF0Y2hCdWZmZXIgcmVwYXRjaEJ1
ZmZlcihjYWxsZXJDb2RlQmxvY2spOwogCkBAIC04NTIsNyArODY1LDcgQEAgdm9pZCBKSVQ6Omxp
bmtGb3IoSlNGdW5jdGlvbiogY2FsbGVlLCBDbwogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKGNh
bGxMaW5rSW5mby0+aG90UGF0aE90aGVyLCBjb2RlKTsKIAogICAgIGlmIChjYWxsZWVDb2RlQmxv
Y2spCi0gICAgICAgIGNhbGxlZUNvZGVCbG9jay0+bGlua0luY29taW5nQ2FsbChjYWxsTGlua0lu
Zm8pOworICAgICAgICBjYWxsZWVDb2RlQmxvY2stPmxpbmtJbmNvbWluZ0NhbGwoZXhlYywgY2Fs
bExpbmtJbmZvKTsKIAogICAgIC8vIFBhdGNoIHRoZSBzbG93IHBhdGNoIHNvIHdlIGRvIG5vdCBj
b250aW51ZSB0byB0cnkgdG8gbGluay4KICAgICBpZiAoa2luZCA9PSBDb2RlRm9yQ2FsbCkgewpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lvbiAxNTA2MjIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOTMsNyArMzkzLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gaml0LnByaXZhdGVDb21waWxl
UGF0Y2hHZXRBcnJheUxlbmd0aChyZXR1cm5BZGRyZXNzKTsKICAgICAgICAgfQogCi0gICAgICAg
IHN0YXRpYyB2b2lkIGxpbmtGb3IoSlNGdW5jdGlvbiogY2FsbGVlLCBDb2RlQmxvY2sqIGNhbGxl
ckNvZGVCbG9jaywgQ29kZUJsb2NrKiBjYWxsZWVDb2RlQmxvY2ssIENvZGVQdHIsIENhbGxMaW5r
SW5mbyosIFZNKiwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCk7CisgICAgICAgIHN0YXRpYyB2b2lk
IGxpbmtGb3IoRXhlY1N0YXRlKiwgSlNGdW5jdGlvbiogY2FsbGVlLCBDb2RlQmxvY2sqIGNhbGxl
ckNvZGVCbG9jaywgQ29kZUJsb2NrKiBjYWxsZWVDb2RlQmxvY2ssIENvZGVQdHIsIENhbGxMaW5r
SW5mbyosIFZNKiwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCk7CiAgICAgICAgIHN0YXRpYyB2b2lk
IGxpbmtTbG93Q2FsbChDb2RlQmxvY2sqIGNhbGxlckNvZGVCbG9jaywgQ2FsbExpbmtJbmZvKik7
CiAKICAgICBwcml2YXRlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVi
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5j
cHAJKHJldmlzaW9uIDE1MDYyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1
YnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MDcsNiArOTA3LDEyIEBAIERFRklORV9TVFVCX0ZV
TkNUSU9OKHZvaWQsIG9wdGltaXplKQogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZy
YW1lLT5jb2RlQmxvY2soKTsKICAgICB1bnNpZ25lZCBieXRlY29kZUluZGV4ID0gc3RhY2tGcmFt
ZS5hcmdzWzBdLmludDMyKCk7CiAKKyAgICBpZiAoYnl0ZWNvZGVJbmRleCkgeworICAgICAgICAv
LyBJZiB3ZSdyZSBhdHRlbXB0aW5nIHRvIE9TUiBmcm9tIGEgbG9vcCwgYXNzdW1lIHRoYXQgdGhp
cyBzaG91bGQgYmUKKyAgICAgICAgLy8gc2VwYXJhdGVseSBvcHRpbWl6ZWQuCisgICAgICAgIGNv
ZGVCbG9jay0+bV9zaG91bGRBbHdheXNCZUlubGluZWQgPSBmYWxzZTsKKyAgICB9CisgICAgCiAg
ICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkgewogICAgICAgICBkYXRhTG9nKAogICAgICAg
ICAgICAgKmNvZGVCbG9jaywgIjogRW50ZXJlZCBvcHRpbWl6ZSB3aXRoIGJ5dGVjb2RlSW5kZXgg
PSAiLCBieXRlY29kZUluZGV4LApAQCAtOTIzLDcgKzkyOSwxNSBAQCBERUZJTkVfU1RVQl9GVU5D
VElPTih2b2lkLCBvcHRpbWl6ZSkKICAgICBpZiAoIWNvZGVCbG9jay0+Y2hlY2tJZk9wdGltaXph
dGlvblRocmVzaG9sZFJlYWNoZWQoKSkgewogICAgICAgICBjb2RlQmxvY2stPnVwZGF0ZUFsbFBy
ZWRpY3Rpb25zKCk7CiAgICAgICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpCi0gICAgICAg
ICAgICBkYXRhTG9nKCJDaG9vc2luZyBub3QgdG8gb3B0aW1pemUgIiwgKmNvZGVCbG9jaywgIiB5
ZXQuXG4iKTsKKyAgICAgICAgICAgIGRhdGFMb2coIkNob29zaW5nIG5vdCB0byBvcHRpbWl6ZSAi
LCAqY29kZUJsb2NrLCAiIHlldCwgYmVjYXVzZSB0aGUgdGhyZXNob2xkIGhhc24ndCBiZWVuIHJl
YWNoZWQuXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBpZiAoY29kZUJs
b2NrLT5tX3Nob3VsZEFsd2F5c0JlSW5saW5lZCkgeworICAgICAgICBjb2RlQmxvY2stPnVwZGF0
ZUFsbFByZWRpY3Rpb25zKCk7CisgICAgICAgIGNvZGVCbG9jay0+b3B0aW1pemVBZnRlcldhcm1V
cCgpOworICAgICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZU9TUigpKQorICAgICAgICAgICAgZGF0
YUxvZygiQ2hvb3Npbmcgbm90IHRvIG9wdGltaXplICIsICpjb2RlQmxvY2ssICIgeWV0LCBiZWNh
dXNlIG1fc2hvdWxkQWx3YXlzQmVJbmxpbmVkID09IHRydWUuXG4iKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICAKQEAgLTk3OSw4ICs5OTMsMTIgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04o
dm9pZCwgb3B0aW1pemUpCiAgICAgICAgIC8vICAgY29kZSBibG9jay4gT2J2aW91c2x5IHRoYXQn
cyB1bmZvcnR1bmF0ZSBhbmQgd2UnZCByYXRoZXIgbm90IGhhdmUgdGhhdAogICAgICAgICAvLyAg
IGhhcHBlbiwgYnV0IGl0IGNhbiBoYXBwZW4sIGFuZCBpZiBpdCBkaWQgdGhlbiB0aGUgamV0dGlz
b25pbmcgbG9naWMgd2lsbAogICAgICAgICAvLyAgIGhhdmUgc2V0IG91ciB0aHJlc2hvbGQgYXBw
cm9wcmlhdGVseSBhbmQgd2UgaGF2ZSBub3RoaW5nIGxlZnQgdG8gZG8uCi0gICAgICAgIGlmICgh
Y29kZUJsb2NrLT5oYXNPcHRpbWl6ZWRSZXBsYWNlbWVudCgpKQorICAgICAgICBpZiAoIWNvZGVC
bG9jay0+aGFzT3B0aW1pemVkUmVwbGFjZW1lbnQoKSkgeworICAgICAgICAgICAgY29kZUJsb2Nr
LT51cGRhdGVBbGxQcmVkaWN0aW9ucygpOworICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJv
c2VPU1IoKSkKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCJDb2RlIGJsb2NrICIsICpjb2RlQmxv
Y2ssICIgd2FzIGNvbXBpbGVkIGJ1dCBpdCBkb2Vzbid0IGhhdmUgYW4gb3B0aW1pemVkIHJlcGxh
Y2VtZW50LlxuIik7CiAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICB9IGVsc2Ug
aWYgKGNvZGVCbG9jay0+aGFzT3B0aW1pemVkUmVwbGFjZW1lbnQoKSkgewogICAgICAgICBpZiAo
T3B0aW9uczo6dmVyYm9zZU9TUigpKQogICAgICAgICAgICAgZGF0YUxvZygiQ29uc2lkZXJpbmcg
T1NSICIsICpjb2RlQmxvY2ssICIgLT4gIiwgKmNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKSwgIi5c
biIpOwpAQCAtMTAxMSw3ICsxMDI5LDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3B0
aW1pemUpCiAgICAgICAgICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZU9TUigpKSB7CiAgICAgICAg
ICAgICAgICAgZGF0YUxvZygKICAgICAgICAgICAgICAgICAgICAgIkRlbGF5aW5nIG9wdGltaXph
dGlvbiBmb3IgIiwgKmNvZGVCbG9jaywKLSAgICAgICAgICAgICAgICAgICAgIiAoaW4gbG9vcCkg
YmVjYXVzZSBvZiBpbnN1ZmZpY2llbnQgcHJvZmlsaW5nLlxuIik7CisgICAgICAgICAgICAgICAg
ICAgICIgYmVjYXVzZSBvZiBpbnN1ZmZpY2llbnQgcHJvZmlsaW5nLlxuIik7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTEyNzksMTIgKzEyOTcsMTIg
QEAgaW5saW5lIHZvaWQqIGxhenlMaW5rRm9yKENhbGxGcmFtZSogY2FsbAogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBjb2RlUHRyID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRD
b2RlRm9yKGtpbmQpLT5hZGRyZXNzRm9yQ2FsbCgpOwogICAgIH0KLQorICAgIAogICAgIENvbmN1
cnJlbnRKSVRMb2NrZXIgbG9ja2VyKGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKS0+Y29kZUJsb2Nr
KCktPm1fbG9jayk7CiAgICAgaWYgKCFjYWxsTGlua0luZm8tPnNlZW5PbmNlKCkpCiAgICAgICAg
IGNhbGxMaW5rSW5mby0+c2V0U2VlbigpOwogICAgIGVsc2UKLSAgICAgICAgSklUOjpsaW5rRm9y
KGNhbGxlZSwgY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpLT5jb2RlQmxvY2soKSwgY29kZUJsb2Nr
LCBjb2RlUHRyLCBjYWxsTGlua0luZm8sICZjYWxsRnJhbWUtPnZtKCksIGtpbmQpOworICAgICAg
ICBKSVQ6OmxpbmtGb3IoY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpLCBjYWxsZWUsIGNhbGxGcmFt
ZS0+Y2FsbGVyRnJhbWUoKS0+Y29kZUJsb2NrKCksIGNvZGVCbG9jaywgY29kZVB0ciwgY2FsbExp
bmtJbmZvLCAmY2FsbEZyYW1lLT52bSgpLCBraW5kKTsKIAogICAgIHJldHVybiBjb2RlUHRyLmV4
ZWN1dGFibGVBZGRyZXNzKCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDE1MDYyMikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0
MzYsMTYgKzE0MzYsMTggQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBzZXRVcENhbGwoRXhl
YwogICAgIAogICAgIGlmICghTExJTlRfQUxXQVlTX0FDQ0VTU19TTE9XICYmIGNhbGxMaW5rSW5m
bykgewogICAgICAgICBFeGVjU3RhdGUqIGV4ZWNDYWxsZXIgPSBleGVjQ2FsbGVlLT5jYWxsZXJG
cmFtZSgpOworICAgICAgICAKKyAgICAgICAgQ29kZUJsb2NrKiBjYWxsZXJDb2RlQmxvY2sgPSBl
eGVjQ2FsbGVyLT5jb2RlQmxvY2soKTsKIAotICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxv
Y2tlcihleGVjQ2FsbGVyLT5jb2RlQmxvY2soKS0+bV9sb2NrKTsKKyAgICAgICAgQ29uY3VycmVu
dEpJVExvY2tlciBsb2NrZXIoY2FsbGVyQ29kZUJsb2NrLT5tX2xvY2spOwogICAgICAgICAKICAg
ICAgICAgaWYgKGNhbGxMaW5rSW5mby0+aXNPbkxpc3QoKSkKICAgICAgICAgICAgIGNhbGxMaW5r
SW5mby0+cmVtb3ZlKCk7Ci0gICAgICAgIGNhbGxMaW5rSW5mby0+Y2FsbGVlLnNldCh2bSwgZXhl
Y0NhbGxlci0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLCBjYWxsZWUpOwotICAgICAg
ICBjYWxsTGlua0luZm8tPmxhc3RTZWVuQ2FsbGVlLnNldCh2bSwgZXhlY0NhbGxlci0+Y29kZUJs
b2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLCBjYWxsZWUpOworICAgICAgICBjYWxsTGlua0luZm8t
PmNhbGxlZS5zZXQodm0sIGNhbGxlckNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIGNhbGxl
ZSk7CisgICAgICAgIGNhbGxMaW5rSW5mby0+bGFzdFNlZW5DYWxsZWUuc2V0KHZtLCBjYWxsZXJD
b2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBjYWxsZWUpOwogICAgICAgICBjYWxsTGlua0lu
Zm8tPm1hY2hpbmVDb2RlVGFyZ2V0ID0gY29kZVB0cjsKICAgICAgICAgaWYgKGNvZGVCbG9jaykK
LSAgICAgICAgICAgIGNvZGVCbG9jay0+bGlua0luY29taW5nQ2FsbChjYWxsTGlua0luZm8pOwor
ICAgICAgICAgICAgY29kZUJsb2NrLT5saW5rSW5jb21pbmdDYWxsKGV4ZWNDYWxsZXIsIGNhbGxM
aW5rSW5mbyk7CiAgICAgfQogCiAgICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwgcGMs
IGNvZGVQdHIuZXhlY3V0YWJsZUFkZHJlc3MoKSk7Cg==
</data>
<flag name="review"
          id="224153"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>