<?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>82077</bug_id>
          
          <creation_ts>2012-03-23 12:22:36 -0700</creation_ts>
          <short_desc>RexExp constructor last match properties should not rely on previous ovector</short_desc>
          <delta_ts>2012-03-23 12:57:50 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Gavin Barraclough">barraclough</reporter>
          <assigned_to name="Gavin Barraclough">barraclough</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>586599</commentid>
    <comment_count>0</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-03-23 12:22:36 -0700</bug_when>
    <thetext>This change simplifies matching, and will enable subpattern results to be fully lazily generated in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586608</commentid>
    <comment_count>1</comment_count>
      <attachid>133534</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-03-23 12:28:57 -0700</bug_when>
    <thetext>Created attachment 133534
Fix

No overall performance impact (maybe 1% progression on v8-regexp, nothing significant overall).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586616</commentid>
    <comment_count>2</comment_count>
      <attachid>133534</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2012-03-23 12:37:51 -0700</bug_when>
    <thetext>Comment on attachment 133534
Fix

r=me, but you need to add the files to all the other project files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586625</commentid>
    <comment_count>3</comment_count>
      <attachid>133538</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-03-23 12:44:41 -0700</bug_when>
    <thetext>Created attachment 133538
Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586639</commentid>
    <comment_count>4</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-03-23 12:57:50 -0700</bug_when>
    <thetext>Fixed in r111889</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133534</attachid>
            <date>2012-03-23 12:28:57 -0700</date>
            <delta_ts>2012-03-23 12:44:41 -0700</delta_ts>
            <desc>Fix</desc>
            <filename>82077.patch</filename>
            <type>text/plain</type>
            <size>41944</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTExODg1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgzIEBA
CisyMDEyLTAzLTIzICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4K
KworICAgICAgICBSZXhFeHAgY29uc3RydWN0b3IgbGFzdCBtYXRjaCBwcm9wZXJ0aWVzIHNob3Vs
ZCBub3QgcmVseSBvbiBwcmV2aW91cyBvdmVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjA3NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIHNpbXBsaWZpZXMgbWF0Y2hpbmcsIGFu
ZCB3aWxsIGVuYWJsZSBzdWJwYXR0ZXJuIHJlc3VsdHMgdG8gYmUgZnVsbHkgbGF6aWx5IGdlbmVy
YXRlZCBpbiB0aGUgZnV0dXJlLgorCisgICAgICAgIFRoaXMgcGF0Y2ggY2hhbmdlcyB0aGUgc2No
ZW1lIHVzZWQgdG8gbGF6aWx5IGdlbmVyYXRlIHRoZSBsYXN0IG1hdGNoIHByb3BlcnRpZXMgb2Yg
dGhlIFJlZ0V4cCBvYmplY3QuCisgICAgICAgIEluc3RlYWQgb2YgcmVseWluZyBvbiB0aGUgcmVz
dWx0cyBpbiB0aGUgb3ZlY3Rvciwgd2UgY2FuIGluc3RlYWQgbGF6aWx5IGdlbmVyYXRlIHRoZSBz
dWJwYXR0ZXJzIHVzaW5nCisgICAgICAgIGEgUmVnRXhwTWF0Y2hlc0FycmF5LiBUbyBkbyBzbyB3
ZSBqdXN0IG5lZWQgdG8gc3RvcmUgdGhlIGlucHV0LCB0aGUgcmVnZXhwIG1hdGNoZWQsIGFuZCB0
aGUgbWF0Y2gKKyAgICAgICAgbG9jYXRpb24gKHRoZSBNYXRjaFJlc3VsdCkuIFdoZW4gdGhlIG1h
dGNoIGlzIGFjY2Vzc2VkIG9yIHRoZSBpbnB1dCBpcyBzZXQsIHdlIHJlaWZ5IHJlc3VsdHMuIFdl
IHVzZQorICAgICAgICBhIHNwZWNpYWwgdmFsdWUgb2Ygc2V0dGluZyB0aGUgc2F2ZWQgcmVzdWx0
IHRvIE1hdGNoUmVzdWx0OjpmYWlsZWQoKSB0byBpbmRpY2F0ZWQgdGhhdCB3ZSdyZSBpbiBhCisg
ICAgICAgIHJlaWZpZWQgc3RhdGUuIFRoaXMgbWVhbnMgdGhhdCBuZXh0IHRpbWUgYSBtYXRjaCBp
cyBwZXJmb3JtZWQsIHRoZSBzdG9yZSBvZiB0aGUgcmVzdWx0IHdpbGwKKyAgICAgICAgYXV0b21h
dGljYWxseSBibG93IGF3YXkgdGhlIHJlaWZpZWQgdmFsdWUuCisKKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAgICAgLSBBZGRlZCBu
ZXcgZmlsZXMuCisgICAgICAgICogcnVudGltZS9SZWdFeHAuY3BwOgorICAgICAgICAoSlNDOjpS
ZWdFeHBGdW5jdGlvbmFsVGVzdENvbGxlY3Rvcjo6b3V0cHV0T25lVGVzdCk6CisgICAgICAgICAg
ICAtIGNoYW5nZWQgJ3N1YlBhdHRlcm4nIC0+ICdzdWJwYXR0ZXJuJyAodGhlcmUgd2FzIGEgbWl4
IGluIEpTQywgJ3N1YnBhdHRlcm4nIHdhcyBtb3JlIGNvbW1vbikuCisgICAgICAgICogcnVudGlt
ZS9SZWdFeHBDYWNoZWRSZXN1bHQuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6UmVnRXhwQ2Fj
aGVkUmVzdWx0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6UmVnRXhwQ2FjaGVkUmVz
dWx0OjpsYXN0UmVzdWx0KToKKyAgICAgICAgKEpTQzo6UmVnRXhwQ2FjaGVkUmVzdWx0OjpzZXRJ
bnB1dCk6CisgICAgICAgICAgICAtIE5ldyBtZXRob2RzLCBtYXJrIEdDIG9iamVjdHMsIGxhemls
eSBjcmVhdGUgdGhlIG1hdGNoZXMgYXJyYXksIGFuZCByZWNvcmQgYSB1c2VyIHByb3ZpZGVkIGlu
cHV0ICh2aWEgYXNzaWdubWVudCB0byBSZWdFeHAuaW51cHQpLgorICAgICAgICAqIHJ1bnRpbWUv
UmVnRXhwQ2FjaGVkUmVzdWx0Lmg6IEFkZGVkLgorICAgICAgICAoUmVnRXhwQ2FjaGVkUmVzdWx0
KToKKyAgICAgICAgICAgIC0gQWRkZWQgbmV3IGNsYXNzLgorICAgICAgICAoSlNDOjpSZWdFeHBD
YWNoZWRSZXN1bHQ6OlJlZ0V4cENhY2hlZFJlc3VsdCk6CisgICAgICAgIChKU0M6OlJlZ0V4cENh
Y2hlZFJlc3VsdDo6cmVjb3JkKToKKyAgICAgICAgKEpTQzo6UmVnRXhwQ2FjaGVkUmVzdWx0Ojpp
bnB1dCk6CisgICAgICAgICAgICAtIEluaXRpYWxpemUgdGhlIG9iamVjdCwgcmVjb3JkIHRoZSBy
ZXN1bHQgb2YgYSBSZWdFeHAgbWF0Y2gsIGFjY2VzcyB0aGUgc3RvcmVkIGlucHV0IHByb3BlcnR5
LgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlND
OjpSZWdFeHBDb25zdHJ1Y3Rvcjo6UmVnRXhwQ29uc3RydWN0b3IpOgorICAgICAgICAgICAgLSBJ
bml0aWFsaXplIG1fcmVzdWx0L21fbXVsdGlsaW5lIHByb3BlcnRpZXMuCisgICAgICAgIChKU0M6
OlJlZ0V4cENvbnN0cnVjdG9yOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgICAgIC0gTWFrZSBz
dXJlIHRoZSBjYWNoZWQgcmVzdWx0cyAob3IgbGF6eSBzb3VyY2UgZm9yIHRoZW0pIGFyZSBtYXJr
ZWQuCisgICAgICAgIChKU0M6OlJlZ0V4cENvbnN0cnVjdG9yOjpnZXRCYWNrcmVmKToKKyAgICAg
ICAgKEpTQzo6UmVnRXhwQ29uc3RydWN0b3I6OmdldExhc3RQYXJlbik6CisgICAgICAgIChKU0M6
OlJlZ0V4cENvbnN0cnVjdG9yOjpnZXRMZWZ0Q29udGV4dCk6CisgICAgICAgIChKU0M6OlJlZ0V4
cENvbnN0cnVjdG9yOjpnZXRSaWdodENvbnRleHQpOgorICAgICAgICAgICAgLSBNb3ZlZCBmcm9t
IFJlZ0V4cENvbnN0cnVjdG9yLCBtb3ZlZCB0byBSZWdFeHBDYWNoZWRSZXN1bHQsIGFuZCB1c2lu
ZyBuZXcgY2FjaGluZyBzY2hlbWUuCisgICAgICAgIChKU0M6OnJlZ0V4cENvbnN0cnVjdG9ySW5w
dXQpOgorICAgICAgICAoSlNDOjpzZXRSZWdFeHBDb25zdHJ1Y3RvcklucHV0KToKKyAgICAgICAg
ICAgIC0gQ2hhbmdlZCB0byB1c2UgUmVnRXhwQ2FjaGVkUmVzdWx0LgorICAgICAgICAqIHJ1bnRp
bWUvUmVnRXhwQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKEpTQzo6UmVnRXhwQ29uc3RydWN0b3I6
OmNyZWF0ZSk6CisgICAgICAgIChSZWdFeHBDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OlJl
Z0V4cENvbnN0cnVjdG9yOjpzZXRNdWx0aWxpbmUpOgorICAgICAgICAoSlNDOjpSZWdFeHBDb25z
dHJ1Y3Rvcjo6bXVsdGlsaW5lKToKKyAgICAgICAgICAgIC0gTW92ZSBtdWx0aWxpbmUgcHJvcGVy
dHkgb250byB0aGUgY29uc3RydWN0b3Igb2JqZWN0OyBpdCBpcyBub3QgYWZmZWN0ZWQgYnkgdGhl
IGxhc3QgbWF0Y2guCisgICAgICAgIChKU0M6OlJlZ0V4cENvbnN0cnVjdG9yOjpzZXRJbnB1dCk6
CisgICAgICAgIChKU0M6OlJlZ0V4cENvbnN0cnVjdG9yOjppbnB1dCk6CisgICAgICAgICAgICAt
IFRoZXNlIGRlZmVyIHRvIFJlZ0V4cENhY2hlZFJlc3VsdC4KKyAgICAgICAgKEpTQzo6UmVnRXhw
Q29uc3RydWN0b3I6OnBlcmZvcm1NYXRjaCk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBNYXRj
aGVzQXJyYXkuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6UmVnRXhwTWF0Y2hlc0FycmF5Ojp2
aXNpdENoaWxkcmVuKToKKyAgICAgICAgICAgIC0gRWVlZXAhIGFkZGVkIG1pc3NpbmcgdmlzaXRD
aGlsZHJlbiEKKyAgICAgICAgKEpTQzo6UmVnRXhwTWF0Y2hlc0FycmF5OjpmaW5pc2hDcmVhdGlv
bik6CisgICAgICAgIChKU0M6OlJlZ0V4cE1hdGNoZXNBcnJheTo6cmVpZnlBbGxQcm9wZXJ0aWVz
KToKKyAgICAgICAgKEpTQzo6UmVnRXhwTWF0Y2hlc0FycmF5OjpyZWlmeU1hdGNoUHJvcGVydHkp
OgorICAgICAgICAgICAgLSBNb3ZlZCBmcm9tIFJlZ0V4cENvbnN0cnVjdG9yLmNwcC4KKyAgICAg
ICAgKEpTQzo6UmVnRXhwTWF0Y2hlc0FycmF5OjpsZWZ0Q29udGV4dCk6CisgICAgICAgIChKU0M6
OlJlZ0V4cE1hdGNoZXNBcnJheTo6cmlnaHRDb250ZXh0KToKKyAgICAgICAgICAgIC0gU2luY2Ug
dGhlIG1hdGNoIHN0YXJ0LworICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5Lmg6
CisgICAgICAgIChSZWdFeHBNYXRjaGVzQXJyYXkpOgorICAgICAgICAgICAgLSBEZWNsYXJlIG5l
dyBtZXRob2RzICYgc3RydWN0dXJlIGZsYWdzLgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6UmVnRXhwT2JqZWN0OjptYXRjaCk6CisgICAgICAgICAg
ICAtIHBlcmZvcm1NYXRjaCBub3cgcmVxdWlyZXMgdGhlIEpTU3RyaW5nIGlucHV0LCB0byBjYWNo
ZS4KKyAgICAgICAgKiBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6
OnJlbW92ZVVzaW5nUmVnRXhwU2VhcmNoKToKKyAgICAgICAgKEpTQzo6cmVwbGFjZVVzaW5nUmVn
RXhwU2VhcmNoKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jTWF0Y2gpOgorICAgICAg
ICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNTZWFyY2gpOgorICAgICAgICAgICAgLSBwZXJmb3JtTWF0
Y2ggbm93IHJlcXVpcmVzIHRoZSBKU1N0cmluZyBpbnB1dCwgdG8gY2FjaGUuCisKIDIwMTItMDMt
MjMgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBT
aW1wbGlmeSBtZW1vcnkgdXNhZ2UgdHJhY2tpbmcgaW4gQ29waWVkU3BhY2UKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMTE3NDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtMzY1LDYgKzM2NSw4IEBACiAJCTg2MEJEODAxMTQ4RUE2RjIwMDExMkIyRiAv
KiBJbnRyaW5zaWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDg2QkY2NDJBMTQ4REIyQjUwMDRERTM2QSAvKiBJbnRyaW5zaWMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjI2QkVDRjExOTI4RTM5MDA3
ODJGQUIgLyogU3RyaW5nU3RhdGljcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NjI2QkVDRTExOTI4RTM5MDA3ODJGQUIgLyogU3RyaW5nU3RhdGlj
cy5jcHAgKi87IH07CiAJCTg2M0IyM0UwMEZDNjExODkwMDcwM0FBNCAvKiBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg2M0IyM0RGMEZDNjBFNjIwMDcwM0FBNCAvKiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NjQyQzUxMDE1
MUMwNkE5MDA0NkQ0RUYgLyogUmVnRXhwQ2FjaGVkUmVzdWx0LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2Rjc1RUZCMTUxQzA2MkYwMDdDOUJBMyAv
KiBSZWdFeHBDYWNoZWRSZXN1bHQuY3BwICovOyB9OworCQk4NjQyQzUxMjE1MUMwODNEMDA0NkQ0
RUYgLyogUmVnRXhwTWF0Y2hlc0FycmF5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg2Rjc1RUZEMTUxQzA2MkYwMDdDOUJBMyAvKiBSZWdFeHBNYXRj
aGVzQXJyYXkuY3BwICovOyB9OwogCQk4NjQzOEZDNDEyNjU1MDNFMDBFMERGQ0EgLyogU3RyaW5n
QnVpbGRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4NjQzOEZDMzEyNjU1MDNFMDBFMERGQ0EgLyogU3RyaW5nQnVpbGRlci5jcHAgKi87IH07CiAJ
CTg2NTY1NzQyMTE1QkUzREEwMDI5MUY0MCAvKiBDU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NTY1NzQwMTE1QkUzREEwMDI5MUY0MCAv
KiBDU3RyaW5nLmNwcCAqLzsgfTsKIAkJODY1QTMwRjExMzUwMDdFMTAwQ0RCNDlFIC8qIEpTVmFs
dWVJbmxpbmVNZXRob2RzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NjVBMzBGMDEzNTAwN0UxMDBDREI0OUUgLyogSlNWYWx1ZUlubGluZU1ldGhvZHMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTIy
MSw2ICsxMjIzLDkgQEAKIAkJODZFQ0EzRTkxMzJERUYxQzAwMkIyQUQ3IC8qIERGR05vZGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHTm9kZS5oOyBwYXRoID0gZGZnL0RG
R05vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODZFQ0EzRjkxMzJERjI1QTAw
MkIyQUQ3IC8qIERGR1Njb3JlQm9hcmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gREZHU2NvcmVCb2FyZC5oOyBwYXRoID0gZGZnL0RGR1Njb3JlQm9hcmQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODZGMzg4NTgxMjExMzBDQTAwN0E3Q0UzIC8qIEF0b21pY1N0
cmluZ0hhc2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQXRvbWljU3RyaW5n
SGFzaC5oOyBwYXRoID0gdGV4dC9BdG9taWNTdHJpbmdIYXNoLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTg2Rjc1RUZCMTUxQzA2MkYwMDdDOUJBMyAvKiBSZWdFeHBDYWNoZWRSZXN1
bHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVnRXhwQ2FjaGVk
UmVzdWx0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODZGNzVFRkMxNTFDMDYy
RjAwN0M5QkEzIC8qIFJlZ0V4cENhY2hlZFJlc3VsdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZWdFeHBDYWNoZWRSZXN1bHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJODZGNzVFRkQxNTFDMDYyRjAwN0M5QkEzIC8qIFJlZ0V4cE1hdGNoZXNBcnJheS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWdFeHBNYXRjaGVzQXJyYXku
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkZBOUU4RjE0MkJCQjJEMDAxNzcz
QjcgLyogSlNCb3VuZEZ1bmN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTQm91bmRGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTg2RkE5RTkwMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNCb3VuZEZ1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTkwMjEzRTNCMTIzQTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0
aWNzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lbW9yeVN0YXRp
c3RpY3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjM5Niw5ICsyNDAxLDEy
IEBACiAJCQkJRjY5MkE4N0UwMjU1NTk3RDAxRkY2MEY3IC8qIFJlZ0V4cC5oICovLAogCQkJCUEx
NzEyQjNBMTFDN0IyMTIwMDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5jcHAgKi8sCiAJCQkJQTE3MTJC
M0UxMUM3QjIyODAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmggKi8sCisJCQkJODZGNzVFRkIxNTFD
MDYyRjAwN0M5QkEzIC8qIFJlZ0V4cENhY2hlZFJlc3VsdC5jcHAgKi8sCisJCQkJODZGNzVFRkMx
NTFDMDYyRjAwN0M5QkEzIC8qIFJlZ0V4cENhY2hlZFJlc3VsdC5oICovLAogCQkJCUJDRDIwMkJE
MEUxNzA2QTcwMDJDN0U4MiAvKiBSZWdFeHBDb25zdHJ1Y3Rvci5jcHAgKi8sCiAJCQkJQkNEMjAy
QkUwRTE3MDZBNzAwMkM3RTgyIC8qIFJlZ0V4cENvbnN0cnVjdG9yLmggKi8sCiAJCQkJQTE3MTJC
NDAxMUM3QjIzNTAwN0E1MzE1IC8qIFJlZ0V4cEtleS5oICovLAorCQkJCTg2Rjc1RUZEMTUxQzA2
MkYwMDdDOUJBMyAvKiBSZWdFeHBNYXRjaGVzQXJyYXkuY3BwICovLAogCQkJCTkzQ0VEREZCMEVB
OTFFRTYwMDI1OEVCRSAvKiBSZWdFeHBNYXRjaGVzQXJyYXkuaCAqLywKIAkJCQlGNjkyQTg3QjAy
NTU1OTdEMDFGRjYwRjcgLyogUmVnRXhwT2JqZWN0LmNwcCAqLywKIAkJCQlGNjkyQTg3QzAyNTU1
OTdEMDFGRjYwRjcgLyogUmVnRXhwT2JqZWN0LmggKi8sCkBAIC0zNzE3LDYgKzM3MjUsOCBAQAog
CQkJCTBGNTZBMUQ1MTUwMDFDRjQwMDI5OTJCMSAvKiBFeGVjdXRpb25Db3VudGVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBBNDMzN0JCMTUwNjIxODgwMDk5MUM5NSAvKiBERkdSZWR1bmRhbnRQ
aGlFbGltaW5hdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQTU4MUJBMTUwRTk1
MkMwMEI5QTJEOSAvKiBERkdOb2RlRmxhZ3MuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJODY0MkM1
MTAxNTFDMDZBOTAwNDZENEVGIC8qIFJlZ0V4cENhY2hlZFJlc3VsdC5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk4NjQyQzUxMjE1MUMwODNEMDA0NkQ0RUYgLyogUmVnRXhwTWF0Y2hlc0FycmF5LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVn
RXhwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHAuY3BwCShyZXZpc2lvbiAxMTE3NDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzEsMTEgKzEzMSwxMSBAQCB2b2lkIFJl
Z0V4cEZ1bmN0aW9uYWxUZXN0Q29sbGVjdG9yOjpvdXRwCiAgICAgb3V0cHV0RXNjYXBlZFVTdHJp
bmcocyk7CiAgICAgZnByaW50ZihtX2ZpbGUsICJcIiwgJWQsICVkLCAoIiwgc3RhcnRPZmZzZXQs
IHJlc3VsdCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8PSByZWdFeHAtPm51bVN1YnBh
dHRlcm5zKCk7IGkrKykgewotICAgICAgICBpbnQgc3ViUGF0dGVybkJlZ2luID0gb3ZlY3Rvcltp
ICogMl07Ci0gICAgICAgIGludCBzdWJQYXR0ZXJuRW5kID0gb3ZlY3RvcltpICogMiArIDFdOwot
ICAgICAgICBpZiAoc3ViUGF0dGVybkJlZ2luID09IC0xKQotICAgICAgICAgICAgc3ViUGF0dGVy
bkVuZCA9IC0xOwotICAgICAgICBmcHJpbnRmKG1fZmlsZSwgIiVkLCAlZCIsIHN1YlBhdHRlcm5C
ZWdpbiwgc3ViUGF0dGVybkVuZCk7CisgICAgICAgIGludCBzdWJwYXR0ZXJuQmVnaW4gPSBvdmVj
dG9yW2kgKiAyXTsKKyAgICAgICAgaW50IHN1YnBhdHRlcm5FbmQgPSBvdmVjdG9yW2kgKiAyICsg
MV07CisgICAgICAgIGlmIChzdWJwYXR0ZXJuQmVnaW4gPT0gLTEpCisgICAgICAgICAgICBzdWJw
YXR0ZXJuRW5kID0gLTE7CisgICAgICAgIGZwcmludGYobV9maWxlLCAiJWQsICVkIiwgc3VicGF0
dGVybkJlZ2luLCBzdWJwYXR0ZXJuRW5kKTsKICAgICAgICAgaWYgKGkgPCByZWdFeHAtPm51bVN1
YnBhdHRlcm5zKCkpCiAgICAgICAgICAgICBmcHV0cygiLCAiLCBtX2ZpbGUpOwogICAgIH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hlZFJlc3VsdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ2FjaGVk
UmVzdWx0LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cENhY2hlZFJlc3VsdC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlJlZ0V4cENhY2hlZFJlc3VsdC5oIgorCisjaW5jbHVkZSAiUmVn
RXhwTWF0Y2hlc0FycmF5LmgiCisKK25hbWVzcGFjZSBKU0MgeworCit2b2lkIFJlZ0V4cENhY2hl
ZFJlc3VsdDo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBpZiAo
bV9yZXN1bHQpIHsKKyAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1fbGFzdElucHV0KTsKKyAgICAg
ICAgdmlzaXRvci5hcHBlbmQoJm1fbGFzdFJlZ0V4cCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
dmlzaXRvci5hcHBlbmQoJm1fcmVpZmllZElucHV0KTsKKyAgICAgICAgdmlzaXRvci5hcHBlbmQo
Jm1fcmVpZmllZFJlc3VsdCk7CisgICAgfQorfQorCitSZWdFeHBNYXRjaGVzQXJyYXkqIFJlZ0V4
cENhY2hlZFJlc3VsdDo6bGFzdFJlc3VsdChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvd25l
cikKK3sKKyAgICBpZiAobV9yZXN1bHQpIHsKKyAgICAgICAgbV9yZWlmaWVkSW5wdXQuc2V0KGV4
ZWMtPmdsb2JhbERhdGEoKSwgb3duZXIsIG1fbGFzdElucHV0LmdldCgpKTsKKyAgICAgICAgbV9y
ZWlmaWVkUmVzdWx0LnNldChleGVjLT5nbG9iYWxEYXRhKCksIG93bmVyLCBSZWdFeHBNYXRjaGVz
QXJyYXk6OmNyZWF0ZShleGVjLCBtX2xhc3RJbnB1dC5nZXQoKSwgbV9sYXN0UmVnRXhwLmdldCgp
LCBtX3Jlc3VsdCkpOworICAgICAgICBtX3Jlc3VsdCA9IE1hdGNoUmVzdWx0OjpmYWlsZWQoKTsK
KyAgICB9CisgICAgcmV0dXJuIG1fcmVpZmllZFJlc3VsdC5nZXQoKTsKK30KKwordm9pZCBSZWdF
eHBDYWNoZWRSZXN1bHQ6OnNldElucHV0KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG93bmVy
LCBKU1N0cmluZyogaW5wdXQpCit7CisgICAgLy8gTWFrZSBzdXJlIHdlJ3JlIHJlaWZpZWQsIG90
aGVyd2lzZSBtX3JlaWZpZWRJbnB1dCB3aWxsIGJlIGlnbm9yZWQuCisgICAgbGFzdFJlc3VsdChl
eGVjLCBvd25lcik7CisgICAgQVNTRVJUKCFtX3Jlc3VsdCk7CisgICAgbV9yZWlmaWVkSW5wdXQu
c2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgb3duZXIsIGlucHV0KTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNoZWRS
ZXN1bHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBDYWNoZWRSZXN1bHQuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cENhY2hlZFJlc3VsdC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYg
UmVnRXhwQ2FjaGVkUmVzdWx0X2gKKyNkZWZpbmUgUmVnRXhwQ2FjaGVkUmVzdWx0X2gKKworI2lu
Y2x1ZGUgIlJlZ0V4cE9iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworICAgIGNsYXNzIEpT
U3RyaW5nOworICAgIGNsYXNzIFJlZ0V4cE1hdGNoZXNBcnJheTsKKworICAgIC8vIFJlZ0V4cENh
Y2hlZFJlc3VsdCBpcyB1c2VkIHRvIHRyYWNrIHRoZSBjYWNoZWQgcmVzdWx0cyBvZiB0aGUgbGFz
dAorICAgIC8vIG1hdGNoLCBzdG9yZXMgb24gdGhlIFJlZ0V4cCBjb25zdHJ1Y3RvciAoZS5nLiAk
JiwgJF8sICQxLCAkMiAuLi4pLgorICAgIC8vIFRoZXNlIHZhbHVlcyB3aWxsIGJlIGxhemlseSBn
ZW5lcmF0ZWQgb24gZGVtYW5kLCBzbyB0aGUgY2FjaGVkIHJlc3VsdAorICAgIC8vIG1heSBiZSBp
biBhIGxhenkgb3IgcmVpZmllZCBzdGF0ZS4gQSBsYXp5IHN0YXRlIGlzIGluZGljYXRlZCBieSBh
CisgICAgLy8gdmFsdWUgb2YgbV9yZXN1bHQgaW5kaWNhdGluZyBhIHN1Y2Nlc3NmdWwgbWF0Y2gs
IGFuZCBhIHJlaWZpZWQgc3RhdGUKKyAgICAvLyBpcyBpbmRpY2F0ZWQgYnkgc2V0dGluZyBtX3Jl
c3VsdCB0byBNYXRjaFJlc3VsdDo6ZmFpbGVkKCkuCisgICAgLy8gRm9sbG93aW5nIGEgc3VjY2Vz
c2Z1bCBtYXRjaCwgbV9yZXN1bHQsIG1fbGFzdElucHV0IGFuZCBtX2xhc3RSZWdFeHAKKyAgICAv
LyBjYW4gYmUgdXNlZCB0byByZWlmeSB0aGUgcmVzdWx0cyBmcm9tIHRoZSBtYXRjaCwgZm9sbG93
aW5nIHJlaWZpY2F0aW9uCisgICAgLy8gbV9yZWlmaWVkUmVzdWx0IGFuZCBtX3JlaWZpZWRJbnB1
dCBob2xkIHRoZSBjYWNoZWQgcmVzdWx0cy4KKyAgICBjbGFzcyBSZWdFeHBDYWNoZWRSZXN1bHQg
eworICAgIHB1YmxpYzoKKyAgICAgICAgUmVnRXhwQ2FjaGVkUmVzdWx0KEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgSlNPYmplY3QqIG93bmVyLCBSZWdFeHAqIGVtcHR5UmVnRXhwKQorICAgICAg
ICAgICAgOiBtX3Jlc3VsdCgwLCAwKQorICAgICAgICB7CisgICAgICAgICAgICBtX2xhc3RJbnB1
dC5zZXQoZ2xvYmFsRGF0YSwgb3duZXIsIGpzRW1wdHlTdHJpbmcoJmdsb2JhbERhdGEpKTsKKyAg
ICAgICAgICAgIG1fbGFzdFJlZ0V4cC5zZXQoZ2xvYmFsRGF0YSwgb3duZXIsIGVtcHR5UmVnRXhw
KTsKKyAgICAgICAgICAgIG1fcmVpZmllZFJlc3VsdC5jbGVhcigpOworICAgICAgICAgICAgbV9y
ZWlmaWVkSW5wdXQuY2xlYXIoKTsKKyAgICAgICAgfQorCisgICAgICAgIEFMV0FZU19JTkxJTkUg
dm9pZCByZWNvcmQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU09iamVjdCogb3duZXIsIFJl
Z0V4cCogcmVnRXhwLCBKU1N0cmluZyogaW5wdXQsIE1hdGNoUmVzdWx0IHJlc3VsdCkKKyAgICAg
ICAgeworICAgICAgICAgICAgbV9sYXN0UmVnRXhwLnNldChnbG9iYWxEYXRhLCBvd25lciwgcmVn
RXhwKTsKKyAgICAgICAgICAgIG1fbGFzdElucHV0LnNldChnbG9iYWxEYXRhLCBvd25lciwgaW5w
dXQpOworICAgICAgICAgICAgbV9yZXN1bHQgPSByZXN1bHQ7CisgICAgICAgIH0KKworICAgICAg
ICBSZWdFeHBNYXRjaGVzQXJyYXkqIGxhc3RSZXN1bHQoRXhlY1N0YXRlKiwgSlNPYmplY3QqIG93
bmVyKTsKKyAgICAgICAgdm9pZCBzZXRJbnB1dChFeGVjU3RhdGUqLCBKU09iamVjdCogb3duZXIs
IEpTU3RyaW5nKik7CisKKyAgICAgICAgSlNTdHJpbmcqIGlucHV0KCkKKyAgICAgICAgeworICAg
ICAgICAgICAgLy8gSWYgbV9yZXN1bHQgc2hvd2FzIGEgbWF0Y2ggdGhlbiB3ZSdyZSBpbiBhIGxh
enkgc3RhdGUsIHNvIG1fbGFzdElucHV0CisgICAgICAgICAgICAvLyBpcyB0aGUgbW9zdCByZWNl
bnQgdmFsdWUgb2YgdGhlIGlucHV0IHByb3BlcnR5LiBJZiBub3QgdGhlbiB3ZSBoYXZlCisgICAg
ICAgICAgICAvLyByZWlmaWVkLCBpbiB3aGljaCBjYXNlIG1fcmVpZmllZElucHV0IHdpbGwgY29u
dGFpbiB0aGUgY29ycmVjdCB2YWx1ZS4KKyAgICAgICAgICAgIHJldHVybiBtX3Jlc3VsdCA/IG1f
bGFzdElucHV0LmdldCgpIDogbV9yZWlmaWVkSW5wdXQuZ2V0KCk7CisgICAgICAgIH0KKworICAg
ICAgICB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKTsKKworICAgIHByaXZhdGU6Cisg
ICAgICAgIE1hdGNoUmVzdWx0IG1fcmVzdWx0OworICAgICAgICBXcml0ZUJhcnJpZXI8SlNTdHJp
bmc+IG1fbGFzdElucHV0OworICAgICAgICBXcml0ZUJhcnJpZXI8UmVnRXhwPiBtX2xhc3RSZWdF
eHA7CisgICAgICAgIFdyaXRlQmFycmllcjxSZWdFeHBNYXRjaGVzQXJyYXk+IG1fcmVpZmllZFJl
c3VsdDsKKyAgICAgICAgV3JpdGVCYXJyaWVyPEpTU3RyaW5nPiBtX3JlaWZpZWRJbnB1dDsKKyAg
ICB9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIFJlZ0V4cENhY2hlZFJlc3Vs
dF9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rv
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAxMTE3NDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyLDIx
ICsyMiw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVnRXhwQ29uc3RydWN0
b3IuaCIKIAotI2luY2x1ZGUgIkFycmF5UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiRXJyb3IuaCIK
LSNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCi0jaW5jbHVkZSAiSlNBcnJheS5oIgotI2lu
Y2x1ZGUgIkpTRnVuY3Rpb24uaCIKLSNpbmNsdWRlICJKU1N0cmluZy5oIgotI2luY2x1ZGUgIkxv
b2t1cC5oIgotI2luY2x1ZGUgIk9iamVjdFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIlJlZ0V4cE1h
dGNoZXNBcnJheS5oIgotI2luY2x1ZGUgIlJlZ0V4cE9iamVjdC5oIgogI2luY2x1ZGUgIlJlZ0V4
cFByb3RvdHlwZS5oIgotI2luY2x1ZGUgIlJlZ0V4cC5oIgotI2luY2x1ZGUgIlJlZ0V4cENhY2hl
LmgiCi0jaW5jbHVkZSAiVVN0cmluZ0NvbmNhdGVuYXRlLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NP
d25QdHIuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTY5LDggKzU3LDYgQEAgQVNTRVJUX0NM
QVNTX0ZJVFNfSU5fQ0VMTChSZWdFeHBDb25zdHJ1YwogCiBjb25zdCBDbGFzc0luZm8gUmVnRXhw
Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkludGVybmFsRnVuY3Rpb246OnNf
aW5mbywgMCwgRXhlY1N0YXRlOjpyZWdFeHBDb25zdHJ1Y3RvclRhYmxlLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKFJlZ0V4cENvbnN0cnVjdG9yKSB9OwogCi1jb25zdCBDbGFzc0luZm8gUmVnRXhwTWF0
Y2hlc0FycmF5OjpzX2luZm8gPSB7IkFycmF5IiwgJkpTQXJyYXk6OnNfaW5mbywgMCwgMCwgQ1JF
QVRFX01FVEhPRF9UQUJMRShSZWdFeHBNYXRjaGVzQXJyYXkpfTsKLQogLyogU291cmNlIGZvciBS
ZWdFeHBDb25zdHJ1Y3Rvci5sdXQuaAogQGJlZ2luIHJlZ0V4cENvbnN0cnVjdG9yVGFibGUKICAg
ICBpbnB1dCAgICAgICAgICAgcmVnRXhwQ29uc3RydWN0b3JJbnB1dCAgICAgICAgICBOb25lCkBA
IC05Nyw4ICs4MywxMCBAQCBjb25zdCBDbGFzc0luZm8gUmVnRXhwTWF0Y2hlc0FycmF5OjpzX2lu
CiBAZW5kCiAqLwogCi1SZWdFeHBDb25zdHJ1Y3Rvcjo6UmVnRXhwQ29uc3RydWN0b3IoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCitSZWdFeHBDb25z
dHJ1Y3Rvcjo6UmVnRXhwQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZ0V4cFByb3RvdHlwZSogcmVnRXhwUHJvdG90eXBlKQog
ICAgIDogSW50ZXJuYWxGdW5jdGlvbihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkKKyAgICAsIG1f
Y2FjaGVkUmVzdWx0KGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCB0aGlzLCByZWdFeHBQcm90
b3R5cGUtPnJlZ0V4cCgpKQorICAgICwgbV9tdWx0aWxpbmUoZmFsc2UpCiB7CiB9CiAKQEAgLTEx
OSw4MyArMTA3LDUxIEBAIHZvaWQgUmVnRXhwQ29uc3RydWN0b3I6OmRlc3Ryb3koSlNDZWxsKiAK
ICAgICBqc0Nhc3Q8UmVnRXhwQ29uc3RydWN0b3IqPihjZWxsKS0+UmVnRXhwQ29uc3RydWN0b3I6
On5SZWdFeHBDb25zdHJ1Y3RvcigpOwogfQogCi12b2lkIFJlZ0V4cE1hdGNoZXNBcnJheTo6Zmlu
aXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQotewotICAgIEJhc2U6OmZpbmlz
aENyZWF0aW9uKGdsb2JhbERhdGEsIG1fcmVnRXhwLT5udW1TdWJwYXR0ZXJucygpICsgMSk7Ci19
Ci0KLXZvaWQgUmVnRXhwTWF0Y2hlc0FycmF5OjpyZWlmeUFsbFByb3BlcnRpZXMoRXhlY1N0YXRl
KiBleGVjKQordm9pZCBSZWdFeHBDb25zdHJ1Y3Rvcjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNl
bGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEFTU0VSVChtX3N0YXRlICE9IFJlaWZp
ZWRBbGwpOwotICAgIEFTU0VSVChtX3Jlc3VsdCk7Ci0gCi0gICAgcmVpZnlNYXRjaFByb3BlcnR5
SWZOZWNlc3NhcnkoZXhlYyk7Ci0KLSAgICBpZiAodW5zaWduZWQgbnVtU3VicGF0dGVybnMgPSBt
X3JlZ0V4cC0+bnVtU3VicGF0dGVybnMoKSkgewotICAgICAgICBWZWN0b3I8aW50LCAzMj4gc3Vi
UGF0dGVyblJlc3VsdHM7Ci0gICAgICAgIGludCBwb3NpdGlvbiA9IG1fcmVnRXhwLT5tYXRjaChl
eGVjLT5nbG9iYWxEYXRhKCksIG1faW5wdXQtPnZhbHVlKGV4ZWMpLCBtX3Jlc3VsdC5zdGFydCwg
JnN1YlBhdHRlcm5SZXN1bHRzKTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChwb3NpdGlvbiwgcG9z
aXRpb24gPj0gMCAmJiBzdGF0aWNfY2FzdDxzaXplX3Q+KHBvc2l0aW9uKSA9PSBtX3Jlc3VsdC5z
dGFydCk7Ci0gICAgICAgIEFTU0VSVChtX3Jlc3VsdC5zdGFydCA9PSBzdGF0aWNfY2FzdDxzaXpl
X3Q+KHN1YlBhdHRlcm5SZXN1bHRzWzBdKSk7Ci0gICAgICAgIEFTU0VSVChtX3Jlc3VsdC5lbmQg
PT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzdWJQYXR0ZXJuUmVzdWx0c1sxXSkpOwotCi0gICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDE7IGkgPD0gbnVtU3VicGF0dGVybnM7ICsraSkgewotICAgICAg
ICAgICAgaW50IHN0YXJ0ID0gc3ViUGF0dGVyblJlc3VsdHNbMiAqIGldOwotICAgICAgICAgICAg
aWYgKHN0YXJ0ID49IDApCi0gICAgICAgICAgICAgICAgcHV0RGlyZWN0SW5kZXgoZXhlYywgaSwg
anNTdWJzdHJpbmcoZXhlYywgbV9pbnB1dC5nZXQoKSwgc3RhcnQsIHN1YlBhdHRlcm5SZXN1bHRz
WzIgKiBpICsgMV0gLSBzdGFydCksIGZhbHNlKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICBwdXREaXJlY3RJbmRleChleGVjLCBpLCBqc1VuZGVmaW5lZCgpLCBmYWxzZSk7Ci0g
ICAgICAgIH0KLSAgICB9CisgICAgUmVnRXhwQ29uc3RydWN0b3IqIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8UmVnRXhwQ29uc3RydWN0b3IqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKHRoaXNPYmplY3QsICZzX2luZm8pOworICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZs
YWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhv
dXRTZXR0aW5nRmxhZyk7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBl
SW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CiAKLSAgICBQdXRQcm9wZXJ0eVNsb3Qg
c2xvdDsKLSAgICBKU0FycmF5OjpwdXQodGhpcywgZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygp
LmluZGV4LCBqc051bWJlcihtX3Jlc3VsdC5zdGFydCksIHNsb3QpOwotICAgIEpTQXJyYXk6OnB1
dCh0aGlzLCBleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuaW5wdXQsIG1faW5wdXQuZ2V0KCks
IHNsb3QpOwotCi0gICAgbV9zdGF0ZSA9IFJlaWZpZWRBbGw7CisgICAgQmFzZTo6dmlzaXRDaGls
ZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICB0aGlzT2JqZWN0LT5tX2NhY2hlZFJlc3Vs
dC52aXNpdENoaWxkcmVuKHZpc2l0b3IpOwogfQogCi12b2lkIFJlZ0V4cE1hdGNoZXNBcnJheTo6
cmVpZnlNYXRjaFByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYykKK0pTVmFsdWUgUmVnRXhwQ29uc3Ry
dWN0b3I6OmdldEJhY2tyZWYoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpKQogewotICAgIEFT
U0VSVChtX3N0YXRlID09IFJlaWZpZWROb25lKTsKLSAgICBBU1NFUlQobV9yZXN1bHQpOwotICAg
IHB1dERpcmVjdEluZGV4KGV4ZWMsIDAsIGpzU3Vic3RyaW5nKGV4ZWMsIG1faW5wdXQuZ2V0KCks
IG1fcmVzdWx0LnN0YXJ0LCBtX3Jlc3VsdC5lbmQgLSBtX3Jlc3VsdC5zdGFydCksIGZhbHNlKTsK
LSAgICBtX3N0YXRlID0gUmVpZmllZE1hdGNoOwotfQorICAgIFJlZ0V4cE1hdGNoZXNBcnJheSog
YXJyYXkgPSBtX2NhY2hlZFJlc3VsdC5sYXN0UmVzdWx0KGV4ZWMsIHRoaXMpOwogCi1KU1ZhbHVl
IFJlZ0V4cENvbnN0cnVjdG9yOjpnZXRCYWNrcmVmKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQg
aSkgY29uc3QKLXsKLSAgICBpZiAoIWQubGFzdE92ZWN0b3IoKS5pc0VtcHR5KCkgJiYgaSA8PSBk
Lmxhc3ROdW1TdWJQYXR0ZXJucykgewotICAgICAgICBpbnQgc3RhcnQgPSBkLmxhc3RPdmVjdG9y
KClbMiAqIGldOwotICAgICAgICBpZiAoc3RhcnQgPj0gMCkKLSAgICAgICAgICAgIHJldHVybiBq
c1N1YnN0cmluZyhleGVjLCBkLmxhc3RJbnB1dCwgc3RhcnQsIGQubGFzdE92ZWN0b3IoKVsyICog
aSArIDFdIC0gc3RhcnQpOworICAgIGlmIChpIDwgYXJyYXktPmxlbmd0aCgpKSB7CisgICAgICAg
IEpTVmFsdWUgcmVzdWx0ID0gSlNWYWx1ZShhcnJheSkuZ2V0KGV4ZWMsIGkpOworICAgICAgICBB
U1NFUlQocmVzdWx0LmlzU3RyaW5nKCkgfHwgcmVzdWx0LmlzVW5kZWZpbmVkKCkpOworICAgICAg
ICBpZiAoIXJlc3VsdC5pc1VuZGVmaW5lZCgpKQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICB9CiAgICAgcmV0dXJuIGpzRW1wdHlTdHJpbmcoZXhlYyk7CiB9CiAKLUpTVmFsdWUgUmVn
RXhwQ29uc3RydWN0b3I6OmdldExhc3RQYXJlbihFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CitKU1Zh
bHVlIFJlZ0V4cENvbnN0cnVjdG9yOjpnZXRMYXN0UGFyZW4oRXhlY1N0YXRlKiBleGVjKQogewot
ICAgIHVuc2lnbmVkIGkgPSBkLmxhc3ROdW1TdWJQYXR0ZXJuczsKLSAgICBpZiAoaSA+IDApIHsK
LSAgICAgICAgQVNTRVJUKCFkLmxhc3RPdmVjdG9yKCkuaXNFbXB0eSgpKTsKLSAgICAgICAgaW50
IHN0YXJ0ID0gZC5sYXN0T3ZlY3RvcigpWzIgKiBpXTsKLSAgICAgICAgaWYgKHN0YXJ0ID49IDAp
Ci0gICAgICAgICAgICByZXR1cm4ganNTdWJzdHJpbmcoZXhlYywgZC5sYXN0SW5wdXQsIHN0YXJ0
LCBkLmxhc3RPdmVjdG9yKClbMiAqIGkgKyAxXSAtIHN0YXJ0KTsKKyAgICBSZWdFeHBNYXRjaGVz
QXJyYXkqIGFycmF5ID0gbV9jYWNoZWRSZXN1bHQubGFzdFJlc3VsdChleGVjLCB0aGlzKTsKKyAg
ICB1bnNpZ25lZCBsZW5ndGggPSBhcnJheS0+bGVuZ3RoKCk7CisgICAgaWYgKGxlbmd0aCA+IDEp
IHsKKyAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBKU1ZhbHVlKGFycmF5KS5nZXQoZXhlYywgbGVu
Z3RoIC0gMSk7CisgICAgICAgIEFTU0VSVChyZXN1bHQuaXNTdHJpbmcoKSB8fCByZXN1bHQuaXNV
bmRlZmluZWQoKSk7CisgICAgICAgIGlmICghcmVzdWx0LmlzVW5kZWZpbmVkKCkpCisgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICByZXR1cm4ganNFbXB0eVN0cmluZyhleGVj
KTsKIH0KIAotSlNWYWx1ZSBSZWdFeHBDb25zdHJ1Y3Rvcjo6Z2V0TGVmdENvbnRleHQoRXhlY1N0
YXRlKiBleGVjKSBjb25zdAorSlNWYWx1ZSBSZWdFeHBDb25zdHJ1Y3Rvcjo6Z2V0TGVmdENvbnRl
eHQoRXhlY1N0YXRlKiBleGVjKQogewotICAgIGlmICghZC5sYXN0T3ZlY3RvcigpLmlzRW1wdHko
KSkKLSAgICAgICAgcmV0dXJuIGpzU3Vic3RyaW5nKGV4ZWMsIGQubGFzdElucHV0LCAwLCBkLmxh
c3RPdmVjdG9yKClbMF0pOwotICAgIHJldHVybiBqc0VtcHR5U3RyaW5nKGV4ZWMpOworICAgIHJl
dHVybiBtX2NhY2hlZFJlc3VsdC5sYXN0UmVzdWx0KGV4ZWMsIHRoaXMpLT5sZWZ0Q29udGV4dChl
eGVjKTsKIH0KIAotSlNWYWx1ZSBSZWdFeHBDb25zdHJ1Y3Rvcjo6Z2V0UmlnaHRDb250ZXh0KEV4
ZWNTdGF0ZSogZXhlYykgY29uc3QKK0pTVmFsdWUgUmVnRXhwQ29uc3RydWN0b3I6OmdldFJpZ2h0
Q29udGV4dChFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgaWYgKCFkLmxhc3RPdmVjdG9yKCkuaXNF
bXB0eSgpKQotICAgICAgICByZXR1cm4ganNTdWJzdHJpbmcoZXhlYywgZC5sYXN0SW5wdXQsIGQu
bGFzdE92ZWN0b3IoKVsxXSwgZC5sYXN0SW5wdXQubGVuZ3RoKCkgLSBkLmxhc3RPdmVjdG9yKClb
MV0pOwotICAgIHJldHVybiBqc0VtcHR5U3RyaW5nKGV4ZWMpOworICAgIHJldHVybiBtX2NhY2hl
ZFJlc3VsdC5sYXN0UmVzdWx0KGV4ZWMsIHRoaXMpLT5yaWdodENvbnRleHQoZXhlYyk7CiB9CiAg
ICAgCiBib29sIFJlZ0V4cENvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90JiBzbG90KQpAQCAtMjUzLDkgKzIwOSw5IEBAIEpTVmFsdWUgcmVnRXhwQ29uc3Ry
dWN0b3JEb2xsYXI5KEV4ZWNTdGEKICAgICByZXR1cm4gYXNSZWdFeHBDb25zdHJ1Y3RvcihzbG90
QmFzZSktPmdldEJhY2tyZWYoZXhlYywgOSk7CiB9CiAKLUpTVmFsdWUgcmVnRXhwQ29uc3RydWN0
b3JJbnB1dChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZp
ZXImKQorSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvcklucHV0KEV4ZWNTdGF0ZSosIEpTVmFsdWUg
c2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImKQogewotICAgIHJldHVybiBqc1N0cmluZyhleGVj
LCBhc1JlZ0V4cENvbnN0cnVjdG9yKHNsb3RCYXNlKS0+aW5wdXQoKSk7CisgICAgcmV0dXJuIGFz
UmVnRXhwQ29uc3RydWN0b3Ioc2xvdEJhc2UpLT5pbnB1dCgpOwogfQogCiBKU1ZhbHVlIHJlZ0V4
cENvbnN0cnVjdG9yTXVsdGlsaW5lKEV4ZWNTdGF0ZSosIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0
IElkZW50aWZpZXImKQpAQCAtMjkwLDcgKzI0Niw3IEBAIHZvaWQgUmVnRXhwQ29uc3RydWN0b3I6
OnB1dChKU0NlbGwqIGNlbGwKIAogdm9pZCBzZXRSZWdFeHBDb25zdHJ1Y3RvcklucHV0KEV4ZWNT
dGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2VPYmplY3QsIEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAg
YXNSZWdFeHBDb25zdHJ1Y3RvcihiYXNlT2JqZWN0KS0+c2V0SW5wdXQodmFsdWUudG9TdHJpbmco
ZXhlYyktPnZhbHVlKGV4ZWMpKTsKKyAgICBhc1JlZ0V4cENvbnN0cnVjdG9yKGJhc2VPYmplY3Qp
LT5zZXRJbnB1dChleGVjLCB2YWx1ZS50b1N0cmluZyhleGVjKSk7CiB9CiAKIHZvaWQgc2V0UmVn
RXhwQ29uc3RydWN0b3JNdWx0aWxpbmUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZU9i
amVjdCwgSlNWYWx1ZSB2YWx1ZSkKQEAgLTM1OSwyNiArMzE1LDQgQEAgQ2FsbFR5cGUgUmVnRXhw
Q29uc3RydWN0b3I6OmdldENhbGxEYXRhKAogICAgIHJldHVybiBDYWxsVHlwZUhvc3Q7CiB9CiAK
LXZvaWQgUmVnRXhwQ29uc3RydWN0b3I6OnNldElucHV0KGNvbnN0IFVTdHJpbmcmIGlucHV0KQot
ewotICAgIGQuaW5wdXQgPSBpbnB1dDsKLX0KLQotY29uc3QgVVN0cmluZyYgUmVnRXhwQ29uc3Ry
dWN0b3I6OmlucHV0KCkgY29uc3QKLXsKLSAgICAvLyBDYW4gZGV0ZWN0IGEgZGlzdGluY3QgaW5p
dGlhbCBzdGF0ZSB0aGF0IGlzIGludmlzaWJsZSB0byBKYXZhU2NyaXB0LCBieSBjaGVja2luZyBm
b3IgbnVsbAotICAgIC8vIHN0YXRlIChzaW5jZSBqc1N0cmluZyB0dXJucyBudWxsIHN0cmluZ3Mg
dG8gZW1wdHkgc3RyaW5ncykuCi0gICAgcmV0dXJuIGQuaW5wdXQ7Ci19Ci0KLXZvaWQgUmVnRXhw
Q29uc3RydWN0b3I6OnNldE11bHRpbGluZShib29sIG11bHRpbGluZSkKLXsKLSAgICBkLm11bHRp
bGluZSA9IG11bHRpbGluZTsKLX0KLQotYm9vbCBSZWdFeHBDb25zdHJ1Y3Rvcjo6bXVsdGlsaW5l
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gZC5tdWx0aWxpbmU7Ci19Ci0KIH0gLy8gbmFtZXNwYWNl
IEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0
b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBD
b25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAxMTE3NDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2MSArMjMs
MjIgQEAKIAogI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKICNpbmNsdWRlICJSZWdFeHAu
aCIKKyNpbmNsdWRlICJSZWdFeHBDYWNoZWRSZXN1bHQuaCIKICNpbmNsdWRlICJSZWdFeHBPYmpl
Y3QuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKKwogbmFtZXNwYWNlIEpTQyB7CiAKLSAg
ICBjbGFzcyBSZWdFeHA7CiAgICAgY2xhc3MgUmVnRXhwUHJvdG90eXBlOwotICAgIHN0cnVjdCBS
ZWdFeHBDb25zdHJ1Y3RvclByaXZhdGU7Ci0KLSAgICBzdHJ1Y3QgUmVnRXhwQ29uc3RydWN0b3JQ
cml2YXRlIHsKLSAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAgcHVibGljOgot
ICAgICAgICAvLyBHbG9iYWwgc2VhcmNoIGNhY2hlIC8gc2V0dGluZ3MKLSAgICAgICAgUmVnRXhw
Q29uc3RydWN0b3JQcml2YXRlKCkKLSAgICAgICAgICAgIDogbGFzdE51bVN1YlBhdHRlcm5zKDAp
Ci0gICAgICAgICAgICAsIG11bHRpbGluZShmYWxzZSkKLSAgICAgICAgICAgICwgbGFzdE92ZWN0
b3JJbmRleCgwKQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgICAgICBjb25zdCBWZWN0b3I8
aW50LCAzMj4mIGxhc3RPdmVjdG9yKCkgY29uc3QgeyByZXR1cm4gb3ZlY3RvcltsYXN0T3ZlY3Rv
ckluZGV4XTsgfQotICAgICAgICBWZWN0b3I8aW50LCAzMj4mIGxhc3RPdmVjdG9yKCkgeyByZXR1
cm4gb3ZlY3RvcltsYXN0T3ZlY3RvckluZGV4XTsgfQotICAgICAgICBWZWN0b3I8aW50LCAzMj4m
IHRlbXBPdmVjdG9yKCkgeyByZXR1cm4gb3ZlY3RvcltsYXN0T3ZlY3RvckluZGV4ID8gMCA6IDFd
OyB9Ci0gICAgICAgIHZvaWQgY2hhbmdlTGFzdE92ZWN0b3IoKSB7IGxhc3RPdmVjdG9ySW5kZXgg
PSBsYXN0T3ZlY3RvckluZGV4ID8gMCA6IDE7IH0KLQotICAgICAgICBVU3RyaW5nIGlucHV0Owot
ICAgICAgICBVU3RyaW5nIGxhc3RJbnB1dDsKLSAgICAgICAgVmVjdG9yPGludCwgMzI+IG92ZWN0
b3JbMl07Ci0gICAgICAgIHVuc2lnbmVkIGxhc3ROdW1TdWJQYXR0ZXJucyA6IDMwOwotICAgICAg
ICBib29sIG11bHRpbGluZSA6IDE7Ci0gICAgICAgIHVuc2lnbmVkIGxhc3RPdmVjdG9ySW5kZXgg
OiAxOwotICAgIH07CiAKLSAgICBzdHJ1Y3QgUmVnRXhwUmVzdWx0IHsKLSAgICAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAgcHVibGljOgotICAgICAgICBSZWdFeHBSZXN1bHQoKQot
ICAgICAgICA6IGxhc3ROdW1TdWJQYXR0ZXJucygwKQotICAgICAgICB7Ci0gICAgICAgIH0KLSAg
ICAgICAgCi0gICAgICAgIFJlZ0V4cFJlc3VsdCYgb3BlcmF0b3I9KGNvbnN0IFJlZ0V4cENvbnN0
cnVjdG9yUHJpdmF0ZSYpOwotICAgICAgICAKLSAgICAgICAgVVN0cmluZyBpbnB1dDsKLSAgICAg
ICAgdW5zaWduZWQgbGFzdE51bVN1YlBhdHRlcm5zOwotICAgICAgICBWZWN0b3I8aW50LCAzMj4g
b3ZlY3RvcjsKLSAgICB9OwotICAgIAogICAgIGNsYXNzIFJlZ0V4cENvbnN0cnVjdG9yIDogcHVi
bGljIEludGVybmFsRnVuY3Rpb24gewogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBJbnRl
cm5hbEZ1bmN0aW9uIEJhc2U7CiAKICAgICAgICAgc3RhdGljIFJlZ0V4cENvbnN0cnVjdG9yKiBj
cmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgUmVnRXhwUHJvdG90eXBlKiByZWdFeHBQcm90b3R5cGUpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIFJlZ0V4cENvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPFJlZ0V4cENvbnN0cnVjdG9yPigqZXhlYy0+aGVhcCgpKSkg
UmVnRXhwQ29uc3RydWN0b3IoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAg
UmVnRXhwQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8UmVnRXhwQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBSZWdFeHBDb25zdHJ1Y3Rvcihn
bG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgcmVnRXhwUHJvdG90eXBlKTsKICAgICAgICAgICAgIGNv
bnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbihleGVjLCByZWdFeHBQcm90b3R5cGUpOwogICAgICAg
ICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOwogICAgICAgICB9CkBAIC05NCwzMCArNTUsMzQgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87
CiAKLSAgICAgICAgTWF0Y2hSZXN1bHQgcGVyZm9ybU1hdGNoKEpTR2xvYmFsRGF0YSYsIFJlZ0V4
cCosIGNvbnN0IFVTdHJpbmcmLCBpbnQgc3RhcnRPZmZzZXQsIGludCoqIG92ZWN0b3IgPSAwKTsK
KyAgICAgICAgTWF0Y2hSZXN1bHQgcGVyZm9ybU1hdGNoKEpTR2xvYmFsRGF0YSYsIFJlZ0V4cCos
IEpTU3RyaW5nKiwgY29uc3QgVVN0cmluZyYsIGludCBzdGFydE9mZnNldCwgaW50Kiogb3ZlY3Rv
ciA9IDApOworCisgICAgICAgIHZvaWQgc2V0TXVsdGlsaW5lKGJvb2wgbXVsdGlsaW5lKSB7IG1f
bXVsdGlsaW5lID0gbXVsdGlsaW5lOyB9CisgICAgICAgIGJvb2wgbXVsdGlsaW5lKCkgY29uc3Qg
eyByZXR1cm4gbV9tdWx0aWxpbmU7IH0KIAotICAgICAgICB2b2lkIHNldElucHV0KGNvbnN0IFVT
dHJpbmcmKTsKLSAgICAgICAgY29uc3QgVVN0cmluZyYgaW5wdXQoKSBjb25zdDsKKyAgICAgICAg
SlNWYWx1ZSBnZXRCYWNrcmVmKEV4ZWNTdGF0ZSosIHVuc2lnbmVkKTsKKyAgICAgICAgSlNWYWx1
ZSBnZXRMYXN0UGFyZW4oRXhlY1N0YXRlKik7CisgICAgICAgIEpTVmFsdWUgZ2V0TGVmdENvbnRl
eHQoRXhlY1N0YXRlKik7CisgICAgICAgIEpTVmFsdWUgZ2V0UmlnaHRDb250ZXh0KEV4ZWNTdGF0
ZSopOwogCi0gICAgICAgIHZvaWQgc2V0TXVsdGlsaW5lKGJvb2wpOwotICAgICAgICBib29sIG11
bHRpbGluZSgpIGNvbnN0OworICAgICAgICB2b2lkIHNldElucHV0KEV4ZWNTdGF0ZSogZXhlYywg
SlNTdHJpbmcqIHN0cmluZykgeyBtX2NhY2hlZFJlc3VsdC5zZXRJbnB1dChleGVjLCB0aGlzLCBz
dHJpbmcpOyB9CisgICAgICAgIEpTU3RyaW5nKiBpbnB1dCgpIHsgcmV0dXJuIG1fY2FjaGVkUmVz
dWx0LmlucHV0KCk7IH0KIAotICAgICAgICBKU1ZhbHVlIGdldEJhY2tyZWYoRXhlY1N0YXRlKiwg
dW5zaWduZWQpIGNvbnN0OwotICAgICAgICBKU1ZhbHVlIGdldExhc3RQYXJlbihFeGVjU3RhdGUq
KSBjb25zdDsKLSAgICAgICAgSlNWYWx1ZSBnZXRMZWZ0Q29udGV4dChFeGVjU3RhdGUqKSBjb25z
dDsKLSAgICAgICAgSlNWYWx1ZSBnZXRSaWdodENvbnRleHQoRXhlY1N0YXRlKikgY29uc3Q7Cisg
ICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsK
IAogICAgIHByb3RlY3RlZDoKICAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUq
LCBSZWdFeHBQcm90b3R5cGUqKTsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVj
dHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSW1wbGVtZW50c0hhc0lu
c3RhbmNlIHwgSW50ZXJuYWxGdW5jdGlvbjo6U3RydWN0dXJlRmxhZ3M7CisgICAgICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5
U2xvdCB8IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIAog
ICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZ0V4cENvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlKik7CisgICAgICAgIFJlZ0V4cENvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlKiwgUmVnRXhwUHJvdG90eXBlKik7CiAgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ry
b3koSlNDZWxsKik7CiAgICAgICAgIHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERh
dGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOwogICAgICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0
Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKIAotICAgICAgICBSZWdFeHBDb25zdHJ1Y3Rv
clByaXZhdGUgZDsKKyAgICAgICAgUmVnRXhwQ2FjaGVkUmVzdWx0IG1fY2FjaGVkUmVzdWx0Owor
ICAgICAgICBib29sIG1fbXVsdGlsaW5lOworICAgICAgICBWZWN0b3I8aW50LCAzMj4gbV9vdmVj
dG9yOwogICAgIH07CiAKICAgICBSZWdFeHBDb25zdHJ1Y3RvciogYXNSZWdFeHBDb25zdHJ1Y3Rv
cihKU1ZhbHVlKTsKQEAgLTEzNSwyNSArMTAwLDIyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ZXhwcmVzc2lvbiBtYXRjaGluZyB0aHJvdWdoIHRoZSBwZXJmb3JtTWF0Y2ggZnVuY3Rpb24uIFdl
IHVzZSBjYWNoZWQgcmVzdWx0cyB0byBjYWxjdWxhdGUsIAogICAgICAgZS5nLiwgUmVnRXhwLmxh
c3RNYXRjaCBhbmQgUmVnRXhwLmxlZnRQYXJlbi4KICAgICAqLwotICAgIEFMV0FZU19JTkxJTkUg
TWF0Y2hSZXN1bHQgUmVnRXhwQ29uc3RydWN0b3I6OnBlcmZvcm1NYXRjaChKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIFJlZ0V4cCogciwgY29uc3QgVVN0cmluZyYgcywgaW50IHN0YXJ0T2Zmc2V0
LCBpbnQqKiBvdmVjdG9yKQorICAgIEFMV0FZU19JTkxJTkUgTWF0Y2hSZXN1bHQgUmVnRXhwQ29u
c3RydWN0b3I6OnBlcmZvcm1NYXRjaChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFJlZ0V4cCog
cmVnRXhwLCBKU1N0cmluZyogc3RyaW5nLCBjb25zdCBVU3RyaW5nJiBpbnB1dCwgaW50IHN0YXJ0
T2Zmc2V0LCBpbnQqKiBvdmVjdG9yKQogICAgIHsKLSAgICAgICAgaW50IHBvc2l0aW9uID0gci0+
bWF0Y2goZ2xvYmFsRGF0YSwgcywgc3RhcnRPZmZzZXQsICZkLnRlbXBPdmVjdG9yKCkpOworICAg
ICAgICBpbnQgcG9zaXRpb24gPSByZWdFeHAtPm1hdGNoKGdsb2JhbERhdGEsIGlucHV0LCBzdGFy
dE9mZnNldCwgJm1fb3ZlY3Rvcik7CiAKICAgICAgICAgaWYgKG92ZWN0b3IpCi0gICAgICAgICAg
ICAqb3ZlY3RvciA9IGQudGVtcE92ZWN0b3IoKS5kYXRhKCk7CisgICAgICAgICAgICAqb3ZlY3Rv
ciA9IG1fb3ZlY3Rvci5kYXRhKCk7CiAKICAgICAgICAgaWYgKHBvc2l0aW9uID09IC0xKQogICAg
ICAgICAgICAgcmV0dXJuIE1hdGNoUmVzdWx0OjpmYWlsZWQoKTsKIAotICAgICAgICBBU1NFUlQo
IWQudGVtcE92ZWN0b3IoKS5pc0VtcHR5KCkpOwotICAgICAgICBBU1NFUlQoZC50ZW1wT3ZlY3Rv
cigpWzBdID09IHBvc2l0aW9uKTsKLSAgICAgICAgQVNTRVJUKGQudGVtcE92ZWN0b3IoKVsxXSA+
PSBwb3NpdGlvbik7Ci0gICAgICAgIHNpemVfdCBlbmQgPSBkLnRlbXBPdmVjdG9yKClbMV07Ci0K
LSAgICAgICAgZC5pbnB1dCA9IHM7Ci0gICAgICAgIGQubGFzdElucHV0ID0gczsKLSAgICAgICAg
ZC5jaGFuZ2VMYXN0T3ZlY3RvcigpOwotICAgICAgICBkLmxhc3ROdW1TdWJQYXR0ZXJucyA9IHIt
Pm51bVN1YnBhdHRlcm5zKCk7CisgICAgICAgIEFTU0VSVCghbV9vdmVjdG9yLmlzRW1wdHkoKSk7
CisgICAgICAgIEFTU0VSVChtX292ZWN0b3JbMF0gPT0gcG9zaXRpb24pOworICAgICAgICBBU1NF
UlQobV9vdmVjdG9yWzFdID49IHBvc2l0aW9uKTsKKyAgICAgICAgc2l6ZV90IGVuZCA9IG1fb3Zl
Y3RvclsxXTsKKworICAgICAgICBtX2NhY2hlZFJlc3VsdC5yZWNvcmQoZ2xvYmFsRGF0YSwgdGhp
cywgcmVnRXhwLCBzdHJpbmcsIE1hdGNoUmVzdWx0KHBvc2l0aW9uLCBlbmQpKTsKIAogICAgICAg
ICByZXR1cm4gTWF0Y2hSZXN1bHQocG9zaXRpb24sIGVuZCk7CiAgICAgfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuY3Bw
CShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0
Y2hlc0FycmF5LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlJlZ0V4cE1hdGNoZXNBcnJheS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworQVNT
RVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChSZWdFeHBNYXRjaGVzQXJyYXkpOworCitjb25zdCBDbGFz
c0luZm8gUmVnRXhwTWF0Y2hlc0FycmF5OjpzX2luZm8gPSB7IkFycmF5IiwgJkpTQXJyYXk6OnNf
aW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShSZWdFeHBNYXRjaGVzQXJyYXkpfTsKKwor
dm9pZCBSZWdFeHBNYXRjaGVzQXJyYXk6OmZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhLCBtX3JlZ0V4
cC0+bnVtU3VicGF0dGVybnMoKSArIDEpOworfQorCit2b2lkIFJlZ0V4cE1hdGNoZXNBcnJheTo6
dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAg
IFJlZ0V4cE1hdGNoZXNBcnJheSogdGhpc09iamVjdCA9IGpzQ2FzdDxSZWdFeHBNYXRjaGVzQXJy
YXkqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZz
X2luZm8pOworICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlz
aXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Cisg
ICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zp
c2l0Q2hpbGRyZW4oKSk7CisKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZp
c2l0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2lucHV0KTsKKyAgICB2
aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9yZWdFeHApOworfQorCit2b2lkIFJlZ0V4cE1h
dGNoZXNBcnJheTo6cmVpZnlBbGxQcm9wZXJ0aWVzKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBB
U1NFUlQobV9zdGF0ZSAhPSBSZWlmaWVkQWxsKTsKKyAgICBBU1NFUlQobV9yZXN1bHQpOworIAor
ICAgIHJlaWZ5TWF0Y2hQcm9wZXJ0eUlmTmVjZXNzYXJ5KGV4ZWMpOworCisgICAgaWYgKHVuc2ln
bmVkIG51bVN1YnBhdHRlcm5zID0gbV9yZWdFeHAtPm51bVN1YnBhdHRlcm5zKCkpIHsKKyAgICAg
ICAgVmVjdG9yPGludCwgMzI+IHN1YnBhdHRlcm5SZXN1bHRzOworICAgICAgICBpbnQgcG9zaXRp
b24gPSBtX3JlZ0V4cC0+bWF0Y2goZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX2lucHV0LT52YWx1ZShl
eGVjKSwgbV9yZXN1bHQuc3RhcnQsICZzdWJwYXR0ZXJuUmVzdWx0cyk7CisgICAgICAgIEFTU0VS
VF9VTlVTRUQocG9zaXRpb24sIHBvc2l0aW9uID49IDAgJiYgc3RhdGljX2Nhc3Q8c2l6ZV90Pihw
b3NpdGlvbikgPT0gbV9yZXN1bHQuc3RhcnQpOworICAgICAgICBBU1NFUlQobV9yZXN1bHQuc3Rh
cnQgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzdWJwYXR0ZXJuUmVzdWx0c1swXSkpOworICAgICAg
ICBBU1NFUlQobV9yZXN1bHQuZW5kID09IHN0YXRpY19jYXN0PHNpemVfdD4oc3VicGF0dGVyblJl
c3VsdHNbMV0pKTsKKworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDw9IG51bVN1YnBh
dHRlcm5zOyArK2kpIHsKKyAgICAgICAgICAgIGludCBzdGFydCA9IHN1YnBhdHRlcm5SZXN1bHRz
WzIgKiBpXTsKKyAgICAgICAgICAgIGlmIChzdGFydCA+PSAwKQorICAgICAgICAgICAgICAgIHB1
dERpcmVjdEluZGV4KGV4ZWMsIGksIGpzU3Vic3RyaW5nKGV4ZWMsIG1faW5wdXQuZ2V0KCksIHN0
YXJ0LCBzdWJwYXR0ZXJuUmVzdWx0c1syICogaSArIDFdIC0gc3RhcnQpLCBmYWxzZSk7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcHV0RGlyZWN0SW5kZXgoZXhlYywgaSwganNV
bmRlZmluZWQoKSwgZmFsc2UpOworICAgICAgICB9CisgICAgfQorCisgICAgUHV0UHJvcGVydHlT
bG90IHNsb3Q7CisgICAgSlNBcnJheTo6cHV0KHRoaXMsIGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5pbmRleCwganNOdW1iZXIobV9yZXN1bHQuc3RhcnQpLCBzbG90KTsKKyAgICBKU0FycmF5
OjpwdXQodGhpcywgZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmlucHV0LCBtX2lucHV0Lmdl
dCgpLCBzbG90KTsKKworICAgIG1fc3RhdGUgPSBSZWlmaWVkQWxsOworfQorCit2b2lkIFJlZ0V4
cE1hdGNoZXNBcnJheTo6cmVpZnlNYXRjaFByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAg
ICBBU1NFUlQobV9zdGF0ZSA9PSBSZWlmaWVkTm9uZSk7CisgICAgQVNTRVJUKG1fcmVzdWx0KTsK
KyAgICBwdXREaXJlY3RJbmRleChleGVjLCAwLCBqc1N1YnN0cmluZyhleGVjLCBtX2lucHV0Lmdl
dCgpLCBtX3Jlc3VsdC5zdGFydCwgbV9yZXN1bHQuZW5kIC0gbV9yZXN1bHQuc3RhcnQpLCBmYWxz
ZSk7CisgICAgbV9zdGF0ZSA9IFJlaWZpZWRNYXRjaDsKK30KKworSlNTdHJpbmcqIFJlZ0V4cE1h
dGNoZXNBcnJheTo6bGVmdENvbnRleHQoRXhlY1N0YXRlKiBleGVjKQoreworICAgIGlmICghbV9y
ZXN1bHQuc3RhcnQpCisgICAgICAgIHJldHVybiBqc0VtcHR5U3RyaW5nKGV4ZWMpOworICAgIHJl
dHVybiBqc1N1YnN0cmluZyhleGVjLCBtX2lucHV0LmdldCgpLCAwLCBtX3Jlc3VsdC5zdGFydCk7
Cit9CisKK0pTU3RyaW5nKiBSZWdFeHBNYXRjaGVzQXJyYXk6OnJpZ2h0Q29udGV4dChFeGVjU3Rh
dGUqIGV4ZWMpCit7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gbV9pbnB1dC0+bGVuZ3RoKCk7Cisg
ICAgaWYgKG1fcmVzdWx0LmVuZCA9PSBsZW5ndGgpCisgICAgICAgIHJldHVybiBqc0VtcHR5U3Ry
aW5nKGV4ZWMpOworICAgIHJldHVybiBqc1N1YnN0cmluZyhleGVjLCBtX2lucHV0LmdldCgpLCBt
X3Jlc3VsdC5lbmQsIGxlbmd0aCAtIG1fcmVzdWx0LmVuZCk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0Fy
cmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
TWF0Y2hlc0FycmF5LmgJKHJldmlzaW9uIDExMTc0MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw2ICsy
MSw4IEBACiAjZGVmaW5lIFJlZ0V4cE1hdGNoZXNBcnJheV9oCiAKICNpbmNsdWRlICJKU0FycmF5
LmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJSZWdFeHBPYmplY3Qu
aCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTQ5LDYgKzUxLDkgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgICAgICByZXR1cm4gYXJyYXk7CiAgICAgICAgIH0KIAorICAgICAgICBKU1N0cmlu
ZyogbGVmdENvbnRleHQoRXhlY1N0YXRlKik7CisgICAgICAgIEpTU3RyaW5nKiByaWdodENvbnRl
eHQoRXhlY1N0YXRlKik7CisKICAgICAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87
CiAKICAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90
b3R5cGUpCkBAIC01Niw5ICs2MSwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJl
dHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHByb3RvdHlw
ZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCAmc19pbmZvKTsKICAgICAg
ICAgfQogCisgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZp
c2l0b3ImKTsKKwogICAgIHByb3RlY3RlZDoKICAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihK
U0dsb2JhbERhdGEmKTsKIAorICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJl
RmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBPdmVycmlkZXNWaXNpdENoaWxk
cmVuIHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwor
CiAgICAgcHJpdmF0ZToKICAgICAgICAgQUxXQVlTX0lOTElORSB2b2lkIHJlaWZ5QWxsUHJvcGVy
dGllc0lmTmVjZXNzYXJ5KEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgewpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCShyZXZpc2lvbiAx
MTE3NDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yOTIsNyArMjkyLDcgQEAgTWF0Y2hSZXN1bHQgUmVnRXhwT2Jq
ZWN0OjptYXRjaChFeGVjU3RhdAogICAgIFVTdHJpbmcgaW5wdXQgPSBzdHJpbmctPnZhbHVlKGV4
ZWMpOwogICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsK
ICAgICBpZiAoIXJlZ0V4cC0+Z2xvYmFsKCkpCi0gICAgICAgIHJldHVybiByZWdFeHBDb25zdHJ1
Y3Rvci0+cGVyZm9ybU1hdGNoKGdsb2JhbERhdGEsIHJlZ0V4cCwgaW5wdXQsIDApOworICAgICAg
ICByZXR1cm4gcmVnRXhwQ29uc3RydWN0b3ItPnBlcmZvcm1NYXRjaChnbG9iYWxEYXRhLCByZWdF
eHAsIHN0cmluZywgaW5wdXQsIDApOwogCiAgICAgSlNWYWx1ZSBqc0xhc3RJbmRleCA9IGdldExh
c3RJbmRleCgpOwogICAgIHVuc2lnbmVkIGxhc3RJbmRleDsKQEAgLTMxMSw3ICszMTEsNyBAQCBN
YXRjaFJlc3VsdCBSZWdFeHBPYmplY3Q6Om1hdGNoKEV4ZWNTdGF0CiAgICAgICAgIGxhc3RJbmRl
eCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkb3VibGVMYXN0SW5kZXgpOwogICAgIH0KIAotICAg
IE1hdGNoUmVzdWx0IHJlc3VsdCA9IHJlZ0V4cENvbnN0cnVjdG9yLT5wZXJmb3JtTWF0Y2goZ2xv
YmFsRGF0YSwgcmVnRXhwLCBpbnB1dCwgbGFzdEluZGV4KTsKKyAgICBNYXRjaFJlc3VsdCByZXN1
bHQgPSByZWdFeHBDb25zdHJ1Y3Rvci0+cGVyZm9ybU1hdGNoKGdsb2JhbERhdGEsIHJlZ0V4cCwg
c3RyaW5nLCBpbnB1dCwgbGFzdEluZGV4KTsKICAgICBzZXRMYXN0SW5kZXgoZXhlYywgcmVzdWx0
LmVuZCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMTExNzQwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDE0LDcgKzQxNCw3IEBAIHN0YXRpYyBORVZFUl9JTkxJTkUgRW5jb2Rl
ZEpTVmFsdWUgcmVtb3YKICAgICB1bnNpZ25lZCBzb3VyY2VMZW4gPSBzb3VyY2UubGVuZ3RoKCk7
CiAKICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICBNYXRjaFJlc3VsdCByZXN1bHQgPSByZWdF
eHBDb25zdHJ1Y3Rvci0+cGVyZm9ybU1hdGNoKCpnbG9iYWxEYXRhLCByZWdFeHAsIHNvdXJjZSwg
c3RhcnRQb3NpdGlvbik7CisgICAgICAgIE1hdGNoUmVzdWx0IHJlc3VsdCA9IHJlZ0V4cENvbnN0
cnVjdG9yLT5wZXJmb3JtTWF0Y2goKmdsb2JhbERhdGEsIHJlZ0V4cCwgc3RyaW5nLCBzb3VyY2Us
IHN0YXJ0UG9zaXRpb24pOwogICAgICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgICAgIGJyZWFr
OwogCkBAIC00ODcsNyArNDg3LDcgQEAgc3RhdGljIE5FVkVSX0lOTElORSBFbmNvZGVkSlNWYWx1
ZSByZXBsYQogICAgICAgICBpZiAoc291cmNlLmlzOEJpdCgpKSB7CiAgICAgICAgICAgICB3aGls
ZSAodHJ1ZSkgewogICAgICAgICAgICAgICAgIGludCogb3ZlY3RvcjsKLSAgICAgICAgICAgICAg
ICBNYXRjaFJlc3VsdCByZXN1bHQgPSByZWdFeHBDb25zdHJ1Y3Rvci0+cGVyZm9ybU1hdGNoKCpn
bG9iYWxEYXRhLCByZWdFeHAsIHNvdXJjZSwgc3RhcnRQb3NpdGlvbiwgJm92ZWN0b3IpOworICAg
ICAgICAgICAgICAgIE1hdGNoUmVzdWx0IHJlc3VsdCA9IHJlZ0V4cENvbnN0cnVjdG9yLT5wZXJm
b3JtTWF0Y2goKmdsb2JhbERhdGEsIHJlZ0V4cCwgc3RyaW5nLCBzb3VyY2UsIHN0YXJ0UG9zaXRp
b24sICZvdmVjdG9yKTsKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAKQEAgLTUyNiw3ICs1MjYsNyBAQCBzdGF0aWMgTkVWRVJfSU5MSU5F
IEVuY29kZWRKU1ZhbHVlIHJlcGxhCiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICB3aGls
ZSAodHJ1ZSkgewogICAgICAgICAgICAgICAgIGludCogb3ZlY3RvcjsKLSAgICAgICAgICAgICAg
ICBNYXRjaFJlc3VsdCByZXN1bHQgPSByZWdFeHBDb25zdHJ1Y3Rvci0+cGVyZm9ybU1hdGNoKCpn
bG9iYWxEYXRhLCByZWdFeHAsIHNvdXJjZSwgc3RhcnRQb3NpdGlvbiwgJm92ZWN0b3IpOworICAg
ICAgICAgICAgICAgIE1hdGNoUmVzdWx0IHJlc3VsdCA9IHJlZ0V4cENvbnN0cnVjdG9yLT5wZXJm
b3JtTWF0Y2goKmdsb2JhbERhdGEsIHJlZ0V4cCwgc3RyaW5nLCBzb3VyY2UsIHN0YXJ0UG9zaXRp
b24sICZvdmVjdG9yKTsKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAKQEAgLTU2Nyw3ICs1NjcsNyBAQCBzdGF0aWMgTkVWRVJfSU5MSU5F
IEVuY29kZWRKU1ZhbHVlIHJlcGxhCiAgICAgICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9
ICZleGVjLT5nbG9iYWxEYXRhKCk7CiAgICAgICAgIGRvIHsKICAgICAgICAgICAgIGludCogb3Zl
Y3RvcjsKLSAgICAgICAgICAgIE1hdGNoUmVzdWx0IHJlc3VsdCA9IHJlZ0V4cENvbnN0cnVjdG9y
LT5wZXJmb3JtTWF0Y2goKmdsb2JhbERhdGEsIHJlZ0V4cCwgc291cmNlLCBzdGFydFBvc2l0aW9u
LCAmb3ZlY3Rvcik7CisgICAgICAgICAgICBNYXRjaFJlc3VsdCByZXN1bHQgPSByZWdFeHBDb25z
dHJ1Y3Rvci0+cGVyZm9ybU1hdGNoKCpnbG9iYWxEYXRhLCByZWdFeHAsIHN0cmluZywgc291cmNl
LCBzdGFydFBvc2l0aW9uLCAmb3ZlY3Rvcik7CiAgICAgICAgICAgICBpZiAoIXJlc3VsdCkKICAg
ICAgICAgICAgICAgICBicmVhazsKIApAQCAtODI4LDcgKzgyOCw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG8KICAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3IoZXhlYywgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgcmVnRXhwLT5lcnJvck1lc3NhZ2UoKSkp
OwogICAgIH0KICAgICBSZWdFeHBDb25zdHJ1Y3RvciogcmVnRXhwQ29uc3RydWN0b3IgPSBleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnJlZ0V4cENvbnN0cnVjdG9yKCk7Ci0gICAgTWF0Y2hS
ZXN1bHQgcmVzdWx0ID0gcmVnRXhwQ29uc3RydWN0b3ItPnBlcmZvcm1NYXRjaCgqZ2xvYmFsRGF0
YSwgcmVnRXhwLCBzLCAwKTsKKyAgICBNYXRjaFJlc3VsdCByZXN1bHQgPSByZWdFeHBDb25zdHJ1
Y3Rvci0+cGVyZm9ybU1hdGNoKCpnbG9iYWxEYXRhLCByZWdFeHAsIHN0cmluZywgcywgMCk7CiAg
ICAgLy8gY2FzZSB3aXRob3V0ICdnJyBmbGFnIGlzIGhhbmRsZWQgbGlrZSBSZWdFeHAucHJvdG90
eXBlLmV4ZWMKICAgICBpZiAoIWdsb2JhbCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShyZXN1bHQgPyBSZWdFeHBNYXRjaGVzQXJyYXk6OmNyZWF0ZShleGVjLCBzdHJpbmcsIHJlZ0V4
cCwgcmVzdWx0KSA6IGpzTnVsbCgpKTsKQEAgLTg0MSw3ICs4NDEsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAgICAgICAgIGxpc3QuYXBwZW5kKGpzU3Vic3Ry
aW5nKGV4ZWMsIHMsIHJlc3VsdC5zdGFydCwgbGVuZ3RoKSk7CiAgICAgICAgIGlmICghbGVuZ3Ro
KQogICAgICAgICAgICAgKytlbmQ7Ci0gICAgICAgIHJlc3VsdCA9IHJlZ0V4cENvbnN0cnVjdG9y
LT5wZXJmb3JtTWF0Y2goKmdsb2JhbERhdGEsIHJlZ0V4cCwgcywgZW5kKTsKKyAgICAgICAgcmVz
dWx0ID0gcmVnRXhwQ29uc3RydWN0b3ItPnBlcmZvcm1NYXRjaCgqZ2xvYmFsRGF0YSwgcmVnRXhw
LCBzdHJpbmcsIHMsIGVuZCk7CiAgICAgfQogICAgIGlmIChsaXN0LmlzRW1wdHkoKSkgewogICAg
ICAgICAvLyBpZiB0aGVyZSBhcmUgbm8gbWF0Y2hlcyBhdCBhbGwsIGl0J3MgaW1wb3J0YW50IHRv
IHJldHVybgpAQCAtODU4LDcgKzg1OCw4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
c3RyaW5nUHJvdG8KICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUo
KTsKICAgICBpZiAodGhpc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpIC8vIENoZWNrT2JqZWN0
Q29lcmNpYmxlCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwotICAgIFVT
dHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgSlNT
dHJpbmcqIHN0cmluZyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKTsKKyAgICBVU3RyaW5nIHMg
PSBzdHJpbmctPnZhbHVlKGV4ZWMpOwogICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZl
eGVjLT5nbG9iYWxEYXRhKCk7CiAKICAgICBKU1ZhbHVlIGEwID0gZXhlYy0+YXJndW1lbnQoMCk7
CkBAIC04NzgsNyArODc5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQ
cm90bwogICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVTeW50YXhF
cnJvcihleGVjLCByZWctPmVycm9yTWVzc2FnZSgpKSk7CiAgICAgfQogICAgIFJlZ0V4cENvbnN0
cnVjdG9yKiByZWdFeHBDb25zdHJ1Y3RvciA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+
cmVnRXhwQ29uc3RydWN0b3IoKTsKLSAgICBNYXRjaFJlc3VsdCByZXN1bHQgPSByZWdFeHBDb25z
dHJ1Y3Rvci0+cGVyZm9ybU1hdGNoKCpnbG9iYWxEYXRhLCByZWcsIHMsIDApOworICAgIE1hdGNo
UmVzdWx0IHJlc3VsdCA9IHJlZ0V4cENvbnN0cnVjdG9yLT5wZXJmb3JtTWF0Y2goKmdsb2JhbERh
dGEsIHJlZywgc3RyaW5nLCBzLCAwKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3Vs
dCA/IGpzTnVtYmVyKHJlc3VsdC5zdGFydCkgOiBqc051bWJlcigtMSkpOwogfQogCg==
</data>
<flag name="review"
          id="137558"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133538</attachid>
            <date>2012-03-23 12:44:41 -0700</date>
            <delta_ts>2012-03-23 12:44:41 -0700</delta_ts>
            <desc>Fix</desc>
            <filename>82077.2.patch</filename>
            <type>text/plain</type>
            <size>45273</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTExODg1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgzIEBA
CisyMDEyLTAzLTIzICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4K
KworICAgICAgICBSZXhFeHAgY29uc3RydWN0b3IgbGFzdCBtYXRjaCBwcm9wZXJ0aWVzIHNob3Vs
ZCBub3QgcmVseSBvbiBwcmV2aW91cyBvdmVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjA3NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIHNpbXBsaWZpZXMgbWF0Y2hpbmcsIGFu
ZCB3aWxsIGVuYWJsZSBzdWJwYXR0ZXJuIHJlc3VsdHMgdG8gYmUgZnVsbHkgbGF6aWx5IGdlbmVy
YXRlZCBpbiB0aGUgZnV0dXJlLgorCisgICAgICAgIFRoaXMgcGF0Y2ggY2hhbmdlcyB0aGUgc2No
ZW1lIHVzZWQgdG8gbGF6aWx5IGdlbmVyYXRlIHRoZSBsYXN0IG1hdGNoIHByb3BlcnRpZXMgb2Yg
dGhlIFJlZ0V4cCBvYmplY3QuCisgICAgICAgIEluc3RlYWQgb2YgcmVseWluZyBvbiB0aGUgcmVz
dWx0cyBpbiB0aGUgb3ZlY3Rvciwgd2UgY2FuIGluc3RlYWQgbGF6aWx5IGdlbmVyYXRlIHRoZSBz
dWJwYXR0ZXJzIHVzaW5nCisgICAgICAgIGEgUmVnRXhwTWF0Y2hlc0FycmF5LiBUbyBkbyBzbyB3
ZSBqdXN0IG5lZWQgdG8gc3RvcmUgdGhlIGlucHV0LCB0aGUgcmVnZXhwIG1hdGNoZWQsIGFuZCB0
aGUgbWF0Y2gKKyAgICAgICAgbG9jYXRpb24gKHRoZSBNYXRjaFJlc3VsdCkuIFdoZW4gdGhlIG1h
dGNoIGlzIGFjY2Vzc2VkIG9yIHRoZSBpbnB1dCBpcyBzZXQsIHdlIHJlaWZ5IHJlc3VsdHMuIFdl
IHVzZQorICAgICAgICBhIHNwZWNpYWwgdmFsdWUgb2Ygc2V0dGluZyB0aGUgc2F2ZWQgcmVzdWx0
IHRvIE1hdGNoUmVzdWx0OjpmYWlsZWQoKSB0byBpbmRpY2F0ZWQgdGhhdCB3ZSdyZSBpbiBhCisg
ICAgICAgIHJlaWZpZWQgc3RhdGUuIFRoaXMgbWVhbnMgdGhhdCBuZXh0IHRpbWUgYSBtYXRjaCBp
cyBwZXJmb3JtZWQsIHRoZSBzdG9yZSBvZiB0aGUgcmVzdWx0IHdpbGwKKyAgICAgICAgYXV0b21h
dGljYWxseSBibG93IGF3YXkgdGhlIHJlaWZpZWQgdmFsdWUuCisKKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAgICAgLSBBZGRlZCBu
ZXcgZmlsZXMuCisgICAgICAgICogcnVudGltZS9SZWdFeHAuY3BwOgorICAgICAgICAoSlNDOjpS
ZWdFeHBGdW5jdGlvbmFsVGVzdENvbGxlY3Rvcjo6b3V0cHV0T25lVGVzdCk6CisgICAgICAgICAg
ICAtIGNoYW5nZWQgJ3N1YlBhdHRlcm4nIC0+ICdzdWJwYXR0ZXJuJyAodGhlcmUgd2FzIGEgbWl4
IGluIEpTQywgJ3N1YnBhdHRlcm4nIHdhcyBtb3JlIGNvbW1vbikuCisgICAgICAgICogcnVudGlt
ZS9SZWdFeHBDYWNoZWRSZXN1bHQuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6UmVnRXhwQ2Fj
aGVkUmVzdWx0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6UmVnRXhwQ2FjaGVkUmVz
dWx0OjpsYXN0UmVzdWx0KToKKyAgICAgICAgKEpTQzo6UmVnRXhwQ2FjaGVkUmVzdWx0OjpzZXRJ
bnB1dCk6CisgICAgICAgICAgICAtIE5ldyBtZXRob2RzLCBtYXJrIEdDIG9iamVjdHMsIGxhemls
eSBjcmVhdGUgdGhlIG1hdGNoZXMgYXJyYXksIGFuZCByZWNvcmQgYSB1c2VyIHByb3ZpZGVkIGlu
cHV0ICh2aWEgYXNzaWdubWVudCB0byBSZWdFeHAuaW51cHQpLgorICAgICAgICAqIHJ1bnRpbWUv
UmVnRXhwQ2FjaGVkUmVzdWx0Lmg6IEFkZGVkLgorICAgICAgICAoUmVnRXhwQ2FjaGVkUmVzdWx0
KToKKyAgICAgICAgICAgIC0gQWRkZWQgbmV3IGNsYXNzLgorICAgICAgICAoSlNDOjpSZWdFeHBD
YWNoZWRSZXN1bHQ6OlJlZ0V4cENhY2hlZFJlc3VsdCk6CisgICAgICAgIChKU0M6OlJlZ0V4cENh
Y2hlZFJlc3VsdDo6cmVjb3JkKToKKyAgICAgICAgKEpTQzo6UmVnRXhwQ2FjaGVkUmVzdWx0Ojpp
bnB1dCk6CisgICAgICAgICAgICAtIEluaXRpYWxpemUgdGhlIG9iamVjdCwgcmVjb3JkIHRoZSBy
ZXN1bHQgb2YgYSBSZWdFeHAgbWF0Y2gsIGFjY2VzcyB0aGUgc3RvcmVkIGlucHV0IHByb3BlcnR5
LgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlND
OjpSZWdFeHBDb25zdHJ1Y3Rvcjo6UmVnRXhwQ29uc3RydWN0b3IpOgorICAgICAgICAgICAgLSBJ
bml0aWFsaXplIG1fcmVzdWx0L21fbXVsdGlsaW5lIHByb3BlcnRpZXMuCisgICAgICAgIChKU0M6
OlJlZ0V4cENvbnN0cnVjdG9yOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgICAgIC0gTWFrZSBz
dXJlIHRoZSBjYWNoZWQgcmVzdWx0cyAob3IgbGF6eSBzb3VyY2UgZm9yIHRoZW0pIGFyZSBtYXJr
ZWQuCisgICAgICAgIChKU0M6OlJlZ0V4cENvbnN0cnVjdG9yOjpnZXRCYWNrcmVmKToKKyAgICAg
ICAgKEpTQzo6UmVnRXhwQ29uc3RydWN0b3I6OmdldExhc3RQYXJlbik6CisgICAgICAgIChKU0M6
OlJlZ0V4cENvbnN0cnVjdG9yOjpnZXRMZWZ0Q29udGV4dCk6CisgICAgICAgIChKU0M6OlJlZ0V4
cENvbnN0cnVjdG9yOjpnZXRSaWdodENvbnRleHQpOgorICAgICAgICAgICAgLSBNb3ZlZCBmcm9t
IFJlZ0V4cENvbnN0cnVjdG9yLCBtb3ZlZCB0byBSZWdFeHBDYWNoZWRSZXN1bHQsIGFuZCB1c2lu
ZyBuZXcgY2FjaGluZyBzY2hlbWUuCisgICAgICAgIChKU0M6OnJlZ0V4cENvbnN0cnVjdG9ySW5w
dXQpOgorICAgICAgICAoSlNDOjpzZXRSZWdFeHBDb25zdHJ1Y3RvcklucHV0KToKKyAgICAgICAg
ICAgIC0gQ2hhbmdlZCB0byB1c2UgUmVnRXhwQ2FjaGVkUmVzdWx0LgorICAgICAgICAqIHJ1bnRp
bWUvUmVnRXhwQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKEpTQzo6UmVnRXhwQ29uc3RydWN0b3I6
OmNyZWF0ZSk6CisgICAgICAgIChSZWdFeHBDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OlJl
Z0V4cENvbnN0cnVjdG9yOjpzZXRNdWx0aWxpbmUpOgorICAgICAgICAoSlNDOjpSZWdFeHBDb25z
dHJ1Y3Rvcjo6bXVsdGlsaW5lKToKKyAgICAgICAgICAgIC0gTW92ZSBtdWx0aWxpbmUgcHJvcGVy
dHkgb250byB0aGUgY29uc3RydWN0b3Igb2JqZWN0OyBpdCBpcyBub3QgYWZmZWN0ZWQgYnkgdGhl
IGxhc3QgbWF0Y2guCisgICAgICAgIChKU0M6OlJlZ0V4cENvbnN0cnVjdG9yOjpzZXRJbnB1dCk6
CisgICAgICAgIChKU0M6OlJlZ0V4cENvbnN0cnVjdG9yOjppbnB1dCk6CisgICAgICAgICAgICAt
IFRoZXNlIGRlZmVyIHRvIFJlZ0V4cENhY2hlZFJlc3VsdC4KKyAgICAgICAgKEpTQzo6UmVnRXhw
Q29uc3RydWN0b3I6OnBlcmZvcm1NYXRjaCk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBNYXRj
aGVzQXJyYXkuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6UmVnRXhwTWF0Y2hlc0FycmF5Ojp2
aXNpdENoaWxkcmVuKToKKyAgICAgICAgICAgIC0gRWVlZXAhIGFkZGVkIG1pc3NpbmcgdmlzaXRD
aGlsZHJlbiEKKyAgICAgICAgKEpTQzo6UmVnRXhwTWF0Y2hlc0FycmF5OjpmaW5pc2hDcmVhdGlv
bik6CisgICAgICAgIChKU0M6OlJlZ0V4cE1hdGNoZXNBcnJheTo6cmVpZnlBbGxQcm9wZXJ0aWVz
KToKKyAgICAgICAgKEpTQzo6UmVnRXhwTWF0Y2hlc0FycmF5OjpyZWlmeU1hdGNoUHJvcGVydHkp
OgorICAgICAgICAgICAgLSBNb3ZlZCBmcm9tIFJlZ0V4cENvbnN0cnVjdG9yLmNwcC4KKyAgICAg
ICAgKEpTQzo6UmVnRXhwTWF0Y2hlc0FycmF5OjpsZWZ0Q29udGV4dCk6CisgICAgICAgIChKU0M6
OlJlZ0V4cE1hdGNoZXNBcnJheTo6cmlnaHRDb250ZXh0KToKKyAgICAgICAgICAgIC0gU2luY2Ug
dGhlIG1hdGNoIHN0YXJ0LworICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5Lmg6
CisgICAgICAgIChSZWdFeHBNYXRjaGVzQXJyYXkpOgorICAgICAgICAgICAgLSBEZWNsYXJlIG5l
dyBtZXRob2RzICYgc3RydWN0dXJlIGZsYWdzLgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6UmVnRXhwT2JqZWN0OjptYXRjaCk6CisgICAgICAgICAg
ICAtIHBlcmZvcm1NYXRjaCBub3cgcmVxdWlyZXMgdGhlIEpTU3RyaW5nIGlucHV0LCB0byBjYWNo
ZS4KKyAgICAgICAgKiBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6
OnJlbW92ZVVzaW5nUmVnRXhwU2VhcmNoKToKKyAgICAgICAgKEpTQzo6cmVwbGFjZVVzaW5nUmVn
RXhwU2VhcmNoKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jTWF0Y2gpOgorICAgICAg
ICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNTZWFyY2gpOgorICAgICAgICAgICAgLSBwZXJmb3JtTWF0
Y2ggbm93IHJlcXVpcmVzIHRoZSBKU1N0cmluZyBpbnB1dCwgdG8gY2FjaGUuCisKIDIwMTItMDMt
MjMgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBT
aW1wbGlmeSBtZW1vcnkgdXNhZ2UgdHJhY2tpbmcgaW4gQ29waWVkU3BhY2UKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDExMTc0MCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjAwLDYgKzIw
MCw4IEBAIFNFVChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgcnVudGltZS9SZWdFeHAuY3Bw
CiAgICAgcnVudGltZS9SZWdFeHBDYWNoZS5jcHAKICAgICBydW50aW1lL1JlZ0V4cENvbnN0cnVj
dG9yLmNwcAorICAgIHJ1bnRpbWUvUmVnRXhwQ2FjaGVkUmVzdWx0LmNwcAorICAgIHJ1bnRpbWUv
UmVnRXhwTWF0Y2hlc0FycmF5LmNwcAogICAgIHJ1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAogICAg
IHJ1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvU2NvcGVDaGFpbi5jcHAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lv
biAxMTE3NDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQko
d29ya2luZyBjb3B5KQpAQCAtNTI0LDcgKzUyNCwxMCBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2Vz
ICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwIFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaCBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUmVnRXhwS2V5LmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cE1hdGNoZXNBcnJheS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cE1hdGNoZXNBcnJheS5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHBDYWNoZWRSZXN1bHQuY3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHBDYWNoZWRSZXN1bHQuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVn
RXhwT2JqZWN0LmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2Jq
ZWN0LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5j
cHAgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkJKHJl
dmlzaW9uIDExMTc0MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5n
eXBpCSh3b3JraW5nIGNvcHkpCkBAIC01MzEsNiArNTMxLDkgQEAKICAgICAgICAgICAgICdydW50
aW1lL1JlZ0V4cENhY2hlLmNwcCcsCiAgICAgICAgICAgICAncnVudGltZS9SZWdFeHBDb25zdHJ1
Y3Rvci5jcHAnLAogICAgICAgICAgICAgJ3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaCcsCisg
ICAgICAgICAgICAncnVudGltZS9SZWdFeHBDYWNoZWRSZXN1bHQuY3BwJywKKyAgICAgICAgICAg
ICdydW50aW1lL1JlZ0V4cENhY2hlZFJlc3VsdC5oJywKKyAgICAgICAgICAgICdydW50aW1lL1Jl
Z0V4cE1hdGNoZXNBcnJheS5jcHAnLAogICAgICAgICAgICAgJ3J1bnRpbWUvUmVnRXhwTWF0Y2hl
c0FycmF5LmgnLAogICAgICAgICAgICAgJ3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcCcsCiAgICAg
ICAgICAgICAncnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwJywKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9UYXJnZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9UYXJnZXQucHJpCShyZXZpc2lvbiAxMTE3NDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
VGFyZ2V0LnByaQkod29ya2luZyBjb3B5KQpAQCAtMjA0LDYgKzIwNCw4IEBAIFNPVVJDRVMgKz0g
XAogICAgIHJ1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuY3BwIFwKICAgICBydW50aW1lL1Byb3Bl
cnR5U2xvdC5jcHAgXAogICAgIHJ1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwIFwKKyAgICBy
dW50aW1lL1JlZ0V4cENhY2hlZFJlc3VsdC5jcHAgXAorICAgIHJ1bnRpbWUvUmVnRXhwTWF0Y2hl
c0FycmF5LmNwcCBcCiAgICAgcnVudGltZS9SZWdFeHAuY3BwIFwKICAgICBydW50aW1lL1JlZ0V4
cE9iamVjdC5jcHAgXAogICAgIHJ1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcCBcCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
cHJvagkocmV2aXNpb24gMTExNzQwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oJKHdvcmtp
bmcgY29weSkKQEAgLTEwOTgsMTAgKzEwOTgsMjIgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8
RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccnVudGltZVxSZWdFeHBDYWNoZWRSZXN1bHQu
Y3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwu
LlxydW50aW1lXFJlZ0V4cENhY2hlZFJlc3VsdC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxG
aWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxydW50aW1lXFJlZ0V4cEtleS5oIgogCQkJCT4K
IAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxydW50aW1lXFJl
Z0V4cE1hdGNoZXNBcnJheS5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXC4uXHJ1bnRpbWVcUmVnRXhwTWF0Y2hlc0FycmF5LmgiCiAJCQkJPgog
CQkJPC9GaWxlPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEx
MTc0MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zNjUsNiArMzY1LDggQEAKIAkJODYw
QkQ4MDExNDhFQTZGMjAwMTEyQjJGIC8qIEludHJpbnNpYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZCRjY0MkExNDhEQjJCNTAwNERFMzZBIC8qIElu
dHJpbnNpYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTg2MjZCRUNGMTE5MjhFMzkwMDc4MkZBQiAvKiBTdHJpbmdTdGF0aWNzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2MjZCRUNFMTE5MjhFMzkw
MDc4MkZBQiAvKiBTdHJpbmdTdGF0aWNzLmNwcCAqLzsgfTsKIAkJODYzQjIzRTAwRkM2MTE4OTAw
NzAzQUE0IC8qIE1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYzQjIzREYwRkM2MEU2MjAwNzAzQUE0IC8qIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTg2NDJDNTEwMTUxQzA2QTkwMDQ2RDRFRiAvKiBSZWdFeHBDYWNoZWRSZXN1
bHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZG
NzVFRkIxNTFDMDYyRjAwN0M5QkEzIC8qIFJlZ0V4cENhY2hlZFJlc3VsdC5jcHAgKi87IH07CisJ
CTg2NDJDNTEyMTUxQzA4M0QwMDQ2RDRFRiAvKiBSZWdFeHBNYXRjaGVzQXJyYXkuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZGNzVFRkQxNTFDMDYy
RjAwN0M5QkEzIC8qIFJlZ0V4cE1hdGNoZXNBcnJheS5jcHAgKi87IH07CiAJCTg2NDM4RkM0MTI2
NTUwM0UwMEUwREZDQSAvKiBTdHJpbmdCdWlsZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NDM4RkMzMTI2NTUwM0UwMEUwREZDQSAvKiBTdHJp
bmdCdWlsZGVyLmNwcCAqLzsgfTsKIAkJODY1NjU3NDIxMTVCRTNEQTAwMjkxRjQwIC8qIENTdHJp
bmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY1
NjU3NDAxMTVCRTNEQTAwMjkxRjQwIC8qIENTdHJpbmcuY3BwICovOyB9OwogCQk4NjVBMzBGMTEz
NTAwN0UxMDBDREI0OUUgLyogSlNWYWx1ZUlubGluZU1ldGhvZHMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NUEzMEYwMTM1MDA3RTEwMENEQjQ5RSAv
KiBKU1ZhbHVlSW5saW5lTWV0aG9kcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC0xMjIxLDYgKzEyMjMsOSBAQAogCQk4NkVDQTNFOTEzMkRFRjFD
MDAyQjJBRDcgLyogREZHTm9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBE
RkdOb2RlLmg7IHBhdGggPSBkZmcvREZHTm9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk4NkVDQTNGOTEzMkRGMjVBMDAyQjJBRDcgLyogREZHU2NvcmVCb2FyZC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdTY29yZUJvYXJkLmg7IHBhdGggPSBkZmcvREZH
U2NvcmVCb2FyZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkYzODg1ODEyMTEz
MENBMDA3QTdDRTMgLyogQXRvbWljU3RyaW5nSGFzaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBBdG9taWNTdHJpbmdIYXNoLmg7IHBhdGggPSB0ZXh0L0F0b21pY1N0cmluZ0hh
c2guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODZGNzVFRkIxNTFDMDYyRjAwN0M5
QkEzIC8qIFJlZ0V4cENhY2hlZFJlc3VsdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBSZWdFeHBDYWNoZWRSZXN1bHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk4NkY3NUVGQzE1MUMwNjJGMDA3QzlCQTMgLyogUmVnRXhwQ2FjaGVkUmVzdWx0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cENhY2hlZFJlc3VsdC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NkY3NUVGRDE1MUMwNjJGMDA3QzlCQTMgLyog
UmVnRXhwTWF0Y2hlc0FycmF5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFJlZ0V4cE1hdGNoZXNBcnJheS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTg2RkE5RThGMTQyQkJCMkQwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNCb3VuZEZ1bmN0aW9uLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODZGQTlFOTAxNDJCQkIyRTAwMTc3M0I3IC8qIEpTQm91
bmRGdW5jdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0JvdW5kRnVu
Y3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTAyMTNFM0IxMjNBNDBDMjAw
RDQyMkYzIC8qIE1lbW9yeVN0YXRpc3RpY3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gTWVtb3J5U3RhdGlzdGljcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0yMzk2LDkgKzI0MDEsMTIgQEAKIAkJCQlGNjkyQTg3RTAyNTU1OTdEMDFGRjYwRjcg
LyogUmVnRXhwLmggKi8sCiAJCQkJQTE3MTJCM0ExMUM3QjIxMjAwN0E1MzE1IC8qIFJlZ0V4cENh
Y2hlLmNwcCAqLywKIAkJCQlBMTcxMkIzRTExQzdCMjI4MDA3QTUzMTUgLyogUmVnRXhwQ2FjaGUu
aCAqLywKKwkJCQk4NkY3NUVGQjE1MUMwNjJGMDA3QzlCQTMgLyogUmVnRXhwQ2FjaGVkUmVzdWx0
LmNwcCAqLywKKwkJCQk4NkY3NUVGQzE1MUMwNjJGMDA3QzlCQTMgLyogUmVnRXhwQ2FjaGVkUmVz
dWx0LmggKi8sCiAJCQkJQkNEMjAyQkQwRTE3MDZBNzAwMkM3RTgyIC8qIFJlZ0V4cENvbnN0cnVj
dG9yLmNwcCAqLywKIAkJCQlCQ0QyMDJCRTBFMTcwNkE3MDAyQzdFODIgLyogUmVnRXhwQ29uc3Ry
dWN0b3IuaCAqLywKIAkJCQlBMTcxMkI0MDExQzdCMjM1MDA3QTUzMTUgLyogUmVnRXhwS2V5Lmgg
Ki8sCisJCQkJODZGNzVFRkQxNTFDMDYyRjAwN0M5QkEzIC8qIFJlZ0V4cE1hdGNoZXNBcnJheS5j
cHAgKi8sCiAJCQkJOTNDRURERkIwRUE5MUVFNjAwMjU4RUJFIC8qIFJlZ0V4cE1hdGNoZXNBcnJh
eS5oICovLAogCQkJCUY2OTJBODdCMDI1NTU5N0QwMUZGNjBGNyAvKiBSZWdFeHBPYmplY3QuY3Bw
ICovLAogCQkJCUY2OTJBODdDMDI1NTU5N0QwMUZGNjBGNyAvKiBSZWdFeHBPYmplY3QuaCAqLywK
QEAgLTM3MTcsNiArMzcyNSw4IEBACiAJCQkJMEY1NkExRDUxNTAwMUNGNDAwMjk5MkIxIC8qIEV4
ZWN1dGlvbkNvdW50ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEE0MzM3QkIxNTA2MjE4ODAw
OTkxQzk1IC8qIERGR1JlZHVuZGFudFBoaUVsaW1pbmF0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEZBNTgxQkExNTBFOTUyQzAwQjlBMkQ5IC8qIERGR05vZGVGbGFncy5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk4NjQyQzUxMDE1MUMwNkE5MDA0NkQ0RUYgLyogUmVnRXhwQ2FjaGVk
UmVzdWx0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTg2NDJDNTEyMTUxQzA4M0QwMDQ2RDRFRiAv
KiBSZWdFeHBNYXRjaGVzQXJyYXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAJKHJldmlzaW9uIDExMTc0MCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEz
MSwxMSArMTMxLDExIEBAIHZvaWQgUmVnRXhwRnVuY3Rpb25hbFRlc3RDb2xsZWN0b3I6Om91dHAK
ICAgICBvdXRwdXRFc2NhcGVkVVN0cmluZyhzKTsKICAgICBmcHJpbnRmKG1fZmlsZSwgIlwiLCAl
ZCwgJWQsICgiLCBzdGFydE9mZnNldCwgcmVzdWx0KTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDw9IHJlZ0V4cC0+bnVtU3VicGF0dGVybnMoKTsgaSsrKSB7Ci0gICAgICAgIGludCBzdWJQ
YXR0ZXJuQmVnaW4gPSBvdmVjdG9yW2kgKiAyXTsKLSAgICAgICAgaW50IHN1YlBhdHRlcm5FbmQg
PSBvdmVjdG9yW2kgKiAyICsgMV07Ci0gICAgICAgIGlmIChzdWJQYXR0ZXJuQmVnaW4gPT0gLTEp
Ci0gICAgICAgICAgICBzdWJQYXR0ZXJuRW5kID0gLTE7Ci0gICAgICAgIGZwcmludGYobV9maWxl
LCAiJWQsICVkIiwgc3ViUGF0dGVybkJlZ2luLCBzdWJQYXR0ZXJuRW5kKTsKKyAgICAgICAgaW50
IHN1YnBhdHRlcm5CZWdpbiA9IG92ZWN0b3JbaSAqIDJdOworICAgICAgICBpbnQgc3VicGF0dGVy
bkVuZCA9IG92ZWN0b3JbaSAqIDIgKyAxXTsKKyAgICAgICAgaWYgKHN1YnBhdHRlcm5CZWdpbiA9
PSAtMSkKKyAgICAgICAgICAgIHN1YnBhdHRlcm5FbmQgPSAtMTsKKyAgICAgICAgZnByaW50Ziht
X2ZpbGUsICIlZCwgJWQiLCBzdWJwYXR0ZXJuQmVnaW4sIHN1YnBhdHRlcm5FbmQpOwogICAgICAg
ICBpZiAoaSA8IHJlZ0V4cC0+bnVtU3VicGF0dGVybnMoKSkKICAgICAgICAgICAgIGZwdXRzKCIs
ICIsIG1fZmlsZSk7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwQ2FjaGVkUmVzdWx0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHBDYWNoZWRSZXN1bHQuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ2FjaGVkUmVzdWx0LmNwcAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVnRXhwQ2FjaGVkUmVz
dWx0LmgiCisKKyNpbmNsdWRlICJSZWdFeHBNYXRjaGVzQXJyYXkuaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK3ZvaWQgUmVnRXhwQ2FjaGVkUmVzdWx0Ojp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQoreworICAgIGlmIChtX3Jlc3VsdCkgeworICAgICAgICB2aXNpdG9yLmFwcGVu
ZCgmbV9sYXN0SW5wdXQpOworICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9sYXN0UmVnRXhwKTsK
KyAgICB9IGVsc2UgeworICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9yZWlmaWVkSW5wdXQpOwor
ICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9yZWlmaWVkUmVzdWx0KTsKKyAgICB9Cit9CisKK1Jl
Z0V4cE1hdGNoZXNBcnJheSogUmVnRXhwQ2FjaGVkUmVzdWx0OjpsYXN0UmVzdWx0KEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIG93bmVyKQoreworICAgIGlmIChtX3Jlc3VsdCkgeworICAgICAg
ICBtX3JlaWZpZWRJbnB1dC5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBvd25lciwgbV9sYXN0SW5w
dXQuZ2V0KCkpOworICAgICAgICBtX3JlaWZpZWRSZXN1bHQuc2V0KGV4ZWMtPmdsb2JhbERhdGEo
KSwgb3duZXIsIFJlZ0V4cE1hdGNoZXNBcnJheTo6Y3JlYXRlKGV4ZWMsIG1fbGFzdElucHV0Lmdl
dCgpLCBtX2xhc3RSZWdFeHAuZ2V0KCksIG1fcmVzdWx0KSk7CisgICAgICAgIG1fcmVzdWx0ID0g
TWF0Y2hSZXN1bHQ6OmZhaWxlZCgpOworICAgIH0KKyAgICByZXR1cm4gbV9yZWlmaWVkUmVzdWx0
LmdldCgpOworfQorCit2b2lkIFJlZ0V4cENhY2hlZFJlc3VsdDo6c2V0SW5wdXQoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogb3duZXIsIEpTU3RyaW5nKiBpbnB1dCkKK3sKKyAgICAvLyBNYWtl
IHN1cmUgd2UncmUgcmVpZmllZCwgb3RoZXJ3aXNlIG1fcmVpZmllZElucHV0IHdpbGwgYmUgaWdu
b3JlZC4KKyAgICBsYXN0UmVzdWx0KGV4ZWMsIG93bmVyKTsKKyAgICBBU1NFUlQoIW1fcmVzdWx0
KTsKKyAgICBtX3JlaWZpZWRJbnB1dC5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBvd25lciwgaW5w
dXQpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cENhY2hlZFJlc3VsdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hlZFJlc3VsdC5oCShyZXZpc2lvbiAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ2FjaGVkUmVzdWx0LmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2lmbmRlZiBSZWdFeHBDYWNoZWRSZXN1bHRfaAorI2RlZmluZSBSZWdF
eHBDYWNoZWRSZXN1bHRfaAorCisjaW5jbHVkZSAiUmVnRXhwT2JqZWN0LmgiCisKK25hbWVzcGFj
ZSBKU0MgeworCisgICAgY2xhc3MgSlNTdHJpbmc7CisgICAgY2xhc3MgUmVnRXhwTWF0Y2hlc0Fy
cmF5OworCisgICAgLy8gUmVnRXhwQ2FjaGVkUmVzdWx0IGlzIHVzZWQgdG8gdHJhY2sgdGhlIGNh
Y2hlZCByZXN1bHRzIG9mIHRoZSBsYXN0CisgICAgLy8gbWF0Y2gsIHN0b3JlcyBvbiB0aGUgUmVn
RXhwIGNvbnN0cnVjdG9yIChlLmcuICQmLCAkXywgJDEsICQyIC4uLikuCisgICAgLy8gVGhlc2Ug
dmFsdWVzIHdpbGwgYmUgbGF6aWx5IGdlbmVyYXRlZCBvbiBkZW1hbmQsIHNvIHRoZSBjYWNoZWQg
cmVzdWx0CisgICAgLy8gbWF5IGJlIGluIGEgbGF6eSBvciByZWlmaWVkIHN0YXRlLiBBIGxhenkg
c3RhdGUgaXMgaW5kaWNhdGVkIGJ5IGEKKyAgICAvLyB2YWx1ZSBvZiBtX3Jlc3VsdCBpbmRpY2F0
aW5nIGEgc3VjY2Vzc2Z1bCBtYXRjaCwgYW5kIGEgcmVpZmllZCBzdGF0ZQorICAgIC8vIGlzIGlu
ZGljYXRlZCBieSBzZXR0aW5nIG1fcmVzdWx0IHRvIE1hdGNoUmVzdWx0OjpmYWlsZWQoKS4KKyAg
ICAvLyBGb2xsb3dpbmcgYSBzdWNjZXNzZnVsIG1hdGNoLCBtX3Jlc3VsdCwgbV9sYXN0SW5wdXQg
YW5kIG1fbGFzdFJlZ0V4cAorICAgIC8vIGNhbiBiZSB1c2VkIHRvIHJlaWZ5IHRoZSByZXN1bHRz
IGZyb20gdGhlIG1hdGNoLCBmb2xsb3dpbmcgcmVpZmljYXRpb24KKyAgICAvLyBtX3JlaWZpZWRS
ZXN1bHQgYW5kIG1fcmVpZmllZElucHV0IGhvbGQgdGhlIGNhY2hlZCByZXN1bHRzLgorICAgIGNs
YXNzIFJlZ0V4cENhY2hlZFJlc3VsdCB7CisgICAgcHVibGljOgorICAgICAgICBSZWdFeHBDYWNo
ZWRSZXN1bHQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU09iamVjdCogb3duZXIsIFJlZ0V4
cCogZW1wdHlSZWdFeHApCisgICAgICAgICAgICA6IG1fcmVzdWx0KDAsIDApCisgICAgICAgIHsK
KyAgICAgICAgICAgIG1fbGFzdElucHV0LnNldChnbG9iYWxEYXRhLCBvd25lciwganNFbXB0eVN0
cmluZygmZ2xvYmFsRGF0YSkpOworICAgICAgICAgICAgbV9sYXN0UmVnRXhwLnNldChnbG9iYWxE
YXRhLCBvd25lciwgZW1wdHlSZWdFeHApOworICAgICAgICAgICAgbV9yZWlmaWVkUmVzdWx0LmNs
ZWFyKCk7CisgICAgICAgICAgICBtX3JlaWZpZWRJbnB1dC5jbGVhcigpOworICAgICAgICB9CisK
KyAgICAgICAgQUxXQVlTX0lOTElORSB2b2lkIHJlY29yZChKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIEpTT2JqZWN0KiBvd25lciwgUmVnRXhwKiByZWdFeHAsIEpTU3RyaW5nKiBpbnB1dCwgTWF0
Y2hSZXN1bHQgcmVzdWx0KQorICAgICAgICB7CisgICAgICAgICAgICBtX2xhc3RSZWdFeHAuc2V0
KGdsb2JhbERhdGEsIG93bmVyLCByZWdFeHApOworICAgICAgICAgICAgbV9sYXN0SW5wdXQuc2V0
KGdsb2JhbERhdGEsIG93bmVyLCBpbnB1dCk7CisgICAgICAgICAgICBtX3Jlc3VsdCA9IHJlc3Vs
dDsKKyAgICAgICAgfQorCisgICAgICAgIFJlZ0V4cE1hdGNoZXNBcnJheSogbGFzdFJlc3VsdChF
eGVjU3RhdGUqLCBKU09iamVjdCogb3duZXIpOworICAgICAgICB2b2lkIHNldElucHV0KEV4ZWNT
dGF0ZSosIEpTT2JqZWN0KiBvd25lciwgSlNTdHJpbmcqKTsKKworICAgICAgICBKU1N0cmluZyog
aW5wdXQoKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBJZiBtX3Jlc3VsdCBzaG93YXMgYSBt
YXRjaCB0aGVuIHdlJ3JlIGluIGEgbGF6eSBzdGF0ZSwgc28gbV9sYXN0SW5wdXQKKyAgICAgICAg
ICAgIC8vIGlzIHRoZSBtb3N0IHJlY2VudCB2YWx1ZSBvZiB0aGUgaW5wdXQgcHJvcGVydHkuIElm
IG5vdCB0aGVuIHdlIGhhdmUKKyAgICAgICAgICAgIC8vIHJlaWZpZWQsIGluIHdoaWNoIGNhc2Ug
bV9yZWlmaWVkSW5wdXQgd2lsbCBjb250YWluIHRoZSBjb3JyZWN0IHZhbHVlLgorICAgICAgICAg
ICAgcmV0dXJuIG1fcmVzdWx0ID8gbV9sYXN0SW5wdXQuZ2V0KCkgOiBtX3JlaWZpZWRJbnB1dC5n
ZXQoKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRv
ciYpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgTWF0Y2hSZXN1bHQgbV9yZXN1bHQ7CisgICAg
ICAgIFdyaXRlQmFycmllcjxKU1N0cmluZz4gbV9sYXN0SW5wdXQ7CisgICAgICAgIFdyaXRlQmFy
cmllcjxSZWdFeHA+IG1fbGFzdFJlZ0V4cDsKKyAgICAgICAgV3JpdGVCYXJyaWVyPFJlZ0V4cE1h
dGNoZXNBcnJheT4gbV9yZWlmaWVkUmVzdWx0OworICAgICAgICBXcml0ZUJhcnJpZXI8SlNTdHJp
bmc+IG1fcmVpZmllZElucHV0OworICAgIH07CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5k
aWYgLy8gUmVnRXhwQ2FjaGVkUmVzdWx0X2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDExMTc0MCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjIsMjEgKzIyLDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJSZWdFeHBDb25zdHJ1Y3Rvci5oIgogCi0jaW5jbHVkZSAiQXJyYXlQcm90b3R5cGUu
aCIKICNpbmNsdWRlICJFcnJvci5oIgotI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKLSNp
bmNsdWRlICJKU0FycmF5LmgiCi0jaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgotI2luY2x1ZGUgIkpT
U3RyaW5nLmgiCi0jaW5jbHVkZSAiTG9va3VwLmgiCi0jaW5jbHVkZSAiT2JqZWN0UHJvdG90eXBl
LmgiCiAjaW5jbHVkZSAiUmVnRXhwTWF0Y2hlc0FycmF5LmgiCi0jaW5jbHVkZSAiUmVnRXhwT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiUmVnRXhwUHJvdG90eXBlLmgiCi0jaW5jbHVkZSAiUmVnRXhwLmgi
Ci0jaW5jbHVkZSAiUmVnRXhwQ2FjaGUuaCIKLSNpbmNsdWRlICJVU3RyaW5nQ29uY2F0ZW5hdGUu
aCIKLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAt
NjksOCArNTcsNiBAQCBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKFJlZ0V4cENvbnN0cnVjCiAK
IGNvbnN0IENsYXNzSW5mbyBSZWdFeHBDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24i
LCAmSW50ZXJuYWxGdW5jdGlvbjo6c19pbmZvLCAwLCBFeGVjU3RhdGU6OnJlZ0V4cENvbnN0cnVj
dG9yVGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoUmVnRXhwQ29uc3RydWN0b3IpIH07CiAKLWNv
bnN0IENsYXNzSW5mbyBSZWdFeHBNYXRjaGVzQXJyYXk6OnNfaW5mbyA9IHsiQXJyYXkiLCAmSlNB
cnJheTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFJlZ0V4cE1hdGNoZXNBcnJh
eSl9OwotCiAvKiBTb3VyY2UgZm9yIFJlZ0V4cENvbnN0cnVjdG9yLmx1dC5oCiBAYmVnaW4gcmVn
RXhwQ29uc3RydWN0b3JUYWJsZQogICAgIGlucHV0ICAgICAgICAgICByZWdFeHBDb25zdHJ1Y3Rv
cklucHV0ICAgICAgICAgIE5vbmUKQEAgLTk3LDggKzgzLDEwIEBAIGNvbnN0IENsYXNzSW5mbyBS
ZWdFeHBNYXRjaGVzQXJyYXk6OnNfaW4KIEBlbmQKICovCiAKLVJlZ0V4cENvbnN0cnVjdG9yOjpS
ZWdFeHBDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKK1JlZ0V4cENvbnN0cnVjdG9yOjpSZWdFeHBDb25zdHJ1Y3RvcihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVnRXhwUHJvdG90
eXBlKiByZWdFeHBQcm90b3R5cGUpCiAgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKGdsb2JhbE9iamVj
dCwgc3RydWN0dXJlKQorICAgICwgbV9jYWNoZWRSZXN1bHQoZ2xvYmFsT2JqZWN0LT5nbG9iYWxE
YXRhKCksIHRoaXMsIHJlZ0V4cFByb3RvdHlwZS0+cmVnRXhwKCkpCisgICAgLCBtX211bHRpbGlu
ZShmYWxzZSkKIHsKIH0KIApAQCAtMTE5LDgzICsxMDcsNTEgQEAgdm9pZCBSZWdFeHBDb25zdHJ1
Y3Rvcjo6ZGVzdHJveShKU0NlbGwqIAogICAgIGpzQ2FzdDxSZWdFeHBDb25zdHJ1Y3Rvcio+KGNl
bGwpLT5SZWdFeHBDb25zdHJ1Y3Rvcjo6flJlZ0V4cENvbnN0cnVjdG9yKCk7CiB9CiAKLXZvaWQg
UmVnRXhwTWF0Y2hlc0FycmF5OjpmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEpCi17Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSwgbV9yZWdFeHAtPm51
bVN1YnBhdHRlcm5zKCkgKyAxKTsKLX0KLQotdm9pZCBSZWdFeHBNYXRjaGVzQXJyYXk6OnJlaWZ5
QWxsUHJvcGVydGllcyhFeGVjU3RhdGUqIGV4ZWMpCit2b2lkIFJlZ0V4cENvbnN0cnVjdG9yOjp2
aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAg
QVNTRVJUKG1fc3RhdGUgIT0gUmVpZmllZEFsbCk7Ci0gICAgQVNTRVJUKG1fcmVzdWx0KTsKLSAK
LSAgICByZWlmeU1hdGNoUHJvcGVydHlJZk5lY2Vzc2FyeShleGVjKTsKLQotICAgIGlmICh1bnNp
Z25lZCBudW1TdWJwYXR0ZXJucyA9IG1fcmVnRXhwLT5udW1TdWJwYXR0ZXJucygpKSB7Ci0gICAg
ICAgIFZlY3RvcjxpbnQsIDMyPiBzdWJQYXR0ZXJuUmVzdWx0czsKLSAgICAgICAgaW50IHBvc2l0
aW9uID0gbV9yZWdFeHAtPm1hdGNoKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9pbnB1dC0+dmFsdWUo
ZXhlYyksIG1fcmVzdWx0LnN0YXJ0LCAmc3ViUGF0dGVyblJlc3VsdHMpOwotICAgICAgICBBU1NF
UlRfVU5VU0VEKHBvc2l0aW9uLCBwb3NpdGlvbiA+PSAwICYmIHN0YXRpY19jYXN0PHNpemVfdD4o
cG9zaXRpb24pID09IG1fcmVzdWx0LnN0YXJ0KTsKLSAgICAgICAgQVNTRVJUKG1fcmVzdWx0LnN0
YXJ0ID09IHN0YXRpY19jYXN0PHNpemVfdD4oc3ViUGF0dGVyblJlc3VsdHNbMF0pKTsKLSAgICAg
ICAgQVNTRVJUKG1fcmVzdWx0LmVuZCA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHN1YlBhdHRlcm5S
ZXN1bHRzWzFdKSk7Ci0KLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8PSBudW1TdWJw
YXR0ZXJuczsgKytpKSB7Ci0gICAgICAgICAgICBpbnQgc3RhcnQgPSBzdWJQYXR0ZXJuUmVzdWx0
c1syICogaV07Ci0gICAgICAgICAgICBpZiAoc3RhcnQgPj0gMCkKLSAgICAgICAgICAgICAgICBw
dXREaXJlY3RJbmRleChleGVjLCBpLCBqc1N1YnN0cmluZyhleGVjLCBtX2lucHV0LmdldCgpLCBz
dGFydCwgc3ViUGF0dGVyblJlc3VsdHNbMiAqIGkgKyAxXSAtIHN0YXJ0KSwgZmFsc2UpOwotICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHB1dERpcmVjdEluZGV4KGV4ZWMsIGksIGpz
VW5kZWZpbmVkKCksIGZhbHNlKTsKLSAgICAgICAgfQotICAgIH0KKyAgICBSZWdFeHBDb25zdHJ1
Y3RvciogdGhpc09iamVjdCA9IGpzQ2FzdDxSZWdFeHBDb25zdHJ1Y3Rvcio+KGNlbGwpOworICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CisgICAgQ09N
UElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVy
cmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKKyAgICBBU1NFUlQodGhpc09i
amVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsK
IAotICAgIFB1dFByb3BlcnR5U2xvdCBzbG90OwotICAgIEpTQXJyYXk6OnB1dCh0aGlzLCBleGVj
LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuaW5kZXgsIGpzTnVtYmVyKG1fcmVzdWx0LnN0YXJ0KSwg
c2xvdCk7Ci0gICAgSlNBcnJheTo6cHV0KHRoaXMsIGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5pbnB1dCwgbV9pbnB1dC5nZXQoKSwgc2xvdCk7Ci0KLSAgICBtX3N0YXRlID0gUmVpZmllZEFs
bDsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIHRo
aXNPYmplY3QtPm1fY2FjaGVkUmVzdWx0LnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CiB9CiAKLXZv
aWQgUmVnRXhwTWF0Y2hlc0FycmF5OjpyZWlmeU1hdGNoUHJvcGVydHkoRXhlY1N0YXRlKiBleGVj
KQorSlNWYWx1ZSBSZWdFeHBDb25zdHJ1Y3Rvcjo6Z2V0QmFja3JlZihFeGVjU3RhdGUqIGV4ZWMs
IHVuc2lnbmVkIGkpCiB7Ci0gICAgQVNTRVJUKG1fc3RhdGUgPT0gUmVpZmllZE5vbmUpOwotICAg
IEFTU0VSVChtX3Jlc3VsdCk7Ci0gICAgcHV0RGlyZWN0SW5kZXgoZXhlYywgMCwganNTdWJzdHJp
bmcoZXhlYywgbV9pbnB1dC5nZXQoKSwgbV9yZXN1bHQuc3RhcnQsIG1fcmVzdWx0LmVuZCAtIG1f
cmVzdWx0LnN0YXJ0KSwgZmFsc2UpOwotICAgIG1fc3RhdGUgPSBSZWlmaWVkTWF0Y2g7Ci19Cisg
ICAgUmVnRXhwTWF0Y2hlc0FycmF5KiBhcnJheSA9IG1fY2FjaGVkUmVzdWx0Lmxhc3RSZXN1bHQo
ZXhlYywgdGhpcyk7CiAKLUpTVmFsdWUgUmVnRXhwQ29uc3RydWN0b3I6OmdldEJhY2tyZWYoRXhl
Y1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpKSBjb25zdAotewotICAgIGlmICghZC5sYXN0T3ZlY3Rv
cigpLmlzRW1wdHkoKSAmJiBpIDw9IGQubGFzdE51bVN1YlBhdHRlcm5zKSB7Ci0gICAgICAgIGlu
dCBzdGFydCA9IGQubGFzdE92ZWN0b3IoKVsyICogaV07Ci0gICAgICAgIGlmIChzdGFydCA+PSAw
KQotICAgICAgICAgICAgcmV0dXJuIGpzU3Vic3RyaW5nKGV4ZWMsIGQubGFzdElucHV0LCBzdGFy
dCwgZC5sYXN0T3ZlY3RvcigpWzIgKiBpICsgMV0gLSBzdGFydCk7CisgICAgaWYgKGkgPCBhcnJh
eS0+bGVuZ3RoKCkpIHsKKyAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBKU1ZhbHVlKGFycmF5KS5n
ZXQoZXhlYywgaSk7CisgICAgICAgIEFTU0VSVChyZXN1bHQuaXNTdHJpbmcoKSB8fCByZXN1bHQu
aXNVbmRlZmluZWQoKSk7CisgICAgICAgIGlmICghcmVzdWx0LmlzVW5kZWZpbmVkKCkpCisgICAg
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICByZXR1cm4ganNFbXB0eVN0cmluZyhl
eGVjKTsKIH0KIAotSlNWYWx1ZSBSZWdFeHBDb25zdHJ1Y3Rvcjo6Z2V0TGFzdFBhcmVuKEV4ZWNT
dGF0ZSogZXhlYykgY29uc3QKK0pTVmFsdWUgUmVnRXhwQ29uc3RydWN0b3I6OmdldExhc3RQYXJl
bihFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgdW5zaWduZWQgaSA9IGQubGFzdE51bVN1YlBhdHRl
cm5zOwotICAgIGlmIChpID4gMCkgewotICAgICAgICBBU1NFUlQoIWQubGFzdE92ZWN0b3IoKS5p
c0VtcHR5KCkpOwotICAgICAgICBpbnQgc3RhcnQgPSBkLmxhc3RPdmVjdG9yKClbMiAqIGldOwot
ICAgICAgICBpZiAoc3RhcnQgPj0gMCkKLSAgICAgICAgICAgIHJldHVybiBqc1N1YnN0cmluZyhl
eGVjLCBkLmxhc3RJbnB1dCwgc3RhcnQsIGQubGFzdE92ZWN0b3IoKVsyICogaSArIDFdIC0gc3Rh
cnQpOworICAgIFJlZ0V4cE1hdGNoZXNBcnJheSogYXJyYXkgPSBtX2NhY2hlZFJlc3VsdC5sYXN0
UmVzdWx0KGV4ZWMsIHRoaXMpOworICAgIHVuc2lnbmVkIGxlbmd0aCA9IGFycmF5LT5sZW5ndGgo
KTsKKyAgICBpZiAobGVuZ3RoID4gMSkgeworICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IEpTVmFs
dWUoYXJyYXkpLmdldChleGVjLCBsZW5ndGggLSAxKTsKKyAgICAgICAgQVNTRVJUKHJlc3VsdC5p
c1N0cmluZygpIHx8IHJlc3VsdC5pc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgaWYgKCFyZXN1bHQu
aXNVbmRlZmluZWQoKSkKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIHJl
dHVybiBqc0VtcHR5U3RyaW5nKGV4ZWMpOwogfQogCi1KU1ZhbHVlIFJlZ0V4cENvbnN0cnVjdG9y
OjpnZXRMZWZ0Q29udGV4dChFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CitKU1ZhbHVlIFJlZ0V4cENv
bnN0cnVjdG9yOjpnZXRMZWZ0Q29udGV4dChFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgaWYgKCFk
Lmxhc3RPdmVjdG9yKCkuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4ganNTdWJzdHJpbmcoZXhl
YywgZC5sYXN0SW5wdXQsIDAsIGQubGFzdE92ZWN0b3IoKVswXSk7Ci0gICAgcmV0dXJuIGpzRW1w
dHlTdHJpbmcoZXhlYyk7CisgICAgcmV0dXJuIG1fY2FjaGVkUmVzdWx0Lmxhc3RSZXN1bHQoZXhl
YywgdGhpcyktPmxlZnRDb250ZXh0KGV4ZWMpOwogfQogCi1KU1ZhbHVlIFJlZ0V4cENvbnN0cnVj
dG9yOjpnZXRSaWdodENvbnRleHQoRXhlY1N0YXRlKiBleGVjKSBjb25zdAorSlNWYWx1ZSBSZWdF
eHBDb25zdHJ1Y3Rvcjo6Z2V0UmlnaHRDb250ZXh0KEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBp
ZiAoIWQubGFzdE92ZWN0b3IoKS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBqc1N1YnN0cmlu
ZyhleGVjLCBkLmxhc3RJbnB1dCwgZC5sYXN0T3ZlY3RvcigpWzFdLCBkLmxhc3RJbnB1dC5sZW5n
dGgoKSAtIGQubGFzdE92ZWN0b3IoKVsxXSk7Ci0gICAgcmV0dXJuIGpzRW1wdHlTdHJpbmcoZXhl
Yyk7CisgICAgcmV0dXJuIG1fY2FjaGVkUmVzdWx0Lmxhc3RSZXN1bHQoZXhlYywgdGhpcyktPnJp
Z2h0Q29udGV4dChleGVjKTsKIH0KICAgICAKIGJvb2wgUmVnRXhwQ29uc3RydWN0b3I6OmdldE93
blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCkBAIC0yNTMsOSArMjA5LDkg
QEAgSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvckRvbGxhcjkoRXhlY1N0YQogICAgIHJldHVybiBh
c1JlZ0V4cENvbnN0cnVjdG9yKHNsb3RCYXNlKS0+Z2V0QmFja3JlZihleGVjLCA5KTsKIH0KIAot
SlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvcklucHV0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBz
bG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCitKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9ySW5w
dXQoRXhlY1N0YXRlKiwgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCiB7Ci0g
ICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsIGFzUmVnRXhwQ29uc3RydWN0b3Ioc2xvdEJhc2UpLT5p
bnB1dCgpKTsKKyAgICByZXR1cm4gYXNSZWdFeHBDb25zdHJ1Y3RvcihzbG90QmFzZSktPmlucHV0
KCk7CiB9CiAKIEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JNdWx0aWxpbmUoRXhlY1N0YXRlKiwg
SlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCkBAIC0yOTAsNyArMjQ2LDcgQEAg
dm9pZCBSZWdFeHBDb25zdHJ1Y3Rvcjo6cHV0KEpTQ2VsbCogY2VsbAogCiB2b2lkIHNldFJlZ0V4
cENvbnN0cnVjdG9ySW5wdXQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZU9iamVjdCwg
SlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBhc1JlZ0V4cENvbnN0cnVjdG9yKGJhc2VPYmplY3QpLT5z
ZXRJbnB1dCh2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAgIGFzUmVnRXhw
Q29uc3RydWN0b3IoYmFzZU9iamVjdCktPnNldElucHV0KGV4ZWMsIHZhbHVlLnRvU3RyaW5nKGV4
ZWMpKTsKIH0KIAogdm9pZCBzZXRSZWdFeHBDb25zdHJ1Y3Rvck11bHRpbGluZShFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQpAQCAtMzU5LDI2ICsz
MTUsNCBAQCBDYWxsVHlwZSBSZWdFeHBDb25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoCiAgICAgcmV0
dXJuIENhbGxUeXBlSG9zdDsKIH0KIAotdm9pZCBSZWdFeHBDb25zdHJ1Y3Rvcjo6c2V0SW5wdXQo
Y29uc3QgVVN0cmluZyYgaW5wdXQpCi17Ci0gICAgZC5pbnB1dCA9IGlucHV0OwotfQotCi1jb25z
dCBVU3RyaW5nJiBSZWdFeHBDb25zdHJ1Y3Rvcjo6aW5wdXQoKSBjb25zdAotewotICAgIC8vIENh
biBkZXRlY3QgYSBkaXN0aW5jdCBpbml0aWFsIHN0YXRlIHRoYXQgaXMgaW52aXNpYmxlIHRvIEph
dmFTY3JpcHQsIGJ5IGNoZWNraW5nIGZvciBudWxsCi0gICAgLy8gc3RhdGUgKHNpbmNlIGpzU3Ry
aW5nIHR1cm5zIG51bGwgc3RyaW5ncyB0byBlbXB0eSBzdHJpbmdzKS4KLSAgICByZXR1cm4gZC5p
bnB1dDsKLX0KLQotdm9pZCBSZWdFeHBDb25zdHJ1Y3Rvcjo6c2V0TXVsdGlsaW5lKGJvb2wgbXVs
dGlsaW5lKQotewotICAgIGQubXVsdGlsaW5lID0gbXVsdGlsaW5lOwotfQotCi1ib29sIFJlZ0V4
cENvbnN0cnVjdG9yOjptdWx0aWxpbmUoKSBjb25zdAotewotICAgIHJldHVybiBkLm11bHRpbGlu
ZTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDExMTc0MCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmgJKHdvcmtp
bmcgY29weSkKQEAgLTIzLDYxICsyMywyMiBAQAogCiAjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlv
bi5oIgogI2luY2x1ZGUgIlJlZ0V4cC5oIgorI2luY2x1ZGUgIlJlZ0V4cENhY2hlZFJlc3VsdC5o
IgogI2luY2x1ZGUgIlJlZ0V4cE9iamVjdC5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAor
CiBuYW1lc3BhY2UgSlNDIHsKIAotICAgIGNsYXNzIFJlZ0V4cDsKICAgICBjbGFzcyBSZWdFeHBQ
cm90b3R5cGU7Ci0gICAgc3RydWN0IFJlZ0V4cENvbnN0cnVjdG9yUHJpdmF0ZTsKLQotICAgIHN0
cnVjdCBSZWdFeHBDb25zdHJ1Y3RvclByaXZhdGUgewotICAgICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKLSAgICBwdWJsaWM6Ci0gICAgICAgIC8vIEdsb2JhbCBzZWFyY2ggY2FjaGUgLyBz
ZXR0aW5ncwotICAgICAgICBSZWdFeHBDb25zdHJ1Y3RvclByaXZhdGUoKQotICAgICAgICAgICAg
OiBsYXN0TnVtU3ViUGF0dGVybnMoMCkKLSAgICAgICAgICAgICwgbXVsdGlsaW5lKGZhbHNlKQot
ICAgICAgICAgICAgLCBsYXN0T3ZlY3RvckluZGV4KDApCi0gICAgICAgIHsKLSAgICAgICAgfQot
Ci0gICAgICAgIGNvbnN0IFZlY3RvcjxpbnQsIDMyPiYgbGFzdE92ZWN0b3IoKSBjb25zdCB7IHJl
dHVybiBvdmVjdG9yW2xhc3RPdmVjdG9ySW5kZXhdOyB9Ci0gICAgICAgIFZlY3RvcjxpbnQsIDMy
PiYgbGFzdE92ZWN0b3IoKSB7IHJldHVybiBvdmVjdG9yW2xhc3RPdmVjdG9ySW5kZXhdOyB9Ci0g
ICAgICAgIFZlY3RvcjxpbnQsIDMyPiYgdGVtcE92ZWN0b3IoKSB7IHJldHVybiBvdmVjdG9yW2xh
c3RPdmVjdG9ySW5kZXggPyAwIDogMV07IH0KLSAgICAgICAgdm9pZCBjaGFuZ2VMYXN0T3ZlY3Rv
cigpIHsgbGFzdE92ZWN0b3JJbmRleCA9IGxhc3RPdmVjdG9ySW5kZXggPyAwIDogMTsgfQotCi0g
ICAgICAgIFVTdHJpbmcgaW5wdXQ7Ci0gICAgICAgIFVTdHJpbmcgbGFzdElucHV0OwotICAgICAg
ICBWZWN0b3I8aW50LCAzMj4gb3ZlY3RvclsyXTsKLSAgICAgICAgdW5zaWduZWQgbGFzdE51bVN1
YlBhdHRlcm5zIDogMzA7Ci0gICAgICAgIGJvb2wgbXVsdGlsaW5lIDogMTsKLSAgICAgICAgdW5z
aWduZWQgbGFzdE92ZWN0b3JJbmRleCA6IDE7Ci0gICAgfTsKIAotICAgIHN0cnVjdCBSZWdFeHBS
ZXN1bHQgewotICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICBwdWJsaWM6Ci0g
ICAgICAgIFJlZ0V4cFJlc3VsdCgpCi0gICAgICAgIDogbGFzdE51bVN1YlBhdHRlcm5zKDApCi0g
ICAgICAgIHsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgUmVnRXhwUmVzdWx0JiBvcGVy
YXRvcj0oY29uc3QgUmVnRXhwQ29uc3RydWN0b3JQcml2YXRlJik7Ci0gICAgICAgIAotICAgICAg
ICBVU3RyaW5nIGlucHV0OwotICAgICAgICB1bnNpZ25lZCBsYXN0TnVtU3ViUGF0dGVybnM7Ci0g
ICAgICAgIFZlY3RvcjxpbnQsIDMyPiBvdmVjdG9yOwotICAgIH07Ci0gICAgCiAgICAgY2xhc3Mg
UmVnRXhwQ29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CiAgICAgcHVibGlj
OgogICAgICAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKIAogICAgICAgICBzdGF0
aWMgUmVnRXhwQ29uc3RydWN0b3IqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWdFeHBQcm90b3R5cGUq
IHJlZ0V4cFByb3RvdHlwZSkKICAgICAgICAgewotICAgICAgICAgICAgUmVnRXhwQ29uc3RydWN0
b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8UmVnRXhwQ29uc3Ry
dWN0b3I+KCpleGVjLT5oZWFwKCkpKSBSZWdFeHBDb25zdHJ1Y3RvcihnbG9iYWxPYmplY3QsIHN0
cnVjdHVyZSk7CisgICAgICAgICAgICBSZWdFeHBDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBu
ZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxSZWdFeHBDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAo
KSkpIFJlZ0V4cENvbnN0cnVjdG9yKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCByZWdFeHBQcm90
b3R5cGUpOwogICAgICAgICAgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKGV4ZWMsIHJl
Z0V4cFByb3RvdHlwZSk7CiAgICAgICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7CiAgICAgICAg
IH0KQEAgLTk0LDMwICs1NSwzNCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMg
Y29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAotICAgICAgICBNYXRjaFJlc3VsdCBwZXJmb3JtTWF0
Y2goSlNHbG9iYWxEYXRhJiwgUmVnRXhwKiwgY29uc3QgVVN0cmluZyYsIGludCBzdGFydE9mZnNl
dCwgaW50Kiogb3ZlY3RvciA9IDApOworICAgICAgICBNYXRjaFJlc3VsdCBwZXJmb3JtTWF0Y2go
SlNHbG9iYWxEYXRhJiwgUmVnRXhwKiwgSlNTdHJpbmcqLCBjb25zdCBVU3RyaW5nJiwgaW50IHN0
YXJ0T2Zmc2V0LCBpbnQqKiBvdmVjdG9yID0gMCk7CisKKyAgICAgICAgdm9pZCBzZXRNdWx0aWxp
bmUoYm9vbCBtdWx0aWxpbmUpIHsgbV9tdWx0aWxpbmUgPSBtdWx0aWxpbmU7IH0KKyAgICAgICAg
Ym9vbCBtdWx0aWxpbmUoKSBjb25zdCB7IHJldHVybiBtX211bHRpbGluZTsgfQogCi0gICAgICAg
IHZvaWQgc2V0SW5wdXQoY29uc3QgVVN0cmluZyYpOwotICAgICAgICBjb25zdCBVU3RyaW5nJiBp
bnB1dCgpIGNvbnN0OworICAgICAgICBKU1ZhbHVlIGdldEJhY2tyZWYoRXhlY1N0YXRlKiwgdW5z
aWduZWQpOworICAgICAgICBKU1ZhbHVlIGdldExhc3RQYXJlbihFeGVjU3RhdGUqKTsKKyAgICAg
ICAgSlNWYWx1ZSBnZXRMZWZ0Q29udGV4dChFeGVjU3RhdGUqKTsKKyAgICAgICAgSlNWYWx1ZSBn
ZXRSaWdodENvbnRleHQoRXhlY1N0YXRlKik7CiAKLSAgICAgICAgdm9pZCBzZXRNdWx0aWxpbmUo
Ym9vbCk7Ci0gICAgICAgIGJvb2wgbXVsdGlsaW5lKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0
SW5wdXQoRXhlY1N0YXRlKiBleGVjLCBKU1N0cmluZyogc3RyaW5nKSB7IG1fY2FjaGVkUmVzdWx0
LnNldElucHV0KGV4ZWMsIHRoaXMsIHN0cmluZyk7IH0KKyAgICAgICAgSlNTdHJpbmcqIGlucHV0
KCkgeyByZXR1cm4gbV9jYWNoZWRSZXN1bHQuaW5wdXQoKTsgfQogCi0gICAgICAgIEpTVmFsdWUg
Z2V0QmFja3JlZihFeGVjU3RhdGUqLCB1bnNpZ25lZCkgY29uc3Q7Ci0gICAgICAgIEpTVmFsdWUg
Z2V0TGFzdFBhcmVuKEV4ZWNTdGF0ZSopIGNvbnN0OwotICAgICAgICBKU1ZhbHVlIGdldExlZnRD
b250ZXh0KEV4ZWNTdGF0ZSopIGNvbnN0OwotICAgICAgICBKU1ZhbHVlIGdldFJpZ2h0Q29udGV4
dChFeGVjU3RhdGUqKSBjb25zdDsKKyAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihK
U0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSosIFJlZ0V4cFByb3RvdHlwZSopOwotICAgICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0
eVNsb3QgfCBJbXBsZW1lbnRzSGFzSW5zdGFuY2UgfCBJbnRlcm5hbEZ1bmN0aW9uOjpTdHJ1Y3R1
cmVGbGFnczsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0g
T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IEJh
c2U6OlN0cnVjdHVyZUZsYWdzOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgUmVnRXhwQ29uc3Ry
dWN0b3IoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKKyAgICAgICAgUmVnRXhwQ29uc3Ry
dWN0b3IoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBSZWdFeHBQcm90b3R5cGUqKTsKICAg
ICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKICAgICAgICAgc3RhdGljIENvbnN0
cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7CiAgICAg
ICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwogCi0g
ICAgICAgIFJlZ0V4cENvbnN0cnVjdG9yUHJpdmF0ZSBkOworICAgICAgICBSZWdFeHBDYWNoZWRS
ZXN1bHQgbV9jYWNoZWRSZXN1bHQ7CisgICAgICAgIGJvb2wgbV9tdWx0aWxpbmU7CisgICAgICAg
IFZlY3RvcjxpbnQsIDMyPiBtX292ZWN0b3I7CiAgICAgfTsKIAogICAgIFJlZ0V4cENvbnN0cnVj
dG9yKiBhc1JlZ0V4cENvbnN0cnVjdG9yKEpTVmFsdWUpOwpAQCAtMTM1LDI1ICsxMDAsMjIgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICBleHByZXNzaW9uIG1hdGNoaW5nIHRocm91Z2ggdGhlIHBl
cmZvcm1NYXRjaCBmdW5jdGlvbi4gV2UgdXNlIGNhY2hlZCByZXN1bHRzIHRvIGNhbGN1bGF0ZSwg
CiAgICAgICBlLmcuLCBSZWdFeHAubGFzdE1hdGNoIGFuZCBSZWdFeHAubGVmdFBhcmVuLgogICAg
ICovCi0gICAgQUxXQVlTX0lOTElORSBNYXRjaFJlc3VsdCBSZWdFeHBDb25zdHJ1Y3Rvcjo6cGVy
Zm9ybU1hdGNoKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUmVnRXhwKiByLCBjb25zdCBVU3Ry
aW5nJiBzLCBpbnQgc3RhcnRPZmZzZXQsIGludCoqIG92ZWN0b3IpCisgICAgQUxXQVlTX0lOTElO
RSBNYXRjaFJlc3VsdCBSZWdFeHBDb25zdHJ1Y3Rvcjo6cGVyZm9ybU1hdGNoKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgUmVnRXhwKiByZWdFeHAsIEpTU3RyaW5nKiBzdHJpbmcsIGNvbnN0IFVT
dHJpbmcmIGlucHV0LCBpbnQgc3RhcnRPZmZzZXQsIGludCoqIG92ZWN0b3IpCiAgICAgewotICAg
ICAgICBpbnQgcG9zaXRpb24gPSByLT5tYXRjaChnbG9iYWxEYXRhLCBzLCBzdGFydE9mZnNldCwg
JmQudGVtcE92ZWN0b3IoKSk7CisgICAgICAgIGludCBwb3NpdGlvbiA9IHJlZ0V4cC0+bWF0Y2go
Z2xvYmFsRGF0YSwgaW5wdXQsIHN0YXJ0T2Zmc2V0LCAmbV9vdmVjdG9yKTsKIAogICAgICAgICBp
ZiAob3ZlY3RvcikKLSAgICAgICAgICAgICpvdmVjdG9yID0gZC50ZW1wT3ZlY3RvcigpLmRhdGEo
KTsKKyAgICAgICAgICAgICpvdmVjdG9yID0gbV9vdmVjdG9yLmRhdGEoKTsKIAogICAgICAgICBp
ZiAocG9zaXRpb24gPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gTWF0Y2hSZXN1bHQ6OmZhaWxl
ZCgpOwogCi0gICAgICAgIEFTU0VSVCghZC50ZW1wT3ZlY3RvcigpLmlzRW1wdHkoKSk7Ci0gICAg
ICAgIEFTU0VSVChkLnRlbXBPdmVjdG9yKClbMF0gPT0gcG9zaXRpb24pOwotICAgICAgICBBU1NF
UlQoZC50ZW1wT3ZlY3RvcigpWzFdID49IHBvc2l0aW9uKTsKLSAgICAgICAgc2l6ZV90IGVuZCA9
IGQudGVtcE92ZWN0b3IoKVsxXTsKLQotICAgICAgICBkLmlucHV0ID0gczsKLSAgICAgICAgZC5s
YXN0SW5wdXQgPSBzOwotICAgICAgICBkLmNoYW5nZUxhc3RPdmVjdG9yKCk7Ci0gICAgICAgIGQu
bGFzdE51bVN1YlBhdHRlcm5zID0gci0+bnVtU3VicGF0dGVybnMoKTsKKyAgICAgICAgQVNTRVJU
KCFtX292ZWN0b3IuaXNFbXB0eSgpKTsKKyAgICAgICAgQVNTRVJUKG1fb3ZlY3RvclswXSA9PSBw
b3NpdGlvbik7CisgICAgICAgIEFTU0VSVChtX292ZWN0b3JbMV0gPj0gcG9zaXRpb24pOworICAg
ICAgICBzaXplX3QgZW5kID0gbV9vdmVjdG9yWzFdOworCisgICAgICAgIG1fY2FjaGVkUmVzdWx0
LnJlY29yZChnbG9iYWxEYXRhLCB0aGlzLCByZWdFeHAsIHN0cmluZywgTWF0Y2hSZXN1bHQocG9z
aXRpb24sIGVuZCkpOwogCiAgICAgICAgIHJldHVybiBNYXRjaFJlc3VsdChwb3NpdGlvbiwgZW5k
KTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBNYXRj
aGVzQXJyYXkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cE1hdGNoZXNBcnJheS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDEwNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVnRXhwTWF0Y2hlc0FycmF5LmgiCisK
K25hbWVzcGFjZSBKU0MgeworCitBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKFJlZ0V4cE1hdGNo
ZXNBcnJheSk7CisKK2NvbnN0IENsYXNzSW5mbyBSZWdFeHBNYXRjaGVzQXJyYXk6OnNfaW5mbyA9
IHsiQXJyYXkiLCAmSlNBcnJheTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFJl
Z0V4cE1hdGNoZXNBcnJheSl9OworCit2b2lkIFJlZ0V4cE1hdGNoZXNBcnJheTo6ZmluaXNoQ3Jl
YXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0
aW9uKGdsb2JhbERhdGEsIG1fcmVnRXhwLT5udW1TdWJwYXR0ZXJucygpICsgMSk7Cit9CisKK3Zv
aWQgUmVnRXhwTWF0Y2hlc0FycmF5Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZp
c2l0b3ImIHZpc2l0b3IpCit7CisgICAgUmVnRXhwTWF0Y2hlc0FycmF5KiB0aGlzT2JqZWN0ID0g
anNDYXN0PFJlZ0V4cE1hdGNoZXNBcnJheSo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CisgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0
dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVu
V2l0aG91dFNldHRpbmdGbGFnKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCkt
PnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKworICAgIEJhc2U6OnZpc2l0
Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPm1faW5wdXQpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3JlZ0V4
cCk7Cit9CisKK3ZvaWQgUmVnRXhwTWF0Y2hlc0FycmF5OjpyZWlmeUFsbFByb3BlcnRpZXMoRXhl
Y1N0YXRlKiBleGVjKQoreworICAgIEFTU0VSVChtX3N0YXRlICE9IFJlaWZpZWRBbGwpOworICAg
IEFTU0VSVChtX3Jlc3VsdCk7CisgCisgICAgcmVpZnlNYXRjaFByb3BlcnR5SWZOZWNlc3Nhcnko
ZXhlYyk7CisKKyAgICBpZiAodW5zaWduZWQgbnVtU3VicGF0dGVybnMgPSBtX3JlZ0V4cC0+bnVt
U3VicGF0dGVybnMoKSkgeworICAgICAgICBWZWN0b3I8aW50LCAzMj4gc3VicGF0dGVyblJlc3Vs
dHM7CisgICAgICAgIGludCBwb3NpdGlvbiA9IG1fcmVnRXhwLT5tYXRjaChleGVjLT5nbG9iYWxE
YXRhKCksIG1faW5wdXQtPnZhbHVlKGV4ZWMpLCBtX3Jlc3VsdC5zdGFydCwgJnN1YnBhdHRlcm5S
ZXN1bHRzKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChwb3NpdGlvbiwgcG9zaXRpb24gPj0gMCAm
JiBzdGF0aWNfY2FzdDxzaXplX3Q+KHBvc2l0aW9uKSA9PSBtX3Jlc3VsdC5zdGFydCk7CisgICAg
ICAgIEFTU0VSVChtX3Jlc3VsdC5zdGFydCA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHN1YnBhdHRl
cm5SZXN1bHRzWzBdKSk7CisgICAgICAgIEFTU0VSVChtX3Jlc3VsdC5lbmQgPT0gc3RhdGljX2Nh
c3Q8c2l6ZV90PihzdWJwYXR0ZXJuUmVzdWx0c1sxXSkpOworCisgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDE7IGkgPD0gbnVtU3VicGF0dGVybnM7ICsraSkgeworICAgICAgICAgICAgaW50IHN0
YXJ0ID0gc3VicGF0dGVyblJlc3VsdHNbMiAqIGldOworICAgICAgICAgICAgaWYgKHN0YXJ0ID49
IDApCisgICAgICAgICAgICAgICAgcHV0RGlyZWN0SW5kZXgoZXhlYywgaSwganNTdWJzdHJpbmco
ZXhlYywgbV9pbnB1dC5nZXQoKSwgc3RhcnQsIHN1YnBhdHRlcm5SZXN1bHRzWzIgKiBpICsgMV0g
LSBzdGFydCksIGZhbHNlKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBwdXRE
aXJlY3RJbmRleChleGVjLCBpLCBqc1VuZGVmaW5lZCgpLCBmYWxzZSk7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICBKU0FycmF5OjpwdXQodGhpcywg
ZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmluZGV4LCBqc051bWJlcihtX3Jlc3VsdC5zdGFy
dCksIHNsb3QpOworICAgIEpTQXJyYXk6OnB1dCh0aGlzLCBleGVjLCBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkuaW5wdXQsIG1faW5wdXQuZ2V0KCksIHNsb3QpOworCisgICAgbV9zdGF0ZSA9IFJlaWZp
ZWRBbGw7Cit9CisKK3ZvaWQgUmVnRXhwTWF0Y2hlc0FycmF5OjpyZWlmeU1hdGNoUHJvcGVydHko
RXhlY1N0YXRlKiBleGVjKQoreworICAgIEFTU0VSVChtX3N0YXRlID09IFJlaWZpZWROb25lKTsK
KyAgICBBU1NFUlQobV9yZXN1bHQpOworICAgIHB1dERpcmVjdEluZGV4KGV4ZWMsIDAsIGpzU3Vi
c3RyaW5nKGV4ZWMsIG1faW5wdXQuZ2V0KCksIG1fcmVzdWx0LnN0YXJ0LCBtX3Jlc3VsdC5lbmQg
LSBtX3Jlc3VsdC5zdGFydCksIGZhbHNlKTsKKyAgICBtX3N0YXRlID0gUmVpZmllZE1hdGNoOwor
fQorCitKU1N0cmluZyogUmVnRXhwTWF0Y2hlc0FycmF5OjpsZWZ0Q29udGV4dChFeGVjU3RhdGUq
IGV4ZWMpCit7CisgICAgaWYgKCFtX3Jlc3VsdC5zdGFydCkKKyAgICAgICAgcmV0dXJuIGpzRW1w
dHlTdHJpbmcoZXhlYyk7CisgICAgcmV0dXJuIGpzU3Vic3RyaW5nKGV4ZWMsIG1faW5wdXQuZ2V0
KCksIDAsIG1fcmVzdWx0LnN0YXJ0KTsKK30KKworSlNTdHJpbmcqIFJlZ0V4cE1hdGNoZXNBcnJh
eTo6cmlnaHRDb250ZXh0KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICB1bnNpZ25lZCBsZW5ndGgg
PSBtX2lucHV0LT5sZW5ndGgoKTsKKyAgICBpZiAobV9yZXN1bHQuZW5kID09IGxlbmd0aCkKKyAg
ICAgICAgcmV0dXJuIGpzRW1wdHlTdHJpbmcoZXhlYyk7CisgICAgcmV0dXJuIGpzU3Vic3RyaW5n
KGV4ZWMsIG1faW5wdXQuZ2V0KCksIG1fcmVzdWx0LmVuZCwgbGVuZ3RoIC0gbV9yZXN1bHQuZW5k
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuaAkocmV2aXNpb24gMTExNzQwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmgJKHdv
cmtpbmcgY29weSkKQEAgLTIxLDYgKzIxLDggQEAKICNkZWZpbmUgUmVnRXhwTWF0Y2hlc0FycmF5
X2gKIAogI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgor
I2luY2x1ZGUgIlJlZ0V4cE9iamVjdC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNDksNiAr
NTEsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBhcnJheTsKICAgICAg
ICAgfQogCisgICAgICAgIEpTU3RyaW5nKiBsZWZ0Q29udGV4dChFeGVjU3RhdGUqKTsKKyAgICAg
ICAgSlNTdHJpbmcqIHJpZ2h0Q29udGV4dChFeGVjU3RhdGUqKTsKKwogICAgICAgICBzdGF0aWMg
Y29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAogICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKQEAgLTU2LDkgKzYxLDEzIEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEs
IGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVG
bGFncyksICZzX2luZm8pOwogICAgICAgICB9CiAKKyAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRD
aGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOworCiAgICAgcHJvdGVjdGVkOgogICAgICAg
ICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYpOwogCisgICAgICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xv
dCB8IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwg
QmFzZTo6U3RydWN0dXJlRmxhZ3M7CisKICAgICBwcml2YXRlOgogICAgICAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgcmVpZnlBbGxQcm9wZXJ0aWVzSWZOZWNlc3NhcnkoRXhlY1N0YXRlKiBleGVjKQog
ICAgICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmpl
Y3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cE9iamVjdC5jcHAJKHJldmlzaW9uIDExMTc0MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5Miw3ICsyOTIsNyBA
QCBNYXRjaFJlc3VsdCBSZWdFeHBPYmplY3Q6Om1hdGNoKEV4ZWNTdGF0CiAgICAgVVN0cmluZyBp
bnB1dCA9IHN0cmluZy0+dmFsdWUoZXhlYyk7CiAgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
ID0gZXhlYy0+Z2xvYmFsRGF0YSgpOwogICAgIGlmICghcmVnRXhwLT5nbG9iYWwoKSkKLSAgICAg
ICAgcmV0dXJuIHJlZ0V4cENvbnN0cnVjdG9yLT5wZXJmb3JtTWF0Y2goZ2xvYmFsRGF0YSwgcmVn
RXhwLCBpbnB1dCwgMCk7CisgICAgICAgIHJldHVybiByZWdFeHBDb25zdHJ1Y3Rvci0+cGVyZm9y
bU1hdGNoKGdsb2JhbERhdGEsIHJlZ0V4cCwgc3RyaW5nLCBpbnB1dCwgMCk7CiAKICAgICBKU1Zh
bHVlIGpzTGFzdEluZGV4ID0gZ2V0TGFzdEluZGV4KCk7CiAgICAgdW5zaWduZWQgbGFzdEluZGV4
OwpAQCAtMzExLDcgKzMxMSw3IEBAIE1hdGNoUmVzdWx0IFJlZ0V4cE9iamVjdDo6bWF0Y2goRXhl
Y1N0YXQKICAgICAgICAgbGFzdEluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRvdWJsZUxh
c3RJbmRleCk7CiAgICAgfQogCi0gICAgTWF0Y2hSZXN1bHQgcmVzdWx0ID0gcmVnRXhwQ29uc3Ry
dWN0b3ItPnBlcmZvcm1NYXRjaChnbG9iYWxEYXRhLCByZWdFeHAsIGlucHV0LCBsYXN0SW5kZXgp
OworICAgIE1hdGNoUmVzdWx0IHJlc3VsdCA9IHJlZ0V4cENvbnN0cnVjdG9yLT5wZXJmb3JtTWF0
Y2goZ2xvYmFsRGF0YSwgcmVnRXhwLCBzdHJpbmcsIGlucHV0LCBsYXN0SW5kZXgpOwogICAgIHNl
dExhc3RJbmRleChleGVjLCByZXN1bHQuZW5kKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUu
Y3BwCShyZXZpc2lvbiAxMTE3NDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpbmdQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTQsNyArNDE0LDcgQEAgc3Rh
dGljIE5FVkVSX0lOTElORSBFbmNvZGVkSlNWYWx1ZSByZW1vdgogICAgIHVuc2lnbmVkIHNvdXJj
ZUxlbiA9IHNvdXJjZS5sZW5ndGgoKTsKIAogICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIE1h
dGNoUmVzdWx0IHJlc3VsdCA9IHJlZ0V4cENvbnN0cnVjdG9yLT5wZXJmb3JtTWF0Y2goKmdsb2Jh
bERhdGEsIHJlZ0V4cCwgc291cmNlLCBzdGFydFBvc2l0aW9uKTsKKyAgICAgICAgTWF0Y2hSZXN1
bHQgcmVzdWx0ID0gcmVnRXhwQ29uc3RydWN0b3ItPnBlcmZvcm1NYXRjaCgqZ2xvYmFsRGF0YSwg
cmVnRXhwLCBzdHJpbmcsIHNvdXJjZSwgc3RhcnRQb3NpdGlvbik7CiAgICAgICAgIGlmICghcmVz
dWx0KQogICAgICAgICAgICAgYnJlYWs7CiAKQEAgLTQ4Nyw3ICs0ODcsNyBAQCBzdGF0aWMgTkVW
RVJfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIHJlcGxhCiAgICAgICAgIGlmIChzb3VyY2UuaXM4Qml0
KCkpIHsKICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgICAgICAgICAgaW50KiBv
dmVjdG9yOwotICAgICAgICAgICAgICAgIE1hdGNoUmVzdWx0IHJlc3VsdCA9IHJlZ0V4cENvbnN0
cnVjdG9yLT5wZXJmb3JtTWF0Y2goKmdsb2JhbERhdGEsIHJlZ0V4cCwgc291cmNlLCBzdGFydFBv
c2l0aW9uLCAmb3ZlY3Rvcik7CisgICAgICAgICAgICAgICAgTWF0Y2hSZXN1bHQgcmVzdWx0ID0g
cmVnRXhwQ29uc3RydWN0b3ItPnBlcmZvcm1NYXRjaCgqZ2xvYmFsRGF0YSwgcmVnRXhwLCBzdHJp
bmcsIHNvdXJjZSwgc3RhcnRQb3NpdGlvbiwgJm92ZWN0b3IpOwogICAgICAgICAgICAgICAgIGlm
ICghcmVzdWx0KQogICAgICAgICAgICAgICAgICAgICBicmVhazsKIApAQCAtNTI2LDcgKzUyNiw3
IEBAIHN0YXRpYyBORVZFUl9JTkxJTkUgRW5jb2RlZEpTVmFsdWUgcmVwbGEKICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgICAgICAgICAgaW50KiBv
dmVjdG9yOwotICAgICAgICAgICAgICAgIE1hdGNoUmVzdWx0IHJlc3VsdCA9IHJlZ0V4cENvbnN0
cnVjdG9yLT5wZXJmb3JtTWF0Y2goKmdsb2JhbERhdGEsIHJlZ0V4cCwgc291cmNlLCBzdGFydFBv
c2l0aW9uLCAmb3ZlY3Rvcik7CisgICAgICAgICAgICAgICAgTWF0Y2hSZXN1bHQgcmVzdWx0ID0g
cmVnRXhwQ29uc3RydWN0b3ItPnBlcmZvcm1NYXRjaCgqZ2xvYmFsRGF0YSwgcmVnRXhwLCBzdHJp
bmcsIHNvdXJjZSwgc3RhcnRQb3NpdGlvbiwgJm92ZWN0b3IpOwogICAgICAgICAgICAgICAgIGlm
ICghcmVzdWx0KQogICAgICAgICAgICAgICAgICAgICBicmVhazsKIApAQCAtNTY3LDcgKzU2Nyw3
IEBAIHN0YXRpYyBORVZFUl9JTkxJTkUgRW5jb2RlZEpTVmFsdWUgcmVwbGEKICAgICAgICAgSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKICAgICAgICAgZG8g
ewogICAgICAgICAgICAgaW50KiBvdmVjdG9yOwotICAgICAgICAgICAgTWF0Y2hSZXN1bHQgcmVz
dWx0ID0gcmVnRXhwQ29uc3RydWN0b3ItPnBlcmZvcm1NYXRjaCgqZ2xvYmFsRGF0YSwgcmVnRXhw
LCBzb3VyY2UsIHN0YXJ0UG9zaXRpb24sICZvdmVjdG9yKTsKKyAgICAgICAgICAgIE1hdGNoUmVz
dWx0IHJlc3VsdCA9IHJlZ0V4cENvbnN0cnVjdG9yLT5wZXJmb3JtTWF0Y2goKmdsb2JhbERhdGEs
IHJlZ0V4cCwgc3RyaW5nLCBzb3VyY2UsIHN0YXJ0UG9zaXRpb24sICZvdmVjdG9yKTsKICAgICAg
ICAgICAgIGlmICghcmVzdWx0KQogICAgICAgICAgICAgICAgIGJyZWFrOwogCkBAIC04MjgsNyAr
ODI4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogICAgICAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCBy
ZWdFeHAtPmVycm9yTWVzc2FnZSgpKSk7CiAgICAgfQogICAgIFJlZ0V4cENvbnN0cnVjdG9yKiBy
ZWdFeHBDb25zdHJ1Y3RvciA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+cmVnRXhwQ29u
c3RydWN0b3IoKTsKLSAgICBNYXRjaFJlc3VsdCByZXN1bHQgPSByZWdFeHBDb25zdHJ1Y3Rvci0+
cGVyZm9ybU1hdGNoKCpnbG9iYWxEYXRhLCByZWdFeHAsIHMsIDApOworICAgIE1hdGNoUmVzdWx0
IHJlc3VsdCA9IHJlZ0V4cENvbnN0cnVjdG9yLT5wZXJmb3JtTWF0Y2goKmdsb2JhbERhdGEsIHJl
Z0V4cCwgc3RyaW5nLCBzLCAwKTsKICAgICAvLyBjYXNlIHdpdGhvdXQgJ2cnIGZsYWcgaXMgaGFu
ZGxlZCBsaWtlIFJlZ0V4cC5wcm90b3R5cGUuZXhlYwogICAgIGlmICghZ2xvYmFsKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCA/IFJlZ0V4cE1hdGNoZXNBcnJheTo6Y3Jl
YXRlKGV4ZWMsIHN0cmluZywgcmVnRXhwLCByZXN1bHQpIDoganNOdWxsKCkpOwpAQCAtODQxLDcg
Kzg0MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG8KICAgICAg
ICAgbGlzdC5hcHBlbmQoanNTdWJzdHJpbmcoZXhlYywgcywgcmVzdWx0LnN0YXJ0LCBsZW5ndGgp
KTsKICAgICAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgICAgICArK2VuZDsKLSAgICAgICAgcmVz
dWx0ID0gcmVnRXhwQ29uc3RydWN0b3ItPnBlcmZvcm1NYXRjaCgqZ2xvYmFsRGF0YSwgcmVnRXhw
LCBzLCBlbmQpOworICAgICAgICByZXN1bHQgPSByZWdFeHBDb25zdHJ1Y3Rvci0+cGVyZm9ybU1h
dGNoKCpnbG9iYWxEYXRhLCByZWdFeHAsIHN0cmluZywgcywgZW5kKTsKICAgICB9CiAgICAgaWYg
KGxpc3QuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIGlmIHRoZXJlIGFyZSBubyBtYXRjaGVzIGF0
IGFsbCwgaXQncyBpbXBvcnRhbnQgdG8gcmV0dXJuCkBAIC04NTgsNyArODU4LDggQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOwogICAgIGlmICh0aGlzVmFsdWUuaXNVbmRlZmluZWRP
ck51bGwoKSkgLy8gQ2hlY2tPYmplY3RDb2VyY2libGUKICAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYyk7Ci0gICAgVVN0cmluZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMp
LT52YWx1ZShleGVjKTsKKyAgICBKU1N0cmluZyogc3RyaW5nID0gdGhpc1ZhbHVlLnRvU3RyaW5n
KGV4ZWMpOworICAgIFVTdHJpbmcgcyA9IHN0cmluZy0+dmFsdWUoZXhlYyk7CiAgICAgSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKIAogICAgIEpTVmFsdWUg
YTAgPSBleGVjLT5hcmd1bWVudCgwKTsKQEAgLTg3OCw3ICs4NzksNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAgICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsIHJlZy0+ZXJyb3JNZXNzYWdlKCkpKTsK
ICAgICB9CiAgICAgUmVnRXhwQ29uc3RydWN0b3IqIHJlZ0V4cENvbnN0cnVjdG9yID0gZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5yZWdFeHBDb25zdHJ1Y3RvcigpOwotICAgIE1hdGNoUmVz
dWx0IHJlc3VsdCA9IHJlZ0V4cENvbnN0cnVjdG9yLT5wZXJmb3JtTWF0Y2goKmdsb2JhbERhdGEs
IHJlZywgcywgMCk7CisgICAgTWF0Y2hSZXN1bHQgcmVzdWx0ID0gcmVnRXhwQ29uc3RydWN0b3It
PnBlcmZvcm1NYXRjaCgqZ2xvYmFsRGF0YSwgcmVnLCBzdHJpbmcsIHMsIDApOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUocmVzdWx0ID8ganNOdW1iZXIocmVzdWx0LnN0YXJ0KSA6IGpzTnVt
YmVyKC0xKSk7CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>