<?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>97959</bug_id>
          
          <creation_ts>2012-09-28 18:32:20 -0700</creation_ts>
          <short_desc>Remove support for method overloading from bridge code</short_desc>
          <delta_ts>2012-09-28 19:17:44 -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>New Bugs</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="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>731117</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-09-28 18:32:20 -0700</bug_when>
    <thetext>Remove support for method overloading from bridge code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731119</commentid>
    <comment_count>1</comment_count>
      <attachid>166344</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-09-28 18:34:34 -0700</bug_when>
    <thetext>Created attachment 166344
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731126</commentid>
    <comment_count>2</comment_count>
      <attachid>166344</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-09-28 18:43:54 -0700</bug_when>
    <thetext>Comment on attachment 166344
Patch

Attachment 166344 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/14091034</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731128</commentid>
    <comment_count>3</comment_count>
      <attachid>166344</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-09-28 18:49:04 -0700</bug_when>
    <thetext>Comment on attachment 166344
Patch

Attachment 166344 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/14088036</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731131</commentid>
    <comment_count>4</comment_count>
      <attachid>166347</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-09-28 18:55:50 -0700</bug_when>
    <thetext>Created attachment 166347
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731132</commentid>
    <comment_count>5</comment_count>
      <attachid>166348</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-09-28 19:02:46 -0700</bug_when>
    <thetext>Created attachment 166348
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731133</commentid>
    <comment_count>6</comment_count>
      <attachid>166349</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-09-28 19:06:19 -0700</bug_when>
    <thetext>Created attachment 166349
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731137</commentid>
    <comment_count>7</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-09-28 19:17:44 -0700</bug_when>
    <thetext>Committed r129969: &lt;http://trac.webkit.org/changeset/129969&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166344</attachid>
            <date>2012-09-28 18:34:34 -0700</date>
            <delta_ts>2012-09-28 18:55:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97959-20120928183350.patch</filename>
            <type>text/plain</type>
            <size>29957</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5OTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzQ3N2RhY2M0NDQ2OTg3
OTNjOTZkYmQ1MjViNjczODgwYzI2MzVjNS4uYjg3NzYyMmEyYWIwMTdiNjc3OWRkNjMzMzMxNWNj
OWE4NjRiNGRiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ4IEBACiAyMDEyLTA5LTI4ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKKyAgICAgICAgUmVtb3ZlIHN1cHBv
cnQgZm9yIG1ldGhvZCBvdmVybG9hZGluZyBmcm9tIGJyaWRnZSBjb2RlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Nzk1OQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBtZXRob2Qgb3ZlcmxvYWRpbmcg
aGFuZGxpbmcgd2FzIG9ubHkgaW4gcGxhY2UgZm9yIHRoZSAobm93IHJlbW92ZWQpIEphdmEgYnJp
ZGdlLiAKKyAgICAgICAgUmVwbGFjZSBNZXRob2RMaXN0IGV2ZXJ5d2hlcmUgd2l0aCBhIHNpbmds
ZSBNZXRob2QgcG9pbnRlci4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAq
IGJyaWRnZS9jL2NfY2xhc3MuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Q0NsYXNzOjpt
ZXRob2ROYW1lZCk6CisgICAgICAgICogYnJpZGdlL2MvY19jbGFzcy5oOgorICAgICAgICAoQ0Ns
YXNzKToKKyAgICAgICAgKiBicmlkZ2UvYy9jX2luc3RhbmNlLmNwcDoKKyAgICAgICAgKEpTQzo6
QmluZGluZ3M6OkNSdW50aW1lTWV0aG9kOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpCaW5kaW5n
czo6Q1J1bnRpbWVNZXRob2Q6OkNSdW50aW1lTWV0aG9kKToKKyAgICAgICAgKEpTQzo6QmluZGlu
Z3M6OkNJbnN0YW5jZTo6Z2V0TWV0aG9kKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkNJbnN0
YW5jZTo6aW52b2tlTWV0aG9kKToKKyAgICAgICAgKiBicmlkZ2UvanNjL0JyaWRnZUpTQy5oOgor
ICAgICAgICAoQmluZGluZ3MpOgorICAgICAgICAoQ2xhc3MpOgorICAgICAgICAqIGJyaWRnZS9v
YmpjL29iamNfY2xhc3MuaDoKKyAgICAgICAgKE9iamNDbGFzcyk6CisgICAgICAgICogYnJpZGdl
L29iamMvb2JqY19jbGFzcy5tbToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamNDbGFzczo6
bWV0aG9kTmFtZWQpOgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW06Cisg
ICAgICAgIChPYmpDUnVudGltZU1ldGhvZDo6Y3JlYXRlKToKKyAgICAgICAgKE9iakNSdW50aW1l
TWV0aG9kOjpPYmpDUnVudGltZU1ldGhvZCk6CisgICAgICAgIChPYmpjSW5zdGFuY2U6Omludm9r
ZU1ldGhvZCk6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcDoKKyAgICAgICAg
KEpTQzo6UnVudGltZU1ldGhvZDo6UnVudGltZU1ldGhvZCk6CisgICAgICAgIChKU0M6OlJ1bnRp
bWVNZXRob2Q6Omxlbmd0aEdldHRlcik6CisgICAgICAgIChKU0M6OmNhbGxSdW50aW1lTWV0aG9k
KToKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9tZXRob2QuaDoKKyAgICAgICAgKEpTQzo6UnVu
dGltZU1ldGhvZDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6UnVudGltZU1ldGhvZDo6bWV0aG9k
KToKKyAgICAgICAgKFJ1bnRpbWVNZXRob2QpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX29i
amVjdC5jcHA6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpSdW50aW1lT2JqZWN0OjpnZXRPd25Q
cm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UnVudGltZU9iamVjdDo6Z2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKworMjAxMi0wOS0yOCAgQW5kZXJzIENhcmxzc29uICA8
YW5kZXJzY2FAYXBwbGUuY29tPgorCiAgICAgICAgIFJlbW92ZSBKYXZhIGJyaWRnZQogICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc5NTQKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCmluZGV4IGUyYzVhYjk1M2JjZDhjYzZkYmY2MTNlZjJkZjk0YWEyYzdkNmIzNTAuLjhm
YmUyMzc2YTU1NTBjYzU2ZTRkZTMwMWI2YTdiZjAxMTQyODFmMmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cK
QEAgLTEsNSArMSwyNSBAQAogMjAxMi0wOS0yOCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FA
YXBwbGUuY29tPgogCisgICAgICAgIFJlbW92ZSBzdXBwb3J0IGZvciBtZXRob2Qgb3ZlcmxvYWRp
bmcgZnJvbSBicmlkZ2UgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9OTc5NTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBVcGRhdGUgZm9yIFdlYkNvcmUgY2hhbmdlczsgTWV0aG9kTGlzdCBoYXMgYmVl
biByZXBsYWNlZCB3aXRoIGEgc2luZ2xlIE1ldGhvZCogZXZlcnl3aGVyZS4KKworICAgICAgICAq
IFBsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UuaDoKKyAgICAgICAgKFByb3h5SW5zdGFuY2Up
OgorICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW06CisgICAgICAgIChQ
cm94eUNsYXNzKToKKyAgICAgICAgKFdlYktpdDo6UHJveHlDbGFzczo6bWV0aG9kTmFtZWQpOgor
ICAgICAgICAoV2ViS2l0OjpQcm94eVJ1bnRpbWVNZXRob2Q6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlByb3h5UnVudGltZU1ldGhvZDo6UHJveHlSdW50aW1lTWV0aG9kKToKKyAgICAgICAg
KFdlYktpdDo6UHJveHlJbnN0YW5jZTo6Z2V0TWV0aG9kKToKKyAgICAgICAgKFdlYktpdDo6UHJv
eHlJbnN0YW5jZTo6aW52b2tlTWV0aG9kKToKKyAgICAgICAgKFdlYktpdDo6UHJveHlJbnN0YW5j
ZTo6bWV0aG9kTmFtZWQpOgorCisyMDEyLTA5LTI4ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNj
YUBhcHBsZS5jb20+CisKICAgICAgICAgUmVtb3ZlIEphdmEgYnJpZGdlCiAgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Nzk1NAogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCmluZGV4IGI4NjUxYmIzMTM0YTUwOTYzOTg3YWI2M2ZhYmI4OTlkZDQ3YzA0ZDYuLjRjMDli
MGU4YmVmY2UwZmE2Y2I2ZDVmMjdlYTk2Y2M2MTYwNDQwNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CkBAIC0yMzUwLDggKzIzNTAsNyBAQCBfX1pOM0pTQzEzUnVudGltZU1ldGhvZDE0ZmluaXNoQ3Jl
YXRpb25FUk5TXzEySlNHbG9iYWxEYXRhRVJLTjNXVEY2U3RyaW5nRQogX19aTjNKU0MxM1J1bnRp
bWVNZXRob2QxOGdldE93blByb3BlcnR5U2xvdEVQTlNfNkpTQ2VsbEVQTlNfOUV4ZWNTdGF0ZUVO
U18xMlByb3BlcnR5TmFtZUVSTlNfMTJQcm9wZXJ0eVNsb3RFCiBfX1pOM0pTQzEzUnVudGltZU1l
dGhvZDI0Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRVBOU184SlNPYmplY3RFUE5TXzlFeGVjU3Rh
dGVFTlNfMTJQcm9wZXJ0eU5hbWVFUk5TXzE4UHJvcGVydHlEZXNjcmlwdG9yRQogX19aTjNKU0Mx
M1J1bnRpbWVNZXRob2Q2c19pbmZvRQotX19aTjNKU0MxM1J1bnRpbWVNZXRob2Q3ZGVzdHJveUVQ
TlNfNkpTQ2VsbEUKLV9fWk4zSlNDMTNSdW50aW1lTWV0aG9kQzJFUE5TXzE0SlNHbG9iYWxPYmpl
Y3RFUE5TXzlTdHJ1Y3R1cmVFUk4zV1RGNlZlY3RvcklQTlNfOEJpbmRpbmdzNk1ldGhvZEVMbTBF
RUUKK19fWk4zSlNDMTNSdW50aW1lTWV0aG9kQzJFUE5TXzE0SlNHbG9iYWxPYmplY3RFUE5TXzlT
dHJ1Y3R1cmVFUE5TXzhCaW5kaW5nczZNZXRob2RFCiBfX1pOM0pTQzhCaW5kaW5nczEwUm9vdE9i
amVjdEQxRXYKIF9fWk4zSlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0MTFnZXRDYWxsRGF0YUVQ
TlNfNkpTQ2VsbEVSTlNfOENhbGxEYXRhRQogX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmpl
Y3QxMmRlZmF1bHRWYWx1ZUVQS05TXzhKU09iamVjdEVQTlNfOUV4ZWNTdGF0ZUVOU18yMlByZWZl
cnJlZFByaW1pdGl2ZVR5cGVFCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9j
X2NsYXNzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfY2xhc3MuY3BwCmluZGV4IDFh
MTY2NzAyYzg5YzAwNTdiNDk5ZDY1MWU3OGI4NmM3MDI3ZWI5NzQuLjQ2NGQ4ODJlMTU2Y2UxYzUy
MTliMTJlMjA1MTIyNjA2MTYxYTZlZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9jL2NfY2xhc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfY2xhc3MuY3Bw
CkBAIC03MCwyOCArNzAsMjMgQEAgQ0NsYXNzKiBDQ2xhc3M6OmNsYXNzRm9ySXNBKE5QQ2xhc3Mq
IGlzYSkKICAgICByZXR1cm4gYUNsYXNzOwogfQogCi1NZXRob2RMaXN0IENDbGFzczo6bWV0aG9k
c05hbWVkKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEluc3RhbmNlKiBpbnN0YW5jZSkgY29u
c3QKK01ldGhvZCogQ0NsYXNzOjptZXRob2ROYW1lZChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBJbnN0YW5jZSogaW5zdGFuY2UpIGNvbnN0CiB7CiAgICAgU3RyaW5nIG5hbWUocHJvcGVydHlO
YW1lLnB1YmxpY05hbWUoKSk7CiAgICAgCi0gICAgTWV0aG9kTGlzdCBtZXRob2RMaXN0OwotCi0g
ICAgTWV0aG9kKiBtZXRob2QgPSBfbWV0aG9kcy5nZXQobmFtZS5pbXBsKCkpOwotICAgIGlmICht
ZXRob2QpIHsKLSAgICAgICAgbWV0aG9kTGlzdC5hcHBlbmQobWV0aG9kKTsKLSAgICAgICAgcmV0
dXJuIG1ldGhvZExpc3Q7Ci0gICAgfQorICAgIGlmIChNZXRob2QqIG1ldGhvZCA9IF9tZXRob2Rz
LmdldChuYW1lLmltcGwoKSkpCisgICAgICAgIHJldHVybiBtZXRob2Q7CiAKICAgICBOUElkZW50
aWZpZXIgaWRlbnQgPSBfTlBOX0dldFN0cmluZ0lkZW50aWZpZXIobmFtZS5hc2NpaSgpLmRhdGEo
KSk7CiAgICAgY29uc3QgQ0luc3RhbmNlKiBpbnN0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgQ0luc3Rh
bmNlKj4oaW5zdGFuY2UpOwogICAgIE5QT2JqZWN0KiBvYmogPSBpbnN0LT5nZXRPYmplY3QoKTsK
ICAgICBpZiAoX2lzYS0+aGFzTWV0aG9kICYmIF9pc2EtPmhhc01ldGhvZChvYmosIGlkZW50KSl7
Ci0gICAgICAgIE1ldGhvZCogYU1ldGhvZCA9IG5ldyBDTWV0aG9kKGlkZW50KTsgLy8gZGVsZXRl
ZCBpbiB0aGUgQ0NsYXNzIGRlc3RydWN0b3IKLSAgICAgICAgX21ldGhvZHMuc2V0KG5hbWUuaW1w
bCgpLCBhTWV0aG9kKTsKLSAgICAgICAgbWV0aG9kTGlzdC5hcHBlbmQoYU1ldGhvZCk7CisgICAg
ICAgIE1ldGhvZCogbWV0aG9kID0gbmV3IENNZXRob2QoaWRlbnQpOyAvLyBkZWxldGVkIGluIHRo
ZSBDQ2xhc3MgZGVzdHJ1Y3RvcgorICAgICAgICBfbWV0aG9kcy5zZXQobmFtZS5pbXBsKCksIG1l
dGhvZCk7CisgICAgICAgIHJldHVybiBtZXRob2Q7CiAgICAgfQogICAgIAotICAgIHJldHVybiBt
ZXRob2RMaXN0OworICAgIHJldHVybiAwOwogfQogCiBGaWVsZCogQ0NsYXNzOjpmaWVsZE5hbWVk
KFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEluc3RhbmNlKiBpbnN0YW5jZSkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfY2xhc3MuaCBiL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9jL2NfY2xhc3MuaAppbmRleCBjOGMyZTg5ODUxZDY2MzE1M2JhZjhlNGNiNmY1
OTcwMThjMmExYTFhLi5mNjczOTlmZTU5Nzc2ZTYzY2NiMTg2YWM5MmNiYjY3MmYxZGNmMGFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2NsYXNzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYnJpZGdlL2MvY19jbGFzcy5oCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgQ0NsYXNzKiBjbGFzc0ZvcklzQShOUENsYXNzKik7CiAgICAgdmlydHVhbCB+Q0Ns
YXNzKCk7CiAKLSAgICB2aXJ0dWFsIE1ldGhvZExpc3QgbWV0aG9kc05hbWVkKFByb3BlcnR5TmFt
ZSwgSW5zdGFuY2UqKSBjb25zdDsKKyAgICB2aXJ0dWFsIE1ldGhvZCogbWV0aG9kTmFtZWQoUHJv
cGVydHlOYW1lLCBJbnN0YW5jZSopIGNvbnN0OwogICAgIHZpcnR1YWwgRmllbGQqIGZpZWxkTmFt
ZWQoUHJvcGVydHlOYW1lLCBJbnN0YW5jZSopIGNvbnN0OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19pbnN0YW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvYy9jX2luc3RhbmNlLmNwcAppbmRleCAyMDFjNjFlODYxMWUzMzkzZDRmZjk4MWY4
ZTU3ZTIwMTljZGNjMzk0Li42MGI0MzA4NTRhODVhOTU0ZGQ1NTlhYjdlZTg2OWJiNDhhNmFjNzJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2luc3RhbmNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2luc3RhbmNlLmNwcApAQCAtMTExLDE0ICsxMTEs
MTQgQEAgY2xhc3MgQ1J1bnRpbWVNZXRob2QgOiBwdWJsaWMgUnVudGltZU1ldGhvZCB7CiBwdWJs
aWM6CiAgICAgdHlwZWRlZiBSdW50aW1lTWV0aG9kIEJhc2U7CiAKLSAgICBzdGF0aWMgQ1J1bnRp
bWVNZXRob2QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgQmluZGluZ3M6Ok1ldGhvZExpc3QmIGxpc3QpCisg
ICAgc3RhdGljIENSdW50aW1lTWV0aG9kKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUsIEJpbmRpbmdzOjpNZXRo
b2QqIG1ldGhvZCkKICAgICB7CiAgICAgICAgIC8vIEZJWE1FOiBkZXByZWNhdGVkR2V0RE9NU3Ry
dWN0dXJlIHVzZXMgdGhlIHByb3RvdHlwZSBvZmYgb2YgdGhlIHdyb25nIGdsb2JhbCBvYmplY3QK
ICAgICAgICAgLy8gV2UgbmVlZCB0byBwYXNzIGluIHRoZSByaWdodCBnbG9iYWwgb2JqZWN0IGZv
ciAiaSIuCiAgICAgICAgIFN0cnVjdHVyZSogZG9tU3RydWN0dXJlID0gV2ViQ29yZTo6ZGVwcmVj
YXRlZEdldERPTVN0cnVjdHVyZTxDUnVudGltZU1ldGhvZD4oZXhlYyk7Ci0gICAgICAgIENSdW50
aW1lTWV0aG9kKiBtZXRob2QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxDUnVudGltZU1l
dGhvZD4oKmV4ZWMtPmhlYXAoKSkpIENSdW50aW1lTWV0aG9kKGdsb2JhbE9iamVjdCwgZG9tU3Ry
dWN0dXJlLCBsaXN0KTsKLSAgICAgICAgbWV0aG9kLT5maW5pc2hDcmVhdGlvbihleGVjLT5nbG9i
YWxEYXRhKCksIG5hbWUpOwotICAgICAgICByZXR1cm4gbWV0aG9kOworICAgICAgICBDUnVudGlt
ZU1ldGhvZCogcnVudGltZU1ldGhvZCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPENSdW50
aW1lTWV0aG9kPigqZXhlYy0+aGVhcCgpKSkgQ1J1bnRpbWVNZXRob2QoZ2xvYmFsT2JqZWN0LCBk
b21TdHJ1Y3R1cmUsIG1ldGhvZCk7CisgICAgICAgIHJ1bnRpbWVNZXRob2QtPmZpbmlzaENyZWF0
aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgbmFtZSk7CisgICAgICAgIHJldHVybiBydW50aW1lTWV0
aG9kOwogICAgIH0KIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgcHJvdG90eXBlKQpAQCAtMTI5LDggKzEyOSw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29u
c3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAogcHJpdmF0ZToKLSAgICBDUnVudGltZU1ldGhvZChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQmluZGluZ3M6
Ok1ldGhvZExpc3QmIGxpc3QpCi0gICAgICAgIDogUnVudGltZU1ldGhvZChnbG9iYWxPYmplY3Qs
IHN0cnVjdHVyZSwgbGlzdCkKKyAgICBDUnVudGltZU1ldGhvZChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQmluZGluZ3M6Ok1ldGhvZCogbWV0aG9k
KQorICAgICAgICA6IFJ1bnRpbWVNZXRob2QoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIG1ldGhv
ZCkKICAgICB7CiAgICAgfQogCkBAIC0xNDYsOCArMTQ2LDggQEAgY29uc3QgQ2xhc3NJbmZvIENS
dW50aW1lTWV0aG9kOjpzX2luZm8gPSB7ICJDUnVudGltZU1ldGhvZCIsICZSdW50aW1lTWV0aG9k
OjpzX2kKIAogSlNWYWx1ZSBDSW5zdGFuY2U6OmdldE1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgTWV0aG9kTGlzdCBtZXRob2RMaXN0ID0g
Z2V0Q2xhc3MoKS0+bWV0aG9kc05hbWVkKHByb3BlcnR5TmFtZSwgdGhpcyk7Ci0gICAgcmV0dXJu
IENSdW50aW1lTWV0aG9kOjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
LCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpLCBtZXRob2RMaXN0KTsKKyAgICBNZXRob2QqIG1l
dGhvZCA9IGdldENsYXNzKCktPm1ldGhvZE5hbWVkKHByb3BlcnR5TmFtZSwgdGhpcyk7CisgICAg
cmV0dXJuIENSdW50aW1lTWV0aG9kOjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpLCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpLCBtZXRob2QpOwogfQogCiBKU1ZhbHVl
IENJbnN0YW5jZTo6aW52b2tlTWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgUnVudGltZU1ldGhvZCog
cnVudGltZU1ldGhvZCkKQEAgLTE1NSwxMyArMTU1LDggQEAgSlNWYWx1ZSBDSW5zdGFuY2U6Omlu
dm9rZU1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIFJ1bnRpbWVNZXRob2QqIHJ1bnRpbWVNZXRob2Qp
CiAgICAgaWYgKCFhc09iamVjdChydW50aW1lTWV0aG9kKS0+aW5oZXJpdHMoJkNSdW50aW1lTWV0
aG9kOjpzX2luZm8pKQogICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBl
RXJyb3IoZXhlYywgIkF0dGVtcHQgdG8gaW52b2tlIG5vbi1wbHVnLWluIG1ldGhvZCBvbiBwbHVn
LWluIG9iamVjdC4iKSk7CiAKLSAgICBjb25zdCBNZXRob2RMaXN0JiBtZXRob2RMaXN0ID0gKnJ1
bnRpbWVNZXRob2QtPm1ldGhvZHMoKTsKLQotICAgIC8vIE92ZXJsb2FkaW5nIG1ldGhvZHMgYXJl
IG5vdCBhbGxvd2VkIGJ5IE5QT2JqZWN0cy4gIFNob3VsZCBvbmx5IGJlIG9uZQotICAgIC8vIG5h
bWUgbWF0Y2ggZm9yIGEgcGFydGljdWxhciBtZXRob2QuCi0gICAgQVNTRVJUKG1ldGhvZExpc3Qu
c2l6ZSgpID09IDEpOwotCi0gICAgQ01ldGhvZCogbWV0aG9kID0gc3RhdGljX2Nhc3Q8Q01ldGhv
ZCo+KG1ldGhvZExpc3RbMF0pOworICAgIENNZXRob2QqIG1ldGhvZCA9IHN0YXRpY19jYXN0PENN
ZXRob2QqPihydW50aW1lTWV0aG9kLT5tZXRob2QoKSk7CisgICAgQVNTRVJUKG1ldGhvZCk7CiAK
ICAgICBOUElkZW50aWZpZXIgaWRlbnQgPSBtZXRob2QtPmlkZW50aWZpZXIoKTsKICAgICBpZiAo
IV9vYmplY3QtPl9jbGFzcy0+aGFzTWV0aG9kKF9vYmplY3QsIGlkZW50KSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qc2MvQnJpZGdlSlNDLmggYi9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvanNjL0JyaWRnZUpTQy5oCmluZGV4IGM3ZGZlNDgzYWZmMDRmZjM0MWZlNWIwNGQ3NTZj
YzZmOWVhYTNkZmMuLjM5ZTZjOTg2ZDBmYWQ0MWQ0ZGJlOTJhY2I3NzNkMzY3ZjIyNzc1NjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qc2MvQnJpZGdlSlNDLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYnJpZGdlL2pzYy9CcmlkZ2VKU0MuaApAQCAtNDgsOCArNDgsNiBAQCBjbGFz
cyBNZXRob2Q7CiBjbGFzcyBSb290T2JqZWN0OwogY2xhc3MgUnVudGltZU9iamVjdDsKIAotdHlw
ZWRlZiBWZWN0b3I8TWV0aG9kKj4gTWV0aG9kTGlzdDsKLQogY2xhc3MgRmllbGQgewogcHVibGlj
OgogICAgIHZpcnR1YWwgSlNWYWx1ZSB2YWx1ZUZyb21JbnN0YW5jZShFeGVjU3RhdGUqLCBjb25z
dCBJbnN0YW5jZSopIGNvbnN0ID0gMDsKQEAgLTYyLDcgKzYwLDcgQEAgY2xhc3MgQ2xhc3Mgewog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENsYXNzKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgQ2xhc3MoKSB7IH0KLSAgICB2aXJ0dWFsIE1ldGhvZExpc3QgbWV0aG9k
c05hbWVkKFByb3BlcnR5TmFtZSwgSW5zdGFuY2UqKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBN
ZXRob2QqIG1ldGhvZE5hbWVkKFByb3BlcnR5TmFtZSwgSW5zdGFuY2UqKSBjb25zdCA9IDA7CiAg
ICAgdmlydHVhbCBGaWVsZCogZmllbGROYW1lZChQcm9wZXJ0eU5hbWUsIEluc3RhbmNlKikgY29u
c3QgPSAwOwogICAgIHZpcnR1YWwgSlNWYWx1ZSBmYWxsYmFja09iamVjdChFeGVjU3RhdGUqLCBJ
bnN0YW5jZSosIFByb3BlcnR5TmFtZSkgeyByZXR1cm4ganNVbmRlZmluZWQoKTsgfQogCkBAIC0x
MzYsNyArMTM0LDYgQEAgcHJvdGVjdGVkOgogCiBjb25zdCBjaGFyKiBzaWduYXR1cmVGb3JQYXJh
bWV0ZXJzKGNvbnN0IEFyZ0xpc3QmKTsKIAotdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxTdHJpbmdJ
bXBsPiwgTWV0aG9kTGlzdCo+IE1ldGhvZExpc3RNYXA7CiB0eXBlZGVmIEhhc2hNYXA8UmVmUHRy
PFN0cmluZ0ltcGw+LCBNZXRob2QqPiBNZXRob2RNYXA7CiB0eXBlZGVmIEhhc2hNYXA8UmVmUHRy
PFN0cmluZ0ltcGw+LCBGaWVsZCo+IEZpZWxkTWFwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2Uvb2JqYy9vYmpjX2NsYXNzLmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2Jq
Yy9vYmpjX2NsYXNzLmgKaW5kZXggYzM1OGFlOTNiZjFhMTUyZjQ1NDRjNWM0Mzc0NmQyODk2ODg1
NzkzYi4uODM4MzQ3ZjI0YWM5ZmE0OGNlY2JjMzdlNWNjNzE5YjcyZTk5ZTk3NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19jbGFzcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfY2xhc3MuaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6
CiAgICAgLy8gUmV0dXJuIHRoZSBjYWNoZWQgT2JqQyBvZiB0aGUgc3BlY2lmaWVkIG5hbWUuCiAg
ICAgc3RhdGljIE9iamNDbGFzcyAqY2xhc3NGb3JJc0EoQ2xhc3NTdHJ1Y3RQdHIpOwogICAgIAot
ICAgIHZpcnR1YWwgTWV0aG9kTGlzdCBtZXRob2RzTmFtZWQoUHJvcGVydHlOYW1lLCBJbnN0YW5j
ZSopIGNvbnN0OworICAgIHZpcnR1YWwgTWV0aG9kKiBtZXRob2ROYW1lZChQcm9wZXJ0eU5hbWUs
IEluc3RhbmNlKikgY29uc3Q7CiAgICAgdmlydHVhbCBGaWVsZCAqZmllbGROYW1lZChQcm9wZXJ0
eU5hbWUsIEluc3RhbmNlKikgY29uc3Q7CiAKICAgICB2aXJ0dWFsIEpTVmFsdWUgZmFsbGJhY2tP
YmplY3QoRXhlY1N0YXRlKiwgSW5zdGFuY2UqLCBQcm9wZXJ0eU5hbWUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19jbGFzcy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9vYmpjL29iamNfY2xhc3MubW0KaW5kZXggYmNiZDdlN2JjN2ZjY2E4MzM4YWMzMjRl
MGU2ZWYyN2M1MDc0Y2RmYy4uYjkyMTkwYjhlNmNiZmE0NzA5NDM3MDIxMzJiZWEzZWRmMTZmNDQ5
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19jbGFzcy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2NsYXNzLm1tCkBAIC05NSwyNSAr
OTUsMjQgQEAgc3RhdGljIGlubGluZSB2b2lkIGNvbnZlcnRKU01ldGhvZE5hbWVUb09iamMoY29u
c3QgQ1N0cmluZyYganNOYW1lLCBKU05hbWVDb252ZXIKICAgICB9CiB9CiAKLU1ldGhvZExpc3Qg
T2JqY0NsYXNzOjptZXRob2RzTmFtZWQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSW5zdGFu
Y2UqKSBjb25zdAorTWV0aG9kKiBPYmpjQ2xhc3M6Om1ldGhvZE5hbWVkKFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIEluc3RhbmNlKikgY29uc3QKIHsKICAgICBTdHJpbmcgbmFtZShwcm9wZXJ0
eU5hbWUucHVibGljTmFtZSgpKTsKICAgICBpZiAobmFtZS5pc051bGwoKSkKLSAgICAgICAgcmV0
dXJuIE1ldGhvZExpc3QoKTsKKyAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBNZXRob2RMaXN0IG1l
dGhvZExpc3Q7Ci0gICAgaWYgKE1ldGhvZCogbWV0aG9kID0gbV9tZXRob2RDYWNoZS5nZXQobmFt
ZS5pbXBsKCkpKSB7Ci0gICAgICAgIG1ldGhvZExpc3QuYXBwZW5kKG1ldGhvZCk7Ci0gICAgICAg
IHJldHVybiBtZXRob2RMaXN0OwotICAgIH0KKyAgICBpZiAoTWV0aG9kKiBtZXRob2QgPSBtX21l
dGhvZENhY2hlLmdldChuYW1lLmltcGwoKSkpCisgICAgICAgIHJldHVybiBtZXRob2Q7CiAKICAg
ICBDU3RyaW5nIGpzTmFtZSA9IG5hbWUuYXNjaWkoKTsKICAgICBKU05hbWVDb252ZXJzaW9uQnVm
ZmVyIGJ1ZmZlcjsKICAgICBjb252ZXJ0SlNNZXRob2ROYW1lVG9PYmpjKGpzTmFtZSwgYnVmZmVy
KTsKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG1ldGhvZE5hbWUoQWRvcHRDRiwgQ0ZTdHJp
bmdDcmVhdGVXaXRoQ1N0cmluZyhOVUxMLCBidWZmZXIuZGF0YSgpLCBrQ0ZTdHJpbmdFbmNvZGlu
Z0FTQ0lJKSk7CiAKKyAgICBNZXRob2QqIG1ldGhvZFB0ciA9IDA7CiAgICAgQ2xhc3NTdHJ1Y3RQ
dHIgdGhpc0NsYXNzID0gX2lzYTsKLSAgICB3aGlsZSAodGhpc0NsYXNzICYmIG1ldGhvZExpc3Qu
aXNFbXB0eSgpKSB7CisgICAgCisgICAgd2hpbGUgKHRoaXNDbGFzcyAmJiAhbWV0aG9kUHRyKSB7
CiAgICAgICAgIHVuc2lnbmVkIG51bU1ldGhvZHNJbkNsYXNzID0gMDsKICAgICAgICAgTWV0aG9k
U3RydWN0UHRyKiBvYmpjTWV0aG9kTGlzdCA9IGNsYXNzX2NvcHlNZXRob2RMaXN0KHRoaXNDbGFz
cywgJm51bU1ldGhvZHNJbkNsYXNzKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG51bU1ldGhvZHNJbkNsYXNzOyBpKyspIHsKQEAgLTEzNSw3ICsxMzQsNyBAQCBNZXRob2RMaXN0
IE9iamNDbGFzczo6bWV0aG9kc05hbWVkKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEluc3Rh
bmNlKikgY29uc3QKIAogICAgICAgICAgICAgaWYgKChtYXBwZWROYW1lICYmIFttYXBwZWROYW1l
IGlzRXF1YWw6KE5TU3RyaW5nKiltZXRob2ROYW1lLmdldCgpXSkgfHwgc3RyY21wKG9iamNNZXRo
b2RTZWxlY3Rvck5hbWUsIGJ1ZmZlci5kYXRhKCkpID09IDApIHsKICAgICAgICAgICAgICAgICBP
d25QdHI8TWV0aG9kPiBtZXRob2QgPSBhZG9wdFB0cihuZXcgT2JqY01ldGhvZCh0aGlzQ2xhc3Ms
IG9iamNNZXRob2RTZWxlY3RvcikpOwotICAgICAgICAgICAgICAgIG1ldGhvZExpc3QuYXBwZW5k
KG1ldGhvZC5nZXQoKSk7CisgICAgICAgICAgICAgICAgbWV0aG9kUHRyID0gbWV0aG9kLmdldCgp
OwogICAgICAgICAgICAgICAgIG1fbWV0aG9kQ2FjaGUuYWRkKG5hbWUuaW1wbCgpLCBtZXRob2Qu
cmVsZWFzZSgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTE0
NCw3ICsxNDMsNyBAQCBNZXRob2RMaXN0IE9iamNDbGFzczo6bWV0aG9kc05hbWVkKFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIEluc3RhbmNlKikgY29uc3QKICAgICAgICAgZnJlZShvYmpjTWV0
aG9kTGlzdCk7CiAgICAgfQogCi0gICAgcmV0dXJuIG1ldGhvZExpc3Q7CisgICAgcmV0dXJuIG1l
dGhvZFB0cjsKIH0KIAogRmllbGQqIE9iamNDbGFzczo6ZmllbGROYW1lZChQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBJbnN0YW5jZSogaW5zdGFuY2UpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tIGIvU291cmNlL1dlYkNvcmUv
YnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbQppbmRleCA0ZjViZWNhYWRiY2ExNzUxOGNjNjgw
NGVhZGE1YjkxNTU4MzQ4NDQ3Li4yYjM2MjQ4OGE1YmI1ZWE0M2ZkMzhlMmI4MWU2YjE1ZTY1Y2Yz
NDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNl
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0KQEAg
LTE4MSwxNCArMTgxLDE0IEBAIGJvb2wgT2JqY0luc3RhbmNlOjpzdXBwb3J0c0ludm9rZURlZmF1
bHRNZXRob2QoKSBjb25zdAogCiBjbGFzcyBPYmpDUnVudGltZU1ldGhvZCA6IHB1YmxpYyBSdW50
aW1lTWV0aG9kIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgT2JqQ1J1bnRpbWVNZXRob2QqIGNyZWF0
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0
cmluZyYgbmFtZSwgQmluZGluZ3M6Ok1ldGhvZExpc3QmIGxpc3QpCisgICAgc3RhdGljIE9iakNS
dW50aW1lTWV0aG9kKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUsIEJpbmRpbmdzOjpNZXRob2QqIG1ldGhvZCkK
ICAgICB7CiAgICAgICAgIC8vIEZJWE1FOiBkZXByZWNhdGVkR2V0RE9NU3RydWN0dXJlIHVzZXMg
dGhlIHByb3RvdHlwZSBvZmYgb2YgdGhlIHdyb25nIGdsb2JhbCBvYmplY3QKICAgICAgICAgLy8g
V2UgbmVlZCB0byBwYXNzIGluIHRoZSByaWdodCBnbG9iYWwgb2JqZWN0IGZvciAiaSIuCiAgICAg
ICAgIFN0cnVjdHVyZSogZG9tU3RydWN0dXJlID0gV2ViQ29yZTo6ZGVwcmVjYXRlZEdldERPTVN0
cnVjdHVyZTxPYmpDUnVudGltZU1ldGhvZD4oZXhlYyk7Ci0gICAgICAgIE9iakNSdW50aW1lTWV0
aG9kKiBtZXRob2QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxPYmpDUnVudGltZU1ldGhv
ZD4oKmV4ZWMtPmhlYXAoKSkpIE9iakNSdW50aW1lTWV0aG9kKGdsb2JhbE9iamVjdCwgZG9tU3Ry
dWN0dXJlLCBsaXN0KTsKLSAgICAgICAgbWV0aG9kLT5maW5pc2hDcmVhdGlvbihleGVjLT5nbG9i
YWxEYXRhKCksIG5hbWUpOwotICAgICAgICByZXR1cm4gbWV0aG9kOworICAgICAgICBPYmpDUnVu
dGltZU1ldGhvZCogcnVudGltZU1ldGhvZCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE9i
akNSdW50aW1lTWV0aG9kPigqZXhlYy0+aGVhcCgpKSkgT2JqQ1J1bnRpbWVNZXRob2QoZ2xvYmFs
T2JqZWN0LCBkb21TdHJ1Y3R1cmUsIG1ldGhvZCk7CisgICAgICAgIHJ1bnRpbWVNZXRob2QtPmZp
bmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgbmFtZSk7CisgICAgICAgIHJldHVybiBy
dW50aW1lTWV0aG9kOwogICAgIH0KIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCkBAIC0yMDEsOCArMjAxLDggQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICB0eXBlZGVmIFJ1bnRpbWVNZXRob2QgQmFzZTsKIAotICAgIE9iakNSdW50
aW1lTWV0aG9kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBCaW5kaW5nczo6TWV0aG9kTGlzdCYgbGlzdCkKLSAgICAgICAgOiBSdW50aW1lTWV0aG9k
KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBsaXN0KQorICAgIE9iakNSdW50aW1lTWV0aG9kKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBCaW5kaW5n
czo6TWV0aG9kKiBtZXRob2QpCisgICAgICAgIDogUnVudGltZU1ldGhvZChnbG9iYWxPYmplY3Qs
IHN0cnVjdHVyZSwgbWV0aG9kKQogICAgIHsKICAgICB9CiAKQEAgLTIxNyw4ICsyMTcsOCBAQCBj
b25zdCBDbGFzc0luZm8gT2JqQ1J1bnRpbWVNZXRob2Q6OnNfaW5mbyA9IHsgIk9iakNSdW50aW1l
TWV0aG9kIiwgJlJ1bnRpbWVNZXRobwogCiBKU1ZhbHVlIE9iamNJbnN0YW5jZTo6Z2V0TWV0aG9k
KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKLSAgICBNZXRo
b2RMaXN0IG1ldGhvZExpc3QgPSBnZXRDbGFzcygpLT5tZXRob2RzTmFtZWQocHJvcGVydHlOYW1l
LCB0aGlzKTsKLSAgICByZXR1cm4gT2JqQ1J1bnRpbWVNZXRob2Q6OmNyZWF0ZShleGVjLCBleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCksIG1ldGhv
ZExpc3QpOworICAgIE1ldGhvZCogbWV0aG9kID0gZ2V0Q2xhc3MoKS0+bWV0aG9kTmFtZWQocHJv
cGVydHlOYW1lLCB0aGlzKTsKKyAgICByZXR1cm4gT2JqQ1J1bnRpbWVNZXRob2Q6OmNyZWF0ZShl
eGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZS5wdWJsaWNOYW1l
KCksIG1ldGhvZCk7CiB9CiAKIEpTVmFsdWUgT2JqY0luc3RhbmNlOjppbnZva2VNZXRob2QoRXhl
Y1N0YXRlKiBleGVjLCBSdW50aW1lTWV0aG9kKiBydW50aW1lTWV0aG9kKQpAQCAtMjI2LDEzICsy
MjYsMTAgQEAgSlNWYWx1ZSBPYmpjSW5zdGFuY2U6Omludm9rZU1ldGhvZChFeGVjU3RhdGUqIGV4
ZWMsIFJ1bnRpbWVNZXRob2QqIHJ1bnRpbWVNZXRob2QKICAgICBpZiAoIWFzT2JqZWN0KHJ1bnRp
bWVNZXRob2QpLT5pbmhlcml0cygmT2JqQ1J1bnRpbWVNZXRob2Q6OnNfaW5mbykpCiAgICAgICAg
IHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiQXR0ZW1wdCB0
byBpbnZva2Ugbm9uLXBsdWctaW4gbWV0aG9kIG9uIHBsdWctaW4gb2JqZWN0LiIpKTsKIAotICAg
IGNvbnN0IE1ldGhvZExpc3QmIG1ldGhvZExpc3QgPSAqcnVudGltZU1ldGhvZC0+bWV0aG9kcygp
OworICAgIE9iamNNZXRob2QgKm1ldGhvZCA9IHN0YXRpY19jYXN0PE9iamNNZXRob2QqPihydW50
aW1lTWV0aG9kLT5tZXRob2QoKSk7CisgICAgQVNTRVJUKG1ldGhvZCk7CiAKLSAgICAvLyBPdmVy
bG9hZGluZyBtZXRob2RzIGlzIG5vdCBhbGxvd2VkIGluIE9iamVjdGl2ZUMuICBTaG91bGQgb25s
eSBiZSBvbmUKLSAgICAvLyBuYW1lIG1hdGNoIGZvciBhIHBhcnRpY3VsYXIgbWV0aG9kLgotICAg
IEFTU0VSVChtZXRob2RMaXN0LnNpemUoKSA9PSAxKTsKLQotICAgIHJldHVybiBpbnZva2VPYmpj
TWV0aG9kKGV4ZWMsIHN0YXRpY19jYXN0PE9iamNNZXRob2QqPihtZXRob2RMaXN0WzBdKSk7Cisg
ICAgcmV0dXJuIGludm9rZU9iamNNZXRob2QoZXhlYywgbWV0aG9kKTsKIH0KIAogSlNWYWx1ZSBP
YmpjSW5zdGFuY2U6Omludm9rZU9iamNNZXRob2QoRXhlY1N0YXRlKiBleGVjLCBPYmpjTWV0aG9k
KiBtZXRob2QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRo
b2QuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcAppbmRleCA5
ZmRiNjRkZjczY2UwYzhlYTc0NGNjNzk0ODE2NWMzNjU1YWJiNTc1Li5lMmMwZjM0MDM5OWExNDBi
NTYwOTMzY2M2YzZkM2I3NjRlYzI4MGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2UvcnVudGltZV9tZXRob2QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1l
X21ldGhvZC5jcHAKQEAgLTQzLDE4ICs0MywxMyBAQCBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxM
KFJ1bnRpbWVNZXRob2QpOwogCiBjb25zdCBDbGFzc0luZm8gUnVudGltZU1ldGhvZDo6c19pbmZv
ID0geyAiUnVudGltZU1ldGhvZCIsICZJbnRlcm5hbEZ1bmN0aW9uOjpzX2luZm8sIDAsIDAsIENS
RUFURV9NRVRIT0RfVEFCTEUoUnVudGltZU1ldGhvZCkgfTsKIAotUnVudGltZU1ldGhvZDo6UnVu
dGltZU1ldGhvZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgQmluZGluZ3M6Ok1ldGhvZExpc3QmIG0pCi0gICAgLy8gQ2FsbGVycyB3aWxsIG5lZWQg
dG8gcGFzcyBpbiB0aGUgcmlnaHQgZ2xvYmFsIG9iamVjdCBjb3JyZXNwb25kaW5nIHRvIHRoaXMg
bmF0aXZlIG9iamVjdCAibSIuCitSdW50aW1lTWV0aG9kOjpSdW50aW1lTWV0aG9kKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBNZXRob2QqIG1ldGhv
ZCkKKyAgICAvLyBDYWxsZXJzIHdpbGwgbmVlZCB0byBwYXNzIGluIHRoZSByaWdodCBnbG9iYWwg
b2JqZWN0IGNvcnJlc3BvbmRpbmcgdG8gdGhpcyBuYXRpdmUgb2JqZWN0ICJtZXRob2QiLgogICAg
IDogSW50ZXJuYWxGdW5jdGlvbihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkKLSAgICAsIF9tZXRo
b2RMaXN0KGFkb3B0UHRyKG5ldyBNZXRob2RMaXN0KG0pKSkKKyAgICAsIG1fbWV0aG9kKG1ldGhv
ZCkKIHsKIH0KIAotdm9pZCBSdW50aW1lTWV0aG9kOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKLXsK
LSAgICBzdGF0aWNfY2FzdDxSdW50aW1lTWV0aG9kKj4oY2VsbCktPlJ1bnRpbWVNZXRob2Q6On5S
dW50aW1lTWV0aG9kKCk7Ci19Ci0KIHZvaWQgUnVudGltZU1ldGhvZDo6ZmluaXNoQ3JlYXRpb24o
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBTdHJpbmcmIGlkZW50KQogewogICAgIEJh
c2U6OmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEsIGlkZW50KTsKQEAgLTY1LDEzICs2MCw3IEBA
IEpTVmFsdWUgUnVudGltZU1ldGhvZDo6bGVuZ3RoR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUg
c2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICBSdW50aW1lTWV0aG9kKiB0aGlzT2JqID0g
c3RhdGljX2Nhc3Q8UnVudGltZU1ldGhvZCo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAKLSAgICAv
LyBJY2shICBUaGVyZSBtYXkgYmUgbW9yZSB0aGFuIG9uZSBtZXRob2Qgd2l0aCB0aGlzIG5hbWUu
ICBBcmJpdHJhcmlseQotICAgIC8vIGp1c3QgcGljayB0aGUgZmlyc3QgbWV0aG9kLiAgVGhlIGZ1
bmRhbWVudGFsIHByb2JsZW0gaGVyZSBpcyB0aGF0IAotICAgIC8vIEphdmFTY3JpcHQgZG9lc24n
dCBoYXZlIHRoZSBub3Rpb24gb2YgbWV0aG9kIG92ZXJsb2FkaW5nIGFuZAotICAgIC8vIEphdmEg
ZG9lcy4KLSAgICAvLyBGSVhNRTogYSBiZXR0ZXIgc29sdXRpb24gbWlnaHQgYmUgdG8gZ2l2ZSB0
aGUgbWF4aW11bSBudW1iZXIgb2YgcGFyYW1ldGVycwotICAgIC8vIG9mIGFueSBtZXRob2QKLSAg
ICByZXR1cm4ganNOdW1iZXIodGhpc09iai0+X21ldGhvZExpc3QtPmF0KDApLT5udW1QYXJhbWV0
ZXJzKCkpOworICAgIHJldHVybiBqc051bWJlcih0aGlzT2JqLT5tX21ldGhvZC0+bnVtUGFyYW1l
dGVycygpKTsKIH0KIAogYm9vbCBSdW50aW1lTWV0aG9kOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlND
ZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCAmc2xvdCkKQEAgLTEwMiw3ICs5MSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNhbGxSdW50aW1lTWV0aG9kKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAg
ICBSdW50aW1lTWV0aG9kKiBtZXRob2QgPSBzdGF0aWNfY2FzdDxSdW50aW1lTWV0aG9kKj4oZXhl
Yy0+Y2FsbGVlKCkpOwogCi0gICAgaWYgKG1ldGhvZC0+bWV0aG9kcygpLT5pc0VtcHR5KCkpCisg
ICAgaWYgKCFtZXRob2QtPm1ldGhvZCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogCiAgICAgUmVmUHRyPEluc3RhbmNlPiBpbnN0YW5jZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5oIGIvU291cmNlL1dl
YkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmgKaW5kZXggNzQ4MTYwNWQ0NDE1OGM5ODA5MjAz
MjFkMzExMGE0OTQ0ZmJhNWU0YS4uNTY2YjY1Njk5YTk2YjAyNTY4MmQ5NTQ0Mzk3ZWQzOTc4NzFj
MzE0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmgKQEAgLTM3LDE2ICsz
NywxNCBAQCBjbGFzcyBSdW50aW1lTWV0aG9kIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewog
cHVibGljOgogICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOwogCi0gICAgc3RhdGlj
IHZvaWQgZGVzdHJveShKU0NlbGwqKTsKLQotICAgIHN0YXRpYyBSdW50aW1lTWV0aG9kKiBjcmVh
dGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBCaW5kaW5nczo6TWV0aG9kTGlzdCYg
bWV0aG9kTGlzdCkKKyAgICBzdGF0aWMgUnVudGltZU1ldGhvZCogY3JlYXRlKEV4ZWNTdGF0ZSog
ZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IGNvbnN0IFN0cmluZyYgbmFtZSwgQmluZGluZ3M6Ok1ldGhvZCogbWV0aG9kKQogICAgIHsKLSAg
ICAgICAgUnVudGltZU1ldGhvZCogbWV0aG9kID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
UnVudGltZU1ldGhvZD4oKmV4ZWMtPmhlYXAoKSkpIFJ1bnRpbWVNZXRob2QoZ2xvYmFsT2JqZWN0
LCBzdHJ1Y3R1cmUsIG1ldGhvZExpc3QpOwotICAgICAgICBtZXRob2QtPmZpbmlzaENyZWF0aW9u
KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmFtZSk7Ci0gICAgICAgIHJldHVybiBtZXRob2Q7CisgICAg
ICAgIFJ1bnRpbWVNZXRob2QqIHJ1bnRpbWVNZXRob2QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxSdW50aW1lTWV0aG9kPigqZXhlYy0+aGVhcCgpKSkgUnVudGltZU1ldGhvZChnbG9iYWxP
YmplY3QsIHN0cnVjdHVyZSwgbWV0aG9kKTsKKyAgICAgICAgcnVudGltZU1ldGhvZC0+ZmluaXNo
Q3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBuYW1lKTsKKyAgICAgICAgcmV0dXJuIHJ1bnRp
bWVNZXRob2Q7CiAgICAgfQogCi0gICAgQmluZGluZ3M6Ok1ldGhvZExpc3QqIG1ldGhvZHMoKSBj
b25zdCB7IHJldHVybiBfbWV0aG9kTGlzdC5nZXQoKTsgfQorICAgIEJpbmRpbmdzOjpNZXRob2Qq
IG1ldGhvZCgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0aG9kOyB9CiAKICAgICBzdGF0aWMgY29uc3Qg
Q2xhc3NJbmZvIHNfaW5mbzsKIApAQCAtNjEsNyArNTksNyBAQCBwdWJsaWM6CiAgICAgfQogCiBw
cm90ZWN0ZWQ6Ci0gICAgUnVudGltZU1ldGhvZChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSos
IEJpbmRpbmdzOjpNZXRob2RMaXN0Jik7CisgICAgUnVudGltZU1ldGhvZChKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZSosIEJpbmRpbmdzOjpNZXRob2QqKTsKICAgICB2b2lkIGZpbmlzaENyZWF0
aW9uKEpTR2xvYmFsRGF0YSYsIGNvbnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEludGVy
bmFsRnVuY3Rpb246OlN0cnVjdHVyZUZsYWdzOwogICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxs
RGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwpAQCAtNzIsNyArNzAsNyBAQCBwcm90ZWN0ZWQ6CiBw
cml2YXRlOgogICAgIHN0YXRpYyBKU1ZhbHVlIGxlbmd0aEdldHRlcihFeGVjU3RhdGUqLCBKU1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpOwogCi0gICAgT3duUHRyPEJpbmRpbmdzOjpNZXRob2RMaXN0PiBf
bWV0aG9kTGlzdDsKKyAgICBCaW5kaW5nczo6TWV0aG9kKiBtX21ldGhvZDsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVf
b2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAKaW5k
ZXggYTFhMzBjZTAxNTEyMjgyN2M5OWNmODhkMDFhYTA3MTZlZTczOTRmNS4uODcwYWYxMDkwZjgy
NDUwNTU4ODEyMmJlOThhMjQ4OWQ1YTcyYjJhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVu
dGltZV9vYmplY3QuY3BwCkBAIC0xNDAsOCArMTQwLDcgQEAgYm9vbCBSdW50aW1lT2JqZWN0Ojpn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUgKmV4ZWMsIFByb3BlcnR5
TmEKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIE5vdyBjaGVjayBpZiBhIG1ldGhv
ZCB3aXRoIHNwZWNpZmllZCBuYW1lIGV4aXN0cywgaWYgc28gcmV0dXJuIGEgZnVuY3Rpb24gb2Jq
ZWN0IGZvcgogICAgICAgICAgICAgLy8gdGhhdCBtZXRob2QuCi0gICAgICAgICAgICBNZXRob2RM
aXN0IG1ldGhvZExpc3QgPSBhQ2xhc3MtPm1ldGhvZHNOYW1lZChwcm9wZXJ0eU5hbWUsIGluc3Rh
bmNlLmdldCgpKTsKLSAgICAgICAgICAgIGlmIChtZXRob2RMaXN0LnNpemUoKSA+IDApIHsKKyAg
ICAgICAgICAgIGlmIChhQ2xhc3MtPm1ldGhvZE5hbWVkKHByb3BlcnR5TmFtZSwgaW5zdGFuY2Uu
Z2V0KCkpKSB7CiAgICAgICAgICAgICAgICAgc2xvdC5zZXRDdXN0b20odGhpc09iamVjdCwgdGhp
c09iamVjdC0+bWV0aG9kR2V0dGVyKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
ICBpbnN0YW5jZS0+ZW5kKCk7CkBAIC0xODcsOCArMTg2LDcgQEAgYm9vbCBSdW50aW1lT2JqZWN0
OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlICpl
eGVjLAogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gTm93IGNoZWNrIGlmIGEgbWV0
aG9kIHdpdGggc3BlY2lmaWVkIG5hbWUgZXhpc3RzLCBpZiBzbyByZXR1cm4gYSBmdW5jdGlvbiBv
YmplY3QgZm9yCiAgICAgICAgICAgICAvLyB0aGF0IG1ldGhvZC4KLSAgICAgICAgICAgIE1ldGhv
ZExpc3QgbWV0aG9kTGlzdCA9IGFDbGFzcy0+bWV0aG9kc05hbWVkKHByb3BlcnR5TmFtZSwgaW5z
dGFuY2UuZ2V0KCkpOwotICAgICAgICAgICAgaWYgKG1ldGhvZExpc3Quc2l6ZSgpID4gMCkgewor
ICAgICAgICAgICAgaWYgKGFDbGFzcy0+bWV0aG9kTmFtZWQocHJvcGVydHlOYW1lLCBpbnN0YW5j
ZS5nZXQoKSkpIHsKICAgICAgICAgICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAg
ICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlzT2JqZWN0LCBtZXRob2RHZXR0ZXIpOwogICAgICAg
ICAgICAgICAgIGluc3RhbmNlLT5lbmQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFj
L1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdp
bnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UuaAppbmRleCA5MmExYWJhNDc0MjM4MTZlYmQ5Mzc4ZTQ3
MTM4Y2YxNmYwNDYyNmUwLi41ZDA4MDFmMjk2MTM3YjU4ZDNjNDAxNWZmNjJlZDA5ZTQ2ZDc1NGE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3Rh
bmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5j
ZS5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgflByb3h5SW5zdGFuY2Uo
KTsKIAotICAgIEpTQzo6QmluZGluZ3M6Ok1ldGhvZExpc3QgbWV0aG9kc05hbWVkKEpTQzo6UHJv
cGVydHlOYW1lKTsKKyAgICBKU0M6OkJpbmRpbmdzOjpNZXRob2QqIG1ldGhvZE5hbWVkKEpTQzo6
UHJvcGVydHlOYW1lKTsKICAgICBKU0M6OkJpbmRpbmdzOjpGaWVsZCogZmllbGROYW1lZChKU0M6
OlByb3BlcnR5TmFtZSk7CiAKICAgICBKU0M6OkpTVmFsdWUgZmllbGRWYWx1ZShKU0M6OkV4ZWNT
dGF0ZSosIGNvbnN0IEpTQzo6QmluZGluZ3M6OkZpZWxkKikgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tIGIvU291cmNl
L1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbQppbmRleCA0OWU5OGZl
NmUyMTQ3ZDA3ZWZlMDgwOWIzMjNmNWQxYjYyZGYxYzUzLi4xMzIzZjZlMzY5MTBjOWU0NWU1OTQ5
ZGYxZjgyNTNhZmVlMzZiMTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5z
L0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMv
SG9zdGVkL1Byb3h5SW5zdGFuY2UubW0KQEAgLTUwLDEzICs1MCwxMyBAQCBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAogY2xhc3MgUHJveHlDbGFzcyA6IHB1YmxpYyBKU0M6OkJpbmRpbmdzOjpDbGFzcyB7
CiBwcml2YXRlOgotICAgIHZpcnR1YWwgTWV0aG9kTGlzdCBtZXRob2RzTmFtZWQoUHJvcGVydHlO
YW1lLCBJbnN0YW5jZSopIGNvbnN0OworICAgIHZpcnR1YWwgTWV0aG9kKiBtZXRob2ROYW1lZChQ
cm9wZXJ0eU5hbWUsIEluc3RhbmNlKikgY29uc3Q7CiAgICAgdmlydHVhbCBGaWVsZCogZmllbGRO
YW1lZChQcm9wZXJ0eU5hbWUsIEluc3RhbmNlKikgY29uc3Q7CiB9OwogCi1NZXRob2RMaXN0IFBy
b3h5Q2xhc3M6Om1ldGhvZHNOYW1lZChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBJbnN0YW5j
ZSogaW5zdGFuY2UpIGNvbnN0CitNZXRob2QqIFByb3h5Q2xhc3M6Om1ldGhvZE5hbWVkKFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEluc3RhbmNlKiBpbnN0YW5jZSkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8UHJveHlJbnN0YW5jZSo+KGluc3RhbmNlKS0+bWV0aG9kc05hbWVk
KHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFByb3h5SW5zdGFuY2UqPihp
bnN0YW5jZSktPm1ldGhvZE5hbWVkKHByb3BlcnR5TmFtZSk7CiB9CiAKIEZpZWxkKiBQcm94eUNs
YXNzOjpmaWVsZE5hbWVkKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEluc3RhbmNlKiBpbnN0
YW5jZSkgY29uc3QKQEAgLTE4MSwxNCArMTgxLDE0IEBAIGNsYXNzIFByb3h5UnVudGltZU1ldGhv
ZCA6IHB1YmxpYyBSdW50aW1lTWV0aG9kIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIFJ1bnRpbWVN
ZXRob2QgQmFzZTsKIAotICAgIHN0YXRpYyBQcm94eVJ1bnRpbWVNZXRob2QqIGNyZWF0ZShFeGVj
U3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0cmluZyYg
bmFtZSwgQmluZGluZ3M6Ok1ldGhvZExpc3QmIGxpc3QpCisgICAgc3RhdGljIFByb3h5UnVudGlt
ZU1ldGhvZCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBCaW5kaW5nczo6TWV0aG9kKiBtZXRob2QpCiAgICAg
ewogICAgICAgICAvLyBGSVhNRTogZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZSB1c2VzIHRoZSBw
cm90b3R5cGUgb2ZmIG9mIHRoZSB3cm9uZyBnbG9iYWwgb2JqZWN0CiAgICAgICAgIC8vIGV4ZWMt
Z2xvYmFsRGF0YSgpIGlzIGFsc28gbGlrZWx5IHdyb25nLgogICAgICAgICBTdHJ1Y3R1cmUqIGRv
bVN0cnVjdHVyZSA9IGRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmU8UHJveHlSdW50aW1lTWV0aG9k
PihleGVjKTsKLSAgICAgICAgUHJveHlSdW50aW1lTWV0aG9kKiBtZXRob2QgPSBuZXcgKGFsbG9j
YXRlQ2VsbDxQcm94eVJ1bnRpbWVNZXRob2Q+KCpleGVjLT5oZWFwKCkpKSBQcm94eVJ1bnRpbWVN
ZXRob2QoZ2xvYmFsT2JqZWN0LCBkb21TdHJ1Y3R1cmUsIGxpc3QpOwotICAgICAgICBtZXRob2Qt
PmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgbmFtZSk7Ci0gICAgICAgIHJldHVy
biBtZXRob2Q7CisgICAgICAgIFByb3h5UnVudGltZU1ldGhvZCogcnVudGltZU1ldGhvZCA9IG5l
dyAoYWxsb2NhdGVDZWxsPFByb3h5UnVudGltZU1ldGhvZD4oKmV4ZWMtPmhlYXAoKSkpIFByb3h5
UnVudGltZU1ldGhvZChnbG9iYWxPYmplY3QsIGRvbVN0cnVjdHVyZSwgbWV0aG9kKTsKKyAgICAg
ICAgcnVudGltZU1ldGhvZC0+ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBuYW1l
KTsKKyAgICAgICAgcmV0dXJuIHJ1bnRpbWVNZXRob2Q7CiAgICAgfQogCiAgICAgc3RhdGljIFN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCkBAIC0xOTksOCArMTk5
LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCiBwcml2
YXRlOgotICAgIFByb3h5UnVudGltZU1ldGhvZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQmluZGluZ3M6Ok1ldGhvZExpc3QmIGxpc3QpCi0gICAg
ICAgIDogUnVudGltZU1ldGhvZChnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgbGlzdCkKKyAgICBQ
cm94eVJ1bnRpbWVNZXRob2QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIEJpbmRpbmdzOjpNZXRob2QqIG1ldGhvZCkKKyAgICAgICAgOiBSdW50aW1l
TWV0aG9kKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBtZXRob2QpCiAgICAgewogICAgIH0KIApA
QCAtMjE1LDggKzIxNSw4IEBAIGNvbnN0IENsYXNzSW5mbyBQcm94eVJ1bnRpbWVNZXRob2Q6OnNf
aW5mbyA9IHsgIlByb3h5UnVudGltZU1ldGhvZCIsICZSdW50aW1lTWV0CiAKIEpTVmFsdWUgUHJv
eHlJbnN0YW5jZTo6Z2V0TWV0aG9kKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lKQogewotICAgIE1ldGhvZExpc3QgbWV0aG9kTGlzdCA9IGdldENsYXNzKCkt
Pm1ldGhvZHNOYW1lZChwcm9wZXJ0eU5hbWUsIHRoaXMpOwotICAgIHJldHVybiBQcm94eVJ1bnRp
bWVNZXRob2Q6OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHByb3Bl
cnR5TmFtZS5wdWJsaWNOYW1lKCksIG1ldGhvZExpc3QpOworICAgIE1ldGhvZCogbWV0aG9kID0g
Z2V0Q2xhc3MoKS0+bWV0aG9kTmFtZWQocHJvcGVydHlOYW1lLCB0aGlzKTsKKyAgICByZXR1cm4g
UHJveHlSdW50aW1lTWV0aG9kOjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpLCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpLCBtZXRob2QpOwogfQogCiBKU1ZhbHVlIFBy
b3h5SW5zdGFuY2U6Omludm9rZU1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6UnVudGltZU1l
dGhvZCogcnVudGltZU1ldGhvZCkKQEAgLTIyNCwxMSArMjI0LDggQEAgSlNWYWx1ZSBQcm94eUlu
c3RhbmNlOjppbnZva2VNZXRob2QoRXhlY1N0YXRlKiBleGVjLCBKU0M6OlJ1bnRpbWVNZXRob2Qq
IHJ1bnRpbWUKICAgICBpZiAoIWFzT2JqZWN0KHJ1bnRpbWVNZXRob2QpLT5pbmhlcml0cygmUHJv
eHlSdW50aW1lTWV0aG9kOjpzX2luZm8pKQogICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVj
LCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkF0dGVtcHQgdG8gaW52b2tlIG5vbi1wbHVnLWluIG1l
dGhvZCBvbiBwbHVnLWluIG9iamVjdC4iKSk7CiAKLSAgICBjb25zdCBNZXRob2RMaXN0JiBtZXRo
b2RMaXN0ID0gKnJ1bnRpbWVNZXRob2QtPm1ldGhvZHMoKTsKLQotICAgIEFTU0VSVChtZXRob2RM
aXN0LnNpemUoKSA9PSAxKTsKLQotICAgIFByb3h5TWV0aG9kKiBtZXRob2QgPSBzdGF0aWNfY2Fz
dDxQcm94eU1ldGhvZCo+KG1ldGhvZExpc3RbMF0pOworICAgIFByb3h5TWV0aG9kKiBtZXRob2Qg
PSBzdGF0aWNfY2FzdDxQcm94eU1ldGhvZCo+KHJ1bnRpbWVNZXRob2QtPm1ldGhvZCgpKTsKKyAg
ICBBU1NFUlQobWV0aG9kKTsKIAogICAgIHJldHVybiBpbnZva2UoZXhlYywgSW52b2tlLCBtZXRo
b2QtPnNlcnZlcklkZW50aWZpZXIoKSwgQXJnTGlzdChleGVjKSk7CiB9CkBAIC0zNDYsMjIgKzM0
MywyMCBAQCB2b2lkIFByb3h5SW5zdGFuY2U6OmdldFByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgbmFtZUFycgogICAgIH0KIH0KIAotTWV0aG9kTGlzdCBQ
cm94eUluc3RhbmNlOjptZXRob2RzTmFtZWQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK01l
dGhvZCogUHJveHlJbnN0YW5jZTo6bWV0aG9kTmFtZWQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSkKIHsKICAgICBTdHJpbmcgbmFtZShwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKICAgICBp
ZiAobmFtZS5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIE1ldGhvZExpc3QoKTsKKyAgICAgICAg
cmV0dXJuIDA7CiAKICAgICBpZiAoIW1faW5zdGFuY2VQcm94eSkKLSAgICAgICAgcmV0dXJuIE1l
dGhvZExpc3QoKTsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgCiAgICAgLy8gSWYgd2UgYWxyZWFk
eSBoYXZlIGFuIGVudHJ5IGluIHRoZSBtYXAsIHVzZSBpdC4KICAgICBNZXRob2RNYXA6Oml0ZXJh
dG9yIGV4aXN0aW5nTWFwRW50cnkgPSBtX21ldGhvZHMuZmluZChuYW1lLmltcGwoKSk7CiAgICAg
aWYgKGV4aXN0aW5nTWFwRW50cnkgIT0gbV9tZXRob2RzLmVuZCgpKSB7Ci0gICAgICAgIE1ldGhv
ZExpc3QgbWV0aG9kTGlzdDsKICAgICAgICAgaWYgKGV4aXN0aW5nTWFwRW50cnktPnNlY29uZCkK
LSAgICAgICAgICAgIG1ldGhvZExpc3QuYXBwZW5kKGV4aXN0aW5nTWFwRW50cnktPnNlY29uZCk7
Ci0gICAgICAgIHJldHVybiBtZXRob2RMaXN0OworICAgICAgICAgICAgcmV0dXJuIGV4aXN0aW5n
TWFwRW50cnktPnNlY29uZDsKICAgICB9CiAgICAgCiAgICAgdWludDY0X3QgbWV0aG9kTmFtZSA9
IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3Q+KF9OUE5fR2V0U3RyaW5nSWRlbnRpZmllcihuYW1l
LmFzY2lpKCkuZGF0YSgpKSk7CkBAIC0zNzAsMjQgKzM2NSwyMSBAQCBNZXRob2RMaXN0IFByb3h5
SW5zdGFuY2U6Om1ldGhvZHNOYW1lZChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogICAgIGlm
IChfV0tQSE5QT2JqZWN0SGFzTWV0aG9kKG1faW5zdGFuY2VQcm94eS0+aG9zdFByb3h5KCktPnBv
cnQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2luc3RhbmNlUHJveHktPnBs
dWdpbklEKCksIHJlcXVlc3RJRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX29i
amVjdElELCBtZXRob2ROYW1lKSAhPSBLRVJOX1NVQ0NFU1MpCi0gICAgICAgIHJldHVybiBNZXRo
b2RMaXN0KCk7CisgICAgICAgIHJldHVybiAwOwogICAgIAogICAgIGF1dG9fcHRyPE5ldHNjYXBl
UGx1Z2luSW5zdGFuY2VQcm94eTo6Qm9vbGVhblJlcGx5PiByZXBseSA9IHdhaXRGb3JSZXBseTxO
ZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OkJvb2xlYW5SZXBseT4ocmVxdWVzdElEKTsKICAg
ICBpZiAoIXJlcGx5LmdldCgpKQotICAgICAgICByZXR1cm4gTWV0aG9kTGlzdCgpOworICAgICAg
ICByZXR1cm4gMDsKIAogICAgIGlmICghcmVwbHktPm1fcmVzdWx0ICYmICFtX2luc3RhbmNlUHJv
eHktPmhvc3RQcm94eSgpLT5zaG91bGRDYWNoZU1pc3NpbmdQcm9wZXJ0aWVzQW5kTWV0aG9kcygp
KQotICAgICAgICByZXR1cm4gTWV0aG9kTGlzdCgpOworICAgICAgICByZXR1cm4gMDsKIAogICAg
IC8vIEFkZCBhIG5ldyBlbnRyeSB0byB0aGUgbWFwIHVubGVzcyBhbiBlbnRyeSB3YXMgYWRkZWQg
d2hpbGUgd2Ugd2VyZSBpbiB3YWl0Rm9yUmVwbHkuCiAgICAgTWV0aG9kTWFwOjpBZGRSZXN1bHQg
bWFwQWRkUmVzdWx0ID0gbV9tZXRob2RzLmFkZChuYW1lLmltcGwoKSwgMCk7CiAgICAgaWYgKG1h
cEFkZFJlc3VsdC5pc05ld0VudHJ5ICYmIHJlcGx5LT5tX3Jlc3VsdCkKICAgICAgICAgbWFwQWRk
UmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgPSBuZXcgUHJveHlNZXRob2QobWV0aG9kTmFtZSk7CiAK
LSAgICBNZXRob2RMaXN0IG1ldGhvZExpc3Q7Ci0gICAgaWYgKG1hcEFkZFJlc3VsdC5pdGVyYXRv
ci0+c2Vjb25kKQotICAgICAgICBtZXRob2RMaXN0LmFwcGVuZChtYXBBZGRSZXN1bHQuaXRlcmF0
b3ItPnNlY29uZCk7Ci0gICAgcmV0dXJuIG1ldGhvZExpc3Q7CisgICAgcmV0dXJuIG1hcEFkZFJl
c3VsdC5pdGVyYXRvci0+c2Vjb25kOwogfQogCiBGaWVsZCogUHJveHlJbnN0YW5jZTo6ZmllbGRO
YW1lZChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166347</attachid>
            <date>2012-09-28 18:55:50 -0700</date>
            <delta_ts>2012-09-28 19:02:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97959-20120928185507.patch</filename>
            <type>text/plain</type>
            <size>32468</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5OTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzQ3N2RhY2M0NDQ2OTg3
OTNjOTZkYmQ1MjViNjczODgwYzI2MzVjNS4uYmQ2NTJiNzhhYWE5YTZiY2FlNTlmNGJiNDg1OWU0
ZWJiYjZkMjBhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDU0IEBACiAyMDEyLTA5LTI4ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKKyAgICAgICAgUmVtb3ZlIHN1cHBv
cnQgZm9yIG1ldGhvZCBvdmVybG9hZGluZyBmcm9tIGJyaWRnZSBjb2RlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Nzk1OQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBtZXRob2Qgb3ZlcmxvYWRpbmcg
aGFuZGxpbmcgd2FzIG9ubHkgaW4gcGxhY2UgZm9yIHRoZSAobm93IHJlbW92ZWQpIEphdmEgYnJp
ZGdlLiAKKyAgICAgICAgUmVwbGFjZSBNZXRob2RMaXN0IGV2ZXJ5d2hlcmUgd2l0aCBhIHNpbmds
ZSBNZXRob2QgcG9pbnRlci4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAq
IGJyaWRnZS9jL2NfY2xhc3MuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Q0NsYXNzOjpt
ZXRob2ROYW1lZCk6CisgICAgICAgICogYnJpZGdlL2MvY19jbGFzcy5oOgorICAgICAgICAoQ0Ns
YXNzKToKKyAgICAgICAgKiBicmlkZ2UvYy9jX2luc3RhbmNlLmNwcDoKKyAgICAgICAgKEpTQzo6
QmluZGluZ3M6OkNSdW50aW1lTWV0aG9kOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpCaW5kaW5n
czo6Q1J1bnRpbWVNZXRob2Q6OkNSdW50aW1lTWV0aG9kKToKKyAgICAgICAgKEpTQzo6QmluZGlu
Z3M6OkNJbnN0YW5jZTo6Z2V0TWV0aG9kKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkNJbnN0
YW5jZTo6aW52b2tlTWV0aG9kKToKKyAgICAgICAgKiBicmlkZ2UvanNjL0JyaWRnZUpTQy5oOgor
ICAgICAgICAoQmluZGluZ3MpOgorICAgICAgICAoQ2xhc3MpOgorICAgICAgICAqIGJyaWRnZS9v
YmpjL29iamNfY2xhc3MuaDoKKyAgICAgICAgKE9iamNDbGFzcyk6CisgICAgICAgICogYnJpZGdl
L29iamMvb2JqY19jbGFzcy5tbToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamNDbGFzczo6
bWV0aG9kTmFtZWQpOgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW06Cisg
ICAgICAgIChPYmpDUnVudGltZU1ldGhvZDo6Y3JlYXRlKToKKyAgICAgICAgKE9iakNSdW50aW1l
TWV0aG9kOjpPYmpDUnVudGltZU1ldGhvZCk6CisgICAgICAgIChPYmpjSW5zdGFuY2U6Omludm9r
ZU1ldGhvZCk6CisgICAgICAgICogYnJpZGdlL3F0L3F0X2NsYXNzLmNwcDoKKyAgICAgICAgKEpT
Qzo6QmluZGluZ3M6OlF0Q2xhc3M6Om1ldGhvZE5hbWVkKToKKyAgICAgICAgKiBicmlkZ2UvcXQv
cXRfY2xhc3MuaDoKKyAgICAgICAgKFF0Q2xhc3MpOgorICAgICAgICAqIGJyaWRnZS9xdC9xdF9p
bnN0YW5jZS5jcHA6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpRdEluc3RhbmNlOjpnZXRNZXRo
b2QpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX21ldGhvZC5jcHA6CisgICAgICAgIChKU0M6
OlJ1bnRpbWVNZXRob2Q6OlJ1bnRpbWVNZXRob2QpOgorICAgICAgICAoSlNDOjpSdW50aW1lTWV0
aG9kOjpsZW5ndGhHZXR0ZXIpOgorICAgICAgICAoSlNDOjpjYWxsUnVudGltZU1ldGhvZCk6Cisg
ICAgICAgICogYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmg6CisgICAgICAgIChKU0M6OlJ1bnRpbWVN
ZXRob2Q6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OlJ1bnRpbWVNZXRob2Q6Om1ldGhvZCk6Cisg
ICAgICAgIChSdW50aW1lTWV0aG9kKToKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9vYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UnVudGltZU9iamVjdDo6Z2V0T3duUHJvcGVy
dHlTbG90KToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlJ1bnRpbWVPYmplY3Q6OmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcik6CisKKzIwMTItMDktMjggIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVy
c2NhQGFwcGxlLmNvbT4KKwogICAgICAgICBSZW1vdmUgSmF2YSBicmlkZ2UKICAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3OTU0CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
ZwppbmRleCBlMmM1YWI5NTNiY2Q4Y2M2ZGJmNjEzZWYyZGY5NGFhMmM3ZDZiMzUwLi44ZmJlMjM3
NmE1NTUwY2M1NmU0ZGUzMDFiNmE3YmYwMTE0MjgxZjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0x
LDUgKzEsMjUgQEAKIDIwMTItMDktMjggIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxl
LmNvbT4KIAorICAgICAgICBSZW1vdmUgc3VwcG9ydCBmb3IgbWV0aG9kIG92ZXJsb2FkaW5nIGZy
b20gYnJpZGdlIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTk3OTU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVXBkYXRlIGZvciBXZWJDb3JlIGNoYW5nZXM7IE1ldGhvZExpc3QgaGFzIGJlZW4gcmVw
bGFjZWQgd2l0aCBhIHNpbmdsZSBNZXRob2QqIGV2ZXJ5d2hlcmUuCisKKyAgICAgICAgKiBQbHVn
aW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLmg6CisgICAgICAgIChQcm94eUluc3RhbmNlKToKKyAg
ICAgICAgKiBQbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tOgorICAgICAgICAoUHJveHlD
bGFzcyk6CisgICAgICAgIChXZWJLaXQ6OlByb3h5Q2xhc3M6Om1ldGhvZE5hbWVkKToKKyAgICAg
ICAgKFdlYktpdDo6UHJveHlSdW50aW1lTWV0aG9kOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0
OjpQcm94eVJ1bnRpbWVNZXRob2Q6OlByb3h5UnVudGltZU1ldGhvZCk6CisgICAgICAgIChXZWJL
aXQ6OlByb3h5SW5zdGFuY2U6OmdldE1ldGhvZCk6CisgICAgICAgIChXZWJLaXQ6OlByb3h5SW5z
dGFuY2U6Omludm9rZU1ldGhvZCk6CisgICAgICAgIChXZWJLaXQ6OlByb3h5SW5zdGFuY2U6Om1l
dGhvZE5hbWVkKToKKworMjAxMi0wOS0yOCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBw
bGUuY29tPgorCiAgICAgICAgIFJlbW92ZSBKYXZhIGJyaWRnZQogICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc5NTQKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpp
bmRleCBiODY1MWJiMzEzNGE1MDk2Mzk4N2FiNjNmYWJiODk5ZGQ0N2MwNGQ2Li40YzA5YjBlOGJl
ZmNlMGZhNmNiNmQ1ZjI3ZWE5NmNjNjE2MDQ0MDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAt
MjM1MCw4ICsyMzUwLDcgQEAgX19aTjNKU0MxM1J1bnRpbWVNZXRob2QxNGZpbmlzaENyZWF0aW9u
RVJOU18xMkpTR2xvYmFsRGF0YUVSS04zV1RGNlN0cmluZ0UKIF9fWk4zSlNDMTNSdW50aW1lTWV0
aG9kMThnZXRPd25Qcm9wZXJ0eVNsb3RFUE5TXzZKU0NlbGxFUE5TXzlFeGVjU3RhdGVFTlNfMTJQ
cm9wZXJ0eU5hbWVFUk5TXzEyUHJvcGVydHlTbG90RQogX19aTjNKU0MxM1J1bnRpbWVNZXRob2Qy
NGdldE93blByb3BlcnR5RGVzY3JpcHRvckVQTlNfOEpTT2JqZWN0RVBOU185RXhlY1N0YXRlRU5T
XzEyUHJvcGVydHlOYW1lRVJOU18xOFByb3BlcnR5RGVzY3JpcHRvckUKIF9fWk4zSlNDMTNSdW50
aW1lTWV0aG9kNnNfaW5mb0UKLV9fWk4zSlNDMTNSdW50aW1lTWV0aG9kN2Rlc3Ryb3lFUE5TXzZK
U0NlbGxFCi1fX1pOM0pTQzEzUnVudGltZU1ldGhvZEMyRVBOU18xNEpTR2xvYmFsT2JqZWN0RVBO
U185U3RydWN0dXJlRVJOM1dURjZWZWN0b3JJUE5TXzhCaW5kaW5nczZNZXRob2RFTG0wRUVFCitf
X1pOM0pTQzEzUnVudGltZU1ldGhvZEMyRVBOU18xNEpTR2xvYmFsT2JqZWN0RVBOU185U3RydWN0
dXJlRVBOU184QmluZGluZ3M2TWV0aG9kRQogX19aTjNKU0M4QmluZGluZ3MxMFJvb3RPYmplY3RE
MUV2CiBfX1pOM0pTQzhCaW5kaW5nczEzUnVudGltZU9iamVjdDExZ2V0Q2FsbERhdGFFUE5TXzZK
U0NlbGxFUk5TXzhDYWxsRGF0YUUKIF9fWk4zSlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0MTJk
ZWZhdWx0VmFsdWVFUEtOU184SlNPYmplY3RFUE5TXzlFeGVjU3RhdGVFTlNfMjJQcmVmZXJyZWRQ
cmltaXRpdmVUeXBlRQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19jbGFz
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2NsYXNzLmNwcAppbmRleCAxYTE2Njcw
MmM4OWMwMDU3YjQ5OWQ2NTFlNzhiODZjNzAyN2ViOTc0Li40NjRkODgyZTE1NmNlMWM1MjE5YjEy
ZTIwNTEyMjYwNjE2MWE2ZWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9j
X2NsYXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2NsYXNzLmNwcApAQCAt
NzAsMjggKzcwLDIzIEBAIENDbGFzcyogQ0NsYXNzOjpjbGFzc0ZvcklzQShOUENsYXNzKiBpc2Ep
CiAgICAgcmV0dXJuIGFDbGFzczsKIH0KIAotTWV0aG9kTGlzdCBDQ2xhc3M6Om1ldGhvZHNOYW1l
ZChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBJbnN0YW5jZSogaW5zdGFuY2UpIGNvbnN0CitN
ZXRob2QqIENDbGFzczo6bWV0aG9kTmFtZWQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSW5z
dGFuY2UqIGluc3RhbmNlKSBjb25zdAogewogICAgIFN0cmluZyBuYW1lKHByb3BlcnR5TmFtZS5w
dWJsaWNOYW1lKCkpOwogICAgIAotICAgIE1ldGhvZExpc3QgbWV0aG9kTGlzdDsKLQotICAgIE1l
dGhvZCogbWV0aG9kID0gX21ldGhvZHMuZ2V0KG5hbWUuaW1wbCgpKTsKLSAgICBpZiAobWV0aG9k
KSB7Ci0gICAgICAgIG1ldGhvZExpc3QuYXBwZW5kKG1ldGhvZCk7Ci0gICAgICAgIHJldHVybiBt
ZXRob2RMaXN0OwotICAgIH0KKyAgICBpZiAoTWV0aG9kKiBtZXRob2QgPSBfbWV0aG9kcy5nZXQo
bmFtZS5pbXBsKCkpKQorICAgICAgICByZXR1cm4gbWV0aG9kOwogCiAgICAgTlBJZGVudGlmaWVy
IGlkZW50ID0gX05QTl9HZXRTdHJpbmdJZGVudGlmaWVyKG5hbWUuYXNjaWkoKS5kYXRhKCkpOwog
ICAgIGNvbnN0IENJbnN0YW5jZSogaW5zdCA9IHN0YXRpY19jYXN0PGNvbnN0IENJbnN0YW5jZSo+
KGluc3RhbmNlKTsKICAgICBOUE9iamVjdCogb2JqID0gaW5zdC0+Z2V0T2JqZWN0KCk7CiAgICAg
aWYgKF9pc2EtPmhhc01ldGhvZCAmJiBfaXNhLT5oYXNNZXRob2Qob2JqLCBpZGVudCkpewotICAg
ICAgICBNZXRob2QqIGFNZXRob2QgPSBuZXcgQ01ldGhvZChpZGVudCk7IC8vIGRlbGV0ZWQgaW4g
dGhlIENDbGFzcyBkZXN0cnVjdG9yCi0gICAgICAgIF9tZXRob2RzLnNldChuYW1lLmltcGwoKSwg
YU1ldGhvZCk7Ci0gICAgICAgIG1ldGhvZExpc3QuYXBwZW5kKGFNZXRob2QpOworICAgICAgICBN
ZXRob2QqIG1ldGhvZCA9IG5ldyBDTWV0aG9kKGlkZW50KTsgLy8gZGVsZXRlZCBpbiB0aGUgQ0Ns
YXNzIGRlc3RydWN0b3IKKyAgICAgICAgX21ldGhvZHMuc2V0KG5hbWUuaW1wbCgpLCBtZXRob2Qp
OworICAgICAgICByZXR1cm4gbWV0aG9kOwogICAgIH0KICAgICAKLSAgICByZXR1cm4gbWV0aG9k
TGlzdDsKKyAgICByZXR1cm4gMDsKIH0KIAogRmllbGQqIENDbGFzczo6ZmllbGROYW1lZChQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBJbnN0YW5jZSogaW5zdGFuY2UpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2NsYXNzLmggYi9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvYy9jX2NsYXNzLmgKaW5kZXggYzhjMmU4OTg1MWQ2NjMxNTNiYWY4ZTRjYjZmNTk3MDE4
YzJhMWExYS4uZjY3Mzk5ZmU1OTc3NmU2M2NjYjE4NmFjOTJjYmI2NzJmMWRjZjBhYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19jbGFzcy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9jL2NfY2xhc3MuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIENDbGFzcyogY2xhc3NGb3JJc0EoTlBDbGFzcyopOwogICAgIHZpcnR1YWwgfkNDbGFzcygp
OwogCi0gICAgdmlydHVhbCBNZXRob2RMaXN0IG1ldGhvZHNOYW1lZChQcm9wZXJ0eU5hbWUsIElu
c3RhbmNlKikgY29uc3Q7CisgICAgdmlydHVhbCBNZXRob2QqIG1ldGhvZE5hbWVkKFByb3BlcnR5
TmFtZSwgSW5zdGFuY2UqKSBjb25zdDsKICAgICB2aXJ0dWFsIEZpZWxkKiBmaWVsZE5hbWVkKFBy
b3BlcnR5TmFtZSwgSW5zdGFuY2UqKSBjb25zdDsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfaW5zdGFuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL2MvY19pbnN0YW5jZS5jcHAKaW5kZXggMjAxYzYxZTg2MTFlMzM5M2Q0ZmY5ODFmOGU1N2Uy
MDE5Y2RjYzM5NC4uNjBiNDMwODU0YTg1YTk1NGRkNTU5YWI3ZWU4NjliYjQ4YTZhYzcyZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19pbnN0YW5jZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19pbnN0YW5jZS5jcHAKQEAgLTExMSwxNCArMTExLDE0IEBA
IGNsYXNzIENSdW50aW1lTWV0aG9kIDogcHVibGljIFJ1bnRpbWVNZXRob2QgewogcHVibGljOgog
ICAgIHR5cGVkZWYgUnVudGltZU1ldGhvZCBCYXNlOwogCi0gICAgc3RhdGljIENSdW50aW1lTWV0
aG9kKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBjb25zdCBTdHJpbmcmIG5hbWUsIEJpbmRpbmdzOjpNZXRob2RMaXN0JiBsaXN0KQorICAgIHN0
YXRpYyBDUnVudGltZU1ldGhvZCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBCaW5kaW5nczo6TWV0aG9kKiBt
ZXRob2QpCiAgICAgewogICAgICAgICAvLyBGSVhNRTogZGVwcmVjYXRlZEdldERPTVN0cnVjdHVy
ZSB1c2VzIHRoZSBwcm90b3R5cGUgb2ZmIG9mIHRoZSB3cm9uZyBnbG9iYWwgb2JqZWN0CiAgICAg
ICAgIC8vIFdlIG5lZWQgdG8gcGFzcyBpbiB0aGUgcmlnaHQgZ2xvYmFsIG9iamVjdCBmb3IgImki
LgogICAgICAgICBTdHJ1Y3R1cmUqIGRvbVN0cnVjdHVyZSA9IFdlYkNvcmU6OmRlcHJlY2F0ZWRH
ZXRET01TdHJ1Y3R1cmU8Q1J1bnRpbWVNZXRob2Q+KGV4ZWMpOwotICAgICAgICBDUnVudGltZU1l
dGhvZCogbWV0aG9kID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8Q1J1bnRpbWVNZXRob2Q+
KCpleGVjLT5oZWFwKCkpKSBDUnVudGltZU1ldGhvZChnbG9iYWxPYmplY3QsIGRvbVN0cnVjdHVy
ZSwgbGlzdCk7Ci0gICAgICAgIG1ldGhvZC0+ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0
YSgpLCBuYW1lKTsKLSAgICAgICAgcmV0dXJuIG1ldGhvZDsKKyAgICAgICAgQ1J1bnRpbWVNZXRo
b2QqIHJ1bnRpbWVNZXRob2QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxDUnVudGltZU1l
dGhvZD4oKmV4ZWMtPmhlYXAoKSkpIENSdW50aW1lTWV0aG9kKGdsb2JhbE9iamVjdCwgZG9tU3Ry
dWN0dXJlLCBtZXRob2QpOworICAgICAgICBydW50aW1lTWV0aG9kLT5maW5pc2hDcmVhdGlvbihl
eGVjLT5nbG9iYWxEYXRhKCksIG5hbWUpOworICAgICAgICByZXR1cm4gcnVudGltZU1ldGhvZDsK
ICAgICB9CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHBy
b3RvdHlwZSkKQEAgLTEyOSw4ICsxMjksOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IENs
YXNzSW5mbyBzX2luZm87CiAKIHByaXZhdGU6Ci0gICAgQ1J1bnRpbWVNZXRob2QoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEJpbmRpbmdzOjpNZXRo
b2RMaXN0JiBsaXN0KQotICAgICAgICA6IFJ1bnRpbWVNZXRob2QoZ2xvYmFsT2JqZWN0LCBzdHJ1
Y3R1cmUsIGxpc3QpCisgICAgQ1J1bnRpbWVNZXRob2QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEJpbmRpbmdzOjpNZXRob2QqIG1ldGhvZCkKKyAg
ICAgICAgOiBSdW50aW1lTWV0aG9kKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBtZXRob2QpCiAg
ICAgewogICAgIH0KIApAQCAtMTQ2LDggKzE0Niw4IEBAIGNvbnN0IENsYXNzSW5mbyBDUnVudGlt
ZU1ldGhvZDo6c19pbmZvID0geyAiQ1J1bnRpbWVNZXRob2QiLCAmUnVudGltZU1ldGhvZDo6c19p
CiAKIEpTVmFsdWUgQ0luc3RhbmNlOjpnZXRNZXRob2QoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lKQogewotICAgIE1ldGhvZExpc3QgbWV0aG9kTGlzdCA9IGdldENs
YXNzKCktPm1ldGhvZHNOYW1lZChwcm9wZXJ0eU5hbWUsIHRoaXMpOwotICAgIHJldHVybiBDUnVu
dGltZU1ldGhvZDo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgcHJv
cGVydHlOYW1lLnB1YmxpY05hbWUoKSwgbWV0aG9kTGlzdCk7CisgICAgTWV0aG9kKiBtZXRob2Qg
PSBnZXRDbGFzcygpLT5tZXRob2ROYW1lZChwcm9wZXJ0eU5hbWUsIHRoaXMpOworICAgIHJldHVy
biBDUnVudGltZU1ldGhvZDo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSwgcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSwgbWV0aG9kKTsKIH0KIAogSlNWYWx1ZSBDSW5z
dGFuY2U6Omludm9rZU1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIFJ1bnRpbWVNZXRob2QqIHJ1bnRp
bWVNZXRob2QpCkBAIC0xNTUsMTMgKzE1NSw4IEBAIEpTVmFsdWUgQ0luc3RhbmNlOjppbnZva2VN
ZXRob2QoRXhlY1N0YXRlKiBleGVjLCBSdW50aW1lTWV0aG9kKiBydW50aW1lTWV0aG9kKQogICAg
IGlmICghYXNPYmplY3QocnVudGltZU1ldGhvZCktPmluaGVyaXRzKCZDUnVudGltZU1ldGhvZDo6
c19pbmZvKSkKICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9y
KGV4ZWMsICJBdHRlbXB0IHRvIGludm9rZSBub24tcGx1Zy1pbiBtZXRob2Qgb24gcGx1Zy1pbiBv
YmplY3QuIikpOwogCi0gICAgY29uc3QgTWV0aG9kTGlzdCYgbWV0aG9kTGlzdCA9ICpydW50aW1l
TWV0aG9kLT5tZXRob2RzKCk7Ci0KLSAgICAvLyBPdmVybG9hZGluZyBtZXRob2RzIGFyZSBub3Qg
YWxsb3dlZCBieSBOUE9iamVjdHMuICBTaG91bGQgb25seSBiZSBvbmUKLSAgICAvLyBuYW1lIG1h
dGNoIGZvciBhIHBhcnRpY3VsYXIgbWV0aG9kLgotICAgIEFTU0VSVChtZXRob2RMaXN0LnNpemUo
KSA9PSAxKTsKLQotICAgIENNZXRob2QqIG1ldGhvZCA9IHN0YXRpY19jYXN0PENNZXRob2QqPiht
ZXRob2RMaXN0WzBdKTsKKyAgICBDTWV0aG9kKiBtZXRob2QgPSBzdGF0aWNfY2FzdDxDTWV0aG9k
Kj4ocnVudGltZU1ldGhvZC0+bWV0aG9kKCkpOworICAgIEFTU0VSVChtZXRob2QpOwogCiAgICAg
TlBJZGVudGlmaWVyIGlkZW50ID0gbWV0aG9kLT5pZGVudGlmaWVyKCk7CiAgICAgaWYgKCFfb2Jq
ZWN0LT5fY2xhc3MtPmhhc01ldGhvZChfb2JqZWN0LCBpZGVudCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvanNjL0JyaWRnZUpTQy5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdl
L2pzYy9CcmlkZ2VKU0MuaAppbmRleCBjN2RmZTQ4M2FmZjA0ZmYzNDFmZTViMDRkNzU2Y2M2Zjll
YWEzZGZjLi4zOWU2Yzk4NmQwZmFkNDFkNGRiZTkyYWNiNzczZDM2N2YyMjc3NTY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvanNjL0JyaWRnZUpTQy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9qc2MvQnJpZGdlSlNDLmgKQEAgLTQ4LDggKzQ4LDYgQEAgY2xhc3MgTWV0
aG9kOwogY2xhc3MgUm9vdE9iamVjdDsKIGNsYXNzIFJ1bnRpbWVPYmplY3Q7CiAKLXR5cGVkZWYg
VmVjdG9yPE1ldGhvZCo+IE1ldGhvZExpc3Q7Ci0KIGNsYXNzIEZpZWxkIHsKIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIEpTVmFsdWUgdmFsdWVGcm9tSW5zdGFuY2UoRXhlY1N0YXRlKiwgY29uc3QgSW5z
dGFuY2UqKSBjb25zdCA9IDA7CkBAIC02Miw3ICs2MCw3IEBAIGNsYXNzIENsYXNzIHsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShDbGFzcyk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIENsYXNzKCkgeyB9Ci0gICAgdmlydHVhbCBNZXRob2RMaXN0IG1ldGhvZHNOYW1l
ZChQcm9wZXJ0eU5hbWUsIEluc3RhbmNlKikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgTWV0aG9k
KiBtZXRob2ROYW1lZChQcm9wZXJ0eU5hbWUsIEluc3RhbmNlKikgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgRmllbGQqIGZpZWxkTmFtZWQoUHJvcGVydHlOYW1lLCBJbnN0YW5jZSopIGNvbnN0ID0g
MDsKICAgICB2aXJ0dWFsIEpTVmFsdWUgZmFsbGJhY2tPYmplY3QoRXhlY1N0YXRlKiwgSW5zdGFu
Y2UqLCBQcm9wZXJ0eU5hbWUpIHsgcmV0dXJuIGpzVW5kZWZpbmVkKCk7IH0KIApAQCAtMTM2LDcg
KzEzNCw2IEBAIHByb3RlY3RlZDoKIAogY29uc3QgY2hhciogc2lnbmF0dXJlRm9yUGFyYW1ldGVy
cyhjb25zdCBBcmdMaXN0Jik7CiAKLXR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8U3RyaW5nSW1wbD4s
IE1ldGhvZExpc3QqPiBNZXRob2RMaXN0TWFwOwogdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxTdHJp
bmdJbXBsPiwgTWV0aG9kKj4gTWV0aG9kTWFwOwogdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxTdHJp
bmdJbXBsPiwgRmllbGQqPiBGaWVsZE1hcDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YnJpZGdlL29iamMvb2JqY19jbGFzcy5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2Jq
Y19jbGFzcy5oCmluZGV4IGMzNThhZTkzYmYxYTE1MmY0NTQ0YzVjNDM3NDZkMjg5Njg4NTc5M2Iu
LjgzODM0N2YyNGFjOWZhNDhjZWNiYzM3ZTVjYzcxOWI3MmU5OWU5NzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfY2xhc3MuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2Uvb2JqYy9vYmpjX2NsYXNzLmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAg
IC8vIFJldHVybiB0aGUgY2FjaGVkIE9iakMgb2YgdGhlIHNwZWNpZmllZCBuYW1lLgogICAgIHN0
YXRpYyBPYmpjQ2xhc3MgKmNsYXNzRm9ySXNBKENsYXNzU3RydWN0UHRyKTsKICAgICAKLSAgICB2
aXJ0dWFsIE1ldGhvZExpc3QgbWV0aG9kc05hbWVkKFByb3BlcnR5TmFtZSwgSW5zdGFuY2UqKSBj
b25zdDsKKyAgICB2aXJ0dWFsIE1ldGhvZCogbWV0aG9kTmFtZWQoUHJvcGVydHlOYW1lLCBJbnN0
YW5jZSopIGNvbnN0OwogICAgIHZpcnR1YWwgRmllbGQgKmZpZWxkTmFtZWQoUHJvcGVydHlOYW1l
LCBJbnN0YW5jZSopIGNvbnN0OwogCiAgICAgdmlydHVhbCBKU1ZhbHVlIGZhbGxiYWNrT2JqZWN0
KEV4ZWNTdGF0ZSosIEluc3RhbmNlKiwgUHJvcGVydHlOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfY2xhc3MubW0gYi9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2Uvb2JqYy9vYmpjX2NsYXNzLm1tCmluZGV4IGJjYmQ3ZTdiYzdmY2NhODMzOGFjMzI0ZTBlNmVm
MjdjNTA3NGNkZmMuLmI5MjE5MGI4ZTZjYmZhNDcwOTQzNzAyMTMyYmVhM2VkZjE2ZjQ0OWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfY2xhc3MubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19jbGFzcy5tbQpAQCAtOTUsMjUgKzk1LDI0
IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBjb252ZXJ0SlNNZXRob2ROYW1lVG9PYmpjKGNvbnN0IENT
dHJpbmcmIGpzTmFtZSwgSlNOYW1lQ29udmVyCiAgICAgfQogfQogCi1NZXRob2RMaXN0IE9iamND
bGFzczo6bWV0aG9kc05hbWVkKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEluc3RhbmNlKikg
Y29uc3QKK01ldGhvZCogT2JqY0NsYXNzOjptZXRob2ROYW1lZChQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBJbnN0YW5jZSopIGNvbnN0CiB7CiAgICAgU3RyaW5nIG5hbWUocHJvcGVydHlOYW1l
LnB1YmxpY05hbWUoKSk7CiAgICAgaWYgKG5hbWUuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBN
ZXRob2RMaXN0KCk7CisgICAgICAgIHJldHVybiAwOwogCi0gICAgTWV0aG9kTGlzdCBtZXRob2RM
aXN0OwotICAgIGlmIChNZXRob2QqIG1ldGhvZCA9IG1fbWV0aG9kQ2FjaGUuZ2V0KG5hbWUuaW1w
bCgpKSkgewotICAgICAgICBtZXRob2RMaXN0LmFwcGVuZChtZXRob2QpOwotICAgICAgICByZXR1
cm4gbWV0aG9kTGlzdDsKLSAgICB9CisgICAgaWYgKE1ldGhvZCogbWV0aG9kID0gbV9tZXRob2RD
YWNoZS5nZXQobmFtZS5pbXBsKCkpKQorICAgICAgICByZXR1cm4gbWV0aG9kOwogCiAgICAgQ1N0
cmluZyBqc05hbWUgPSBuYW1lLmFzY2lpKCk7CiAgICAgSlNOYW1lQ29udmVyc2lvbkJ1ZmZlciBi
dWZmZXI7CiAgICAgY29udmVydEpTTWV0aG9kTmFtZVRvT2JqYyhqc05hbWUsIGJ1ZmZlcik7CiAg
ICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBtZXRob2ROYW1lKEFkb3B0Q0YsIENGU3RyaW5nQ3Jl
YXRlV2l0aENTdHJpbmcoTlVMTCwgYnVmZmVyLmRhdGEoKSwga0NGU3RyaW5nRW5jb2RpbmdBU0NJ
SSkpOwogCisgICAgTWV0aG9kKiBtZXRob2RQdHIgPSAwOwogICAgIENsYXNzU3RydWN0UHRyIHRo
aXNDbGFzcyA9IF9pc2E7Ci0gICAgd2hpbGUgKHRoaXNDbGFzcyAmJiBtZXRob2RMaXN0LmlzRW1w
dHkoKSkgeworICAgIAorICAgIHdoaWxlICh0aGlzQ2xhc3MgJiYgIW1ldGhvZFB0cikgewogICAg
ICAgICB1bnNpZ25lZCBudW1NZXRob2RzSW5DbGFzcyA9IDA7CiAgICAgICAgIE1ldGhvZFN0cnVj
dFB0ciogb2JqY01ldGhvZExpc3QgPSBjbGFzc19jb3B5TWV0aG9kTGlzdCh0aGlzQ2xhc3MsICZu
dW1NZXRob2RzSW5DbGFzcyk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1N
ZXRob2RzSW5DbGFzczsgaSsrKSB7CkBAIC0xMzUsNyArMTM0LDcgQEAgTWV0aG9kTGlzdCBPYmpj
Q2xhc3M6Om1ldGhvZHNOYW1lZChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBJbnN0YW5jZSop
IGNvbnN0CiAKICAgICAgICAgICAgIGlmICgobWFwcGVkTmFtZSAmJiBbbWFwcGVkTmFtZSBpc0Vx
dWFsOihOU1N0cmluZyopbWV0aG9kTmFtZS5nZXQoKV0pIHx8IHN0cmNtcChvYmpjTWV0aG9kU2Vs
ZWN0b3JOYW1lLCBidWZmZXIuZGF0YSgpKSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgT3duUHRy
PE1ldGhvZD4gbWV0aG9kID0gYWRvcHRQdHIobmV3IE9iamNNZXRob2QodGhpc0NsYXNzLCBvYmpj
TWV0aG9kU2VsZWN0b3IpKTsKLSAgICAgICAgICAgICAgICBtZXRob2RMaXN0LmFwcGVuZChtZXRo
b2QuZ2V0KCkpOworICAgICAgICAgICAgICAgIG1ldGhvZFB0ciA9IG1ldGhvZC5nZXQoKTsKICAg
ICAgICAgICAgICAgICBtX21ldGhvZENhY2hlLmFkZChuYW1lLmltcGwoKSwgbWV0aG9kLnJlbGVh
c2UoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0xNDQsNyAr
MTQzLDcgQEAgTWV0aG9kTGlzdCBPYmpjQ2xhc3M6Om1ldGhvZHNOYW1lZChQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBJbnN0YW5jZSopIGNvbnN0CiAgICAgICAgIGZyZWUob2JqY01ldGhvZExp
c3QpOwogICAgIH0KIAotICAgIHJldHVybiBtZXRob2RMaXN0OworICAgIHJldHVybiBtZXRob2RQ
dHI7CiB9CiAKIEZpZWxkKiBPYmpjQ2xhc3M6OmZpZWxkTmFtZWQoUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgSW5zdGFuY2UqIGluc3RhbmNlKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9vYmpjL29iamNfaW5zdGFuY2UubW0KaW5kZXggNGY1YmVjYWFkYmNhMTc1MThjYzY4MDRlYWRh
NWI5MTU1ODM0ODQ0Ny4uMmIzNjI0ODhhNWJiNWVhNDNmZDM4ZTJiODFlNmIxNWU2NWNmMzQ2ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tCkBAIC0xODEs
MTQgKzE4MSwxNCBAQCBib29sIE9iamNJbnN0YW5jZTo6c3VwcG9ydHNJbnZva2VEZWZhdWx0TWV0
aG9kKCkgY29uc3QKIAogY2xhc3MgT2JqQ1J1bnRpbWVNZXRob2QgOiBwdWJsaWMgUnVudGltZU1l
dGhvZCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIE9iakNSdW50aW1lTWV0aG9kKiBjcmVhdGUoRXhl
Y1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTdHJpbmcm
IG5hbWUsIEJpbmRpbmdzOjpNZXRob2RMaXN0JiBsaXN0KQorICAgIHN0YXRpYyBPYmpDUnVudGlt
ZU1ldGhvZCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBCaW5kaW5nczo6TWV0aG9kKiBtZXRob2QpCiAgICAg
ewogICAgICAgICAvLyBGSVhNRTogZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZSB1c2VzIHRoZSBw
cm90b3R5cGUgb2ZmIG9mIHRoZSB3cm9uZyBnbG9iYWwgb2JqZWN0CiAgICAgICAgIC8vIFdlIG5l
ZWQgdG8gcGFzcyBpbiB0aGUgcmlnaHQgZ2xvYmFsIG9iamVjdCBmb3IgImkiLgogICAgICAgICBT
dHJ1Y3R1cmUqIGRvbVN0cnVjdHVyZSA9IFdlYkNvcmU6OmRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1
cmU8T2JqQ1J1bnRpbWVNZXRob2Q+KGV4ZWMpOwotICAgICAgICBPYmpDUnVudGltZU1ldGhvZCog
bWV0aG9kID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8T2JqQ1J1bnRpbWVNZXRob2Q+KCpl
eGVjLT5oZWFwKCkpKSBPYmpDUnVudGltZU1ldGhvZChnbG9iYWxPYmplY3QsIGRvbVN0cnVjdHVy
ZSwgbGlzdCk7Ci0gICAgICAgIG1ldGhvZC0+ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0
YSgpLCBuYW1lKTsKLSAgICAgICAgcmV0dXJuIG1ldGhvZDsKKyAgICAgICAgT2JqQ1J1bnRpbWVN
ZXRob2QqIHJ1bnRpbWVNZXRob2QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxPYmpDUnVu
dGltZU1ldGhvZD4oKmV4ZWMtPmhlYXAoKSkpIE9iakNSdW50aW1lTWV0aG9kKGdsb2JhbE9iamVj
dCwgZG9tU3RydWN0dXJlLCBtZXRob2QpOworICAgICAgICBydW50aW1lTWV0aG9kLT5maW5pc2hD
cmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIG5hbWUpOworICAgICAgICByZXR1cm4gcnVudGlt
ZU1ldGhvZDsKICAgICB9CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgcHJvdG90eXBlKQpAQCAtMjAxLDggKzIwMSw4IEBAIHB1YmxpYzoKIHByaXZh
dGU6CiAgICAgdHlwZWRlZiBSdW50aW1lTWV0aG9kIEJhc2U7CiAKLSAgICBPYmpDUnVudGltZU1l
dGhvZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
QmluZGluZ3M6Ok1ldGhvZExpc3QmIGxpc3QpCi0gICAgICAgIDogUnVudGltZU1ldGhvZChnbG9i
YWxPYmplY3QsIHN0cnVjdHVyZSwgbGlzdCkKKyAgICBPYmpDUnVudGltZU1ldGhvZChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQmluZGluZ3M6Ok1l
dGhvZCogbWV0aG9kKQorICAgICAgICA6IFJ1bnRpbWVNZXRob2QoZ2xvYmFsT2JqZWN0LCBzdHJ1
Y3R1cmUsIG1ldGhvZCkKICAgICB7CiAgICAgfQogCkBAIC0yMTcsOCArMjE3LDggQEAgY29uc3Qg
Q2xhc3NJbmZvIE9iakNSdW50aW1lTWV0aG9kOjpzX2luZm8gPSB7ICJPYmpDUnVudGltZU1ldGhv
ZCIsICZSdW50aW1lTWV0aG8KIAogSlNWYWx1ZSBPYmpjSW5zdGFuY2U6OmdldE1ldGhvZChFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgTWV0aG9kTGlz
dCBtZXRob2RMaXN0ID0gZ2V0Q2xhc3MoKS0+bWV0aG9kc05hbWVkKHByb3BlcnR5TmFtZSwgdGhp
cyk7Ci0gICAgcmV0dXJuIE9iakNSdW50aW1lTWV0aG9kOjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpLCBtZXRob2RMaXN0
KTsKKyAgICBNZXRob2QqIG1ldGhvZCA9IGdldENsYXNzKCktPm1ldGhvZE5hbWVkKHByb3BlcnR5
TmFtZSwgdGhpcyk7CisgICAgcmV0dXJuIE9iakNSdW50aW1lTWV0aG9kOjpjcmVhdGUoZXhlYywg
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpLCBt
ZXRob2QpOwogfQogCiBKU1ZhbHVlIE9iamNJbnN0YW5jZTo6aW52b2tlTWV0aG9kKEV4ZWNTdGF0
ZSogZXhlYywgUnVudGltZU1ldGhvZCogcnVudGltZU1ldGhvZCkKQEAgLTIyNiwxMyArMjI2LDEw
IEBAIEpTVmFsdWUgT2JqY0luc3RhbmNlOjppbnZva2VNZXRob2QoRXhlY1N0YXRlKiBleGVjLCBS
dW50aW1lTWV0aG9kKiBydW50aW1lTWV0aG9kCiAgICAgaWYgKCFhc09iamVjdChydW50aW1lTWV0
aG9kKS0+aW5oZXJpdHMoJk9iakNSdW50aW1lTWV0aG9kOjpzX2luZm8pKQogICAgICAgICByZXR1
cm4gdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkF0dGVtcHQgdG8gaW52
b2tlIG5vbi1wbHVnLWluIG1ldGhvZCBvbiBwbHVnLWluIG9iamVjdC4iKSk7CiAKLSAgICBjb25z
dCBNZXRob2RMaXN0JiBtZXRob2RMaXN0ID0gKnJ1bnRpbWVNZXRob2QtPm1ldGhvZHMoKTsKKyAg
ICBPYmpjTWV0aG9kICptZXRob2QgPSBzdGF0aWNfY2FzdDxPYmpjTWV0aG9kKj4ocnVudGltZU1l
dGhvZC0+bWV0aG9kKCkpOworICAgIEFTU0VSVChtZXRob2QpOwogCi0gICAgLy8gT3ZlcmxvYWRp
bmcgbWV0aG9kcyBpcyBub3QgYWxsb3dlZCBpbiBPYmplY3RpdmVDLiAgU2hvdWxkIG9ubHkgYmUg
b25lCi0gICAgLy8gbmFtZSBtYXRjaCBmb3IgYSBwYXJ0aWN1bGFyIG1ldGhvZC4KLSAgICBBU1NF
UlQobWV0aG9kTGlzdC5zaXplKCkgPT0gMSk7Ci0KLSAgICByZXR1cm4gaW52b2tlT2JqY01ldGhv
ZChleGVjLCBzdGF0aWNfY2FzdDxPYmpjTWV0aG9kKj4obWV0aG9kTGlzdFswXSkpOworICAgIHJl
dHVybiBpbnZva2VPYmpjTWV0aG9kKGV4ZWMsIG1ldGhvZCk7CiB9CiAKIEpTVmFsdWUgT2JqY0lu
c3RhbmNlOjppbnZva2VPYmpjTWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgT2JqY01ldGhvZCogbWV0
aG9kKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X2NsYXNzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9jbGFzcy5jcHAKaW5kZXggNzYxNzg3MWYzZjNl
MGVlM2MxYTg3ZDk4NTJjMDM5ODY0NTA5OWNlNi4uZGEyNWQ5NWE2N2RkNTFmY2NmMTg3MzU0ZmI0
ZmI4MGM1NDUyZGRiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X2Ns
YXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfY2xhc3MuY3BwCkBAIC0x
MjIsOSArMTIyLDkgQEAgSlNWYWx1ZSBRdENsYXNzOjpmYWxsYmFja09iamVjdChFeGVjU3RhdGUq
IGV4ZWMsIEluc3RhbmNlKiBpbnN0LCBQcm9wZXJ0eU5hbWUgaWQKIH0KIAogLy8gVGhpcyBmdW5j
dGlvbmFsaXR5IGlzIGhhbmRsZWQgYnkgdGhlIGZhbGxiYWNrIGNhc2UgYWJvdmUuLi4KLU1ldGhv
ZExpc3QgUXRDbGFzczo6bWV0aG9kc05hbWVkKFByb3BlcnR5TmFtZSwgSW5zdGFuY2UqKSBjb25z
dAorTWV0aG9kKiBRdENsYXNzOjptZXRob2ROYW1lZChQcm9wZXJ0eU5hbWUsIEluc3RhbmNlKikg
Y29uc3QKIHsKLSAgICByZXR1cm4gTWV0aG9kTGlzdCgpOworICAgIHJldHVybiAwOwogfQogCiAv
LyAjIyMgd2UgbWF5IGVuZCB1cCB3aXRoIGEgZGlmZmVyZW50IHNlYXJjaCBvcmRlciB0aGFuIFF0
U2NyaXB0IGJ5IG5vdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X2Ns
YXNzLmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfY2xhc3MuaAppbmRleCBjZTliYmM0
NDY3Y2IwMjI2YmYzODM3YjYyNzVmODRiNjE4Mjg0NjMzLi4xMjU2MjkxZmQ5NGU2ZWY1OWMzYzRj
NjY4ZGQ2NTBhNmNhMWYwNzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQv
cXRfY2xhc3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfY2xhc3MuaApAQCAt
NDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+UXRDbGFzcygpOwogCiAgICAgdmly
dHVhbCBjb25zdCBjaGFyKiBuYW1lKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBNZXRob2RMaXN0IG1l
dGhvZHNOYW1lZChQcm9wZXJ0eU5hbWUsIEluc3RhbmNlKikgY29uc3Q7CisgICAgdmlydHVhbCBN
ZXRob2QqIG1ldGhvZE5hbWVkKFByb3BlcnR5TmFtZSwgSW5zdGFuY2UqKSBjb25zdDsKICAgICB2
aXJ0dWFsIEZpZWxkKiBmaWVsZE5hbWVkKFByb3BlcnR5TmFtZSwgSW5zdGFuY2UqKSBjb25zdDsK
IAogICAgIHZpcnR1YWwgSlNWYWx1ZSBmYWxsYmFja09iamVjdChFeGVjU3RhdGUqLCBJbnN0YW5j
ZSosIFByb3BlcnR5TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQv
cXRfaW5zdGFuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X2luc3RhbmNlLmNw
cAppbmRleCBhMTNlM2ZmODJmNWM2ODM2MmEwMWM2MGY3YzMzMDA3NmU4YzkzMzJmLi44ZjFiZTZl
MzkwOWEzNzMzOWFhNjhmYjY1MjkzOTE3ZWVlZmE3NDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvcXQvcXRfaW5zdGFuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9xdC9xdF9pbnN0YW5jZS5jcHAKQEAgLTIyMyw4ICsyMjMsOCBAQCBKU1ZhbHVlIFF0SW5zdGFu
Y2U6OmdldE1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUp
CiB7CiAgICAgaWYgKCFnZXRDbGFzcygpKQogICAgICAgICByZXR1cm4ganNOdWxsKCk7Ci0gICAg
TWV0aG9kTGlzdCBtZXRob2RMaXN0ID0gbV9jbGFzcy0+bWV0aG9kc05hbWVkKHByb3BlcnR5TmFt
ZSwgdGhpcyk7Ci0gICAgcmV0dXJuIFJ1bnRpbWVNZXRob2Q6OmNyZWF0ZShleGVjLCBleGVjLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCksIFdlYkNvcmU6OmRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmU8
UnVudGltZU1ldGhvZD4oZXhlYyksIHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCksIG1ldGhvZExp
c3QpOworICAgIE1ldGhvZCogbWV0aG9kID0gbV9jbGFzcy0+bWV0aG9kTmFtZWQocHJvcGVydHlO
YW1lLCB0aGlzKTsKKyAgICByZXR1cm4gUnVudGltZU1ldGhvZDo6Y3JlYXRlKGV4ZWMsIGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKSwgV2ViQ29yZTo6ZGVwcmVjYXRlZEdldERPTVN0cnVjdHVy
ZTxSdW50aW1lTWV0aG9kPihleGVjKSwgcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSwgbWV0aG9k
KTsKIH0KIAogSlNWYWx1ZSBRdEluc3RhbmNlOjppbnZva2VNZXRob2QoRXhlY1N0YXRlKiwgUnVu
dGltZU1ldGhvZCopCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9t
ZXRob2QuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcAppbmRl
eCA5ZmRiNjRkZjczY2UwYzhlYTc0NGNjNzk0ODE2NWMzNjU1YWJiNTc1Li5lMmMwZjM0MDM5OWEx
NDBiNTYwOTMzY2M2YzZkM2I3NjRlYzI4MGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvcnVudGltZV9tZXRob2QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50
aW1lX21ldGhvZC5jcHAKQEAgLTQzLDE4ICs0MywxMyBAQCBBU1NFUlRfQ0xBU1NfRklUU19JTl9D
RUxMKFJ1bnRpbWVNZXRob2QpOwogCiBjb25zdCBDbGFzc0luZm8gUnVudGltZU1ldGhvZDo6c19p
bmZvID0geyAiUnVudGltZU1ldGhvZCIsICZJbnRlcm5hbEZ1bmN0aW9uOjpzX2luZm8sIDAsIDAs
IENSRUFURV9NRVRIT0RfVEFCTEUoUnVudGltZU1ldGhvZCkgfTsKIAotUnVudGltZU1ldGhvZDo6
UnVudGltZU1ldGhvZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgQmluZGluZ3M6Ok1ldGhvZExpc3QmIG0pCi0gICAgLy8gQ2FsbGVycyB3aWxsIG5l
ZWQgdG8gcGFzcyBpbiB0aGUgcmlnaHQgZ2xvYmFsIG9iamVjdCBjb3JyZXNwb25kaW5nIHRvIHRo
aXMgbmF0aXZlIG9iamVjdCAibSIuCitSdW50aW1lTWV0aG9kOjpSdW50aW1lTWV0aG9kKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBNZXRob2QqIG1l
dGhvZCkKKyAgICAvLyBDYWxsZXJzIHdpbGwgbmVlZCB0byBwYXNzIGluIHRoZSByaWdodCBnbG9i
YWwgb2JqZWN0IGNvcnJlc3BvbmRpbmcgdG8gdGhpcyBuYXRpdmUgb2JqZWN0ICJtZXRob2QiLgog
ICAgIDogSW50ZXJuYWxGdW5jdGlvbihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkKLSAgICAsIF9t
ZXRob2RMaXN0KGFkb3B0UHRyKG5ldyBNZXRob2RMaXN0KG0pKSkKKyAgICAsIG1fbWV0aG9kKG1l
dGhvZCkKIHsKIH0KIAotdm9pZCBSdW50aW1lTWV0aG9kOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkK
LXsKLSAgICBzdGF0aWNfY2FzdDxSdW50aW1lTWV0aG9kKj4oY2VsbCktPlJ1bnRpbWVNZXRob2Q6
On5SdW50aW1lTWV0aG9kKCk7Ci19Ci0KIHZvaWQgUnVudGltZU1ldGhvZDo6ZmluaXNoQ3JlYXRp
b24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBTdHJpbmcmIGlkZW50KQogewogICAg
IEJhc2U6OmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEsIGlkZW50KTsKQEAgLTY1LDEzICs2MCw3
IEBAIEpTVmFsdWUgUnVudGltZU1ldGhvZDo6bGVuZ3RoR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFs
dWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICBSdW50aW1lTWV0aG9kKiB0aGlzT2Jq
ID0gc3RhdGljX2Nhc3Q8UnVudGltZU1ldGhvZCo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAKLSAg
ICAvLyBJY2shICBUaGVyZSBtYXkgYmUgbW9yZSB0aGFuIG9uZSBtZXRob2Qgd2l0aCB0aGlzIG5h
bWUuICBBcmJpdHJhcmlseQotICAgIC8vIGp1c3QgcGljayB0aGUgZmlyc3QgbWV0aG9kLiAgVGhl
IGZ1bmRhbWVudGFsIHByb2JsZW0gaGVyZSBpcyB0aGF0IAotICAgIC8vIEphdmFTY3JpcHQgZG9l
c24ndCBoYXZlIHRoZSBub3Rpb24gb2YgbWV0aG9kIG92ZXJsb2FkaW5nIGFuZAotICAgIC8vIEph
dmEgZG9lcy4KLSAgICAvLyBGSVhNRTogYSBiZXR0ZXIgc29sdXRpb24gbWlnaHQgYmUgdG8gZ2l2
ZSB0aGUgbWF4aW11bSBudW1iZXIgb2YgcGFyYW1ldGVycwotICAgIC8vIG9mIGFueSBtZXRob2QK
LSAgICByZXR1cm4ganNOdW1iZXIodGhpc09iai0+X21ldGhvZExpc3QtPmF0KDApLT5udW1QYXJh
bWV0ZXJzKCkpOworICAgIHJldHVybiBqc051bWJlcih0aGlzT2JqLT5tX21ldGhvZC0+bnVtUGFy
YW1ldGVycygpKTsKIH0KIAogYm9vbCBSdW50aW1lTWV0aG9kOjpnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCAmc2xvdCkKQEAgLTEwMiw3ICs5MSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxSdW50aW1lTWV0aG9kKEV4ZWNTdGF0ZSogZXhlYykKIHsK
ICAgICBSdW50aW1lTWV0aG9kKiBtZXRob2QgPSBzdGF0aWNfY2FzdDxSdW50aW1lTWV0aG9kKj4o
ZXhlYy0+Y2FsbGVlKCkpOwogCi0gICAgaWYgKG1ldGhvZC0+bWV0aG9kcygpLT5pc0VtcHR5KCkp
CisgICAgaWYgKCFtZXRob2QtPm1ldGhvZCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogCiAgICAgUmVmUHRyPEluc3RhbmNlPiBpbnN0YW5jZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5oIGIvU291cmNl
L1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmgKaW5kZXggNzQ4MTYwNWQ0NDE1OGM5ODA5
MjAzMjFkMzExMGE0OTQ0ZmJhNWU0YS4uNTY2YjY1Njk5YTk2YjAyNTY4MmQ5NTQ0Mzk3ZWQzOTc4
NzFjMzE0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9k
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmgKQEAgLTM3LDE2
ICszNywxNCBAQCBjbGFzcyBSdW50aW1lTWV0aG9kIDogcHVibGljIEludGVybmFsRnVuY3Rpb24g
ewogcHVibGljOgogICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOwogCi0gICAgc3Rh
dGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKLQotICAgIHN0YXRpYyBSdW50aW1lTWV0aG9kKiBj
cmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBCaW5kaW5nczo6TWV0aG9kTGlz
dCYgbWV0aG9kTGlzdCkKKyAgICBzdGF0aWMgUnVudGltZU1ldGhvZCogY3JlYXRlKEV4ZWNTdGF0
ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIGNvbnN0IFN0cmluZyYgbmFtZSwgQmluZGluZ3M6Ok1ldGhvZCogbWV0aG9kKQogICAgIHsK
LSAgICAgICAgUnVudGltZU1ldGhvZCogbWV0aG9kID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8UnVudGltZU1ldGhvZD4oKmV4ZWMtPmhlYXAoKSkpIFJ1bnRpbWVNZXRob2QoZ2xvYmFsT2Jq
ZWN0LCBzdHJ1Y3R1cmUsIG1ldGhvZExpc3QpOwotICAgICAgICBtZXRob2QtPmZpbmlzaENyZWF0
aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgbmFtZSk7Ci0gICAgICAgIHJldHVybiBtZXRob2Q7Cisg
ICAgICAgIFJ1bnRpbWVNZXRob2QqIHJ1bnRpbWVNZXRob2QgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxSdW50aW1lTWV0aG9kPigqZXhlYy0+aGVhcCgpKSkgUnVudGltZU1ldGhvZChnbG9i
YWxPYmplY3QsIHN0cnVjdHVyZSwgbWV0aG9kKTsKKyAgICAgICAgcnVudGltZU1ldGhvZC0+Zmlu
aXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBuYW1lKTsKKyAgICAgICAgcmV0dXJuIHJ1
bnRpbWVNZXRob2Q7CiAgICAgfQogCi0gICAgQmluZGluZ3M6Ok1ldGhvZExpc3QqIG1ldGhvZHMo
KSBjb25zdCB7IHJldHVybiBfbWV0aG9kTGlzdC5nZXQoKTsgfQorICAgIEJpbmRpbmdzOjpNZXRo
b2QqIG1ldGhvZCgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0aG9kOyB9CiAKICAgICBzdGF0aWMgY29u
c3QgQ2xhc3NJbmZvIHNfaW5mbzsKIApAQCAtNjEsNyArNTksNyBAQCBwdWJsaWM6CiAgICAgfQog
CiBwcm90ZWN0ZWQ6Ci0gICAgUnVudGltZU1ldGhvZChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSosIEJpbmRpbmdzOjpNZXRob2RMaXN0Jik7CisgICAgUnVudGltZU1ldGhvZChKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSosIEJpbmRpbmdzOjpNZXRob2QqKTsKICAgICB2b2lkIGZpbmlzaENy
ZWF0aW9uKEpTR2xvYmFsRGF0YSYsIGNvbnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IElu
dGVybmFsRnVuY3Rpb246OlN0cnVjdHVyZUZsYWdzOwogICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRD
YWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwpAQCAtNzIsNyArNzAsNyBAQCBwcm90ZWN0ZWQ6
CiBwcml2YXRlOgogICAgIHN0YXRpYyBKU1ZhbHVlIGxlbmd0aEdldHRlcihFeGVjU3RhdGUqLCBK
U1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwogCi0gICAgT3duUHRyPEJpbmRpbmdzOjpNZXRob2RMaXN0
PiBfbWV0aG9kTGlzdDsKKyAgICBCaW5kaW5nczo6TWV0aG9kKiBtX21ldGhvZDsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRp
bWVfb2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAK
aW5kZXggYTFhMzBjZTAxNTEyMjgyN2M5OWNmODhkMDFhYTA3MTZlZTczOTRmNS4uODcwYWYxMDkw
ZjgyNDUwNTU4ODEyMmJlOThhMjQ4OWQ1YTcyYjJhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
cnVudGltZV9vYmplY3QuY3BwCkBAIC0xNDAsOCArMTQwLDcgQEAgYm9vbCBSdW50aW1lT2JqZWN0
OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUgKmV4ZWMsIFByb3Bl
cnR5TmEKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIE5vdyBjaGVjayBpZiBhIG1l
dGhvZCB3aXRoIHNwZWNpZmllZCBuYW1lIGV4aXN0cywgaWYgc28gcmV0dXJuIGEgZnVuY3Rpb24g
b2JqZWN0IGZvcgogICAgICAgICAgICAgLy8gdGhhdCBtZXRob2QuCi0gICAgICAgICAgICBNZXRo
b2RMaXN0IG1ldGhvZExpc3QgPSBhQ2xhc3MtPm1ldGhvZHNOYW1lZChwcm9wZXJ0eU5hbWUsIGlu
c3RhbmNlLmdldCgpKTsKLSAgICAgICAgICAgIGlmIChtZXRob2RMaXN0LnNpemUoKSA+IDApIHsK
KyAgICAgICAgICAgIGlmIChhQ2xhc3MtPm1ldGhvZE5hbWVkKHByb3BlcnR5TmFtZSwgaW5zdGFu
Y2UuZ2V0KCkpKSB7CiAgICAgICAgICAgICAgICAgc2xvdC5zZXRDdXN0b20odGhpc09iamVjdCwg
dGhpc09iamVjdC0+bWV0aG9kR2V0dGVyKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
ICAgICBpbnN0YW5jZS0+ZW5kKCk7CkBAIC0xODcsOCArMTg2LDcgQEAgYm9vbCBSdW50aW1lT2Jq
ZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
ICpleGVjLAogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gTm93IGNoZWNrIGlmIGEg
bWV0aG9kIHdpdGggc3BlY2lmaWVkIG5hbWUgZXhpc3RzLCBpZiBzbyByZXR1cm4gYSBmdW5jdGlv
biBvYmplY3QgZm9yCiAgICAgICAgICAgICAvLyB0aGF0IG1ldGhvZC4KLSAgICAgICAgICAgIE1l
dGhvZExpc3QgbWV0aG9kTGlzdCA9IGFDbGFzcy0+bWV0aG9kc05hbWVkKHByb3BlcnR5TmFtZSwg
aW5zdGFuY2UuZ2V0KCkpOwotICAgICAgICAgICAgaWYgKG1ldGhvZExpc3Quc2l6ZSgpID4gMCkg
eworICAgICAgICAgICAgaWYgKGFDbGFzcy0+bWV0aG9kTmFtZWQocHJvcGVydHlOYW1lLCBpbnN0
YW5jZS5nZXQoKSkpIHsKICAgICAgICAgICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAg
ICAgICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlzT2JqZWN0LCBtZXRob2RHZXR0ZXIpOwogICAg
ICAgICAgICAgICAgIGluc3RhbmNlLT5lbmQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1Bs
dWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UuaAppbmRleCA5MmExYWJhNDc0MjM4MTZlYmQ5Mzc4
ZTQ3MTM4Y2YxNmYwNDYyNmUwLi41ZDA4MDFmMjk2MTM3YjU4ZDNjNDAxNWZmNjJlZDA5ZTQ2ZDc1
NGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUlu
c3RhbmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0
YW5jZS5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgflByb3h5SW5zdGFu
Y2UoKTsKIAotICAgIEpTQzo6QmluZGluZ3M6Ok1ldGhvZExpc3QgbWV0aG9kc05hbWVkKEpTQzo6
UHJvcGVydHlOYW1lKTsKKyAgICBKU0M6OkJpbmRpbmdzOjpNZXRob2QqIG1ldGhvZE5hbWVkKEpT
Qzo6UHJvcGVydHlOYW1lKTsKICAgICBKU0M6OkJpbmRpbmdzOjpGaWVsZCogZmllbGROYW1lZChK
U0M6OlByb3BlcnR5TmFtZSk7CiAKICAgICBKU0M6OkpTVmFsdWUgZmllbGRWYWx1ZShKU0M6OkV4
ZWNTdGF0ZSosIGNvbnN0IEpTQzo6QmluZGluZ3M6OkZpZWxkKikgY29uc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tIGIvU291
cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbQppbmRleCA0OWU5
OGZlNmUyMTQ3ZDA3ZWZlMDgwOWIzMjNmNWQxYjYyZGYxYzUzLi4xMzIzZjZlMzY5MTBjOWU0NWU1
OTQ5ZGYxZjgyNTNhZmVlMzZiMTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVn
aW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdp
bnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW0KQEAgLTUwLDEzICs1MCwxMyBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogY2xhc3MgUHJveHlDbGFzcyA6IHB1YmxpYyBKU0M6OkJpbmRpbmdzOjpDbGFz
cyB7CiBwcml2YXRlOgotICAgIHZpcnR1YWwgTWV0aG9kTGlzdCBtZXRob2RzTmFtZWQoUHJvcGVy
dHlOYW1lLCBJbnN0YW5jZSopIGNvbnN0OworICAgIHZpcnR1YWwgTWV0aG9kKiBtZXRob2ROYW1l
ZChQcm9wZXJ0eU5hbWUsIEluc3RhbmNlKikgY29uc3Q7CiAgICAgdmlydHVhbCBGaWVsZCogZmll
bGROYW1lZChQcm9wZXJ0eU5hbWUsIEluc3RhbmNlKikgY29uc3Q7CiB9OwogCi1NZXRob2RMaXN0
IFByb3h5Q2xhc3M6Om1ldGhvZHNOYW1lZChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBJbnN0
YW5jZSogaW5zdGFuY2UpIGNvbnN0CitNZXRob2QqIFByb3h5Q2xhc3M6Om1ldGhvZE5hbWVkKFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEluc3RhbmNlKiBpbnN0YW5jZSkgY29uc3QKIHsKLSAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8UHJveHlJbnN0YW5jZSo+KGluc3RhbmNlKS0+bWV0aG9kc05h
bWVkKHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFByb3h5SW5zdGFuY2Uq
PihpbnN0YW5jZSktPm1ldGhvZE5hbWVkKHByb3BlcnR5TmFtZSk7CiB9CiAKIEZpZWxkKiBQcm94
eUNsYXNzOjpmaWVsZE5hbWVkKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEluc3RhbmNlKiBp
bnN0YW5jZSkgY29uc3QKQEAgLTE4MSwxNCArMTgxLDE0IEBAIGNsYXNzIFByb3h5UnVudGltZU1l
dGhvZCA6IHB1YmxpYyBSdW50aW1lTWV0aG9kIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIFJ1bnRp
bWVNZXRob2QgQmFzZTsKIAotICAgIHN0YXRpYyBQcm94eVJ1bnRpbWVNZXRob2QqIGNyZWF0ZShF
eGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgQmluZGluZ3M6Ok1ldGhvZExpc3QmIGxpc3QpCisgICAgc3RhdGljIFByb3h5UnVu
dGltZU1ldGhvZCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBCaW5kaW5nczo6TWV0aG9kKiBtZXRob2QpCiAg
ICAgewogICAgICAgICAvLyBGSVhNRTogZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZSB1c2VzIHRo
ZSBwcm90b3R5cGUgb2ZmIG9mIHRoZSB3cm9uZyBnbG9iYWwgb2JqZWN0CiAgICAgICAgIC8vIGV4
ZWMtZ2xvYmFsRGF0YSgpIGlzIGFsc28gbGlrZWx5IHdyb25nLgogICAgICAgICBTdHJ1Y3R1cmUq
IGRvbVN0cnVjdHVyZSA9IGRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmU8UHJveHlSdW50aW1lTWV0
aG9kPihleGVjKTsKLSAgICAgICAgUHJveHlSdW50aW1lTWV0aG9kKiBtZXRob2QgPSBuZXcgKGFs
bG9jYXRlQ2VsbDxQcm94eVJ1bnRpbWVNZXRob2Q+KCpleGVjLT5oZWFwKCkpKSBQcm94eVJ1bnRp
bWVNZXRob2QoZ2xvYmFsT2JqZWN0LCBkb21TdHJ1Y3R1cmUsIGxpc3QpOwotICAgICAgICBtZXRo
b2QtPmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgbmFtZSk7Ci0gICAgICAgIHJl
dHVybiBtZXRob2Q7CisgICAgICAgIFByb3h5UnVudGltZU1ldGhvZCogcnVudGltZU1ldGhvZCA9
IG5ldyAoYWxsb2NhdGVDZWxsPFByb3h5UnVudGltZU1ldGhvZD4oKmV4ZWMtPmhlYXAoKSkpIFBy
b3h5UnVudGltZU1ldGhvZChnbG9iYWxPYmplY3QsIGRvbVN0cnVjdHVyZSwgbWV0aG9kKTsKKyAg
ICAgICAgcnVudGltZU1ldGhvZC0+ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBu
YW1lKTsKKyAgICAgICAgcmV0dXJuIHJ1bnRpbWVNZXRob2Q7CiAgICAgfQogCiAgICAgc3RhdGlj
IFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCkBAIC0xOTksOCAr
MTk5LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCiBw
cml2YXRlOgotICAgIFByb3h5UnVudGltZU1ldGhvZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQmluZGluZ3M6Ok1ldGhvZExpc3QmIGxpc3QpCi0g
ICAgICAgIDogUnVudGltZU1ldGhvZChnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgbGlzdCkKKyAg
ICBQcm94eVJ1bnRpbWVNZXRob2QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIEJpbmRpbmdzOjpNZXRob2QqIG1ldGhvZCkKKyAgICAgICAgOiBSdW50
aW1lTWV0aG9kKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBtZXRob2QpCiAgICAgewogICAgIH0K
IApAQCAtMjE1LDggKzIxNSw4IEBAIGNvbnN0IENsYXNzSW5mbyBQcm94eVJ1bnRpbWVNZXRob2Q6
OnNfaW5mbyA9IHsgIlByb3h5UnVudGltZU1ldGhvZCIsICZSdW50aW1lTWV0CiAKIEpTVmFsdWUg
UHJveHlJbnN0YW5jZTo6Z2V0TWV0aG9kKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lKQogewotICAgIE1ldGhvZExpc3QgbWV0aG9kTGlzdCA9IGdldENsYXNz
KCktPm1ldGhvZHNOYW1lZChwcm9wZXJ0eU5hbWUsIHRoaXMpOwotICAgIHJldHVybiBQcm94eVJ1
bnRpbWVNZXRob2Q6OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHBy
b3BlcnR5TmFtZS5wdWJsaWNOYW1lKCksIG1ldGhvZExpc3QpOworICAgIE1ldGhvZCogbWV0aG9k
ID0gZ2V0Q2xhc3MoKS0+bWV0aG9kTmFtZWQocHJvcGVydHlOYW1lLCB0aGlzKTsKKyAgICByZXR1
cm4gUHJveHlSdW50aW1lTWV0aG9kOjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpLCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpLCBtZXRob2QpOwogfQogCiBKU1ZhbHVl
IFByb3h5SW5zdGFuY2U6Omludm9rZU1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6UnVudGlt
ZU1ldGhvZCogcnVudGltZU1ldGhvZCkKQEAgLTIyNCwxMSArMjI0LDggQEAgSlNWYWx1ZSBQcm94
eUluc3RhbmNlOjppbnZva2VNZXRob2QoRXhlY1N0YXRlKiBleGVjLCBKU0M6OlJ1bnRpbWVNZXRo
b2QqIHJ1bnRpbWUKICAgICBpZiAoIWFzT2JqZWN0KHJ1bnRpbWVNZXRob2QpLT5pbmhlcml0cygm
UHJveHlSdW50aW1lTWV0aG9kOjpzX2luZm8pKQogICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihl
eGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkF0dGVtcHQgdG8gaW52b2tlIG5vbi1wbHVnLWlu
IG1ldGhvZCBvbiBwbHVnLWluIG9iamVjdC4iKSk7CiAKLSAgICBjb25zdCBNZXRob2RMaXN0JiBt
ZXRob2RMaXN0ID0gKnJ1bnRpbWVNZXRob2QtPm1ldGhvZHMoKTsKLQotICAgIEFTU0VSVChtZXRo
b2RMaXN0LnNpemUoKSA9PSAxKTsKLQotICAgIFByb3h5TWV0aG9kKiBtZXRob2QgPSBzdGF0aWNf
Y2FzdDxQcm94eU1ldGhvZCo+KG1ldGhvZExpc3RbMF0pOworICAgIFByb3h5TWV0aG9kKiBtZXRo
b2QgPSBzdGF0aWNfY2FzdDxQcm94eU1ldGhvZCo+KHJ1bnRpbWVNZXRob2QtPm1ldGhvZCgpKTsK
KyAgICBBU1NFUlQobWV0aG9kKTsKIAogICAgIHJldHVybiBpbnZva2UoZXhlYywgSW52b2tlLCBt
ZXRob2QtPnNlcnZlcklkZW50aWZpZXIoKSwgQXJnTGlzdChleGVjKSk7CiB9CkBAIC0zNDYsMjIg
KzM0MywyMCBAQCB2b2lkIFByb3h5SW5zdGFuY2U6OmdldFByb3BlcnR5TmFtZXMoRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgbmFtZUFycgogICAgIH0KIH0KIAotTWV0aG9kTGlz
dCBQcm94eUluc3RhbmNlOjptZXRob2RzTmFtZWQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkK
K01ldGhvZCogUHJveHlJbnN0YW5jZTo6bWV0aG9kTmFtZWQoUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSkKIHsKICAgICBTdHJpbmcgbmFtZShwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKICAg
ICBpZiAobmFtZS5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIE1ldGhvZExpc3QoKTsKKyAgICAg
ICAgcmV0dXJuIDA7CiAKICAgICBpZiAoIW1faW5zdGFuY2VQcm94eSkKLSAgICAgICAgcmV0dXJu
IE1ldGhvZExpc3QoKTsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgCiAgICAgLy8gSWYgd2UgYWxy
ZWFkeSBoYXZlIGFuIGVudHJ5IGluIHRoZSBtYXAsIHVzZSBpdC4KICAgICBNZXRob2RNYXA6Oml0
ZXJhdG9yIGV4aXN0aW5nTWFwRW50cnkgPSBtX21ldGhvZHMuZmluZChuYW1lLmltcGwoKSk7CiAg
ICAgaWYgKGV4aXN0aW5nTWFwRW50cnkgIT0gbV9tZXRob2RzLmVuZCgpKSB7Ci0gICAgICAgIE1l
dGhvZExpc3QgbWV0aG9kTGlzdDsKICAgICAgICAgaWYgKGV4aXN0aW5nTWFwRW50cnktPnNlY29u
ZCkKLSAgICAgICAgICAgIG1ldGhvZExpc3QuYXBwZW5kKGV4aXN0aW5nTWFwRW50cnktPnNlY29u
ZCk7Ci0gICAgICAgIHJldHVybiBtZXRob2RMaXN0OworICAgICAgICAgICAgcmV0dXJuIGV4aXN0
aW5nTWFwRW50cnktPnNlY29uZDsKICAgICB9CiAgICAgCiAgICAgdWludDY0X3QgbWV0aG9kTmFt
ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3Q+KF9OUE5fR2V0U3RyaW5nSWRlbnRpZmllcihu
YW1lLmFzY2lpKCkuZGF0YSgpKSk7CkBAIC0zNzAsMjQgKzM2NSwyMSBAQCBNZXRob2RMaXN0IFBy
b3h5SW5zdGFuY2U6Om1ldGhvZHNOYW1lZChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogICAg
IGlmIChfV0tQSE5QT2JqZWN0SGFzTWV0aG9kKG1faW5zdGFuY2VQcm94eS0+aG9zdFByb3h5KCkt
PnBvcnQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2luc3RhbmNlUHJveHkt
PnBsdWdpbklEKCksIHJlcXVlc3RJRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
X29iamVjdElELCBtZXRob2ROYW1lKSAhPSBLRVJOX1NVQ0NFU1MpCi0gICAgICAgIHJldHVybiBN
ZXRob2RMaXN0KCk7CisgICAgICAgIHJldHVybiAwOwogICAgIAogICAgIGF1dG9fcHRyPE5ldHNj
YXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6Qm9vbGVhblJlcGx5PiByZXBseSA9IHdhaXRGb3JSZXBs
eTxOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OkJvb2xlYW5SZXBseT4ocmVxdWVzdElEKTsK
ICAgICBpZiAoIXJlcGx5LmdldCgpKQotICAgICAgICByZXR1cm4gTWV0aG9kTGlzdCgpOworICAg
ICAgICByZXR1cm4gMDsKIAogICAgIGlmICghcmVwbHktPm1fcmVzdWx0ICYmICFtX2luc3RhbmNl
UHJveHktPmhvc3RQcm94eSgpLT5zaG91bGRDYWNoZU1pc3NpbmdQcm9wZXJ0aWVzQW5kTWV0aG9k
cygpKQotICAgICAgICByZXR1cm4gTWV0aG9kTGlzdCgpOworICAgICAgICByZXR1cm4gMDsKIAog
ICAgIC8vIEFkZCBhIG5ldyBlbnRyeSB0byB0aGUgbWFwIHVubGVzcyBhbiBlbnRyeSB3YXMgYWRk
ZWQgd2hpbGUgd2Ugd2VyZSBpbiB3YWl0Rm9yUmVwbHkuCiAgICAgTWV0aG9kTWFwOjpBZGRSZXN1
bHQgbWFwQWRkUmVzdWx0ID0gbV9tZXRob2RzLmFkZChuYW1lLmltcGwoKSwgMCk7CiAgICAgaWYg
KG1hcEFkZFJlc3VsdC5pc05ld0VudHJ5ICYmIHJlcGx5LT5tX3Jlc3VsdCkKICAgICAgICAgbWFw
QWRkUmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgPSBuZXcgUHJveHlNZXRob2QobWV0aG9kTmFtZSk7
CiAKLSAgICBNZXRob2RMaXN0IG1ldGhvZExpc3Q7Ci0gICAgaWYgKG1hcEFkZFJlc3VsdC5pdGVy
YXRvci0+c2Vjb25kKQotICAgICAgICBtZXRob2RMaXN0LmFwcGVuZChtYXBBZGRSZXN1bHQuaXRl
cmF0b3ItPnNlY29uZCk7Ci0gICAgcmV0dXJuIG1ldGhvZExpc3Q7CisgICAgcmV0dXJuIG1hcEFk
ZFJlc3VsdC5pdGVyYXRvci0+c2Vjb25kOwogfQogCiBGaWVsZCogUHJveHlJbnN0YW5jZTo6Zmll
bGROYW1lZChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166348</attachid>
            <date>2012-09-28 19:02:46 -0700</date>
            <delta_ts>2012-09-28 19:06:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97959-20120928190203.patch</filename>
            <type>text/plain</type>
            <size>37229</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5OTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzQ3N2RhY2M0NDQ2OTg3
OTNjOTZkYmQ1MjViNjczODgwYzI2MzVjNS4uZDdlNjQzZmRjYWI1NzMzMzc4ZDQyOTllN2FmODg4
YjI5MjkxNGVhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDU4IEBACiAyMDEyLTA5LTI4ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKKyAgICAgICAgUmVtb3ZlIHN1cHBv
cnQgZm9yIG1ldGhvZCBvdmVybG9hZGluZyBmcm9tIGJyaWRnZSBjb2RlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Nzk1OQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBtZXRob2Qgb3ZlcmxvYWRpbmcg
aGFuZGxpbmcgd2FzIG9ubHkgaW4gcGxhY2UgZm9yIHRoZSAobm93IHJlbW92ZWQpIEphdmEgYnJp
ZGdlLiAKKyAgICAgICAgUmVwbGFjZSBNZXRob2RMaXN0IGV2ZXJ5d2hlcmUgd2l0aCBhIHNpbmds
ZSBNZXRob2QgcG9pbnRlci4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAq
IEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAg
ICogV2ViQ29yZS5neXAvV2ViQ29yZS5neXA6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAg
ICAgICAqIGJyaWRnZS9jL2NfY2xhc3MuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Q0Ns
YXNzOjptZXRob2ROYW1lZCk6CisgICAgICAgICogYnJpZGdlL2MvY19jbGFzcy5oOgorICAgICAg
ICAoQ0NsYXNzKToKKyAgICAgICAgKiBicmlkZ2UvYy9jX2luc3RhbmNlLmNwcDoKKyAgICAgICAg
KEpTQzo6QmluZGluZ3M6OkNSdW50aW1lTWV0aG9kOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpC
aW5kaW5nczo6Q1J1bnRpbWVNZXRob2Q6OkNSdW50aW1lTWV0aG9kKToKKyAgICAgICAgKEpTQzo6
QmluZGluZ3M6OkNJbnN0YW5jZTo6Z2V0TWV0aG9kKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6
OkNJbnN0YW5jZTo6aW52b2tlTWV0aG9kKToKKyAgICAgICAgKiBicmlkZ2UvanNjL0JyaWRnZUpT
Qy5oOgorICAgICAgICAoQmluZGluZ3MpOgorICAgICAgICAoQ2xhc3MpOgorICAgICAgICAqIGJy
aWRnZS9vYmpjL29iamNfY2xhc3MuaDoKKyAgICAgICAgKE9iamNDbGFzcyk6CisgICAgICAgICog
YnJpZGdlL29iamMvb2JqY19jbGFzcy5tbToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamND
bGFzczo6bWV0aG9kTmFtZWQpOgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfaW5zdGFuY2Uu
bW06CisgICAgICAgIChPYmpDUnVudGltZU1ldGhvZDo6Y3JlYXRlKToKKyAgICAgICAgKE9iakNS
dW50aW1lTWV0aG9kOjpPYmpDUnVudGltZU1ldGhvZCk6CisgICAgICAgIChPYmpjSW5zdGFuY2U6
Omludm9rZU1ldGhvZCk6CisgICAgICAgICogYnJpZGdlL3F0L3F0X2NsYXNzLmNwcDoKKyAgICAg
ICAgKEpTQzo6QmluZGluZ3M6OlF0Q2xhc3M6Om1ldGhvZE5hbWVkKToKKyAgICAgICAgKiBicmlk
Z2UvcXQvcXRfY2xhc3MuaDoKKyAgICAgICAgKFF0Q2xhc3MpOgorICAgICAgICAqIGJyaWRnZS9x
dC9xdF9pbnN0YW5jZS5jcHA6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpRdEluc3RhbmNlOjpn
ZXRNZXRob2QpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX21ldGhvZC5jcHA6CisgICAgICAg
IChKU0M6OlJ1bnRpbWVNZXRob2Q6OlJ1bnRpbWVNZXRob2QpOgorICAgICAgICAoSlNDOjpSdW50
aW1lTWV0aG9kOjpsZW5ndGhHZXR0ZXIpOgorICAgICAgICAoSlNDOjpjYWxsUnVudGltZU1ldGhv
ZCk6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmg6CisgICAgICAgIChKU0M6OlJ1
bnRpbWVNZXRob2Q6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OlJ1bnRpbWVNZXRob2Q6Om1ldGhv
ZCk6CisgICAgICAgIChSdW50aW1lTWV0aG9kKToKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9v
YmplY3QuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UnVudGltZU9iamVjdDo6Z2V0T3du
UHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlJ1bnRpbWVPYmplY3Q6Omdl
dE93blByb3BlcnR5RGVzY3JpcHRvcik6CisKKzIwMTItMDktMjggIEFuZGVycyBDYXJsc3NvbiAg
PGFuZGVyc2NhQGFwcGxlLmNvbT4KKwogICAgICAgICBSZW1vdmUgSmF2YSBicmlkZ2UKICAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3OTU0CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZwppbmRleCBlMmM1YWI5NTNiY2Q4Y2M2ZGJmNjEzZWYyZGY5NGFhMmM3ZDZiMzUwLi44
ZmJlMjM3NmE1NTUwY2M1NmU0ZGUzMDFiNmE3YmYwMTE0MjgxZjJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CkBAIC0xLDUgKzEsMjUgQEAKIDIwMTItMDktMjggIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2Nh
QGFwcGxlLmNvbT4KIAorICAgICAgICBSZW1vdmUgc3VwcG9ydCBmb3IgbWV0aG9kIG92ZXJsb2Fk
aW5nIGZyb20gYnJpZGdlIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTk3OTU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVXBkYXRlIGZvciBXZWJDb3JlIGNoYW5nZXM7IE1ldGhvZExpc3QgaGFzIGJl
ZW4gcmVwbGFjZWQgd2l0aCBhIHNpbmdsZSBNZXRob2QqIGV2ZXJ5d2hlcmUuCisKKyAgICAgICAg
KiBQbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLmg6CisgICAgICAgIChQcm94eUluc3RhbmNl
KToKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tOgorICAgICAgICAo
UHJveHlDbGFzcyk6CisgICAgICAgIChXZWJLaXQ6OlByb3h5Q2xhc3M6Om1ldGhvZE5hbWVkKToK
KyAgICAgICAgKFdlYktpdDo6UHJveHlSdW50aW1lTWV0aG9kOjpjcmVhdGUpOgorICAgICAgICAo
V2ViS2l0OjpQcm94eVJ1bnRpbWVNZXRob2Q6OlByb3h5UnVudGltZU1ldGhvZCk6CisgICAgICAg
IChXZWJLaXQ6OlByb3h5SW5zdGFuY2U6OmdldE1ldGhvZCk6CisgICAgICAgIChXZWJLaXQ6OlBy
b3h5SW5zdGFuY2U6Omludm9rZU1ldGhvZCk6CisgICAgICAgIChXZWJLaXQ6OlByb3h5SW5zdGFu
Y2U6Om1ldGhvZE5hbWVkKToKKworMjAxMi0wOS0yOCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJz
Y2FAYXBwbGUuY29tPgorCiAgICAgICAgIFJlbW92ZSBKYXZhIGJyaWRnZQogICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc5NTQKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5hbQppbmRleCA2NmM5ZjQ3M2RkZGJjYjIxMGZhNDgzZTFmYjNhODYzNWY2YjYwZDBjLi4zOTA4
OGYzYzZiMGM0MDdhNTg1ZmYzN2RlMWMxMzcxYTkzMDlmNzJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5h
bQpAQCAtMjcsNyArMjcsNiBAQCB3ZWJjb3JlX2NwcGZsYWdzICs9IFwKIAktSSQoc3JjZGlyKS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcyBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUv
YnJpZGdlIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYyBcCi0JLUkkKHNy
Y2RpcikvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MgXAogCS1JJChzcmNkaXIpL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9qc2MgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL2NzcyBc
CiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvZG9tIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCmluZGV4IDMxNjZkOWExZjk5ZjNjMDcyMGE0NzNkMWRjY2EwMTE2YWQ3MzYyYTYuLjg0
MzI2MWUxYzZhYjQ0Y2NjMWIzODAzMGFkNTU5YzQzYjRhMzEwMGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQpAQCAtMjQ1NiwxNSArMjQ1Niw2IEBAIHdlYmNvcmVfc291cmNlcyArPSBc
CiAJU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY191dGlsaXR5LmggXAogCVNvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9JZGVudGlmaWVyUmVwLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYnJpZGdlL0lkZW50
aWZpZXJSZXAuaCBcCi0JU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9KTklVdGlsaXR5LmggXAot
CVNvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvSmF2YVR5cGUuaCBcCi0JU291cmNlL1dlYkNvcmUv
YnJpZGdlL2puaS9qbmlfanNvYmplY3QuaCBcCi0JU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9q
c2MvSmF2YUFycmF5SlNDLmggXAotCVNvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFD
bGFzc0pTQy5oIFwKLQlTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhRmllbGRKU0Mu
aCBcCi0JU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YUluc3RhbmNlSlNDLmggXAot
CVNvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFNZXRob2RKU0MuY3BwIFwKLQlTb3Vy
Y2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhTWV0aG9kSlNDLmggXAogCVNvdXJjZS9XZWJD
b3JlL2JyaWRnZS9qc2MvQnJpZGdlSlNDLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYnJpZGdlL2pz
Yy9CcmlkZ2VKU0MuaCBcCiAJU291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcCBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IGI4NjUxYmIzMTM0YTUwOTYzOTg3YWI2M2ZhYmI4OTlk
ZDQ3YzA0ZDYuLjRjMDliMGU4YmVmY2UwZmE2Y2I2ZDVmMjdlYTk2Y2M2MTYwNDQwNDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCkBAIC0yMzUwLDggKzIzNTAsNyBAQCBfX1pOM0pTQzEzUnVudGltZU1l
dGhvZDE0ZmluaXNoQ3JlYXRpb25FUk5TXzEySlNHbG9iYWxEYXRhRVJLTjNXVEY2U3RyaW5nRQog
X19aTjNKU0MxM1J1bnRpbWVNZXRob2QxOGdldE93blByb3BlcnR5U2xvdEVQTlNfNkpTQ2VsbEVQ
TlNfOUV4ZWNTdGF0ZUVOU18xMlByb3BlcnR5TmFtZUVSTlNfMTJQcm9wZXJ0eVNsb3RFCiBfX1pO
M0pTQzEzUnVudGltZU1ldGhvZDI0Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRVBOU184SlNPYmpl
Y3RFUE5TXzlFeGVjU3RhdGVFTlNfMTJQcm9wZXJ0eU5hbWVFUk5TXzE4UHJvcGVydHlEZXNjcmlw
dG9yRQogX19aTjNKU0MxM1J1bnRpbWVNZXRob2Q2c19pbmZvRQotX19aTjNKU0MxM1J1bnRpbWVN
ZXRob2Q3ZGVzdHJveUVQTlNfNkpTQ2VsbEUKLV9fWk4zSlNDMTNSdW50aW1lTWV0aG9kQzJFUE5T
XzE0SlNHbG9iYWxPYmplY3RFUE5TXzlTdHJ1Y3R1cmVFUk4zV1RGNlZlY3RvcklQTlNfOEJpbmRp
bmdzNk1ldGhvZEVMbTBFRUUKK19fWk4zSlNDMTNSdW50aW1lTWV0aG9kQzJFUE5TXzE0SlNHbG9i
YWxPYmplY3RFUE5TXzlTdHJ1Y3R1cmVFUE5TXzhCaW5kaW5nczZNZXRob2RFCiBfX1pOM0pTQzhC
aW5kaW5nczEwUm9vdE9iamVjdEQxRXYKIF9fWk4zSlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0
MTFnZXRDYWxsRGF0YUVQTlNfNkpTQ2VsbEVSTlNfOENhbGxEYXRhRQogX19aTjNKU0M4QmluZGlu
Z3MxM1J1bnRpbWVPYmplY3QxMmRlZmF1bHRWYWx1ZUVQS05TXzhKU09iamVjdEVQTlNfOUV4ZWNT
dGF0ZUVOU18yMlByZWZlcnJlZFByaW1pdGl2ZVR5cGVFCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cCBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
L1dlYkNvcmUuZ3lwCmluZGV4IGVkOWVkYWM1MmE0ZDRkNjZjMzk3OTZjOGYyMWIyN2NiYjZhM2Ji
MjIuLmNjYzMyOTcyNmE4NGEyMmQzODRlYWNiNzA2NTY3MWJjNGZhMDdhYWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCkBAIC03Nyw4ICs3Nyw2IEBACiAgICAgICAnLi4v
YmluZGluZ3MvdjgnLAogICAgICAgJy4uL2JpbmRpbmdzL3Y4L2N1c3RvbScsCiAgICAgICAnLi4v
YnJpZGdlJywKLSAgICAgICcuLi9icmlkZ2Uvam5pJywKLSAgICAgICcuLi9icmlkZ2Uvam5pL3Y4
JywKICAgICAgICcuLi9jc3MnLAogICAgICAgJy4uL2RvbScsCiAgICAgICAnLi4vZG9tL2RlZmF1
bHQnLApAQCAtMjAzMSwxMyArMjAyOSw2IEBACiAgICAgICAgIFsnaW5jbHVkZScsICdiaW5kaW5n
cy9nZW5lcmljLyddLAogICAgICAgICBbJ2luY2x1ZGUnLCAnYmluZGluZ3MvdjgvJ10sCiAKLSAg
ICAgICAgIyBFeGNsdWRlIG1vc3Qgb2YgYnJpZGdlLCBleGNlcHQgZm9yIHRoZSBWOC1yZWxhdGVk
IHBhcnRzLgotICAgICAgICBbJ2V4Y2x1ZGUnLCAnYnJpZGdlLyddLAotICAgICAgICBbJ2luY2x1
ZGUnLCAnYnJpZGdlL2puaS8nXSwKLSAgICAgICAgWydleGNsdWRlJywgJ2JyaWRnZS9qbmkvW14v
XStfanNvYmplY3RcXC5tbSQnXSwKLSAgICAgICAgWydleGNsdWRlJywgJ2JyaWRnZS9qbmkvW14v
XStfb2JqY1xcLm1tJCddLAotICAgICAgICBbJ2V4Y2x1ZGUnLCAnYnJpZGdlL2puaS9qc2MvJ10s
Ci0KICAgICAgICAgIyBGSVhNRTogRmlndXJlIG91dCBob3cgdG8gc3RvcmUgdGhlc2UgcGF0dGVy
bnMgaW4gYSB2YXJpYWJsZS4KICAgICAgICAgWydleGNsdWRlJywgJyhjYWlyb3xjYXxjZnxjZ3xj
dXJsfGVmbHxmcmVldHlwZXxnc3RyZWFtZXJ8Z3RrfGxpbnV4fG1hY3xvcGVuZ2x8b3BlbnZnfG9w
ZW50eXBlfHBhbmdvfHBvc2l4fHF0fHNvdXB8c3ZnfHN5bWJpYW58dGV4bWFwfGlwaG9uZXx3aW58
d2luY2V8d3gpLyddLAogICAgICAgICBbJ2V4Y2x1ZGUnLCAnKD88IUNocm9taXVtKShDYWlyb3xD
RnxDR3xDdXJsfEd0a3xKU0N8TGludXh8TWFjfE9wZW5UeXBlfFBPU0lYfFBvc2l4fFF0fFNhZmFy
aXxTb3VwfFN5bWJpYW58V2lufFdpbkNFfFd4KVxcLihjcHB8bW0/KSQnXSwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQppbmRleCBiZGQxNWYxNmExMGZhZTZlYjYxOTMyYmM0ODkxYjYzMTUzNzkwMWVlLi5kYmI1MzU2
YTAxYzk5NWMwOGFkZjQ2ZjBiMDRhZTM1NWNmYTUyNDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC03
Nyw4ICs3Nyw2IEBACiAgICAgICAgICAgICAnYmluZGluZ3Mvb2JqYy9XZWJTY3JpcHRPYmplY3RQ
cml2YXRlLmgnLAogICAgICAgICAgICAgJ2JyaWRnZS9CcmlkZ2UuaCcsCiAgICAgICAgICAgICAn
YnJpZGdlL0lkZW50aWZpZXJSZXAuaCcsCi0gICAgICAgICAgICAnYnJpZGdlL2puaS9KTklVdGls
aXR5LmgnLAotICAgICAgICAgICAgJ2JyaWRnZS9qbmkvam5pX2pzb2JqZWN0LmgnLAogICAgICAg
ICAgICAgJ2JyaWRnZS9qc2MvQnJpZGdlSlNDLmgnLAogICAgICAgICAgICAgJ2JyaWRnZS9ucHJ1
bnRpbWVfaW1wbC5oJywKICAgICAgICAgICAgICdicmlkZ2UvbnBydW50aW1lX2ludGVybmFsLmgn
LApAQCAtMjQ2OSwyNyArMjQ2Nyw2IEBACiAgICAgICAgICAgICAnYnJpZGdlL2MvY19ydW50aW1l
LmgnLAogICAgICAgICAgICAgJ2JyaWRnZS9jL2NfdXRpbGl0eS5jcHAnLAogICAgICAgICAgICAg
J2JyaWRnZS9jL2NfdXRpbGl0eS5oJywKLSAgICAgICAgICAgICdicmlkZ2Uvam5pL0pOSVV0aWxp
dHkuY3BwJywKLSAgICAgICAgICAgICdicmlkZ2Uvam5pL0phdmFUeXBlLmgnLAotICAgICAgICAg
ICAgJ2JyaWRnZS9qbmkvSm9iamVjdFdyYXBwZXIuY3BwJywKLSAgICAgICAgICAgICdicmlkZ2Uv
am5pL0pvYmplY3RXcmFwcGVyLmgnLAotICAgICAgICAgICAgJ2JyaWRnZS9qbmkvam5pX2pzb2Jq
ZWN0Lm1tJywKLSAgICAgICAgICAgICdicmlkZ2Uvam5pL2puaV9vYmpjLm1tJywKLSAgICAgICAg
ICAgICdicmlkZ2Uvam5pL2pzYy9KTklVdGlsaXR5UHJpdmF0ZS5jcHAnLAotICAgICAgICAgICAg
J2JyaWRnZS9qbmkvanNjL0pOSVV0aWxpdHlQcml2YXRlLmgnLAotICAgICAgICAgICAgJ2JyaWRn
ZS9qbmkvanNjL0phdmFBcnJheUpTQy5jcHAnLAotICAgICAgICAgICAgJ2JyaWRnZS9qbmkvanNj
L0phdmFBcnJheUpTQy5oJywKLSAgICAgICAgICAgICdicmlkZ2Uvam5pL2pzYy9KYXZhQ2xhc3NK
U0MuY3BwJywKLSAgICAgICAgICAgICdicmlkZ2Uvam5pL2pzYy9KYXZhQ2xhc3NKU0MuaCcsCi0g
ICAgICAgICAgICAnYnJpZGdlL2puaS9qc2MvSmF2YUZpZWxkSlNDLmNwcCcsCi0gICAgICAgICAg
ICAnYnJpZGdlL2puaS9qc2MvSmF2YUZpZWxkSlNDLmgnLAotICAgICAgICAgICAgJ2JyaWRnZS9q
bmkvanNjL0phdmFJbnN0YW5jZUpTQy5jcHAnLAotICAgICAgICAgICAgJ2JyaWRnZS9qbmkvanNj
L0phdmFJbnN0YW5jZUpTQy5oJywKLSAgICAgICAgICAgICdicmlkZ2Uvam5pL2pzYy9KYXZhTWV0
aG9kSlNDLmNwcCcsCi0gICAgICAgICAgICAnYnJpZGdlL2puaS9qc2MvSmF2YU1ldGhvZEpTQy5o
JywKLSAgICAgICAgICAgICdicmlkZ2Uvam5pL2pzYy9KYXZhUnVudGltZU9iamVjdC5jcHAnLAot
ICAgICAgICAgICAgJ2JyaWRnZS9qbmkvanNjL0phdmFSdW50aW1lT2JqZWN0LmgnLAotICAgICAg
ICAgICAgJ2JyaWRnZS9qbmkvanNjL0phdmFTdHJpbmdKU0MuaCcsCiAgICAgICAgICAgICAnYnJp
ZGdlL2pzYy9CcmlkZ2VKU0MuY3BwJywKICAgICAgICAgICAgICdicmlkZ2UvbnBydW50aW1lLmNw
cCcsCiAgICAgICAgICAgICAnYnJpZGdlL25wcnVudGltZV9wcml2LmgnLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19jbGFzcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2UvYy9jX2NsYXNzLmNwcAppbmRleCAxYTE2NjcwMmM4OWMwMDU3YjQ5OWQ2NTFlNzhiODZjNzAy
N2ViOTc0Li40NjRkODgyZTE1NmNlMWM1MjE5YjEyZTIwNTEyMjYwNjE2MWE2ZWVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2NsYXNzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvYy9jX2NsYXNzLmNwcApAQCAtNzAsMjggKzcwLDIzIEBAIENDbGFzcyogQ0Ns
YXNzOjpjbGFzc0ZvcklzQShOUENsYXNzKiBpc2EpCiAgICAgcmV0dXJuIGFDbGFzczsKIH0KIAot
TWV0aG9kTGlzdCBDQ2xhc3M6Om1ldGhvZHNOYW1lZChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBJbnN0YW5jZSogaW5zdGFuY2UpIGNvbnN0CitNZXRob2QqIENDbGFzczo6bWV0aG9kTmFtZWQo
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSW5zdGFuY2UqIGluc3RhbmNlKSBjb25zdAogewog
ICAgIFN0cmluZyBuYW1lKHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOwogICAgIAotICAgIE1l
dGhvZExpc3QgbWV0aG9kTGlzdDsKLQotICAgIE1ldGhvZCogbWV0aG9kID0gX21ldGhvZHMuZ2V0
KG5hbWUuaW1wbCgpKTsKLSAgICBpZiAobWV0aG9kKSB7Ci0gICAgICAgIG1ldGhvZExpc3QuYXBw
ZW5kKG1ldGhvZCk7Ci0gICAgICAgIHJldHVybiBtZXRob2RMaXN0OwotICAgIH0KKyAgICBpZiAo
TWV0aG9kKiBtZXRob2QgPSBfbWV0aG9kcy5nZXQobmFtZS5pbXBsKCkpKQorICAgICAgICByZXR1
cm4gbWV0aG9kOwogCiAgICAgTlBJZGVudGlmaWVyIGlkZW50ID0gX05QTl9HZXRTdHJpbmdJZGVu
dGlmaWVyKG5hbWUuYXNjaWkoKS5kYXRhKCkpOwogICAgIGNvbnN0IENJbnN0YW5jZSogaW5zdCA9
IHN0YXRpY19jYXN0PGNvbnN0IENJbnN0YW5jZSo+KGluc3RhbmNlKTsKICAgICBOUE9iamVjdCog
b2JqID0gaW5zdC0+Z2V0T2JqZWN0KCk7CiAgICAgaWYgKF9pc2EtPmhhc01ldGhvZCAmJiBfaXNh
LT5oYXNNZXRob2Qob2JqLCBpZGVudCkpewotICAgICAgICBNZXRob2QqIGFNZXRob2QgPSBuZXcg
Q01ldGhvZChpZGVudCk7IC8vIGRlbGV0ZWQgaW4gdGhlIENDbGFzcyBkZXN0cnVjdG9yCi0gICAg
ICAgIF9tZXRob2RzLnNldChuYW1lLmltcGwoKSwgYU1ldGhvZCk7Ci0gICAgICAgIG1ldGhvZExp
c3QuYXBwZW5kKGFNZXRob2QpOworICAgICAgICBNZXRob2QqIG1ldGhvZCA9IG5ldyBDTWV0aG9k
KGlkZW50KTsgLy8gZGVsZXRlZCBpbiB0aGUgQ0NsYXNzIGRlc3RydWN0b3IKKyAgICAgICAgX21l
dGhvZHMuc2V0KG5hbWUuaW1wbCgpLCBtZXRob2QpOworICAgICAgICByZXR1cm4gbWV0aG9kOwog
ICAgIH0KICAgICAKLSAgICByZXR1cm4gbWV0aG9kTGlzdDsKKyAgICByZXR1cm4gMDsKIH0KIAog
RmllbGQqIENDbGFzczo6ZmllbGROYW1lZChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBJbnN0
YW5jZSogaW5zdGFuY2UpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
Yy9jX2NsYXNzLmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2NsYXNzLmgKaW5kZXggYzhj
MmU4OTg1MWQ2NjMxNTNiYWY4ZTRjYjZmNTk3MDE4YzJhMWExYS4uZjY3Mzk5ZmU1OTc3NmU2M2Nj
YjE4NmFjOTJjYmI2NzJmMWRjZjBhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdl
L2MvY19jbGFzcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfY2xhc3MuaApAQCAt
NDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIENDbGFzcyogY2xhc3NGb3JJc0EoTlBD
bGFzcyopOwogICAgIHZpcnR1YWwgfkNDbGFzcygpOwogCi0gICAgdmlydHVhbCBNZXRob2RMaXN0
IG1ldGhvZHNOYW1lZChQcm9wZXJ0eU5hbWUsIEluc3RhbmNlKikgY29uc3Q7CisgICAgdmlydHVh
bCBNZXRob2QqIG1ldGhvZE5hbWVkKFByb3BlcnR5TmFtZSwgSW5zdGFuY2UqKSBjb25zdDsKICAg
ICB2aXJ0dWFsIEZpZWxkKiBmaWVsZE5hbWVkKFByb3BlcnR5TmFtZSwgSW5zdGFuY2UqKSBjb25z
dDsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfaW5z
dGFuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19pbnN0YW5jZS5jcHAKaW5kZXgg
MjAxYzYxZTg2MTFlMzM5M2Q0ZmY5ODFmOGU1N2UyMDE5Y2RjYzM5NC4uNjBiNDMwODU0YTg1YTk1
NGRkNTU5YWI3ZWU4NjliYjQ4YTZhYzcyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL2MvY19pbnN0YW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19pbnN0
YW5jZS5jcHAKQEAgLTExMSwxNCArMTExLDE0IEBAIGNsYXNzIENSdW50aW1lTWV0aG9kIDogcHVi
bGljIFJ1bnRpbWVNZXRob2QgewogcHVibGljOgogICAgIHR5cGVkZWYgUnVudGltZU1ldGhvZCBC
YXNlOwogCi0gICAgc3RhdGljIENSdW50aW1lTWV0aG9kKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVj
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUsIEJpbmRp
bmdzOjpNZXRob2RMaXN0JiBsaXN0KQorICAgIHN0YXRpYyBDUnVudGltZU1ldGhvZCogY3JlYXRl
KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBCaW5kaW5nczo6TWV0aG9kKiBtZXRob2QpCiAgICAgewogICAgICAgICAvLyBG
SVhNRTogZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZSB1c2VzIHRoZSBwcm90b3R5cGUgb2ZmIG9m
IHRoZSB3cm9uZyBnbG9iYWwgb2JqZWN0CiAgICAgICAgIC8vIFdlIG5lZWQgdG8gcGFzcyBpbiB0
aGUgcmlnaHQgZ2xvYmFsIG9iamVjdCBmb3IgImkiLgogICAgICAgICBTdHJ1Y3R1cmUqIGRvbVN0
cnVjdHVyZSA9IFdlYkNvcmU6OmRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmU8Q1J1bnRpbWVNZXRo
b2Q+KGV4ZWMpOwotICAgICAgICBDUnVudGltZU1ldGhvZCogbWV0aG9kID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8Q1J1bnRpbWVNZXRob2Q+KCpleGVjLT5oZWFwKCkpKSBDUnVudGltZU1l
dGhvZChnbG9iYWxPYmplY3QsIGRvbVN0cnVjdHVyZSwgbGlzdCk7Ci0gICAgICAgIG1ldGhvZC0+
ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBuYW1lKTsKLSAgICAgICAgcmV0dXJu
IG1ldGhvZDsKKyAgICAgICAgQ1J1bnRpbWVNZXRob2QqIHJ1bnRpbWVNZXRob2QgPSBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxDUnVudGltZU1ldGhvZD4oKmV4ZWMtPmhlYXAoKSkpIENSdW50
aW1lTWV0aG9kKGdsb2JhbE9iamVjdCwgZG9tU3RydWN0dXJlLCBtZXRob2QpOworICAgICAgICBy
dW50aW1lTWV0aG9kLT5maW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIG5hbWUpOwor
ICAgICAgICByZXR1cm4gcnVudGltZU1ldGhvZDsKICAgICB9CiAKICAgICBzdGF0aWMgU3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKQEAgLTEyOSw4ICsxMjksOCBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKIHByaXZhdGU6
Ci0gICAgQ1J1bnRpbWVNZXRob2QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIEJpbmRpbmdzOjpNZXRob2RMaXN0JiBsaXN0KQotICAgICAgICA6IFJ1
bnRpbWVNZXRob2QoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGxpc3QpCisgICAgQ1J1bnRpbWVN
ZXRob2QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IEJpbmRpbmdzOjpNZXRob2QqIG1ldGhvZCkKKyAgICAgICAgOiBSdW50aW1lTWV0aG9kKGdsb2Jh
bE9iamVjdCwgc3RydWN0dXJlLCBtZXRob2QpCiAgICAgewogICAgIH0KIApAQCAtMTQ2LDggKzE0
Niw4IEBAIGNvbnN0IENsYXNzSW5mbyBDUnVudGltZU1ldGhvZDo6c19pbmZvID0geyAiQ1J1bnRp
bWVNZXRob2QiLCAmUnVudGltZU1ldGhvZDo6c19pCiAKIEpTVmFsdWUgQ0luc3RhbmNlOjpnZXRN
ZXRob2QoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewotICAg
IE1ldGhvZExpc3QgbWV0aG9kTGlzdCA9IGdldENsYXNzKCktPm1ldGhvZHNOYW1lZChwcm9wZXJ0
eU5hbWUsIHRoaXMpOwotICAgIHJldHVybiBDUnVudGltZU1ldGhvZDo6Y3JlYXRlKGV4ZWMsIGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSwgbWV0
aG9kTGlzdCk7CisgICAgTWV0aG9kKiBtZXRob2QgPSBnZXRDbGFzcygpLT5tZXRob2ROYW1lZChw
cm9wZXJ0eU5hbWUsIHRoaXMpOworICAgIHJldHVybiBDUnVudGltZU1ldGhvZDo6Y3JlYXRlKGV4
ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLnB1YmxpY05hbWUo
KSwgbWV0aG9kKTsKIH0KIAogSlNWYWx1ZSBDSW5zdGFuY2U6Omludm9rZU1ldGhvZChFeGVjU3Rh
dGUqIGV4ZWMsIFJ1bnRpbWVNZXRob2QqIHJ1bnRpbWVNZXRob2QpCkBAIC0xNTUsMTMgKzE1NSw4
IEBAIEpTVmFsdWUgQ0luc3RhbmNlOjppbnZva2VNZXRob2QoRXhlY1N0YXRlKiBleGVjLCBSdW50
aW1lTWV0aG9kKiBydW50aW1lTWV0aG9kKQogICAgIGlmICghYXNPYmplY3QocnVudGltZU1ldGhv
ZCktPmluaGVyaXRzKCZDUnVudGltZU1ldGhvZDo6c19pbmZvKSkKICAgICAgICAgcmV0dXJuIHRo
cm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJBdHRlbXB0IHRvIGludm9rZSBu
b24tcGx1Zy1pbiBtZXRob2Qgb24gcGx1Zy1pbiBvYmplY3QuIikpOwogCi0gICAgY29uc3QgTWV0
aG9kTGlzdCYgbWV0aG9kTGlzdCA9ICpydW50aW1lTWV0aG9kLT5tZXRob2RzKCk7Ci0KLSAgICAv
LyBPdmVybG9hZGluZyBtZXRob2RzIGFyZSBub3QgYWxsb3dlZCBieSBOUE9iamVjdHMuICBTaG91
bGQgb25seSBiZSBvbmUKLSAgICAvLyBuYW1lIG1hdGNoIGZvciBhIHBhcnRpY3VsYXIgbWV0aG9k
LgotICAgIEFTU0VSVChtZXRob2RMaXN0LnNpemUoKSA9PSAxKTsKLQotICAgIENNZXRob2QqIG1l
dGhvZCA9IHN0YXRpY19jYXN0PENNZXRob2QqPihtZXRob2RMaXN0WzBdKTsKKyAgICBDTWV0aG9k
KiBtZXRob2QgPSBzdGF0aWNfY2FzdDxDTWV0aG9kKj4ocnVudGltZU1ldGhvZC0+bWV0aG9kKCkp
OworICAgIEFTU0VSVChtZXRob2QpOwogCiAgICAgTlBJZGVudGlmaWVyIGlkZW50ID0gbWV0aG9k
LT5pZGVudGlmaWVyKCk7CiAgICAgaWYgKCFfb2JqZWN0LT5fY2xhc3MtPmhhc01ldGhvZChfb2Jq
ZWN0LCBpZGVudCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvanNjL0JyaWRn
ZUpTQy5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2pzYy9CcmlkZ2VKU0MuaAppbmRleCBjN2Rm
ZTQ4M2FmZjA0ZmYzNDFmZTViMDRkNzU2Y2M2ZjllYWEzZGZjLi4zOWU2Yzk4NmQwZmFkNDFkNGRi
ZTkyYWNiNzczZDM2N2YyMjc3NTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
anNjL0JyaWRnZUpTQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qc2MvQnJpZGdlSlND
LmgKQEAgLTQ4LDggKzQ4LDYgQEAgY2xhc3MgTWV0aG9kOwogY2xhc3MgUm9vdE9iamVjdDsKIGNs
YXNzIFJ1bnRpbWVPYmplY3Q7CiAKLXR5cGVkZWYgVmVjdG9yPE1ldGhvZCo+IE1ldGhvZExpc3Q7
Ci0KIGNsYXNzIEZpZWxkIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIEpTVmFsdWUgdmFsdWVGcm9t
SW5zdGFuY2UoRXhlY1N0YXRlKiwgY29uc3QgSW5zdGFuY2UqKSBjb25zdCA9IDA7CkBAIC02Miw3
ICs2MCw3IEBAIGNsYXNzIENsYXNzIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDbGFzcyk7
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIENsYXNzKCkgeyB9Ci0gICAg
dmlydHVhbCBNZXRob2RMaXN0IG1ldGhvZHNOYW1lZChQcm9wZXJ0eU5hbWUsIEluc3RhbmNlKikg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgTWV0aG9kKiBtZXRob2ROYW1lZChQcm9wZXJ0eU5hbWUs
IEluc3RhbmNlKikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgRmllbGQqIGZpZWxkTmFtZWQoUHJv
cGVydHlOYW1lLCBJbnN0YW5jZSopIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIEpTVmFsdWUgZmFs
bGJhY2tPYmplY3QoRXhlY1N0YXRlKiwgSW5zdGFuY2UqLCBQcm9wZXJ0eU5hbWUpIHsgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7IH0KIApAQCAtMTM2LDcgKzEzNCw2IEBAIHByb3RlY3RlZDoKIAogY29u
c3QgY2hhciogc2lnbmF0dXJlRm9yUGFyYW1ldGVycyhjb25zdCBBcmdMaXN0Jik7CiAKLXR5cGVk
ZWYgSGFzaE1hcDxSZWZQdHI8U3RyaW5nSW1wbD4sIE1ldGhvZExpc3QqPiBNZXRob2RMaXN0TWFw
OwogdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxTdHJpbmdJbXBsPiwgTWV0aG9kKj4gTWV0aG9kTWFw
OwogdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxTdHJpbmdJbXBsPiwgRmllbGQqPiBGaWVsZE1hcDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19jbGFzcy5oIGIv
U291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19jbGFzcy5oCmluZGV4IGMzNThhZTkzYmYx
YTE1MmY0NTQ0YzVjNDM3NDZkMjg5Njg4NTc5M2IuLjgzODM0N2YyNGFjOWZhNDhjZWNiYzM3ZTVj
YzcxOWI3MmU5OWU5NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29i
amNfY2xhc3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2NsYXNzLmgK
QEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIC8vIFJldHVybiB0aGUgY2FjaGVkIE9iakMg
b2YgdGhlIHNwZWNpZmllZCBuYW1lLgogICAgIHN0YXRpYyBPYmpjQ2xhc3MgKmNsYXNzRm9ySXNB
KENsYXNzU3RydWN0UHRyKTsKICAgICAKLSAgICB2aXJ0dWFsIE1ldGhvZExpc3QgbWV0aG9kc05h
bWVkKFByb3BlcnR5TmFtZSwgSW5zdGFuY2UqKSBjb25zdDsKKyAgICB2aXJ0dWFsIE1ldGhvZCog
bWV0aG9kTmFtZWQoUHJvcGVydHlOYW1lLCBJbnN0YW5jZSopIGNvbnN0OwogICAgIHZpcnR1YWwg
RmllbGQgKmZpZWxkTmFtZWQoUHJvcGVydHlOYW1lLCBJbnN0YW5jZSopIGNvbnN0OwogCiAgICAg
dmlydHVhbCBKU1ZhbHVlIGZhbGxiYWNrT2JqZWN0KEV4ZWNTdGF0ZSosIEluc3RhbmNlKiwgUHJv
cGVydHlOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNf
Y2xhc3MubW0gYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2NsYXNzLm1tCmluZGV4
IGJjYmQ3ZTdiYzdmY2NhODMzOGFjMzI0ZTBlNmVmMjdjNTA3NGNkZmMuLmI5MjE5MGI4ZTZjYmZh
NDcwOTQzNzAyMTMyYmVhM2VkZjE2ZjQ0OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9vYmpjL29iamNfY2xhc3MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMv
b2JqY19jbGFzcy5tbQpAQCAtOTUsMjUgKzk1LDI0IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBjb252
ZXJ0SlNNZXRob2ROYW1lVG9PYmpjKGNvbnN0IENTdHJpbmcmIGpzTmFtZSwgSlNOYW1lQ29udmVy
CiAgICAgfQogfQogCi1NZXRob2RMaXN0IE9iamNDbGFzczo6bWV0aG9kc05hbWVkKFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIEluc3RhbmNlKikgY29uc3QKK01ldGhvZCogT2JqY0NsYXNzOjpt
ZXRob2ROYW1lZChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBJbnN0YW5jZSopIGNvbnN0CiB7
CiAgICAgU3RyaW5nIG5hbWUocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CiAgICAgaWYgKG5h
bWUuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBNZXRob2RMaXN0KCk7CisgICAgICAgIHJldHVy
biAwOwogCi0gICAgTWV0aG9kTGlzdCBtZXRob2RMaXN0OwotICAgIGlmIChNZXRob2QqIG1ldGhv
ZCA9IG1fbWV0aG9kQ2FjaGUuZ2V0KG5hbWUuaW1wbCgpKSkgewotICAgICAgICBtZXRob2RMaXN0
LmFwcGVuZChtZXRob2QpOwotICAgICAgICByZXR1cm4gbWV0aG9kTGlzdDsKLSAgICB9CisgICAg
aWYgKE1ldGhvZCogbWV0aG9kID0gbV9tZXRob2RDYWNoZS5nZXQobmFtZS5pbXBsKCkpKQorICAg
ICAgICByZXR1cm4gbWV0aG9kOwogCiAgICAgQ1N0cmluZyBqc05hbWUgPSBuYW1lLmFzY2lpKCk7
CiAgICAgSlNOYW1lQ29udmVyc2lvbkJ1ZmZlciBidWZmZXI7CiAgICAgY29udmVydEpTTWV0aG9k
TmFtZVRvT2JqYyhqc05hbWUsIGJ1ZmZlcik7CiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBt
ZXRob2ROYW1lKEFkb3B0Q0YsIENGU3RyaW5nQ3JlYXRlV2l0aENTdHJpbmcoTlVMTCwgYnVmZmVy
LmRhdGEoKSwga0NGU3RyaW5nRW5jb2RpbmdBU0NJSSkpOwogCisgICAgTWV0aG9kKiBtZXRob2RQ
dHIgPSAwOwogICAgIENsYXNzU3RydWN0UHRyIHRoaXNDbGFzcyA9IF9pc2E7Ci0gICAgd2hpbGUg
KHRoaXNDbGFzcyAmJiBtZXRob2RMaXN0LmlzRW1wdHkoKSkgeworICAgIAorICAgIHdoaWxlICh0
aGlzQ2xhc3MgJiYgIW1ldGhvZFB0cikgewogICAgICAgICB1bnNpZ25lZCBudW1NZXRob2RzSW5D
bGFzcyA9IDA7CiAgICAgICAgIE1ldGhvZFN0cnVjdFB0ciogb2JqY01ldGhvZExpc3QgPSBjbGFz
c19jb3B5TWV0aG9kTGlzdCh0aGlzQ2xhc3MsICZudW1NZXRob2RzSW5DbGFzcyk7CiAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1NZXRob2RzSW5DbGFzczsgaSsrKSB7CkBAIC0x
MzUsNyArMTM0LDcgQEAgTWV0aG9kTGlzdCBPYmpjQ2xhc3M6Om1ldGhvZHNOYW1lZChQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBJbnN0YW5jZSopIGNvbnN0CiAKICAgICAgICAgICAgIGlmICgo
bWFwcGVkTmFtZSAmJiBbbWFwcGVkTmFtZSBpc0VxdWFsOihOU1N0cmluZyopbWV0aG9kTmFtZS5n
ZXQoKV0pIHx8IHN0cmNtcChvYmpjTWV0aG9kU2VsZWN0b3JOYW1lLCBidWZmZXIuZGF0YSgpKSA9
PSAwKSB7CiAgICAgICAgICAgICAgICAgT3duUHRyPE1ldGhvZD4gbWV0aG9kID0gYWRvcHRQdHIo
bmV3IE9iamNNZXRob2QodGhpc0NsYXNzLCBvYmpjTWV0aG9kU2VsZWN0b3IpKTsKLSAgICAgICAg
ICAgICAgICBtZXRob2RMaXN0LmFwcGVuZChtZXRob2QuZ2V0KCkpOworICAgICAgICAgICAgICAg
IG1ldGhvZFB0ciA9IG1ldGhvZC5nZXQoKTsKICAgICAgICAgICAgICAgICBtX21ldGhvZENhY2hl
LmFkZChuYW1lLmltcGwoKSwgbWV0aG9kLnJlbGVhc2UoKSk7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICB9CkBAIC0xNDQsNyArMTQzLDcgQEAgTWV0aG9kTGlzdCBPYmpjQ2xh
c3M6Om1ldGhvZHNOYW1lZChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBJbnN0YW5jZSopIGNv
bnN0CiAgICAgICAgIGZyZWUob2JqY01ldGhvZExpc3QpOwogICAgIH0KIAotICAgIHJldHVybiBt
ZXRob2RMaXN0OworICAgIHJldHVybiBtZXRob2RQdHI7CiB9CiAKIEZpZWxkKiBPYmpjQ2xhc3M6
OmZpZWxkTmFtZWQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSW5zdGFuY2UqIGluc3RhbmNl
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0
YW5jZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0KaW5k
ZXggNGY1YmVjYWFkYmNhMTc1MThjYzY4MDRlYWRhNWI5MTU1ODM0ODQ0Ny4uMmIzNjI0ODhhNWJi
NWVhNDNmZDM4ZTJiODFlNmIxNWU2NWNmMzQ2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
b2JqYy9vYmpjX2luc3RhbmNlLm1tCkBAIC0xODEsMTQgKzE4MSwxNCBAQCBib29sIE9iamNJbnN0
YW5jZTo6c3VwcG9ydHNJbnZva2VEZWZhdWx0TWV0aG9kKCkgY29uc3QKIAogY2xhc3MgT2JqQ1J1
bnRpbWVNZXRob2QgOiBwdWJsaWMgUnVudGltZU1ldGhvZCB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IE9iakNSdW50aW1lTWV0aG9kKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUsIEJpbmRpbmdzOjpNZXRob2RMaXN0
JiBsaXN0KQorICAgIHN0YXRpYyBPYmpDUnVudGltZU1ldGhvZCogY3JlYXRlKEV4ZWNTdGF0ZSog
ZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBC
aW5kaW5nczo6TWV0aG9kKiBtZXRob2QpCiAgICAgewogICAgICAgICAvLyBGSVhNRTogZGVwcmVj
YXRlZEdldERPTVN0cnVjdHVyZSB1c2VzIHRoZSBwcm90b3R5cGUgb2ZmIG9mIHRoZSB3cm9uZyBn
bG9iYWwgb2JqZWN0CiAgICAgICAgIC8vIFdlIG5lZWQgdG8gcGFzcyBpbiB0aGUgcmlnaHQgZ2xv
YmFsIG9iamVjdCBmb3IgImkiLgogICAgICAgICBTdHJ1Y3R1cmUqIGRvbVN0cnVjdHVyZSA9IFdl
YkNvcmU6OmRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmU8T2JqQ1J1bnRpbWVNZXRob2Q+KGV4ZWMp
OwotICAgICAgICBPYmpDUnVudGltZU1ldGhvZCogbWV0aG9kID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8T2JqQ1J1bnRpbWVNZXRob2Q+KCpleGVjLT5oZWFwKCkpKSBPYmpDUnVudGltZU1l
dGhvZChnbG9iYWxPYmplY3QsIGRvbVN0cnVjdHVyZSwgbGlzdCk7Ci0gICAgICAgIG1ldGhvZC0+
ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBuYW1lKTsKLSAgICAgICAgcmV0dXJu
IG1ldGhvZDsKKyAgICAgICAgT2JqQ1J1bnRpbWVNZXRob2QqIHJ1bnRpbWVNZXRob2QgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxPYmpDUnVudGltZU1ldGhvZD4oKmV4ZWMtPmhlYXAoKSkp
IE9iakNSdW50aW1lTWV0aG9kKGdsb2JhbE9iamVjdCwgZG9tU3RydWN0dXJlLCBtZXRob2QpOwor
ICAgICAgICBydW50aW1lTWV0aG9kLT5maW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCks
IG5hbWUpOworICAgICAgICByZXR1cm4gcnVudGltZU1ldGhvZDsKICAgICB9CiAKICAgICBzdGF0
aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQpAQCAt
MjAxLDggKzIwMSw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdHlwZWRlZiBSdW50aW1lTWV0
aG9kIEJhc2U7CiAKLSAgICBPYmpDUnVudGltZU1ldGhvZChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQmluZGluZ3M6Ok1ldGhvZExpc3QmIGxpc3Qp
Ci0gICAgICAgIDogUnVudGltZU1ldGhvZChnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgbGlzdCkK
KyAgICBPYmpDUnVudGltZU1ldGhvZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgQmluZGluZ3M6Ok1ldGhvZCogbWV0aG9kKQorICAgICAgICA6IFJ1
bnRpbWVNZXRob2QoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIG1ldGhvZCkKICAgICB7CiAgICAg
fQogCkBAIC0yMTcsOCArMjE3LDggQEAgY29uc3QgQ2xhc3NJbmZvIE9iakNSdW50aW1lTWV0aG9k
OjpzX2luZm8gPSB7ICJPYmpDUnVudGltZU1ldGhvZCIsICZSdW50aW1lTWV0aG8KIAogSlNWYWx1
ZSBPYmpjSW5zdGFuY2U6OmdldE1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpCiB7Ci0gICAgTWV0aG9kTGlzdCBtZXRob2RMaXN0ID0gZ2V0Q2xhc3MoKS0+
bWV0aG9kc05hbWVkKHByb3BlcnR5TmFtZSwgdGhpcyk7Ci0gICAgcmV0dXJuIE9iakNSdW50aW1l
TWV0aG9kOjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0
eU5hbWUucHVibGljTmFtZSgpLCBtZXRob2RMaXN0KTsKKyAgICBNZXRob2QqIG1ldGhvZCA9IGdl
dENsYXNzKCktPm1ldGhvZE5hbWVkKHByb3BlcnR5TmFtZSwgdGhpcyk7CisgICAgcmV0dXJuIE9i
akNSdW50aW1lTWV0aG9kOjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
LCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpLCBtZXRob2QpOwogfQogCiBKU1ZhbHVlIE9iamNJ
bnN0YW5jZTo6aW52b2tlTWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgUnVudGltZU1ldGhvZCogcnVu
dGltZU1ldGhvZCkKQEAgLTIyNiwxMyArMjI2LDEwIEBAIEpTVmFsdWUgT2JqY0luc3RhbmNlOjpp
bnZva2VNZXRob2QoRXhlY1N0YXRlKiBleGVjLCBSdW50aW1lTWV0aG9kKiBydW50aW1lTWV0aG9k
CiAgICAgaWYgKCFhc09iamVjdChydW50aW1lTWV0aG9kKS0+aW5oZXJpdHMoJk9iakNSdW50aW1l
TWV0aG9kOjpzX2luZm8pKQogICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBjcmVhdGVU
eXBlRXJyb3IoZXhlYywgIkF0dGVtcHQgdG8gaW52b2tlIG5vbi1wbHVnLWluIG1ldGhvZCBvbiBw
bHVnLWluIG9iamVjdC4iKSk7CiAKLSAgICBjb25zdCBNZXRob2RMaXN0JiBtZXRob2RMaXN0ID0g
KnJ1bnRpbWVNZXRob2QtPm1ldGhvZHMoKTsKKyAgICBPYmpjTWV0aG9kICptZXRob2QgPSBzdGF0
aWNfY2FzdDxPYmpjTWV0aG9kKj4ocnVudGltZU1ldGhvZC0+bWV0aG9kKCkpOworICAgIEFTU0VS
VChtZXRob2QpOwogCi0gICAgLy8gT3ZlcmxvYWRpbmcgbWV0aG9kcyBpcyBub3QgYWxsb3dlZCBp
biBPYmplY3RpdmVDLiAgU2hvdWxkIG9ubHkgYmUgb25lCi0gICAgLy8gbmFtZSBtYXRjaCBmb3Ig
YSBwYXJ0aWN1bGFyIG1ldGhvZC4KLSAgICBBU1NFUlQobWV0aG9kTGlzdC5zaXplKCkgPT0gMSk7
Ci0KLSAgICByZXR1cm4gaW52b2tlT2JqY01ldGhvZChleGVjLCBzdGF0aWNfY2FzdDxPYmpjTWV0
aG9kKj4obWV0aG9kTGlzdFswXSkpOworICAgIHJldHVybiBpbnZva2VPYmpjTWV0aG9kKGV4ZWMs
IG1ldGhvZCk7CiB9CiAKIEpTVmFsdWUgT2JqY0luc3RhbmNlOjppbnZva2VPYmpjTWV0aG9kKEV4
ZWNTdGF0ZSogZXhlYywgT2JqY01ldGhvZCogbWV0aG9kKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYnJpZGdlL3F0L3F0X2NsYXNzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9x
dF9jbGFzcy5jcHAKaW5kZXggNzYxNzg3MWYzZjNlMGVlM2MxYTg3ZDk4NTJjMDM5ODY0NTA5OWNl
Ni4uZGEyNWQ5NWE2N2RkNTFmY2NmMTg3MzU0ZmI0ZmI4MGM1NDUyZGRiNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X2NsYXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvcXQvcXRfY2xhc3MuY3BwCkBAIC0xMjIsOSArMTIyLDkgQEAgSlNWYWx1ZSBRdENs
YXNzOjpmYWxsYmFja09iamVjdChFeGVjU3RhdGUqIGV4ZWMsIEluc3RhbmNlKiBpbnN0LCBQcm9w
ZXJ0eU5hbWUgaWQKIH0KIAogLy8gVGhpcyBmdW5jdGlvbmFsaXR5IGlzIGhhbmRsZWQgYnkgdGhl
IGZhbGxiYWNrIGNhc2UgYWJvdmUuLi4KLU1ldGhvZExpc3QgUXRDbGFzczo6bWV0aG9kc05hbWVk
KFByb3BlcnR5TmFtZSwgSW5zdGFuY2UqKSBjb25zdAorTWV0aG9kKiBRdENsYXNzOjptZXRob2RO
YW1lZChQcm9wZXJ0eU5hbWUsIEluc3RhbmNlKikgY29uc3QKIHsKLSAgICByZXR1cm4gTWV0aG9k
TGlzdCgpOworICAgIHJldHVybiAwOwogfQogCiAvLyAjIyMgd2UgbWF5IGVuZCB1cCB3aXRoIGEg
ZGlmZmVyZW50IHNlYXJjaCBvcmRlciB0aGFuIFF0U2NyaXB0IGJ5IG5vdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X2NsYXNzLmggYi9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2UvcXQvcXRfY2xhc3MuaAppbmRleCBjZTliYmM0NDY3Y2IwMjI2YmYzODM3YjYyNzVmODRiNjE4
Mjg0NjMzLi4xMjU2MjkxZmQ5NGU2ZWY1OWMzYzRjNjY4ZGQ2NTBhNmNhMWYwNzQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfY2xhc3MuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvcXQvcXRfY2xhc3MuaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB+UXRDbGFzcygpOwogCiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiBuYW1lKCkgY29u
c3Q7Ci0gICAgdmlydHVhbCBNZXRob2RMaXN0IG1ldGhvZHNOYW1lZChQcm9wZXJ0eU5hbWUsIElu
c3RhbmNlKikgY29uc3Q7CisgICAgdmlydHVhbCBNZXRob2QqIG1ldGhvZE5hbWVkKFByb3BlcnR5
TmFtZSwgSW5zdGFuY2UqKSBjb25zdDsKICAgICB2aXJ0dWFsIEZpZWxkKiBmaWVsZE5hbWVkKFBy
b3BlcnR5TmFtZSwgSW5zdGFuY2UqKSBjb25zdDsKIAogICAgIHZpcnR1YWwgSlNWYWx1ZSBmYWxs
YmFja09iamVjdChFeGVjU3RhdGUqLCBJbnN0YW5jZSosIFByb3BlcnR5TmFtZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfaW5zdGFuY2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvYnJpZGdlL3F0L3F0X2luc3RhbmNlLmNwcAppbmRleCBhMTNlM2ZmODJmNWM2ODM2MmEw
MWM2MGY3YzMzMDA3NmU4YzkzMzJmLi44ZjFiZTZlMzkwOWEzNzMzOWFhNjhmYjY1MjkzOTE3ZWVl
ZmE3NDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfaW5zdGFuY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9pbnN0YW5jZS5jcHAKQEAgLTIy
Myw4ICsyMjMsOCBAQCBKU1ZhbHVlIFF0SW5zdGFuY2U6OmdldE1ldGhvZChFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgaWYgKCFnZXRDbGFzcygpKQog
ICAgICAgICByZXR1cm4ganNOdWxsKCk7Ci0gICAgTWV0aG9kTGlzdCBtZXRob2RMaXN0ID0gbV9j
bGFzcy0+bWV0aG9kc05hbWVkKHByb3BlcnR5TmFtZSwgdGhpcyk7Ci0gICAgcmV0dXJuIFJ1bnRp
bWVNZXRob2Q6OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIFdlYkNv
cmU6OmRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmU8UnVudGltZU1ldGhvZD4oZXhlYyksIHByb3Bl
cnR5TmFtZS5wdWJsaWNOYW1lKCksIG1ldGhvZExpc3QpOworICAgIE1ldGhvZCogbWV0aG9kID0g
bV9jbGFzcy0+bWV0aG9kTmFtZWQocHJvcGVydHlOYW1lLCB0aGlzKTsKKyAgICByZXR1cm4gUnVu
dGltZU1ldGhvZDo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgV2Vi
Q29yZTo6ZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZTxSdW50aW1lTWV0aG9kPihleGVjKSwgcHJv
cGVydHlOYW1lLnB1YmxpY05hbWUoKSwgbWV0aG9kKTsKIH0KIAogSlNWYWx1ZSBRdEluc3RhbmNl
OjppbnZva2VNZXRob2QoRXhlY1N0YXRlKiwgUnVudGltZU1ldGhvZCopCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuY3BwIGIvU291cmNlL1dlYkNvcmUv
YnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcAppbmRleCA5ZmRiNjRkZjczY2UwYzhlYTc0NGNjNzk0
ODE2NWMzNjU1YWJiNTc1Li5lMmMwZjM0MDM5OWExNDBiNTYwOTMzY2M2YzZkM2I3NjRlYzI4MGY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5jcHAKQEAgLTQzLDE4ICs0
MywxMyBAQCBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKFJ1bnRpbWVNZXRob2QpOwogCiBjb25z
dCBDbGFzc0luZm8gUnVudGltZU1ldGhvZDo6c19pbmZvID0geyAiUnVudGltZU1ldGhvZCIsICZJ
bnRlcm5hbEZ1bmN0aW9uOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoUnVudGlt
ZU1ldGhvZCkgfTsKIAotUnVudGltZU1ldGhvZDo6UnVudGltZU1ldGhvZChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQmluZGluZ3M6Ok1ldGhvZExp
c3QmIG0pCi0gICAgLy8gQ2FsbGVycyB3aWxsIG5lZWQgdG8gcGFzcyBpbiB0aGUgcmlnaHQgZ2xv
YmFsIG9iamVjdCBjb3JyZXNwb25kaW5nIHRvIHRoaXMgbmF0aXZlIG9iamVjdCAibSIuCitSdW50
aW1lTWV0aG9kOjpSdW50aW1lTWV0aG9kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBNZXRob2QqIG1ldGhvZCkKKyAgICAvLyBDYWxsZXJzIHdpbGwg
bmVlZCB0byBwYXNzIGluIHRoZSByaWdodCBnbG9iYWwgb2JqZWN0IGNvcnJlc3BvbmRpbmcgdG8g
dGhpcyBuYXRpdmUgb2JqZWN0ICJtZXRob2QiLgogICAgIDogSW50ZXJuYWxGdW5jdGlvbihnbG9i
YWxPYmplY3QsIHN0cnVjdHVyZSkKLSAgICAsIF9tZXRob2RMaXN0KGFkb3B0UHRyKG5ldyBNZXRo
b2RMaXN0KG0pKSkKKyAgICAsIG1fbWV0aG9kKG1ldGhvZCkKIHsKIH0KIAotdm9pZCBSdW50aW1l
TWV0aG9kOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKLXsKLSAgICBzdGF0aWNfY2FzdDxSdW50aW1l
TWV0aG9kKj4oY2VsbCktPlJ1bnRpbWVNZXRob2Q6On5SdW50aW1lTWV0aG9kKCk7Ci19Ci0KIHZv
aWQgUnVudGltZU1ldGhvZDo6ZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBjb25zdCBTdHJpbmcmIGlkZW50KQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGdsb2Jh
bERhdGEsIGlkZW50KTsKQEAgLTY1LDEzICs2MCw3IEBAIEpTVmFsdWUgUnVudGltZU1ldGhvZDo6
bGVuZ3RoR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkK
IHsKICAgICBSdW50aW1lTWV0aG9kKiB0aGlzT2JqID0gc3RhdGljX2Nhc3Q8UnVudGltZU1ldGhv
ZCo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAKLSAgICAvLyBJY2shICBUaGVyZSBtYXkgYmUgbW9y
ZSB0aGFuIG9uZSBtZXRob2Qgd2l0aCB0aGlzIG5hbWUuICBBcmJpdHJhcmlseQotICAgIC8vIGp1
c3QgcGljayB0aGUgZmlyc3QgbWV0aG9kLiAgVGhlIGZ1bmRhbWVudGFsIHByb2JsZW0gaGVyZSBp
cyB0aGF0IAotICAgIC8vIEphdmFTY3JpcHQgZG9lc24ndCBoYXZlIHRoZSBub3Rpb24gb2YgbWV0
aG9kIG92ZXJsb2FkaW5nIGFuZAotICAgIC8vIEphdmEgZG9lcy4KLSAgICAvLyBGSVhNRTogYSBi
ZXR0ZXIgc29sdXRpb24gbWlnaHQgYmUgdG8gZ2l2ZSB0aGUgbWF4aW11bSBudW1iZXIgb2YgcGFy
YW1ldGVycwotICAgIC8vIG9mIGFueSBtZXRob2QKLSAgICByZXR1cm4ganNOdW1iZXIodGhpc09i
ai0+X21ldGhvZExpc3QtPmF0KDApLT5udW1QYXJhbWV0ZXJzKCkpOworICAgIHJldHVybiBqc051
bWJlcih0aGlzT2JqLT5tX21ldGhvZC0+bnVtUGFyYW1ldGVycygpKTsKIH0KIAogYm9vbCBSdW50
aW1lTWV0aG9kOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCAmc2xvdCkKQEAgLTEw
Miw3ICs5MSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxSdW50
aW1lTWV0aG9kKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBSdW50aW1lTWV0aG9kKiBtZXRob2Qg
PSBzdGF0aWNfY2FzdDxSdW50aW1lTWV0aG9kKj4oZXhlYy0+Y2FsbGVlKCkpOwogCi0gICAgaWYg
KG1ldGhvZC0+bWV0aG9kcygpLT5pc0VtcHR5KCkpCisgICAgaWYgKCFtZXRob2QtPm1ldGhvZCgp
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCiAgICAg
UmVmUHRyPEluc3RhbmNlPiBpbnN0YW5jZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9ydW50aW1lX21ldGhvZC5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0
aG9kLmgKaW5kZXggNzQ4MTYwNWQ0NDE1OGM5ODA5MjAzMjFkMzExMGE0OTQ0ZmJhNWU0YS4uNTY2
YjY1Njk5YTk2YjAyNTY4MmQ5NTQ0Mzk3ZWQzOTc4NzFjMzE0MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL3J1bnRpbWVfbWV0aG9kLmgKQEAgLTM3LDE2ICszNywxNCBAQCBjbGFzcyBSdW50aW1lTWV0
aG9kIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewogcHVibGljOgogICAgIHR5cGVkZWYgSW50
ZXJuYWxGdW5jdGlvbiBCYXNlOwogCi0gICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsK
LQotICAgIHN0YXRpYyBSdW50aW1lTWV0aG9kKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBCaW5kaW5nczo6TWV0aG9kTGlzdCYgbWV0aG9kTGlzdCkKKyAgICBzdGF0aWMg
UnVudGltZU1ldGhvZCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFN0cmluZyYgbmFtZSwgQmlu
ZGluZ3M6Ok1ldGhvZCogbWV0aG9kKQogICAgIHsKLSAgICAgICAgUnVudGltZU1ldGhvZCogbWV0
aG9kID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8UnVudGltZU1ldGhvZD4oKmV4ZWMtPmhl
YXAoKSkpIFJ1bnRpbWVNZXRob2QoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIG1ldGhvZExpc3Qp
OwotICAgICAgICBtZXRob2QtPmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgbmFt
ZSk7Ci0gICAgICAgIHJldHVybiBtZXRob2Q7CisgICAgICAgIFJ1bnRpbWVNZXRob2QqIHJ1bnRp
bWVNZXRob2QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxSdW50aW1lTWV0aG9kPigqZXhl
Yy0+aGVhcCgpKSkgUnVudGltZU1ldGhvZChnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgbWV0aG9k
KTsKKyAgICAgICAgcnVudGltZU1ldGhvZC0+ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0
YSgpLCBuYW1lKTsKKyAgICAgICAgcmV0dXJuIHJ1bnRpbWVNZXRob2Q7CiAgICAgfQogCi0gICAg
QmluZGluZ3M6Ok1ldGhvZExpc3QqIG1ldGhvZHMoKSBjb25zdCB7IHJldHVybiBfbWV0aG9kTGlz
dC5nZXQoKTsgfQorICAgIEJpbmRpbmdzOjpNZXRob2QqIG1ldGhvZCgpIGNvbnN0IHsgcmV0dXJu
IG1fbWV0aG9kOyB9CiAKICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIApAQCAt
NjEsNyArNTksNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgUnVudGltZU1l
dGhvZChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEJpbmRpbmdzOjpNZXRob2RMaXN0Jik7
CisgICAgUnVudGltZU1ldGhvZChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEJpbmRpbmdz
OjpNZXRob2QqKTsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYsIGNvbnN0
IFN0cmluZyYpOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92
ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEludGVybmFsRnVuY3Rpb246OlN0cnVjdHVyZUZs
YWdzOwogICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYp
OwpAQCAtNzIsNyArNzAsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIHN0YXRpYyBKU1Zh
bHVlIGxlbmd0aEdldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwogCi0g
ICAgT3duUHRyPEJpbmRpbmdzOjpNZXRob2RMaXN0PiBfbWV0aG9kTGlzdDsKKyAgICBCaW5kaW5n
czo6TWV0aG9kKiBtX21ldGhvZDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAKaW5kZXggYTFhMzBjZTAxNTEyMjgyN2M5OWNm
ODhkMDFhYTA3MTZlZTczOTRmNS4uODcwYWYxMDkwZjgyNDUwNTU4ODEyMmJlOThhMjQ4OWQ1YTcy
YjJhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwCkBAIC0xNDAs
OCArMTQwLDcgQEAgYm9vbCBSdW50aW1lT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxs
KiBjZWxsLCBFeGVjU3RhdGUgKmV4ZWMsIFByb3BlcnR5TmEKICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgIC8vIE5vdyBjaGVjayBpZiBhIG1ldGhvZCB3aXRoIHNwZWNpZmllZCBuYW1lIGV4
aXN0cywgaWYgc28gcmV0dXJuIGEgZnVuY3Rpb24gb2JqZWN0IGZvcgogICAgICAgICAgICAgLy8g
dGhhdCBtZXRob2QuCi0gICAgICAgICAgICBNZXRob2RMaXN0IG1ldGhvZExpc3QgPSBhQ2xhc3Mt
Pm1ldGhvZHNOYW1lZChwcm9wZXJ0eU5hbWUsIGluc3RhbmNlLmdldCgpKTsKLSAgICAgICAgICAg
IGlmIChtZXRob2RMaXN0LnNpemUoKSA+IDApIHsKKyAgICAgICAgICAgIGlmIChhQ2xhc3MtPm1l
dGhvZE5hbWVkKHByb3BlcnR5TmFtZSwgaW5zdGFuY2UuZ2V0KCkpKSB7CiAgICAgICAgICAgICAg
ICAgc2xvdC5zZXRDdXN0b20odGhpc09iamVjdCwgdGhpc09iamVjdC0+bWV0aG9kR2V0dGVyKTsK
ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpbnN0YW5jZS0+ZW5kKCk7CkBAIC0x
ODcsOCArMTg2LDcgQEAgYm9vbCBSdW50aW1lT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlICpleGVjLAogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgLy8gTm93IGNoZWNrIGlmIGEgbWV0aG9kIHdpdGggc3BlY2lmaWVkIG5hbWUg
ZXhpc3RzLCBpZiBzbyByZXR1cm4gYSBmdW5jdGlvbiBvYmplY3QgZm9yCiAgICAgICAgICAgICAv
LyB0aGF0IG1ldGhvZC4KLSAgICAgICAgICAgIE1ldGhvZExpc3QgbWV0aG9kTGlzdCA9IGFDbGFz
cy0+bWV0aG9kc05hbWVkKHByb3BlcnR5TmFtZSwgaW5zdGFuY2UuZ2V0KCkpOwotICAgICAgICAg
ICAgaWYgKG1ldGhvZExpc3Quc2l6ZSgpID4gMCkgeworICAgICAgICAgICAgaWYgKGFDbGFzcy0+
bWV0aG9kTmFtZWQocHJvcGVydHlOYW1lLCBpbnN0YW5jZS5nZXQoKSkpIHsKICAgICAgICAgICAg
ICAgICBQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgICAgICAgICBzbG90LnNldEN1c3RvbSh0
aGlzT2JqZWN0LCBtZXRob2RHZXR0ZXIpOwogICAgICAgICAgICAgICAgIGluc3RhbmNlLT5lbmQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5z
dGFuY2UuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2Uu
aAppbmRleCA5MmExYWJhNDc0MjM4MTZlYmQ5Mzc4ZTQ3MTM4Y2YxNmYwNDYyNmUwLi41ZDA4MDFm
Mjk2MTM3YjU4ZDNjNDAxNWZmNjJlZDA5ZTQ2ZDc1NGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLmgKKysrIGIvU291cmNlL1dlYktp
dC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5oCkBAIC00Niw3ICs0Niw3IEBAIHB1
YmxpYzoKICAgICB9CiAgICAgflByb3h5SW5zdGFuY2UoKTsKIAotICAgIEpTQzo6QmluZGluZ3M6
Ok1ldGhvZExpc3QgbWV0aG9kc05hbWVkKEpTQzo6UHJvcGVydHlOYW1lKTsKKyAgICBKU0M6OkJp
bmRpbmdzOjpNZXRob2QqIG1ldGhvZE5hbWVkKEpTQzo6UHJvcGVydHlOYW1lKTsKICAgICBKU0M6
OkJpbmRpbmdzOjpGaWVsZCogZmllbGROYW1lZChKU0M6OlByb3BlcnR5TmFtZSk7CiAKICAgICBK
U0M6OkpTVmFsdWUgZmllbGRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6QmluZGlu
Z3M6OkZpZWxkKikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5z
L0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0
ZWQvUHJveHlJbnN0YW5jZS5tbQppbmRleCA0OWU5OGZlNmUyMTQ3ZDA3ZWZlMDgwOWIzMjNmNWQx
YjYyZGYxYzUzLi4xMzIzZjZlMzY5MTBjOWU0NWU1OTQ5ZGYxZjgyNTNhZmVlMzZiMTk3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW0K
QEAgLTUwLDEzICs1MCwxMyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgUHJveHlDbGFz
cyA6IHB1YmxpYyBKU0M6OkJpbmRpbmdzOjpDbGFzcyB7CiBwcml2YXRlOgotICAgIHZpcnR1YWwg
TWV0aG9kTGlzdCBtZXRob2RzTmFtZWQoUHJvcGVydHlOYW1lLCBJbnN0YW5jZSopIGNvbnN0Owor
ICAgIHZpcnR1YWwgTWV0aG9kKiBtZXRob2ROYW1lZChQcm9wZXJ0eU5hbWUsIEluc3RhbmNlKikg
Y29uc3Q7CiAgICAgdmlydHVhbCBGaWVsZCogZmllbGROYW1lZChQcm9wZXJ0eU5hbWUsIEluc3Rh
bmNlKikgY29uc3Q7CiB9OwogCi1NZXRob2RMaXN0IFByb3h5Q2xhc3M6Om1ldGhvZHNOYW1lZChQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBJbnN0YW5jZSogaW5zdGFuY2UpIGNvbnN0CitNZXRo
b2QqIFByb3h5Q2xhc3M6Om1ldGhvZE5hbWVkKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIElu
c3RhbmNlKiBpbnN0YW5jZSkgY29uc3QKIHsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UHJveHlJ
bnN0YW5jZSo+KGluc3RhbmNlKS0+bWV0aG9kc05hbWVkKHByb3BlcnR5TmFtZSk7CisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PFByb3h5SW5zdGFuY2UqPihpbnN0YW5jZSktPm1ldGhvZE5hbWVkKHBy
b3BlcnR5TmFtZSk7CiB9CiAKIEZpZWxkKiBQcm94eUNsYXNzOjpmaWVsZE5hbWVkKFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIEluc3RhbmNlKiBpbnN0YW5jZSkgY29uc3QKQEAgLTE4MSwxNCAr
MTgxLDE0IEBAIGNsYXNzIFByb3h5UnVudGltZU1ldGhvZCA6IHB1YmxpYyBSdW50aW1lTWV0aG9k
IHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIFJ1bnRpbWVNZXRob2QgQmFzZTsKIAotICAgIHN0YXRp
YyBQcm94eVJ1bnRpbWVNZXRob2QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgQmluZGluZ3M6Ok1ldGhvZExp
c3QmIGxpc3QpCisgICAgc3RhdGljIFByb3h5UnVudGltZU1ldGhvZCogY3JlYXRlKEV4ZWNTdGF0
ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1l
LCBCaW5kaW5nczo6TWV0aG9kKiBtZXRob2QpCiAgICAgewogICAgICAgICAvLyBGSVhNRTogZGVw
cmVjYXRlZEdldERPTVN0cnVjdHVyZSB1c2VzIHRoZSBwcm90b3R5cGUgb2ZmIG9mIHRoZSB3cm9u
ZyBnbG9iYWwgb2JqZWN0CiAgICAgICAgIC8vIGV4ZWMtZ2xvYmFsRGF0YSgpIGlzIGFsc28gbGlr
ZWx5IHdyb25nLgogICAgICAgICBTdHJ1Y3R1cmUqIGRvbVN0cnVjdHVyZSA9IGRlcHJlY2F0ZWRH
ZXRET01TdHJ1Y3R1cmU8UHJveHlSdW50aW1lTWV0aG9kPihleGVjKTsKLSAgICAgICAgUHJveHlS
dW50aW1lTWV0aG9kKiBtZXRob2QgPSBuZXcgKGFsbG9jYXRlQ2VsbDxQcm94eVJ1bnRpbWVNZXRo
b2Q+KCpleGVjLT5oZWFwKCkpKSBQcm94eVJ1bnRpbWVNZXRob2QoZ2xvYmFsT2JqZWN0LCBkb21T
dHJ1Y3R1cmUsIGxpc3QpOwotICAgICAgICBtZXRob2QtPmZpbmlzaENyZWF0aW9uKGV4ZWMtPmds
b2JhbERhdGEoKSwgbmFtZSk7Ci0gICAgICAgIHJldHVybiBtZXRob2Q7CisgICAgICAgIFByb3h5
UnVudGltZU1ldGhvZCogcnVudGltZU1ldGhvZCA9IG5ldyAoYWxsb2NhdGVDZWxsPFByb3h5UnVu
dGltZU1ldGhvZD4oKmV4ZWMtPmhlYXAoKSkpIFByb3h5UnVudGltZU1ldGhvZChnbG9iYWxPYmpl
Y3QsIGRvbVN0cnVjdHVyZSwgbWV0aG9kKTsKKyAgICAgICAgcnVudGltZU1ldGhvZC0+ZmluaXNo
Q3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBuYW1lKTsKKyAgICAgICAgcmV0dXJuIHJ1bnRp
bWVNZXRob2Q7CiAgICAgfQogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSBwcm90b3R5cGUpCkBAIC0xOTksOCArMTk5LDggQEAgcHVibGljOgogICAgIHN0YXRp
YyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCiBwcml2YXRlOgotICAgIFByb3h5UnVudGltZU1l
dGhvZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
QmluZGluZ3M6Ok1ldGhvZExpc3QmIGxpc3QpCi0gICAgICAgIDogUnVudGltZU1ldGhvZChnbG9i
YWxPYmplY3QsIHN0cnVjdHVyZSwgbGlzdCkKKyAgICBQcm94eVJ1bnRpbWVNZXRob2QoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEJpbmRpbmdzOjpN
ZXRob2QqIG1ldGhvZCkKKyAgICAgICAgOiBSdW50aW1lTWV0aG9kKGdsb2JhbE9iamVjdCwgc3Ry
dWN0dXJlLCBtZXRob2QpCiAgICAgewogICAgIH0KIApAQCAtMjE1LDggKzIxNSw4IEBAIGNvbnN0
IENsYXNzSW5mbyBQcm94eVJ1bnRpbWVNZXRob2Q6OnNfaW5mbyA9IHsgIlByb3h5UnVudGltZU1l
dGhvZCIsICZSdW50aW1lTWV0CiAKIEpTVmFsdWUgUHJveHlJbnN0YW5jZTo6Z2V0TWV0aG9kKEpT
Qzo6RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewotICAgIE1l
dGhvZExpc3QgbWV0aG9kTGlzdCA9IGdldENsYXNzKCktPm1ldGhvZHNOYW1lZChwcm9wZXJ0eU5h
bWUsIHRoaXMpOwotICAgIHJldHVybiBQcm94eVJ1bnRpbWVNZXRob2Q6OmNyZWF0ZShleGVjLCBl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCksIG1l
dGhvZExpc3QpOworICAgIE1ldGhvZCogbWV0aG9kID0gZ2V0Q2xhc3MoKS0+bWV0aG9kTmFtZWQo
cHJvcGVydHlOYW1lLCB0aGlzKTsKKyAgICByZXR1cm4gUHJveHlSdW50aW1lTWV0aG9kOjpjcmVh
dGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUucHVibGlj
TmFtZSgpLCBtZXRob2QpOwogfQogCiBKU1ZhbHVlIFByb3h5SW5zdGFuY2U6Omludm9rZU1ldGhv
ZChFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6UnVudGltZU1ldGhvZCogcnVudGltZU1ldGhvZCkKQEAg
LTIyNCwxMSArMjI0LDggQEAgSlNWYWx1ZSBQcm94eUluc3RhbmNlOjppbnZva2VNZXRob2QoRXhl
Y1N0YXRlKiBleGVjLCBKU0M6OlJ1bnRpbWVNZXRob2QqIHJ1bnRpbWUKICAgICBpZiAoIWFzT2Jq
ZWN0KHJ1bnRpbWVNZXRob2QpLT5pbmhlcml0cygmUHJveHlSdW50aW1lTWV0aG9kOjpzX2luZm8p
KQogICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywg
IkF0dGVtcHQgdG8gaW52b2tlIG5vbi1wbHVnLWluIG1ldGhvZCBvbiBwbHVnLWluIG9iamVjdC4i
KSk7CiAKLSAgICBjb25zdCBNZXRob2RMaXN0JiBtZXRob2RMaXN0ID0gKnJ1bnRpbWVNZXRob2Qt
Pm1ldGhvZHMoKTsKLQotICAgIEFTU0VSVChtZXRob2RMaXN0LnNpemUoKSA9PSAxKTsKLQotICAg
IFByb3h5TWV0aG9kKiBtZXRob2QgPSBzdGF0aWNfY2FzdDxQcm94eU1ldGhvZCo+KG1ldGhvZExp
c3RbMF0pOworICAgIFByb3h5TWV0aG9kKiBtZXRob2QgPSBzdGF0aWNfY2FzdDxQcm94eU1ldGhv
ZCo+KHJ1bnRpbWVNZXRob2QtPm1ldGhvZCgpKTsKKyAgICBBU1NFUlQobWV0aG9kKTsKIAogICAg
IHJldHVybiBpbnZva2UoZXhlYywgSW52b2tlLCBtZXRob2QtPnNlcnZlcklkZW50aWZpZXIoKSwg
QXJnTGlzdChleGVjKSk7CiB9CkBAIC0zNDYsMjIgKzM0MywyMCBAQCB2b2lkIFByb3h5SW5zdGFu
Y2U6OmdldFByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYg
bmFtZUFycgogICAgIH0KIH0KIAotTWV0aG9kTGlzdCBQcm94eUluc3RhbmNlOjptZXRob2RzTmFt
ZWQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK01ldGhvZCogUHJveHlJbnN0YW5jZTo6bWV0
aG9kTmFtZWQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBTdHJpbmcgbmFtZShw
cm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKICAgICBpZiAobmFtZS5pc051bGwoKSkKLSAgICAg
ICAgcmV0dXJuIE1ldGhvZExpc3QoKTsKKyAgICAgICAgcmV0dXJuIDA7CiAKICAgICBpZiAoIW1f
aW5zdGFuY2VQcm94eSkKLSAgICAgICAgcmV0dXJuIE1ldGhvZExpc3QoKTsKKyAgICAgICAgcmV0
dXJuIDA7CiAgICAgCiAgICAgLy8gSWYgd2UgYWxyZWFkeSBoYXZlIGFuIGVudHJ5IGluIHRoZSBt
YXAsIHVzZSBpdC4KICAgICBNZXRob2RNYXA6Oml0ZXJhdG9yIGV4aXN0aW5nTWFwRW50cnkgPSBt
X21ldGhvZHMuZmluZChuYW1lLmltcGwoKSk7CiAgICAgaWYgKGV4aXN0aW5nTWFwRW50cnkgIT0g
bV9tZXRob2RzLmVuZCgpKSB7Ci0gICAgICAgIE1ldGhvZExpc3QgbWV0aG9kTGlzdDsKICAgICAg
ICAgaWYgKGV4aXN0aW5nTWFwRW50cnktPnNlY29uZCkKLSAgICAgICAgICAgIG1ldGhvZExpc3Qu
YXBwZW5kKGV4aXN0aW5nTWFwRW50cnktPnNlY29uZCk7Ci0gICAgICAgIHJldHVybiBtZXRob2RM
aXN0OworICAgICAgICAgICAgcmV0dXJuIGV4aXN0aW5nTWFwRW50cnktPnNlY29uZDsKICAgICB9
CiAgICAgCiAgICAgdWludDY0X3QgbWV0aG9kTmFtZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0
X3Q+KF9OUE5fR2V0U3RyaW5nSWRlbnRpZmllcihuYW1lLmFzY2lpKCkuZGF0YSgpKSk7CkBAIC0z
NzAsMjQgKzM2NSwyMSBAQCBNZXRob2RMaXN0IFByb3h5SW5zdGFuY2U6Om1ldGhvZHNOYW1lZChQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogICAgIGlmIChfV0tQSE5QT2JqZWN0SGFzTWV0aG9k
KG1faW5zdGFuY2VQcm94eS0+aG9zdFByb3h5KCktPnBvcnQoKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtX2luc3RhbmNlUHJveHktPnBsdWdpbklEKCksIHJlcXVlc3RJRCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX29iamVjdElELCBtZXRob2ROYW1lKSAhPSBL
RVJOX1NVQ0NFU1MpCi0gICAgICAgIHJldHVybiBNZXRob2RMaXN0KCk7CisgICAgICAgIHJldHVy
biAwOwogICAgIAogICAgIGF1dG9fcHRyPE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6Qm9v
bGVhblJlcGx5PiByZXBseSA9IHdhaXRGb3JSZXBseTxOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJv
eHk6OkJvb2xlYW5SZXBseT4ocmVxdWVzdElEKTsKICAgICBpZiAoIXJlcGx5LmdldCgpKQotICAg
ICAgICByZXR1cm4gTWV0aG9kTGlzdCgpOworICAgICAgICByZXR1cm4gMDsKIAogICAgIGlmICgh
cmVwbHktPm1fcmVzdWx0ICYmICFtX2luc3RhbmNlUHJveHktPmhvc3RQcm94eSgpLT5zaG91bGRD
YWNoZU1pc3NpbmdQcm9wZXJ0aWVzQW5kTWV0aG9kcygpKQotICAgICAgICByZXR1cm4gTWV0aG9k
TGlzdCgpOworICAgICAgICByZXR1cm4gMDsKIAogICAgIC8vIEFkZCBhIG5ldyBlbnRyeSB0byB0
aGUgbWFwIHVubGVzcyBhbiBlbnRyeSB3YXMgYWRkZWQgd2hpbGUgd2Ugd2VyZSBpbiB3YWl0Rm9y
UmVwbHkuCiAgICAgTWV0aG9kTWFwOjpBZGRSZXN1bHQgbWFwQWRkUmVzdWx0ID0gbV9tZXRob2Rz
LmFkZChuYW1lLmltcGwoKSwgMCk7CiAgICAgaWYgKG1hcEFkZFJlc3VsdC5pc05ld0VudHJ5ICYm
IHJlcGx5LT5tX3Jlc3VsdCkKICAgICAgICAgbWFwQWRkUmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQg
PSBuZXcgUHJveHlNZXRob2QobWV0aG9kTmFtZSk7CiAKLSAgICBNZXRob2RMaXN0IG1ldGhvZExp
c3Q7Ci0gICAgaWYgKG1hcEFkZFJlc3VsdC5pdGVyYXRvci0+c2Vjb25kKQotICAgICAgICBtZXRo
b2RMaXN0LmFwcGVuZChtYXBBZGRSZXN1bHQuaXRlcmF0b3ItPnNlY29uZCk7Ci0gICAgcmV0dXJu
IG1ldGhvZExpc3Q7CisgICAgcmV0dXJuIG1hcEFkZFJlc3VsdC5pdGVyYXRvci0+c2Vjb25kOwog
fQogCiBGaWVsZCogUHJveHlJbnN0YW5jZTo6ZmllbGROYW1lZChQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166349</attachid>
            <date>2012-09-28 19:06:19 -0700</date>
            <delta_ts>2012-09-28 19:15:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97959-20120928190536.patch</filename>
            <type>text/plain</type>
            <size>35329</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5OTY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDZkMzM5YmQ0NjJkNDI3
YmE4YmRjZGFjYWRlNTM5NWEyNzRmZTg4YS4uZjI4N2NhMjhmOTVjZjZhNGJjNjA3Zjk3Zjk0MWJh
Yjg0MzM0YzA5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDEyLTA5LTI4ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHN1cHBv
cnQgZm9yIG1ldGhvZCBvdmVybG9hZGluZyBmcm9tIGJyaWRnZSBjb2RlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Nzk1OQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBtZXRob2Qgb3ZlcmxvYWRpbmcg
aGFuZGxpbmcgd2FzIG9ubHkgaW4gcGxhY2UgZm9yIHRoZSAobm93IHJlbW92ZWQpIEphdmEgYnJp
ZGdlLiAKKyAgICAgICAgUmVwbGFjZSBNZXRob2RMaXN0IGV2ZXJ5d2hlcmUgd2l0aCBhIHNpbmds
ZSBNZXRob2QgcG9pbnRlci4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAq
IEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAg
ICogYnJpZGdlL2MvY19jbGFzcy5jcHA6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpDQ2xhc3M6
Om1ldGhvZE5hbWVkKToKKyAgICAgICAgKiBicmlkZ2UvYy9jX2NsYXNzLmg6CisgICAgICAgIChD
Q2xhc3MpOgorICAgICAgICAqIGJyaWRnZS9jL2NfaW5zdGFuY2UuY3BwOgorICAgICAgICAoSlND
OjpCaW5kaW5nczo6Q1J1bnRpbWVNZXRob2Q6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkJpbmRp
bmdzOjpDUnVudGltZU1ldGhvZDo6Q1J1bnRpbWVNZXRob2QpOgorICAgICAgICAoSlNDOjpCaW5k
aW5nczo6Q0luc3RhbmNlOjpnZXRNZXRob2QpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Q0lu
c3RhbmNlOjppbnZva2VNZXRob2QpOgorICAgICAgICAqIGJyaWRnZS9qc2MvQnJpZGdlSlNDLmg6
CisgICAgICAgIChCaW5kaW5ncyk6CisgICAgICAgIChDbGFzcyk6CisgICAgICAgICogYnJpZGdl
L29iamMvb2JqY19jbGFzcy5oOgorICAgICAgICAoT2JqY0NsYXNzKToKKyAgICAgICAgKiBicmlk
Z2Uvb2JqYy9vYmpjX2NsYXNzLm1tOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6T2JqY0NsYXNz
OjptZXRob2ROYW1lZCk6CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbToK
KyAgICAgICAgKE9iakNSdW50aW1lTWV0aG9kOjpjcmVhdGUpOgorICAgICAgICAoT2JqQ1J1bnRp
bWVNZXRob2Q6Ok9iakNSdW50aW1lTWV0aG9kKToKKyAgICAgICAgKE9iamNJbnN0YW5jZTo6aW52
b2tlTWV0aG9kKToKKyAgICAgICAgKiBicmlkZ2UvcXQvcXRfY2xhc3MuY3BwOgorICAgICAgICAo
SlNDOjpCaW5kaW5nczo6UXRDbGFzczo6bWV0aG9kTmFtZWQpOgorICAgICAgICAqIGJyaWRnZS9x
dC9xdF9jbGFzcy5oOgorICAgICAgICAoUXRDbGFzcyk6CisgICAgICAgICogYnJpZGdlL3F0L3F0
X2luc3RhbmNlLmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlF0SW5zdGFuY2U6OmdldE1l
dGhvZCk6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcDoKKyAgICAgICAgKEpT
Qzo6UnVudGltZU1ldGhvZDo6UnVudGltZU1ldGhvZCk6CisgICAgICAgIChKU0M6OlJ1bnRpbWVN
ZXRob2Q6Omxlbmd0aEdldHRlcik6CisgICAgICAgIChKU0M6OmNhbGxSdW50aW1lTWV0aG9kKToK
KyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9tZXRob2QuaDoKKyAgICAgICAgKEpTQzo6UnVudGlt
ZU1ldGhvZDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6UnVudGltZU1ldGhvZDo6bWV0aG9kKToK
KyAgICAgICAgKFJ1bnRpbWVNZXRob2QpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX29iamVj
dC5jcHA6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpSdW50aW1lT2JqZWN0OjpnZXRPd25Qcm9w
ZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UnVudGltZU9iamVjdDo6Z2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKToKKwogMjAxMi0wOS0yOCAgT2phbiBWYWZhaSAgPG9qYW5AY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIEZpeCBjaHJvbWl1bSBidWlsZCBhZnRlciBodHRwOi8vdHJh
Yy53ZWJraXQub3JnL2NoYW5nZXNldC8xMjk5NjQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggZTJjNWFi
OTUzYmNkOGNjNmRiZjYxM2VmMmRmOTRhYTJjN2Q2YjM1MC4uOGZiZTIzNzZhNTU1MGNjNTZlNGRl
MzAxYjZhN2JmMDExNDI4MWYyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI1IEBACiAy
MDEyLTA5LTI4ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKKyAgICAg
ICAgUmVtb3ZlIHN1cHBvcnQgZm9yIG1ldGhvZCBvdmVybG9hZGluZyBmcm9tIGJyaWRnZSBjb2Rl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Nzk1OQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBm
b3IgV2ViQ29yZSBjaGFuZ2VzOyBNZXRob2RMaXN0IGhhcyBiZWVuIHJlcGxhY2VkIHdpdGggYSBz
aW5nbGUgTWV0aG9kKiBldmVyeXdoZXJlLgorCisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvUHJv
eHlJbnN0YW5jZS5oOgorICAgICAgICAoUHJveHlJbnN0YW5jZSk6CisgICAgICAgICogUGx1Z2lu
cy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbToKKyAgICAgICAgKFByb3h5Q2xhc3MpOgorICAgICAg
ICAoV2ViS2l0OjpQcm94eUNsYXNzOjptZXRob2ROYW1lZCk6CisgICAgICAgIChXZWJLaXQ6OlBy
b3h5UnVudGltZU1ldGhvZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UHJveHlSdW50aW1l
TWV0aG9kOjpQcm94eVJ1bnRpbWVNZXRob2QpOgorICAgICAgICAoV2ViS2l0OjpQcm94eUluc3Rh
bmNlOjpnZXRNZXRob2QpOgorICAgICAgICAoV2ViS2l0OjpQcm94eUluc3RhbmNlOjppbnZva2VN
ZXRob2QpOgorICAgICAgICAoV2ViS2l0OjpQcm94eUluc3RhbmNlOjptZXRob2ROYW1lZCk6CisK
KzIwMTItMDktMjggIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKwogICAg
ICAgICBSZW1vdmUgSmF2YSBicmlkZ2UKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTk3OTU0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggNjZjOWY0NzNk
ZGRiY2IyMTBmYTQ4M2UxZmIzYTg2MzVmNmI2MGQwYy4uMzkwODhmM2M2YjBjNDA3YTU4NWZmMzdk
ZTFjMTM3MWE5MzA5ZjcyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
YW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTI3LDcgKzI3LDYgQEAg
d2ViY29yZV9jcHBmbGFncyArPSBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL2JyaWRnZSBcCiAJLUkkKHNyY2Rp
cikvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MgXAotCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9qbmkvanNjIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvanNj
IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9jc3MgXAogCS1JJChzcmNkaXIpL1NvdXJj
ZS9XZWJDb3JlL2RvbSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAzMTY2ZDlh
MWY5OWYzYzA3MjBhNDczZDFkY2NhMDExNmFkNzM2MmE2Li44NDMyNjFlMWM2YWI0NGNjYzFiMzgw
MzBhZDU1OWM0M2I0YTMxMDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTI0
NTYsMTUgKzI0NTYsNiBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9jL2NfdXRpbGl0eS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9icmlkZ2UvSWRlbnRpZmllclJl
cC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JyaWRnZS9JZGVudGlmaWVyUmVwLmggXAotCVNvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9qbmkvSk5JVXRpbGl0eS5oIFwKLQlTb3VyY2UvV2ViQ29yZS9icmlk
Z2Uvam5pL0phdmFUeXBlLmggXAotCVNvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvam5pX2pzb2Jq
ZWN0LmggXAotCVNvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFBcnJheUpTQy5oIFwK
LQlTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhQ2xhc3NKU0MuaCBcCi0JU291cmNl
L1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YUZpZWxkSlNDLmggXAotCVNvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9qbmkvanNjL0phdmFJbnN0YW5jZUpTQy5oIFwKLQlTb3VyY2UvV2ViQ29yZS9icmlk
Z2Uvam5pL2pzYy9KYXZhTWV0aG9kSlNDLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvYnJpZGdlL2pu
aS9qc2MvSmF2YU1ldGhvZEpTQy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9icmlkZ2UvanNjL0JyaWRn
ZUpTQy5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JyaWRnZS9qc2MvQnJpZGdlSlNDLmggXAogCVNv
dXJjZS9XZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpp
bmRleCBiODY1MWJiMzEzNGE1MDk2Mzk4N2FiNjNmYWJiODk5ZGQ0N2MwNGQ2Li40YzA5YjBlOGJl
ZmNlMGZhNmNiNmQ1ZjI3ZWE5NmNjNjE2MDQ0MDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAt
MjM1MCw4ICsyMzUwLDcgQEAgX19aTjNKU0MxM1J1bnRpbWVNZXRob2QxNGZpbmlzaENyZWF0aW9u
RVJOU18xMkpTR2xvYmFsRGF0YUVSS04zV1RGNlN0cmluZ0UKIF9fWk4zSlNDMTNSdW50aW1lTWV0
aG9kMThnZXRPd25Qcm9wZXJ0eVNsb3RFUE5TXzZKU0NlbGxFUE5TXzlFeGVjU3RhdGVFTlNfMTJQ
cm9wZXJ0eU5hbWVFUk5TXzEyUHJvcGVydHlTbG90RQogX19aTjNKU0MxM1J1bnRpbWVNZXRob2Qy
NGdldE93blByb3BlcnR5RGVzY3JpcHRvckVQTlNfOEpTT2JqZWN0RVBOU185RXhlY1N0YXRlRU5T
XzEyUHJvcGVydHlOYW1lRVJOU18xOFByb3BlcnR5RGVzY3JpcHRvckUKIF9fWk4zSlNDMTNSdW50
aW1lTWV0aG9kNnNfaW5mb0UKLV9fWk4zSlNDMTNSdW50aW1lTWV0aG9kN2Rlc3Ryb3lFUE5TXzZK
U0NlbGxFCi1fX1pOM0pTQzEzUnVudGltZU1ldGhvZEMyRVBOU18xNEpTR2xvYmFsT2JqZWN0RVBO
U185U3RydWN0dXJlRVJOM1dURjZWZWN0b3JJUE5TXzhCaW5kaW5nczZNZXRob2RFTG0wRUVFCitf
X1pOM0pTQzEzUnVudGltZU1ldGhvZEMyRVBOU18xNEpTR2xvYmFsT2JqZWN0RVBOU185U3RydWN0
dXJlRVBOU184QmluZGluZ3M2TWV0aG9kRQogX19aTjNKU0M4QmluZGluZ3MxMFJvb3RPYmplY3RE
MUV2CiBfX1pOM0pTQzhCaW5kaW5nczEzUnVudGltZU9iamVjdDExZ2V0Q2FsbERhdGFFUE5TXzZK
U0NlbGxFUk5TXzhDYWxsRGF0YUUKIF9fWk4zSlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0MTJk
ZWZhdWx0VmFsdWVFUEtOU184SlNPYmplY3RFUE5TXzlFeGVjU3RhdGVFTlNfMjJQcmVmZXJyZWRQ
cmltaXRpdmVUeXBlRQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2Vi
Q29yZS5neXAgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cAppbmRleCBl
ZDllZGFjNTJhNGQ0ZDY2YzM5Nzk2YzhmMjFiMjdjYmI2YTNiYjIyLi5jY2MzMjk3MjZhODRhMjJk
Mzg0ZWFjYjcwNjU2NzFiYzRmYTA3YWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cC9XZWJDb3JlLmd5cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJD
b3JlLmd5cApAQCAtNzcsOCArNzcsNiBAQAogICAgICAgJy4uL2JpbmRpbmdzL3Y4JywKICAgICAg
ICcuLi9iaW5kaW5ncy92OC9jdXN0b20nLAogICAgICAgJy4uL2JyaWRnZScsCi0gICAgICAnLi4v
YnJpZGdlL2puaScsCi0gICAgICAnLi4vYnJpZGdlL2puaS92OCcsCiAgICAgICAnLi4vY3NzJywK
ICAgICAgICcuLi9kb20nLAogICAgICAgJy4uL2RvbS9kZWZhdWx0JywKQEAgLTIwMzEsMTMgKzIw
MjksNiBAQAogICAgICAgICBbJ2luY2x1ZGUnLCAnYmluZGluZ3MvZ2VuZXJpYy8nXSwKICAgICAg
ICAgWydpbmNsdWRlJywgJ2JpbmRpbmdzL3Y4LyddLAogCi0gICAgICAgICMgRXhjbHVkZSBtb3N0
IG9mIGJyaWRnZSwgZXhjZXB0IGZvciB0aGUgVjgtcmVsYXRlZCBwYXJ0cy4KLSAgICAgICAgWydl
eGNsdWRlJywgJ2JyaWRnZS8nXSwKLSAgICAgICAgWydpbmNsdWRlJywgJ2JyaWRnZS9qbmkvJ10s
Ci0gICAgICAgIFsnZXhjbHVkZScsICdicmlkZ2Uvam5pL1teL10rX2pzb2JqZWN0XFwubW0kJ10s
Ci0gICAgICAgIFsnZXhjbHVkZScsICdicmlkZ2Uvam5pL1teL10rX29iamNcXC5tbSQnXSwKLSAg
ICAgICAgWydleGNsdWRlJywgJ2JyaWRnZS9qbmkvanNjLyddLAotCiAgICAgICAgICMgRklYTUU6
IEZpZ3VyZSBvdXQgaG93IHRvIHN0b3JlIHRoZXNlIHBhdHRlcm5zIGluIGEgdmFyaWFibGUuCiAg
ICAgICAgIFsnZXhjbHVkZScsICcoY2Fpcm98Y2F8Y2Z8Y2d8Y3VybHxlZmx8ZnJlZXR5cGV8Z3N0
cmVhbWVyfGd0a3xsaW51eHxtYWN8b3BlbmdsfG9wZW52Z3xvcGVudHlwZXxwYW5nb3xwb3NpeHxx
dHxzb3VwfHN2Z3xzeW1iaWFufHRleG1hcHxpcGhvbmV8d2lufHdpbmNlfHd4KS8nXSwKICAgICAg
ICAgWydleGNsdWRlJywgJyg/PCFDaHJvbWl1bSkoQ2Fpcm98Q0Z8Q0d8Q3VybHxHdGt8SlNDfExp
bnV4fE1hY3xPcGVuVHlwZXxQT1NJWHxQb3NpeHxRdHxTYWZhcml8U291cHxTeW1iaWFufFdpbnxX
aW5DRXxXeClcXC4oY3BwfG1tPykkJ10sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2UvYy9jX2NsYXNzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfY2xhc3MuY3BwCmlu
ZGV4IDFhMTY2NzAyYzg5YzAwNTdiNDk5ZDY1MWU3OGI4NmM3MDI3ZWI5NzQuLjQ2NGQ4ODJlMTU2
Y2UxYzUyMTliMTJlMjA1MTIyNjA2MTYxYTZlZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9jL2NfY2xhc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfY2xh
c3MuY3BwCkBAIC03MCwyOCArNzAsMjMgQEAgQ0NsYXNzKiBDQ2xhc3M6OmNsYXNzRm9ySXNBKE5Q
Q2xhc3MqIGlzYSkKICAgICByZXR1cm4gYUNsYXNzOwogfQogCi1NZXRob2RMaXN0IENDbGFzczo6
bWV0aG9kc05hbWVkKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEluc3RhbmNlKiBpbnN0YW5j
ZSkgY29uc3QKK01ldGhvZCogQ0NsYXNzOjptZXRob2ROYW1lZChQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBJbnN0YW5jZSogaW5zdGFuY2UpIGNvbnN0CiB7CiAgICAgU3RyaW5nIG5hbWUocHJv
cGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CiAgICAgCi0gICAgTWV0aG9kTGlzdCBtZXRob2RMaXN0
OwotCi0gICAgTWV0aG9kKiBtZXRob2QgPSBfbWV0aG9kcy5nZXQobmFtZS5pbXBsKCkpOwotICAg
IGlmIChtZXRob2QpIHsKLSAgICAgICAgbWV0aG9kTGlzdC5hcHBlbmQobWV0aG9kKTsKLSAgICAg
ICAgcmV0dXJuIG1ldGhvZExpc3Q7Ci0gICAgfQorICAgIGlmIChNZXRob2QqIG1ldGhvZCA9IF9t
ZXRob2RzLmdldChuYW1lLmltcGwoKSkpCisgICAgICAgIHJldHVybiBtZXRob2Q7CiAKICAgICBO
UElkZW50aWZpZXIgaWRlbnQgPSBfTlBOX0dldFN0cmluZ0lkZW50aWZpZXIobmFtZS5hc2NpaSgp
LmRhdGEoKSk7CiAgICAgY29uc3QgQ0luc3RhbmNlKiBpbnN0ID0gc3RhdGljX2Nhc3Q8Y29uc3Qg
Q0luc3RhbmNlKj4oaW5zdGFuY2UpOwogICAgIE5QT2JqZWN0KiBvYmogPSBpbnN0LT5nZXRPYmpl
Y3QoKTsKICAgICBpZiAoX2lzYS0+aGFzTWV0aG9kICYmIF9pc2EtPmhhc01ldGhvZChvYmosIGlk
ZW50KSl7Ci0gICAgICAgIE1ldGhvZCogYU1ldGhvZCA9IG5ldyBDTWV0aG9kKGlkZW50KTsgLy8g
ZGVsZXRlZCBpbiB0aGUgQ0NsYXNzIGRlc3RydWN0b3IKLSAgICAgICAgX21ldGhvZHMuc2V0KG5h
bWUuaW1wbCgpLCBhTWV0aG9kKTsKLSAgICAgICAgbWV0aG9kTGlzdC5hcHBlbmQoYU1ldGhvZCk7
CisgICAgICAgIE1ldGhvZCogbWV0aG9kID0gbmV3IENNZXRob2QoaWRlbnQpOyAvLyBkZWxldGVk
IGluIHRoZSBDQ2xhc3MgZGVzdHJ1Y3RvcgorICAgICAgICBfbWV0aG9kcy5zZXQobmFtZS5pbXBs
KCksIG1ldGhvZCk7CisgICAgICAgIHJldHVybiBtZXRob2Q7CiAgICAgfQogICAgIAotICAgIHJl
dHVybiBtZXRob2RMaXN0OworICAgIHJldHVybiAwOwogfQogCiBGaWVsZCogQ0NsYXNzOjpmaWVs
ZE5hbWVkKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEluc3RhbmNlKiBpbnN0YW5jZSkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfY2xhc3MuaCBiL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9jL2NfY2xhc3MuaAppbmRleCBjOGMyZTg5ODUxZDY2MzE1M2JhZjhl
NGNiNmY1OTcwMThjMmExYTFhLi5mNjczOTlmZTU5Nzc2ZTYzY2NiMTg2YWM5MmNiYjY3MmYxZGNm
MGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2NsYXNzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19jbGFzcy5oCkBAIC00Myw3ICs0Myw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgQ0NsYXNzKiBjbGFzc0ZvcklzQShOUENsYXNzKik7CiAgICAgdmlydHVh
bCB+Q0NsYXNzKCk7CiAKLSAgICB2aXJ0dWFsIE1ldGhvZExpc3QgbWV0aG9kc05hbWVkKFByb3Bl
cnR5TmFtZSwgSW5zdGFuY2UqKSBjb25zdDsKKyAgICB2aXJ0dWFsIE1ldGhvZCogbWV0aG9kTmFt
ZWQoUHJvcGVydHlOYW1lLCBJbnN0YW5jZSopIGNvbnN0OwogICAgIHZpcnR1YWwgRmllbGQqIGZp
ZWxkTmFtZWQoUHJvcGVydHlOYW1lLCBJbnN0YW5jZSopIGNvbnN0OwogCiBwcml2YXRlOgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19pbnN0YW5jZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvYy9jX2luc3RhbmNlLmNwcAppbmRleCAyMDFjNjFlODYxMWUzMzkzZDRm
Zjk4MWY4ZTU3ZTIwMTljZGNjMzk0Li42MGI0MzA4NTRhODVhOTU0ZGQ1NTlhYjdlZTg2OWJiNDhh
NmFjNzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2luc3RhbmNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2luc3RhbmNlLmNwcApAQCAtMTExLDE0
ICsxMTEsMTQgQEAgY2xhc3MgQ1J1bnRpbWVNZXRob2QgOiBwdWJsaWMgUnVudGltZU1ldGhvZCB7
CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBSdW50aW1lTWV0aG9kIEJhc2U7CiAKLSAgICBzdGF0aWMg
Q1J1bnRpbWVNZXRob2QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgQmluZGluZ3M6Ok1ldGhvZExpc3QmIGxp
c3QpCisgICAgc3RhdGljIENSdW50aW1lTWV0aG9kKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUsIEJpbmRpbmdz
OjpNZXRob2QqIG1ldGhvZCkKICAgICB7CiAgICAgICAgIC8vIEZJWE1FOiBkZXByZWNhdGVkR2V0
RE9NU3RydWN0dXJlIHVzZXMgdGhlIHByb3RvdHlwZSBvZmYgb2YgdGhlIHdyb25nIGdsb2JhbCBv
YmplY3QKICAgICAgICAgLy8gV2UgbmVlZCB0byBwYXNzIGluIHRoZSByaWdodCBnbG9iYWwgb2Jq
ZWN0IGZvciAiaSIuCiAgICAgICAgIFN0cnVjdHVyZSogZG9tU3RydWN0dXJlID0gV2ViQ29yZTo6
ZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZTxDUnVudGltZU1ldGhvZD4oZXhlYyk7Ci0gICAgICAg
IENSdW50aW1lTWV0aG9kKiBtZXRob2QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxDUnVu
dGltZU1ldGhvZD4oKmV4ZWMtPmhlYXAoKSkpIENSdW50aW1lTWV0aG9kKGdsb2JhbE9iamVjdCwg
ZG9tU3RydWN0dXJlLCBsaXN0KTsKLSAgICAgICAgbWV0aG9kLT5maW5pc2hDcmVhdGlvbihleGVj
LT5nbG9iYWxEYXRhKCksIG5hbWUpOwotICAgICAgICByZXR1cm4gbWV0aG9kOworICAgICAgICBD
UnVudGltZU1ldGhvZCogcnVudGltZU1ldGhvZCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PENSdW50aW1lTWV0aG9kPigqZXhlYy0+aGVhcCgpKSkgQ1J1bnRpbWVNZXRob2QoZ2xvYmFsT2Jq
ZWN0LCBkb21TdHJ1Y3R1cmUsIG1ldGhvZCk7CisgICAgICAgIHJ1bnRpbWVNZXRob2QtPmZpbmlz
aENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgbmFtZSk7CisgICAgICAgIHJldHVybiBydW50
aW1lTWV0aG9kOwogICAgIH0KIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgcHJvdG90eXBlKQpAQCAtMTI5LDggKzEyOSw4IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAogcHJpdmF0ZToKLSAgICBDUnVudGltZU1ldGhv
ZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQmlu
ZGluZ3M6Ok1ldGhvZExpc3QmIGxpc3QpCi0gICAgICAgIDogUnVudGltZU1ldGhvZChnbG9iYWxP
YmplY3QsIHN0cnVjdHVyZSwgbGlzdCkKKyAgICBDUnVudGltZU1ldGhvZChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQmluZGluZ3M6Ok1ldGhvZCog
bWV0aG9kKQorICAgICAgICA6IFJ1bnRpbWVNZXRob2QoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUs
IG1ldGhvZCkKICAgICB7CiAgICAgfQogCkBAIC0xNDYsOCArMTQ2LDggQEAgY29uc3QgQ2xhc3NJ
bmZvIENSdW50aW1lTWV0aG9kOjpzX2luZm8gPSB7ICJDUnVudGltZU1ldGhvZCIsICZSdW50aW1l
TWV0aG9kOjpzX2kKIAogSlNWYWx1ZSBDSW5zdGFuY2U6OmdldE1ldGhvZChFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgTWV0aG9kTGlzdCBtZXRob2RM
aXN0ID0gZ2V0Q2xhc3MoKS0+bWV0aG9kc05hbWVkKHByb3BlcnR5TmFtZSwgdGhpcyk7Ci0gICAg
cmV0dXJuIENSdW50aW1lTWV0aG9kOjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpLCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpLCBtZXRob2RMaXN0KTsKKyAgICBNZXRo
b2QqIG1ldGhvZCA9IGdldENsYXNzKCktPm1ldGhvZE5hbWVkKHByb3BlcnR5TmFtZSwgdGhpcyk7
CisgICAgcmV0dXJuIENSdW50aW1lTWV0aG9kOjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpLCBtZXRob2QpOwogfQogCiBK
U1ZhbHVlIENJbnN0YW5jZTo6aW52b2tlTWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgUnVudGltZU1l
dGhvZCogcnVudGltZU1ldGhvZCkKQEAgLTE1NSwxMyArMTU1LDggQEAgSlNWYWx1ZSBDSW5zdGFu
Y2U6Omludm9rZU1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIFJ1bnRpbWVNZXRob2QqIHJ1bnRpbWVN
ZXRob2QpCiAgICAgaWYgKCFhc09iamVjdChydW50aW1lTWV0aG9kKS0+aW5oZXJpdHMoJkNSdW50
aW1lTWV0aG9kOjpzX2luZm8pKQogICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBjcmVh
dGVUeXBlRXJyb3IoZXhlYywgIkF0dGVtcHQgdG8gaW52b2tlIG5vbi1wbHVnLWluIG1ldGhvZCBv
biBwbHVnLWluIG9iamVjdC4iKSk7CiAKLSAgICBjb25zdCBNZXRob2RMaXN0JiBtZXRob2RMaXN0
ID0gKnJ1bnRpbWVNZXRob2QtPm1ldGhvZHMoKTsKLQotICAgIC8vIE92ZXJsb2FkaW5nIG1ldGhv
ZHMgYXJlIG5vdCBhbGxvd2VkIGJ5IE5QT2JqZWN0cy4gIFNob3VsZCBvbmx5IGJlIG9uZQotICAg
IC8vIG5hbWUgbWF0Y2ggZm9yIGEgcGFydGljdWxhciBtZXRob2QuCi0gICAgQVNTRVJUKG1ldGhv
ZExpc3Quc2l6ZSgpID09IDEpOwotCi0gICAgQ01ldGhvZCogbWV0aG9kID0gc3RhdGljX2Nhc3Q8
Q01ldGhvZCo+KG1ldGhvZExpc3RbMF0pOworICAgIENNZXRob2QqIG1ldGhvZCA9IHN0YXRpY19j
YXN0PENNZXRob2QqPihydW50aW1lTWV0aG9kLT5tZXRob2QoKSk7CisgICAgQVNTRVJUKG1ldGhv
ZCk7CiAKICAgICBOUElkZW50aWZpZXIgaWRlbnQgPSBtZXRob2QtPmlkZW50aWZpZXIoKTsKICAg
ICBpZiAoIV9vYmplY3QtPl9jbGFzcy0+aGFzTWV0aG9kKF9vYmplY3QsIGlkZW50KSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qc2MvQnJpZGdlSlNDLmggYi9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvanNjL0JyaWRnZUpTQy5oCmluZGV4IGM3ZGZlNDgzYWZmMDRmZjM0MWZlNWIw
NGQ3NTZjYzZmOWVhYTNkZmMuLjM5ZTZjOTg2ZDBmYWQ0MWQ0ZGJlOTJhY2I3NzNkMzY3ZjIyNzc1
NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qc2MvQnJpZGdlSlNDLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2pzYy9CcmlkZ2VKU0MuaApAQCAtNDgsOCArNDgsNiBA
QCBjbGFzcyBNZXRob2Q7CiBjbGFzcyBSb290T2JqZWN0OwogY2xhc3MgUnVudGltZU9iamVjdDsK
IAotdHlwZWRlZiBWZWN0b3I8TWV0aG9kKj4gTWV0aG9kTGlzdDsKLQogY2xhc3MgRmllbGQgewog
cHVibGljOgogICAgIHZpcnR1YWwgSlNWYWx1ZSB2YWx1ZUZyb21JbnN0YW5jZShFeGVjU3RhdGUq
LCBjb25zdCBJbnN0YW5jZSopIGNvbnN0ID0gMDsKQEAgLTYyLDcgKzYwLDcgQEAgY2xhc3MgQ2xh
c3MgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENsYXNzKTsgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgQ2xhc3MoKSB7IH0KLSAgICB2aXJ0dWFsIE1ldGhvZExpc3Qg
bWV0aG9kc05hbWVkKFByb3BlcnR5TmFtZSwgSW5zdGFuY2UqKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBNZXRob2QqIG1ldGhvZE5hbWVkKFByb3BlcnR5TmFtZSwgSW5zdGFuY2UqKSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCBGaWVsZCogZmllbGROYW1lZChQcm9wZXJ0eU5hbWUsIEluc3RhbmNl
KikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgSlNWYWx1ZSBmYWxsYmFja09iamVjdChFeGVjU3Rh
dGUqLCBJbnN0YW5jZSosIFByb3BlcnR5TmFtZSkgeyByZXR1cm4ganNVbmRlZmluZWQoKTsgfQog
CkBAIC0xMzYsNyArMTM0LDYgQEAgcHJvdGVjdGVkOgogCiBjb25zdCBjaGFyKiBzaWduYXR1cmVG
b3JQYXJhbWV0ZXJzKGNvbnN0IEFyZ0xpc3QmKTsKIAotdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxT
dHJpbmdJbXBsPiwgTWV0aG9kTGlzdCo+IE1ldGhvZExpc3RNYXA7CiB0eXBlZGVmIEhhc2hNYXA8
UmVmUHRyPFN0cmluZ0ltcGw+LCBNZXRob2QqPiBNZXRob2RNYXA7CiB0eXBlZGVmIEhhc2hNYXA8
UmVmUHRyPFN0cmluZ0ltcGw+LCBGaWVsZCo+IEZpZWxkTWFwOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2NsYXNzLmggYi9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2Uvb2JqYy9vYmpjX2NsYXNzLmgKaW5kZXggYzM1OGFlOTNiZjFhMTUyZjQ1NDRjNWM0Mzc0NmQy
ODk2ODg1NzkzYi4uODM4MzQ3ZjI0YWM5ZmE0OGNlY2JjMzdlNWNjNzE5YjcyZTk5ZTk3NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19jbGFzcy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfY2xhc3MuaApAQCAtNDEsNyArNDEsNyBAQCBw
dWJsaWM6CiAgICAgLy8gUmV0dXJuIHRoZSBjYWNoZWQgT2JqQyBvZiB0aGUgc3BlY2lmaWVkIG5h
bWUuCiAgICAgc3RhdGljIE9iamNDbGFzcyAqY2xhc3NGb3JJc0EoQ2xhc3NTdHJ1Y3RQdHIpOwog
ICAgIAotICAgIHZpcnR1YWwgTWV0aG9kTGlzdCBtZXRob2RzTmFtZWQoUHJvcGVydHlOYW1lLCBJ
bnN0YW5jZSopIGNvbnN0OworICAgIHZpcnR1YWwgTWV0aG9kKiBtZXRob2ROYW1lZChQcm9wZXJ0
eU5hbWUsIEluc3RhbmNlKikgY29uc3Q7CiAgICAgdmlydHVhbCBGaWVsZCAqZmllbGROYW1lZChQ
cm9wZXJ0eU5hbWUsIEluc3RhbmNlKikgY29uc3Q7CiAKICAgICB2aXJ0dWFsIEpTVmFsdWUgZmFs
bGJhY2tPYmplY3QoRXhlY1N0YXRlKiwgSW5zdGFuY2UqLCBQcm9wZXJ0eU5hbWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19jbGFzcy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfY2xhc3MubW0KaW5kZXggYmNiZDdlN2JjN2ZjY2E4MzM4
YWMzMjRlMGU2ZWYyN2M1MDc0Y2RmYy4uYjkyMTkwYjhlNmNiZmE0NzA5NDM3MDIxMzJiZWEzZWRm
MTZmNDQ5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19jbGFz
cy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2NsYXNzLm1tCkBAIC05
NSwyNSArOTUsMjQgQEAgc3RhdGljIGlubGluZSB2b2lkIGNvbnZlcnRKU01ldGhvZE5hbWVUb09i
amMoY29uc3QgQ1N0cmluZyYganNOYW1lLCBKU05hbWVDb252ZXIKICAgICB9CiB9CiAKLU1ldGhv
ZExpc3QgT2JqY0NsYXNzOjptZXRob2RzTmFtZWQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
SW5zdGFuY2UqKSBjb25zdAorTWV0aG9kKiBPYmpjQ2xhc3M6Om1ldGhvZE5hbWVkKFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIEluc3RhbmNlKikgY29uc3QKIHsKICAgICBTdHJpbmcgbmFtZShw
cm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKICAgICBpZiAobmFtZS5pc051bGwoKSkKLSAgICAg
ICAgcmV0dXJuIE1ldGhvZExpc3QoKTsKKyAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBNZXRob2RM
aXN0IG1ldGhvZExpc3Q7Ci0gICAgaWYgKE1ldGhvZCogbWV0aG9kID0gbV9tZXRob2RDYWNoZS5n
ZXQobmFtZS5pbXBsKCkpKSB7Ci0gICAgICAgIG1ldGhvZExpc3QuYXBwZW5kKG1ldGhvZCk7Ci0g
ICAgICAgIHJldHVybiBtZXRob2RMaXN0OwotICAgIH0KKyAgICBpZiAoTWV0aG9kKiBtZXRob2Qg
PSBtX21ldGhvZENhY2hlLmdldChuYW1lLmltcGwoKSkpCisgICAgICAgIHJldHVybiBtZXRob2Q7
CiAKICAgICBDU3RyaW5nIGpzTmFtZSA9IG5hbWUuYXNjaWkoKTsKICAgICBKU05hbWVDb252ZXJz
aW9uQnVmZmVyIGJ1ZmZlcjsKICAgICBjb252ZXJ0SlNNZXRob2ROYW1lVG9PYmpjKGpzTmFtZSwg
YnVmZmVyKTsKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG1ldGhvZE5hbWUoQWRvcHRDRiwg
Q0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZyhOVUxMLCBidWZmZXIuZGF0YSgpLCBrQ0ZTdHJpbmdF
bmNvZGluZ0FTQ0lJKSk7CiAKKyAgICBNZXRob2QqIG1ldGhvZFB0ciA9IDA7CiAgICAgQ2xhc3NT
dHJ1Y3RQdHIgdGhpc0NsYXNzID0gX2lzYTsKLSAgICB3aGlsZSAodGhpc0NsYXNzICYmIG1ldGhv
ZExpc3QuaXNFbXB0eSgpKSB7CisgICAgCisgICAgd2hpbGUgKHRoaXNDbGFzcyAmJiAhbWV0aG9k
UHRyKSB7CiAgICAgICAgIHVuc2lnbmVkIG51bU1ldGhvZHNJbkNsYXNzID0gMDsKICAgICAgICAg
TWV0aG9kU3RydWN0UHRyKiBvYmpjTWV0aG9kTGlzdCA9IGNsYXNzX2NvcHlNZXRob2RMaXN0KHRo
aXNDbGFzcywgJm51bU1ldGhvZHNJbkNsYXNzKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG51bU1ldGhvZHNJbkNsYXNzOyBpKyspIHsKQEAgLTEzNSw3ICsxMzQsNyBAQCBNZXRo
b2RMaXN0IE9iamNDbGFzczo6bWV0aG9kc05hbWVkKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IEluc3RhbmNlKikgY29uc3QKIAogICAgICAgICAgICAgaWYgKChtYXBwZWROYW1lICYmIFttYXBw
ZWROYW1lIGlzRXF1YWw6KE5TU3RyaW5nKiltZXRob2ROYW1lLmdldCgpXSkgfHwgc3RyY21wKG9i
amNNZXRob2RTZWxlY3Rvck5hbWUsIGJ1ZmZlci5kYXRhKCkpID09IDApIHsKICAgICAgICAgICAg
ICAgICBPd25QdHI8TWV0aG9kPiBtZXRob2QgPSBhZG9wdFB0cihuZXcgT2JqY01ldGhvZCh0aGlz
Q2xhc3MsIG9iamNNZXRob2RTZWxlY3RvcikpOwotICAgICAgICAgICAgICAgIG1ldGhvZExpc3Qu
YXBwZW5kKG1ldGhvZC5nZXQoKSk7CisgICAgICAgICAgICAgICAgbWV0aG9kUHRyID0gbWV0aG9k
LmdldCgpOwogICAgICAgICAgICAgICAgIG1fbWV0aG9kQ2FjaGUuYWRkKG5hbWUuaW1wbCgpLCBt
ZXRob2QucmVsZWFzZSgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0K
QEAgLTE0NCw3ICsxNDMsNyBAQCBNZXRob2RMaXN0IE9iamNDbGFzczo6bWV0aG9kc05hbWVkKFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEluc3RhbmNlKikgY29uc3QKICAgICAgICAgZnJlZShv
YmpjTWV0aG9kTGlzdCk7CiAgICAgfQogCi0gICAgcmV0dXJuIG1ldGhvZExpc3Q7CisgICAgcmV0
dXJuIG1ldGhvZFB0cjsKIH0KIAogRmllbGQqIE9iamNDbGFzczo6ZmllbGROYW1lZChQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBJbnN0YW5jZSogaW5zdGFuY2UpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tIGIvU291cmNlL1dl
YkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbQppbmRleCA0ZjViZWNhYWRiY2ExNzUx
OGNjNjgwNGVhZGE1YjkxNTU4MzQ4NDQ3Li4yYjM2MjQ4OGE1YmI1ZWE0M2ZkMzhlMmI4MWU2YjE1
ZTY1Y2YzNDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2lu
c3RhbmNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2Uu
bW0KQEAgLTE4MSwxNCArMTgxLDE0IEBAIGJvb2wgT2JqY0luc3RhbmNlOjpzdXBwb3J0c0ludm9r
ZURlZmF1bHRNZXRob2QoKSBjb25zdAogCiBjbGFzcyBPYmpDUnVudGltZU1ldGhvZCA6IHB1Ymxp
YyBSdW50aW1lTWV0aG9kIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgT2JqQ1J1bnRpbWVNZXRob2Qq
IGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNv
bnN0IFN0cmluZyYgbmFtZSwgQmluZGluZ3M6Ok1ldGhvZExpc3QmIGxpc3QpCisgICAgc3RhdGlj
IE9iakNSdW50aW1lTWV0aG9kKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUsIEJpbmRpbmdzOjpNZXRob2QqIG1l
dGhvZCkKICAgICB7CiAgICAgICAgIC8vIEZJWE1FOiBkZXByZWNhdGVkR2V0RE9NU3RydWN0dXJl
IHVzZXMgdGhlIHByb3RvdHlwZSBvZmYgb2YgdGhlIHdyb25nIGdsb2JhbCBvYmplY3QKICAgICAg
ICAgLy8gV2UgbmVlZCB0byBwYXNzIGluIHRoZSByaWdodCBnbG9iYWwgb2JqZWN0IGZvciAiaSIu
CiAgICAgICAgIFN0cnVjdHVyZSogZG9tU3RydWN0dXJlID0gV2ViQ29yZTo6ZGVwcmVjYXRlZEdl
dERPTVN0cnVjdHVyZTxPYmpDUnVudGltZU1ldGhvZD4oZXhlYyk7Ci0gICAgICAgIE9iakNSdW50
aW1lTWV0aG9kKiBtZXRob2QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxPYmpDUnVudGlt
ZU1ldGhvZD4oKmV4ZWMtPmhlYXAoKSkpIE9iakNSdW50aW1lTWV0aG9kKGdsb2JhbE9iamVjdCwg
ZG9tU3RydWN0dXJlLCBsaXN0KTsKLSAgICAgICAgbWV0aG9kLT5maW5pc2hDcmVhdGlvbihleGVj
LT5nbG9iYWxEYXRhKCksIG5hbWUpOwotICAgICAgICByZXR1cm4gbWV0aG9kOworICAgICAgICBP
YmpDUnVudGltZU1ldGhvZCogcnVudGltZU1ldGhvZCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPE9iakNSdW50aW1lTWV0aG9kPigqZXhlYy0+aGVhcCgpKSkgT2JqQ1J1bnRpbWVNZXRob2Qo
Z2xvYmFsT2JqZWN0LCBkb21TdHJ1Y3R1cmUsIG1ldGhvZCk7CisgICAgICAgIHJ1bnRpbWVNZXRo
b2QtPmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgbmFtZSk7CisgICAgICAgIHJl
dHVybiBydW50aW1lTWV0aG9kOwogICAgIH0KIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCkBAIC0yMDEsOCArMjAxLDggQEAgcHVi
bGljOgogcHJpdmF0ZToKICAgICB0eXBlZGVmIFJ1bnRpbWVNZXRob2QgQmFzZTsKIAotICAgIE9i
akNSdW50aW1lTWV0aG9kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBCaW5kaW5nczo6TWV0aG9kTGlzdCYgbGlzdCkKLSAgICAgICAgOiBSdW50aW1l
TWV0aG9kKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBsaXN0KQorICAgIE9iakNSdW50aW1lTWV0
aG9kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBC
aW5kaW5nczo6TWV0aG9kKiBtZXRob2QpCisgICAgICAgIDogUnVudGltZU1ldGhvZChnbG9iYWxP
YmplY3QsIHN0cnVjdHVyZSwgbWV0aG9kKQogICAgIHsKICAgICB9CiAKQEAgLTIxNyw4ICsyMTcs
OCBAQCBjb25zdCBDbGFzc0luZm8gT2JqQ1J1bnRpbWVNZXRob2Q6OnNfaW5mbyA9IHsgIk9iakNS
dW50aW1lTWV0aG9kIiwgJlJ1bnRpbWVNZXRobwogCiBKU1ZhbHVlIE9iamNJbnN0YW5jZTo6Z2V0
TWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKLSAg
ICBNZXRob2RMaXN0IG1ldGhvZExpc3QgPSBnZXRDbGFzcygpLT5tZXRob2RzTmFtZWQocHJvcGVy
dHlOYW1lLCB0aGlzKTsKLSAgICByZXR1cm4gT2JqQ1J1bnRpbWVNZXRob2Q6OmNyZWF0ZShleGVj
LCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCks
IG1ldGhvZExpc3QpOworICAgIE1ldGhvZCogbWV0aG9kID0gZ2V0Q2xhc3MoKS0+bWV0aG9kTmFt
ZWQocHJvcGVydHlOYW1lLCB0aGlzKTsKKyAgICByZXR1cm4gT2JqQ1J1bnRpbWVNZXRob2Q6OmNy
ZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZS5wdWJs
aWNOYW1lKCksIG1ldGhvZCk7CiB9CiAKIEpTVmFsdWUgT2JqY0luc3RhbmNlOjppbnZva2VNZXRo
b2QoRXhlY1N0YXRlKiBleGVjLCBSdW50aW1lTWV0aG9kKiBydW50aW1lTWV0aG9kKQpAQCAtMjI2
LDEzICsyMjYsMTAgQEAgSlNWYWx1ZSBPYmpjSW5zdGFuY2U6Omludm9rZU1ldGhvZChFeGVjU3Rh
dGUqIGV4ZWMsIFJ1bnRpbWVNZXRob2QqIHJ1bnRpbWVNZXRob2QKICAgICBpZiAoIWFzT2JqZWN0
KHJ1bnRpbWVNZXRob2QpLT5pbmhlcml0cygmT2JqQ1J1bnRpbWVNZXRob2Q6OnNfaW5mbykpCiAg
ICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiQXR0
ZW1wdCB0byBpbnZva2Ugbm9uLXBsdWctaW4gbWV0aG9kIG9uIHBsdWctaW4gb2JqZWN0LiIpKTsK
IAotICAgIGNvbnN0IE1ldGhvZExpc3QmIG1ldGhvZExpc3QgPSAqcnVudGltZU1ldGhvZC0+bWV0
aG9kcygpOworICAgIE9iamNNZXRob2QgKm1ldGhvZCA9IHN0YXRpY19jYXN0PE9iamNNZXRob2Qq
PihydW50aW1lTWV0aG9kLT5tZXRob2QoKSk7CisgICAgQVNTRVJUKG1ldGhvZCk7CiAKLSAgICAv
LyBPdmVybG9hZGluZyBtZXRob2RzIGlzIG5vdCBhbGxvd2VkIGluIE9iamVjdGl2ZUMuICBTaG91
bGQgb25seSBiZSBvbmUKLSAgICAvLyBuYW1lIG1hdGNoIGZvciBhIHBhcnRpY3VsYXIgbWV0aG9k
LgotICAgIEFTU0VSVChtZXRob2RMaXN0LnNpemUoKSA9PSAxKTsKLQotICAgIHJldHVybiBpbnZv
a2VPYmpjTWV0aG9kKGV4ZWMsIHN0YXRpY19jYXN0PE9iamNNZXRob2QqPihtZXRob2RMaXN0WzBd
KSk7CisgICAgcmV0dXJuIGludm9rZU9iamNNZXRob2QoZXhlYywgbWV0aG9kKTsKIH0KIAogSlNW
YWx1ZSBPYmpjSW5zdGFuY2U6Omludm9rZU9iamNNZXRob2QoRXhlY1N0YXRlKiBleGVjLCBPYmpj
TWV0aG9kKiBtZXRob2QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRf
Y2xhc3MuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X2NsYXNzLmNwcAppbmRleCA3
NjE3ODcxZjNmM2UwZWUzYzFhODdkOTg1MmMwMzk4NjQ1MDk5Y2U2Li5kYTI1ZDk1YTY3ZGQ1MWZj
Y2YxODczNTRmYjRmYjgwYzU0NTJkZGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2UvcXQvcXRfY2xhc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9jbGFz
cy5jcHAKQEAgLTEyMiw5ICsxMjIsOSBAQCBKU1ZhbHVlIFF0Q2xhc3M6OmZhbGxiYWNrT2JqZWN0
KEV4ZWNTdGF0ZSogZXhlYywgSW5zdGFuY2UqIGluc3QsIFByb3BlcnR5TmFtZSBpZAogfQogCiAv
LyBUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgaGFuZGxlZCBieSB0aGUgZmFsbGJhY2sgY2FzZSBhYm92
ZS4uLgotTWV0aG9kTGlzdCBRdENsYXNzOjptZXRob2RzTmFtZWQoUHJvcGVydHlOYW1lLCBJbnN0
YW5jZSopIGNvbnN0CitNZXRob2QqIFF0Q2xhc3M6Om1ldGhvZE5hbWVkKFByb3BlcnR5TmFtZSwg
SW5zdGFuY2UqKSBjb25zdAogewotICAgIHJldHVybiBNZXRob2RMaXN0KCk7CisgICAgcmV0dXJu
IDA7CiB9CiAKIC8vICMjIyB3ZSBtYXkgZW5kIHVwIHdpdGggYSBkaWZmZXJlbnQgc2VhcmNoIG9y
ZGVyIHRoYW4gUXRTY3JpcHQgYnkgbm90CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2UvcXQvcXRfY2xhc3MuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9jbGFzcy5oCmlu
ZGV4IGNlOWJiYzQ0NjdjYjAyMjZiZjM4MzdiNjI3NWY4NGI2MTgyODQ2MzMuLjEyNTYyOTFmZDk0
ZTZlZjU5YzNjNGM2NjhkZDY1MGE2Y2ExZjA3NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9xdC9xdF9jbGFzcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9j
bGFzcy5oCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5RdENsYXNzKCk7
CiAKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIG5hbWUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIE1l
dGhvZExpc3QgbWV0aG9kc05hbWVkKFByb3BlcnR5TmFtZSwgSW5zdGFuY2UqKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIE1ldGhvZCogbWV0aG9kTmFtZWQoUHJvcGVydHlOYW1lLCBJbnN0YW5jZSopIGNv
bnN0OwogICAgIHZpcnR1YWwgRmllbGQqIGZpZWxkTmFtZWQoUHJvcGVydHlOYW1lLCBJbnN0YW5j
ZSopIGNvbnN0OwogCiAgICAgdmlydHVhbCBKU1ZhbHVlIGZhbGxiYWNrT2JqZWN0KEV4ZWNTdGF0
ZSosIEluc3RhbmNlKiwgUHJvcGVydHlOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9xdC9xdF9pbnN0YW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRf
aW5zdGFuY2UuY3BwCmluZGV4IGExM2UzZmY4MmY1YzY4MzYyYTAxYzYwZjdjMzMwMDc2ZThjOTMz
MmYuLjhmMWJlNmUzOTA5YTM3MzM5YWE2OGZiNjUyOTM5MTdlZWVmYTc0MzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9pbnN0YW5jZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYnJpZGdlL3F0L3F0X2luc3RhbmNlLmNwcApAQCAtMjIzLDggKzIyMyw4IEBAIEpTVmFs
dWUgUXRJbnN0YW5jZTo6Z2V0TWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSkKIHsKICAgICBpZiAoIWdldENsYXNzKCkpCiAgICAgICAgIHJldHVybiBqc051
bGwoKTsKLSAgICBNZXRob2RMaXN0IG1ldGhvZExpc3QgPSBtX2NsYXNzLT5tZXRob2RzTmFtZWQo
cHJvcGVydHlOYW1lLCB0aGlzKTsKLSAgICByZXR1cm4gUnVudGltZU1ldGhvZDo6Y3JlYXRlKGV4
ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgV2ViQ29yZTo6ZGVwcmVjYXRlZEdldERP
TVN0cnVjdHVyZTxSdW50aW1lTWV0aG9kPihleGVjKSwgcHJvcGVydHlOYW1lLnB1YmxpY05hbWUo
KSwgbWV0aG9kTGlzdCk7CisgICAgTWV0aG9kKiBtZXRob2QgPSBtX2NsYXNzLT5tZXRob2ROYW1l
ZChwcm9wZXJ0eU5hbWUsIHRoaXMpOworICAgIHJldHVybiBSdW50aW1lTWV0aG9kOjpjcmVhdGUo
ZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBXZWJDb3JlOjpkZXByZWNhdGVkR2V0
RE9NU3RydWN0dXJlPFJ1bnRpbWVNZXRob2Q+KGV4ZWMpLCBwcm9wZXJ0eU5hbWUucHVibGljTmFt
ZSgpLCBtZXRob2QpOwogfQogCiBKU1ZhbHVlIFF0SW5zdGFuY2U6Omludm9rZU1ldGhvZChFeGVj
U3RhdGUqLCBSdW50aW1lTWV0aG9kKikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9ydW50aW1lX21ldGhvZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRo
b2QuY3BwCmluZGV4IDlmZGI2NGRmNzNjZTBjOGVhNzQ0Y2M3OTQ4MTY1YzM2NTVhYmI1NzUuLmUy
YzBmMzQwMzk5YTE0MGI1NjA5MzNjYzZjNmQzYjc2NGVjMjgwZjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcApAQCAtNDMsMTggKzQzLDEzIEBAIEFTU0VSVF9DTEFT
U19GSVRTX0lOX0NFTEwoUnVudGltZU1ldGhvZCk7CiAKIGNvbnN0IENsYXNzSW5mbyBSdW50aW1l
TWV0aG9kOjpzX2luZm8gPSB7ICJSdW50aW1lTWV0aG9kIiwgJkludGVybmFsRnVuY3Rpb246OnNf
aW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShSdW50aW1lTWV0aG9kKSB9OwogCi1SdW50
aW1lTWV0aG9kOjpSdW50aW1lTWV0aG9kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBCaW5kaW5nczo6TWV0aG9kTGlzdCYgbSkKLSAgICAvLyBDYWxs
ZXJzIHdpbGwgbmVlZCB0byBwYXNzIGluIHRoZSByaWdodCBnbG9iYWwgb2JqZWN0IGNvcnJlc3Bv
bmRpbmcgdG8gdGhpcyBuYXRpdmUgb2JqZWN0ICJtIi4KK1J1bnRpbWVNZXRob2Q6OlJ1bnRpbWVN
ZXRob2QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IE1ldGhvZCogbWV0aG9kKQorICAgIC8vIENhbGxlcnMgd2lsbCBuZWVkIHRvIHBhc3MgaW4gdGhl
IHJpZ2h0IGdsb2JhbCBvYmplY3QgY29ycmVzcG9uZGluZyB0byB0aGlzIG5hdGl2ZSBvYmplY3Qg
Im1ldGhvZCIuCiAgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKGdsb2JhbE9iamVjdCwgc3RydWN0dXJl
KQotICAgICwgX21ldGhvZExpc3QoYWRvcHRQdHIobmV3IE1ldGhvZExpc3QobSkpKQorICAgICwg
bV9tZXRob2QobWV0aG9kKQogewogfQogCi12b2lkIFJ1bnRpbWVNZXRob2Q6OmRlc3Ryb3koSlND
ZWxsKiBjZWxsKQotewotICAgIHN0YXRpY19jYXN0PFJ1bnRpbWVNZXRob2QqPihjZWxsKS0+UnVu
dGltZU1ldGhvZDo6flJ1bnRpbWVNZXRob2QoKTsKLX0KLQogdm9pZCBSdW50aW1lTWV0aG9kOjpm
aW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFN0cmluZyYgaWRl
bnQpCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSwgaWRlbnQpOwpAQCAt
NjUsMTMgKzYwLDcgQEAgSlNWYWx1ZSBSdW50aW1lTWV0aG9kOjpsZW5ndGhHZXR0ZXIoRXhlY1N0
YXRlKiwgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQogewogICAgIFJ1bnRpbWVNZXRo
b2QqIHRoaXNPYmogPSBzdGF0aWNfY2FzdDxSdW50aW1lTWV0aG9kKj4oYXNPYmplY3Qoc2xvdEJh
c2UpKTsKIAotICAgIC8vIEljayEgIFRoZXJlIG1heSBiZSBtb3JlIHRoYW4gb25lIG1ldGhvZCB3
aXRoIHRoaXMgbmFtZS4gIEFyYml0cmFyaWx5Ci0gICAgLy8ganVzdCBwaWNrIHRoZSBmaXJzdCBt
ZXRob2QuICBUaGUgZnVuZGFtZW50YWwgcHJvYmxlbSBoZXJlIGlzIHRoYXQgCi0gICAgLy8gSmF2
YVNjcmlwdCBkb2Vzbid0IGhhdmUgdGhlIG5vdGlvbiBvZiBtZXRob2Qgb3ZlcmxvYWRpbmcgYW5k
Ci0gICAgLy8gSmF2YSBkb2VzLgotICAgIC8vIEZJWE1FOiBhIGJldHRlciBzb2x1dGlvbiBtaWdo
dCBiZSB0byBnaXZlIHRoZSBtYXhpbXVtIG51bWJlciBvZiBwYXJhbWV0ZXJzCi0gICAgLy8gb2Yg
YW55IG1ldGhvZAotICAgIHJldHVybiBqc051bWJlcih0aGlzT2JqLT5fbWV0aG9kTGlzdC0+YXQo
MCktPm51bVBhcmFtZXRlcnMoKSk7CisgICAgcmV0dXJuIGpzTnVtYmVyKHRoaXNPYmotPm1fbWV0
aG9kLT5udW1QYXJhbWV0ZXJzKCkpOwogfQogCiBib29sIFJ1bnRpbWVNZXRob2Q6OmdldE93blBy
b3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90ICZzbG90KQpAQCAtMTAyLDcgKzkxLDcgQEAgc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFJ1bnRpbWVNZXRob2QoRXhlY1N0YXRl
KiBleGVjKQogewogICAgIFJ1bnRpbWVNZXRob2QqIG1ldGhvZCA9IHN0YXRpY19jYXN0PFJ1bnRp
bWVNZXRob2QqPihleGVjLT5jYWxsZWUoKSk7CiAKLSAgICBpZiAobWV0aG9kLT5tZXRob2RzKCkt
PmlzRW1wdHkoKSkKKyAgICBpZiAoIW1ldGhvZC0+bWV0aG9kKCkpCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKICAgICBSZWZQdHI8SW5zdGFuY2U+IGlu
c3RhbmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9k
LmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuaAppbmRleCA3NDgxNjA1
ZDQ0MTU4Yzk4MDkyMDMyMWQzMTEwYTQ5NDRmYmE1ZTRhLi41NjZiNjU2OTlhOTZiMDI1NjgyZDk1
NDQzOTdlZDM5Nzg3MWMzMTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVu
dGltZV9tZXRob2QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2Qu
aApAQCAtMzcsMTYgKzM3LDE0IEBAIGNsYXNzIFJ1bnRpbWVNZXRob2QgOiBwdWJsaWMgSW50ZXJu
YWxGdW5jdGlvbiB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7
CiAKLSAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwotCi0gICAgc3RhdGljIFJ1bnRp
bWVNZXRob2QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBTdHJpbmcmIG5hbWUsIEJpbmRpbmdz
OjpNZXRob2RMaXN0JiBtZXRob2RMaXN0KQorICAgIHN0YXRpYyBSdW50aW1lTWV0aG9kKiBjcmVh
dGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBCaW5kaW5nczo6TWV0aG9kKiBtZXRo
b2QpCiAgICAgewotICAgICAgICBSdW50aW1lTWV0aG9kKiBtZXRob2QgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxSdW50aW1lTWV0aG9kPigqZXhlYy0+aGVhcCgpKSkgUnVudGltZU1ldGhv
ZChnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgbWV0aG9kTGlzdCk7Ci0gICAgICAgIG1ldGhvZC0+
ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBuYW1lKTsKLSAgICAgICAgcmV0dXJu
IG1ldGhvZDsKKyAgICAgICAgUnVudGltZU1ldGhvZCogcnVudGltZU1ldGhvZCA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPFJ1bnRpbWVNZXRob2Q+KCpleGVjLT5oZWFwKCkpKSBSdW50aW1l
TWV0aG9kKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBtZXRob2QpOworICAgICAgICBydW50aW1l
TWV0aG9kLT5maW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIG5hbWUpOworICAgICAg
ICByZXR1cm4gcnVudGltZU1ldGhvZDsKICAgICB9CiAKLSAgICBCaW5kaW5nczo6TWV0aG9kTGlz
dCogbWV0aG9kcygpIGNvbnN0IHsgcmV0dXJuIF9tZXRob2RMaXN0LmdldCgpOyB9CisgICAgQmlu
ZGluZ3M6Ok1ldGhvZCogbWV0aG9kKCkgY29uc3QgeyByZXR1cm4gbV9tZXRob2Q7IH0KIAogICAg
IHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCkBAIC02MSw3ICs1OSw3IEBAIHB1Ymxp
YzoKICAgICB9CiAKIHByb3RlY3RlZDoKLSAgICBSdW50aW1lTWV0aG9kKEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiwgQmluZGluZ3M6Ok1ldGhvZExpc3QmKTsKKyAgICBSdW50aW1lTWV0aG9k
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgQmluZGluZ3M6Ok1ldGhvZCopOwogICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiwgY29uc3QgU3RyaW5nJik7CiAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVy
dHlTbG90IHwgSW50ZXJuYWxGdW5jdGlvbjo6U3RydWN0dXJlRmxhZ3M7CiAgICAgc3RhdGljIENh
bGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CkBAIC03Miw3ICs3MCw3IEBA
IHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgc3RhdGljIEpTVmFsdWUgbGVuZ3RoR2V0dGVyKEV4
ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CiAKLSAgICBPd25QdHI8QmluZGluZ3M6
Ok1ldGhvZExpc3Q+IF9tZXRob2RMaXN0OworICAgIEJpbmRpbmdzOjpNZXRob2QqIG1fbWV0aG9k
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvcnVudGltZV9vYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVf
b2JqZWN0LmNwcAppbmRleCBhMWEzMGNlMDE1MTIyODI3Yzk5Y2Y4OGQwMWFhMDcxNmVlNzM5NGY1
Li44NzBhZjEwOTBmODI0NTA1NTg4MTIyYmU5OGEyNDg5ZDVhNzJiMmE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAKQEAgLTE0MCw4ICsxNDAsNyBAQCBib29sIFJ1
bnRpbWVPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSAq
ZXhlYywgUHJvcGVydHlOYQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gTm93IGNo
ZWNrIGlmIGEgbWV0aG9kIHdpdGggc3BlY2lmaWVkIG5hbWUgZXhpc3RzLCBpZiBzbyByZXR1cm4g
YSBmdW5jdGlvbiBvYmplY3QgZm9yCiAgICAgICAgICAgICAvLyB0aGF0IG1ldGhvZC4KLSAgICAg
ICAgICAgIE1ldGhvZExpc3QgbWV0aG9kTGlzdCA9IGFDbGFzcy0+bWV0aG9kc05hbWVkKHByb3Bl
cnR5TmFtZSwgaW5zdGFuY2UuZ2V0KCkpOwotICAgICAgICAgICAgaWYgKG1ldGhvZExpc3Quc2l6
ZSgpID4gMCkgeworICAgICAgICAgICAgaWYgKGFDbGFzcy0+bWV0aG9kTmFtZWQocHJvcGVydHlO
YW1lLCBpbnN0YW5jZS5nZXQoKSkpIHsKICAgICAgICAgICAgICAgICBzbG90LnNldEN1c3RvbSh0
aGlzT2JqZWN0LCB0aGlzT2JqZWN0LT5tZXRob2RHZXR0ZXIpOwogICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgIGluc3RhbmNlLT5lbmQoKTsKQEAgLTE4Nyw4ICsxODYsNyBAQCBib29s
IFJ1bnRpbWVPYmplY3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdGUgKmV4ZWMsCiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBOb3cg
Y2hlY2sgaWYgYSBtZXRob2Qgd2l0aCBzcGVjaWZpZWQgbmFtZSBleGlzdHMsIGlmIHNvIHJldHVy
biBhIGZ1bmN0aW9uIG9iamVjdCBmb3IKICAgICAgICAgICAgIC8vIHRoYXQgbWV0aG9kLgotICAg
ICAgICAgICAgTWV0aG9kTGlzdCBtZXRob2RMaXN0ID0gYUNsYXNzLT5tZXRob2RzTmFtZWQocHJv
cGVydHlOYW1lLCBpbnN0YW5jZS5nZXQoKSk7Ci0gICAgICAgICAgICBpZiAobWV0aG9kTGlzdC5z
aXplKCkgPiAwKSB7CisgICAgICAgICAgICBpZiAoYUNsYXNzLT5tZXRob2ROYW1lZChwcm9wZXJ0
eU5hbWUsIGluc3RhbmNlLmdldCgpKSkgewogICAgICAgICAgICAgICAgIFByb3BlcnR5U2xvdCBz
bG90OwogICAgICAgICAgICAgICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXNPYmplY3QsIG1ldGhvZEdl
dHRlcik7CiAgICAgICAgICAgICAgICAgaW5zdGFuY2UtPmVuZCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5oIGIvU291cmNlL1dl
YktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5oCmluZGV4IDkyYTFhYmE0NzQy
MzgxNmViZDkzNzhlNDcxMzhjZjE2ZjA0NjI2ZTAuLjVkMDgwMWYyOTYxMzdiNThkM2M0MDE1ZmY2
MmVkMDllNDZkNzU0YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9z
dGVkL1Byb3h5SW5zdGFuY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3Rl
ZC9Qcm94eUluc3RhbmNlLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIH0KICAgICB+
UHJveHlJbnN0YW5jZSgpOwogCi0gICAgSlNDOjpCaW5kaW5nczo6TWV0aG9kTGlzdCBtZXRob2Rz
TmFtZWQoSlNDOjpQcm9wZXJ0eU5hbWUpOworICAgIEpTQzo6QmluZGluZ3M6Ok1ldGhvZCogbWV0
aG9kTmFtZWQoSlNDOjpQcm9wZXJ0eU5hbWUpOwogICAgIEpTQzo6QmluZGluZ3M6OkZpZWxkKiBm
aWVsZE5hbWVkKEpTQzo6UHJvcGVydHlOYW1lKTsKIAogICAgIEpTQzo6SlNWYWx1ZSBmaWVsZFZh
bHVlKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpCaW5kaW5nczo6RmllbGQqKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFu
Y2UubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1t
CmluZGV4IDQ5ZTk4ZmU2ZTIxNDdkMDdlZmUwODA5YjMyM2Y1ZDFiNjJkZjFjNTMuLjEzMjNmNmUz
NjkxMGM5ZTQ1ZTU5NDlkZjFmODI1M2FmZWUzNmIxOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW0KKysrIGIvU291cmNlL1dlYktp
dC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbQpAQCAtNTAsMTMgKzUwLDEzIEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBQcm94eUNsYXNzIDogcHVibGljIEpTQzo6Qmlu
ZGluZ3M6OkNsYXNzIHsKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBNZXRob2RMaXN0IG1ldGhvZHNO
YW1lZChQcm9wZXJ0eU5hbWUsIEluc3RhbmNlKikgY29uc3Q7CisgICAgdmlydHVhbCBNZXRob2Qq
IG1ldGhvZE5hbWVkKFByb3BlcnR5TmFtZSwgSW5zdGFuY2UqKSBjb25zdDsKICAgICB2aXJ0dWFs
IEZpZWxkKiBmaWVsZE5hbWVkKFByb3BlcnR5TmFtZSwgSW5zdGFuY2UqKSBjb25zdDsKIH07CiAK
LU1ldGhvZExpc3QgUHJveHlDbGFzczo6bWV0aG9kc05hbWVkKFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIEluc3RhbmNlKiBpbnN0YW5jZSkgY29uc3QKK01ldGhvZCogUHJveHlDbGFzczo6bWV0
aG9kTmFtZWQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSW5zdGFuY2UqIGluc3RhbmNlKSBj
b25zdAogewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxQcm94eUluc3RhbmNlKj4oaW5zdGFuY2Up
LT5tZXRob2RzTmFtZWQocHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UHJv
eHlJbnN0YW5jZSo+KGluc3RhbmNlKS0+bWV0aG9kTmFtZWQocHJvcGVydHlOYW1lKTsKIH0KIAog
RmllbGQqIFByb3h5Q2xhc3M6OmZpZWxkTmFtZWQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
SW5zdGFuY2UqIGluc3RhbmNlKSBjb25zdApAQCAtMTgxLDE0ICsxODEsMTQgQEAgY2xhc3MgUHJv
eHlSdW50aW1lTWV0aG9kIDogcHVibGljIFJ1bnRpbWVNZXRob2QgewogcHVibGljOgogICAgIHR5
cGVkZWYgUnVudGltZU1ldGhvZCBCYXNlOwogCi0gICAgc3RhdGljIFByb3h5UnVudGltZU1ldGhv
ZCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBCaW5kaW5nczo6TWV0aG9kTGlzdCYgbGlzdCkKKyAgICBzdGF0
aWMgUHJveHlSdW50aW1lTWV0aG9kKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUsIEJpbmRpbmdzOjpNZXRob2Qq
IG1ldGhvZCkKICAgICB7CiAgICAgICAgIC8vIEZJWE1FOiBkZXByZWNhdGVkR2V0RE9NU3RydWN0
dXJlIHVzZXMgdGhlIHByb3RvdHlwZSBvZmYgb2YgdGhlIHdyb25nIGdsb2JhbCBvYmplY3QKICAg
ICAgICAgLy8gZXhlYy1nbG9iYWxEYXRhKCkgaXMgYWxzbyBsaWtlbHkgd3JvbmcuCiAgICAgICAg
IFN0cnVjdHVyZSogZG9tU3RydWN0dXJlID0gZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZTxQcm94
eVJ1bnRpbWVNZXRob2Q+KGV4ZWMpOwotICAgICAgICBQcm94eVJ1bnRpbWVNZXRob2QqIG1ldGhv
ZCA9IG5ldyAoYWxsb2NhdGVDZWxsPFByb3h5UnVudGltZU1ldGhvZD4oKmV4ZWMtPmhlYXAoKSkp
IFByb3h5UnVudGltZU1ldGhvZChnbG9iYWxPYmplY3QsIGRvbVN0cnVjdHVyZSwgbGlzdCk7Ci0g
ICAgICAgIG1ldGhvZC0+ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBuYW1lKTsK
LSAgICAgICAgcmV0dXJuIG1ldGhvZDsKKyAgICAgICAgUHJveHlSdW50aW1lTWV0aG9kKiBydW50
aW1lTWV0aG9kID0gbmV3IChhbGxvY2F0ZUNlbGw8UHJveHlSdW50aW1lTWV0aG9kPigqZXhlYy0+
aGVhcCgpKSkgUHJveHlSdW50aW1lTWV0aG9kKGdsb2JhbE9iamVjdCwgZG9tU3RydWN0dXJlLCBt
ZXRob2QpOworICAgICAgICBydW50aW1lTWV0aG9kLT5maW5pc2hDcmVhdGlvbihleGVjLT5nbG9i
YWxEYXRhKCksIG5hbWUpOworICAgICAgICByZXR1cm4gcnVudGltZU1ldGhvZDsKICAgICB9CiAK
ICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkK
QEAgLTE5OSw4ICsxOTksOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBz
X2luZm87CiAKIHByaXZhdGU6Ci0gICAgUHJveHlSdW50aW1lTWV0aG9kKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBCaW5kaW5nczo6TWV0aG9kTGlz
dCYgbGlzdCkKLSAgICAgICAgOiBSdW50aW1lTWV0aG9kKGdsb2JhbE9iamVjdCwgc3RydWN0dXJl
LCBsaXN0KQorICAgIFByb3h5UnVudGltZU1ldGhvZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQmluZGluZ3M6Ok1ldGhvZCogbWV0aG9kKQorICAg
ICAgICA6IFJ1bnRpbWVNZXRob2QoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIG1ldGhvZCkKICAg
ICB7CiAgICAgfQogCkBAIC0yMTUsOCArMjE1LDggQEAgY29uc3QgQ2xhc3NJbmZvIFByb3h5UnVu
dGltZU1ldGhvZDo6c19pbmZvID0geyAiUHJveHlSdW50aW1lTWV0aG9kIiwgJlJ1bnRpbWVNZXQK
IAogSlNWYWx1ZSBQcm94eUluc3RhbmNlOjpnZXRNZXRob2QoSlNDOjpFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgTWV0aG9kTGlzdCBtZXRob2RMaXN0
ID0gZ2V0Q2xhc3MoKS0+bWV0aG9kc05hbWVkKHByb3BlcnR5TmFtZSwgdGhpcyk7Ci0gICAgcmV0
dXJuIFByb3h5UnVudGltZU1ldGhvZDo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKSwgcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSwgbWV0aG9kTGlzdCk7CisgICAgTWV0
aG9kKiBtZXRob2QgPSBnZXRDbGFzcygpLT5tZXRob2ROYW1lZChwcm9wZXJ0eU5hbWUsIHRoaXMp
OworICAgIHJldHVybiBQcm94eVJ1bnRpbWVNZXRob2Q6OmNyZWF0ZShleGVjLCBleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCksIG1ldGhvZCk7CiB9
CiAKIEpTVmFsdWUgUHJveHlJbnN0YW5jZTo6aW52b2tlTWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywg
SlNDOjpSdW50aW1lTWV0aG9kKiBydW50aW1lTWV0aG9kKQpAQCAtMjI0LDExICsyMjQsOCBAQCBK
U1ZhbHVlIFByb3h5SW5zdGFuY2U6Omludm9rZU1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6
UnVudGltZU1ldGhvZCogcnVudGltZQogICAgIGlmICghYXNPYmplY3QocnVudGltZU1ldGhvZCkt
PmluaGVyaXRzKCZQcm94eVJ1bnRpbWVNZXRob2Q6OnNfaW5mbykpCiAgICAgICAgIHJldHVybiB0
aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiQXR0ZW1wdCB0byBpbnZva2Ug
bm9uLXBsdWctaW4gbWV0aG9kIG9uIHBsdWctaW4gb2JqZWN0LiIpKTsKIAotICAgIGNvbnN0IE1l
dGhvZExpc3QmIG1ldGhvZExpc3QgPSAqcnVudGltZU1ldGhvZC0+bWV0aG9kcygpOwotCi0gICAg
QVNTRVJUKG1ldGhvZExpc3Quc2l6ZSgpID09IDEpOwotCi0gICAgUHJveHlNZXRob2QqIG1ldGhv
ZCA9IHN0YXRpY19jYXN0PFByb3h5TWV0aG9kKj4obWV0aG9kTGlzdFswXSk7CisgICAgUHJveHlN
ZXRob2QqIG1ldGhvZCA9IHN0YXRpY19jYXN0PFByb3h5TWV0aG9kKj4ocnVudGltZU1ldGhvZC0+
bWV0aG9kKCkpOworICAgIEFTU0VSVChtZXRob2QpOwogCiAgICAgcmV0dXJuIGludm9rZShleGVj
LCBJbnZva2UsIG1ldGhvZC0+c2VydmVySWRlbnRpZmllcigpLCBBcmdMaXN0KGV4ZWMpKTsKIH0K
QEAgLTM0NiwyMiArMzQzLDIwIEBAIHZvaWQgUHJveHlJbnN0YW5jZTo6Z2V0UHJvcGVydHlOYW1l
cyhFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBuYW1lQXJyCiAgICAgfQogfQog
Ci1NZXRob2RMaXN0IFByb3h5SW5zdGFuY2U6Om1ldGhvZHNOYW1lZChQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lKQorTWV0aG9kKiBQcm94eUluc3RhbmNlOjptZXRob2ROYW1lZChQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lKQogewogICAgIFN0cmluZyBuYW1lKHByb3BlcnR5TmFtZS5wdWJsaWNO
YW1lKCkpOwogICAgIGlmIChuYW1lLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gTWV0aG9kTGlz
dCgpOworICAgICAgICByZXR1cm4gMDsKIAogICAgIGlmICghbV9pbnN0YW5jZVByb3h5KQotICAg
ICAgICByZXR1cm4gTWV0aG9kTGlzdCgpOworICAgICAgICByZXR1cm4gMDsKICAgICAKICAgICAv
LyBJZiB3ZSBhbHJlYWR5IGhhdmUgYW4gZW50cnkgaW4gdGhlIG1hcCwgdXNlIGl0LgogICAgIE1l
dGhvZE1hcDo6aXRlcmF0b3IgZXhpc3RpbmdNYXBFbnRyeSA9IG1fbWV0aG9kcy5maW5kKG5hbWUu
aW1wbCgpKTsKICAgICBpZiAoZXhpc3RpbmdNYXBFbnRyeSAhPSBtX21ldGhvZHMuZW5kKCkpIHsK
LSAgICAgICAgTWV0aG9kTGlzdCBtZXRob2RMaXN0OwogICAgICAgICBpZiAoZXhpc3RpbmdNYXBF
bnRyeS0+c2Vjb25kKQotICAgICAgICAgICAgbWV0aG9kTGlzdC5hcHBlbmQoZXhpc3RpbmdNYXBF
bnRyeS0+c2Vjb25kKTsKLSAgICAgICAgcmV0dXJuIG1ldGhvZExpc3Q7CisgICAgICAgICAgICBy
ZXR1cm4gZXhpc3RpbmdNYXBFbnRyeS0+c2Vjb25kOwogICAgIH0KICAgICAKICAgICB1aW50NjRf
dCBtZXRob2ROYW1lID0gcmVpbnRlcnByZXRfY2FzdDx1aW50NjRfdD4oX05QTl9HZXRTdHJpbmdJ
ZGVudGlmaWVyKG5hbWUuYXNjaWkoKS5kYXRhKCkpKTsKQEAgLTM3MCwyNCArMzY1LDIxIEBAIE1l
dGhvZExpc3QgUHJveHlJbnN0YW5jZTo6bWV0aG9kc05hbWVkKFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUpCiAgICAgaWYgKF9XS1BITlBPYmplY3RIYXNNZXRob2QobV9pbnN0YW5jZVByb3h5LT5o
b3N0UHJveHkoKS0+cG9ydCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1faW5z
dGFuY2VQcm94eS0+cGx1Z2luSUQoKSwgcmVxdWVzdElELAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1fb2JqZWN0SUQsIG1ldGhvZE5hbWUpICE9IEtFUk5fU1VDQ0VTUykKLSAgICAg
ICAgcmV0dXJuIE1ldGhvZExpc3QoKTsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgCiAgICAgYXV0
b19wdHI8TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpCb29sZWFuUmVwbHk+IHJlcGx5ID0g
d2FpdEZvclJlcGx5PE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6Qm9vbGVhblJlcGx5Pihy
ZXF1ZXN0SUQpOwogICAgIGlmICghcmVwbHkuZ2V0KCkpCi0gICAgICAgIHJldHVybiBNZXRob2RM
aXN0KCk7CisgICAgICAgIHJldHVybiAwOwogCiAgICAgaWYgKCFyZXBseS0+bV9yZXN1bHQgJiYg
IW1faW5zdGFuY2VQcm94eS0+aG9zdFByb3h5KCktPnNob3VsZENhY2hlTWlzc2luZ1Byb3BlcnRp
ZXNBbmRNZXRob2RzKCkpCi0gICAgICAgIHJldHVybiBNZXRob2RMaXN0KCk7CisgICAgICAgIHJl
dHVybiAwOwogCiAgICAgLy8gQWRkIGEgbmV3IGVudHJ5IHRvIHRoZSBtYXAgdW5sZXNzIGFuIGVu
dHJ5IHdhcyBhZGRlZCB3aGlsZSB3ZSB3ZXJlIGluIHdhaXRGb3JSZXBseS4KICAgICBNZXRob2RN
YXA6OkFkZFJlc3VsdCBtYXBBZGRSZXN1bHQgPSBtX21ldGhvZHMuYWRkKG5hbWUuaW1wbCgpLCAw
KTsKICAgICBpZiAobWFwQWRkUmVzdWx0LmlzTmV3RW50cnkgJiYgcmVwbHktPm1fcmVzdWx0KQog
ICAgICAgICBtYXBBZGRSZXN1bHQuaXRlcmF0b3ItPnNlY29uZCA9IG5ldyBQcm94eU1ldGhvZCht
ZXRob2ROYW1lKTsKIAotICAgIE1ldGhvZExpc3QgbWV0aG9kTGlzdDsKLSAgICBpZiAobWFwQWRk
UmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQpCi0gICAgICAgIG1ldGhvZExpc3QuYXBwZW5kKG1hcEFk
ZFJlc3VsdC5pdGVyYXRvci0+c2Vjb25kKTsKLSAgICByZXR1cm4gbWV0aG9kTGlzdDsKKyAgICBy
ZXR1cm4gbWFwQWRkUmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQ7CiB9CiAKIEZpZWxkKiBQcm94eUlu
c3RhbmNlOjpmaWVsZE5hbWVkKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCg==
</data>
<flag name="review"
          id="178661"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
      

    </bug>

</bugzilla>