<?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>163549</bug_id>
          
          <creation_ts>2016-10-17 10:03:48 -0700</creation_ts>
          <short_desc>Rename the reject() helper function to something more meaningful.</short_desc>
          <delta_ts>2016-10-25 18:13:58 -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>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>darin</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1240993</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-10-17 10:03:48 -0700</bug_when>
    <thetext>Maybe to failAndThrowTypeErrorIfNeeded()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244560</commentid>
    <comment_count>1</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-10-25 17:15:34 -0700</bug_when>
    <thetext>I spoke with Geoff offline, and he suggested renaming reject() to typeError().  The intuition behind this is that all the clients that uses this function will return typeError(..., shouldThrow, ...).  In a sense, they are returning a &quot;type&quot; of TypeError (which happened to be the value false).  In addition, it may also throw a JS TypeError is the shouldThrow parameter is true.

I think that that name works.  I will go ahead and make the change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244577</commentid>
    <comment_count>2</comment_count>
      <attachid>292857</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-10-25 17:47:59 -0700</bug_when>
    <thetext>Created attachment 292857
proposed patch.

Le&apos;s try this on the EWS bots first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244580</commentid>
    <comment_count>3</comment_count>
      <attachid>292857</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-10-25 18:07:37 -0700</bug_when>
    <thetext>Comment on attachment 292857
proposed patch.

At least one EWS bot managed to build with this patch.  I think it&apos;s ready for a review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244581</commentid>
    <comment_count>4</comment_count>
      <attachid>292857</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-10-25 18:10:25 -0700</bug_when>
    <thetext>Comment on attachment 292857
proposed patch.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244583</commentid>
    <comment_count>5</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-10-25 18:13:58 -0700</bug_when>
    <thetext>Thanks for the review.  Landed in r207859: &lt;http://trac.webkit.org/r207859&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292857</attachid>
            <date>2016-10-25 17:47:59 -0700</date>
            <delta_ts>2016-10-25 18:10:25 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-163549.patch</filename>
            <type>text/plain</type>
            <size>51783</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA3ODU4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY4IEBA
CisyMDE2LTEwLTI1ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZW5hbWUgdGhlIHJlamVjdCgpIGhlbHBlciBmdW5jdGlvbiB0byBzb21ldGhpbmcgbW9yZSBtZWFu
aW5nZnVsLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTYzNTQ5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
V2UnbGwgcmVuYW1lIHJlamVjdCgpIHRvIHR5cGVFcnJvcigpLiAgVGhlIGludHVpdGlvbiBiZWhp
bmQgdGhpcyBpcyB0aGF0IGFsbCB0aGUKKyAgICAgICAgY2xpZW50cyB0aGF0IHVzZXMgdGhpcyBm
dW5jdGlvbiB3aWxsIHJldHVybiB0eXBlRXJyb3IoLi4uLCBzaG91bGRUaHJvdywgLi4uKS4KKyAg
ICAgICAgSW4gYSBzZW5zZSwgdGhleSBhcmUgcmV0dXJuaW5nIGEgInR5cGUiIG9mIFR5cGVFcnJv
ciAod2hpY2ggaGFwcGVuZWQgdG8gYmUgdGhlCisgICAgICAgIHZhbHVlIGZhbHNlKS4gIEluIGFk
ZGl0aW9uLCBpdCBtYXkgYWxzbyB0aHJvdyBhIEpTIFR5cGVFcnJvciBpZiB0aGUgc2hvdWxkVGhy
b3cKKyAgICAgICAgcGFyYW1ldGVyIGlzIHRydWUuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHJ1bnRpbWUvR2V0dGVyU2V0
dGVyLmNwcDoKKyAgICAgICAgKEpTQzo6Y2FsbFNldHRlcik6CisgICAgICAgICogcnVudGltZS9K
U0FycmF5LmNwcDoKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6ZGVmaW5lT3duUHJvcGVydHkpOgor
ICAgICAgICAoSlNDOjpKU0FycmF5OjpzZXRMZW5ndGhXaXRoQXJyYXlTdG9yYWdlKToKKyAgICAg
ICAgKiBydW50aW1lL0pTQXJyYXlCdWZmZXIuY3BwOgorICAgICAgICAoSlNDOjpKU0FycmF5QnVm
ZmVyOjpwdXQpOgorICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVyOjpkZWZpbmVPd25Qcm9wZXJ0
eSk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHA6CisgICAgICAgICog
cnVudGltZS9KU0NKU1ZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6cHV0VG9Qcmlt
aXRpdmUpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZUJ5SW5kZXgpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNEYXRhVmlldy5jcHA6CisgICAgICAgIChKU0M6OkpTRGF0YVZp
ZXc6OnB1dCk6CisgICAgICAgIChKU0M6OkpTRGF0YVZpZXc6OmRlZmluZU93blByb3BlcnR5KToK
KyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0Z1bmN0
aW9uOjpwdXQpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eSk6
CisgICAgICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaDoKKyAg
ICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmRlZmluZU93blBy
b3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46
OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAg
ICAgKEpTQzo6b3JkaW5hcnlTZXRTbG93KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dElu
bGluZVNsb3cpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6c2V0UHJvdG90eXBlV2l0aEN5Y2xl
Q2hlY2spOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZGVmaW5lT3duSW5kZXhlZFByb3BlcnR5
KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhX
aXRoQXJyYXlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdEluZGV4
QmV5b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OnZhbGlk
YXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmpl
Y3RJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRJbmxpbmUpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNQcm94eS5jcHA6CisgICAgICAgIChKU0M6OkpTUHJveHk6OnNldFByb3Rv
dHlwZSk6CisgICAgICAgICogcnVudGltZS9Mb29rdXAuaDoKKyAgICAgICAgKEpTQzo6cHV0RW50
cnkpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6
UmVnRXhwT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9SZWdF
eHBPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6UmVnRXhwT2JqZWN0OjpzZXRMYXN0SW5kZXgpOgor
ICAgICAgICAqIHJ1bnRpbWUvUmVqZWN0Lmg6IFJlbW92ZWQuCisgICAgICAgICogcnVudGltZS9T
cGFyc2VBcnJheVZhbHVlTWFwLmNwcDoKKyAgICAgICAgKEpTQzo6U3BhcnNlQXJyYXlWYWx1ZU1h
cDo6cHV0RW50cnkpOgorICAgICAgICAoSlNDOjpTcGFyc2VBcnJheVZhbHVlTWFwOjpwdXREaXJl
Y3QpOgorICAgICAgICAoSlNDOjpTcGFyc2VBcnJheUVudHJ5OjpwdXQpOgorICAgICAgICAqIHJ1
bnRpbWUvU3RyaW5nT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6U3RyaW5nT2JqZWN0OjpwdXQp
OgorICAgICAgICAoSlNDOjpTdHJpbmdPYmplY3Q6OnB1dEJ5SW5kZXgpOgorICAgICAgICAqIHJ1
bnRpbWUvVHlwZUVycm9yLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlamVjdC5oLgorICAgICAgICAoSlNDOjp0eXBlRXJyb3IpOgorICAgICAgICAoSlNDOjpy
ZWplY3QpOiBEZWxldGVkLgorCiAyMDE2LTEwLTI1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBs
ZS5jb20+CiAKICAgICAgICAgSGVhcFRpbWVyIHNob3VsZCBub3QgaGFyZGNvZGUgYWxsIG9mIGl0
cyBzdWJjbGFzc2VzIGFuZCBVU0UoQ0YpIHNob3VsZG4ndCBiZSBhIGJpemFycmUgc3BlY2lhbCBj
YXNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjA3ODUxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTY0MCw3ICs2NDAsNyBAQAogCQkwRkI3RjM5QTE1
RUQ4RTQ2MDBGMTY3QjIgLyogSW5kZXhpbmdIZWFkZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkI3RjM4RTE1RUQ4RTM4MDBGMTY3QjIg
LyogSW5kZXhpbmdIZWFkZXJJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZCN0YzOUIxNUVEOEU0NjAwRjE2N0IyIC8qIEluZGV4aW5n
VHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZC
N0YzOEYxNUVEOEUzODAwRjE2N0IyIC8qIEluZGV4aW5nVHlwZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGQjdGMzlDMTVFRDhFNDYwMEYxNjdC
MiAvKiBQcm9wZXJ0eVN0b3JhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGQjdGMzkwMTVFRDhFMzgwMEYxNjdCMiAvKiBQcm9wZXJ0eVN0b3JhZ2Uu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkwRkI3
RjM5RDE1RUQ4RTQ2MDBGMTY3QjIgLyogUmVqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkI3RjM5MTE1RUQ4RTM4MDBGMTY3QjIgLyogUmVqZWN0
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZC
N0YzOUQxNUVEOEU0NjAwRjE2N0IyIC8qIFR5cGVFcnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCN0YzOTExNUVEOEUzODAwRjE2N0IyIC8qIFR5
cGVFcnJvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTBGQjdGMzlFMTVFRDhFNDYwMEYxNjdCMiAvKiBTcGFyc2VBcnJheVZhbHVlTWFwLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkI3RjM5MjE1RUQ4
RTM4MDBGMTY3QjIgLyogU3BhcnNlQXJyYXlWYWx1ZU1hcC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGQkMwQUU3MTQ5NkM3QzQwMEQ0RkJERCAv
KiBERkdFeGl0UHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRkJDMEFFNDE0OTZDN0MxMDBENEZCREQgLyogREZHRXhpdFByb2ZpbGUuY3Bw
ICovOyB9OwogCQkwRkJDMEFFODE0OTZDN0M3MDBENEZCREQgLyogREZHRXhpdFByb2ZpbGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQkMwQUU1MTQ5
NkM3QzEwMEQ0RkJERCAvKiBERkdFeGl0UHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yOTg0LDcgKzI5ODQsNyBAQAogCQkwRkI3RjM4
RTE1RUQ4RTM4MDBGMTY3QjIgLyogSW5kZXhpbmdIZWFkZXJJbmxpbmVzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluZGV4aW5nSGVhZGVySW5saW5lcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRkI3RjM4RjE1RUQ4RTM4MDBGMTY3QjIgLyogSW5kZXhpbmdU
eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluZGV4aW5nVHlwZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkI3RjM5MDE1RUQ4RTM4MDBGMTY3QjIgLyog
UHJvcGVydHlTdG9yYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb3Bl
cnR5U3RvcmFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRkI3RjM5MTE1RUQ4
RTM4MDBGMTY3QjIgLyogUmVqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkI3RjM5MTE1RUQ4RTM4
MDBGMTY3QjIgLyogVHlwZUVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFR5cGVFcnJvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkI3RjM5MjE1RUQ4
RTM4MDBGMTY3QjIgLyogU3BhcnNlQXJyYXlWYWx1ZU1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTcGFyc2VBcnJheVZhbHVlTWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGQkMwQUU0MTQ5NkM3QzEwMEQ0RkJERCAvKiBERkdFeGl0UHJvZmlsZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBERkdFeGl0UHJvZmlsZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQkMwQUU1MTQ5NkM3QzEwMEQ0RkJERCAv
KiBERkdFeGl0UHJvZmlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBERkdF
eGl0UHJvZmlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjM1MCw3ICs2MzUw
LDcgQEAKIAkJCQkwRjdDMzlGQzFDOEY2NTk1MDA0ODAxNTEgLyogUmVnRXhwT2JqZWN0SW5saW5l
cy5oICovLAogCQkJCUJDRDIwMkJGMEUxNzA2QTcwMDJDN0U4MiAvKiBSZWdFeHBQcm90b3R5cGUu
Y3BwICovLAogCQkJCUJDRDIwMkMwMEUxNzA2QTcwMDJDN0U4MiAvKiBSZWdFeHBQcm90b3R5cGUu
aCAqLywKLQkJCQkwRkI3RjM5MTE1RUQ4RTM4MDBGMTY3QjIgLyogUmVqZWN0LmggKi8sCisJCQkJ
MEZCN0YzOTExNUVEOEUzODAwRjE2N0IyIC8qIFR5cGVFcnJvci5oICovLAogCQkJCTcwQjBBOUQw
MUE5QjY2MjAwMDAxMzA2QSAvKiBSdW50aW1lRmxhZ3MuaCAqLywKIAkJCQk1Mjc3NzNERDFBQUY4
M0FDMDBCREU3RTggLyogUnVudGltZVR5cGUuY3BwICovLAogCQkJCTUyQzA2MTFEMUFBNTFFMUIw
MEI0QURCQSAvKiBSdW50aW1lVHlwZS5oICovLApAQCAtODU0NSw3ICs4NTQ1LDcgQEAKIAkJCQk2
MjNBMzdFQzFCODdBN0MwMDA3NTQyMDkgLyogUmVnaXN0ZXJNYXAuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGQzMxNDEyMTgxNDU1OTEwMDAzMzIzMiAvKiBSZWdpc3RlclNldC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTU3RDIzRUUxODkxQjU1NDAwMzFDN0ZBIC8qIFJlZ3VsYXJFeHByZXNzaW9uLmgg
aW4gSGVhZGVycyAqLywKLQkJCQkwRkI3RjM5RDE1RUQ4RTQ2MDBGMTY3QjIgLyogUmVqZWN0Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQkwRkI3RjM5RDE1RUQ4RTQ2MDBGMTY3QjIgLyogVHlwZUVycm9y
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUJBMTVFODE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3Rl
SW5zcGVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUJBMTVFQTE4MjM0MEI0MDBBODJFNjkg
LyogUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUJBMTVG
MDE4MjM0NUFGMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdGlvblRhcmdldC5oIGluIEhlYWRlcnMg
Ki8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRl
ci5jcHAJKHJldmlzaW9uIDIwNzg1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0dldHRlclNldHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk0LDcgKzk0LDcgQEAgYm9vbCBj
YWxsU2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZQogICAgIEdldHRlclNldHRlciogZ2V0
dGVyU2V0dGVyT2JqID0ganNDYXN0PEdldHRlclNldHRlcio+KGdldHRlclNldHRlcik7CiAKICAg
ICBpZiAoZ2V0dGVyU2V0dGVyT2JqLT5pc1NldHRlck51bGwoKSkKLSAgICAgICAgcmV0dXJuIHJl
amVjdChleGVjLCBzY29wZSwgZWNtYU1vZGUgPT0gU3RyaWN0TW9kZSwgQVNDSUlMaXRlcmFsKFJl
YWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7CisgICAgICAgIHJldHVybiB0eXBlRXJyb3IoZXhl
Yywgc2NvcGUsIGVjbWFNb2RlID09IFN0cmljdE1vZGUsIEFTQ0lJTGl0ZXJhbChSZWFkb25seVBy
b3BlcnR5V3JpdGVFcnJvcikpOwogCiAgICAgSlNPYmplY3QqIHNldHRlciA9IGdldHRlclNldHRl
ck9iai0+c2V0dGVyKCk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyYXkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyYXkuY3BwCShyZXZpc2lvbiAyMDc4NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1
ZGUgIkpTQXJyYXlJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUg
IlByb3BlcnR5TmFtZUFycmF5LmgiCi0jaW5jbHVkZSAiUmVqZWN0LmgiCisjaW5jbHVkZSAiVHlw
ZUVycm9yLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KIAogdXNpbmcgbmFtZXNwYWNl
IHN0ZDsKQEAgLTEzMywxOCArMTMzLDE4IEBAIGJvb2wgSlNBcnJheTo6ZGVmaW5lT3duUHJvcGVy
dHkoSlNPYmplY3QKICAgICAgICAgLy8gQWxsIHBhdGhzIHRocm91Z2ggbGVuZ3RoIGRlZmluaXRp
b24gY2FsbCB0aGUgZGVmYXVsdCBbW0RlZmluZU93blByb3BlcnR5XV0sIGhlbmNlOgogICAgICAg
ICAvLyBmcm9tIEVTNS4xIDguMTIuOSA3LmEuCiAgICAgICAgIGlmIChkZXNjcmlwdG9yLmNvbmZp
Z3VyYWJsZVByZXNlbnQoKSAmJiBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSgpKQotICAgICAgICAg
ICAgcmV0dXJuIHJlamVjdChleGVjLCBzY29wZSwgdGhyb3dFeGNlcHRpb24sIEFTQ0lJTGl0ZXJh
bChVbmNvbmZpZ3VyYWJsZVByb3BlcnR5Q2hhbmdlQ29uZmlndXJhYmlsaXR5RXJyb3IpKTsKKyAg
ICAgICAgICAgIHJldHVybiB0eXBlRXJyb3IoZXhlYywgc2NvcGUsIHRocm93RXhjZXB0aW9uLCBB
U0NJSUxpdGVyYWwoVW5jb25maWd1cmFibGVQcm9wZXJ0eUNoYW5nZUNvbmZpZ3VyYWJpbGl0eUVy
cm9yKSk7CiAgICAgICAgIC8vIGZyb20gRVM1LjEgOC4xMi45IDcuYi4KICAgICAgICAgaWYgKGRl
c2NyaXB0b3IuZW51bWVyYWJsZVByZXNlbnQoKSAmJiBkZXNjcmlwdG9yLmVudW1lcmFibGUoKSkK
LSAgICAgICAgICAgIHJldHVybiByZWplY3QoZXhlYywgc2NvcGUsIHRocm93RXhjZXB0aW9uLCBB
U0NJSUxpdGVyYWwoVW5jb25maWd1cmFibGVQcm9wZXJ0eUNoYW5nZUVudW1lcmFiaWxpdHlFcnJv
cikpOworICAgICAgICAgICAgcmV0dXJuIHR5cGVFcnJvcihleGVjLCBzY29wZSwgdGhyb3dFeGNl
cHRpb24sIEFTQ0lJTGl0ZXJhbChVbmNvbmZpZ3VyYWJsZVByb3BlcnR5Q2hhbmdlRW51bWVyYWJp
bGl0eUVycm9yKSk7CiAKICAgICAgICAgLy8gYS4gSWYgdGhlIFtbVmFsdWVdXSBmaWVsZCBvZiBE
ZXNjIGlzIGFic2VudCwgdGhlbgogICAgICAgICAvLyBhLmkuIFJldHVybiB0aGUgcmVzdWx0IG9m
IGNhbGxpbmcgdGhlIGRlZmF1bHQgW1tEZWZpbmVPd25Qcm9wZXJ0eV1dIGludGVybmFsIG1ldGhv
ZCAoOC4xMi45KSBvbiBBIHBhc3NpbmcgImxlbmd0aCIsIERlc2MsIGFuZCBUaHJvdyBhcyBhcmd1
bWVudHMuCiAgICAgICAgIGlmIChkZXNjcmlwdG9yLmlzQWNjZXNzb3JEZXNjcmlwdG9yKCkpCi0g
ICAgICAgICAgICByZXR1cm4gcmVqZWN0KGV4ZWMsIHNjb3BlLCB0aHJvd0V4Y2VwdGlvbiwgQVND
SUlMaXRlcmFsKFVuY29uZmlndXJhYmxlUHJvcGVydHlDaGFuZ2VBY2Nlc3NNZWNoYW5pc21FcnJv
cikpOworICAgICAgICAgICAgcmV0dXJuIHR5cGVFcnJvcihleGVjLCBzY29wZSwgdGhyb3dFeGNl
cHRpb24sIEFTQ0lJTGl0ZXJhbChVbmNvbmZpZ3VyYWJsZVByb3BlcnR5Q2hhbmdlQWNjZXNzTWVj
aGFuaXNtRXJyb3IpKTsKICAgICAgICAgLy8gZnJvbSBFUzUuMSA4LjEyLjkgMTAuYS4KICAgICAg
ICAgaWYgKCFhcnJheS0+aXNMZW5ndGhXcml0YWJsZSgpICYmIGRlc2NyaXB0b3Iud3JpdGFibGVQ
cmVzZW50KCkgJiYgZGVzY3JpcHRvci53cml0YWJsZSgpKQotICAgICAgICAgICAgcmV0dXJuIHJl
amVjdChleGVjLCBzY29wZSwgdGhyb3dFeGNlcHRpb24sIEFTQ0lJTGl0ZXJhbChVbmNvbmZpZ3Vy
YWJsZVByb3BlcnR5Q2hhbmdlV3JpdGFiaWxpdHlFcnJvcikpOworICAgICAgICAgICAgcmV0dXJu
IHR5cGVFcnJvcihleGVjLCBzY29wZSwgdGhyb3dFeGNlcHRpb24sIEFTQ0lJTGl0ZXJhbChVbmNv
bmZpZ3VyYWJsZVByb3BlcnR5Q2hhbmdlV3JpdGFiaWxpdHlFcnJvcikpOwogICAgICAgICAvLyBU
aGlzIGRlc2NyaXB0b3IgaXMgZWl0aGVyIGp1c3QgbWFraW5nIGxlbmd0aCByZWFkLW9ubHksIG9y
IGNoYW5naW5nIG5vdGhpbmchCiAgICAgICAgIGlmICghZGVzY3JpcHRvci52YWx1ZSgpKSB7CiAg
ICAgICAgICAgICBpZiAoZGVzY3JpcHRvci53cml0YWJsZVByZXNlbnQoKSkKQEAgLTE3NCw3ICsx
NzQsNyBAQCBib29sIEpTQXJyYXk6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0CiAgICAgICAg
IC8vIGYuaS4gUmV0dXJuIHRoZSByZXN1bHQgb2YgY2FsbGluZyB0aGUgZGVmYXVsdCBbW0RlZmlu
ZU93blByb3BlcnR5XV0gaW50ZXJuYWwgbWV0aG9kICg4LjEyLjkpIG9uIEEgcGFzc2luZyAibGVu
Z3RoIiwgbmV3TGVuRGVzYywgYW5kIFRocm93IGFzIGFyZ3VtZW50cy4KICAgICAgICAgLy8gZy4g
UmVqZWN0IGlmIG9sZExlbkRlc2MuW1tXcml0YWJsZV1dIGlzIGZhbHNlLgogICAgICAgICBpZiAo
IWFycmF5LT5pc0xlbmd0aFdyaXRhYmxlKCkpCi0gICAgICAgICAgICByZXR1cm4gcmVqZWN0KGV4
ZWMsIHNjb3BlLCB0aHJvd0V4Y2VwdGlvbiwgQVNDSUlMaXRlcmFsKFJlYWRvbmx5UHJvcGVydHlD
aGFuZ2VFcnJvcikpOworICAgICAgICAgICAgcmV0dXJuIHR5cGVFcnJvcihleGVjLCBzY29wZSwg
dGhyb3dFeGNlcHRpb24sIEFTQ0lJTGl0ZXJhbChSZWFkb25seVByb3BlcnR5Q2hhbmdlRXJyb3Ip
KTsKICAgICAgICAgCiAgICAgICAgIC8vIGguIElmIG5ld0xlbkRlc2MuW1tXcml0YWJsZV1dIGlz
IGFic2VudCBvciBoYXMgdGhlIHZhbHVlIHRydWUsIGxldCBuZXdXcml0YWJsZSBiZSB0cnVlLgog
ICAgICAgICAvLyBpLiBFbHNlLApAQCAtMjE0LDcgKzIxNCw3IEBAIGJvb2wgSlNBcnJheTo6ZGVm
aW5lT3duUHJvcGVydHkoSlNPYmplY3QKICAgICAgICAgdWludDMyX3QgaW5kZXggPSBvcHRpb25h
bEluZGV4LnZhbHVlKCk7CiAgICAgICAgIC8vIEZJWE1FOiBOb3RoaW5nIHByZXZlbnRzIHRoaXMg
ZnJvbSBiZWluZyBjYWxsZWQgb24gYSBSdW50aW1lQXJyYXksIGFuZCB0aGUgbGVuZ3RoIGZ1bmN0
aW9uIHdpbGwgYWx3YXlzIHJldHVybiAwIGluIHRoYXQgY2FzZS4KICAgICAgICAgaWYgKGluZGV4
ID49IGFycmF5LT5sZW5ndGgoKSAmJiAhYXJyYXktPmlzTGVuZ3RoV3JpdGFibGUoKSkKLSAgICAg
ICAgICAgIHJldHVybiByZWplY3QoZXhlYywgc2NvcGUsIHRocm93RXhjZXB0aW9uLCBBU0NJSUxp
dGVyYWwoIkF0dGVtcHRpbmcgdG8gZGVmaW5lIG51bWVyaWMgcHJvcGVydHkgb24gYXJyYXkgd2l0
aCBub24td3JpdGFibGUgbGVuZ3RoIHByb3BlcnR5LiIpKTsKKyAgICAgICAgICAgIHJldHVybiB0
eXBlRXJyb3IoZXhlYywgc2NvcGUsIHRocm93RXhjZXB0aW9uLCBBU0NJSUxpdGVyYWwoIkF0dGVt
cHRpbmcgdG8gZGVmaW5lIG51bWVyaWMgcHJvcGVydHkgb24gYXJyYXkgd2l0aCBub24td3JpdGFi
bGUgbGVuZ3RoIHByb3BlcnR5LiIpKTsKICAgICAgICAgLy8gYy4gTGV0IHN1Y2NlZWRlZCBiZSB0
aGUgcmVzdWx0IG9mIGNhbGxpbmcgdGhlIGRlZmF1bHQgW1tEZWZpbmVPd25Qcm9wZXJ0eV1dIGlu
dGVybmFsIG1ldGhvZCAoOC4xMi45KSBvbiBBIHBhc3NpbmcgUCwgRGVzYywgYW5kIGZhbHNlIGFz
IGFyZ3VtZW50cy4KICAgICAgICAgLy8gZC4gUmVqZWN0IGlmIHN1Y2NlZWRlZCBpcyBmYWxzZS4K
ICAgICAgICAgLy8gZS4gSWYgaW5kZXggPj0gb2xkTGVuCkBAIC00MDksNyArNDA5LDcgQEAgYm9v
bCBKU0FycmF5OjpzZXRMZW5ndGhXaXRoQXJyYXlTdG9yYWdlKAogICAgIGlmIChTcGFyc2VBcnJh
eVZhbHVlTWFwKiBtYXAgPSBzdG9yYWdlLT5tX3NwYXJzZU1hcC5nZXQoKSkgewogICAgICAgICAv
LyBGYWlsIGlmIHRoZSBsZW5ndGggaXMgbm90IHdyaXRhYmxlLgogICAgICAgICBpZiAobWFwLT5s
ZW5ndGhJc1JlYWRPbmx5KCkpCi0gICAgICAgICAgICByZXR1cm4gcmVqZWN0KGV4ZWMsIHNjb3Bl
LCB0aHJvd0V4Y2VwdGlvbiwgQVNDSUlMaXRlcmFsKFJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9y
KSk7CisgICAgICAgICAgICByZXR1cm4gdHlwZUVycm9yKGV4ZWMsIHNjb3BlLCB0aHJvd0V4Y2Vw
dGlvbiwgQVNDSUlMaXRlcmFsKFJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7CiAKICAgICAg
ICAgaWYgKG5ld0xlbmd0aCA8IGxlbmd0aCkgewogICAgICAgICAgICAgLy8gQ29weSBhbnkga2V5
cyB3ZSBtaWdodCBiZSBpbnRlcmVzdGVkIGluIGludG8gYSB2ZWN0b3IuCkBAIC00MzQsNyArNDM0
LDcgQEAgYm9vbCBKU0FycmF5OjpzZXRMZW5ndGhXaXRoQXJyYXlTdG9yYWdlKAogICAgICAgICAg
ICAgICAgICAgICBBU1NFUlQoaXQgIT0gbWFwLT5ub3RGb3VuZCgpKTsKICAgICAgICAgICAgICAg
ICAgICAgaWYgKGl0LT52YWx1ZS5hdHRyaWJ1dGVzICYgRG9udERlbGV0ZSkgewogICAgICAgICAg
ICAgICAgICAgICAgICAgc3RvcmFnZS0+c2V0TGVuZ3RoKGluZGV4ICsgMSk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KGV4ZWMsIHNjb3BlLCB0aHJvd0V4Y2VwdGlvbiwg
QVNDSUlMaXRlcmFsKFVuYWJsZVRvRGVsZXRlUHJvcGVydHlFcnJvcikpOworICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHR5cGVFcnJvcihleGVjLCBzY29wZSwgdGhyb3dFeGNlcHRpb24s
IEFTQ0lJTGl0ZXJhbChVbmFibGVUb0RlbGV0ZVByb3BlcnR5RXJyb3IpKTsKICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBtYXAtPnJlbW92ZShpdCk7CiAgICAgICAg
ICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1
ZmZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
cnJheUJ1ZmZlci5jcHAJKHJldmlzaW9uIDIwNzg1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXlCdWZmZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3
IEBACiAjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlci5oIgogCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5o
IgotI2luY2x1ZGUgIlJlamVjdC5oIgorI2luY2x1ZGUgIlR5cGVFcnJvci5oIgogCiBuYW1lc3Bh
Y2UgSlNDIHsKIApAQCAtOTgsNyArOTgsNyBAQCBib29sIEpTQXJyYXlCdWZmZXI6OnB1dCgKICAg
ICAgICAgcmV0dXJuIG9yZGluYXJ5U2V0U2xvdyhleGVjLCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIHZhbHVlLCBzbG90LnRoaXNWYWx1ZSgpLCBzbG90LmlzU3RyaWN0TW9kZSgpKTsKICAgICAK
ICAgICBpZiAocHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPmJ5dGVMZW5ndGgpCi0g
ICAgICAgIHJldHVybiByZWplY3QoZXhlYywgc2NvcGUsIHNsb3QuaXNTdHJpY3RNb2RlKCksIEFT
Q0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byB3cml0ZSB0byBhIHJlYWQtb25seSBhcnJheSBidWZm
ZXIgcHJvcGVydHkuIikpOworICAgICAgICByZXR1cm4gdHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBz
bG90LmlzU3RyaWN0TW9kZSgpLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gd3JpdGUgdG8g
YSByZWFkLW9ubHkgYXJyYXkgYnVmZmVyIHByb3BlcnR5LiIpKTsKICAgICAKICAgICByZXR1cm4g
QmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwog
fQpAQCAtMTEyLDcgKzExMiw3IEBAIGJvb2wgSlNBcnJheUJ1ZmZlcjo6ZGVmaW5lT3duUHJvcGVy
dHkoCiAgICAgSlNBcnJheUJ1ZmZlciogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0FycmF5QnVmZmVy
Kj4ob2JqZWN0KTsKICAgICAKICAgICBpZiAocHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFt
ZXMtPmJ5dGVMZW5ndGgpCi0gICAgICAgIHJldHVybiByZWplY3QoZXhlYywgc2NvcGUsIHNob3Vs
ZFRocm93LCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gZGVmaW5lIHJlYWQtb25seSBhcnJh
eSBidWZmZXIgcHJvcGVydHkuIikpOworICAgICAgICByZXR1cm4gdHlwZUVycm9yKGV4ZWMsIHNj
b3BlLCBzaG91bGRUaHJvdywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGRlZmluZSByZWFk
LW9ubHkgYXJyYXkgYnVmZmVyIHByb3BlcnR5LiIpKTsKICAgICAKICAgICByZXR1cm4gQmFzZTo6
ZGVmaW5lT3duUHJvcGVydHkodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlw
dG9yLCBzaG91bGRUaHJvdyk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5QnVmZmVyVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwCShyZXZpc2lvbiAyMDc4NTEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXIuaCIK
ICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCi0jaW5jbHVkZSAiUmVqZWN0LmgiCisjaW5jbHVkZSAi
VHlwZUVycm9yLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAkocmV2aXNpb24gMjA3ODUxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE2Miw3ICsxNjIsNyBAQCBib29sIEpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlKEV4ZWNTdGF0
ZSogCiAgICAgICAgIGZvciAoOyAhb2JqLT5zdHJ1Y3R1cmUoKS0+aGFzUmVhZE9ubHlPckdldHRl
clNldHRlclByb3BlcnRpZXNFeGNsdWRpbmdQcm90bygpOyBvYmogPSBhc09iamVjdChwcm90b3R5
cGUpKSB7CiAgICAgICAgICAgICBwcm90b3R5cGUgPSBvYmotPmdldFByb3RvdHlwZURpcmVjdCgp
OwogICAgICAgICAgICAgaWYgKHByb3RvdHlwZS5pc051bGwoKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gcmVqZWN0KGV4ZWMsIHNjb3BlLCBzbG90LmlzU3RyaWN0TW9kZSgpLCBBU0NJSUxpdGVy
YWwoUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
dHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBzbG90LmlzU3RyaWN0TW9kZSgpLCBBU0NJSUxpdGVyYWwo
UmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTcx
LDcgKzE3MSw3IEBAIGJvb2wgSlNWYWx1ZTo6cHV0VG9QcmltaXRpdmUoRXhlY1N0YXRlKiAKICAg
ICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gb2JqLT5zdHJ1Y3R1cmUoKS0+Z2V0KHZtLCBw
cm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMpOwogICAgICAgICBpZiAob2Zmc2V0ICE9IGludmFsaWRP
ZmZzZXQpIHsKICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVzICYgUmVhZE9ubHkpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIHJlamVjdChleGVjLCBzY29wZSwgc2xvdC5pc1N0cmljdE1vZGUoKSwg
QVNDSUlMaXRlcmFsKFJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHR5cGVFcnJvcihleGVjLCBzY29wZSwgc2xvdC5pc1N0cmljdE1vZGUoKSwgQVND
SUlMaXRlcmFsKFJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7CiAKICAgICAgICAgICAgIEpT
VmFsdWUgZ3MgPSBvYmotPmdldERpcmVjdChvZmZzZXQpOwogICAgICAgICAgICAgaWYgKGdzLmlz
R2V0dGVyU2V0dGVyKCkpCkBAIC0xOTEsNyArMTkxLDcgQEAgYm9vbCBKU1ZhbHVlOjpwdXRUb1By
aW1pdGl2ZShFeGVjU3RhdGUqIAogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIAotICAg
IHJldHVybiByZWplY3QoZXhlYywgc2NvcGUsIHNsb3QuaXNTdHJpY3RNb2RlKCksIEFTQ0lJTGl0
ZXJhbChSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOworICAgIHJldHVybiB0eXBlRXJyb3Io
ZXhlYywgc2NvcGUsIHNsb3QuaXNTdHJpY3RNb2RlKCksIEFTQ0lJTGl0ZXJhbChSZWFkb25seVBy
b3BlcnR5V3JpdGVFcnJvcikpOwogfQogCiBib29sIEpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlQnlJ
bmRleChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgYm9vbCBzaG91bGRUaHJvdykKQEAgLTIxMyw3ICsyMTMsNyBAQCBib29sIEpTVmFsdWU6OnB1
dFRvUHJpbWl0aXZlQnlJbmRleChFeGVjCiAgICAgaWYgKHByb3RvdHlwZS0+YXR0ZW1wdFRvSW50
ZXJjZXB0UHV0QnlJbmRleE9uSG9sZUZvclByb3RvdHlwZShleGVjLCAqdGhpcywgcHJvcGVydHlO
YW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3csIHB1dFJlc3VsdCkpCiAgICAgICAgIHJldHVybiBwdXRS
ZXN1bHQ7CiAgICAgCi0gICAgcmV0dXJuIHJlamVjdChleGVjLCBzY29wZSwgc2hvdWxkVGhyb3cs
IEFTQ0lJTGl0ZXJhbChSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOworICAgIHJldHVybiB0
eXBlRXJyb3IoZXhlYywgc2NvcGUsIHNob3VsZFRocm93LCBBU0NJSUxpdGVyYWwoUmVhZG9ubHlQ
cm9wZXJ0eVdyaXRlRXJyb3IpKTsKIH0KIAogdm9pZCBKU1ZhbHVlOjpkdW1wKFByaW50U3RyZWFt
JiBvdXQpIGNvbnN0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFW
aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Rh
dGFWaWV3LmNwcAkocmV2aXNpb24gMjA3ODUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNEYXRhVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKICNp
bmNsdWRlICJEYXRhVmlldy5oIgogI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiSlNDSW5s
aW5lcy5oIgotI2luY2x1ZGUgIlJlamVjdC5oIgorI2luY2x1ZGUgIlR5cGVFcnJvci5oIgogCiBu
YW1lc3BhY2UgSlNDIHsKIApAQCAtMTI2LDcgKzEyNiw3IEBAIGJvb2wgSlNEYXRhVmlldzo6cHV0
KAogCiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5ieXRlTGVuZ3Ro
CiAgICAgICAgIHx8IHByb3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5ieXRlT2Zmc2V0
KQotICAgICAgICByZXR1cm4gcmVqZWN0KGV4ZWMsIHNjb3BlLCBzbG90LmlzU3RyaWN0TW9kZSgp
LCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gd3JpdGUgdG8gcmVhZC1vbmx5IHR5cGVkIGFy
cmF5IHByb3BlcnR5LiIpKTsKKyAgICAgICAgcmV0dXJuIHR5cGVFcnJvcihleGVjLCBzY29wZSwg
c2xvdC5pc1N0cmljdE1vZGUoKSwgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIHdyaXRlIHRv
IHJlYWQtb25seSB0eXBlZCBhcnJheSBwcm9wZXJ0eS4iKSk7CiAKICAgICByZXR1cm4gQmFzZTo6
cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQpAQCAt
MTQwLDcgKzE0MCw3IEBAIGJvb2wgSlNEYXRhVmlldzo6ZGVmaW5lT3duUHJvcGVydHkoCiAgICAg
SlNEYXRhVmlldyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RhdGFWaWV3Kj4ob2JqZWN0KTsKICAg
ICBpZiAocHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPmJ5dGVMZW5ndGgKICAgICAg
ICAgfHwgcHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPmJ5dGVPZmZzZXQpCi0gICAg
ICAgIHJldHVybiByZWplY3QoZXhlYywgc2NvcGUsIHNob3VsZFRocm93LCBBU0NJSUxpdGVyYWwo
IkF0dGVtcHRpbmcgdG8gZGVmaW5lIHJlYWQtb25seSB0eXBlZCBhcnJheSBwcm9wZXJ0eS4iKSk7
CisgICAgICAgIHJldHVybiB0eXBlRXJyb3IoZXhlYywgc2NvcGUsIHNob3VsZFRocm93LCBBU0NJ
SUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gZGVmaW5lIHJlYWQtb25seSB0eXBlZCBhcnJheSBwcm9w
ZXJ0eS4iKSk7CiAKICAgICByZXR1cm4gQmFzZTo6ZGVmaW5lT3duUHJvcGVydHkodGhpc09iamVj
dCwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBzaG91bGRUaHJvdyk7CiB9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAkocmV2aXNp
b24gMjA3ODUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1Niw3ICs0NTYsNyBAQCBib29sIEpTRnVuY3Rpb246OnB1
dChKU0NlbGwqIGNlbGwsIEV4ZWNTCiAgICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAg
ICAgICAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwg
dmFsdWUsIHNsb3QpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiByZWplY3QoZXhlYywgc2Nv
cGUsIHNsb3QuaXNTdHJpY3RNb2RlKCksIEFTQ0lJTGl0ZXJhbChSZWFkb25seVByb3BlcnR5V3Jp
dGVFcnJvcikpOworICAgICAgICByZXR1cm4gdHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBzbG90Lmlz
U3RyaWN0TW9kZSgpLCBBU0NJSUxpdGVyYWwoUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsK
ICAgICB9CiAgICAgdGhpc09iamVjdC0+cmVpZnlMYXp5UHJvcGVydHlJZk5lZWRlZCh2bSwgZXhl
YywgcHJvcGVydHlOYW1lKTsKICAgICBzY29wZS5yZWxlYXNlKCk7CkBAIC01MzcsMTUgKzUzNywx
NSBAQCBib29sIEpTRnVuY3Rpb246OmRlZmluZU93blByb3BlcnR5KEpTT2JqCiAgICAgfQogICAg
ICAKICAgICBpZiAoZGVzY3JpcHRvci5jb25maWd1cmFibGVQcmVzZW50KCkgJiYgZGVzY3JpcHRv
ci5jb25maWd1cmFibGUoKSkKLSAgICAgICAgcmV0dXJuIHJlamVjdChleGVjLCBzY29wZSwgdGhy
b3dFeGNlcHRpb24sIEFTQ0lJTGl0ZXJhbChVbmNvbmZpZ3VyYWJsZVByb3BlcnR5Q2hhbmdlQ29u
ZmlndXJhYmlsaXR5RXJyb3IpKTsKKyAgICAgICAgcmV0dXJuIHR5cGVFcnJvcihleGVjLCBzY29w
ZSwgdGhyb3dFeGNlcHRpb24sIEFTQ0lJTGl0ZXJhbChVbmNvbmZpZ3VyYWJsZVByb3BlcnR5Q2hh
bmdlQ29uZmlndXJhYmlsaXR5RXJyb3IpKTsKICAgICBpZiAoZGVzY3JpcHRvci5lbnVtZXJhYmxl
UHJlc2VudCgpICYmIGRlc2NyaXB0b3IuZW51bWVyYWJsZSgpKQotICAgICAgICByZXR1cm4gcmVq
ZWN0KGV4ZWMsIHNjb3BlLCB0aHJvd0V4Y2VwdGlvbiwgQVNDSUlMaXRlcmFsKFVuY29uZmlndXJh
YmxlUHJvcGVydHlDaGFuZ2VFbnVtZXJhYmlsaXR5RXJyb3IpKTsKKyAgICAgICAgcmV0dXJuIHR5
cGVFcnJvcihleGVjLCBzY29wZSwgdGhyb3dFeGNlcHRpb24sIEFTQ0lJTGl0ZXJhbChVbmNvbmZp
Z3VyYWJsZVByb3BlcnR5Q2hhbmdlRW51bWVyYWJpbGl0eUVycm9yKSk7CiAgICAgaWYgKGRlc2Ny
aXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSkKLSAgICAgICAgcmV0dXJuIHJlamVjdChleGVj
LCBzY29wZSwgdGhyb3dFeGNlcHRpb24sIEFTQ0lJTGl0ZXJhbChVbmNvbmZpZ3VyYWJsZVByb3Bl
cnR5Q2hhbmdlQWNjZXNzTWVjaGFuaXNtRXJyb3IpKTsKKyAgICAgICAgcmV0dXJuIHR5cGVFcnJv
cihleGVjLCBzY29wZSwgdGhyb3dFeGNlcHRpb24sIEFTQ0lJTGl0ZXJhbChVbmNvbmZpZ3VyYWJs
ZVByb3BlcnR5Q2hhbmdlQWNjZXNzTWVjaGFuaXNtRXJyb3IpKTsKICAgICBpZiAoZGVzY3JpcHRv
ci53cml0YWJsZVByZXNlbnQoKSAmJiBkZXNjcmlwdG9yLndyaXRhYmxlKCkpCi0gICAgICAgIHJl
dHVybiByZWplY3QoZXhlYywgc2NvcGUsIHRocm93RXhjZXB0aW9uLCBBU0NJSUxpdGVyYWwoVW5j
b25maWd1cmFibGVQcm9wZXJ0eUNoYW5nZVdyaXRhYmlsaXR5RXJyb3IpKTsKKyAgICAgICAgcmV0
dXJuIHR5cGVFcnJvcihleGVjLCBzY29wZSwgdGhyb3dFeGNlcHRpb24sIEFTQ0lJTGl0ZXJhbChV
bmNvbmZpZ3VyYWJsZVByb3BlcnR5Q2hhbmdlV3JpdGFiaWxpdHlFcnJvcikpOwogICAgIGlmICgh
dmFsdWVDaGVjaykKLSAgICAgICAgcmV0dXJuIHJlamVjdChleGVjLCBzY29wZSwgdGhyb3dFeGNl
cHRpb24sIEFTQ0lJTGl0ZXJhbChSZWFkb25seVByb3BlcnR5Q2hhbmdlRXJyb3IpKTsKKyAgICAg
ICAgcmV0dXJuIHR5cGVFcnJvcihleGVjLCBzY29wZSwgdGhyb3dFeGNlcHRpb24sIEFTQ0lJTGl0
ZXJhbChSZWFkb25seVByb3BlcnR5Q2hhbmdlRXJyb3IpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXdJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgJKHJldmlzaW9uIDIwNzg1MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5s
aW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiRXhjZXB0
aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXIuaCIKICNpbmNsdWRlICJKU0dl
bmVyaWNUeXBlZEFycmF5Vmlldy5oIgotI2luY2x1ZGUgIlJlamVjdC5oIgorI2luY2x1ZGUgIlR5
cGVFcnJvci5oIgogI2luY2x1ZGUgIlR5cGVkQXJyYXlzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpA
QCAtMzY2LDEzICszNjYsMTMgQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9y
Pjo6ZAogCiAgICAgaWYgKHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgewogICAgICAgICBpZiAo
ZGVzY3JpcHRvci5pc0FjY2Vzc29yRGVzY3JpcHRvcigpKQotICAgICAgICAgICAgcmV0dXJuIHJl
amVjdChleGVjLCBzY29wZSwgc2hvdWxkVGhyb3csIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0
byBzdG9yZSBhY2Nlc3NvciBpbmRleGVkIHByb3BlcnR5IG9uIGEgdHlwZWQgYXJyYXkuIikpOwor
ICAgICAgICAgICAgcmV0dXJuIHR5cGVFcnJvcihleGVjLCBzY29wZSwgc2hvdWxkVGhyb3csIEFT
Q0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBzdG9yZSBhY2Nlc3NvciBpbmRleGVkIHByb3BlcnR5
IG9uIGEgdHlwZWQgYXJyYXkuIikpOwogCiAgICAgICAgIGlmIChkZXNjcmlwdG9yLmNvbmZpZ3Vy
YWJsZSgpKQotICAgICAgICAgICAgcmV0dXJuIHJlamVjdChleGVjLCBzY29wZSwgc2hvdWxkVGhy
b3csIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBjb25maWd1cmUgbm9uLWNvbmZpZ3VyYWJs
ZSBwcm9wZXJ0eS4iKSk7CisgICAgICAgICAgICByZXR1cm4gdHlwZUVycm9yKGV4ZWMsIHNjb3Bl
LCBzaG91bGRUaHJvdywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGNvbmZpZ3VyZSBub24t
Y29uZmlndXJhYmxlIHByb3BlcnR5LiIpKTsKIAogICAgICAgICBpZiAoIWRlc2NyaXB0b3IuZW51
bWVyYWJsZSgpIHx8ICFkZXNjcmlwdG9yLndyaXRhYmxlKCkpCi0gICAgICAgICAgICByZXR1cm4g
cmVqZWN0KGV4ZWMsIHNjb3BlLCBzaG91bGRUaHJvdywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5n
IHRvIHN0b3JlIG5vbi1lbnVtZXJhYmxlIG9yIG5vbi13cml0YWJsZSBpbmRleGVkIHByb3BlcnR5
IG9uIGEgdHlwZWQgYXJyYXkuIikpOworICAgICAgICAgICAgcmV0dXJuIHR5cGVFcnJvcihleGVj
LCBzY29wZSwgc2hvdWxkVGhyb3csIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBzdG9yZSBu
b24tZW51bWVyYWJsZSBvciBub24td3JpdGFibGUgaW5kZXhlZCBwcm9wZXJ0eSBvbiBhIHR5cGVk
IGFycmF5LiIpKTsKIAogICAgICAgICBpZiAoZGVzY3JpcHRvci52YWx1ZSgpKSB7CiAgICAgICAg
ICAgICBQdXRQcm9wZXJ0eVNsb3QgdW51c2VkKEpTVmFsdWUodGhpc09iamVjdCksIHNob3VsZFRo
cm93KTsKQEAgLTM5Myw3ICszOTMsNyBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+OjpkCiAgICAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SlNHZW5lcmljVHlwZWRBcnJheVZpZXcqPihjZWxsKTsKIAogICAgIGlmICh0aGlzT2JqZWN0
LT5pc05ldXRlcmVkKCkpCi0gICAgICAgIHJldHVybiByZWplY3QoZXhlYywgc2NvcGUsIHRydWUs
IEFTQ0lJTGl0ZXJhbCh0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdl
KSk7CisgICAgICAgIHJldHVybiB0eXBlRXJyb3IoZXhlYywgc2NvcGUsIHRydWUsIEFTQ0lJTGl0
ZXJhbCh0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKSk7CiAKICAg
ICBpZiAocGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQogICAgICAgICByZXR1cm4gZmFsc2U7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCShyZXZpc2lv
biAyMDc4NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ1LDggKzQ1LDggQEAKICNpbmNsdWRlICJQcm9wZXJ0eU5hbWVB
cnJheS5oIgogI2luY2x1ZGUgIlByb3RvdHlwZU1hcElubGluZXMuaCIKICNpbmNsdWRlICJQcm94
eU9iamVjdC5oIgotI2luY2x1ZGUgIlJlamVjdC5oIgogI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5s
aW5lcy5oIgorI2luY2x1ZGUgIlR5cGVFcnJvci5oIgogI2luY2x1ZGUgPG1hdGguaD4KICNpbmNs
dWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogCkBAIC0zOTUsMTEgKzM5NSwxMSBAQCBib29sIG9yZGlu
YXJ5U2V0U2xvdyhFeGVjU3RhdGUqIGV4ZWMsIEpTCiAgICAgaWYgKG93bkRlc2NyaXB0b3IuaXNE
YXRhRGVzY3JpcHRvcigpKSB7CiAgICAgICAgIC8vIDkuMS45LjEtNC1hIElmIG93bkRlc2MuW1tX
cml0YWJsZV1dIGlzIGZhbHNlLCByZXR1cm4gZmFsc2UuCiAgICAgICAgIGlmICghb3duRGVzY3Jp
cHRvci53cml0YWJsZSgpKQotICAgICAgICAgICAgcmV0dXJuIHJlamVjdChleGVjLCBzY29wZSwg
c2hvdWxkVGhyb3csIEFTQ0lJTGl0ZXJhbChSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOwor
ICAgICAgICAgICAgcmV0dXJuIHR5cGVFcnJvcihleGVjLCBzY29wZSwgc2hvdWxkVGhyb3csIEFT
Q0lJTGl0ZXJhbChSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOwogCiAgICAgICAgIC8vIDku
MS45LjEtNC1iIElmIFR5cGUoUmVjZWl2ZXIpIGlzIG5vdCBPYmplY3QsIHJldHVybiBmYWxzZS4K
ICAgICAgICAgaWYgKCFyZWNlaXZlci5pc09iamVjdCgpKQotICAgICAgICAgICAgcmV0dXJuIHJl
amVjdChleGVjLCBzY29wZSwgc2hvdWxkVGhyb3csIEFTQ0lJTGl0ZXJhbChSZWFkb25seVByb3Bl
cnR5V3JpdGVFcnJvcikpOworICAgICAgICAgICAgcmV0dXJuIHR5cGVFcnJvcihleGVjLCBzY29w
ZSwgc2hvdWxkVGhyb3csIEFTQ0lJTGl0ZXJhbChSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikp
OwogCiAgICAgICAgIC8vIEluIE9yZGluYXJ5U2V0LCB0aGUgcmVjZWl2ZXIgbWF5IG5vdCBiZSB0
aGUgc2FtZSB0byB0aGUgb2JqZWN0LgogICAgICAgICAvLyBTbywgd2UgcGVyZm9ybSBbW0dldE93
blByb3BlcnR5XV0gb250byB0aGUgcmVjZWl2ZXIgd2hpbGUgd2UgYWxyZWFkeSBwZXJmb3JtIFtb
R2V0T3duUHJvcGVydHldXSBvbnRvIHRoZSBvYmplY3QuCkBAIC00MTQsMTEgKzQxNCwxMSBAQCBi
b29sIG9yZGluYXJ5U2V0U2xvdyhFeGVjU3RhdGUqIGV4ZWMsIEpTCiAgICAgICAgIGlmIChleGlz
dGluZ0Rlc2NyaXB0b3JGb3VuZCkgewogICAgICAgICAgICAgLy8gOS4xLjkuMS00LWQtaSBJZiBJ
c0FjY2Vzc29yRGVzY3JpcHRvcihleGlzdGluZ0Rlc2NyaXB0b3IpIGlzIHRydWUsIHJldHVybiBm
YWxzZS4KICAgICAgICAgICAgIGlmIChleGlzdGluZ0Rlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2Ny
aXB0b3IoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KGV4ZWMsIHNjb3BlLCBzaG91
bGRUaHJvdywgQVNDSUlMaXRlcmFsKFJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIHR5cGVFcnJvcihleGVjLCBzY29wZSwgc2hvdWxkVGhyb3csIEFT
Q0lJTGl0ZXJhbChSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOwogCiAgICAgICAgICAgICAv
LyA5LjEuOS4xLTQtZC1paSBJZiBleGlzdGluZ0Rlc2NyaXB0b3IuW1tXcml0YWJsZV1dIGlzIGZh
bHNlLCByZXR1cm4gZmFsc2UuCiAgICAgICAgICAgICBpZiAoIWV4aXN0aW5nRGVzY3JpcHRvci53
cml0YWJsZSgpKQotICAgICAgICAgICAgICAgIHJldHVybiByZWplY3QoZXhlYywgc2NvcGUsIHNo
b3VsZFRocm93LCBBU0NJSUxpdGVyYWwoUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gdHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBzaG91bGRUaHJvdywg
QVNDSUlMaXRlcmFsKFJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7CiAKICAgICAgICAgICAg
IC8vIDkuMS45LjEtNC1kLWlpaSBMZXQgdmFsdWVEZXNjIGJlIHRoZSBQcm9wZXJ0eURlc2NyaXB0
b3J7W1tWYWx1ZV1dOiBWfS4KICAgICAgICAgICAgIFByb3BlcnR5RGVzY3JpcHRvciB2YWx1ZURl
c2NyaXB0b3I7CkBAIC00NDAsNyArNDQwLDcgQEAgYm9vbCBvcmRpbmFyeVNldFNsb3coRXhlY1N0
YXRlKiBleGVjLCBKUwogICAgIC8vIDkuMS45LjEtNyBJZiBzZXR0ZXIgaXMgdW5kZWZpbmVkLCBy
ZXR1cm4gZmFsc2UuCiAgICAgSlNWYWx1ZSBzZXR0ZXIgPSBvd25EZXNjcmlwdG9yLnNldHRlcigp
OwogICAgIGlmICghc2V0dGVyLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiByZWplY3QoZXhl
Yywgc2NvcGUsIHNob3VsZFRocm93LCBBU0NJSUxpdGVyYWwoUmVhZG9ubHlQcm9wZXJ0eVdyaXRl
RXJyb3IpKTsKKyAgICAgICAgcmV0dXJuIHR5cGVFcnJvcihleGVjLCBzY29wZSwgc2hvdWxkVGhy
b3csIEFTQ0lJTGl0ZXJhbChSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOwogCiAgICAgLy8g
OS4xLjkuMS04IFBlcmZvcm0gPyBDYWxsKHNldHRlciwgUmVjZWl2ZXIsIDw8IFYgPj4pLgogICAg
IEpTT2JqZWN0KiBzZXR0ZXJPYmplY3QgPSBhc09iamVjdChzZXR0ZXIpOwpAQCAtNDc1LDcgKzQ3
NSw3IEBAIGJvb2wgSlNPYmplY3Q6OnB1dElubGluZVNsb3coRXhlY1N0YXRlKiAKICAgICAgICAg
aWYgKGlzVmFsaWRPZmZzZXQob2Zmc2V0KSkgewogICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXMg
JiBSZWFkT25seSkgewogICAgICAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUodm0pLT5wcm90
b3R5cGVDaGFpbk1heUludGVyY2VwdFN0b3JlVG8odm0sIHByb3BlcnR5TmFtZSkgfHwgb2JqID09
IHRoaXMpOwotICAgICAgICAgICAgICAgIHJldHVybiByZWplY3QoZXhlYywgc2NvcGUsIHNsb3Qu
aXNTdHJpY3RNb2RlKCksIEFTQ0lJTGl0ZXJhbChSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikp
OworICAgICAgICAgICAgICAgIHJldHVybiB0eXBlRXJyb3IoZXhlYywgc2NvcGUsIHNsb3QuaXNT
dHJpY3RNb2RlKCksIEFTQ0lJTGl0ZXJhbChSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOwog
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBKU1ZhbHVlIGdzID0gb2JqLT5nZXREaXJlY3Qo
b2Zmc2V0KTsKQEAgLTUyMCw3ICs1MjAsNyBAQCBib29sIEpTT2JqZWN0OjpwdXRJbmxpbmVTbG93
KEV4ZWNTdGF0ZSogCiAKICAgICBBU1NFUlQoIXN0cnVjdHVyZSh2bSktPnByb3RvdHlwZUNoYWlu
TWF5SW50ZXJjZXB0U3RvcmVUbyh2bSwgcHJvcGVydHlOYW1lKSB8fCBvYmogPT0gdGhpcyk7CiAg
ICAgaWYgKCFwdXREaXJlY3RJbnRlcm5hbDxQdXRNb2RlUHV0Pih2bSwgcHJvcGVydHlOYW1lLCB2
YWx1ZSwgMCwgc2xvdCkpCi0gICAgICAgIHJldHVybiByZWplY3QoZXhlYywgc2NvcGUsIHNsb3Qu
aXNTdHJpY3RNb2RlKCksIEFTQ0lJTGl0ZXJhbChSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikp
OworICAgICAgICByZXR1cm4gdHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBzbG90LmlzU3RyaWN0TW9k
ZSgpLCBBU0NJSUxpdGVyYWwoUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIApAQCAtMTMwMywxMiArMTMwMywxMiBAQCBib29sIEpTT2JqZWN0OjpzZXRQ
cm90b3R5cGVXaXRoQ3ljbGVDaGVjCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFs
c2UpOwogCiAgICAgaWYgKCFpc0V4dGVuc2libGUpCi0gICAgICAgIHJldHVybiByZWplY3QoZXhl
Yywgc2NvcGUsIHNob3VsZFRocm93SWZDYW50U2V0LCBBU0NJSUxpdGVyYWwoUmVhZG9ubHlQcm9w
ZXJ0eVdyaXRlRXJyb3IpKTsKKyAgICAgICAgcmV0dXJuIHR5cGVFcnJvcihleGVjLCBzY29wZSwg
c2hvdWxkVGhyb3dJZkNhbnRTZXQsIEFTQ0lJTGl0ZXJhbChSZWFkb25seVByb3BlcnR5V3JpdGVF
cnJvcikpOwogCiAgICAgSlNWYWx1ZSBuZXh0UHJvdG90eXBlID0gcHJvdG90eXBlOwogICAgIHdo
aWxlIChuZXh0UHJvdG90eXBlICYmIG5leHRQcm90b3R5cGUuaXNPYmplY3QoKSkgewogICAgICAg
ICBpZiAobmV4dFByb3RvdHlwZSA9PSB0aGlzKQotICAgICAgICAgICAgcmV0dXJuIHJlamVjdChl
eGVjLCBzY29wZSwgc2hvdWxkVGhyb3dJZkNhbnRTZXQsIEFTQ0lJTGl0ZXJhbCgiY3ljbGljIF9f
cHJvdG9fXyB2YWx1ZSIpKTsKKyAgICAgICAgICAgIHJldHVybiB0eXBlRXJyb3IoZXhlYywgc2Nv
cGUsIHNob3VsZFRocm93SWZDYW50U2V0LCBBU0NJSUxpdGVyYWwoImN5Y2xpYyBfX3Byb3RvX18g
dmFsdWUiKSk7CiAgICAgICAgIC8vIEZJWE1FOiBUaGUgc3BlY2lmaWNhdGlvbiBjdXJyZW50bHkg
c2F5cyB3ZSBzaG91bGQgY2hlY2sgaWYgdGhlIFtbR2V0UHJvdG90eXBlT2ZdXSBpbnRlcm5hbCBt
ZXRob2Qgb2YgbmV4dFByb3RvdHlwZQogICAgICAgICAvLyBpcyBub3QgdGhlIG9yZGluYXJ5IG9i
amVjdCBpbnRlcm5hbCBtZXRob2QuIEhvd2V2ZXIsIHdlIGN1cnJlbnRseSByZXN0cmljdCB0aGlz
IHRvIFByb3h5IG9iamVjdHMgYXMgaXQgd291bGQgYWxsb3cKICAgICAgICAgLy8gZm9yIGN5Y2xl
cyB3aXRoIGNlcnRhaW4gSFRNTCBvYmplY3RzIChXaW5kb3dQcm94eSwgTG9jYXRpb24pIG90aGVy
d2lzZS4KQEAgLTIwMjIsNyArMjAyMiw3IEBAIGJvb2wgSlNPYmplY3Q6OmRlZmluZU93bkluZGV4
ZWRQcm9wZXJ0eSgKICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpIHsKICAgICAgICAgaWYgKCFp
c1N0cnVjdHVyZUV4dGVuc2libGUoKSkgewogICAgICAgICAgICAgbWFwLT5yZW1vdmUocmVzdWx0
Lml0ZXJhdG9yKTsKLSAgICAgICAgICAgIHJldHVybiByZWplY3QoZXhlYywgc2NvcGUsIHRocm93
RXhjZXB0aW9uLCBBU0NJSUxpdGVyYWwoTm9uRXh0ZW5zaWJsZU9iamVjdFByb3BlcnR5RGVmaW5l
RXJyb3IpKTsKKyAgICAgICAgICAgIHJldHVybiB0eXBlRXJyb3IoZXhlYywgc2NvcGUsIHRocm93
RXhjZXB0aW9uLCBBU0NJSUxpdGVyYWwoTm9uRXh0ZW5zaWJsZU9iamVjdFByb3BlcnR5RGVmaW5l
RXJyb3IpKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIDQuYS4gSWYgSXNHZW5lcmljRGVzY3Jp
cHRvcihEZXNjKSBvciBJc0RhdGFEZXNjcmlwdG9yKERlc2MpIGlzIHRydWUsIHRoZW4gY3JlYXRl
IGFuIG93biBkYXRhIHByb3BlcnR5CkBAIC0yMDU4LDEwICsyMDU4LDEwIEBAIGJvb2wgSlNPYmpl
Y3Q6OmRlZmluZU93bkluZGV4ZWRQcm9wZXJ0eSgKICAgICBpZiAoIWN1cnJlbnQuY29uZmlndXJh
YmxlKCkpIHsKICAgICAgICAgLy8gNy5hLiBSZWplY3QsIGlmIHRoZSBbW0NvbmZpZ3VyYWJsZV1d
IGZpZWxkIG9mIERlc2MgaXMgdHJ1ZS4KICAgICAgICAgaWYgKGRlc2NyaXB0b3IuY29uZmlndXJh
YmxlUHJlc2VudCgpICYmIGRlc2NyaXB0b3IuY29uZmlndXJhYmxlKCkpCi0gICAgICAgICAgICBy
ZXR1cm4gcmVqZWN0KGV4ZWMsIHNjb3BlLCB0aHJvd0V4Y2VwdGlvbiwgQVNDSUlMaXRlcmFsKFVu
Y29uZmlndXJhYmxlUHJvcGVydHlDaGFuZ2VDb25maWd1cmFiaWxpdHlFcnJvcikpOworICAgICAg
ICAgICAgcmV0dXJuIHR5cGVFcnJvcihleGVjLCBzY29wZSwgdGhyb3dFeGNlcHRpb24sIEFTQ0lJ
TGl0ZXJhbChVbmNvbmZpZ3VyYWJsZVByb3BlcnR5Q2hhbmdlQ29uZmlndXJhYmlsaXR5RXJyb3Ip
KTsKICAgICAgICAgLy8gNy5iLiBSZWplY3QsIGlmIHRoZSBbW0VudW1lcmFibGVdXSBmaWVsZCBv
ZiBEZXNjIGlzIHByZXNlbnQgYW5kIHRoZSBbW0VudW1lcmFibGVdXSBmaWVsZHMgb2YgY3VycmVu
dCBhbmQgRGVzYyBhcmUgdGhlIEJvb2xlYW4gbmVnYXRpb24gb2YgZWFjaCBvdGhlci4KICAgICAg
ICAgaWYgKGRlc2NyaXB0b3IuZW51bWVyYWJsZVByZXNlbnQoKSAmJiBjdXJyZW50LmVudW1lcmFi
bGUoKSAhPSBkZXNjcmlwdG9yLmVudW1lcmFibGUoKSkKLSAgICAgICAgICAgIHJldHVybiByZWpl
Y3QoZXhlYywgc2NvcGUsIHRocm93RXhjZXB0aW9uLCBBU0NJSUxpdGVyYWwoVW5jb25maWd1cmFi
bGVQcm9wZXJ0eUNoYW5nZUVudW1lcmFiaWxpdHlFcnJvcikpOworICAgICAgICAgICAgcmV0dXJu
IHR5cGVFcnJvcihleGVjLCBzY29wZSwgdGhyb3dFeGNlcHRpb24sIEFTQ0lJTGl0ZXJhbChVbmNv
bmZpZ3VyYWJsZVByb3BlcnR5Q2hhbmdlRW51bWVyYWJpbGl0eUVycm9yKSk7CiAgICAgfQogCiAg
ICAgLy8gOC4gSWYgSXNHZW5lcmljRGVzY3JpcHRvcihEZXNjKSBpcyB0cnVlLCB0aGVuIG5vIGZ1
cnRoZXIgdmFsaWRhdGlvbiBpcyByZXF1aXJlZC4KQEAgLTIwNzAsNyArMjA3MCw3IEBAIGJvb2wg
SlNPYmplY3Q6OmRlZmluZU93bkluZGV4ZWRQcm9wZXJ0eSgKICAgICAgICAgaWYgKGN1cnJlbnQu
aXNEYXRhRGVzY3JpcHRvcigpICE9IGRlc2NyaXB0b3IuaXNEYXRhRGVzY3JpcHRvcigpKSB7CiAg
ICAgICAgICAgICAvLyA5LmEuIFJlamVjdCwgaWYgdGhlIFtbQ29uZmlndXJhYmxlXV0gZmllbGQg
b2YgY3VycmVudCBpcyBmYWxzZS4KICAgICAgICAgICAgIGlmICghY3VycmVudC5jb25maWd1cmFi
bGUoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KGV4ZWMsIHNjb3BlLCB0aHJvd0V4
Y2VwdGlvbiwgQVNDSUlMaXRlcmFsKFVuY29uZmlndXJhYmxlUHJvcGVydHlDaGFuZ2VBY2Nlc3NN
ZWNoYW5pc21FcnJvcikpOworICAgICAgICAgICAgICAgIHJldHVybiB0eXBlRXJyb3IoZXhlYywg
c2NvcGUsIHRocm93RXhjZXB0aW9uLCBBU0NJSUxpdGVyYWwoVW5jb25maWd1cmFibGVQcm9wZXJ0
eUNoYW5nZUFjY2Vzc01lY2hhbmlzbUVycm9yKSk7CiAgICAgICAgICAgICAvLyA5LmIuIElmIElz
RGF0YURlc2NyaXB0b3IoY3VycmVudCkgaXMgdHJ1ZSwgdGhlbiBjb252ZXJ0IHRoZSBwcm9wZXJ0
eSBuYW1lZCBQIG9mIG9iamVjdCBPIGZyb20gYQogICAgICAgICAgICAgLy8gZGF0YSBwcm9wZXJ0
eSB0byBhbiBhY2Nlc3NvciBwcm9wZXJ0eS4gUHJlc2VydmUgdGhlIGV4aXN0aW5nIHZhbHVlcyBv
ZiB0aGUgY29udmVydGVkIHByb3BlcnR5J3MKICAgICAgICAgICAgIC8vIFtbQ29uZmlndXJhYmxl
XV0gYW5kIFtbRW51bWVyYWJsZV1dIGF0dHJpYnV0ZXMgYW5kIHNldCB0aGUgcmVzdCBvZiB0aGUg
cHJvcGVydHkncyBhdHRyaWJ1dGVzIHRvCkBAIC0yMDg0LDExICsyMDg0LDExIEBAIGJvb2wgSlNP
YmplY3Q6OmRlZmluZU93bkluZGV4ZWRQcm9wZXJ0eSgKICAgICAgICAgICAgIGlmICghY3VycmVu
dC5jb25maWd1cmFibGUoKSAmJiAhY3VycmVudC53cml0YWJsZSgpKSB7CiAgICAgICAgICAgICAg
ICAgLy8gMTAuYS5pLiBSZWplY3QsIGlmIHRoZSBbW1dyaXRhYmxlXV0gZmllbGQgb2YgY3VycmVu
dCBpcyBmYWxzZSBhbmQgdGhlIFtbV3JpdGFibGVdXSBmaWVsZCBvZiBEZXNjIGlzIHRydWUuCiAg
ICAgICAgICAgICAgICAgaWYgKGRlc2NyaXB0b3Iud3JpdGFibGUoKSkKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHJlamVjdChleGVjLCBzY29wZSwgdGhyb3dFeGNlcHRpb24sIEFTQ0lJTGl0
ZXJhbChVbmNvbmZpZ3VyYWJsZVByb3BlcnR5Q2hhbmdlV3JpdGFiaWxpdHlFcnJvcikpOworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdHlwZUVycm9yKGV4ZWMsIHNjb3BlLCB0aHJvd0V4Y2Vw
dGlvbiwgQVNDSUlMaXRlcmFsKFVuY29uZmlndXJhYmxlUHJvcGVydHlDaGFuZ2VXcml0YWJpbGl0
eUVycm9yKSk7CiAgICAgICAgICAgICAgICAgLy8gMTAuYS5paS4gSWYgdGhlIFtbV3JpdGFibGVd
XSBmaWVsZCBvZiBjdXJyZW50IGlzIGZhbHNlLCB0aGVuCiAgICAgICAgICAgICAgICAgLy8gMTAu
YS5paS4xLiBSZWplY3QsIGlmIHRoZSBbW1ZhbHVlXV0gZmllbGQgb2YgRGVzYyBpcyBwcmVzZW50
IGFuZCBTYW1lVmFsdWUoRGVzYy5bW1ZhbHVlXV0sIGN1cnJlbnQuW1tWYWx1ZV1dKSBpcyBmYWxz
ZS4KICAgICAgICAgICAgICAgICBpZiAoZGVzY3JpcHRvci52YWx1ZSgpICYmICFzYW1lVmFsdWUo
ZXhlYywgZGVzY3JpcHRvci52YWx1ZSgpLCBjdXJyZW50LnZhbHVlKCkpKQotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gcmVqZWN0KGV4ZWMsIHNjb3BlLCB0aHJvd0V4Y2VwdGlvbiwgQVNDSUlM
aXRlcmFsKFJlYWRvbmx5UHJvcGVydHlDaGFuZ2VFcnJvcikpOworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdHlwZUVycm9yKGV4ZWMsIHNjb3BlLCB0aHJvd0V4Y2VwdGlvbiwgQVNDSUlMaXRl
cmFsKFJlYWRvbmx5UHJvcGVydHlDaGFuZ2VFcnJvcikpOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgLy8gMTAuYi4gZWxzZSwgdGhlIFtbQ29uZmlndXJhYmxlXV0gZmllbGQgb2YgY3VycmVu
dCBpcyB0cnVlLCBzbyBhbnkgY2hhbmdlIGlzIGFjY2VwdGFibGUuCiAgICAgICAgIH0gZWxzZSB7
CkBAIC0yMDk3LDEwICsyMDk3LDEwIEBAIGJvb2wgSlNPYmplY3Q6OmRlZmluZU93bkluZGV4ZWRQ
cm9wZXJ0eSgKICAgICAgICAgICAgIGlmICghY3VycmVudC5jb25maWd1cmFibGUoKSkgewogICAg
ICAgICAgICAgICAgIC8vIDExLmkuIFJlamVjdCwgaWYgdGhlIFtbU2V0XV0gZmllbGQgb2YgRGVz
YyBpcyBwcmVzZW50IGFuZCBTYW1lVmFsdWUoRGVzYy5bW1NldF1dLCBjdXJyZW50LltbU2V0XV0p
IGlzIGZhbHNlLgogICAgICAgICAgICAgICAgIGlmIChkZXNjcmlwdG9yLnNldHRlclByZXNlbnQo
KSAmJiBkZXNjcmlwdG9yLnNldHRlcigpICE9IGN1cnJlbnQuc2V0dGVyKCkpCi0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiByZWplY3QoZXhlYywgc2NvcGUsIHRocm93RXhjZXB0aW9uLCBBU0NJ
SUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdlIHRoZSBzZXR0ZXIgb2YgYW4gdW5jb25maWd1
cmFibGUgcHJvcGVydHkuIikpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHlwZUVycm9y
KGV4ZWMsIHNjb3BlLCB0aHJvd0V4Y2VwdGlvbiwgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRv
IGNoYW5nZSB0aGUgc2V0dGVyIG9mIGFuIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKTsKICAg
ICAgICAgICAgICAgICAvLyAxMS5paS4gUmVqZWN0LCBpZiB0aGUgW1tHZXRdXSBmaWVsZCBvZiBE
ZXNjIGlzIHByZXNlbnQgYW5kIFNhbWVWYWx1ZShEZXNjLltbR2V0XV0sIGN1cnJlbnQuW1tHZXRd
XSkgaXMgZmFsc2UuCiAgICAgICAgICAgICAgICAgaWYgKGRlc2NyaXB0b3IuZ2V0dGVyUHJlc2Vu
dCgpICYmIGRlc2NyaXB0b3IuZ2V0dGVyKCkgIT0gY3VycmVudC5nZXR0ZXIoKSkKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHJlamVjdChleGVjLCBzY29wZSwgdGhyb3dFeGNlcHRpb24sIEFT
Q0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBjaGFuZ2UgdGhlIGdldHRlciBvZiBhbiB1bmNvbmZp
Z3VyYWJsZSBwcm9wZXJ0eS4iKSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0eXBlRXJy
b3IoZXhlYywgc2NvcGUsIHRocm93RXhjZXB0aW9uLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcg
dG8gY2hhbmdlIHRoZSBnZXR0ZXIgb2YgYW4gdW5jb25maWd1cmFibGUgcHJvcGVydHkuIikpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMjI2Nyw3ICsyMjY3LDcgQEAgYm9v
bCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3RvckxlbgogICAgIGlmIChpID49IGxlbmd0
aCkgewogICAgICAgICAvLyBQcm9oaWJpdCBncm93aW5nIHRoZSBhcnJheSBpZiBsZW5ndGggaXMg
bm90IHdyaXRhYmxlLgogICAgICAgICBpZiAobWFwLT5sZW5ndGhJc1JlYWRPbmx5KCkgfHwgIWlz
U3RydWN0dXJlRXh0ZW5zaWJsZSgpKQotICAgICAgICAgICAgcmV0dXJuIHJlamVjdChleGVjLCBz
Y29wZSwgc2hvdWxkVGhyb3csIEFTQ0lJTGl0ZXJhbChSZWFkb25seVByb3BlcnR5V3JpdGVFcnJv
cikpOworICAgICAgICAgICAgcmV0dXJuIHR5cGVFcnJvcihleGVjLCBzY29wZSwgc2hvdWxkVGhy
b3csIEFTQ0lJTGl0ZXJhbChSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOwogICAgICAgICBs
ZW5ndGggPSBpICsgMTsKICAgICAgICAgc3RvcmFnZS0+c2V0TGVuZ3RoKGxlbmd0aCk7CiAgICAg
fQpAQCAtMjQwNCw5ICsyNDA0LDkgQEAgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW5kZXhCZXlv
bmRWZWN0bwogICAgICAgICBpZiAobW9kZSAhPSBQdXREaXJlY3RJbmRleExpa2VQdXREaXJlY3Qp
IHsKICAgICAgICAgICAgIC8vIFByb2hpYml0IGdyb3dpbmcgdGhlIGFycmF5IGlmIGxlbmd0aCBp
cyBub3Qgd3JpdGFibGUuCiAgICAgICAgICAgICBpZiAobWFwLT5sZW5ndGhJc1JlYWRPbmx5KCkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdChleGVjLCBzY29wZSwgbW9kZSA9PSBQdXRE
aXJlY3RJbmRleFNob3VsZFRocm93LCBBU0NJSUxpdGVyYWwoUmVhZG9ubHlQcm9wZXJ0eVdyaXRl
RXJyb3IpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBt
b2RlID09IFB1dERpcmVjdEluZGV4U2hvdWxkVGhyb3csIEFTQ0lJTGl0ZXJhbChSZWFkb25seVBy
b3BlcnR5V3JpdGVFcnJvcikpOwogICAgICAgICAgICAgaWYgKCFpc1N0cnVjdHVyZUV4dGVuc2li
bGUoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KGV4ZWMsIHNjb3BlLCBtb2RlID09
IFB1dERpcmVjdEluZGV4U2hvdWxkVGhyb3csIEFTQ0lJTGl0ZXJhbChOb25FeHRlbnNpYmxlT2Jq
ZWN0UHJvcGVydHlEZWZpbmVFcnJvcikpOworICAgICAgICAgICAgICAgIHJldHVybiB0eXBlRXJy
b3IoZXhlYywgc2NvcGUsIG1vZGUgPT0gUHV0RGlyZWN0SW5kZXhTaG91bGRUaHJvdywgQVNDSUlM
aXRlcmFsKE5vbkV4dGVuc2libGVPYmplY3RQcm9wZXJ0eURlZmluZUVycm9yKSk7CiAgICAgICAg
IH0KICAgICAgICAgbGVuZ3RoID0gaSArIDE7CiAgICAgICAgIHN0b3JhZ2UtPnNldExlbmd0aChs
ZW5ndGgpOwpAQCAtMjkxOSw3ICsyOTE5LDcgQEAgYm9vbCB2YWxpZGF0ZUFuZEFwcGx5UHJvcGVy
dHlEZXNjcmlwdG9yKAogICAgICAgICAvLyB1bmxlc3MgZXh0ZW5zaW9ucyBhcmUgcHJldmVudGVk
IQogICAgICAgICAvLyBTdGVwIDIuYQogICAgICAgICBpZiAoIWlzRXh0ZW5zaWJsZSkKLSAgICAg
ICAgICAgIHJldHVybiByZWplY3QoZXhlYywgc2NvcGUsIHRocm93RXhjZXB0aW9uLCBBU0NJSUxp
dGVyYWwoTm9uRXh0ZW5zaWJsZU9iamVjdFByb3BlcnR5RGVmaW5lRXJyb3IpKTsKKyAgICAgICAg
ICAgIHJldHVybiB0eXBlRXJyb3IoZXhlYywgc2NvcGUsIHRocm93RXhjZXB0aW9uLCBBU0NJSUxp
dGVyYWwoTm9uRXh0ZW5zaWJsZU9iamVjdFByb3BlcnR5RGVmaW5lRXJyb3IpKTsKICAgICAgICAg
aWYgKCFvYmplY3QpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgLy8gU3RlcCAy
LmMvZApAQCAtMjkzOSw5ICsyOTM5LDkgQEAgYm9vbCB2YWxpZGF0ZUFuZEFwcGx5UHJvcGVydHlE
ZXNjcmlwdG9yKAogICAgIC8vIEZpbHRlciBvdXQgaW52YWxpZCBjaGFuZ2VzCiAgICAgaWYgKCFj
dXJyZW50LmNvbmZpZ3VyYWJsZSgpKSB7CiAgICAgICAgIGlmIChkZXNjcmlwdG9yLmNvbmZpZ3Vy
YWJsZSgpKQotICAgICAgICAgICAgcmV0dXJuIHJlamVjdChleGVjLCBzY29wZSwgdGhyb3dFeGNl
cHRpb24sIEFTQ0lJTGl0ZXJhbChVbmNvbmZpZ3VyYWJsZVByb3BlcnR5Q2hhbmdlQ29uZmlndXJh
YmlsaXR5RXJyb3IpKTsKKyAgICAgICAgICAgIHJldHVybiB0eXBlRXJyb3IoZXhlYywgc2NvcGUs
IHRocm93RXhjZXB0aW9uLCBBU0NJSUxpdGVyYWwoVW5jb25maWd1cmFibGVQcm9wZXJ0eUNoYW5n
ZUNvbmZpZ3VyYWJpbGl0eUVycm9yKSk7CiAgICAgICAgIGlmIChkZXNjcmlwdG9yLmVudW1lcmFi
bGVQcmVzZW50KCkgJiYgZGVzY3JpcHRvci5lbnVtZXJhYmxlKCkgIT0gY3VycmVudC5lbnVtZXJh
YmxlKCkpCi0gICAgICAgICAgICByZXR1cm4gcmVqZWN0KGV4ZWMsIHNjb3BlLCB0aHJvd0V4Y2Vw
dGlvbiwgQVNDSUlMaXRlcmFsKFVuY29uZmlndXJhYmxlUHJvcGVydHlDaGFuZ2VFbnVtZXJhYmls
aXR5RXJyb3IpKTsKKyAgICAgICAgICAgIHJldHVybiB0eXBlRXJyb3IoZXhlYywgc2NvcGUsIHRo
cm93RXhjZXB0aW9uLCBBU0NJSUxpdGVyYWwoVW5jb25maWd1cmFibGVQcm9wZXJ0eUNoYW5nZUVu
dW1lcmFiaWxpdHlFcnJvcikpOwogICAgIH0KICAgICAKICAgICAvLyBTdGVwIDYuCkBAIC0yOTU4
LDcgKzI5NTgsNyBAQCBib29sIHZhbGlkYXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3IoCiAg
ICAgLy8gQ2hhbmdpbmcgYmV0d2VlbiBhIG5vcm1hbCBwcm9wZXJ0eSBvciBhbiBhY2Nlc3NvciBw
cm9wZXJ0eQogICAgIGlmIChkZXNjcmlwdG9yLmlzRGF0YURlc2NyaXB0b3IoKSAhPSBjdXJyZW50
LmlzRGF0YURlc2NyaXB0b3IoKSkgewogICAgICAgICBpZiAoIWN1cnJlbnQuY29uZmlndXJhYmxl
KCkpCi0gICAgICAgICAgICByZXR1cm4gcmVqZWN0KGV4ZWMsIHNjb3BlLCB0aHJvd0V4Y2VwdGlv
biwgQVNDSUlMaXRlcmFsKFVuY29uZmlndXJhYmxlUHJvcGVydHlDaGFuZ2VBY2Nlc3NNZWNoYW5p
c21FcnJvcikpOworICAgICAgICAgICAgcmV0dXJuIHR5cGVFcnJvcihleGVjLCBzY29wZSwgdGhy
b3dFeGNlcHRpb24sIEFTQ0lJTGl0ZXJhbChVbmNvbmZpZ3VyYWJsZVByb3BlcnR5Q2hhbmdlQWNj
ZXNzTWVjaGFuaXNtRXJyb3IpKTsKIAogICAgICAgICBpZiAoIW9iamVjdCkKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwpAQCAtMjk3MiwxMCArMjk3MiwxMCBAQCBib29sIHZhbGlkYXRlQW5kQXBw
bHlQcm9wZXJ0eURlc2NyaXB0b3IoCiAgICAgaWYgKGRlc2NyaXB0b3IuaXNEYXRhRGVzY3JpcHRv
cigpKSB7CiAgICAgICAgIGlmICghY3VycmVudC5jb25maWd1cmFibGUoKSkgewogICAgICAgICAg
ICAgaWYgKCFjdXJyZW50LndyaXRhYmxlKCkgJiYgZGVzY3JpcHRvci53cml0YWJsZSgpKQotICAg
ICAgICAgICAgICAgIHJldHVybiByZWplY3QoZXhlYywgc2NvcGUsIHRocm93RXhjZXB0aW9uLCBB
U0NJSUxpdGVyYWwoVW5jb25maWd1cmFibGVQcm9wZXJ0eUNoYW5nZVdyaXRhYmlsaXR5RXJyb3Ip
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHlwZUVycm9yKGV4ZWMsIHNjb3BlLCB0aHJvd0V4
Y2VwdGlvbiwgQVNDSUlMaXRlcmFsKFVuY29uZmlndXJhYmxlUHJvcGVydHlDaGFuZ2VXcml0YWJp
bGl0eUVycm9yKSk7CiAgICAgICAgICAgICBpZiAoIWN1cnJlbnQud3JpdGFibGUoKSkgewogICAg
ICAgICAgICAgICAgIGlmIChkZXNjcmlwdG9yLnZhbHVlKCkgJiYgIXNhbWVWYWx1ZShleGVjLCBj
dXJyZW50LnZhbHVlKCksIGRlc2NyaXB0b3IudmFsdWUoKSkpCi0gICAgICAgICAgICAgICAgICAg
IHJldHVybiByZWplY3QoZXhlYywgc2NvcGUsIHRocm93RXhjZXB0aW9uLCBBU0NJSUxpdGVyYWwo
UmVhZG9ubHlQcm9wZXJ0eUNoYW5nZUVycm9yKSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biB0eXBlRXJyb3IoZXhlYywgc2NvcGUsIHRocm93RXhjZXB0aW9uLCBBU0NJSUxpdGVyYWwoUmVh
ZG9ubHlQcm9wZXJ0eUNoYW5nZUVycm9yKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKGN1cnJlbnQuYXR0cmlidXRlc0VxdWFsKGRlc2NyaXB0b3IpICYmICFkZXNjcmlw
dG9yLnZhbHVlKCkpCkBAIC0yOTkxLDExICsyOTkxLDExIEBAIGJvb2wgdmFsaWRhdGVBbmRBcHBs
eVByb3BlcnR5RGVzY3JpcHRvcigKICAgICBBU1NFUlQoZGVzY3JpcHRvci5pc0FjY2Vzc29yRGVz
Y3JpcHRvcigpKTsKICAgICBpZiAoIWN1cnJlbnQuY29uZmlndXJhYmxlKCkpIHsKICAgICAgICAg
aWYgKGRlc2NyaXB0b3Iuc2V0dGVyUHJlc2VudCgpICYmICEoY3VycmVudC5zZXR0ZXJQcmVzZW50
KCkgJiYgSlNWYWx1ZTo6c3RyaWN0RXF1YWwoZXhlYywgY3VycmVudC5zZXR0ZXIoKSwgZGVzY3Jp
cHRvci5zZXR0ZXIoKSkpKQotICAgICAgICAgICAgcmV0dXJuIHJlamVjdChleGVjLCBzY29wZSwg
dGhyb3dFeGNlcHRpb24sIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBjaGFuZ2UgdGhlIHNl
dHRlciBvZiBhbiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSk7CisgICAgICAgICAgICByZXR1
cm4gdHlwZUVycm9yKGV4ZWMsIHNjb3BlLCB0aHJvd0V4Y2VwdGlvbiwgQVNDSUlMaXRlcmFsKCJB
dHRlbXB0aW5nIHRvIGNoYW5nZSB0aGUgc2V0dGVyIG9mIGFuIHVuY29uZmlndXJhYmxlIHByb3Bl
cnR5LiIpKTsKICAgICAgICAgaWYgKGRlc2NyaXB0b3IuZ2V0dGVyUHJlc2VudCgpICYmICEoY3Vy
cmVudC5nZXR0ZXJQcmVzZW50KCkgJiYgSlNWYWx1ZTo6c3RyaWN0RXF1YWwoZXhlYywgY3VycmVu
dC5nZXR0ZXIoKSwgZGVzY3JpcHRvci5nZXR0ZXIoKSkpKQotICAgICAgICAgICAgcmV0dXJuIHJl
amVjdChleGVjLCBzY29wZSwgdGhyb3dFeGNlcHRpb24sIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGlu
ZyB0byBjaGFuZ2UgdGhlIGdldHRlciBvZiBhbiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSk7
CisgICAgICAgICAgICByZXR1cm4gdHlwZUVycm9yKGV4ZWMsIHNjb3BlLCB0aHJvd0V4Y2VwdGlv
biwgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGNoYW5nZSB0aGUgZ2V0dGVyIG9mIGFuIHVu
Y29uZmlndXJhYmxlIHByb3BlcnR5LiIpKTsKICAgICAgICAgaWYgKGN1cnJlbnQuYXR0cmlidXRl
cygpICYgQ3VzdG9tQWNjZXNzb3IpCi0gICAgICAgICAgICByZXR1cm4gcmVqZWN0KGV4ZWMsIHNj
b3BlLCB0aHJvd0V4Y2VwdGlvbiwgQVNDSUlMaXRlcmFsKFVuY29uZmlndXJhYmxlUHJvcGVydHlD
aGFuZ2VBY2Nlc3NNZWNoYW5pc21FcnJvcikpOworICAgICAgICAgICAgcmV0dXJuIHR5cGVFcnJv
cihleGVjLCBzY29wZSwgdGhyb3dFeGNlcHRpb24sIEFTQ0lJTGl0ZXJhbChVbmNvbmZpZ3VyYWJs
ZVByb3BlcnR5Q2hhbmdlQWNjZXNzTWVjaGFuaXNtRXJyb3IpKTsKICAgICB9CiAKICAgICAvLyBT
dGVwIDEwLzExLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJ
bmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3RJbmxpbmVzLmgJKHJldmlzaW9uIDIwNzg1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzgsNyArMTc4
LDcgQEAgQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpwdXRJbmxpbmUoSgogICAgIGlmICh0
aGlzT2JqZWN0LT5jYW5QZXJmb3JtRmFzdFB1dElubGluZShleGVjLCB2bSwgcHJvcGVydHlOYW1l
KSkgewogICAgICAgICBBU1NFUlQoIXRoaXNPYmplY3QtPnN0cnVjdHVyZSh2bSktPnByb3RvdHlw
ZUNoYWluTWF5SW50ZXJjZXB0U3RvcmVUbyh2bSwgcHJvcGVydHlOYW1lKSk7CiAgICAgICAgIGlm
ICghdGhpc09iamVjdC0+cHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9kZVB1dD4odm0sIHByb3BlcnR5
TmFtZSwgdmFsdWUsIDAsIHNsb3QpKQotICAgICAgICAgICAgcmV0dXJuIHJlamVjdChleGVjLCBz
Y29wZSwgc2xvdC5pc1N0cmljdE1vZGUoKSwgQVNDSUlMaXRlcmFsKFJlYWRvbmx5UHJvcGVydHlX
cml0ZUVycm9yKSk7CisgICAgICAgICAgICByZXR1cm4gdHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBz
bG90LmlzU3RyaWN0TW9kZSgpLCBBU0NJSUxpdGVyYWwoUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJy
b3IpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmNwcAkocmV2aXNpb24gMjA3ODUxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1
MCw3ICsxNTAsNyBAQCBib29sIEpTUHJveHk6OnNldFByb3RvdHlwZShKU09iamVjdCosIEV4CiB7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CiAKLSAg
ICByZXR1cm4gcmVqZWN0KGV4ZWMsIHNjb3BlLCBzaG91bGRUaHJvd0lmQ2FudFNldCwgQVNDSUlM
aXRlcmFsKCJDYW5ub3Qgc2V0IHByb3RvdHlwZSBvZiB0aGlzIG9iamVjdCIpKTsKKyAgICByZXR1
cm4gdHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBzaG91bGRUaHJvd0lmQ2FudFNldCwgQVNDSUlMaXRl
cmFsKCJDYW5ub3Qgc2V0IHByb3RvdHlwZSBvZiB0aGlzIG9iamVjdCIpKTsKIH0KIAogSlNWYWx1
ZSBKU1Byb3h5OjpnZXRQcm90b3R5cGUoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVj
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgJKHJldmlzaW9uIDIw
Nzg1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiTGF6eVByb3BlcnR5LmgiCiAjaW5j
bHVkZSAiUHJvcGVydHlTbG90LmgiCiAjaW5jbHVkZSAiUHV0UHJvcGVydHlTbG90LmgiCi0jaW5j
bHVkZSAiUmVqZWN0LmgiCisjaW5jbHVkZSAiVHlwZUVycm9yLmgiCiAjaW5jbHVkZSA8d3RmL0Fz
c2VydGlvbnMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0yNjUsMTEgKzI2NSwxMSBAQCBpbmxp
bmUgYm9vbCBwdXRFbnRyeShFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICAgICAgdGhp
c09iamVjdC0+cHV0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKTsKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiByZWplY3QoZXhlYywgc2Nv
cGUsIHNsb3QuaXNTdHJpY3RNb2RlKCksIEFTQ0lJTGl0ZXJhbChSZWFkb25seVByb3BlcnR5V3Jp
dGVFcnJvcikpOworICAgICAgICByZXR1cm4gdHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBzbG90Lmlz
U3RyaWN0TW9kZSgpLCBBU0NJSUxpdGVyYWwoUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsK
ICAgICB9CiAKICAgICBpZiAoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEFjY2Vzc29yKQotICAgICAg
ICByZXR1cm4gcmVqZWN0KGV4ZWMsIHNjb3BlLCBzbG90LmlzU3RyaWN0TW9kZSgpLCBBU0NJSUxp
dGVyYWwoUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKKyAgICAgICAgcmV0dXJuIHR5cGVF
cnJvcihleGVjLCBzY29wZSwgc2xvdC5pc1N0cmljdE1vZGUoKSwgQVNDSUlMaXRlcmFsKFJlYWRv
bmx5UHJvcGVydHlXcml0ZUVycm9yKSk7CiAKICAgICBpZiAoIShlbnRyeS0+YXR0cmlidXRlcygp
ICYgUmVhZE9ubHkpKSB7CiAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIShlbnRyeS0+YXR0
cmlidXRlcygpICYgRE9NSklUQXR0cmlidXRlKSwgIkRPTUpJVEF0dHJpYnV0ZSBzdXBwb3J0cyBy
ZWFkb25seSBhdHRyaWJ1dGVzIGN1cnJlbnRseS4iKTsKQEAgLTI4Myw3ICsyODMsNyBAQCBpbmxp
bmUgYm9vbCBwdXRFbnRyeShFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgfQogCi0gICAgcmV0dXJuIHJlamVjdChleGVjLCBzY29wZSwgc2xvdC5pc1N0cmlj
dE1vZGUoKSwgQVNDSUlMaXRlcmFsKFJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7CisgICAg
cmV0dXJuIHR5cGVFcnJvcihleGVjLCBzY29wZSwgc2xvdC5pc1N0cmljdE1vZGUoKSwgQVNDSUlM
aXRlcmFsKFJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7CiB9CiAKIC8qKgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCShyZXZpc2lv
biAyMDc4NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsMTYgKzEwNywxNiBAQCBib29sIFJlZ0V4cE9iamVj
dDo6ZGVmaW5lT3duUHJvcGVydHkoSlNPCiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSB2bS5wcm9w
ZXJ0eU5hbWVzLT5sYXN0SW5kZXgpIHsKICAgICAgICAgUmVnRXhwT2JqZWN0KiByZWdFeHAgPSBh
c1JlZ0V4cE9iamVjdChvYmplY3QpOwogICAgICAgICBpZiAoZGVzY3JpcHRvci5jb25maWd1cmFi
bGVQcmVzZW50KCkgJiYgZGVzY3JpcHRvci5jb25maWd1cmFibGUoKSkKLSAgICAgICAgICAgIHJl
dHVybiByZWplY3QoZXhlYywgc2NvcGUsIHNob3VsZFRocm93LCBBU0NJSUxpdGVyYWwoVW5jb25m
aWd1cmFibGVQcm9wZXJ0eUNoYW5nZUNvbmZpZ3VyYWJpbGl0eUVycm9yKSk7CisgICAgICAgICAg
ICByZXR1cm4gdHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBzaG91bGRUaHJvdywgQVNDSUlMaXRlcmFs
KFVuY29uZmlndXJhYmxlUHJvcGVydHlDaGFuZ2VDb25maWd1cmFiaWxpdHlFcnJvcikpOwogICAg
ICAgICBpZiAoZGVzY3JpcHRvci5lbnVtZXJhYmxlUHJlc2VudCgpICYmIGRlc2NyaXB0b3IuZW51
bWVyYWJsZSgpKQotICAgICAgICAgICAgcmV0dXJuIHJlamVjdChleGVjLCBzY29wZSwgc2hvdWxk
VGhyb3csIEFTQ0lJTGl0ZXJhbChVbmNvbmZpZ3VyYWJsZVByb3BlcnR5Q2hhbmdlRW51bWVyYWJp
bGl0eUVycm9yKSk7CisgICAgICAgICAgICByZXR1cm4gdHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBz
aG91bGRUaHJvdywgQVNDSUlMaXRlcmFsKFVuY29uZmlndXJhYmxlUHJvcGVydHlDaGFuZ2VFbnVt
ZXJhYmlsaXR5RXJyb3IpKTsKICAgICAgICAgaWYgKGRlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2Ny
aXB0b3IoKSkKLSAgICAgICAgICAgIHJldHVybiByZWplY3QoZXhlYywgc2NvcGUsIHNob3VsZFRo
cm93LCBBU0NJSUxpdGVyYWwoVW5jb25maWd1cmFibGVQcm9wZXJ0eUNoYW5nZUFjY2Vzc01lY2hh
bmlzbUVycm9yKSk7CisgICAgICAgICAgICByZXR1cm4gdHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBz
aG91bGRUaHJvdywgQVNDSUlMaXRlcmFsKFVuY29uZmlndXJhYmxlUHJvcGVydHlDaGFuZ2VBY2Nl
c3NNZWNoYW5pc21FcnJvcikpOwogICAgICAgICBpZiAoIXJlZ0V4cC0+bV9sYXN0SW5kZXhJc1dy
aXRhYmxlKSB7CiAgICAgICAgICAgICBpZiAoZGVzY3JpcHRvci53cml0YWJsZVByZXNlbnQoKSAm
JiBkZXNjcmlwdG9yLndyaXRhYmxlKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdChl
eGVjLCBzY29wZSwgc2hvdWxkVGhyb3csIEFTQ0lJTGl0ZXJhbChVbmNvbmZpZ3VyYWJsZVByb3Bl
cnR5Q2hhbmdlV3JpdGFiaWxpdHlFcnJvcikpOworICAgICAgICAgICAgICAgIHJldHVybiB0eXBl
RXJyb3IoZXhlYywgc2NvcGUsIHNob3VsZFRocm93LCBBU0NJSUxpdGVyYWwoVW5jb25maWd1cmFi
bGVQcm9wZXJ0eUNoYW5nZVdyaXRhYmlsaXR5RXJyb3IpKTsKICAgICAgICAgICAgIGlmICghc2Ft
ZVZhbHVlKGV4ZWMsIHJlZ0V4cC0+Z2V0TGFzdEluZGV4KCksIGRlc2NyaXB0b3IudmFsdWUoKSkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdChleGVjLCBzY29wZSwgc2hvdWxkVGhyb3cs
IEFTQ0lJTGl0ZXJhbChSZWFkb25seVByb3BlcnR5Q2hhbmdlRXJyb3IpKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gdHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBzaG91bGRUaHJvdywgQVNDSUlMaXRl
cmFsKFJlYWRvbmx5UHJvcGVydHlDaGFuZ2VFcnJvcikpOwogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGRlc2NyaXB0b3IudmFsdWUoKSkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCShyZXZpc2lvbiAy
MDc4NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaAko
d29ya2luZyBjb3B5KQpAQCAtMjIsOCArMjIsOCBAQAogCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIK
ICNpbmNsdWRlICJSZWdFeHAuaCIKLSNpbmNsdWRlICJSZWplY3QuaCIKICNpbmNsdWRlICJUaHJv
d1Njb3BlLmgiCisjaW5jbHVkZSAiVHlwZUVycm9yLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogICAg
IApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgfQogCi0gICAgICAgIHJldHVybiByZWplY3QoZXhlYywgc2NvcGUsIHNob3VsZFRocm93
LCBBU0NJSUxpdGVyYWwoUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKKyAgICAgICAgcmV0
dXJuIHR5cGVFcnJvcihleGVjLCBzY29wZSwgc2hvdWxkVGhyb3csIEFTQ0lJTGl0ZXJhbChSZWFk
b25seVByb3BlcnR5V3JpdGVFcnJvcikpOwogICAgIH0KICAgICBKU1ZhbHVlIGdldExhc3RJbmRl
eCgpIGNvbnN0CiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVq
ZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVqZWN0
LmgJKHJldmlzaW9uIDIwNzg1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Jl
amVjdC5oCShub25leGlzdGVudCkKQEAgLTEsNDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMiwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1
ZGUgIkNhbGxGcmFtZS5oIgotI2luY2x1ZGUgIkVycm9yLmgiCi0KLW5hbWVzcGFjZSBKU0Mgewot
Ci1pbmxpbmUgYm9vbCByZWplY3QoRXhlY1N0YXRlKiBleGVjLCBUaHJvd1Njb3BlJiBzY29wZSwg
Ym9vbCB0aHJvd0V4Y2VwdGlvbiwgQVNDSUlMaXRlcmFsIG1lc3NhZ2UpCi17Ci0gICAgaWYgKHRo
cm93RXhjZXB0aW9uKQotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgbWVzc2Fn
ZSk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi19IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVN
YXAuY3BwCShyZXZpc2lvbiAyMDc4NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TcGFyc2VBcnJheVZhbHVlTWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsOSArMzEsOSBA
QAogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1
ZGUgIlByb3BlcnR5U2xvdC5oIgotI2luY2x1ZGUgIlJlamVjdC5oIgogI2luY2x1ZGUgIlNsb3RW
aXNpdG9yLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCisjaW5jbHVkZSAiVHlwZUVycm9yLmgi
CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC0xMDIsNyArMTAyLDcgQEAgYm9vbCBTcGFyc2VBcnJh
eVZhbHVlTWFwOjpwdXRFbnRyeShFeGVjUwogICAgIC8vIGV4dGVuc2libGUsIHRoaXMgaXMgbm90
IHRoZSByaWdodCB0aGluZyB0byBoYXZlIGRvbmUgLSBzbyByZW1vdmUgYWdhaW4uCiAgICAgaWYg
KHJlc3VsdC5pc05ld0VudHJ5ICYmICFhcnJheS0+aXNTdHJ1Y3R1cmVFeHRlbnNpYmxlKCkpIHsK
ICAgICAgICAgcmVtb3ZlKHJlc3VsdC5pdGVyYXRvcik7Ci0gICAgICAgIHJldHVybiByZWplY3Qo
ZXhlYywgc2NvcGUsIHNob3VsZFRocm93LCBBU0NJSUxpdGVyYWwoUmVhZG9ubHlQcm9wZXJ0eVdy
aXRlRXJyb3IpKTsKKyAgICAgICAgcmV0dXJuIHR5cGVFcnJvcihleGVjLCBzY29wZSwgc2hvdWxk
VGhyb3csIEFTQ0lJTGl0ZXJhbChSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOwogICAgIH0K
ICAgICAKICAgICByZXR1cm4gZW50cnkucHV0KGV4ZWMsIGFycmF5LCB0aGlzLCB2YWx1ZSwgc2hv
dWxkVGhyb3cpOwpAQCAtMTI1LDEwICsxMjUsMTAgQEAgYm9vbCBTcGFyc2VBcnJheVZhbHVlTWFw
OjpwdXREaXJlY3QoRXhlYwogICAgICAgICAvLyBleHRlbnNpYmxlLCB0aGlzIGlzIG5vdCB0aGUg
cmlnaHQgdGhpbmcgdG8gaGF2ZSBkb25lIC0gc28gcmVtb3ZlIGFnYWluLgogICAgICAgICBpZiAo
cmVzdWx0LmlzTmV3RW50cnkpIHsKICAgICAgICAgICAgIHJlbW92ZShyZXN1bHQuaXRlcmF0b3Ip
OwotICAgICAgICAgICAgcmV0dXJuIHJlamVjdChleGVjLCBzY29wZSwgc2hvdWxkVGhyb3csIEFT
Q0lJTGl0ZXJhbChOb25FeHRlbnNpYmxlT2JqZWN0UHJvcGVydHlEZWZpbmVFcnJvcikpOworICAg
ICAgICAgICAgcmV0dXJuIHR5cGVFcnJvcihleGVjLCBzY29wZSwgc2hvdWxkVGhyb3csIEFTQ0lJ
TGl0ZXJhbChOb25FeHRlbnNpYmxlT2JqZWN0UHJvcGVydHlEZWZpbmVFcnJvcikpOwogICAgICAg
ICB9CiAgICAgICAgIGlmIChlbnRyeS5hdHRyaWJ1dGVzICYgUmVhZE9ubHkpCi0gICAgICAgICAg
ICByZXR1cm4gcmVqZWN0KGV4ZWMsIHNjb3BlLCBzaG91bGRUaHJvdywgQVNDSUlMaXRlcmFsKFJl
YWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7CisgICAgICAgICAgICByZXR1cm4gdHlwZUVycm9y
KGV4ZWMsIHNjb3BlLCBzaG91bGRUaHJvdywgQVNDSUlMaXRlcmFsKFJlYWRvbmx5UHJvcGVydHlX
cml0ZUVycm9yKSk7CiAgICAgfQogICAgIGVudHJ5LmF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzOwog
ICAgIGVudHJ5LnNldCh2bSwgdGhpcywgdmFsdWUpOwpAQCAtMTYwLDcgKzE2MCw3IEBAIGJvb2wg
U3BhcnNlQXJyYXlFbnRyeTo6cHV0KEV4ZWNTdGF0ZSogZXgKIAogICAgIGlmICghKGF0dHJpYnV0
ZXMgJiBBY2Nlc3NvcikpIHsKICAgICAgICAgaWYgKGF0dHJpYnV0ZXMgJiBSZWFkT25seSkKLSAg
ICAgICAgICAgIHJldHVybiByZWplY3QoZXhlYywgc2NvcGUsIHNob3VsZFRocm93LCBBU0NJSUxp
dGVyYWwoUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKKyAgICAgICAgICAgIHJldHVybiB0
eXBlRXJyb3IoZXhlYywgc2NvcGUsIHNob3VsZFRocm93LCBBU0NJSUxpdGVyYWwoUmVhZG9ubHlQ
cm9wZXJ0eVdyaXRlRXJyb3IpKTsKIAogICAgICAgICBzZXQodm0sIG1hcCwgdmFsdWUpOwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cmluZ09iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaW5nT2JqZWN0LmNwcAkocmV2aXNpb24gMjA3ODUxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzEsNyAr
NzEsNyBAQCBib29sIFN0cmluZ09iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlCiAgICAgICAg
IHJldHVybiBvcmRpbmFyeVNldFNsb3coZXhlYywgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCB2
YWx1ZSwgc2xvdC50aGlzVmFsdWUoKSwgc2xvdC5pc1N0cmljdE1vZGUoKSk7CiAKICAgICBpZiAo
cHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCkKLSAgICAgICAgcmV0dXJu
IHJlamVjdChleGVjLCBzY29wZSwgc2xvdC5pc1N0cmljdE1vZGUoKSwgQVNDSUlMaXRlcmFsKFJl
YWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7CisgICAgICAgIHJldHVybiB0eXBlRXJyb3IoZXhl
Yywgc2NvcGUsIHNsb3QuaXNTdHJpY3RNb2RlKCksIEFTQ0lJTGl0ZXJhbChSZWFkb25seVByb3Bl
cnR5V3JpdGVFcnJvcikpOwogICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJz
ZUluZGV4KHByb3BlcnR5TmFtZSkpCiAgICAgICAgIHJldHVybiBwdXRCeUluZGV4KGNlbGwsIGV4
ZWMsIGluZGV4LnZhbHVlKCksIHZhbHVlLCBzbG90LmlzU3RyaWN0TW9kZSgpKTsKICAgICByZXR1
cm4gSlNPYmplY3Q6OnB1dChjZWxsLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsK
QEAgLTg0LDcgKzg0LDcgQEAgYm9vbCBTdHJpbmdPYmplY3Q6OnB1dEJ5SW5kZXgoSlNDZWxsKiBj
ZQogCiAgICAgU3RyaW5nT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PFN0cmluZ09iamVjdCo+
KGNlbGwpOwogICAgIGlmICh0aGlzT2JqZWN0LT5pbnRlcm5hbFZhbHVlKCktPmNhbkdldEluZGV4
KHByb3BlcnR5TmFtZSkpCi0gICAgICAgIHJldHVybiByZWplY3QoZXhlYywgc2NvcGUsIHNob3Vs
ZFRocm93LCBBU0NJSUxpdGVyYWwoUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKKyAgICAg
ICAgcmV0dXJuIHR5cGVFcnJvcihleGVjLCBzY29wZSwgc2hvdWxkVGhyb3csIEFTQ0lJTGl0ZXJh
bChSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOwogICAgIHJldHVybiBKU09iamVjdDo6cHV0
QnlJbmRleChjZWxsLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7CiB9
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVFcnJvci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVFcnJvci5oCShyZXZp
c2lvbiAyMDc4NTEpCShmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlamVjdC5o
OjIwNzg1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVFcnJvci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIs
IDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDYWxs
RnJhbWUuaCIKKyNpbmNsdWRlICJFcnJvci5oIgorCituYW1lc3BhY2UgSlNDIHsKKworaW5saW5l
IGJvb2wgcmVqZWN0KEV4ZWNTdGF0ZSogZXhlYywgVGhyb3dTY29wZSYgc2NvcGUsIGJvb2wgdGhy
b3dFeGNlcHRpb24sIEFTQ0lJTGl0ZXJhbCBtZXNzYWdlKQoreworICAgIGlmICh0aHJvd0V4Y2Vw
dGlvbikKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIG1lc3NhZ2UpOworICAg
IHJldHVybiBmYWxzZTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UeXBlRXJyb3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UeXBlRXJyb3IuaAkocmV2aXNpb24gMjA3ODUxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZUVycm9yLmgJKHdvcmtpbmcgY29weSkKQEAg
LTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWlubGluZSBib29sIHJlamVjdChF
eGVjU3RhdGUqIGV4ZWMsIFRocm93U2NvcGUmIHNjb3BlLCBib29sIHRocm93RXhjZXB0aW9uLCBB
U0NJSUxpdGVyYWwgbWVzc2FnZSkKK2lubGluZSBib29sIHR5cGVFcnJvcihFeGVjU3RhdGUqIGV4
ZWMsIFRocm93U2NvcGUmIHNjb3BlLCBib29sIHRocm93RXhjZXB0aW9uLCBBU0NJSUxpdGVyYWwg
bWVzc2FnZSkKIHsKICAgICBpZiAodGhyb3dFeGNlcHRpb24pCiAgICAgICAgIHRocm93VHlwZUVy
cm9yKGV4ZWMsIHNjb3BlLCBtZXNzYWdlKTsK
</data>
<flag name="review"
          id="315843"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>