<?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>202407</bug_id>
          
          <creation_ts>2019-10-01 08:43:30 -0700</creation_ts>
          <short_desc>[GTK][WPE] Stop using legacy custom protocol implementation</short_desc>
          <delta_ts>2019-10-02 01:00:39 -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>WebKitGTK</component>
          <version>WebKit 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>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>annulen</cc>
    
    <cc>berto</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>rakuco</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1575543</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-10-01 08:43:30 -0700</bug_when>
    <thetext>Use the new approach, which is simpler and doesn&apos;t require to go to the network process to load custom protocols.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575546</commentid>
    <comment_count>1</comment_count>
      <attachid>379905</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-10-01 08:48:31 -0700</bug_when>
    <thetext>Created attachment 379905
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575548</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-10-01 08:49:07 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575550</commentid>
    <comment_count>3</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-10-01 08:57:52 -0700</bug_when>
    <thetext>Oops, I removed the wrong file :-P</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575556</commentid>
    <comment_count>4</comment_count>
      <attachid>379908</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-10-01 09:05:34 -0700</bug_when>
    <thetext>Created attachment 379908
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575561</commentid>
    <comment_count>5</comment_count>
      <attachid>379909</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-10-01 09:14:42 -0700</bug_when>
    <thetext>Created attachment 379909
Fix WPE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575571</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-10-01 09:33:00 -0700</bug_when>
    <thetext>The linking errors fixed here just by doing a clean build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575899</commentid>
    <comment_count>7</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-10-02 01:00:39 -0700</bug_when>
    <thetext>Committed r250597: &lt;https://trac.webkit.org/changeset/250597&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379905</attachid>
            <date>2019-10-01 08:48:31 -0700</date>
            <delta_ts>2019-10-01 09:05:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-kill-legacy-custom-protocols.diff</filename>
            <type>text/plain</type>
            <size>69452</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA1MDk3NjI2M2MzNC4uYThi
ODU2MWFlOTUgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNyBAQAorMjAxOS0xMC0wMSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxp
YS5jb20+CisKKyAgICAgICAgW0dUS11bV1BFXSBTdG9wIHVzaW5nIGxlZ2FjeSBjdXN0b20gcHJv
dG9jb2wgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwMjQwNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE1ha2UgTEVHQUNZX0NVU1RPTV9QUk9UT0NPTF9NQU5BR0VSIGRpc2FibGVk
IGJ5IGRlZmF1bHQuCisKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc0ZUVy5jbWFrZToK
KyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc1BsYXlTdGF0aW9uLmNtYWtlOgorICAgICAg
ICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zV2luLmNtYWtlOgorICAgICAgICAqIFNvdXJjZS9jbWFr
ZS9XZWJLaXRGZWF0dXJlcy5jbWFrZToKKwogMjAxOS0wOS0zMCAgQWxleCBDaHJpc3RlbnNlbiAg
PGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlc3VycmVjdCBNYWMgQ01ha2Ug
YnVpbGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCAzY2Y5OGY5YjdiYy4uYWU1ZTcxNmFhMDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNiBAQAorMjAxOS0xMC0wMSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2Fy
Y2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV1BFXSBTdG9wIHVzaW5nIGxlZ2FjeSBj
dXN0b20gcHJvdG9jb2wgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjQwNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSB0aGUgY29kZSB0byBzZXR1cCBjdXN0b20gcHJv
dG9jb2xzIGluIHNvdXAgc2Vzc2lvbi4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291
cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cE5ldHdvcmtT
ZXNzaW9uOjpTb3VwTmV0d29ya1Nlc3Npb24pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
c291cC9Tb3VwTmV0d29ya1Nlc3Npb24uaDoKKwogMjAxOS0wOS0zMCAgQWxleCBDaHJpc3RlbnNl
biAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlc3VycmVjdCBNYWMgQ01h
a2UgYnVpbGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAKaW5kZXggMDk2ZGU1ZmU4YzkuLjQ2YzhkNDVi
MzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291
cE5ldHdvcmtTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcApAQCAtNDUsNyArNDUsNiBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBzdGF0aWMgYm9vbCBnSWdub3JlVExTRXJyb3JzOwotc3RhdGljIEdUeXBl
IGdDdXN0b21Qcm90b2NvbFJlcXVlc3RUeXBlOwogCiBzdGF0aWMgQ1N0cmluZyYgaW5pdGlhbEFj
Y2VwdExhbmd1YWdlcygpCiB7CkBAIC0xMzQsOCArMTMzLDYgQEAgU291cE5ldHdvcmtTZXNzaW9u
OjpTb3VwTmV0d29ya1Nlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogI2VuZGlmCiAg
ICAgICAgIG51bGxwdHIpOwogCi0gICAgc2V0dXBDdXN0b21Qcm90b2NvbHMoKTsKLQogICAgIGlm
ICghaW5pdGlhbEFjY2VwdExhbmd1YWdlcygpLmlzTnVsbCgpKQogICAgICAgICBzZXRBY2NlcHRM
YW5ndWFnZXMoaW5pdGlhbEFjY2VwdExhbmd1YWdlcygpKTsKIApAQCAtMzM3LDI0ICszMzQsNiBA
QCB2b2lkIFNvdXBOZXR3b3JrU2Vzc2lvbjo6c2V0QWNjZXB0TGFuZ3VhZ2VzKGNvbnN0IENTdHJp
bmcmIGxhbmd1YWdlcykKICAgICBnX29iamVjdF9zZXQobV9zb3VwU2Vzc2lvbi5nZXQoKSwgImFj
Y2VwdC1sYW5ndWFnZSIsIGxhbmd1YWdlcy5kYXRhKCksIG51bGxwdHIpOwogfQogCi12b2lkIFNv
dXBOZXR3b3JrU2Vzc2lvbjo6c2V0Q3VzdG9tUHJvdG9jb2xSZXF1ZXN0VHlwZShHVHlwZSByZXF1
ZXN0VHlwZSkKLXsKLSAgICBBU1NFUlQoZ190eXBlX2lzX2EocmVxdWVzdFR5cGUsIFNPVVBfVFlQ
RV9SRVFVRVNUKSk7Ci0gICAgZ0N1c3RvbVByb3RvY29sUmVxdWVzdFR5cGUgPSByZXF1ZXN0VHlw
ZTsKLX0KLQotdm9pZCBTb3VwTmV0d29ya1Nlc3Npb246OnNldHVwQ3VzdG9tUHJvdG9jb2xzKCkK
LXsKLSAgICBpZiAoIWdfdHlwZV9pc19hKGdDdXN0b21Qcm90b2NvbFJlcXVlc3RUeXBlLCBTT1VQ
X1RZUEVfUkVRVUVTVCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8qIHJlcXVlc3RDbGFz
cyA9IHN0YXRpY19jYXN0PFNvdXBSZXF1ZXN0Q2xhc3MqPihnX3R5cGVfY2xhc3NfcGVlayhnQ3Vz
dG9tUHJvdG9jb2xSZXF1ZXN0VHlwZSkpOwotICAgIGlmICghcmVxdWVzdENsYXNzIHx8ICFyZXF1
ZXN0Q2xhc3MtPnNjaGVtZXMpCi0gICAgICAgIHJldHVybjsKLQotICAgIHNvdXBfc2Vzc2lvbl9h
ZGRfZmVhdHVyZV9ieV90eXBlKG1fc291cFNlc3Npb24uZ2V0KCksIGdDdXN0b21Qcm90b2NvbFJl
cXVlc3RUeXBlKTsKLX0KLQogdm9pZCBTb3VwTmV0d29ya1Nlc3Npb246OnNldFNob3VsZElnbm9y
ZVRMU0Vycm9ycyhib29sIGlnbm9yZVRMU0Vycm9ycykKIHsKICAgICBnSWdub3JlVExTRXJyb3Jz
ID0gaWdub3JlVExTRXJyb3JzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5oCmluZGV4IGVjY2RhNDFhZTE0Li43
MmI2NTA3ZjcxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uaApAQCAtNzIsOSArNzIsNiBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIE9wdGlvbmFsPFJlc291cmNlRXJyb3I+IGNoZWNrVExTRXJyb3JzKGNvbnN0
IFVSTCYsIEdUbHNDZXJ0aWZpY2F0ZSosIEdUbHNDZXJ0aWZpY2F0ZUZsYWdzKTsKICAgICBzdGF0
aWMgdm9pZCBhbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QoY29uc3QgQ2VydGlm
aWNhdGVJbmZvJiwgY29uc3QgU3RyaW5nJiBob3N0KTsKIAotICAgIHN0YXRpYyB2b2lkIHNldEN1
c3RvbVByb3RvY29sUmVxdWVzdFR5cGUoR1R5cGUpOwotICAgIHZvaWQgc2V0dXBDdXN0b21Qcm90
b2NvbHMoKTsKLQogICAgIHZvaWQgZ2V0SG9zdE5hbWVzV2l0aEhTVFNDYWNoZShIYXNoU2V0PFN0
cmluZz4mKTsKICAgICB2b2lkIGRlbGV0ZUhTVFNDYWNoZUZvckhvc3ROYW1lcyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYpOwogICAgIHZvaWQgY2xlYXJIU1RTQ2FjaGUoV2FsbFRpbWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCBkOGZhYzRhODI4OC4uOTc3ZjUyYTExOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDQgQEAK
KzIwMTktMTAtMDEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgor
CisgICAgICAgIFtHVEtdW1dQRV0gU3RvcCB1c2luZyBsZWdhY3kgY3VzdG9tIHByb3RvY29sIGlt
cGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDI0MDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBVc2UgdGhlIG5ldyBhcHByb2FjaCwgd2hpY2ggaXMgc2ltcGxlciBhbmQgZG9lc24ndCBy
ZXF1aXJlIHRvIGdvIHRvIHRoZSBuZXR3b3JrIHByb2Nlc3MgdG8gbG9hZCBjdXN0b20KKyAgICAg
ICAgcHJvdG9jb2xzLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xz
L3NvdXAvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyU291cC5jcHA6IFJlbW92ZWQuCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0
OjptX21lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW0uY3BwOiBSZW1vdmVkLgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvV2ViS2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbS5oOiBS
ZW1vdmVkLgorICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3Jt
V1BFLmNtYWtlOgorICAgICAgICAqIFNvdXJjZXNHVEsudHh0OgorICAgICAgICAqIFNvdXJjZXNX
UEUudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDdXN0b21Qcm90b2Nv
bE1hbmFnZXJDbGllbnQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHA6CisgICAgICAg
ICh3ZWJraXRVUklTY2hlbWVSZXF1ZXN0Q3JlYXRlKToKKyAgICAgICAgKHdlYmtpdF91cmlfc2No
ZW1lX3JlcXVlc3RfZ2V0X3NjaGVtZSk6CisgICAgICAgICh3ZWJraXRfdXJpX3NjaGVtZV9yZXF1
ZXN0X2dldF91cmkpOgorICAgICAgICAod2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9nZXRfcGF0
aCk6CisgICAgICAgICh3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2dldF93ZWJfdmlldyk6Cisg
ICAgICAgICh3ZWJraXRVUklTY2hlbWVSZXF1ZXN0UmVhZENhbGxiYWNrKToKKyAgICAgICAgKHdl
YmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZmluaXNoX2Vycm9yKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdFByaXZhdGUuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHA6CisgICAgICAgICh3ZWJraXRX
ZWJDb250ZXh0Q29uc3RydWN0ZWQpOgorICAgICAgICAod2Via2l0V2ViQ29udGV4dERpc3Bvc2Up
OgorICAgICAgICAod2Via2l0X3dlYl9jb250ZXh0X3JlZ2lzdGVyX3VyaV9zY2hlbWUpOgorICAg
ICAgICAod2Via2l0V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JXZWJWaWV3KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dFByaXZhdGUuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5h
Z2VyUHJveHkuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVU
YXNrLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OnJlcXVlc3QgY29uc3Qp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NQb29sU291cC5jcHA6CisKIDIw
MTktMTAtMDEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtHVEtdIE1ha2UgUFNPTiBvcHRpb25hbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvc291cC9MZWdhY3lDdXN0b21Qcm90b2Nv
bE1hbmFnZXJTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJv
dG9jb2xzL3NvdXAvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyU291cC5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5YjBjM2IyMTU3Li4wMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9zb3VwL0xlZ2FjeUN1c3Rv
bVByb3RvY29sTWFuYWdlclNvdXAuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjE3ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgSWdhbGlhIFMuTC4KLSAqCi0gKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgot
ICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAot
ICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIkxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5oIgotCi0jaW5jbHVkZSAi
RGF0YVJlZmVyZW5jZS5oIgotI2luY2x1ZGUgIkxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlck1l
c3NhZ2VzLmgiCi0jaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKLSNpbmNsdWRlICJOZXR3b3Jr
U2Vzc2lvblNvdXAuaCIKLSNpbmNsdWRlICJXZWJLaXRTb3VwUmVxdWVzdElucHV0U3RyZWFtLmgi
Ci0jaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgotI2luY2x1ZGUgPFdlYkNvcmUv
UmVzb3VyY2VFcnJvci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+Ci0j
aW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9T
b3VwTmV0d29ya1Nlc3Npb24uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1dlYktpdFNvdXBSZXF1ZXN0
R2VuZXJpYy5oPgotI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotCi1uYW1lc3BhY2Ug
V2ViS2l0IHsKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1SZWZQdHI8TmV0d29ya1Byb2Nl
c3M+JiBsYXN0Q3JlYXRlZE5ldHdvcmtQcm9jZXNzKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8UmVmUHRyPE5ldHdvcmtQcm9jZXNzPj4gbmV0d29ya1Byb2Nlc3M7Ci0gICAgcmV0dXJu
IG5ldHdvcmtQcm9jZXNzLmdldCgpOwotfQotCi12b2lkIExlZ2FjeUN1c3RvbVByb3RvY29sTWFu
YWdlcjo6bmV0d29ya1Byb2Nlc3NDcmVhdGVkKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2Vz
cykKLXsKLSAgICBsYXN0Q3JlYXRlZE5ldHdvcmtQcm9jZXNzKCkgPSAmbmV0d29ya1Byb2Nlc3M7
Ci19Ci0KLUxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcjo6V2ViU291cFJlcXVlc3RBc3luY0Rh
dGE6OldlYlNvdXBSZXF1ZXN0QXN5bmNEYXRhKEdSZWZQdHI8R1Rhc2s+JiYgcmVxdWVzdFRhc2ss
IFdlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYyogcmVxdWVzdEdlbmVyaWMpCi0gICAgOiB0YXNrKFdU
Rk1vdmUocmVxdWVzdFRhc2spKQotICAgICwgcmVxdWVzdChyZXF1ZXN0R2VuZXJpYykKLSAgICAs
IGNhbmNlbGxhYmxlKGdfdGFza19nZXRfY2FuY2VsbGFibGUodGFzay5nZXQoKSkpCi17Ci0gICAg
Ly8gSWYgdGhlIHN0cnVjdCBjb250YWlucyBhIG51bGwgcmVxdWVzdCwgaXQgaXMgYmVjYXVzZSB0
aGUgcmVxdWVzdCBmYWlsZWQuCi0gICAgZ19vYmplY3RfYWRkX3dlYWtfcG9pbnRlcihHX09CSkVD
VChyZXF1ZXN0KSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZyZXF1ZXN0KSk7Ci19Ci0KLUxl
Z2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcjo6V2ViU291cFJlcXVlc3RBc3luY0RhdGE6On5XZWJT
b3VwUmVxdWVzdEFzeW5jRGF0YSgpCi17Ci0gICAgaWYgKHJlcXVlc3QpCi0gICAgICAgIGdfb2Jq
ZWN0X3JlbW92ZV93ZWFrX3BvaW50ZXIoR19PQkpFQ1QocmVxdWVzdCksIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCoqPigmcmVxdWVzdCkpOwotfQotCi1jbGFzcyBDdXN0b21Qcm90b2NvbFJlcXVlc3RD
bGllbnQgZmluYWwgOiBwdWJsaWMgV2ViS2l0U291cFJlcXVlc3RHZW5lcmljQ2xpZW50IHsKLXB1
YmxpYzoKLSAgICBzdGF0aWMgQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0Q2xpZW50JiBzaW5nbGV0b24o
KQotICAgIHsKLSAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1c3RvbVByb3RvY29sUmVx
dWVzdENsaWVudD4gY2xpZW50OwotICAgICAgICByZXR1cm4gY2xpZW50OwotICAgIH0KLQotcHJp
dmF0ZToKLSAgICB2b2lkIHN0YXJ0UmVxdWVzdChHUmVmUHRyPEdUYXNrPiYmIHRhc2spIG92ZXJy
aWRlCi0gICAgewotICAgICAgICBXZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWMqIHJlcXVlc3QgPSBX
RUJLSVRfU09VUF9SRVFVRVNUX0dFTkVSSUMoZ190YXNrX2dldF9zb3VyY2Vfb2JqZWN0KHRhc2su
Z2V0KCkpKTsKLSAgICAgICAgYXV0byogY3VzdG9tUHJvdG9jb2xNYW5hZ2VyID0gbGFzdENyZWF0
ZWROZXR3b3JrUHJvY2VzcygpLT5zdXBwbGVtZW50PExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdl
cj4oKTsKLSAgICAgICAgaWYgKCFjdXN0b21Qcm90b2NvbE1hbmFnZXIpCi0gICAgICAgICAgICBy
ZXR1cm47Ci0KLSAgICAgICAgYXV0byBjdXN0b21Qcm90b2NvbElEID0gY3VzdG9tUHJvdG9jb2xN
YW5hZ2VyLT5hZGRDdXN0b21Qcm90b2NvbChtYWtlVW5pcXVlPExlZ2FjeUN1c3RvbVByb3RvY29s
TWFuYWdlcjo6V2ViU291cFJlcXVlc3RBc3luY0RhdGE+KFdURk1vdmUodGFzayksIHJlcXVlc3Qp
KTsKLSAgICAgICAgY3VzdG9tUHJvdG9jb2xNYW5hZ2VyLT5zdGFydExvYWRpbmcoY3VzdG9tUHJv
dG9jb2xJRCwgd2Via2l0U291cFJlcXVlc3RHZW5lcmljR2V0UmVxdWVzdChyZXF1ZXN0KSk7Ci0g
ICAgfQotfTsKLQotdm9pZCBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnJlZ2lzdGVyUHJv
dG9jb2xDbGFzcygpCi17Ci0gICAgc3RhdGljX2Nhc3Q8V2ViS2l0U291cFJlcXVlc3RHZW5lcmlj
Q2xhc3MqPihnX3R5cGVfY2xhc3NfcmVmKFdFQktJVF9UWVBFX1NPVVBfUkVRVUVTVF9HRU5FUklD
KSktPmNsaWVudCA9ICZDdXN0b21Qcm90b2NvbFJlcXVlc3RDbGllbnQ6OnNpbmdsZXRvbigpOwot
ICAgIFNvdXBOZXR3b3JrU2Vzc2lvbjo6c2V0Q3VzdG9tUHJvdG9jb2xSZXF1ZXN0VHlwZShXRUJL
SVRfVFlQRV9TT1VQX1JFUVVFU1RfR0VORVJJQyk7Ci19Ci0KLXZvaWQgTGVnYWN5Q3VzdG9tUHJv
dG9jb2xNYW5hZ2VyOjpyZWdpc3RlclNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSkKLXsKLSAg
ICBpZiAoIW1fcmVnaXN0ZXJlZFNjaGVtZXMpCi0gICAgICAgIG1fcmVnaXN0ZXJlZFNjaGVtZXMg
PSBhZG9wdEdSZWYoZ19wdHJfYXJyYXlfbmV3X3dpdGhfZnJlZV9mdW5jKGdfZnJlZSkpOwotCi0g
ICAgaWYgKG1fcmVnaXN0ZXJlZFNjaGVtZXMtPmxlbikKLSAgICAgICAgZ19wdHJfYXJyYXlfcmVt
b3ZlX2luZGV4X2Zhc3QobV9yZWdpc3RlcmVkU2NoZW1lcy5nZXQoKSwgbV9yZWdpc3RlcmVkU2No
ZW1lcy0+bGVuIC0gMSk7Ci0gICAgZ19wdHJfYXJyYXlfYWRkKG1fcmVnaXN0ZXJlZFNjaGVtZXMu
Z2V0KCksIGdfc3RyZHVwKHNjaGVtZS51dGY4KCkuZGF0YSgpKSk7Ci0gICAgZ19wdHJfYXJyYXlf
YWRkKG1fcmVnaXN0ZXJlZFNjaGVtZXMuZ2V0KCksIG51bGxwdHIpOwotCi0gICAgYXV0byogZ2Vu
ZXJpY1JlcXVlc3RDbGFzcyA9IHN0YXRpY19jYXN0PFNvdXBSZXF1ZXN0Q2xhc3MqPihnX3R5cGVf
Y2xhc3NfcGVlayhXRUJLSVRfVFlQRV9TT1VQX1JFUVVFU1RfR0VORVJJQykpOwotICAgIEFTU0VS
VChnZW5lcmljUmVxdWVzdENsYXNzKTsKLSAgICBnZW5lcmljUmVxdWVzdENsYXNzLT5zY2hlbWVz
ID0gY29uc3RfY2FzdDxjb25zdCBjaGFyKio+KHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcioqPihtX3Jl
Z2lzdGVyZWRTY2hlbWVzLT5wZGF0YSkpOwotICAgIGxhc3RDcmVhdGVkTmV0d29ya1Byb2Nlc3Mo
KS0+Zm9yRWFjaE5ldHdvcmtTZXNzaW9uKFtdKGNvbnN0IGF1dG8mIHNlc3Npb24pIHsKLSAgICAg
ICAgc3RhdGljX2Nhc3Q8Y29uc3QgTmV0d29ya1Nlc3Npb25Tb3VwJj4oc2Vzc2lvbikuc291cE5l
dHdvcmtTZXNzaW9uKCkuc2V0dXBDdXN0b21Qcm90b2NvbHMoKTsKLSAgICB9KTsKLX0KLQotdm9p
ZCBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnVucmVnaXN0ZXJTY2hlbWUoY29uc3QgU3Ry
aW5nJikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi1ib29sIExlZ2FjeUN1c3RvbVBy
b3RvY29sTWFuYWdlcjo6c3VwcG9ydHNTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUpCi17Ci0g
ICAgaWYgKHNjaGVtZS5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgQ1N0
cmluZyBjU2NoZW1lID0gc2NoZW1lLnV0ZjgoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbV9yZWdpc3RlcmVkU2NoZW1lcy0+bGVuOyArK2kpIHsKLSAgICAgICAgaWYgKGNTY2hlbWUg
PT0gc3RhdGljX2Nhc3Q8Y2hhcio+KGdfcHRyX2FycmF5X2luZGV4KG1fcmVnaXN0ZXJlZFNjaGVt
ZXMuZ2V0KCksIGkpKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHJl
dHVybiBmYWxzZTsKLX0KLQotdm9pZCBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXI6OmRpZEZh
aWxXaXRoRXJyb3IodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgUmVzb3VyY2VFcnJv
ciYgZXJyb3IpCi17Ci0gICAgYXV0byogZGF0YSA9IG1fY3VzdG9tUHJvdG9jb2xNYXAuZ2V0KGN1
c3RvbVByb3RvY29sSUQpOwotICAgIEFTU0VSVChkYXRhKTsKLQotICAgIC8vIEVpdGhlciB3ZSBo
YXZlbid0IHN0YXJ0ZWQgcmVhZGluZyB0aGUgc3RyZWFtIHlldCwgaW4gd2hpY2ggY2FzZSB3ZSBu
ZWVkIHRvIGNvbXBsZXRlIHRoZQotICAgIC8vIHRhc2sgZmlyc3QsIG9yIHdlIGZhaWxlZCByZWFk
aW5nIGl0IGFuZCB0aGUgdGFzayB3YXMgYWxyZWFkeSBjb21wbGV0ZWQgYnkgZGlkTG9hZERhdGEo
KS4KLSAgICBBU1NFUlQoIWRhdGEtPnN0cmVhbSB8fCAhZGF0YS0+dGFzayk7Ci0KLSAgICBpZiAo
IWRhdGEtPnN0cmVhbSkgewotICAgICAgICBHUmVmUHRyPEdUYXNrPiB0YXNrID0gc3RkOjpleGNo
YW5nZShkYXRhLT50YXNrLCBudWxscHRyKTsKLSAgICAgICAgQVNTRVJUKHRhc2suZ2V0KCkpOwot
ICAgICAgICBnX3Rhc2tfcmV0dXJuX25ld19lcnJvcih0YXNrLmdldCgpLCBnX3F1YXJrX2Zyb21f
c3RyaW5nKGVycm9yLmRvbWFpbigpLnV0ZjgoKS5kYXRhKCkpLAotICAgICAgICAgICAgZXJyb3Iu
ZXJyb3JDb2RlKCksICIlcyIsIGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkudXRmOCgpLmRh
dGEoKSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHdlYmtpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW1E
aWRGYWlsV2l0aEVycm9yKFdFQktJVF9TT1VQX1JFUVVFU1RfSU5QVVRfU1RSRUFNKGRhdGEtPnN0
cmVhbS5nZXQoKSksIGVycm9yKTsKLQotICAgIHJlbW92ZUN1c3RvbVByb3RvY29sKGN1c3RvbVBy
b3RvY29sSUQpOwotfQotCi12b2lkIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcjo6ZGlkTG9h
ZERhdGEodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiBkYXRhUmVmZXJlbmNlKQotewotICAgIGF1dG8qIGRhdGEgPSBtX2N1c3RvbVByb3RvY29sTWFw
LmdldChjdXN0b21Qcm90b2NvbElEKTsKLSAgICAvLyBUaGUgZGF0YSBtaWdodCBoYXZlIGJlZW4g
cmVtb3ZlZCBmcm9tIHRoZSByZXF1ZXN0IG1hcCBpZiBhIHByZXZpb3VzIGNodW5rIGZhaWxlZAot
ICAgIC8vIGFuZCBhIG5ldyBtZXNzYWdlIHdhcyBzZW50IGJ5IHRoZSBVSSBwcm9jZXNzIGJlZm9y
ZSBiZWluZyBub3RpZmllZCBhYm91dCB0aGUgZmFpbHVyZS4KLSAgICBpZiAoIWRhdGEpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGlmICghZGF0YS0+c3RyZWFtKSB7Ci0gICAgICAgIEdSZWZQdHI8
R1Rhc2s+IHRhc2sgPSBzdGQ6OmV4Y2hhbmdlKGRhdGEtPnRhc2ssIG51bGxwdHIpOwotICAgICAg
ICBBU1NFUlQodGFzay5nZXQoKSk7Ci0KLSAgICAgICAgZ29mZnNldCBzb3VwQ29udGVudExlbmd0
aCA9IHNvdXBfcmVxdWVzdF9nZXRfY29udGVudF9sZW5ndGgoU09VUF9SRVFVRVNUKGdfdGFza19n
ZXRfc291cmNlX29iamVjdCh0YXNrLmdldCgpKSkpOwotICAgICAgICB1aW50NjRfdCBjb250ZW50
TGVuZ3RoID0gc291cENvbnRlbnRMZW5ndGggPT0gLTEgPyAwIDogc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KHNvdXBDb250ZW50TGVuZ3RoKTsKLSAgICAgICAgaWYgKCFkYXRhUmVmZXJlbmNlLnNpemUo
KSkgewotICAgICAgICAgICAgLy8gRW1wdHkgcmVwbHksIGp1c3QgY3JlYXRlIGFuZCBlbXB0eSBH
TWVtb3J5SW5wdXRTdHJlYW0uCi0gICAgICAgICAgICBkYXRhLT5zdHJlYW0gPSBnX21lbW9yeV9p
bnB1dF9zdHJlYW1fbmV3KCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoZGF0YVJlZmVyZW5jZS5zaXpl
KCkgPT0gY29udGVudExlbmd0aCkgewotICAgICAgICAgICAgLy8gV2UgZG9uJ3QgZXhwZWN0IG1v
cmUgZGF0YSwgc28gd2UgY2FuIGp1c3QgY3JlYXRlIGEgR01lbW9yeUlucHV0U3RyZWFtIHdpdGgg
YWxsIHRoZSBkYXRhLgotICAgICAgICAgICAgZGF0YS0+c3RyZWFtID0gZ19tZW1vcnlfaW5wdXRf
c3RyZWFtX25ld19mcm9tX2RhdGEoZ19tZW1kdXAoZGF0YVJlZmVyZW5jZS5kYXRhKCksIGRhdGFS
ZWZlcmVuY2Uuc2l6ZSgpKSwgY29udGVudExlbmd0aCwgZ19mcmVlKTsKLSAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIC8vIFdlIGV4cGVjdCBtb3JlIGRhdGEgY2h1bmtzIGZyb20gdGhlIFVJ
IHByb2Nlc3MuCi0gICAgICAgICAgICBkYXRhLT5zdHJlYW0gPSB3ZWJraXRTb3VwUmVxdWVzdElu
cHV0U3RyZWFtTmV3KGNvbnRlbnRMZW5ndGgpOwotICAgICAgICAgICAgd2Via2l0U291cFJlcXVl
c3RJbnB1dFN0cmVhbUFkZERhdGEoV0VCS0lUX1NPVVBfUkVRVUVTVF9JTlBVVF9TVFJFQU0oZGF0
YS0+c3RyZWFtLmdldCgpKSwgZGF0YVJlZmVyZW5jZS5kYXRhKCksIGRhdGFSZWZlcmVuY2Uuc2l6
ZSgpKTsKLSAgICAgICAgfQotICAgICAgICBnX3Rhc2tfcmV0dXJuX3BvaW50ZXIodGFzay5nZXQo
KSwgZGF0YS0+c3RyZWFtLmdldCgpLCBnX29iamVjdF91bnJlZik7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBpZiAoZ19jYW5jZWxsYWJsZV9pc19jYW5jZWxsZWQoZGF0YS0+Y2FuY2Vs
bGFibGUuZ2V0KCkpIHx8ICFkYXRhLT5yZXF1ZXN0KSB7Ci0gICAgICAgIC8vIFJlc291cmNlUmVx
dWVzdCBmYWlsZWQgb3IgaXQgd2FzIGNhbmNlbGxlZC4gSXQgZG9lc24ndCBtYXR0ZXIgaGVyZSB0
aGUgZXJyb3Igb3IgaWYgaXQgd2FzIGNhbmNlbGxlZCwKLSAgICAgICAgLy8gYmVjYXVzZSB0aGF0
J3MgYWxyZWFkeSBoYW5kbGVkIGJ5IHRoZSByZXNvdXJjZSBoYW5kbGUgY2xpZW50LCB3ZSBqdXN0
IHdhbnQgdG8gbm90aWZ5IHRoZSBVSSBwcm9jZXNzCi0gICAgICAgIC8vIHRvIHN0b3AgcmVhZGlu
ZyBkYXRhIGZyb20gdGhlIHVzZXIgaW5wdXQgc3RyZWFtLiBJZiBVSSBwcm9jZXNzIGFscmVhZHkg
c2VudCBhbGwgdGhlIGRhdGEgd2Ugc2ltcGx5Ci0gICAgICAgIC8vIGZpbmlzaCBzaWxlbnRseS4K
LSAgICAgICAgaWYgKCF3ZWJraXRTb3VwUmVxdWVzdElucHV0U3RyZWFtRmluaXNoZWQoV0VCS0lU
X1NPVVBfUkVRVUVTVF9JTlBVVF9TVFJFQU0oZGF0YS0+c3RyZWFtLmdldCgpKSkpCi0gICAgICAg
ICAgICBzdG9wTG9hZGluZyhjdXN0b21Qcm90b2NvbElEKTsKLQotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgd2Via2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbUFkZERhdGEoV0VCS0lUX1NP
VVBfUkVRVUVTVF9JTlBVVF9TVFJFQU0oZGF0YS0+c3RyZWFtLmdldCgpKSwgZGF0YVJlZmVyZW5j
ZS5kYXRhKCksIGRhdGFSZWZlcmVuY2Uuc2l6ZSgpKTsKLX0KLQotdm9pZCBMZWdhY3lDdXN0b21Q
cm90b2NvbE1hbmFnZXI6OmRpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBjdXN0b21Qcm90b2Nv
bElELCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgdWludDMyX3QpCi17Ci0gICAg
YXV0byogZGF0YSA9IG1fY3VzdG9tUHJvdG9jb2xNYXAuZ2V0KGN1c3RvbVByb3RvY29sSUQpOwot
ICAgIC8vIFRoZSBkYXRhIG1pZ2h0IGhhdmUgYmVlbiByZW1vdmVkIGZyb20gdGhlIHJlcXVlc3Qg
bWFwIGlmIGFuIGVycm9yIGhhcHBlbmVkIGV2ZW4gYmVmb3JlIHRoaXMgcG9pbnQuCi0gICAgaWYg
KCFkYXRhKQotICAgICAgICByZXR1cm47Ci0KLSAgICBBU1NFUlQoZGF0YS0+dGFzayk7Ci0KLSAg
ICBXZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWMqIHJlcXVlc3QgPSBXRUJLSVRfU09VUF9SRVFVRVNU
X0dFTkVSSUMoZ190YXNrX2dldF9zb3VyY2Vfb2JqZWN0KGRhdGEtPnRhc2suZ2V0KCkpKTsKLSAg
ICB3ZWJraXRTb3VwUmVxdWVzdEdlbmVyaWNTZXRDb250ZW50TGVuZ3RoKHJlcXVlc3QsIHJlc3Bv
bnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpID8gcmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVu
Z3RoKCkgOiAtMSk7Ci0gICAgd2Via2l0U291cFJlcXVlc3RHZW5lcmljU2V0Q29udGVudFR5cGUo
cmVxdWVzdCwgIXJlc3BvbnNlLm1pbWVUeXBlKCkuaXNFbXB0eSgpID8gcmVzcG9uc2UubWltZVR5
cGUoKS51dGY4KCkuZGF0YSgpIDogMCk7Ci19Ci0KLXZvaWQgTGVnYWN5Q3VzdG9tUHJvdG9jb2xN
YW5hZ2VyOjpkaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpCi17Ci0g
ICAgQVNTRVJUKG1fY3VzdG9tUHJvdG9jb2xNYXAuY29udGFpbnMoY3VzdG9tUHJvdG9jb2xJRCkp
OwotICAgIHJlbW92ZUN1c3RvbVByb3RvY29sKGN1c3RvbVByb3RvY29sSUQpOwotfQotCi12b2lk
IExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcjo6d2FzUmVkaXJlY3RlZFRvUmVxdWVzdCh1aW50
NjRfdCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpCi17
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IGY1
MmY0MGZiZGNkLi5hZWU2OGNmMmZiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTE2MSw3ICsxNjEsNyBAQCBOZXR3b3JrUHJvY2Vz
czo6TmV0d29ya1Byb2Nlc3MoQXV4aWxpYXJ5UHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVy
cyYmIHBhcmFtZQogI2lmIEVOQUJMRShMRUdBQ1lfQ1VTVE9NX1BST1RPQ09MX01BTkFHRVIpCiAg
ICAgYWRkU3VwcGxlbWVudDxMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXI+KCk7CiAjZW5kaWYK
LSNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKFNPVVApCisjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpuZXR3b3JrUHJvY2Vzc0NyZWF0ZWQoKnRo
aXMpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c291cC9XZWJLaXRTb3VwUmVxdWVzdElucHV0U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc291cC9XZWJLaXRTb3VwUmVxdWVzdElucHV0U3RyZWFtLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODc0NTI1ZTM4Y2UuLjAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJLaXRTb3VwUmVxdWVzdElucHV0U3Ry
ZWFtLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE4NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDEyIElnYWxpYSBTLkwuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJL
aXRTb3VwUmVxdWVzdElucHV0U3RyZWFtLmgiCi0KLSNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5o
PgotI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+Ci0jaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5o
PgotI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KLQotc3RydWN0IEFzeW5jUmVhZERh
dGEgewotICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKLSAgICBBc3luY1JlYWRE
YXRhKEdSZWZQdHI8R1Rhc2s+JiYgdGFzaywgdm9pZCogYnVmZmVyLCBnc2l6ZSBjb3VudCkKLSAg
ICAgICAgOiB0YXNrKFdURk1vdmUodGFzaykpCi0gICAgICAgICwgYnVmZmVyKGJ1ZmZlcikKLSAg
ICAgICAgLCBjb3VudChjb3VudCkKLSAgICB7Ci0gICAgfQotCi0gICAgR1JlZlB0cjxHVGFzaz4g
dGFzazsKLSAgICB2b2lkKiBidWZmZXI7Ci0gICAgc2l6ZV90IGNvdW50OwotfTsKLQotc3RydWN0
IF9XZWJLaXRTb3VwUmVxdWVzdElucHV0U3RyZWFtUHJpdmF0ZSB7Ci0gICAgV1RGX01BS0VfU1RS
VUNUX0ZBU1RfQUxMT0NBVEVEOwotICAgIHVpbnQ2NF90IGNvbnRlbnRMZW5ndGg7Ci0gICAgdWlu
dDY0X3QgYnl0ZXNSZWNlaXZlZDsKLSAgICB1aW50NjRfdCBieXRlc1JlYWQ7Ci0KLSAgICBHVW5p
cXVlUHRyPEdFcnJvcj4gZXJyb3I7Ci0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QXN5bmNSZWFkRGF0
YT4gcGVuZGluZ0FzeW5jUmVhZDsKLX07Ci0KLUdfREVGSU5FX1RZUEUoV2ViS2l0U291cFJlcXVl
c3RJbnB1dFN0cmVhbSwgd2Via2l0X3NvdXBfcmVxdWVzdF9pbnB1dF9zdHJlYW0sIEdfVFlQRV9N
RU1PUllfSU5QVVRfU1RSRUFNKQotCi1zdGF0aWMgdm9pZCB3ZWJraXRTb3VwUmVxdWVzdElucHV0
U3RyZWFtUmVhZEFzeW5jUmVzdWx0Q29tcGxldGUoR1Rhc2sqIHRhc2ssIHZvaWQqIGJ1ZmZlciwg
Z3NpemUgY291bnQpCi17Ci0gICAgV2ViS2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbSogc3RyZWFt
ID0gV0VCS0lUX1NPVVBfUkVRVUVTVF9JTlBVVF9TVFJFQU0oZ190YXNrX2dldF9zb3VyY2Vfb2Jq
ZWN0KHRhc2spKTsKLSAgICBHRXJyb3IqIGVycm9yID0gbnVsbHB0cjsKLSAgICBnc3NpemUgYnl0
ZXNSZWFkID0gR19JTlBVVF9TVFJFQU1fR0VUX0NMQVNTKHN0cmVhbSktPnJlYWRfZm4oR19JTlBV
VF9TVFJFQU0oc3RyZWFtKSwgYnVmZmVyLCBjb3VudCwgZ190YXNrX2dldF9jYW5jZWxsYWJsZSh0
YXNrKSwgJmVycm9yKTsKLSAgICBpZiAoIWVycm9yKSB7Ci0gICAgICAgIHN0cmVhbS0+cHJpdi0+
Ynl0ZXNSZWFkICs9IGJ5dGVzUmVhZDsKLSAgICAgICAgZ190YXNrX3JldHVybl9pbnQodGFzaywg
Ynl0ZXNSZWFkKTsKLSAgICB9IGVsc2UKLSAgICAgICAgZ190YXNrX3JldHVybl9lcnJvcih0YXNr
LCBlcnJvcik7Ci19Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW1Q
ZW5kaW5nUmVhZEFzeW5jQ29tcGxldGUoV2ViS2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbSogc3Ry
ZWFtKQotewotICAgIGlmIChhdXRvIGRhdGEgPSBXVEZNb3ZlKHN0cmVhbS0+cHJpdi0+cGVuZGlu
Z0FzeW5jUmVhZCkpCi0gICAgICAgIHdlYmtpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW1SZWFkQXN5
bmNSZXN1bHRDb21wbGV0ZShkYXRhLT50YXNrLmdldCgpLCBkYXRhLT5idWZmZXIsIGRhdGEtPmNv
dW50KTsKLX0KLQotc3RhdGljIGJvb2wgd2Via2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbUhhc0Rh
dGFUb1JlYWQoV2ViS2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbSogc3RyZWFtKQotewotICAgIHJl
dHVybiBzdHJlYW0tPnByaXYtPmJ5dGVzUmVhZCA8IHN0cmVhbS0+cHJpdi0+Ynl0ZXNSZWNlaXZl
ZDsKLX0KLQotc3RhdGljIGJvb2wgd2Via2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbUlzV2FpdGlu
Z0ZvckRhdGEoV2ViS2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbSogc3RyZWFtKQotewotICAgIHJl
dHVybiAhc3RyZWFtLT5wcml2LT5jb250ZW50TGVuZ3RoIHx8IHN0cmVhbS0+cHJpdi0+Ynl0ZXNS
ZWNlaXZlZCA8IHN0cmVhbS0+cHJpdi0+Y29udGVudExlbmd0aDsKLX0KLQotc3RhdGljIHZvaWQg
d2Via2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbVJlYWRBc3luYyhHSW5wdXRTdHJlYW0qIGlucHV0
U3RyZWFtLCB2b2lkKiBidWZmZXIsIGdzaXplIGNvdW50LCBpbnQgLypwcmlvcml0eSovLCBHQ2Fu
Y2VsbGFibGUqIGNhbmNlbGxhYmxlLCBHQXN5bmNSZWFkeUNhbGxiYWNrIGNhbGxiYWNrLCBncG9p
bnRlciB1c2VyRGF0YSkKLXsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIFdl
YktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW0qIHN0cmVhbSA9IFdFQktJVF9TT1VQX1JFUVVFU1Rf
SU5QVVRfU1RSRUFNKGlucHV0U3RyZWFtKTsKLSAgICBHUmVmUHRyPEdUYXNrPiB0YXNrID0gYWRv
cHRHUmVmKGdfdGFza19uZXcoc3RyZWFtLCBjYW5jZWxsYWJsZSwgY2FsbGJhY2ssIHVzZXJEYXRh
KSk7Ci0KLSAgICBpZiAoIXdlYmtpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW1IYXNEYXRhVG9SZWFk
KHN0cmVhbSkgJiYgIXdlYmtpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW1Jc1dhaXRpbmdGb3JEYXRh
KHN0cmVhbSkpIHsKLSAgICAgICAgZ190YXNrX3JldHVybl9pbnQodGFzay5nZXQoKSwgMCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoc3RyZWFtLT5wcml2LT5lcnJvci5nZXQo
KSkgewotICAgICAgICBnX3Rhc2tfcmV0dXJuX2Vycm9yKHRhc2suZ2V0KCksIHN0cmVhbS0+cHJp
di0+ZXJyb3IucmVsZWFzZSgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICh3
ZWJraXRTb3VwUmVxdWVzdElucHV0U3RyZWFtSGFzRGF0YVRvUmVhZChzdHJlYW0pKSB7Ci0gICAg
ICAgIHdlYmtpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW1SZWFkQXN5bmNSZXN1bHRDb21wbGV0ZSh0
YXNrLmdldCgpLCBidWZmZXIsIGNvdW50KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IHN0cmVhbS0+cHJpdi0+cGVuZGluZ0FzeW5jUmVhZCA9IG1ha2VVbmlxdWU8QXN5bmNSZWFkRGF0
YT4oV1RGTW92ZSh0YXNrKSwgYnVmZmVyLCBjb3VudCk7Ci19Ci0KLXN0YXRpYyBnc3NpemUgd2Vi
a2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbVJlYWRGaW5pc2goR0lucHV0U3RyZWFtKiBpbnB1dFN0
cmVhbSwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIEdFcnJvcioqIGVycm9yKQotewotICAgIGdfcmV0
dXJuX3ZhbF9pZl9mYWlsKGdfdGFza19pc192YWxpZChyZXN1bHQsIGlucHV0U3RyZWFtKSwgMCk7
Ci0KLSAgICByZXR1cm4gZ190YXNrX3Byb3BhZ2F0ZV9pbnQoR19UQVNLKHJlc3VsdCksIGVycm9y
KTsKLX0KLQotc3RhdGljIHZvaWQgd2Via2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbUZpbmFsaXpl
KEdPYmplY3QqIG9iamVjdCkKLXsKLSAgICBXRUJLSVRfU09VUF9SRVFVRVNUX0lOUFVUX1NUUkVB
TShvYmplY3QpLT5wcml2LT5+V2ViS2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbVByaXZhdGUoKTsK
LSAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfc291cF9yZXF1ZXN0X2lucHV0X3N0cmVhbV9wYXJl
bnRfY2xhc3MpLT5maW5hbGl6ZShvYmplY3QpOwotfQotCi1zdGF0aWMgdm9pZCB3ZWJraXRfc291
cF9yZXF1ZXN0X2lucHV0X3N0cmVhbV9pbml0KFdlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW0q
IHN0cmVhbSkKLXsKLSAgICBXZWJLaXRTb3VwUmVxdWVzdElucHV0U3RyZWFtUHJpdmF0ZSogcHJp
diA9IEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURShzdHJlYW0sIFdFQktJVF9UWVBFX1NPVVBf
UkVRVUVTVF9JTlBVVF9TVFJFQU0sIFdlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW1Qcml2YXRl
KTsKLSAgICBzdHJlYW0tPnByaXYgPSBwcml2OwotICAgIG5ldyAocHJpdikgV2ViS2l0U291cFJl
cXVlc3RJbnB1dFN0cmVhbVByaXZhdGUoKTsKLX0KLQotc3RhdGljIHZvaWQgd2Via2l0X3NvdXBf
cmVxdWVzdF9pbnB1dF9zdHJlYW1fY2xhc3NfaW5pdChXZWJLaXRTb3VwUmVxdWVzdElucHV0U3Ry
ZWFtQ2xhc3MqIHJlcXVlc3RTdHJlYW1DbGFzcykKLXsKLSAgICBHT2JqZWN0Q2xhc3MqIGdPYmpl
Y3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKHJlcXVlc3RTdHJlYW1DbGFzcyk7Ci0gICAgZ09iamVj
dENsYXNzLT5maW5hbGl6ZSA9IHdlYmtpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW1GaW5hbGl6ZTsK
LQotICAgIEdJbnB1dFN0cmVhbUNsYXNzKiBpbnB1dFN0cmVhbUNsYXNzID0gR19JTlBVVF9TVFJF
QU1fQ0xBU1MocmVxdWVzdFN0cmVhbUNsYXNzKTsKLSAgICBpbnB1dFN0cmVhbUNsYXNzLT5yZWFk
X2FzeW5jID0gd2Via2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbVJlYWRBc3luYzsKLSAgICBpbnB1
dFN0cmVhbUNsYXNzLT5yZWFkX2ZpbmlzaCA9IHdlYmtpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW1S
ZWFkRmluaXNoOwotCi0gICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKHJlcXVlc3RTdHJlYW1D
bGFzcywgc2l6ZW9mKFdlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW1Qcml2YXRlKSk7Ci19Ci0K
LUdJbnB1dFN0cmVhbSogd2Via2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbU5ldyh1aW50NjRfdCBj
b250ZW50TGVuZ3RoKQotewotICAgIFdlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW0qIHN0cmVh
bSA9IFdFQktJVF9TT1VQX1JFUVVFU1RfSU5QVVRfU1RSRUFNKGdfb2JqZWN0X25ldyhXRUJLSVRf
VFlQRV9TT1VQX1JFUVVFU1RfSU5QVVRfU1RSRUFNLCBOVUxMKSk7Ci0gICAgc3RyZWFtLT5wcml2
LT5jb250ZW50TGVuZ3RoID0gY29udGVudExlbmd0aDsKLSAgICByZXR1cm4gR19JTlBVVF9TVFJF
QU0oc3RyZWFtKTsKLX0KLQotdm9pZCB3ZWJraXRTb3VwUmVxdWVzdElucHV0U3RyZWFtQWRkRGF0
YShXZWJLaXRTb3VwUmVxdWVzdElucHV0U3RyZWFtKiBzdHJlYW0sIGNvbnN0IHZvaWQqIGRhdGEs
IHNpemVfdCBkYXRhTGVuZ3RoKQotewotICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0K
LSAgICBpZiAod2Via2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbUZpbmlzaGVkKHN0cmVhbSkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGlmIChkYXRhTGVuZ3RoKSB7Ci0gICAgICAgIC8vIFRydW5j
YXRlIHRoZSBkYXRhTGVuZ3RoIHRvIHRoZSBjb250ZW50TGVuZ3RoIGlmIGl0J3Mga25vd24uCi0g
ICAgICAgIGlmIChzdHJlYW0tPnByaXYtPmNvbnRlbnRMZW5ndGggJiYgc3RyZWFtLT5wcml2LT5i
eXRlc1JlY2VpdmVkICsgZGF0YUxlbmd0aCA+IHN0cmVhbS0+cHJpdi0+Y29udGVudExlbmd0aCkK
LSAgICAgICAgICAgIGRhdGFMZW5ndGggPSBzdHJlYW0tPnByaXYtPmNvbnRlbnRMZW5ndGggLSBz
dHJlYW0tPnByaXYtPmJ5dGVzUmVjZWl2ZWQ7Ci0gICAgICAgIHN0cmVhbS0+cHJpdi0+Ynl0ZXNS
ZWNlaXZlZCArPSBkYXRhTGVuZ3RoOwotICAgICAgICBnX21lbW9yeV9pbnB1dF9zdHJlYW1fYWRk
X2RhdGEoR19NRU1PUllfSU5QVVRfU1RSRUFNKHN0cmVhbSksIGdfbWVtZHVwKGRhdGEsIGRhdGFM
ZW5ndGgpLCBkYXRhTGVuZ3RoLCBnX2ZyZWUpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIFdl
IGhhdmUgcmVjZWl2ZWQgYWxsIHRoZSBkYXRhLCBzZXQgY29udGVudExlbmd0aCB0byBieXRlc1Jl
Y2VpdmVkIHRvIGluZGljYXRlIHdlIGhhdmUgZmluaXNoZWQuCi0gICAgICAgIHN0cmVhbS0+cHJp
di0+Y29udGVudExlbmd0aCA9IHN0cmVhbS0+cHJpdi0+Ynl0ZXNSZWNlaXZlZDsKLSAgICAgICAg
Ly8gSWYgdGhlcmUncyBhIHBlbmRpbmcgcmVhZCB0byBjb21wbGV0ZSwgcmVhZF9mbiB3aWxsIHJl
dHVybiAwIGJlY2F1c2Ugd2UgaGF2ZW4ndCBhZGRlZCBtb3JlIGRhdGEgdG8gdGhlCi0gICAgICAg
IC8vIG1lbW9yeSBpbnB1dCBzdHJlYW0uIEFuZCBpZiB0aGVyZSBpc24ndCBhIHBlbmRpbmcgcmVh
ZCwgdGhlIG5leHQgY2FsbCB0byByZWFkX2FzeW5jIHdpbGwgcmV0dXJuIDAgdG9vLCBiZWNhdXNl
Ci0gICAgICAgIC8vIHdlYmtpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW1GaW5pc2hlZCgpIGlzIG5v
dyBUUlVFLgotICAgIH0KLQotICAgIHdlYmtpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW1QZW5kaW5n
UmVhZEFzeW5jQ29tcGxldGUoc3RyZWFtKTsKLX0KLQotdm9pZCB3ZWJraXRTb3VwUmVxdWVzdElu
cHV0U3RyZWFtRGlkRmFpbFdpdGhFcnJvcihXZWJLaXRTb3VwUmVxdWVzdElucHV0U3RyZWFtKiBz
dHJlYW0sIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIHJlc291cmNlRXJyb3IpCi17Ci0g
ICAgR1VuaXF1ZVB0cjxHRXJyb3I+IGVycm9yKGdfZXJyb3JfbmV3KGdfcXVhcmtfZnJvbV9zdHJp
bmcocmVzb3VyY2VFcnJvci5kb21haW4oKS51dGY4KCkuZGF0YSgpKSwgcmVzb3VyY2VFcnJvci5l
cnJvckNvZGUoKSwgIiVzIiwgcmVzb3VyY2VFcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpLnV0
ZjgoKS5kYXRhKCkpKTsKLSAgICBpZiAoYXV0byBkYXRhID0gV1RGTW92ZShzdHJlYW0tPnByaXYt
PnBlbmRpbmdBc3luY1JlYWQpKQotICAgICAgICBnX3Rhc2tfcmV0dXJuX2Vycm9yKGRhdGEtPnRh
c2suZ2V0KCksIGVycm9yLnJlbGVhc2UoKSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIHN0cmVhbS0+
cHJpdi0+Y29udGVudExlbmd0aCA9IHN0cmVhbS0+cHJpdi0+Ynl0ZXNSZWNlaXZlZDsKLSAgICAg
ICAgc3RyZWFtLT5wcml2LT5lcnJvciA9IFdURk1vdmUoZXJyb3IpOwotICAgIH0KLX0KLQotYm9v
bCB3ZWJraXRTb3VwUmVxdWVzdElucHV0U3RyZWFtRmluaXNoZWQoV2ViS2l0U291cFJlcXVlc3RJ
bnB1dFN0cmVhbSogc3RyZWFtKQotewotICAgIHJldHVybiAhd2Via2l0U291cFJlcXVlc3RJbnB1
dFN0cmVhbUlzV2FpdGluZ0ZvckRhdGEoc3RyZWFtKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJLaXRTb3VwUmVxdWVzdElucHV0U3RyZWFtLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViS2l0U291cFJlcXVlc3RJbnB1
dFN0cmVhbS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOTliMGI0NWQ2Zi4uMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYktpdFNv
dXBSZXF1ZXN0SW5wdXRTdHJlYW0uaAorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwot
ICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
LSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoK
LSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICog
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNs
dWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KLSNpbmNsdWRlIDxnaW8vZ2lvLmg+Ci0KLUdf
QkVHSU5fREVDTFMKLQotI2RlZmluZSBXRUJLSVRfVFlQRV9TT1VQX1JFUVVFU1RfSU5QVVRfU1RS
RUFNICAgICAgICAgICAgKHdlYmtpdF9zb3VwX3JlcXVlc3RfaW5wdXRfc3RyZWFtX2dldF90eXBl
KCkpCi0jZGVmaW5lIFdFQktJVF9TT1VQX1JFUVVFU1RfSU5QVVRfU1RSRUFNKG9iamVjdCkgICAg
ICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iamVjdCksIFdFQktJVF9UWVBFX1NP
VVBfUkVRVUVTVF9JTlBVVF9TVFJFQU0sIFdlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW0pKQot
I2RlZmluZSBXRUJLSVRfSVNfU09VUF9SRVFVRVNUX0lOUFVUX1NUUkVBTShvYmplY3QpICAgICAg
KEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmplY3QpLCBXRUJLSVRfVFlQRV9TT1VQX1JF
UVVFU1RfSU5QVVRfU1RSRUFNKSkKLSNkZWZpbmUgV0VCS0lUX1NPVVBfUkVRVUVTVF9JTlBVVF9T
VFJFQU1fQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCBX
RUJLSVRfVFlQRV9TT1VQX1JFUVVFU1RfSU5QVVRfU1RSRUFNLCBXZWJLaXRTb3VwUmVxdWVzdElu
cHV0U3RyZWFtQ2xhc3MpKQotI2RlZmluZSBXRUJLSVRfSVNfU09VUF9SRVFVRVNUX0lOUFVUX1NU
UkVBTV9DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksIFdFQktJ
VF9UWVBFX1NPVVBfUkVRVUVTVF9JTlBVVF9TVFJFQU0pKQotI2RlZmluZSBXRUJLSVRfU09VUF9S
RVFVRVNUX0lOUFVUX1NUUkVBTV9HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRf
Q0xBU1MoKG9iaiksIFdFQktJVF9UWVBFX1NPVVBfUkVRVUVTVF9JTlBVVF9TVFJFQU0sIFdlYktp
dFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW1DbGFzcykpCi0KLXR5cGVkZWYgc3RydWN0IF9XZWJLaXRT
b3VwUmVxdWVzdElucHV0U3RyZWFtIFdlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW07Ci10eXBl
ZGVmIHN0cnVjdCBfV2ViS2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbUNsYXNzIFdlYktpdFNvdXBS
ZXF1ZXN0SW5wdXRTdHJlYW1DbGFzczsKLXR5cGVkZWYgc3RydWN0IF9XZWJLaXRTb3VwUmVxdWVz
dElucHV0U3RyZWFtUHJpdmF0ZSBXZWJLaXRTb3VwUmVxdWVzdElucHV0U3RyZWFtUHJpdmF0ZTsK
LQotc3RydWN0IF9XZWJLaXRTb3VwUmVxdWVzdElucHV0U3RyZWFtIHsKLSAgICBHTWVtb3J5SW5w
dXRTdHJlYW0gcGFyZW50OwotCi0gICAgV2ViS2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbVByaXZh
dGUqIHByaXY7Ci19OwotCi1zdHJ1Y3QgX1dlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW1DbGFz
cyB7Ci0gICAgR01lbW9yeUlucHV0U3RyZWFtQ2xhc3MgcGFyZW50OwotfTsKLQotR1R5cGUgd2Vi
a2l0X3NvdXBfcmVxdWVzdF9pbnB1dF9zdHJlYW1fZ2V0X3R5cGUoKTsKLUdJbnB1dFN0cmVhbSog
d2Via2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbU5ldyh1aW50NjRfdCBjb250ZW50TGVuZ3RoKTsK
LXZvaWQgd2Via2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbUFkZERhdGEoV2ViS2l0U291cFJlcXVl
c3RJbnB1dFN0cmVhbSosIGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKTsKLXZv
aWQgd2Via2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbURpZEZhaWxXaXRoRXJyb3IoV2ViS2l0U291
cFJlcXVlc3RJbnB1dFN0cmVhbSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKLWJv
b2wgd2Via2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbUZpbmlzaGVkKFdlYktpdFNvdXBSZXF1ZXN0
SW5wdXRTdHJlYW0qKTsKLQotR19FTkRfREVDTFMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4
IDJiZjVkMGUxYTE2Li4zZjM5YWUzNTdhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0z
MywxMiArMzMsOCBAQCBsaXN0KEFQUEVORCBXZWJLaXRfVU5JRklFRF9TT1VSQ0VfTElTVF9GSUxF
UwogKQogCiBsaXN0KEFQUEVORCBXZWJLaXRfTUVTU0FHRVNfSU5fRklMRVMKLSAgICBOZXR3b3Jr
UHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLm1lc3Nh
Z2VzLmluCi0KICAgICBVSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLm1lc3NhZ2VzLmlu
CiAKLSAgICBVSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJv
dG9jb2xNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KLQogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9W
aWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLm1lc3NhZ2VzLmluCiApCiAKQEAgLTM3Myw3ICsz
NjksNiBAQCBsaXN0KEFQUEVORCBXZWJLaXRfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke0ZP
UldBUkRJTkdfSEVBREVSU19ESVJ9L0phdmFTY3JpcHRDb3JlLyIKICAgICAiJHtGT1JXQVJESU5H
X0hFQURFUlNfRElSfS9KYXZhU2NyaXB0Q29yZS9nbGliIgogICAgICIke1dFQktJVF9ESVJ9L1Bs
dWdpblByb2Nlc3MvdW5peCIKLSAgICAiJHtXRUJLSVRfRElSfS9OZXR3b3JrUHJvY2Vzcy9DdXN0
b21Qcm90b2NvbHMvc291cCIKICAgICAiJHtXRUJLSVRfRElSfS9OZXR3b3JrUHJvY2Vzcy9nbGli
IgogICAgICIke1dFQktJVF9ESVJ9L05ldHdvcmtQcm9jZXNzL2d0ayIKICAgICAiJHtXRUJLSVRf
RElSfS9OZXR3b3JrUHJvY2Vzcy9zb3VwIgpAQCAtMzk2LDcgKzM5MSw2IEBAIGxpc3QoQVBQRU5E
IFdlYktpdF9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCS0lUX0RJUn0vVUlQcm9jZXNz
L0FQSS9nbGliIgogICAgICIke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrIgogICAgICIk
e1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzIgotICAgICIke1dFQktJ
VF9ESVJ9L1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwIgogICAgICIke1dF
QktJVF9ESVJ9L1VJUHJvY2Vzcy9QbHVnaW5zL2d0ayIKICAgICAiJHtXRUJLSVRfRElSfS9VSVBy
b2Nlc3MvZ2VvY2x1ZSIKICAgICAiJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvZ2xpYiIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1XUEUuY21ha2UgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtV1BFLmNtYWtlCmluZGV4IDU3MGE0MWNiNWQ4Li44OTc3NDIxYmIxMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdQRS5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtV1BFLmNtYWtlCkBAIC03NSwxMiArNzUsNiBAQCBsaXN0KEFQUEVORCBXZWJLaXRfVU5J
RklFRF9TT1VSQ0VfTElTVF9GSUxFUwogICAgICJTb3VyY2VzV1BFLnR4dCIKICkKIAotbGlzdChB
UFBFTkQgV2ViS2l0X01FU1NBR0VTX0lOX0ZJTEVTCi0gICAgTmV0d29ya1Byb2Nlc3MvQ3VzdG9t
UHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5tZXNzYWdlcy5pbgotCi0gICAg
VUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFu
YWdlclByb3h5Lm1lc3NhZ2VzLmluCi0pCi0KIGxpc3QoQVBQRU5EIFdlYktpdF9ERVJJVkVEX1NP
VVJDRVMKICAgICAke1dlYktpdF9ERVJJVkVEX1NPVVJDRVNfRElSfS9XZWJLaXRSZXNvdXJjZXNH
UmVzb3VyY2VCdW5kbGUuYwogCkBAIC0yMzIsNyArMjI2LDYgQEAgbGlzdChBUFBFTkQgV2ViS2l0
X0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtGT1JXQVJESU5HX0hFQURFUlNfV1BFX0RPTV9E
SVJ9IgogICAgICIke0RFUklWRURfU09VUkNFU19ESVJ9IgogICAgICIke0RFUklWRURfU09VUkNF
U19XUEVfQVBJX0RJUn0iCi0gICAgIiR7V0VCS0lUX0RJUn0vTmV0d29ya1Byb2Nlc3MvQ3VzdG9t
UHJvdG9jb2xzL3NvdXAiCiAgICAgIiR7V0VCS0lUX0RJUn0vTmV0d29ya1Byb2Nlc3MvZ2xpYiIK
ICAgICAiJHtXRUJLSVRfRElSfS9OZXR3b3JrUHJvY2Vzcy9zb3VwIgogICAgICIke1dFQktJVF9E
SVJ9L05ldHdvcmtQcm9jZXNzL3VuaXgiCkBAIC0yNTIsNyArMjQ1LDYgQEAgbGlzdChBUFBFTkQg
V2ViS2l0X0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJLSVRfRElSfS9VSVByb2Nlc3Mv
QVBJL2dsaWIiCiAgICAgIiR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS93cGUiCiAgICAgIiR7
V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MiCi0gICAgIiR7V0VCS0lU
X0RJUn0vVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAiCiAgICAgIiR7V0VC
S0lUX0RJUn0vVUlQcm9jZXNzL2dlb2NsdWUiCiAgICAgIiR7V0VCS0lUX0RJUn0vVUlQcm9jZXNz
L2dzdHJlYW1lciIKICAgICAiJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvbGludXgiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2Vz
R1RLLnR4dAppbmRleCA1NWQxOGMyNmRmNy4uMWU0ZTQyY2RkYmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU291cmNlc0dUSy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4
dApAQCAtMjYsMTAgKzI2LDYgQEAgTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5LmNwcAogCiBOZXR3b3JrUHJvY2Vzcy9Db29raWVzL3Nv
dXAvV2ViQ29va2llTWFuYWdlclNvdXAuY3BwCiAKLU5ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3Rv
Y29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuY3BwCi0KLU5ldHdvcmtQcm9jZXNzL0N1
c3RvbVByb3RvY29scy9zb3VwL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclNvdXAuY3BwCi0K
IE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGFTb3VwLmNwcAogTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsU291cC5jcHAKIApAQCAtNDEsNyArMzcs
NiBAQCBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzTWFpblNvdXAuY3BwCiBOZXR3
b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKIE5ldHdvcmtQcm9jZXNzL3Nv
dXAvTmV0d29ya1Nlc3Npb25Tb3VwLmNwcAogTmV0d29ya1Byb2Nlc3Mvc291cC9SZW1vdGVOZXR3
b3JraW5nQ29udGV4dFNvdXAuY3BwCi1OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYktpdFNvdXBSZXF1
ZXN0SW5wdXRTdHJlYW0uY3BwCiBOZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tTb3Vw
LmNwcAogCiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDU29ja2V0Q2xpZW50LmNwcApA
QCAtMTM0LDcgKzEyOSw2IEBAIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRCYWNrRm9yd2FyZExp
c3RJdGVtLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDb250ZXh0TWVu
dUNsaWVudC5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q29va2llTWFu
YWdlci5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q3JlZGVudGlhbC5j
cHAgQG5vLXVuaWZ5Ci1VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q3VzdG9tUHJvdG9jb2xNYW5h
Z2VyQ2xpZW50LmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXREZXZpY2VJ
bmZvUGVybWlzc2lvblJlcXVlc3QuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdERvd25sb2FkLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXREb3du
bG9hZENsaWVudC5jcHAgQG5vLXVuaWZ5CkBAIC0yMTUsOCArMjA5LDYgQEAgVUlQcm9jZXNzL2dl
b2NsdWUvR2VvY2x1ZUdlb2xvY2F0aW9uUHJvdmlkZXIuY3BwCiBVSVByb2Nlc3MvTGF1bmNoZXIv
Z2xpYi9Qcm9jZXNzTGF1bmNoZXJHTGliLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9MYXVuY2hl
ci9nbGliL0J1YmJsZXdyYXBMYXVuY2hlci5jcHAgQG5vLXVuaWZ5CiAKLVVJUHJvY2Vzcy9OZXR3
b3JrL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5jcHAK
LQogVUlQcm9jZXNzL2xpbnV4L01lbW9yeVByZXNzdXJlTW9uaXRvci5jcHAKIAogVUlQcm9jZXNz
L1BsdWdpbnMvZ3RrL1BsdWdpbkluZm9DYWNoZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU291cmNlc1dQRS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNXUEUudHh0CmluZGV4IDI0
ODViYjYxYTlkLi5hMjJlNGYxMDk5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2Vz
V1BFLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNXUEUudHh0CkBAIC0yNiwxMCArMjYs
NiBAQCBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NU
ZWxlbWV0cnkuY3BwCiAKIE5ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvc291cC9XZWJDb29raWVNYW5h
Z2VyU291cC5jcHAKIAotTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3Rv
bVByb3RvY29sTWFuYWdlci5jcHAKLQotTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL3Nv
dXAvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyU291cC5jcHAKLQogTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlRGF0YVNvdXAuY3BwCiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVJT0NoYW5uZWxTb3VwLmNwcAogCkBAIC00MSw3ICszNyw2IEBAIE5ldHdvcmtQcm9j
ZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NNYWluU291cC5jcHAKIE5ldHdvcmtQcm9jZXNzL3NvdXAv
TmV0d29ya1Byb2Nlc3NTb3VwLmNwcAogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lv
blNvdXAuY3BwCiBOZXR3b3JrUHJvY2Vzcy9zb3VwL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0U291
cC5jcHAKLU5ldHdvcmtQcm9jZXNzL3NvdXAvV2ViS2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbS5j
cHAKIE5ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1NvdXAuY3BwCiAKIE5ldHdvcmtQ
cm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRDbGllbnQuY3BwCkBAIC0xMjMsNyArMTE4LDYg
QEAgVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwIEBuby11
bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdENvbnRleHRNZW51Q2xpZW50LmNwcCBAbm8t
dW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDb29raWVNYW5hZ2VyLmNwcCBAbm8tdW5p
ZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDcmVkZW50aWFsLmNwcCBAbm8tdW5pZnkKLVVJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuY3BwIEBu
by11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdERldmljZUluZm9QZXJtaXNzaW9uUmVx
dWVzdC5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RG93bmxvYWQuY3Bw
IEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdERvd25sb2FkQ2xpZW50LmNwcCBA
bm8tdW5pZnkKQEAgLTE5Nyw4ICsxOTEsNiBAQCBVSVByb2Nlc3MvZ2xpYi9XZWJzaXRlRGF0YVN0
b3JlR0xpYi5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9Qcm9jZXNzTGF1
bmNoZXJHTGliLmNwcAogVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvQnViYmxld3JhcExhdW5jaGVy
LmNwcAogCi1VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJv
dG9jb2xNYW5hZ2VyUHJveHkuY3BwCi0KIFVJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luSW5m
b1N0b3JlVW5peC5jcHAKIFVJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5
VW5peC5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzNzNiMjk0NTcxLi4wMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDdXN0b21Qcm90b2NvbE1h
bmFnZXJDbGllbnQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNiBJZ2FsaWEgUy5MLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
LSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiV2ViS2l0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmgiCi0KLSNpbmNsdWRlICJBUElD
dXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaCIKLSNpbmNsdWRlICJMZWdhY3lDdXN0b21Qcm90
b2NvbE1hbmFnZXJQcm94eS5oIgotI2luY2x1ZGUgIldlYktpdFdlYkNvbnRleHRQcml2YXRlLmgi
Ci0jaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
Ci11c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotCi1jbGFzcyBDdXN0b21Qcm90b2NvbE1hbmFnZXJD
bGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQgewot
cHVibGljOgotICAgIGV4cGxpY2l0IEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudChXZWJLaXRX
ZWJDb250ZXh0KiB3ZWJDb250ZXh0KQotICAgICAgICA6IG1fd2ViQ29udGV4dCh3ZWJDb250ZXh0
KQotICAgIHsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCBzdGFydExvYWRpbmcoTGVnYWN5
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkmIG1hbmFnZXIsIHVpbnQ2NF90IGN1c3RvbVByb3Rv
Y29sSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkgb3ZlcnJpZGUKLSAgICB7Ci0g
ICAgICAgIHdlYmtpdFdlYkNvbnRleHRTdGFydExvYWRpbmdDdXN0b21Qcm90b2NvbChtX3dlYkNv
bnRleHQsIGN1c3RvbVByb3RvY29sSUQsIHJlcXVlc3QsIG1hbmFnZXIpOwotICAgIH0KLQotICAg
IHZvaWQgc3RvcExvYWRpbmcoTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkmLCB1aW50
NjRfdCBjdXN0b21Qcm90b2NvbElEKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgd2Via2l0V2Vi
Q29udGV4dFN0b3BMb2FkaW5nQ3VzdG9tUHJvdG9jb2wobV93ZWJDb250ZXh0LCBjdXN0b21Qcm90
b2NvbElEKTsKLSAgICB9Ci0KLSAgICB2b2lkIGludmFsaWRhdGUoTGVnYWN5Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyUHJveHkmIG1hbmFnZXIpIG92ZXJyaWRlCi0gICAgewotICAgICAgICB3ZWJraXRX
ZWJDb250ZXh0SW52YWxpZGF0ZUN1c3RvbVByb3RvY29sUmVxdWVzdHMobV93ZWJDb250ZXh0LCBt
YW5hZ2VyKTsKLSAgICB9Ci0KLSAgICBXZWJLaXRXZWJDb250ZXh0KiBtX3dlYkNvbnRleHQ7Ci19
OwotCi12b2lkIGF0dGFjaEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudFRvQ29udGV4dChXZWJL
aXRXZWJDb250ZXh0KiB3ZWJDb250ZXh0KQotewotICAgIHdlYmtpdFdlYkNvbnRleHRHZXRQcm9j
ZXNzUG9vbCh3ZWJDb250ZXh0KS5zZXRMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQo
bWFrZVVuaXF1ZTxDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ+KHdlYkNvbnRleHQpKTsKLX0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEN1c3Rv
bVByb3RvY29sTWFuYWdlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGM5YzRjMTdjYzFkLi4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaAor
KysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYg
SWdhbGlhIFMuTC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgot
ICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAq
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJXZWJLaXRXZWJDb250ZXh0Lmgi
Ci0KLXZvaWQgYXR0YWNoQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50VG9Db250ZXh0KFdlYktp
dFdlYkNvbnRleHQqKTsKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcAppbmRleCA0NDI3OTQwYWMwYi4u
MTFlNWZjMjAzMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwCkBAIC01NywxMCArNTcsOSBAQCB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgZ1JlYWRC
dWZmZXJTaXplID0gODE5MjsKIAogc3RydWN0IF9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0UHJpdmF0
ZSB7Ci0gICAgV2ViS2l0V2ViQ29udGV4dCogd2ViQ29udGV4dDsKLSAgICBMZWdhY3lDdXN0b21Q
cm90b2NvbE1hbmFnZXJQcm94eSogbWFuYWdlcjsKKyAgICBSZWZQdHI8V2ViVVJMU2NoZW1lVGFz
az4gdGFzazsKKwogICAgIFJlZlB0cjxXZWJQYWdlUHJveHk+IGluaXRpYXRpbmdQYWdlOwotICAg
IHVpbnQ2NF90IHJlcXVlc3RJRDsKICAgICBDU3RyaW5nIHVyaTsKICAgICBHVW5pcXVlUHRyPFNv
dXBVUkk+IHNvdXBVUkk7CiAKQEAgLTc4LDE4ICs3NywxMSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRf
dXJpX3NjaGVtZV9yZXF1ZXN0X2NsYXNzX2luaXQoV2ViS2l0VVJJU2NoZW1lUmVxdWVzdENsYXNz
KikKIHsKIH0KIAotV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCogd2Via2l0VVJJU2NoZW1lUmVxdWVz
dENyZWF0ZSh1aW50NjRfdCByZXF1ZXN0SUQsIFdlYktpdFdlYkNvbnRleHQqIHdlYkNvbnRleHQs
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBMZWdhY3lDdXN0b21Qcm90
b2NvbE1hbmFnZXJQcm94eSYgbWFuYWdlcikKK1dlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHdlYmtp
dFVSSVNjaGVtZVJlcXVlc3RDcmVhdGUoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJVUkxTY2hlbWVU
YXNrJiB0YXNrKQogewogICAgIFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHJlcXVlc3QgPSBXRUJL
SVRfVVJJX1NDSEVNRV9SRVFVRVNUKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9VUklfU0NIRU1F
X1JFUVVFU1QsIG51bGxwdHIpKTsKLSAgICByZXF1ZXN0LT5wcml2LT53ZWJDb250ZXh0ID0gd2Vi
Q29udGV4dDsKLSAgICByZXF1ZXN0LT5wcml2LT5tYW5hZ2VyID0gJm1hbmFnZXI7Ci0gICAgcmVx
dWVzdC0+cHJpdi0+dXJpID0gcmVzb3VyY2VSZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKTsK
LSAgICByZXF1ZXN0LT5wcml2LT5yZXF1ZXN0SUQgPSByZXF1ZXN0SUQ7Ci0KLSAgICBBU1NFUlQo
cmVzb3VyY2VSZXF1ZXN0LmluaXRpYXRpbmdQYWdlSUQoKSk7Ci0gICAgcmVxdWVzdC0+cHJpdi0+
aW5pdGlhdGluZ1BhZ2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2UobWFrZU9iamVjdElkZW50
aWZpZXI8V2ViUGFnZVByb3h5SWRlbnRpZmllclR5cGU+KCpyZXNvdXJjZVJlcXVlc3QuaW5pdGlh
dGluZ1BhZ2VJRCgpKSk7Ci0gICAgQVNTRVJUKHJlcXVlc3QtPnByaXYtPmluaXRpYXRpbmdQYWdl
KTsKLQorICAgIHJlcXVlc3QtPnByaXYtPnRhc2sgPSAmdGFzazsKKyAgICByZXF1ZXN0LT5wcml2
LT5pbml0aWF0aW5nUGFnZSA9ICZwYWdlOwogICAgIHJldHVybiByZXF1ZXN0OwogfQogCkBAIC05
OCwxNyArOTAsNiBAQCB2b2lkIHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RDYW5jZWwoV2ViS2l0VVJJ
U2NoZW1lUmVxdWVzdCogcmVxdWVzdCkKICAgICBnX2NhbmNlbGxhYmxlX2NhbmNlbChyZXF1ZXN0
LT5wcml2LT5jYW5jZWxsYWJsZS5nZXQoKSk7CiB9CiAKLUxlZ2FjeUN1c3RvbVByb3RvY29sTWFu
YWdlclByb3h5KiB3ZWJraXRVUklTY2hlbWVSZXF1ZXN0R2V0TWFuYWdlcihXZWJLaXRVUklTY2hl
bWVSZXF1ZXN0KiByZXF1ZXN0KQotewotICAgIHJldHVybiByZXF1ZXN0LT5wcml2LT5tYW5hZ2Vy
OwotfQotCi12b2lkIHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RJbnZhbGlkYXRlKFdlYktpdFVSSVNj
aGVtZVJlcXVlc3QqIHJlcXVlc3QpCi17Ci0gICAgcmVxdWVzdC0+cHJpdi0+bWFuYWdlciA9IG51
bGxwdHI7Ci0gICAgd2Via2l0VVJJU2NoZW1lUmVxdWVzdENhbmNlbChyZXF1ZXN0KTsKLX0KLQog
LyoqCiAgKiB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2dldF9zY2hlbWU6CiAgKiBAcmVxdWVz
dDogYSAjV2ViS2l0VVJJU2NoZW1lUmVxdWVzdApAQCAtMTE5LDEwICsxMDAsMTEgQEAgdm9pZCB3
ZWJraXRVUklTY2hlbWVSZXF1ZXN0SW52YWxpZGF0ZShXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiBy
ZXF1ZXN0KQogICovCiBjb25zdCBjaGFyKiB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2dldF9z
Y2hlbWUoV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCogcmVxdWVzdCkKIHsKLSAgICBnX3JldHVybl92
YWxfaWZfZmFpbChXRUJLSVRfSVNfVVJJX1NDSEVNRV9SRVFVRVNUKHJlcXVlc3QpLCAwKTsKKyAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfVVJJX1NDSEVNRV9SRVFVRVNUKHJlcXVl
c3QpLCBudWxscHRyKTsKIAogICAgIGlmICghcmVxdWVzdC0+cHJpdi0+c291cFVSSSkKLSAgICAg
ICAgcmVxdWVzdC0+cHJpdi0+c291cFVSSS5yZXNldChzb3VwX3VyaV9uZXcocmVxdWVzdC0+cHJp
di0+dXJpLmRhdGEoKSkpOworICAgICAgICByZXF1ZXN0LT5wcml2LT5zb3VwVVJJID0gdXJsVG9T
b3VwVVJJKHJlcXVlc3QtPnByaXYtPnRhc2stPnJlcXVlc3QoKS51cmwoKSk7CisKICAgICByZXR1
cm4gcmVxdWVzdC0+cHJpdi0+c291cFVSSS0+c2NoZW1lOwogfQogCkBAIC0xMzYsNyArMTE4LDEw
IEBAIGNvbnN0IGNoYXIqIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZ2V0X3NjaGVtZShXZWJL
aXRVUklTY2hlbWVSZXF1ZXN0KiByZXF1ZXN0CiAgKi8KIGNvbnN0IGNoYXIqIHdlYmtpdF91cmlf
c2NoZW1lX3JlcXVlc3RfZ2V0X3VyaShXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiByZXF1ZXN0KQog
ewotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19VUklfU0NIRU1FX1JFUVVFU1Qo
cmVxdWVzdCksIDApOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19VUklfU0NI
RU1FX1JFUVVFU1QocmVxdWVzdCksIG51bGxwdHIpOworCisgICAgaWYgKHJlcXVlc3QtPnByaXYt
PnVyaS5pc051bGwoKSkKKyAgICAgICAgcmVxdWVzdC0+cHJpdi0+dXJpID0gcmVxdWVzdC0+cHJp
di0+dGFzay0+cmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKTsKIAogICAgIHJldHVybiBy
ZXF1ZXN0LT5wcml2LT51cmkuZGF0YSgpOwogfQpAQCAtMTUxLDEwICsxMzYsMTEgQEAgY29uc3Qg
Y2hhciogd2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9nZXRfdXJpKFdlYktpdFVSSVNjaGVtZVJl
cXVlc3QqIHJlcXVlc3QpCiAgKi8KIGNvbnN0IGNoYXIqIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVl
c3RfZ2V0X3BhdGgoV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCogcmVxdWVzdCkKIHsKLSAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfVVJJX1NDSEVNRV9SRVFVRVNUKHJlcXVlc3QpLCAw
KTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfVVJJX1NDSEVNRV9SRVFVRVNU
KHJlcXVlc3QpLCBudWxscHRyKTsKIAogICAgIGlmICghcmVxdWVzdC0+cHJpdi0+c291cFVSSSkK
LSAgICAgICAgcmVxdWVzdC0+cHJpdi0+c291cFVSSS5yZXNldChzb3VwX3VyaV9uZXcocmVxdWVz
dC0+cHJpdi0+dXJpLmRhdGEoKSkpOworICAgICAgICByZXF1ZXN0LT5wcml2LT5zb3VwVVJJID0g
dXJsVG9Tb3VwVVJJKHJlcXVlc3QtPnByaXYtPnRhc2stPnJlcXVlc3QoKS51cmwoKSk7CisKICAg
ICByZXR1cm4gcmVxdWVzdC0+cHJpdi0+c291cFVSSS0+cGF0aDsKIH0KIApAQCAtMTY4LDUwICsx
NTQsMzggQEAgY29uc3QgY2hhciogd2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9nZXRfcGF0aChX
ZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiByZXF1ZXN0KQogICovCiBXZWJLaXRXZWJWaWV3KiB3ZWJr
aXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2dldF93ZWJfdmlldyhXZWJLaXRVUklTY2hlbWVSZXF1ZXN0
KiByZXF1ZXN0KQogewotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19VUklfU0NI
RU1FX1JFUVVFU1QocmVxdWVzdCksIDApOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJ
VF9JU19VUklfU0NIRU1FX1JFUVVFU1QocmVxdWVzdCksIG51bGxwdHIpOwogCi0gICAgcmV0dXJu
IHdlYmtpdFdlYkNvbnRleHRHZXRXZWJWaWV3Rm9yUGFnZShyZXF1ZXN0LT5wcml2LT53ZWJDb250
ZXh0LCByZXF1ZXN0LT5wcml2LT5pbml0aWF0aW5nUGFnZS5nZXQoKSk7CisgICAgcmV0dXJuIFdF
QktJVF9XRUJfVklFVyhyZXF1ZXN0LT5wcml2LT5pbml0aWF0aW5nUGFnZS0+dmlld1dpZGdldCgp
KTsKIH0KIAogc3RhdGljIHZvaWQgd2Via2l0VVJJU2NoZW1lUmVxdWVzdFJlYWRDYWxsYmFjayhH
SW5wdXRTdHJlYW0qIGlucHV0U3RyZWFtLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgV2ViS2l0VVJJ
U2NoZW1lUmVxdWVzdCogc2NoZW1lUmVxdWVzdCkKIHsKICAgICBHUmVmUHRyPFdlYktpdFVSSVNj
aGVtZVJlcXVlc3Q+IHJlcXVlc3QgPSBhZG9wdEdSZWYoc2NoZW1lUmVxdWVzdCk7Ci0gICAgV2Vi
S2l0VVJJU2NoZW1lUmVxdWVzdFByaXZhdGUqIHByaXYgPSByZXF1ZXN0LT5wcml2OwogICAgIEdV
bmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICBnc3NpemUgYnl0ZXNSZWFkID0gZ19pbnB1
dF9zdHJlYW1fcmVhZF9maW5pc2goaW5wdXRTdHJlYW0sIHJlc3VsdCwgJmVycm9yLm91dFB0cigp
KTsKLSAgICBpZiAoIXByaXYtPm1hbmFnZXIpIHsKLSAgICAgICAgd2Via2l0V2ViQ29udGV4dERp
ZEZpbmlzaExvYWRpbmdDdXN0b21Qcm90b2NvbChwcml2LT53ZWJDb250ZXh0LCBwcml2LT5yZXF1
ZXN0SUQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgaWYgKGJ5dGVzUmVhZCA9PSAt
MSkgewogICAgICAgICB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2ZpbmlzaF9lcnJvcihyZXF1
ZXN0LmdldCgpLCBlcnJvci5nZXQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBX
ZWJLaXRVUklTY2hlbWVSZXF1ZXN0UHJpdmF0ZSogcHJpdiA9IHJlcXVlc3QtPnByaXY7CiAgICAg
Ly8gTmVlZCB0byBjaGVjayB0aGUgc3RyZWFtIGJlZm9yZSBwcm9jZWVkaW5nIGFzIGl0IGNhbiBi
ZSBjYW5jZWxsZWQgaWYgZmluaXNoX2Vycm9yCiAgICAgLy8gd2FzIHByZXZpb3VzbHkgY2FsbCwg
d2hpY2ggd29uJ3QgYmUgZGV0ZWN0ZWQgYnkgZ19pbnB1dF9zdHJlYW1fcmVhZF9maW5pc2goKS4K
LSAgICBpZiAoIXJlcXVlc3QtPnByaXYtPnN0cmVhbSkKKyAgICBpZiAoIXByaXYtPnN0cmVhbSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byB3ZWJEYXRhID0gSVBDOjpEYXRhUmVmZXJlbmNl
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHByaXYtPnJlYWRCdWZmZXIpLCBieXRl
c1JlYWQpOwogICAgIGlmICghcHJpdi0+Ynl0ZXNSZWFkKSB7Ci0gICAgICAgIC8vIEZpcnN0IGNo
dW5rIHJlYWQuIEluIGNhc2Ugb2YgZW1wdHkgcmVwbHkgYW4gZW1wdHkgQVBJOjpEYXRhIGlzIHNl
bnQgdG8gdGhlIG5ldHdvcmtpbmcgcHJvY2Vzcy4KLSAgICAgICAgUmVzb3VyY2VSZXNwb25zZSBy
ZXNwb25zZShVUkwoVVJMKCksIFN0cmluZzo6ZnJvbVVURjgocHJpdi0+dXJpKSksIFN0cmluZzo6
ZnJvbVVURjgocHJpdi0+bWltZVR5cGUuZGF0YSgpKSwKLSAgICAgICAgICAgIHByaXYtPnN0cmVh
bUxlbmd0aCwgZW1wdHlTdHJpbmcoKSk7Ci0gICAgICAgIHByaXYtPm1hbmFnZXItPmRpZFJlY2Vp
dmVSZXNwb25zZShwcml2LT5yZXF1ZXN0SUQsIHJlc3BvbnNlLCAwKTsKLSAgICAgICAgcHJpdi0+
bWFuYWdlci0+ZGlkTG9hZERhdGEocHJpdi0+cmVxdWVzdElELCB3ZWJEYXRhKTsKLSAgICB9IGVs
c2UgaWYgKGJ5dGVzUmVhZCB8fCAoIWJ5dGVzUmVhZCAmJiAhcHJpdi0+c3RyZWFtTGVuZ3RoKSkg
ewotICAgICAgICAvLyBTdWJzZXF1ZW50IGNodW5rIHJlYWQuIFdlIG9ubHkgc2VuZCBhbiBlbXB0
eSBBUEk6OkRhdGEgdG8gdGhlIG5ldHdvcmtpbmcgcHJvY2VzcyB3aGVuIHN0cmVhbSBsZW5ndGgg
aXMgdW5rbm93bi4KLSAgICAgICAgcHJpdi0+bWFuYWdlci0+ZGlkTG9hZERhdGEocHJpdi0+cmVx
dWVzdElELCB3ZWJEYXRhKTsKKyAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShwcml2
LT50YXNrLT5yZXF1ZXN0KCkudXJsKCksIFN0cmluZzo6ZnJvbVVURjgocHJpdi0+bWltZVR5cGUu
ZGF0YSgpKSwgcHJpdi0+c3RyZWFtTGVuZ3RoLCBlbXB0eVN0cmluZygpKTsKKyAgICAgICAgcHJp
di0+dGFzay0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKTsKICAgICB9CiAKICAgICBpZiAo
IWJ5dGVzUmVhZCkgewotICAgICAgICBwcml2LT5tYW5hZ2VyLT5kaWRGaW5pc2hMb2FkaW5nKHBy
aXYtPnJlcXVlc3RJRCk7Ci0gICAgICAgIHdlYmtpdFdlYkNvbnRleHREaWRGaW5pc2hMb2FkaW5n
Q3VzdG9tUHJvdG9jb2wocHJpdi0+d2ViQ29udGV4dCwgcHJpdi0+cmVxdWVzdElEKTsKKyAgICAg
ICAgcHJpdi0+dGFzay0+ZGlkQ29tcGxldGUoeyB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAorICAgIHByaXYtPnRhc2stPmRpZFJlY2VpdmVEYXRhKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHBy
aXYtPnJlYWRCdWZmZXIsIGJ5dGVzUmVhZCkpOwogICAgIHByaXYtPmJ5dGVzUmVhZCArPSBieXRl
c1JlYWQ7CiAgICAgZ19pbnB1dF9zdHJlYW1fcmVhZF9hc3luYyhpbnB1dFN0cmVhbSwgcHJpdi0+
cmVhZEJ1ZmZlciwgZ1JlYWRCdWZmZXJTaXplLCBSdW5Mb29wU291cmNlUHJpb3JpdHk6OkFzeW5j
SU9OZXR3b3JrLCBwcml2LT5jYW5jZWxsYWJsZS5nZXQoKSwKICAgICAgICAgcmVpbnRlcnByZXRf
Y2FzdDxHQXN5bmNSZWFkeUNhbGxiYWNrPih3ZWJraXRVUklTY2hlbWVSZXF1ZXN0UmVhZENhbGxi
YWNrKSwgZ19vYmplY3RfcmVmKHJlcXVlc3QuZ2V0KCkpKTsKQEAgLTI1NywxMSArMjMxLDcgQEAg
dm9pZCB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2ZpbmlzaF9lcnJvcihXZWJLaXRVUklTY2hl
bWVSZXF1ZXN0KiByZXF1ZXN0LCBHRXIKICAgICBnX3JldHVybl9pZl9mYWlsKGVycm9yKTsKIAog
ICAgIFdlYktpdFVSSVNjaGVtZVJlcXVlc3RQcml2YXRlKiBwcml2ID0gcmVxdWVzdC0+cHJpdjsK
LSAgICBpZiAoIXdlYmtpdFdlYkNvbnRleHRJc0xvYWRpbmdDdXN0b21Qcm90b2NvbChwcml2LT53
ZWJDb250ZXh0LCBwcml2LT5yZXF1ZXN0SUQpKQotICAgICAgICByZXR1cm47Ci0KICAgICBwcml2
LT5zdHJlYW0gPSBudWxscHRyOwotICAgIFJlc291cmNlRXJyb3IgcmVzb3VyY2VFcnJvcihnX3F1
YXJrX3RvX3N0cmluZyhlcnJvci0+ZG9tYWluKSwgdG9XZWJDb3JlRXJyb3IoZXJyb3ItPmNvZGUp
LCBzb3VwVVJJVG9VUkwocHJpdi0+c291cFVSSS5nZXQoKSksIFN0cmluZzo6ZnJvbVVURjgoZXJy
b3ItPm1lc3NhZ2UpKTsKLSAgICBwcml2LT5tYW5hZ2VyLT5kaWRGYWlsV2l0aEVycm9yKHByaXYt
PnJlcXVlc3RJRCwgcmVzb3VyY2VFcnJvcik7Ci0gICAgd2Via2l0V2ViQ29udGV4dERpZEZpbmlz
aExvYWRpbmdDdXN0b21Qcm90b2NvbChwcml2LT53ZWJDb250ZXh0LCBwcml2LT5yZXF1ZXN0SUQp
OworICAgIFJlc291cmNlRXJyb3IgcmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhlcnJv
ci0+ZG9tYWluKSwgdG9XZWJDb3JlRXJyb3IoZXJyb3ItPmNvZGUpLCBwcml2LT50YXNrLT5yZXF1
ZXN0KCkudXJsKCksIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKTsKKyAgICBwcml2
LT50YXNrLT5kaWRDb21wbGV0ZShyZXNvdXJjZUVycm9yKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVlc3RQcml2YXRl
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVUklTY2hlbWVSZXF1
ZXN0UHJpdmF0ZS5oCmluZGV4IGJjMmRmMjhiYWY2Li4xY2YzMTYwNzQ4YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdFBy
aXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVUklT
Y2hlbWVSZXF1ZXN0UHJpdmF0ZS5oCkBAIC0xOSwxMiArMTksMTEgQEAKIAogI3ByYWdtYSBvbmNl
CiAKLSNpbmNsdWRlICJMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oIgogI2luY2x1
ZGUgIldlYktpdFVSSVNjaGVtZVJlcXVlc3QuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJDb250ZXh0
LmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCisjaW5jbHVkZSAiV2ViVVJMU2NoZW1lVGFz
ay5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAKLVdlYktpdFVSSVNj
aGVtZVJlcXVlc3QqIHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RDcmVhdGUodWludDY0X3QgcmVxdWVz
dElELCBXZWJLaXRXZWJDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwg
V2ViS2l0OjpMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSYpOworV2ViS2l0VVJJU2No
ZW1lUmVxdWVzdCogd2Via2l0VVJJU2NoZW1lUmVxdWVzdENyZWF0ZShXZWJLaXQ6OldlYlBhZ2VQ
cm94eSYsIFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzayYpOwogdm9pZCB3ZWJraXRVUklTY2hlbWVS
ZXF1ZXN0Q2FuY2VsKFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqKTsKLVdlYktpdDo6TGVnYWN5Q3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkqIHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RHZXRNYW5hZ2Vy
KFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqKTsKLXZvaWQgd2Via2l0VVJJU2NoZW1lUmVxdWVzdElu
dmFsaWRhdGUoV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAppbmRleCA3ODQ5YjRh
ZDNjNC4uNDUyOTBiMzRmMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCkBAIC0yMSw3ICsyMSw2IEBACiAjaW5jbHVk
ZSAiV2ViS2l0V2ViQ29udGV4dC5oIgogCiAjaW5jbHVkZSAiQVBJQXV0b21hdGlvbkNsaWVudC5o
IgotI2luY2x1ZGUgIkFQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oIgogI2luY2x1ZGUg
IkFQSURvd25sb2FkQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJSW5qZWN0ZWRCdW5kbGVDbGllbnQu
aCIKICNpbmNsdWRlICJBUElQYWdlQ29uZmlndXJhdGlvbi5oIgpAQCAtMzMsNyArMzIsNiBAQAog
I2luY2x1ZGUgIldlYkF1dG9tYXRpb25TZXNzaW9uLmgiCiAjaW5jbHVkZSAiV2ViQ2VydGlmaWNh
dGVJbmZvLmgiCiAjaW5jbHVkZSAiV2ViS2l0QXV0b21hdGlvblNlc3Npb25Qcml2YXRlLmgiCi0j
aW5jbHVkZSAiV2ViS2l0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmgiCiAjaW5jbHVkZSAi
V2ViS2l0RG93bmxvYWRDbGllbnQuaCIKICNpbmNsdWRlICJXZWJLaXREb3dubG9hZFByaXZhdGUu
aCIKICNpbmNsdWRlICJXZWJLaXRGYXZpY29uRGF0YWJhc2VQcml2YXRlLmgiCkBAIC01Myw2ICs1
MSw3IEBACiAjaW5jbHVkZSAiV2ViS2l0V2ViVmlld1ByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJL
aXRXZWJzaXRlRGF0YU1hbmFnZXJQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9u
TWFuYWdlclByb3h5LmgiCisjaW5jbHVkZSAiV2ViVVJMU2NoZW1lSGFuZGxlci5oIgogI2luY2x1
ZGUgIldlYnNpdGVEYXRhVHlwZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1JlbW90ZUlu
c3BlY3Rvci5oPgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CkBAIC0xMjgsMTMgKzEyNywx
MSBAQCBlbnVtIHsKICAgICBMQVNUX1NJR05BTAogfTsKIAotY2xhc3MgV2ViS2l0VVJJU2NoZW1l
SGFuZGxlcjogcHVibGljIFJlZkNvdW50ZWQ8V2ViS2l0VVJJU2NoZW1lSGFuZGxlcj4geworY2xh
c3MgV2ViS2l0VVJJU2NoZW1lSGFuZGxlciBmaW5hbCA6IHB1YmxpYyBXZWJVUkxTY2hlbWVIYW5k
bGVyIHsKIHB1YmxpYzoKLSAgICBXZWJLaXRVUklTY2hlbWVIYW5kbGVyKFdlYktpdFVSSVNjaGVt
ZVJlcXVlc3RDYWxsYmFjayBjYWxsYmFjaywgdm9pZCogdXNlckRhdGEsIEdEZXN0cm95Tm90aWZ5
IGRlc3Ryb3lOb3RpZnkpCi0gICAgICAgIDogbV9jYWxsYmFjayhjYWxsYmFjaykKLSAgICAgICAg
LCBtX3VzZXJEYXRhKHVzZXJEYXRhKQotICAgICAgICAsIG1fZGVzdHJveU5vdGlmeShkZXN0cm95
Tm90aWZ5KQorICAgIHN0YXRpYyBSZWY8V2ViS2l0VVJJU2NoZW1lSGFuZGxlcj4gY3JlYXRlKFdl
YktpdFVSSVNjaGVtZVJlcXVlc3RDYWxsYmFjayBjYWxsYmFjaywgdm9pZCogdXNlckRhdGEsIEdE
ZXN0cm95Tm90aWZ5IGRlc3Ryb3lOb3RpZnkpCiAgICAgeworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBXZWJLaXRVUklTY2hlbWVIYW5kbGVyKGNhbGxiYWNrLCB1c2VyRGF0YSwgZGVzdHJv
eU5vdGlmeSkpOwogICAgIH0KIAogICAgIH5XZWJLaXRVUklTY2hlbWVIYW5kbGVyKCkKQEAgLTE0
MywyMiArMTQwLDQ0IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fZGVzdHJveU5vdGlmeShtX3Vz
ZXJEYXRhKTsKICAgICB9CiAKLSAgICBib29sIGhhc0NhbGxiYWNrKCkKK3ByaXZhdGU6CisgICAg
V2ViS2l0VVJJU2NoZW1lSGFuZGxlcihXZWJLaXRVUklTY2hlbWVSZXF1ZXN0Q2FsbGJhY2sgY2Fs
bGJhY2ssIHZvaWQqIHVzZXJEYXRhLCBHRGVzdHJveU5vdGlmeSBkZXN0cm95Tm90aWZ5KQorICAg
ICAgICA6IG1fY2FsbGJhY2soY2FsbGJhY2spCisgICAgICAgICwgbV91c2VyRGF0YSh1c2VyRGF0
YSkKKyAgICAgICAgLCBtX2Rlc3Ryb3lOb3RpZnkoZGVzdHJveU5vdGlmeSkKKyAgICB7CisgICAg
fQorCisgICAgdm9pZCBwbGF0Zm9ybVN0YXJ0VGFzayhXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYlVS
TFNjaGVtZVRhc2smIHRhc2spIGZpbmFsCiAgICAgewotICAgICAgICByZXR1cm4gbV9jYWxsYmFj
azsKKyAgICAgICAgaWYgKCFtX2NhbGxiYWNrKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIEdSZWZQdHI8V2ViS2l0VVJJU2NoZW1lUmVxdWVzdD4gcmVxdWVzdCA9IGFkb3B0R1JlZih3
ZWJraXRVUklTY2hlbWVSZXF1ZXN0Q3JlYXRlKHBhZ2UsIHRhc2spKTsKKyAgICAgICAgYXV0byBh
ZGRSZXN1bHQgPSBtX3JlcXVlc3RzLmFkZCh0YXNrLmlkZW50aWZpZXIoKSwgV1RGTW92ZShyZXF1
ZXN0KSk7CisgICAgICAgIEFTU0VSVChhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CisgICAgICAgIG1f
Y2FsbGJhY2soYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKSwgbV91c2VyRGF0YSk7CiAg
ICAgfQogCi0gICAgdm9pZCBwZXJmb3JtQ2FsbGJhY2soV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCog
cmVxdWVzdCkKKyAgICB2b2lkIHBsYXRmb3JtU3RvcFRhc2soV2ViUGFnZVByb3h5JiwgV2ViVVJM
U2NoZW1lVGFzayYgdGFzaykgZmluYWwKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX2NhbGxiYWNr
KTsKKyAgICAgICAgYXV0byBpdCA9IG1fcmVxdWVzdHMuZmluZCh0YXNrLmlkZW50aWZpZXIoKSk7
CisgICAgICAgIGlmIChpdCA9PSBtX3JlcXVlc3RzLmVuZCgpKQorICAgICAgICAgICAgcmV0dXJu
OwogCi0gICAgICAgIG1fY2FsbGJhY2socmVxdWVzdCwgbV91c2VyRGF0YSk7CisgICAgICAgIHdl
YmtpdFVSSVNjaGVtZVJlcXVlc3RDYW5jZWwoaXQtPnZhbHVlLmdldCgpKTsKKyAgICAgICAgbV9y
ZXF1ZXN0cy5yZW1vdmUoaXQpOworICAgIH0KKworICAgIHZvaWQgcGxhdGZvcm1UYXNrQ29tcGxl
dGVkKFdlYlVSTFNjaGVtZVRhc2smIHRhc2spIGZpbmFsCisgICAgeworICAgICAgICBtX3JlcXVl
c3RzLnJlbW92ZSh0YXNrLmlkZW50aWZpZXIoKSk7CiAgICAgfQogCi1wcml2YXRlOgogICAgIFdl
YktpdFVSSVNjaGVtZVJlcXVlc3RDYWxsYmFjayBtX2NhbGxiYWNrIHsgbnVsbHB0ciB9OwogICAg
IHZvaWQqIG1fdXNlckRhdGEgeyBudWxscHRyIH07CiAgICAgR0Rlc3Ryb3lOb3RpZnkgbV9kZXN0
cm95Tm90aWZ5IHsgbnVsbHB0ciB9OworICAgIEhhc2hNYXA8dWludDY0X3QsIEdSZWZQdHI8V2Vi
S2l0VVJJU2NoZW1lUmVxdWVzdD4+IG1fcmVxdWVzdHM7CiB9OwogCiB0eXBlZGVmIEhhc2hNYXA8
U3RyaW5nLCBSZWZQdHI8V2ViS2l0VVJJU2NoZW1lSGFuZGxlcj4gPiBVUklTY2hlbWVIYW5kbGVy
TWFwOwpAQCAtMTc2LDcgKzE5NSw2IEBAIHN0cnVjdCBfV2ViS2l0V2ViQ29udGV4dFByaXZhdGUg
ewogICAgIEdSZWZQdHI8V2ViS2l0RmF2aWNvbkRhdGFiYXNlPiBmYXZpY29uRGF0YWJhc2U7CiAg
ICAgR1JlZlB0cjxXZWJLaXRTZWN1cml0eU1hbmFnZXI+IHNlY3VyaXR5TWFuYWdlcjsKICAgICBV
UklTY2hlbWVIYW5kbGVyTWFwIHVyaVNjaGVtZUhhbmRsZXJzOwotICAgIFVSSVNjaGVtZVJlcXVl
c3RNYXAgdXJpU2NoZW1lUmVxdWVzdHM7CiAgICAgR1JlZlB0cjxXZWJLaXRHZW9sb2NhdGlvbk1h
bmFnZXI+IGdlb2xvY2F0aW9uTWFuYWdlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0Tm90
aWZpY2F0aW9uUHJvdmlkZXI+IG5vdGlmaWNhdGlvblByb3ZpZGVyOwogICAgIEdSZWZQdHI8V2Vi
S2l0V2Vic2l0ZURhdGFNYW5hZ2VyPiB3ZWJzaXRlRGF0YU1hbmFnZXI7CkBAIC0zNjcsNyArMzg1
LDYgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViQ29udGV4dENvbnN0cnVjdGVkKEdPYmplY3QqIG9i
amVjdCkKIAogICAgIGF0dGFjaEluamVjdGVkQnVuZGxlQ2xpZW50VG9Db250ZXh0KHdlYkNvbnRl
eHQpOwogICAgIGF0dGFjaERvd25sb2FkQ2xpZW50VG9Db250ZXh0KHdlYkNvbnRleHQpOwotICAg
IGF0dGFjaEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudFRvQ29udGV4dCh3ZWJDb250ZXh0KTsK
IAogICAgIHByaXYtPmdlb2xvY2F0aW9uTWFuYWdlciA9IGFkb3B0R1JlZih3ZWJraXRHZW9sb2Nh
dGlvbk1hbmFnZXJDcmVhdGUocHJpdi0+cHJvY2Vzc1Bvb2wtPnN1cHBsZW1lbnQ8V2ViR2VvbG9j
YXRpb25NYW5hZ2VyUHJveHk+KCkpKTsKICAgICBwcml2LT5ub3RpZmljYXRpb25Qcm92aWRlciA9
IG1ha2VVbmlxdWU8V2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXI+KHByaXYtPnByb2Nlc3NQb29s
LT5zdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eT4oKSwgd2ViQ29udGV4dCk7
CkBAIC0zODQsNyArNDAxLDYgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViQ29udGV4dERpc3Bvc2Uo
R09iamVjdCogb2JqZWN0KQogICAgICAgICBwcml2LT5jbGllbnRzRGV0YWNoZWQgPSB0cnVlOwog
ICAgICAgICBwcml2LT5wcm9jZXNzUG9vbC0+c2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQobnVsbHB0
cik7CiAgICAgICAgIHByaXYtPnByb2Nlc3NQb29sLT5zZXREb3dubG9hZENsaWVudChtYWtlVW5p
cXVlUmVmPEFQSTo6RG93bmxvYWRDbGllbnQ+KCkpOwotICAgICAgICBwcml2LT5wcm9jZXNzUG9v
bC0+c2V0TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KG51bGxwdHIpOwogICAgIH0K
IAogICAgIGlmIChwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIpIHsKQEAgLTExNTMsMTAgKzExNjks
MTAgQEAgdm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfcmVnaXN0ZXJfdXJpX3NjaGVtZShXZWJLaXRX
ZWJDb250ZXh0KiBjb250ZXh0LCBjb25zdCBjaGEKICAgICBnX3JldHVybl9pZl9mYWlsKHNjaGVt
ZSk7CiAgICAgZ19yZXR1cm5faWZfZmFpbChjYWxsYmFjayk7CiAKLSAgICBSZWZQdHI8V2ViS2l0
VVJJU2NoZW1lSGFuZGxlcj4gaGFuZGxlciA9IGFkb3B0UmVmKG5ldyBXZWJLaXRVUklTY2hlbWVI
YW5kbGVyKGNhbGxiYWNrLCB1c2VyRGF0YSwgZGVzdHJveU5vdGlmeSkpOwotICAgIGF1dG8gYWRk
UmVzdWx0ID0gY29udGV4dC0+cHJpdi0+dXJpU2NoZW1lSGFuZGxlcnMuc2V0KFN0cmluZzo6ZnJv
bVVURjgoc2NoZW1lKSwgaGFuZGxlci5nZXQoKSk7Ci0gICAgaWYgKGFkZFJlc3VsdC5pc05ld0Vu
dHJ5KQotICAgICAgICBXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpyZWdpc3Rlckdsb2JhbFVSTFNj
aGVtZUFzSGF2aW5nQ3VzdG9tUHJvdG9jb2xIYW5kbGVycyhTdHJpbmc6OmZyb21VVEY4KHNjaGVt
ZSkpOworICAgIGF1dG8gaGFuZGxlciA9IFdlYktpdFVSSVNjaGVtZUhhbmRsZXI6OmNyZWF0ZShj
YWxsYmFjaywgdXNlckRhdGEsIGRlc3Ryb3lOb3RpZnkpOworICAgIGF1dG8gYWRkUmVzdWx0ID0g
Y29udGV4dC0+cHJpdi0+dXJpU2NoZW1lSGFuZGxlcnMuc2V0KFN0cmluZzo6ZnJvbVVURjgoc2No
ZW1lKSwgV1RGTW92ZShoYW5kbGVyKSk7CisgICAgZm9yIChhdXRvKiB3ZWJWaWV3IDogY29udGV4
dC0+cHJpdi0+d2ViVmlld3MudmFsdWVzKCkpCisgICAgICAgIHdlYmtpdFdlYlZpZXdHZXRQYWdl
KHdlYlZpZXcpLnNldFVSTFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUoKmFkZFJlc3VsdC5pdGVyYXRv
ci0+dmFsdWUsIFN0cmluZzo6ZnJvbVVURjgoc2NoZW1lKSk7CiB9CiAKIC8qKgpAQCAtMTcwMyw0
NSArMTcxOSw2IEBAIFdlYlByb2Nlc3NQb29sJiB3ZWJraXRXZWJDb250ZXh0R2V0UHJvY2Vzc1Bv
b2woV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCkKICAgICByZXR1cm4gKmNvbnRleHQtPnByaXYt
PnByb2Nlc3NQb29sOwogfQogCi12b2lkIHdlYmtpdFdlYkNvbnRleHRTdGFydExvYWRpbmdDdXN0
b21Qcm90b2NvbChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCB1aW50NjRfdCBjdXN0b21Qcm90
b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCwg
TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkmIG1hbmFnZXIpCi17Ci0gICAgR1JlZlB0
cjxXZWJLaXRVUklTY2hlbWVSZXF1ZXN0PiByZXF1ZXN0ID0gYWRvcHRHUmVmKHdlYmtpdFVSSVNj
aGVtZVJlcXVlc3RDcmVhdGUoY3VzdG9tUHJvdG9jb2xJRCwgY29udGV4dCwgcmVzb3VyY2VSZXF1
ZXN0LCBtYW5hZ2VyKSk7Ci0gICAgU3RyaW5nIHNjaGVtZShTdHJpbmc6OmZyb21VVEY4KHdlYmtp
dF91cmlfc2NoZW1lX3JlcXVlc3RfZ2V0X3NjaGVtZShyZXF1ZXN0LmdldCgpKSkpOwotICAgIFJl
ZlB0cjxXZWJLaXRVUklTY2hlbWVIYW5kbGVyPiBoYW5kbGVyID0gY29udGV4dC0+cHJpdi0+dXJp
U2NoZW1lSGFuZGxlcnMuZ2V0KHNjaGVtZSk7Ci0gICAgQVNTRVJUKGhhbmRsZXIuZ2V0KCkpOwot
ICAgIGlmICghaGFuZGxlci0+aGFzQ2FsbGJhY2soKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
Y29udGV4dC0+cHJpdi0+dXJpU2NoZW1lUmVxdWVzdHMuc2V0KGN1c3RvbVByb3RvY29sSUQsIHJl
cXVlc3QuZ2V0KCkpOwotICAgIGhhbmRsZXItPnBlcmZvcm1DYWxsYmFjayhyZXF1ZXN0LmdldCgp
KTsKLX0KLQotdm9pZCB3ZWJraXRXZWJDb250ZXh0U3RvcExvYWRpbmdDdXN0b21Qcm90b2NvbChX
ZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKQotewot
ICAgIEdSZWZQdHI8V2ViS2l0VVJJU2NoZW1lUmVxdWVzdD4gcmVxdWVzdCA9IGNvbnRleHQtPnBy
aXYtPnVyaVNjaGVtZVJlcXVlc3RzLmdldChjdXN0b21Qcm90b2NvbElEKTsKLSAgICBpZiAoIXJl
cXVlc3QuZ2V0KCkpCi0gICAgICAgIHJldHVybjsKLSAgICB3ZWJraXRVUklTY2hlbWVSZXF1ZXN0
Q2FuY2VsKHJlcXVlc3QuZ2V0KCkpOwotfQotCi12b2lkIHdlYmtpdFdlYkNvbnRleHRJbnZhbGlk
YXRlQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0cyhXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCBMZWdh
Y3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSYgbWFuYWdlcikKLXsKLSAgICBmb3IgKGF1dG8m
IHJlcXVlc3QgOiBjb3B5VG9WZWN0b3IoY29udGV4dC0+cHJpdi0+dXJpU2NoZW1lUmVxdWVzdHMu
dmFsdWVzKCkpKSB7Ci0gICAgICAgIGlmICh3ZWJraXRVUklTY2hlbWVSZXF1ZXN0R2V0TWFuYWdl
cihyZXF1ZXN0LmdldCgpKSA9PSAmbWFuYWdlcikKLSAgICAgICAgICAgIHdlYmtpdFVSSVNjaGVt
ZVJlcXVlc3RJbnZhbGlkYXRlKHJlcXVlc3QuZ2V0KCkpOwotICAgIH0KLX0KLQotdm9pZCB3ZWJr
aXRXZWJDb250ZXh0RGlkRmluaXNoTG9hZGluZ0N1c3RvbVByb3RvY29sKFdlYktpdFdlYkNvbnRl
eHQqIGNvbnRleHQsIHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpCi17Ci0gICAgY29udGV4dC0+
cHJpdi0+dXJpU2NoZW1lUmVxdWVzdHMucmVtb3ZlKGN1c3RvbVByb3RvY29sSUQpOwotfQotCi1i
b29sIHdlYmtpdFdlYkNvbnRleHRJc0xvYWRpbmdDdXN0b21Qcm90b2NvbChXZWJLaXRXZWJDb250
ZXh0KiBjb250ZXh0LCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKQotewotICAgIHJldHVybiBj
b250ZXh0LT5wcml2LT51cmlTY2hlbWVSZXF1ZXN0cy5nZXQoY3VzdG9tUHJvdG9jb2xJRCk7Ci19
Ci0KIHZvaWQgd2Via2l0V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JXZWJWaWV3KFdlYktpdFdlYkNv
bnRleHQqIGNvbnRleHQsIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdFVzZXJDb250ZW50
TWFuYWdlciogdXNlckNvbnRlbnRNYW5hZ2VyLCBXZWJLaXRXZWJWaWV3KiByZWxhdGVkVmlldykK
IHsKICAgICBhdXRvIHBhZ2VDb25maWd1cmF0aW9uID0gQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6
Y3JlYXRlKCk7CkBAIC0xNzU3LDYgKzE3MzQsMTIgQEAgdm9pZCB3ZWJraXRXZWJDb250ZXh0Q3Jl
YXRlUGFnZUZvcldlYlZpZXcoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCwgV2ViS2l0V2ViVmkK
ICAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0V2Vic2l0ZURhdGFTdG9yZSgmd2Via2l0V2Vic2l0
ZURhdGFNYW5hZ2VyR2V0RGF0YVN0b3JlKG1hbmFnZXIpKTsKICAgICB3ZWJraXRXZWJWaWV3Q3Jl
YXRlUGFnZSh3ZWJWaWV3LCBXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7CiAKKyAgICBhdXRv
JiBwYWdlID0gd2Via2l0V2ViVmlld0dldFBhZ2Uod2ViVmlldyk7CisgICAgZm9yIChhdXRvJiBp
dCA6IGNvbnRleHQtPnByaXYtPnVyaVNjaGVtZUhhbmRsZXJzKSB7CisgICAgICAgIFJlZjxXZWJV
UkxTY2hlbWVIYW5kbGVyPiBoYW5kbGVyKCppdC52YWx1ZSk7CisgICAgICAgIHBhZ2Uuc2V0VVJM
U2NoZW1lSGFuZGxlckZvclNjaGVtZShXVEZNb3ZlKGhhbmRsZXIpLCBpdC5rZXkpOworICAgIH0K
KwogICAgIGNvbnRleHQtPnByaXYtPndlYlZpZXdzLnNldCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3Bh
Z2VfaWQod2ViVmlldyksIHdlYlZpZXcpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dFByaXZhdGUuaAppbmRleCA2
YWRiNTJiM2M1My4uZDg1NjljODU5YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHRQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dFByaXZhdGUuaApAQCAtMjYsNyAr
MjYsNiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJEb3dubG9hZFByb3h5LmgiCi0jaW5j
bHVkZSAiTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJXZWJL
aXRVc2VyQ29udGVudE1hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJDb250ZXh0LmgiCiAj
aW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKQEAgLTM3LDExICszNiw2IEBAIFdlYktpdERvd25s
b2FkKiB3ZWJraXRXZWJDb250ZXh0R2V0T3JDcmVhdGVEb3dubG9hZChXZWJLaXQ6OkRvd25sb2Fk
UHJveHkqKTsKIFdlYktpdERvd25sb2FkKiB3ZWJraXRXZWJDb250ZXh0U3RhcnREb3dubG9hZChX
ZWJLaXRXZWJDb250ZXh0KiwgY29uc3QgY2hhciogdXJpLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSop
Owogdm9pZCB3ZWJraXRXZWJDb250ZXh0UmVtb3ZlRG93bmxvYWQoV2ViS2l0OjpEb3dubG9hZFBy
b3h5Kik7CiB2b2lkIHdlYmtpdFdlYkNvbnRleHREb3dubG9hZFN0YXJ0ZWQoV2ViS2l0V2ViQ29u
dGV4dCosIFdlYktpdERvd25sb2FkKik7Ci12b2lkIHdlYmtpdFdlYkNvbnRleHRTdGFydExvYWRp
bmdDdXN0b21Qcm90b2NvbChXZWJLaXRXZWJDb250ZXh0KiwgdWludDY0X3QgY3VzdG9tUHJvdG9j
b2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViS2l0OjpMZWdhY3lDdXN0
b21Qcm90b2NvbE1hbmFnZXJQcm94eSYpOwotdm9pZCB3ZWJraXRXZWJDb250ZXh0U3RvcExvYWRp
bmdDdXN0b21Qcm90b2NvbChXZWJLaXRXZWJDb250ZXh0KiwgdWludDY0X3QgY3VzdG9tUHJvdG9j
b2xJRCk7Ci12b2lkIHdlYmtpdFdlYkNvbnRleHRJbnZhbGlkYXRlQ3VzdG9tUHJvdG9jb2xSZXF1
ZXN0cyhXZWJLaXRXZWJDb250ZXh0KiwgV2ViS2l0OjpMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFn
ZXJQcm94eSYpOwotdm9pZCB3ZWJraXRXZWJDb250ZXh0RGlkRmluaXNoTG9hZGluZ0N1c3RvbVBy
b3RvY29sKFdlYktpdFdlYkNvbnRleHQqLCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKTsKLWJv
b2wgd2Via2l0V2ViQ29udGV4dElzTG9hZGluZ0N1c3RvbVByb3RvY29sKFdlYktpdFdlYkNvbnRl
eHQqLCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKTsKIHZvaWQgd2Via2l0V2ViQ29udGV4dENy
ZWF0ZVBhZ2VGb3JXZWJWaWV3KFdlYktpdFdlYkNvbnRleHQqLCBXZWJLaXRXZWJWaWV3KiwgV2Vi
S2l0VXNlckNvbnRlbnRNYW5hZ2VyKiwgV2ViS2l0V2ViVmlldyopOwogdm9pZCB3ZWJraXRXZWJD
b250ZXh0V2ViVmlld0Rlc3Ryb3llZChXZWJLaXRXZWJDb250ZXh0KiwgV2ViS2l0V2ViVmlldyop
OwogV2ViS2l0V2ViVmlldyogd2Via2l0V2ViQ29udGV4dEdldFdlYlZpZXdGb3JQYWdlKFdlYktp
dFdlYkNvbnRleHQqLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSopOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJv
dG9jb2xNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9D
dXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MTEyNzNhMDEyZi4uMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsODUgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgSWdhbGlhIFMuTC4KLSAqCi0gKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgot
ICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAot
ICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIkxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmgiCi0KLSNpbmNs
dWRlICJBUElDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaCIKLSNpbmNsdWRlICJMZWdhY3lD
dXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlcy5oIgotI2luY2x1ZGUgIkxlZ2FjeUN1c3RvbVBy
b3RvY29sTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKLSNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1By
b3h5LmgiCi0jaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1Jl
c291cmNlUmVxdWVzdC5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotTGVnYWN5Q3VzdG9tUHJv
dG9jb2xNYW5hZ2VyUHJveHk6OkxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5KE5ldHdv
cmtQcm9jZXNzUHJveHkmIG5ldHdvcmtQcm9jZXNzUHJveHkpCi0gICAgOiBtX25ldHdvcmtQcm9j
ZXNzUHJveHkobmV0d29ya1Byb2Nlc3NQcm94eSkKLXsKLSAgICBtX25ldHdvcmtQcm9jZXNzUHJv
eHkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFn
ZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCAqdGhpcyk7Ci19Ci0KLUxlZ2FjeUN1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5Ojp+TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHko
KQotewotICAgIG1fbmV0d29ya1Byb2Nlc3NQcm94eS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVz
c2FnZXM6OkxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCkpOwotICAgIGludmFsaWRhdGUoKTsKLX0KLQotdm9pZCBMZWdhY3lDdXN0b21Qcm90b2Nv
bE1hbmFnZXJQcm94eTo6c3RhcnRMb2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKLXsKLSAgICBtX25ldHdvcmtQ
cm9jZXNzUHJveHkucHJvY2Vzc1Bvb2woKS5jdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQoKS5z
dGFydExvYWRpbmcoKnRoaXMsIGN1c3RvbVByb3RvY29sSUQsIHJlcXVlc3QpOwotfQotCi12b2lk
IExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpzdG9wTG9hZGluZyh1aW50NjRfdCBj
dXN0b21Qcm90b2NvbElEKQotewotICAgIG1fbmV0d29ya1Byb2Nlc3NQcm94eS5wcm9jZXNzUG9v
bCgpLmN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCgpLnN0b3BMb2FkaW5nKCp0aGlzLCBjdXN0
b21Qcm90b2NvbElEKTsKLX0KLQotdm9pZCBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94
eTo6aW52YWxpZGF0ZSgpCi17Ci0gICAgbV9uZXR3b3JrUHJvY2Vzc1Byb3h5LnByb2Nlc3NQb29s
KCkuY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KCkuaW52YWxpZGF0ZSgqdGhpcyk7Ci19Ci0K
LXZvaWQgTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6Ondhc1JlZGlyZWN0ZWRUb1Jl
cXVlc3QodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVj
dFJlc3BvbnNlKQotewotICAgIG1fbmV0d29ya1Byb2Nlc3NQcm94eS5zZW5kKE1lc3NhZ2VzOjpM
ZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXI6Oldhc1JlZGlyZWN0ZWRUb1JlcXVlc3QoY3VzdG9t
UHJvdG9jb2xJRCwgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSksIDApOwotfQotCi12b2lkIExl
Z2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpkaWRSZWNlaXZlUmVzcG9uc2UodWludDY0
X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsIHVpbnQzMl90IGNhY2hlU3RvcmFnZVBvbGljeSkKLXsKLSAgICBtX25ldHdvcmtQcm9j
ZXNzUHJveHkuc2VuZChNZXNzYWdlczo6TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpEaWRS
ZWNlaXZlUmVzcG9uc2UoY3VzdG9tUHJvdG9jb2xJRCwgcmVzcG9uc2UsIGNhY2hlU3RvcmFnZVBv
bGljeSksIDApOwotfQotCi12b2lkIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Ojpk
aWRMb2FkRGF0YSh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmIGRhdGEpCi17Ci0gICAgbV9uZXR3b3JrUHJvY2Vzc1Byb3h5LnNlbmQoTWVzc2FnZXM6
OkxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcjo6RGlkTG9hZERhdGEoY3VzdG9tUHJvdG9jb2xJ
RCwgZGF0YSksIDApOwotfQotCi12b2lkIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5
OjpkaWRGYWlsV2l0aEVycm9yKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQotewotICAgIG1fbmV0d29ya1Byb2Nlc3NQcm94eS5z
ZW5kKE1lc3NhZ2VzOjpMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXI6OkRpZEZhaWxXaXRoRXJy
b3IoY3VzdG9tUHJvdG9jb2xJRCwgZXJyb3IpLCAwKTsKLX0KLQotdm9pZCBMZWdhY3lDdXN0b21Q
cm90b2NvbE1hbmFnZXJQcm94eTo6ZGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90
b2NvbElEKQotewotICAgIG1fbmV0d29ya1Byb2Nlc3NQcm94eS5zZW5kKE1lc3NhZ2VzOjpMZWdh
Y3lDdXN0b21Qcm90b2NvbE1hbmFnZXI6OkRpZEZpbmlzaExvYWRpbmcoY3VzdG9tUHJvdG9jb2xJ
RCksIDApOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlVSTFNjaGVtZVRhc2suaAppbmRleCBiZmQ5MjMzOTFjZS4uNGQ2ZDJmMzIwZDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKQEAgLTYyLDEzICs2
MiwxMSBAQCBwdWJsaWM6CiAgICAgV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlUHJveHlJRCgp
IGNvbnN0IHsgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsgcmV0dXJuIG1fcGFnZVByb3h5SUQ7
IH0KICAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQoKSBjb25zdCB7IEFTU0VS
VChSdW5Mb29wOjppc01haW4oKSk7IHJldHVybiBtX3dlYlBhZ2VJRDsgfQogICAgIFdlYlByb2Nl
c3NQcm94eSogcHJvY2VzcygpIHsgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsgcmV0dXJuIG1f
cHJvY2Vzcy5nZXQoKTsgfQorICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCgpIGNvbnN0IHsgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsgcmV0dXJuIG1fcmVxdWVz
dDsgfQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgTlNVUkxSZXF1ZXN0ICpuc1JlcXVlc3Qo
KSBjb25zdDsKICNlbmRpZgotI2lmIFBMQVRGT1JNKFdJTikKLSAgICBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QoKSBjb25zdCB7IEFTU0VSVChSdW5Mb29wOjppc01haW4o
KSk7IHJldHVybiBtX3JlcXVlc3Q7IH0KLSNlbmRpZgogCiAgICAgZW51bSBjbGFzcyBFeGNlcHRp
b25UeXBlIHsKICAgICAgICAgRGF0YUFscmVhZHlTZW50LApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3Mvc291cC9XZWJQcm9jZXNzUG9vbFNvdXAuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3Mvc291cC9XZWJQcm9jZXNzUG9vbFNvdXAuY3BwCmluZGV4IGVlNDI0OTE2ZmQw
Li41OWVlNzg4YzEyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvc291cC9X
ZWJQcm9jZXNzUG9vbFNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3NvdXAv
V2ViUHJvY2Vzc1Bvb2xTb3VwLmNwcApAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCiAKLSNpbmNsdWRlICJBUElDdXN0b21Q
cm90b2NvbE1hbmFnZXJDbGllbnQuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNs
dWRlICJXZWJDb29raWVNYW5hZ2VyUHJveHkuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9P
cHRpb25zRlRXLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNGVFcuY21ha2UKaW5kZXggNjEx
YTRkOWQxZWUuLjZjZjM4OWE5ZGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0ZU
Vy5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0ZUVy5jbWFrZQpAQCAtOTAsNyArOTAs
NiBAQCBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfSU5URVJTRUNUSU9O
X09CU0VSVkVSIFBSSVZBVEUgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShF
TkFCTEVfS0VZQk9BUkRfQ09ERV9BVFRSSUJVVEUgUFJJVkFURSBPTikKIFdFQktJVF9PUFRJT05f
REVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9LRVlCT0FSRF9LRVlfQVRUUklCVVRFIFBSSVZBVEUg
T04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTEVHQUNZX0NTU19W
RU5ET1JfUFJFRklYRVMgUFJJVkFURSBPTikKLVdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZB
TFVFKEVOQUJMRV9MRUdBQ1lfQ1VTVE9NX1BST1RPQ09MX01BTkFHRVIgUFJJVkFURSBPRkYpCiBX
RUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTUFDX0dFU1RVUkVfRVZFTlRT
IFBSSVZBVEUgT0ZGKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX01B
VEhNTCBQUklWQVRFIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxF
X01FRElBX0NPTlRST0xTX1NDUklQVCBQUklWQVRFIE9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL2Nt
YWtlL09wdGlvbnNQbGF5U3RhdGlvbi5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zUGxheVN0
YXRpb24uY21ha2UKaW5kZXggMjA3ZDg1YWQwYjkuLjE1YTkzMzNiMTk1IDEwMDY0NAotLS0gYS9T
b3VyY2UvY21ha2UvT3B0aW9uc1BsYXlTdGF0aW9uLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9P
cHRpb25zUGxheVN0YXRpb24uY21ha2UKQEAgLTM4LDcgKzM4LDYgQEAgV0VCS0lUX09QVElPTl9E
RUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1ZBUklBVElPTl9GT05UUyBQUklWQVRFIE9GRikKICMg
Tm8gc3VwcG9ydCBwbGFubmVkCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFC
TEVfRlRQRElSIFBSSVZBVEUgT0ZGKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUo
RU5BQkxFX0dFT0xPQ0FUSU9OIFBSSVZBVEUgT0ZGKQotV0VCS0lUX09QVElPTl9ERUZBVUxUX1BP
UlRfVkFMVUUoRU5BQkxFX0xFR0FDWV9DVVNUT01fUFJPVE9DT0xfTUFOQUdFUiBQUklWQVRFIE9G
RikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9NQVRITUwgUFJJVkFU
RSBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTUVURVJfRUxF
TUVOVCBQUklWQVRFIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJM
RV9ORVRTQ0FQRV9QTFVHSU5fQVBJIFBSSVZBVEUgT0ZGKQpkaWZmIC0tZ2l0IGEvU291cmNlL2Nt
YWtlL09wdGlvbnNXaW4uY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc1dpbi5jbWFrZQppbmRl
eCAwNzE1M2VlYmEwZS4uY2JkYzMwMWE4NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRp
b25zV2luLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zV2luLmNtYWtlCkBAIC03NSw3
ICs3NSw2IEBAIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKFVTRV9TWVNURU1fTUFM
TE9DIFBSSVZBVEUgT04pCiAKIGlmICgke1dURl9QTEFURk9STV9XSU5fQ0FJUk99KQogICAgIFdF
QktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9JTlRMIFBVQkxJQyBPTikKLSAg
ICBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTEVHQUNZX0NVU1RPTV9Q
Uk9UT0NPTF9NQU5BR0VSIFBVQkxJQyBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BP
UlRfVkFMVUUoRU5BQkxFX0xFR0FDWV9FTkNSWVBURURfTUVESUEgUFVCTElDIE9GRikKICAgICBX
RUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfUFVCTElDX1NVRkZJWF9MSVNU
IFBSSVZBVEUgT04pCiAgICAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxF
X1VTRVJfTUVTU0FHRV9IQU5ETEVSUyBQUklWQVRFIE9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL2Nt
YWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlIGIvU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNt
YWtlCmluZGV4IDg3MWJlMjk0N2RiLi5lMzAxYWJkNmRlOCAxMDA2NDQKLS0tIGEvU291cmNlL2Nt
YWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJl
cy5jbWFrZQpAQCAtMTU2LDcgKzE1Niw3IEBAIG1hY3JvKFdFQktJVF9PUFRJT05fQkVHSU4pCiAg
ICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0tFWUJPQVJEX0tFWV9BVFRSSUJVVEUgIlRv
Z2dsZSBrZXlib2FyZCBrZXkgYXR0cmlidXRlIHN1cHBvcnQiIFBSSVZBVEUgT04pCiAgICAgV0VC
S0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0xBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQgIlRvZ2ds
ZSBMYXlvdXQgRm9ybWF0dGluZyBDb250ZXh0IHN1cHBvcnQiIFBSSVZBVEUgT0ZGKQogICAgIFdF
QktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUyAiVG9n
Z2xlIGxlZ2FjeSBjc3MgdmVuZG9yIHByZWZpeCBzdXBwb3J0IiBQUklWQVRFIE9GRikKLSAgICBX
RUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfTEVHQUNZX0NVU1RPTV9QUk9UT0NPTF9NQU5BR0VS
ICJUb2dnbGUgbGVnYWN5IHByb3RvY29sIG1hbmFnZXIgc3VwcG9ydCIgUFJJVkFURSBPTikKKyAg
ICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfTEVHQUNZX0NVU1RPTV9QUk9UT0NPTF9NQU5B
R0VSICJUb2dnbGUgbGVnYWN5IHByb3RvY29sIG1hbmFnZXIgc3VwcG9ydCIgUFJJVkFURSBPRkYp
CiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0xFR0FDWV9FTkNSWVBURURfTUVESUEg
IlRvZ2dsZSBMZWdhY3kgRU1FIFYyIHN1cHBvcnQiIFBSSVZBVEUgT0ZGKQogICAgIFdFQktJVF9P
UFRJT05fREVGSU5FKEVOQUJMRV9MRVRURVJQUkVTUyAiVG9nZ2xlIGxldHRlcnByZXNzIHN1cHBv
cnQiIFBSSVZBVEUgT0ZGKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9NQUNfR0VT
VFVSRV9FVkVOVFMgIlRvZ2dsZSBNYWMgZ2VzdHVyZSBldmVudHMgc3VwcG9ydCIgUFJJVkFURSBP
RkYpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
YWVlNzdhMjBkNTMuLjg4MTIzYTQyOTY1IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysr
IGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTktMTAtMDEgIENhcmxvcyBH
YXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdW1dQRV0g
U3RvcCB1c2luZyBsZWdhY3kgY3VzdG9tIHByb3RvY29sIGltcGxlbWVudGF0aW9uCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI0MDcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgdGhlIHRlc3Rz
IHRvIGNoZWNrIGZhaWx1cmUgYWZ0ZXIgY29tbWl0dGVkLCBiZWNhdXNlIGl0J3Mgbm90IHBvc3Np
YmxlIHRvIHRlc3QgaXQgd2l0aCBjdXJyZW50IGNvZGUuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYkNvbnRleHQuY3BwOgorICAgICAgICAo
dGVzdFdlYkNvbnRleHRVUklTY2hlbWUpOgorCiAyMDE5LTEwLTAxICBDYXJsb3MgR2FyY2lhIENh
bXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBNYWtlIFBTT04gb3B0
aW9uYWwKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9U
ZXN0V2ViS2l0V2ViQ29udGV4dC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dEdMaWIvVGVzdFdlYktpdFdlYkNvbnRleHQuY3BwCmluZGV4IDYxNjBhZTdlMDVlLi4zNmMxODM4
NzVjNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rl
c3RXZWJLaXRXZWJDb250ZXh0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdEdMaWIvVGVzdFdlYktpdFdlYkNvbnRleHQuY3BwCkBAIC0xNjEsNyArMTYxLDYgQEAgc3Rh
dGljIGNvbnN0IGludCBlcnJvckNvZGUgPSAxMDsKIAogc3RhdGljIGNvbnN0IGNoYXIqIGdlbmVy
aWNFcnJvck1lc3NhZ2UgPSAiRXJyb3IgbWVzc2FnZS4iOwogc3RhdGljIGNvbnN0IGNoYXIqIGJl
Zm9yZVJlY2VpdmVSZXNwb25zZUVycm9yTWVzc2FnZSA9ICJFcnJvciBiZWZvcmUgZGlkUmVjZWl2
ZVJlc3BvbnNlLiI7Ci1zdGF0aWMgY29uc3QgY2hhciogYWZ0ZXJJbml0aWFsQ2h1bmtFcnJvck1l
c3NhZ2UgPSAiRXJyb3IgYWZ0ZXIgcmVhZGluZyB0aGUgaW5pdGlhbCBjaHVuay4iOwogCiBjbGFz
cyBVUklTY2hlbWVUZXN0OiBwdWJsaWMgTG9hZFRyYWNraW5nVGVzdCB7CiBwdWJsaWM6CkBAIC0y
NDAsMjYgKzIzOSw4IEBAIHB1YmxpYzoKICAgICAgICAgd2Via2l0X3dlYl9jb250ZXh0X3JlZ2lz
dGVyX3VyaV9zY2hlbWUobV93ZWJDb250ZXh0LmdldCgpLCBzY2hlbWUsIHVyaVNjaGVtZVJlcXVl
c3RDYWxsYmFjaywgdGhpcywgMCk7CiAgICAgfQogCi0gICAgdm9pZCBsb2FkQ29tbWl0dGVkKCkg
b3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGlmIChtX2ZpbmlzaE9uQ29tbWl0dGVkKSB7Ci0gICAg
ICAgICAgICBHVW5pcXVlUHRyPEdFcnJvcj4gZXJyb3IoZ19lcnJvcl9uZXdfbGl0ZXJhbChnX3F1
YXJrX2Zyb21fc3RyaW5nKGVycm9yRG9tYWluKSwgZXJyb3JDb2RlLCBhZnRlckluaXRpYWxDaHVu
a0Vycm9yTWVzc2FnZSkpOwotICAgICAgICAgICAgd2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9m
aW5pc2hfZXJyb3IobV91cmlTY2hlbWVSZXF1ZXN0LmdldCgpLCBlcnJvci5nZXQoKSk7Ci0gICAg
ICAgIH0KLQotICAgICAgICBMb2FkVHJhY2tpbmdUZXN0Ojpsb2FkQ29tbWl0dGVkKCk7Ci0gICAg
fQotCi0gICAgdm9pZCBmaW5pc2hPbkNvbW1pdHRlZEFuZFdhaXRVbnRpbExvYWRGaW5pc2hlZCgp
Ci0gICAgewotICAgICAgICBtX2ZpbmlzaE9uQ29tbWl0dGVkID0gdHJ1ZTsKLSAgICAgICAgd2Fp
dFVudGlsTG9hZEZpbmlzaGVkKCk7Ci0gICAgICAgIG1fZmluaXNoT25Db21taXR0ZWQgPSBmYWxz
ZTsKLSAgICB9Ci0KICAgICBHUmVmUHRyPFdlYktpdFVSSVNjaGVtZVJlcXVlc3Q+IG1fdXJpU2No
ZW1lUmVxdWVzdDsKICAgICBIYXNoTWFwPFN0cmluZywgVVJJU2NoZW1lSGFuZGxlcj4gbV9oYW5k
bGVyc01hcDsKLSAgICBib29sIG1fZmluaXNoT25Db21taXR0ZWQgeyBmYWxzZSB9OwogfTsKIAog
U3RyaW5nIGdlbmVyYXRlSFRNTENvbnRlbnQodW5zaWduZWQgY29udGVudExlbmd0aCkKQEAgLTMx
OCwxMyArMjk5LDEzIEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJDb250ZXh0VVJJU2NoZW1lKFVSSVNj
aGVtZVRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgZ19hc3NlcnRfY21waW50KG1haW5S
ZXNvdXJjZURhdGFTaXplLCA9PSwgc3RybGVuKGVjaG9IVE1MLmdldCgpKSk7CiAgICAgZ19hc3Nl
cnRfY21waW50KHN0cm5jbXAobWFpblJlc291cmNlRGF0YSwgZWNob0hUTUwuZ2V0KCksIG1haW5S
ZXNvdXJjZURhdGFTaXplKSwgPT0sIDApOwogCi0gICAgdGVzdC0+cmVnaXN0ZXJVUklTY2hlbWVI
YW5kbGVyKCJub21pbWUiLCBrQmFySFRNTCwgLTEsIDApOworICAgIHRlc3QtPnJlZ2lzdGVyVVJJ
U2NoZW1lSGFuZGxlcigibm9taW1lIiwga0JhckhUTUwsIC0xLCBudWxscHRyKTsKICAgICB0ZXN0
LT5tX2xvYWRFdmVudHMuY2xlYXIoKTsKICAgICB0ZXN0LT5sb2FkVVJJKCJub21pbWU6Zm9vLWJh
ciIpOwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwogICAgIGdfYXNzZXJ0X3Ry
dWUodGVzdC0+bV9sb2FkRXZlbnRzLmNvbnRhaW5zKExvYWRUcmFja2luZ1Rlc3Q6OlByb3Zpc2lv
bmFsTG9hZEZhaWxlZCkpOwogCi0gICAgdGVzdC0+cmVnaXN0ZXJVUklTY2hlbWVIYW5kbGVyKCJl
bXB0eSIsIDAsIDAsICJ0ZXh0L2h0bWwiKTsKKyAgICB0ZXN0LT5yZWdpc3RlclVSSVNjaGVtZUhh
bmRsZXIoImVtcHR5IiwgbnVsbHB0ciwgMCwgInRleHQvaHRtbCIpOwogICAgIHRlc3QtPm1fbG9h
ZEV2ZW50cy5jbGVhcigpOwogICAgIHRlc3QtPmxvYWRVUkkoImVtcHR5Om5vdGhpbmciKTsKICAg
ICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKQEAgLTM1MiwxNiArMzMzLDcgQEAgc3Rh
dGljIHZvaWQgdGVzdFdlYkNvbnRleHRVUklTY2hlbWUoVVJJU2NoZW1lVGVzdCogdGVzdCwgZ2Nv
bnN0cG9pbnRlcikKICAgICBnX2Fzc2VydF9lcnJvcih0ZXN0LT5tX2Vycm9yLmdldCgpLCBnX3F1
YXJrX2Zyb21fc3RyaW5nKGVycm9yRG9tYWluKSwgZXJyb3JDb2RlKTsKICAgICBnX2Fzc2VydF9j
bXBzdHIodGVzdC0+bV9lcnJvci0+bWVzc2FnZSwgPT0sIGJlZm9yZVJlY2VpdmVSZXNwb25zZUVy
cm9yTWVzc2FnZSk7CiAKLSAgICB0ZXN0LT5tX2xvYWRFdmVudHMuY2xlYXIoKTsKLSAgICB0ZXN0
LT5sb2FkVVJJKCJlcnJvcjphZnRlci1maXJzdC1jaHVuayIpOwotICAgIHRlc3QtPmZpbmlzaE9u
Q29tbWl0dGVkQW5kV2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7Ci0gICAgZ19hc3NlcnRfZmFsc2Uo
dGVzdC0+bV9sb2FkRXZlbnRzLmNvbnRhaW5zKExvYWRUcmFja2luZ1Rlc3Q6OlByb3Zpc2lvbmFs
TG9hZEZhaWxlZCkpOwotICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+bV9sb2FkRXZlbnRzLmNvbnRh
aW5zKExvYWRUcmFja2luZ1Rlc3Q6OkxvYWRGYWlsZWQpKTsKLSAgICBnX2Fzc2VydF90cnVlKHRl
c3QtPm1fbG9hZEZhaWxlZCk7Ci0gICAgZ19hc3NlcnRfZXJyb3IodGVzdC0+bV9lcnJvci5nZXQo
KSwgZ19xdWFya19mcm9tX3N0cmluZyhlcnJvckRvbWFpbiksIGVycm9yQ29kZSk7Ci0gICAgZ19h
c3NlcnRfY21wc3RyKHRlc3QtPm1fZXJyb3ItPm1lc3NhZ2UsID09LCBhZnRlckluaXRpYWxDaHVu
a0Vycm9yTWVzc2FnZSk7Ci0KLSAgICB0ZXN0LT5yZWdpc3RlclVSSVNjaGVtZUhhbmRsZXIoImNs
b3NlZCIsIDAsIDAsIDApOworICAgIHRlc3QtPnJlZ2lzdGVyVVJJU2NoZW1lSGFuZGxlcigiY2xv
c2VkIiwgbnVsbHB0ciwgMCwgbnVsbHB0cik7CiAgICAgdGVzdC0+bV9sb2FkRXZlbnRzLmNsZWFy
KCk7CiAgICAgdGVzdC0+bG9hZFVSSSgiY2xvc2VkOmlucHV0LXN0cmVhbSIpOwogICAgIHRlc3Qt
PndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379908</attachid>
            <date>2019-10-01 09:05:34 -0700</date>
            <delta_ts>2019-10-01 09:14:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-kill-legacy-custom-protocols.diff</filename>
            <type>text/plain</type>
            <size>65315</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA1MDk3NjI2M2MzNC4uYThi
ODU2MWFlOTUgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNyBAQAorMjAxOS0xMC0wMSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxp
YS5jb20+CisKKyAgICAgICAgW0dUS11bV1BFXSBTdG9wIHVzaW5nIGxlZ2FjeSBjdXN0b20gcHJv
dG9jb2wgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwMjQwNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE1ha2UgTEVHQUNZX0NVU1RPTV9QUk9UT0NPTF9NQU5BR0VSIGRpc2FibGVk
IGJ5IGRlZmF1bHQuCisKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc0ZUVy5jbWFrZToK
KyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc1BsYXlTdGF0aW9uLmNtYWtlOgorICAgICAg
ICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zV2luLmNtYWtlOgorICAgICAgICAqIFNvdXJjZS9jbWFr
ZS9XZWJLaXRGZWF0dXJlcy5jbWFrZToKKwogMjAxOS0wOS0zMCAgQWxleCBDaHJpc3RlbnNlbiAg
PGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlc3VycmVjdCBNYWMgQ01ha2Ug
YnVpbGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCAzY2Y5OGY5YjdiYy4uYWU1ZTcxNmFhMDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNiBAQAorMjAxOS0xMC0wMSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2Fy
Y2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV1BFXSBTdG9wIHVzaW5nIGxlZ2FjeSBj
dXN0b20gcHJvdG9jb2wgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjQwNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSB0aGUgY29kZSB0byBzZXR1cCBjdXN0b20gcHJv
dG9jb2xzIGluIHNvdXAgc2Vzc2lvbi4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291
cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cE5ldHdvcmtT
ZXNzaW9uOjpTb3VwTmV0d29ya1Nlc3Npb24pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
c291cC9Tb3VwTmV0d29ya1Nlc3Npb24uaDoKKwogMjAxOS0wOS0zMCAgQWxleCBDaHJpc3RlbnNl
biAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlc3VycmVjdCBNYWMgQ01h
a2UgYnVpbGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAKaW5kZXggMDk2ZGU1ZmU4YzkuLjQ2YzhkNDVi
MzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291
cE5ldHdvcmtTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcApAQCAtNDUsNyArNDUsNiBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBzdGF0aWMgYm9vbCBnSWdub3JlVExTRXJyb3JzOwotc3RhdGljIEdUeXBl
IGdDdXN0b21Qcm90b2NvbFJlcXVlc3RUeXBlOwogCiBzdGF0aWMgQ1N0cmluZyYgaW5pdGlhbEFj
Y2VwdExhbmd1YWdlcygpCiB7CkBAIC0xMzQsOCArMTMzLDYgQEAgU291cE5ldHdvcmtTZXNzaW9u
OjpTb3VwTmV0d29ya1Nlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogI2VuZGlmCiAg
ICAgICAgIG51bGxwdHIpOwogCi0gICAgc2V0dXBDdXN0b21Qcm90b2NvbHMoKTsKLQogICAgIGlm
ICghaW5pdGlhbEFjY2VwdExhbmd1YWdlcygpLmlzTnVsbCgpKQogICAgICAgICBzZXRBY2NlcHRM
YW5ndWFnZXMoaW5pdGlhbEFjY2VwdExhbmd1YWdlcygpKTsKIApAQCAtMzM3LDI0ICszMzQsNiBA
QCB2b2lkIFNvdXBOZXR3b3JrU2Vzc2lvbjo6c2V0QWNjZXB0TGFuZ3VhZ2VzKGNvbnN0IENTdHJp
bmcmIGxhbmd1YWdlcykKICAgICBnX29iamVjdF9zZXQobV9zb3VwU2Vzc2lvbi5nZXQoKSwgImFj
Y2VwdC1sYW5ndWFnZSIsIGxhbmd1YWdlcy5kYXRhKCksIG51bGxwdHIpOwogfQogCi12b2lkIFNv
dXBOZXR3b3JrU2Vzc2lvbjo6c2V0Q3VzdG9tUHJvdG9jb2xSZXF1ZXN0VHlwZShHVHlwZSByZXF1
ZXN0VHlwZSkKLXsKLSAgICBBU1NFUlQoZ190eXBlX2lzX2EocmVxdWVzdFR5cGUsIFNPVVBfVFlQ
RV9SRVFVRVNUKSk7Ci0gICAgZ0N1c3RvbVByb3RvY29sUmVxdWVzdFR5cGUgPSByZXF1ZXN0VHlw
ZTsKLX0KLQotdm9pZCBTb3VwTmV0d29ya1Nlc3Npb246OnNldHVwQ3VzdG9tUHJvdG9jb2xzKCkK
LXsKLSAgICBpZiAoIWdfdHlwZV9pc19hKGdDdXN0b21Qcm90b2NvbFJlcXVlc3RUeXBlLCBTT1VQ
X1RZUEVfUkVRVUVTVCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8qIHJlcXVlc3RDbGFz
cyA9IHN0YXRpY19jYXN0PFNvdXBSZXF1ZXN0Q2xhc3MqPihnX3R5cGVfY2xhc3NfcGVlayhnQ3Vz
dG9tUHJvdG9jb2xSZXF1ZXN0VHlwZSkpOwotICAgIGlmICghcmVxdWVzdENsYXNzIHx8ICFyZXF1
ZXN0Q2xhc3MtPnNjaGVtZXMpCi0gICAgICAgIHJldHVybjsKLQotICAgIHNvdXBfc2Vzc2lvbl9h
ZGRfZmVhdHVyZV9ieV90eXBlKG1fc291cFNlc3Npb24uZ2V0KCksIGdDdXN0b21Qcm90b2NvbFJl
cXVlc3RUeXBlKTsKLX0KLQogdm9pZCBTb3VwTmV0d29ya1Nlc3Npb246OnNldFNob3VsZElnbm9y
ZVRMU0Vycm9ycyhib29sIGlnbm9yZVRMU0Vycm9ycykKIHsKICAgICBnSWdub3JlVExTRXJyb3Jz
ID0gaWdub3JlVExTRXJyb3JzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5oCmluZGV4IGVjY2RhNDFhZTE0Li43
MmI2NTA3ZjcxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uaApAQCAtNzIsOSArNzIsNiBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIE9wdGlvbmFsPFJlc291cmNlRXJyb3I+IGNoZWNrVExTRXJyb3JzKGNvbnN0
IFVSTCYsIEdUbHNDZXJ0aWZpY2F0ZSosIEdUbHNDZXJ0aWZpY2F0ZUZsYWdzKTsKICAgICBzdGF0
aWMgdm9pZCBhbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QoY29uc3QgQ2VydGlm
aWNhdGVJbmZvJiwgY29uc3QgU3RyaW5nJiBob3N0KTsKIAotICAgIHN0YXRpYyB2b2lkIHNldEN1
c3RvbVByb3RvY29sUmVxdWVzdFR5cGUoR1R5cGUpOwotICAgIHZvaWQgc2V0dXBDdXN0b21Qcm90
b2NvbHMoKTsKLQogICAgIHZvaWQgZ2V0SG9zdE5hbWVzV2l0aEhTVFNDYWNoZShIYXNoU2V0PFN0
cmluZz4mKTsKICAgICB2b2lkIGRlbGV0ZUhTVFNDYWNoZUZvckhvc3ROYW1lcyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYpOwogICAgIHZvaWQgY2xlYXJIU1RTQ2FjaGUoV2FsbFRpbWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCBkOGZhYzRhODI4OC4uMjE4MTM4YTBlNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAK
KzIwMTktMTAtMDEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgor
CisgICAgICAgIFtHVEtdW1dQRV0gU3RvcCB1c2luZyBsZWdhY3kgY3VzdG9tIHByb3RvY29sIGlt
cGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDI0MDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBVc2UgdGhlIG5ldyBhcHByb2FjaCwgd2hpY2ggaXMgc2ltcGxlciBhbmQgZG9lc24ndCBy
ZXF1aXJlIHRvIGdvIHRvIHRoZSBuZXR3b3JrIHByb2Nlc3MgdG8gbG9hZCBjdXN0b20KKyAgICAg
ICAgcHJvdG9jb2xzLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xz
L3NvdXAvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyU291cC5jcHA6IFJlbW92ZWQuCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0
OjptX21lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW0uY3BwOiBSZW1vdmVkLgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvV2ViS2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbS5oOiBS
ZW1vdmVkLgorICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3Jt
V1BFLmNtYWtlOgorICAgICAgICAqIFNvdXJjZXNHVEsudHh0OgorICAgICAgICAqIFNvdXJjZXNX
UEUudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDdXN0b21Qcm90b2Nv
bE1hbmFnZXJDbGllbnQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHA6CisgICAgICAg
ICh3ZWJraXRVUklTY2hlbWVSZXF1ZXN0Q3JlYXRlKToKKyAgICAgICAgKHdlYmtpdF91cmlfc2No
ZW1lX3JlcXVlc3RfZ2V0X3NjaGVtZSk6CisgICAgICAgICh3ZWJraXRfdXJpX3NjaGVtZV9yZXF1
ZXN0X2dldF91cmkpOgorICAgICAgICAod2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9nZXRfcGF0
aCk6CisgICAgICAgICh3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2dldF93ZWJfdmlldyk6Cisg
ICAgICAgICh3ZWJraXRVUklTY2hlbWVSZXF1ZXN0UmVhZENhbGxiYWNrKToKKyAgICAgICAgKHdl
YmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZmluaXNoX2Vycm9yKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdFByaXZhdGUuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHA6CisgICAgICAgICh3ZWJraXRX
ZWJDb250ZXh0Q29uc3RydWN0ZWQpOgorICAgICAgICAod2Via2l0V2ViQ29udGV4dERpc3Bvc2Up
OgorICAgICAgICAod2Via2l0X3dlYl9jb250ZXh0X3JlZ2lzdGVyX3VyaV9zY2hlbWUpOgorICAg
ICAgICAod2Via2l0V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JXZWJWaWV3KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dFByaXZhdGUuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hl
bWVUYXNrOjpyZXF1ZXN0IGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3Mvc291cC9XZWJQcm9j
ZXNzUG9vbFNvdXAuY3BwOgorCiAyMDE5LTEwLTAxICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNn
YXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBNYWtlIFBTT04gb3B0aW9uYWwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL3Nv
dXAvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9zb3VwL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFu
YWdlclNvdXAuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOWIwYzNiMjE1Ny4u
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90
b2NvbHMvc291cC9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJTb3VwLmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDIxNyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIElnYWxpYSBT
LkwuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJMZWdhY3lDdXN0b21Qcm90b2NvbE1h
bmFnZXIuaCIKLQotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKLSNpbmNsdWRlICJMZWdhY3lD
dXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlcy5oIgotI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNz
LmgiCi0jaW5jbHVkZSAiTmV0d29ya1Nlc3Npb25Tb3VwLmgiCi0jaW5jbHVkZSAiV2ViS2l0U291
cFJlcXVlc3RJbnB1dFN0cmVhbS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQu
aD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KLSNpbmNsdWRlIDxXZWJDb3Jl
L1Jlc291cmNlUmVxdWVzdC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5o
PgotI2luY2x1ZGUgPFdlYkNvcmUvU291cE5ldHdvcmtTZXNzaW9uLmg+Ci0jaW5jbHVkZSA8V2Vi
Q29yZS9XZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWMuaD4KLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0
cm95ZWQuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
LQotUmVmUHRyPE5ldHdvcmtQcm9jZXNzPiYgbGFzdENyZWF0ZWROZXR3b3JrUHJvY2VzcygpCi17
Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZlB0cjxOZXR3b3JrUHJvY2Vzcz4+IG5ldHdv
cmtQcm9jZXNzOwotICAgIHJldHVybiBuZXR3b3JrUHJvY2Vzcy5nZXQoKTsKLX0KLQotdm9pZCBM
ZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXI6Om5ldHdvcmtQcm9jZXNzQ3JlYXRlZChOZXR3b3Jr
UHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MpCi17Ci0gICAgbGFzdENyZWF0ZWROZXR3b3JrUHJvY2Vz
cygpID0gJm5ldHdvcmtQcm9jZXNzOwotfQotCi1MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXI6
OldlYlNvdXBSZXF1ZXN0QXN5bmNEYXRhOjpXZWJTb3VwUmVxdWVzdEFzeW5jRGF0YShHUmVmUHRy
PEdUYXNrPiYmIHJlcXVlc3RUYXNrLCBXZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWMqIHJlcXVlc3RH
ZW5lcmljKQotICAgIDogdGFzayhXVEZNb3ZlKHJlcXVlc3RUYXNrKSkKLSAgICAsIHJlcXVlc3Qo
cmVxdWVzdEdlbmVyaWMpCi0gICAgLCBjYW5jZWxsYWJsZShnX3Rhc2tfZ2V0X2NhbmNlbGxhYmxl
KHRhc2suZ2V0KCkpKQotewotICAgIC8vIElmIHRoZSBzdHJ1Y3QgY29udGFpbnMgYSBudWxsIHJl
cXVlc3QsIGl0IGlzIGJlY2F1c2UgdGhlIHJlcXVlc3QgZmFpbGVkLgotICAgIGdfb2JqZWN0X2Fk
ZF93ZWFrX3BvaW50ZXIoR19PQkpFQ1QocmVxdWVzdCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoq
PigmcmVxdWVzdCkpOwotfQotCi1MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXI6OldlYlNvdXBS
ZXF1ZXN0QXN5bmNEYXRhOjp+V2ViU291cFJlcXVlc3RBc3luY0RhdGEoKQotewotICAgIGlmIChy
ZXF1ZXN0KQotICAgICAgICBnX29iamVjdF9yZW1vdmVfd2Vha19wb2ludGVyKEdfT0JKRUNUKHJl
cXVlc3QpLCByZWludGVycHJldF9jYXN0PHZvaWQqKj4oJnJlcXVlc3QpKTsKLX0KLQotY2xhc3Mg
Q3VzdG9tUHJvdG9jb2xSZXF1ZXN0Q2xpZW50IGZpbmFsIDogcHVibGljIFdlYktpdFNvdXBSZXF1
ZXN0R2VuZXJpY0NsaWVudCB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIEN1c3RvbVByb3RvY29sUmVx
dWVzdENsaWVudCYgc2luZ2xldG9uKCkKLSAgICB7Ci0gICAgICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxDdXN0b21Qcm90b2NvbFJlcXVlc3RDbGllbnQ+IGNsaWVudDsKLSAgICAgICAgcmV0dXJu
IGNsaWVudDsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCBzdGFydFJlcXVlc3QoR1JlZlB0
cjxHVGFzaz4mJiB0YXNrKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgV2ViS2l0U291cFJlcXVl
c3RHZW5lcmljKiByZXF1ZXN0ID0gV0VCS0lUX1NPVVBfUkVRVUVTVF9HRU5FUklDKGdfdGFza19n
ZXRfc291cmNlX29iamVjdCh0YXNrLmdldCgpKSk7Ci0gICAgICAgIGF1dG8qIGN1c3RvbVByb3Rv
Y29sTWFuYWdlciA9IGxhc3RDcmVhdGVkTmV0d29ya1Byb2Nlc3MoKS0+c3VwcGxlbWVudDxMZWdh
Y3lDdXN0b21Qcm90b2NvbE1hbmFnZXI+KCk7Ci0gICAgICAgIGlmICghY3VzdG9tUHJvdG9jb2xN
YW5hZ2VyKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGF1dG8gY3VzdG9tUHJvdG9j
b2xJRCA9IGN1c3RvbVByb3RvY29sTWFuYWdlci0+YWRkQ3VzdG9tUHJvdG9jb2wobWFrZVVuaXF1
ZTxMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXI6OldlYlNvdXBSZXF1ZXN0QXN5bmNEYXRhPihX
VEZNb3ZlKHRhc2spLCByZXF1ZXN0KSk7Ci0gICAgICAgIGN1c3RvbVByb3RvY29sTWFuYWdlci0+
c3RhcnRMb2FkaW5nKGN1c3RvbVByb3RvY29sSUQsIHdlYmtpdFNvdXBSZXF1ZXN0R2VuZXJpY0dl
dFJlcXVlc3QocmVxdWVzdCkpOwotICAgIH0KLX07Ci0KLXZvaWQgTGVnYWN5Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyOjpyZWdpc3RlclByb3RvY29sQ2xhc3MoKQotewotICAgIHN0YXRpY19jYXN0PFdl
YktpdFNvdXBSZXF1ZXN0R2VuZXJpY0NsYXNzKj4oZ190eXBlX2NsYXNzX3JlZihXRUJLSVRfVFlQ
RV9TT1VQX1JFUVVFU1RfR0VORVJJQykpLT5jbGllbnQgPSAmQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0
Q2xpZW50OjpzaW5nbGV0b24oKTsKLSAgICBTb3VwTmV0d29ya1Nlc3Npb246OnNldEN1c3RvbVBy
b3RvY29sUmVxdWVzdFR5cGUoV0VCS0lUX1RZUEVfU09VUF9SRVFVRVNUX0dFTkVSSUMpOwotfQot
Ci12b2lkIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcjo6cmVnaXN0ZXJTY2hlbWUoY29uc3Qg
U3RyaW5nJiBzY2hlbWUpCi17Ci0gICAgaWYgKCFtX3JlZ2lzdGVyZWRTY2hlbWVzKQotICAgICAg
ICBtX3JlZ2lzdGVyZWRTY2hlbWVzID0gYWRvcHRHUmVmKGdfcHRyX2FycmF5X25ld193aXRoX2Zy
ZWVfZnVuYyhnX2ZyZWUpKTsKLQotICAgIGlmIChtX3JlZ2lzdGVyZWRTY2hlbWVzLT5sZW4pCi0g
ICAgICAgIGdfcHRyX2FycmF5X3JlbW92ZV9pbmRleF9mYXN0KG1fcmVnaXN0ZXJlZFNjaGVtZXMu
Z2V0KCksIG1fcmVnaXN0ZXJlZFNjaGVtZXMtPmxlbiAtIDEpOwotICAgIGdfcHRyX2FycmF5X2Fk
ZChtX3JlZ2lzdGVyZWRTY2hlbWVzLmdldCgpLCBnX3N0cmR1cChzY2hlbWUudXRmOCgpLmRhdGEo
KSkpOwotICAgIGdfcHRyX2FycmF5X2FkZChtX3JlZ2lzdGVyZWRTY2hlbWVzLmdldCgpLCBudWxs
cHRyKTsKLQotICAgIGF1dG8qIGdlbmVyaWNSZXF1ZXN0Q2xhc3MgPSBzdGF0aWNfY2FzdDxTb3Vw
UmVxdWVzdENsYXNzKj4oZ190eXBlX2NsYXNzX3BlZWsoV0VCS0lUX1RZUEVfU09VUF9SRVFVRVNU
X0dFTkVSSUMpKTsKLSAgICBBU1NFUlQoZ2VuZXJpY1JlcXVlc3RDbGFzcyk7Ci0gICAgZ2VuZXJp
Y1JlcXVlc3RDbGFzcy0+c2NoZW1lcyA9IGNvbnN0X2Nhc3Q8Y29uc3QgY2hhcioqPihyZWludGVy
cHJldF9jYXN0PGNoYXIqKj4obV9yZWdpc3RlcmVkU2NoZW1lcy0+cGRhdGEpKTsKLSAgICBsYXN0
Q3JlYXRlZE5ldHdvcmtQcm9jZXNzKCktPmZvckVhY2hOZXR3b3JrU2Vzc2lvbihbXShjb25zdCBh
dXRvJiBzZXNzaW9uKSB7Ci0gICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IE5ldHdvcmtTZXNzaW9u
U291cCY+KHNlc3Npb24pLnNvdXBOZXR3b3JrU2Vzc2lvbigpLnNldHVwQ3VzdG9tUHJvdG9jb2xz
KCk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjp1bnJl
Z2lzdGVyU2NoZW1lKGNvbnN0IFN0cmluZyYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0K
LQotYm9vbCBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnN1cHBvcnRzU2NoZW1lKGNvbnN0
IFN0cmluZyYgc2NoZW1lKQotewotICAgIGlmIChzY2hlbWUuaXNOdWxsKCkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIENTdHJpbmcgY1NjaGVtZSA9IHNjaGVtZS51dGY4KCk7Ci0gICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fcmVnaXN0ZXJlZFNjaGVtZXMtPmxlbjsgKytpKSB7
Ci0gICAgICAgIGlmIChjU2NoZW1lID09IHN0YXRpY19jYXN0PGNoYXIqPihnX3B0cl9hcnJheV9p
bmRleChtX3JlZ2lzdGVyZWRTY2hlbWVzLmdldCgpLCBpKSkpCi0gICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZvaWQgTGVnYWN5Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyOjpkaWRGYWlsV2l0aEVycm9yKHVpbnQ2NF90IGN1c3RvbVByb3RvY29s
SUQsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQotewotICAgIGF1dG8qIGRhdGEgPSBtX2N1
c3RvbVByb3RvY29sTWFwLmdldChjdXN0b21Qcm90b2NvbElEKTsKLSAgICBBU1NFUlQoZGF0YSk7
Ci0KLSAgICAvLyBFaXRoZXIgd2UgaGF2ZW4ndCBzdGFydGVkIHJlYWRpbmcgdGhlIHN0cmVhbSB5
ZXQsIGluIHdoaWNoIGNhc2Ugd2UgbmVlZCB0byBjb21wbGV0ZSB0aGUKLSAgICAvLyB0YXNrIGZp
cnN0LCBvciB3ZSBmYWlsZWQgcmVhZGluZyBpdCBhbmQgdGhlIHRhc2sgd2FzIGFscmVhZHkgY29t
cGxldGVkIGJ5IGRpZExvYWREYXRhKCkuCi0gICAgQVNTRVJUKCFkYXRhLT5zdHJlYW0gfHwgIWRh
dGEtPnRhc2spOwotCi0gICAgaWYgKCFkYXRhLT5zdHJlYW0pIHsKLSAgICAgICAgR1JlZlB0cjxH
VGFzaz4gdGFzayA9IHN0ZDo6ZXhjaGFuZ2UoZGF0YS0+dGFzaywgbnVsbHB0cik7Ci0gICAgICAg
IEFTU0VSVCh0YXNrLmdldCgpKTsKLSAgICAgICAgZ190YXNrX3JldHVybl9uZXdfZXJyb3IodGFz
ay5nZXQoKSwgZ19xdWFya19mcm9tX3N0cmluZyhlcnJvci5kb21haW4oKS51dGY4KCkuZGF0YSgp
KSwKLSAgICAgICAgICAgIGVycm9yLmVycm9yQ29kZSgpLCAiJXMiLCBlcnJvci5sb2NhbGl6ZWRE
ZXNjcmlwdGlvbigpLnV0ZjgoKS5kYXRhKCkpOwotICAgIH0gZWxzZQotICAgICAgICB3ZWJraXRT
b3VwUmVxdWVzdElucHV0U3RyZWFtRGlkRmFpbFdpdGhFcnJvcihXRUJLSVRfU09VUF9SRVFVRVNU
X0lOUFVUX1NUUkVBTShkYXRhLT5zdHJlYW0uZ2V0KCkpLCBlcnJvcik7Ci0KLSAgICByZW1vdmVD
dXN0b21Qcm90b2NvbChjdXN0b21Qcm90b2NvbElEKTsKLX0KLQotdm9pZCBMZWdhY3lDdXN0b21Q
cm90b2NvbE1hbmFnZXI6OmRpZExvYWREYXRhKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSkKLXsKLSAgICBhdXRvKiBkYXRh
ID0gbV9jdXN0b21Qcm90b2NvbE1hcC5nZXQoY3VzdG9tUHJvdG9jb2xJRCk7Ci0gICAgLy8gVGhl
IGRhdGEgbWlnaHQgaGF2ZSBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgcmVxdWVzdCBtYXAgaWYgYSBw
cmV2aW91cyBjaHVuayBmYWlsZWQKLSAgICAvLyBhbmQgYSBuZXcgbWVzc2FnZSB3YXMgc2VudCBi
eSB0aGUgVUkgcHJvY2VzcyBiZWZvcmUgYmVpbmcgbm90aWZpZWQgYWJvdXQgdGhlIGZhaWx1cmUu
Ci0gICAgaWYgKCFkYXRhKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIWRhdGEtPnN0cmVh
bSkgewotICAgICAgICBHUmVmUHRyPEdUYXNrPiB0YXNrID0gc3RkOjpleGNoYW5nZShkYXRhLT50
YXNrLCBudWxscHRyKTsKLSAgICAgICAgQVNTRVJUKHRhc2suZ2V0KCkpOwotCi0gICAgICAgIGdv
ZmZzZXQgc291cENvbnRlbnRMZW5ndGggPSBzb3VwX3JlcXVlc3RfZ2V0X2NvbnRlbnRfbGVuZ3Ro
KFNPVVBfUkVRVUVTVChnX3Rhc2tfZ2V0X3NvdXJjZV9vYmplY3QodGFzay5nZXQoKSkpKTsKLSAg
ICAgICAgdWludDY0X3QgY29udGVudExlbmd0aCA9IHNvdXBDb250ZW50TGVuZ3RoID09IC0xID8g
MCA6IHN0YXRpY19jYXN0PHVpbnQ2NF90Pihzb3VwQ29udGVudExlbmd0aCk7Ci0gICAgICAgIGlm
ICghZGF0YVJlZmVyZW5jZS5zaXplKCkpIHsKLSAgICAgICAgICAgIC8vIEVtcHR5IHJlcGx5LCBq
dXN0IGNyZWF0ZSBhbmQgZW1wdHkgR01lbW9yeUlucHV0U3RyZWFtLgotICAgICAgICAgICAgZGF0
YS0+c3RyZWFtID0gZ19tZW1vcnlfaW5wdXRfc3RyZWFtX25ldygpOwotICAgICAgICB9IGVsc2Ug
aWYgKGRhdGFSZWZlcmVuY2Uuc2l6ZSgpID09IGNvbnRlbnRMZW5ndGgpIHsKLSAgICAgICAgICAg
IC8vIFdlIGRvbid0IGV4cGVjdCBtb3JlIGRhdGEsIHNvIHdlIGNhbiBqdXN0IGNyZWF0ZSBhIEdN
ZW1vcnlJbnB1dFN0cmVhbSB3aXRoIGFsbCB0aGUgZGF0YS4KLSAgICAgICAgICAgIGRhdGEtPnN0
cmVhbSA9IGdfbWVtb3J5X2lucHV0X3N0cmVhbV9uZXdfZnJvbV9kYXRhKGdfbWVtZHVwKGRhdGFS
ZWZlcmVuY2UuZGF0YSgpLCBkYXRhUmVmZXJlbmNlLnNpemUoKSksIGNvbnRlbnRMZW5ndGgsIGdf
ZnJlZSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBXZSBleHBlY3QgbW9yZSBk
YXRhIGNodW5rcyBmcm9tIHRoZSBVSSBwcm9jZXNzLgotICAgICAgICAgICAgZGF0YS0+c3RyZWFt
ID0gd2Via2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbU5ldyhjb250ZW50TGVuZ3RoKTsKLSAgICAg
ICAgICAgIHdlYmtpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW1BZGREYXRhKFdFQktJVF9TT1VQX1JF
UVVFU1RfSU5QVVRfU1RSRUFNKGRhdGEtPnN0cmVhbS5nZXQoKSksIGRhdGFSZWZlcmVuY2UuZGF0
YSgpLCBkYXRhUmVmZXJlbmNlLnNpemUoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZ190YXNrX3Jl
dHVybl9wb2ludGVyKHRhc2suZ2V0KCksIGRhdGEtPnN0cmVhbS5nZXQoKSwgZ19vYmplY3RfdW5y
ZWYpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGdfY2FuY2VsbGFibGVfaXNf
Y2FuY2VsbGVkKGRhdGEtPmNhbmNlbGxhYmxlLmdldCgpKSB8fCAhZGF0YS0+cmVxdWVzdCkgewot
ICAgICAgICAvLyBSZXNvdXJjZVJlcXVlc3QgZmFpbGVkIG9yIGl0IHdhcyBjYW5jZWxsZWQuIEl0
IGRvZXNuJ3QgbWF0dGVyIGhlcmUgdGhlIGVycm9yIG9yIGlmIGl0IHdhcyBjYW5jZWxsZWQsCi0g
ICAgICAgIC8vIGJlY2F1c2UgdGhhdCdzIGFscmVhZHkgaGFuZGxlZCBieSB0aGUgcmVzb3VyY2Ug
aGFuZGxlIGNsaWVudCwgd2UganVzdCB3YW50IHRvIG5vdGlmeSB0aGUgVUkgcHJvY2VzcwotICAg
ICAgICAvLyB0byBzdG9wIHJlYWRpbmcgZGF0YSBmcm9tIHRoZSB1c2VyIGlucHV0IHN0cmVhbS4g
SWYgVUkgcHJvY2VzcyBhbHJlYWR5IHNlbnQgYWxsIHRoZSBkYXRhIHdlIHNpbXBseQotICAgICAg
ICAvLyBmaW5pc2ggc2lsZW50bHkuCi0gICAgICAgIGlmICghd2Via2l0U291cFJlcXVlc3RJbnB1
dFN0cmVhbUZpbmlzaGVkKFdFQktJVF9TT1VQX1JFUVVFU1RfSU5QVVRfU1RSRUFNKGRhdGEtPnN0
cmVhbS5nZXQoKSkpKQotICAgICAgICAgICAgc3RvcExvYWRpbmcoY3VzdG9tUHJvdG9jb2xJRCk7
Ci0KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHdlYmtpdFNvdXBSZXF1ZXN0SW5wdXRT
dHJlYW1BZGREYXRhKFdFQktJVF9TT1VQX1JFUVVFU1RfSU5QVVRfU1RSRUFNKGRhdGEtPnN0cmVh
bS5nZXQoKSksIGRhdGFSZWZlcmVuY2UuZGF0YSgpLCBkYXRhUmVmZXJlbmNlLnNpemUoKSk7Ci19
Ci0KLXZvaWQgTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpkaWRSZWNlaXZlUmVzcG9uc2Uo
dWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UsIHVpbnQzMl90KQotewotICAgIGF1dG8qIGRhdGEgPSBtX2N1c3RvbVByb3RvY29sTWFwLmdl
dChjdXN0b21Qcm90b2NvbElEKTsKLSAgICAvLyBUaGUgZGF0YSBtaWdodCBoYXZlIGJlZW4gcmVt
b3ZlZCBmcm9tIHRoZSByZXF1ZXN0IG1hcCBpZiBhbiBlcnJvciBoYXBwZW5lZCBldmVuIGJlZm9y
ZSB0aGlzIHBvaW50LgotICAgIGlmICghZGF0YSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQVNT
RVJUKGRhdGEtPnRhc2spOwotCi0gICAgV2ViS2l0U291cFJlcXVlc3RHZW5lcmljKiByZXF1ZXN0
ID0gV0VCS0lUX1NPVVBfUkVRVUVTVF9HRU5FUklDKGdfdGFza19nZXRfc291cmNlX29iamVjdChk
YXRhLT50YXNrLmdldCgpKSk7Ci0gICAgd2Via2l0U291cFJlcXVlc3RHZW5lcmljU2V0Q29udGVu
dExlbmd0aChyZXF1ZXN0LCByZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKSA/IHJlc3Bv
bnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpIDogLTEpOwotICAgIHdlYmtpdFNvdXBSZXF1ZXN0
R2VuZXJpY1NldENvbnRlbnRUeXBlKHJlcXVlc3QsICFyZXNwb25zZS5taW1lVHlwZSgpLmlzRW1w
dHkoKSA/IHJlc3BvbnNlLm1pbWVUeXBlKCkudXRmOCgpLmRhdGEoKSA6IDApOwotfQotCi12b2lk
IExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcjo6ZGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBj
dXN0b21Qcm90b2NvbElEKQotewotICAgIEFTU0VSVChtX2N1c3RvbVByb3RvY29sTWFwLmNvbnRh
aW5zKGN1c3RvbVByb3RvY29sSUQpKTsKLSAgICByZW1vdmVDdXN0b21Qcm90b2NvbChjdXN0b21Q
cm90b2NvbElEKTsKLX0KLQotdm9pZCBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXI6Ondhc1Jl
ZGlyZWN0ZWRUb1JlcXVlc3QodWludDY0X3QsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcAppbmRleCBmNTJmNDBmYmRjZC4uYWVlNjhjZjJmYmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0xNjEsNyAr
MTYxLDcgQEAgTmV0d29ya1Byb2Nlc3M6Ok5ldHdvcmtQcm9jZXNzKEF1eGlsaWFyeVByb2Nlc3NJ
bml0aWFsaXphdGlvblBhcmFtZXRlcnMmJiBwYXJhbWUKICNpZiBFTkFCTEUoTEVHQUNZX0NVU1RP
TV9QUk9UT0NPTF9NQU5BR0VSKQogICAgIGFkZFN1cHBsZW1lbnQ8TGVnYWN5Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyPigpOwogI2VuZGlmCi0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShTT1VQKQor
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcjo6bmV0
d29ya1Byb2Nlc3NDcmVhdGVkKCp0aGlzKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViS2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViS2l0U291cFJlcXVlc3RJ
bnB1dFN0cmVhbS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg3NDUyNWUzOGNl
Li4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2Vi
S2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODQgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgotICoKLSAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
LSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiV2ViS2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbS5oIgotCi0jaW5j
bHVkZSA8d3RmL01haW5UaHJlYWQuaD4KLSNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgotI2luY2x1
ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+
Ci0KLXN0cnVjdCBBc3luY1JlYWREYXRhIHsKLSAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExP
Q0FURUQ7Ci0gICAgQXN5bmNSZWFkRGF0YShHUmVmUHRyPEdUYXNrPiYmIHRhc2ssIHZvaWQqIGJ1
ZmZlciwgZ3NpemUgY291bnQpCi0gICAgICAgIDogdGFzayhXVEZNb3ZlKHRhc2spKQotICAgICAg
ICAsIGJ1ZmZlcihidWZmZXIpCi0gICAgICAgICwgY291bnQoY291bnQpCi0gICAgewotICAgIH0K
LQotICAgIEdSZWZQdHI8R1Rhc2s+IHRhc2s7Ci0gICAgdm9pZCogYnVmZmVyOwotICAgIHNpemVf
dCBjb3VudDsKLX07Ci0KLXN0cnVjdCBfV2ViS2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbVByaXZh
dGUgewotICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKLSAgICB1aW50NjRfdCBj
b250ZW50TGVuZ3RoOwotICAgIHVpbnQ2NF90IGJ5dGVzUmVjZWl2ZWQ7Ci0gICAgdWludDY0X3Qg
Ynl0ZXNSZWFkOwotCi0gICAgR1VuaXF1ZVB0cjxHRXJyb3I+IGVycm9yOwotCi0gICAgc3RkOjp1
bmlxdWVfcHRyPEFzeW5jUmVhZERhdGE+IHBlbmRpbmdBc3luY1JlYWQ7Ci19OwotCi1HX0RFRklO
RV9UWVBFKFdlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW0sIHdlYmtpdF9zb3VwX3JlcXVlc3Rf
aW5wdXRfc3RyZWFtLCBHX1RZUEVfTUVNT1JZX0lOUFVUX1NUUkVBTSkKLQotc3RhdGljIHZvaWQg
d2Via2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbVJlYWRBc3luY1Jlc3VsdENvbXBsZXRlKEdUYXNr
KiB0YXNrLCB2b2lkKiBidWZmZXIsIGdzaXplIGNvdW50KQotewotICAgIFdlYktpdFNvdXBSZXF1
ZXN0SW5wdXRTdHJlYW0qIHN0cmVhbSA9IFdFQktJVF9TT1VQX1JFUVVFU1RfSU5QVVRfU1RSRUFN
KGdfdGFza19nZXRfc291cmNlX29iamVjdCh0YXNrKSk7Ci0gICAgR0Vycm9yKiBlcnJvciA9IG51
bGxwdHI7Ci0gICAgZ3NzaXplIGJ5dGVzUmVhZCA9IEdfSU5QVVRfU1RSRUFNX0dFVF9DTEFTUyhz
dHJlYW0pLT5yZWFkX2ZuKEdfSU5QVVRfU1RSRUFNKHN0cmVhbSksIGJ1ZmZlciwgY291bnQsIGdf
dGFza19nZXRfY2FuY2VsbGFibGUodGFzayksICZlcnJvcik7Ci0gICAgaWYgKCFlcnJvcikgewot
ICAgICAgICBzdHJlYW0tPnByaXYtPmJ5dGVzUmVhZCArPSBieXRlc1JlYWQ7Ci0gICAgICAgIGdf
dGFza19yZXR1cm5faW50KHRhc2ssIGJ5dGVzUmVhZCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIGdf
dGFza19yZXR1cm5fZXJyb3IodGFzaywgZXJyb3IpOwotfQotCi1zdGF0aWMgdm9pZCB3ZWJraXRT
b3VwUmVxdWVzdElucHV0U3RyZWFtUGVuZGluZ1JlYWRBc3luY0NvbXBsZXRlKFdlYktpdFNvdXBS
ZXF1ZXN0SW5wdXRTdHJlYW0qIHN0cmVhbSkKLXsKLSAgICBpZiAoYXV0byBkYXRhID0gV1RGTW92
ZShzdHJlYW0tPnByaXYtPnBlbmRpbmdBc3luY1JlYWQpKQotICAgICAgICB3ZWJraXRTb3VwUmVx
dWVzdElucHV0U3RyZWFtUmVhZEFzeW5jUmVzdWx0Q29tcGxldGUoZGF0YS0+dGFzay5nZXQoKSwg
ZGF0YS0+YnVmZmVyLCBkYXRhLT5jb3VudCk7Ci19Ci0KLXN0YXRpYyBib29sIHdlYmtpdFNvdXBS
ZXF1ZXN0SW5wdXRTdHJlYW1IYXNEYXRhVG9SZWFkKFdlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJl
YW0qIHN0cmVhbSkKLXsKLSAgICByZXR1cm4gc3RyZWFtLT5wcml2LT5ieXRlc1JlYWQgPCBzdHJl
YW0tPnByaXYtPmJ5dGVzUmVjZWl2ZWQ7Ci19Ci0KLXN0YXRpYyBib29sIHdlYmtpdFNvdXBSZXF1
ZXN0SW5wdXRTdHJlYW1Jc1dhaXRpbmdGb3JEYXRhKFdlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJl
YW0qIHN0cmVhbSkKLXsKLSAgICByZXR1cm4gIXN0cmVhbS0+cHJpdi0+Y29udGVudExlbmd0aCB8
fCBzdHJlYW0tPnByaXYtPmJ5dGVzUmVjZWl2ZWQgPCBzdHJlYW0tPnByaXYtPmNvbnRlbnRMZW5n
dGg7Ci19Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW1SZWFkQXN5
bmMoR0lucHV0U3RyZWFtKiBpbnB1dFN0cmVhbSwgdm9pZCogYnVmZmVyLCBnc2l6ZSBjb3VudCwg
aW50IC8qcHJpb3JpdHkqLywgR0NhbmNlbGxhYmxlKiBjYW5jZWxsYWJsZSwgR0FzeW5jUmVhZHlD
YWxsYmFjayBjYWxsYmFjaywgZ3BvaW50ZXIgdXNlckRhdGEpCi17Ci0gICAgQVNTRVJUKFJ1bkxv
b3A6OmlzTWFpbigpKTsKLSAgICBXZWJLaXRTb3VwUmVxdWVzdElucHV0U3RyZWFtKiBzdHJlYW0g
PSBXRUJLSVRfU09VUF9SRVFVRVNUX0lOUFVUX1NUUkVBTShpbnB1dFN0cmVhbSk7Ci0gICAgR1Jl
ZlB0cjxHVGFzaz4gdGFzayA9IGFkb3B0R1JlZihnX3Rhc2tfbmV3KHN0cmVhbSwgY2FuY2VsbGFi
bGUsIGNhbGxiYWNrLCB1c2VyRGF0YSkpOwotCi0gICAgaWYgKCF3ZWJraXRTb3VwUmVxdWVzdElu
cHV0U3RyZWFtSGFzRGF0YVRvUmVhZChzdHJlYW0pICYmICF3ZWJraXRTb3VwUmVxdWVzdElucHV0
U3RyZWFtSXNXYWl0aW5nRm9yRGF0YShzdHJlYW0pKSB7Ci0gICAgICAgIGdfdGFza19yZXR1cm5f
aW50KHRhc2suZ2V0KCksIDApOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKHN0
cmVhbS0+cHJpdi0+ZXJyb3IuZ2V0KCkpIHsKLSAgICAgICAgZ190YXNrX3JldHVybl9lcnJvcih0
YXNrLmdldCgpLCBzdHJlYW0tPnByaXYtPmVycm9yLnJlbGVhc2UoKSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBpZiAod2Via2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbUhhc0RhdGFU
b1JlYWQoc3RyZWFtKSkgewotICAgICAgICB3ZWJraXRTb3VwUmVxdWVzdElucHV0U3RyZWFtUmVh
ZEFzeW5jUmVzdWx0Q29tcGxldGUodGFzay5nZXQoKSwgYnVmZmVyLCBjb3VudCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBzdHJlYW0tPnByaXYtPnBlbmRpbmdBc3luY1JlYWQgPSBt
YWtlVW5pcXVlPEFzeW5jUmVhZERhdGE+KFdURk1vdmUodGFzayksIGJ1ZmZlciwgY291bnQpOwot
fQotCi1zdGF0aWMgZ3NzaXplIHdlYmtpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW1SZWFkRmluaXNo
KEdJbnB1dFN0cmVhbSogaW5wdXRTdHJlYW0sIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBHRXJyb3Iq
KiBlcnJvcikKLXsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChnX3Rhc2tfaXNfdmFsaWQocmVz
dWx0LCBpbnB1dFN0cmVhbSksIDApOwotCi0gICAgcmV0dXJuIGdfdGFza19wcm9wYWdhdGVfaW50
KEdfVEFTSyhyZXN1bHQpLCBlcnJvcik7Ci19Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdFNvdXBSZXF1
ZXN0SW5wdXRTdHJlYW1GaW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCi17Ci0gICAgV0VCS0lUX1NP
VVBfUkVRVUVTVF9JTlBVVF9TVFJFQU0ob2JqZWN0KS0+cHJpdi0+fldlYktpdFNvdXBSZXF1ZXN0
SW5wdXRTdHJlYW1Qcml2YXRlKCk7Ci0gICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X3NvdXBfcmVx
dWVzdF9pbnB1dF9zdHJlYW1fcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKLX0KLQot
c3RhdGljIHZvaWQgd2Via2l0X3NvdXBfcmVxdWVzdF9pbnB1dF9zdHJlYW1faW5pdChXZWJLaXRT
b3VwUmVxdWVzdElucHV0U3RyZWFtKiBzdHJlYW0pCi17Ci0gICAgV2ViS2l0U291cFJlcXVlc3RJ
bnB1dFN0cmVhbVByaXZhdGUqIHByaXYgPSBHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUoc3Ry
ZWFtLCBXRUJLSVRfVFlQRV9TT1VQX1JFUVVFU1RfSU5QVVRfU1RSRUFNLCBXZWJLaXRTb3VwUmVx
dWVzdElucHV0U3RyZWFtUHJpdmF0ZSk7Ci0gICAgc3RyZWFtLT5wcml2ID0gcHJpdjsKLSAgICBu
ZXcgKHByaXYpIFdlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW1Qcml2YXRlKCk7Ci19Ci0KLXN0
YXRpYyB2b2lkIHdlYmtpdF9zb3VwX3JlcXVlc3RfaW5wdXRfc3RyZWFtX2NsYXNzX2luaXQoV2Vi
S2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbUNsYXNzKiByZXF1ZXN0U3RyZWFtQ2xhc3MpCi17Ci0g
ICAgR09iamVjdENsYXNzKiBnT2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhyZXF1ZXN0U3Ry
ZWFtQ2xhc3MpOwotICAgIGdPYmplY3RDbGFzcy0+ZmluYWxpemUgPSB3ZWJraXRTb3VwUmVxdWVz
dElucHV0U3RyZWFtRmluYWxpemU7Ci0KLSAgICBHSW5wdXRTdHJlYW1DbGFzcyogaW5wdXRTdHJl
YW1DbGFzcyA9IEdfSU5QVVRfU1RSRUFNX0NMQVNTKHJlcXVlc3RTdHJlYW1DbGFzcyk7Ci0gICAg
aW5wdXRTdHJlYW1DbGFzcy0+cmVhZF9hc3luYyA9IHdlYmtpdFNvdXBSZXF1ZXN0SW5wdXRTdHJl
YW1SZWFkQXN5bmM7Ci0gICAgaW5wdXRTdHJlYW1DbGFzcy0+cmVhZF9maW5pc2ggPSB3ZWJraXRT
b3VwUmVxdWVzdElucHV0U3RyZWFtUmVhZEZpbmlzaDsKLQotICAgIGdfdHlwZV9jbGFzc19hZGRf
cHJpdmF0ZShyZXF1ZXN0U3RyZWFtQ2xhc3MsIHNpemVvZihXZWJLaXRTb3VwUmVxdWVzdElucHV0
U3RyZWFtUHJpdmF0ZSkpOwotfQotCi1HSW5wdXRTdHJlYW0qIHdlYmtpdFNvdXBSZXF1ZXN0SW5w
dXRTdHJlYW1OZXcodWludDY0X3QgY29udGVudExlbmd0aCkKLXsKLSAgICBXZWJLaXRTb3VwUmVx
dWVzdElucHV0U3RyZWFtKiBzdHJlYW0gPSBXRUJLSVRfU09VUF9SRVFVRVNUX0lOUFVUX1NUUkVB
TShnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfU09VUF9SRVFVRVNUX0lOUFVUX1NUUkVBTSwgTlVM
TCkpOwotICAgIHN0cmVhbS0+cHJpdi0+Y29udGVudExlbmd0aCA9IGNvbnRlbnRMZW5ndGg7Ci0g
ICAgcmV0dXJuIEdfSU5QVVRfU1RSRUFNKHN0cmVhbSk7Ci19Ci0KLXZvaWQgd2Via2l0U291cFJl
cXVlc3RJbnB1dFN0cmVhbUFkZERhdGEoV2ViS2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbSogc3Ry
ZWFtLCBjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKLXsKLSAgICBBU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOwotCi0gICAgaWYgKHdlYmtpdFNvdXBSZXF1ZXN0SW5wdXRTdHJl
YW1GaW5pc2hlZChzdHJlYW0pKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoZGF0YUxlbmd0
aCkgewotICAgICAgICAvLyBUcnVuY2F0ZSB0aGUgZGF0YUxlbmd0aCB0byB0aGUgY29udGVudExl
bmd0aCBpZiBpdCdzIGtub3duLgotICAgICAgICBpZiAoc3RyZWFtLT5wcml2LT5jb250ZW50TGVu
Z3RoICYmIHN0cmVhbS0+cHJpdi0+Ynl0ZXNSZWNlaXZlZCArIGRhdGFMZW5ndGggPiBzdHJlYW0t
PnByaXYtPmNvbnRlbnRMZW5ndGgpCi0gICAgICAgICAgICBkYXRhTGVuZ3RoID0gc3RyZWFtLT5w
cml2LT5jb250ZW50TGVuZ3RoIC0gc3RyZWFtLT5wcml2LT5ieXRlc1JlY2VpdmVkOwotICAgICAg
ICBzdHJlYW0tPnByaXYtPmJ5dGVzUmVjZWl2ZWQgKz0gZGF0YUxlbmd0aDsKLSAgICAgICAgZ19t
ZW1vcnlfaW5wdXRfc3RyZWFtX2FkZF9kYXRhKEdfTUVNT1JZX0lOUFVUX1NUUkVBTShzdHJlYW0p
LCBnX21lbWR1cChkYXRhLCBkYXRhTGVuZ3RoKSwgZGF0YUxlbmd0aCwgZ19mcmVlKTsKLSAgICB9
IGVsc2UgewotICAgICAgICAvLyBXZSBoYXZlIHJlY2VpdmVkIGFsbCB0aGUgZGF0YSwgc2V0IGNv
bnRlbnRMZW5ndGggdG8gYnl0ZXNSZWNlaXZlZCB0byBpbmRpY2F0ZSB3ZSBoYXZlIGZpbmlzaGVk
LgotICAgICAgICBzdHJlYW0tPnByaXYtPmNvbnRlbnRMZW5ndGggPSBzdHJlYW0tPnByaXYtPmJ5
dGVzUmVjZWl2ZWQ7Ci0gICAgICAgIC8vIElmIHRoZXJlJ3MgYSBwZW5kaW5nIHJlYWQgdG8gY29t
cGxldGUsIHJlYWRfZm4gd2lsbCByZXR1cm4gMCBiZWNhdXNlIHdlIGhhdmVuJ3QgYWRkZWQgbW9y
ZSBkYXRhIHRvIHRoZQotICAgICAgICAvLyBtZW1vcnkgaW5wdXQgc3RyZWFtLiBBbmQgaWYgdGhl
cmUgaXNuJ3QgYSBwZW5kaW5nIHJlYWQsIHRoZSBuZXh0IGNhbGwgdG8gcmVhZF9hc3luYyB3aWxs
IHJldHVybiAwIHRvbywgYmVjYXVzZQotICAgICAgICAvLyB3ZWJraXRTb3VwUmVxdWVzdElucHV0
U3RyZWFtRmluaXNoZWQoKSBpcyBub3cgVFJVRS4KLSAgICB9Ci0KLSAgICB3ZWJraXRTb3VwUmVx
dWVzdElucHV0U3RyZWFtUGVuZGluZ1JlYWRBc3luY0NvbXBsZXRlKHN0cmVhbSk7Ci19Ci0KLXZv
aWQgd2Via2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbURpZEZhaWxXaXRoRXJyb3IoV2ViS2l0U291
cFJlcXVlc3RJbnB1dFN0cmVhbSogc3RyZWFtLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
JiByZXNvdXJjZUVycm9yKQotewotICAgIEdVbmlxdWVQdHI8R0Vycm9yPiBlcnJvcihnX2Vycm9y
X25ldyhnX3F1YXJrX2Zyb21fc3RyaW5nKHJlc291cmNlRXJyb3IuZG9tYWluKCkudXRmOCgpLmRh
dGEoKSksIHJlc291cmNlRXJyb3IuZXJyb3JDb2RlKCksICIlcyIsIHJlc291cmNlRXJyb3IubG9j
YWxpemVkRGVzY3JpcHRpb24oKS51dGY4KCkuZGF0YSgpKSk7Ci0gICAgaWYgKGF1dG8gZGF0YSA9
IFdURk1vdmUoc3RyZWFtLT5wcml2LT5wZW5kaW5nQXN5bmNSZWFkKSkKLSAgICAgICAgZ190YXNr
X3JldHVybl9lcnJvcihkYXRhLT50YXNrLmdldCgpLCBlcnJvci5yZWxlYXNlKCkpOwotICAgIGVs
c2UgewotICAgICAgICBzdHJlYW0tPnByaXYtPmNvbnRlbnRMZW5ndGggPSBzdHJlYW0tPnByaXYt
PmJ5dGVzUmVjZWl2ZWQ7Ci0gICAgICAgIHN0cmVhbS0+cHJpdi0+ZXJyb3IgPSBXVEZNb3ZlKGVy
cm9yKTsKLSAgICB9Ci19Ci0KLWJvb2wgd2Via2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbUZpbmlz
aGVkKFdlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW0qIHN0cmVhbSkKLXsKLSAgICByZXR1cm4g
IXdlYmtpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW1Jc1dhaXRpbmdGb3JEYXRhKHN0cmVhbSk7Ci19
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViS2l0U291
cFJlcXVlc3RJbnB1dFN0cmVhbS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3Vw
L1dlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW0uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMzk5YjBiNDVkNmYuLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvc291cC9XZWJLaXRTb3VwUmVxdWVzdElucHV0U3RyZWFtLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw1NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwu
Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAot
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0K
LSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+Ci0jaW5j
bHVkZSA8Z2lvL2dpby5oPgotCi1HX0JFR0lOX0RFQ0xTCi0KLSNkZWZpbmUgV0VCS0lUX1RZUEVf
U09VUF9SRVFVRVNUX0lOUFVUX1NUUkVBTSAgICAgICAgICAgICh3ZWJraXRfc291cF9yZXF1ZXN0
X2lucHV0X3N0cmVhbV9nZXRfdHlwZSgpKQotI2RlZmluZSBXRUJLSVRfU09VUF9SRVFVRVNUX0lO
UFVUX1NUUkVBTShvYmplY3QpICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChv
YmplY3QpLCBXRUJLSVRfVFlQRV9TT1VQX1JFUVVFU1RfSU5QVVRfU1RSRUFNLCBXZWJLaXRTb3Vw
UmVxdWVzdElucHV0U3RyZWFtKSkKLSNkZWZpbmUgV0VCS0lUX0lTX1NPVVBfUkVRVUVTVF9JTlBV
VF9TVFJFQU0ob2JqZWN0KSAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqZWN0
KSwgV0VCS0lUX1RZUEVfU09VUF9SRVFVRVNUX0lOUFVUX1NUUkVBTSkpCi0jZGVmaW5lIFdFQktJ
VF9TT1VQX1JFUVVFU1RfSU5QVVRfU1RSRUFNX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNL
X0NMQVNTX0NBU1QoKGtsYXNzKSwgV0VCS0lUX1RZUEVfU09VUF9SRVFVRVNUX0lOUFVUX1NUUkVB
TSwgV2ViS2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbUNsYXNzKSkKLSNkZWZpbmUgV0VCS0lUX0lT
X1NPVVBfUkVRVUVTVF9JTlBVVF9TVFJFQU1fQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xB
U1NfVFlQRSgoa2xhc3MpLCBXRUJLSVRfVFlQRV9TT1VQX1JFUVVFU1RfSU5QVVRfU1RSRUFNKSkK
LSNkZWZpbmUgV0VCS0lUX1NPVVBfUkVRVUVTVF9JTlBVVF9TVFJFQU1fR0VUX0NMQVNTKG9iaikg
IChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCBXRUJLSVRfVFlQRV9TT1VQX1JFUVVF
U1RfSU5QVVRfU1RSRUFNLCBXZWJLaXRTb3VwUmVxdWVzdElucHV0U3RyZWFtQ2xhc3MpKQotCi10
eXBlZGVmIHN0cnVjdCBfV2ViS2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbSBXZWJLaXRTb3VwUmVx
dWVzdElucHV0U3RyZWFtOwotdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFNvdXBSZXF1ZXN0SW5wdXRT
dHJlYW1DbGFzcyBXZWJLaXRTb3VwUmVxdWVzdElucHV0U3RyZWFtQ2xhc3M7Ci10eXBlZGVmIHN0
cnVjdCBfV2ViS2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbVByaXZhdGUgV2ViS2l0U291cFJlcXVl
c3RJbnB1dFN0cmVhbVByaXZhdGU7Ci0KLXN0cnVjdCBfV2ViS2l0U291cFJlcXVlc3RJbnB1dFN0
cmVhbSB7Ci0gICAgR01lbW9yeUlucHV0U3RyZWFtIHBhcmVudDsKLQotICAgIFdlYktpdFNvdXBS
ZXF1ZXN0SW5wdXRTdHJlYW1Qcml2YXRlKiBwcml2OwotfTsKLQotc3RydWN0IF9XZWJLaXRTb3Vw
UmVxdWVzdElucHV0U3RyZWFtQ2xhc3MgewotICAgIEdNZW1vcnlJbnB1dFN0cmVhbUNsYXNzIHBh
cmVudDsKLX07Ci0KLUdUeXBlIHdlYmtpdF9zb3VwX3JlcXVlc3RfaW5wdXRfc3RyZWFtX2dldF90
eXBlKCk7Ci1HSW5wdXRTdHJlYW0qIHdlYmtpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW1OZXcodWlu
dDY0X3QgY29udGVudExlbmd0aCk7Ci12b2lkIHdlYmtpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW1B
ZGREYXRhKFdlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW0qLCBjb25zdCB2b2lkKiBkYXRhLCBz
aXplX3QgZGF0YUxlbmd0aCk7Ci12b2lkIHdlYmtpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW1EaWRG
YWlsV2l0aEVycm9yKFdlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW0qLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJik7Ci1ib29sIHdlYmtpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW1GaW5p
c2hlZChXZWJLaXRTb3VwUmVxdWVzdElucHV0U3RyZWFtKik7Ci0KLUdfRU5EX0RFQ0xTCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybUdUSy5jbWFrZQppbmRleCAyYmY1ZDBlMWExNi4uM2YzOWFlMzU3YTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybUdUSy5jbWFrZQpAQCAtMzMsMTIgKzMzLDggQEAgbGlzdChBUFBFTkQgV2ViS2l0X1VO
SUZJRURfU09VUkNFX0xJU1RfRklMRVMKICkKIAogbGlzdChBUFBFTkQgV2ViS2l0X01FU1NBR0VT
X0lOX0ZJTEVTCi0gICAgTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3Rv
bVByb3RvY29sTWFuYWdlci5tZXNzYWdlcy5pbgotCiAgICAgVUlQcm9jZXNzL1ZpZXdHZXN0dXJl
Q29udHJvbGxlci5tZXNzYWdlcy5pbgogCi0gICAgVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJv
dG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCi0KICAg
ICBXZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5tZXNzYWdl
cy5pbgogKQogCkBAIC0zNzMsNyArMzY5LDYgQEAgbGlzdChBUFBFTkQgV2ViS2l0X0lOQ0xVREVf
RElSRUNUT1JJRVMKICAgICAiJHtGT1JXQVJESU5HX0hFQURFUlNfRElSfS9KYXZhU2NyaXB0Q29y
ZS8iCiAgICAgIiR7Rk9SV0FSRElOR19IRUFERVJTX0RJUn0vSmF2YVNjcmlwdENvcmUvZ2xpYiIK
ICAgICAiJHtXRUJLSVRfRElSfS9QbHVnaW5Qcm9jZXNzL3VuaXgiCi0gICAgIiR7V0VCS0lUX0RJ
Un0vTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL3NvdXAiCiAgICAgIiR7V0VCS0lUX0RJ
Un0vTmV0d29ya1Byb2Nlc3MvZ2xpYiIKICAgICAiJHtXRUJLSVRfRElSfS9OZXR3b3JrUHJvY2Vz
cy9ndGsiCiAgICAgIiR7V0VCS0lUX0RJUn0vTmV0d29ya1Byb2Nlc3Mvc291cCIKQEAgLTM5Niw3
ICszOTEsNiBAQCBsaXN0KEFQUEVORCBXZWJLaXRfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIk
e1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ2xpYiIKICAgICAiJHtXRUJLSVRfRElSfS9VSVBy
b2Nlc3MvQVBJL2d0ayIKICAgICAiJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcyIKLSAgICAiJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90
b2NvbHMvc291cCIKICAgICAiJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvUGx1Z2lucy9ndGsiCiAg
ICAgIiR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL2dlb2NsdWUiCiAgICAgIiR7V0VCS0lUX0RJUn0v
VUlQcm9jZXNzL2dsaWIiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV1BFLmNt
YWtlIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdQRS5jbWFrZQppbmRleCA1NzBhNDFjYjVkOC4u
ODk3NzQyMWJiMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1XUEUuY21ha2UK
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdQRS5jbWFrZQpAQCAtNzUsMTIgKzc1LDYgQEAg
bGlzdChBUFBFTkQgV2ViS2l0X1VOSUZJRURfU09VUkNFX0xJU1RfRklMRVMKICAgICAiU291cmNl
c1dQRS50eHQiCiApCiAKLWxpc3QoQVBQRU5EIFdlYktpdF9NRVNTQUdFU19JTl9GSUxFUwotICAg
IE5ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFn
ZXIubWVzc2FnZXMuaW4KLQotICAgIFVJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9M
ZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgotKQotCiBsaXN0KEFQ
UEVORCBXZWJLaXRfREVSSVZFRF9TT1VSQ0VTCiAgICAgJHtXZWJLaXRfREVSSVZFRF9TT1VSQ0VT
X0RJUn0vV2ViS2l0UmVzb3VyY2VzR1Jlc291cmNlQnVuZGxlLmMKIApAQCAtMjMyLDcgKzIyNiw2
IEBAIGxpc3QoQVBQRU5EIFdlYktpdF9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7Rk9SV0FS
RElOR19IRUFERVJTX1dQRV9ET01fRElSfSIKICAgICAiJHtERVJJVkVEX1NPVVJDRVNfRElSfSIK
ICAgICAiJHtERVJJVkVEX1NPVVJDRVNfV1BFX0FQSV9ESVJ9IgotICAgICIke1dFQktJVF9ESVJ9
L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9zb3VwIgogICAgICIke1dFQktJVF9ESVJ9
L05ldHdvcmtQcm9jZXNzL2dsaWIiCiAgICAgIiR7V0VCS0lUX0RJUn0vTmV0d29ya1Byb2Nlc3Mv
c291cCIKICAgICAiJHtXRUJLSVRfRElSfS9OZXR3b3JrUHJvY2Vzcy91bml4IgpAQCAtMjUyLDcg
KzI0NSw2IEBAIGxpc3QoQVBQRU5EIFdlYktpdF9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7
V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS9nbGliIgogICAgICIke1dFQktJVF9ESVJ9L1VJUHJv
Y2Vzcy9BUEkvd3BlIgogICAgICIke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdy
YXBoaWNzIgotICAgICIke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3Rv
Y29scy9zb3VwIgogICAgICIke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9nZW9jbHVlIgogICAgICIk
e1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9nc3RyZWFtZXIiCiAgICAgIiR7V0VCS0lUX0RJUn0vVUlQ
cm9jZXNzL2xpbnV4IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dCBi
L1NvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQKaW5kZXggNTVkMThjMjZkZjcuLjFlNGU0MmNk
ZGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0CisrKyBiL1NvdXJj
ZS9XZWJLaXQvU291cmNlc0dUSy50eHQKQEAgLTI2LDEwICsyNiw2IEBAIE5ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5jcHAKIAogTmV0
d29ya1Byb2Nlc3MvQ29va2llcy9zb3VwL1dlYkNvb2tpZU1hbmFnZXJTb3VwLmNwcAogCi1OZXR3
b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmNw
cAotCi1OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvc291cC9MZWdhY3lDdXN0b21Qcm90
b2NvbE1hbmFnZXJTb3VwLmNwcAotCiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVE
YXRhU291cC5jcHAKIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbFNv
dXAuY3BwCiAKQEAgLTQxLDcgKzM3LDYgQEAgTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJv
Y2Vzc01haW5Tb3VwLmNwcAogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAu
Y3BwCiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5jcHAKIE5ldHdvcmtQ
cm9jZXNzL3NvdXAvUmVtb3RlTmV0d29ya2luZ0NvbnRleHRTb3VwLmNwcAotTmV0d29ya1Byb2Nl
c3Mvc291cC9XZWJLaXRTb3VwUmVxdWVzdElucHV0U3RyZWFtLmNwcAogTmV0d29ya1Byb2Nlc3Mv
c291cC9XZWJTb2NrZXRUYXNrU291cC5jcHAKIAogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL0xpYldl
YlJUQ1NvY2tldENsaWVudC5jcHAKQEAgLTEzNCw3ICsxMjksNiBAQCBVSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0QmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0Q29udGV4dE1lbnVDbGllbnQuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdENvb2tpZU1hbmFnZXIuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdENyZWRlbnRpYWwuY3BwIEBuby11bmlmeQotVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0RGV2aWNlSW5mb1Blcm1pc3Npb25SZXF1ZXN0LmNwcCBAbm8tdW5pZnkK
IFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXREb3dubG9hZC5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0RG93bmxvYWRDbGllbnQuY3BwIEBuby11bmlmeQpAQCAtMjE1LDgg
KzIwOSw2IEBAIFVJUHJvY2Vzcy9nZW9jbHVlL0dlb2NsdWVHZW9sb2NhdGlvblByb3ZpZGVyLmNw
cAogVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvUHJvY2Vzc0xhdW5jaGVyR0xpYi5jcHAgQG5vLXVu
aWZ5CiBVSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9CdWJibGV3cmFwTGF1bmNoZXIuY3BwIEBuby11
bmlmeQogCi1VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJv
dG9jb2xNYW5hZ2VyUHJveHkuY3BwCi0KIFVJUHJvY2Vzcy9saW51eC9NZW1vcnlQcmVzc3VyZU1v
bml0b3IuY3BwCiAKIFVJUHJvY2Vzcy9QbHVnaW5zL2d0ay9QbHVnaW5JbmZvQ2FjaGUuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNXUEUudHh0IGIvU291cmNlL1dlYktpdC9T
b3VyY2VzV1BFLnR4dAppbmRleCAyNDg1YmI2MWE5ZC4uYTIyZTRmMTA5OTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2Vz
V1BFLnR4dApAQCAtMjYsMTAgKzI2LDYgQEAgTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5LmNwcAogCiBOZXR3b3JrUHJvY2Vzcy9Db29r
aWVzL3NvdXAvV2ViQ29va2llTWFuYWdlclNvdXAuY3BwCiAKLU5ldHdvcmtQcm9jZXNzL0N1c3Rv
bVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuY3BwCi0KLU5ldHdvcmtQcm9j
ZXNzL0N1c3RvbVByb3RvY29scy9zb3VwL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclNvdXAu
Y3BwCi0KIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGFTb3VwLmNwcAogTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsU291cC5jcHAKIApAQCAtNDEs
NyArMzcsNiBAQCBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzTWFpblNvdXAuY3Bw
CiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKIE5ldHdvcmtQcm9j
ZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmNwcAogTmV0d29ya1Byb2Nlc3Mvc291cC9SZW1v
dGVOZXR3b3JraW5nQ29udGV4dFNvdXAuY3BwCi1OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYktpdFNv
dXBSZXF1ZXN0SW5wdXRTdHJlYW0uY3BwCiBOZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRh
c2tTb3VwLmNwcAogCiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDU29ja2V0Q2xpZW50
LmNwcApAQCAtMTIzLDcgKzExOCw2IEBAIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRCYWNrRm9y
d2FyZExpc3RJdGVtLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDb250
ZXh0TWVudUNsaWVudC5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q29v
a2llTWFuYWdlci5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q3JlZGVu
dGlhbC5jcHAgQG5vLXVuaWZ5Ci1VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyQ2xpZW50LmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRE
ZXZpY2VJbmZvUGVybWlzc2lvblJlcXVlc3QuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdERvd25sb2FkLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXREb3dubG9hZENsaWVudC5jcHAgQG5vLXVuaWZ5CkBAIC0xOTcsOCArMTkxLDYgQEAgVUlQcm9j
ZXNzL2dsaWIvV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0xh
dW5jaGVyL2dsaWIvUHJvY2Vzc0xhdW5jaGVyR0xpYi5jcHAKIFVJUHJvY2Vzcy9MYXVuY2hlci9n
bGliL0J1YmJsZXdyYXBMYXVuY2hlci5jcHAKIAotVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJv
dG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmNwcAotCiBVSVByb2Nlc3Mv
UGx1Z2lucy91bml4L1BsdWdpbkluZm9TdG9yZVVuaXguY3BwCiBVSVByb2Nlc3MvUGx1Z2lucy91
bml4L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDdXN0b21Qcm90b2Nv
bE1hbmFnZXJDbGllbnQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMzczYjI5
NDU3MS4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDYwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgSWdhbGlhIFMuTC4KLSAqCi0g
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYktpdEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVu
dC5oIgotCi0jaW5jbHVkZSAiQVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmgiCi0jaW5j
bHVkZSAiTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaCIKLSNpbmNsdWRlICJXZWJL
aXRXZWJDb250ZXh0UHJpdmF0ZS5oIgotI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCi0KLXVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLQotY2xhc3Mg
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50IGZpbmFsIDogcHVibGljIEFQSTo6Q3VzdG9tUHJv
dG9jb2xNYW5hZ2VyQ2xpZW50IHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBDdXN0b21Qcm90b2Nv
bE1hbmFnZXJDbGllbnQoV2ViS2l0V2ViQ29udGV4dCogd2ViQ29udGV4dCkKLSAgICAgICAgOiBt
X3dlYkNvbnRleHQod2ViQ29udGV4dCkKLSAgICB7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIHZv
aWQgc3RhcnRMb2FkaW5nKExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5JiBtYW5hZ2Vy
LCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QpIG92ZXJyaWRlCi0gICAgewotICAgICAgICB3ZWJraXRXZWJDb250ZXh0U3RhcnRMb2FkaW5n
Q3VzdG9tUHJvdG9jb2wobV93ZWJDb250ZXh0LCBjdXN0b21Qcm90b2NvbElELCByZXF1ZXN0LCBt
YW5hZ2VyKTsKLSAgICB9Ci0KLSAgICB2b2lkIHN0b3BMb2FkaW5nKExlZ2FjeUN1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5JiwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCkgb3ZlcnJpZGUKLSAg
ICB7Ci0gICAgICAgIHdlYmtpdFdlYkNvbnRleHRTdG9wTG9hZGluZ0N1c3RvbVByb3RvY29sKG1f
d2ViQ29udGV4dCwgY3VzdG9tUHJvdG9jb2xJRCk7Ci0gICAgfQotCi0gICAgdm9pZCBpbnZhbGlk
YXRlKExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5JiBtYW5hZ2VyKSBvdmVycmlkZQot
ICAgIHsKLSAgICAgICAgd2Via2l0V2ViQ29udGV4dEludmFsaWRhdGVDdXN0b21Qcm90b2NvbFJl
cXVlc3RzKG1fd2ViQ29udGV4dCwgbWFuYWdlcik7Ci0gICAgfQotCi0gICAgV2ViS2l0V2ViQ29u
dGV4dCogbV93ZWJDb250ZXh0OwotfTsKLQotdm9pZCBhdHRhY2hDdXN0b21Qcm90b2NvbE1hbmFn
ZXJDbGllbnRUb0NvbnRleHQoV2ViS2l0V2ViQ29udGV4dCogd2ViQ29udGV4dCkKLXsKLSAgICB3
ZWJraXRXZWJDb250ZXh0R2V0UHJvY2Vzc1Bvb2wod2ViQ29udGV4dCkuc2V0TGVnYWN5Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyQ2xpZW50KG1ha2VVbmlxdWU8Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xp
ZW50Pih3ZWJDb250ZXh0KSk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVu
dC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOWM0YzE3Y2MxZC4uMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q3VzdG9tUHJv
dG9jb2xNYW5hZ2VyQ2xpZW50LmgKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE2IElnYWxpYSBTLkwuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAq
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0g
KiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0g
KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVk
ZSAiV2ViS2l0V2ViQ29udGV4dC5oIgotCi12b2lkIGF0dGFjaEN1c3RvbVByb3RvY29sTWFuYWdl
ckNsaWVudFRvQ29udGV4dChXZWJLaXRXZWJDb250ZXh0Kik7Ci0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5j
cHAKaW5kZXggNDQyNzk0MGFjMGIuLjExZTVmYzIwMzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNw
cApAQCAtNTcsMTAgKzU3LDkgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBzdGF0aWMgY29u
c3QgdW5zaWduZWQgaW50IGdSZWFkQnVmZmVyU2l6ZSA9IDgxOTI7CiAKIHN0cnVjdCBfV2ViS2l0
VVJJU2NoZW1lUmVxdWVzdFByaXZhdGUgewotICAgIFdlYktpdFdlYkNvbnRleHQqIHdlYkNvbnRl
eHQ7Ci0gICAgTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkqIG1hbmFnZXI7CisgICAg
UmVmUHRyPFdlYlVSTFNjaGVtZVRhc2s+IHRhc2s7CisKICAgICBSZWZQdHI8V2ViUGFnZVByb3h5
PiBpbml0aWF0aW5nUGFnZTsKLSAgICB1aW50NjRfdCByZXF1ZXN0SUQ7CiAgICAgQ1N0cmluZyB1
cmk7CiAgICAgR1VuaXF1ZVB0cjxTb3VwVVJJPiBzb3VwVVJJOwogCkBAIC03OCwxOCArNzcsMTEg
QEAgc3RhdGljIHZvaWQgd2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9jbGFzc19pbml0KFdlYktp
dFVSSVNjaGVtZVJlcXVlc3RDbGFzcyopCiB7CiB9CiAKLVdlYktpdFVSSVNjaGVtZVJlcXVlc3Qq
IHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RDcmVhdGUodWludDY0X3QgcmVxdWVzdElELCBXZWJLaXRX
ZWJDb250ZXh0KiB3ZWJDb250ZXh0LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVx
dWVzdCwgTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkmIG1hbmFnZXIpCitXZWJLaXRV
UklTY2hlbWVSZXF1ZXN0KiB3ZWJraXRVUklTY2hlbWVSZXF1ZXN0Q3JlYXRlKFdlYlBhZ2VQcm94
eSYgcGFnZSwgV2ViVVJMU2NoZW1lVGFzayYgdGFzaykKIHsKICAgICBXZWJLaXRVUklTY2hlbWVS
ZXF1ZXN0KiByZXF1ZXN0ID0gV0VCS0lUX1VSSV9TQ0hFTUVfUkVRVUVTVChnX29iamVjdF9uZXco
V0VCS0lUX1RZUEVfVVJJX1NDSEVNRV9SRVFVRVNULCBudWxscHRyKSk7Ci0gICAgcmVxdWVzdC0+
cHJpdi0+d2ViQ29udGV4dCA9IHdlYkNvbnRleHQ7Ci0gICAgcmVxdWVzdC0+cHJpdi0+bWFuYWdl
ciA9ICZtYW5hZ2VyOwotICAgIHJlcXVlc3QtPnByaXYtPnVyaSA9IHJlc291cmNlUmVxdWVzdC51
cmwoKS5zdHJpbmcoKS51dGY4KCk7Ci0gICAgcmVxdWVzdC0+cHJpdi0+cmVxdWVzdElEID0gcmVx
dWVzdElEOwotCi0gICAgQVNTRVJUKHJlc291cmNlUmVxdWVzdC5pbml0aWF0aW5nUGFnZUlEKCkp
OwotICAgIHJlcXVlc3QtPnByaXYtPmluaXRpYXRpbmdQYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3
ZWJQYWdlKG1ha2VPYmplY3RJZGVudGlmaWVyPFdlYlBhZ2VQcm94eUlkZW50aWZpZXJUeXBlPigq
cmVzb3VyY2VSZXF1ZXN0LmluaXRpYXRpbmdQYWdlSUQoKSkpOwotICAgIEFTU0VSVChyZXF1ZXN0
LT5wcml2LT5pbml0aWF0aW5nUGFnZSk7Ci0KKyAgICByZXF1ZXN0LT5wcml2LT50YXNrID0gJnRh
c2s7CisgICAgcmVxdWVzdC0+cHJpdi0+aW5pdGlhdGluZ1BhZ2UgPSAmcGFnZTsKICAgICByZXR1
cm4gcmVxdWVzdDsKIH0KIApAQCAtOTgsMTcgKzkwLDYgQEAgdm9pZCB3ZWJraXRVUklTY2hlbWVS
ZXF1ZXN0Q2FuY2VsKFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHJlcXVlc3QpCiAgICAgZ19jYW5j
ZWxsYWJsZV9jYW5jZWwocmVxdWVzdC0+cHJpdi0+Y2FuY2VsbGFibGUuZ2V0KCkpOwogfQogCi1M
ZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSogd2Via2l0VVJJU2NoZW1lUmVxdWVzdEdl
dE1hbmFnZXIoV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCogcmVxdWVzdCkKLXsKLSAgICByZXR1cm4g
cmVxdWVzdC0+cHJpdi0+bWFuYWdlcjsKLX0KLQotdm9pZCB3ZWJraXRVUklTY2hlbWVSZXF1ZXN0
SW52YWxpZGF0ZShXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiByZXF1ZXN0KQotewotICAgIHJlcXVl
c3QtPnByaXYtPm1hbmFnZXIgPSBudWxscHRyOwotICAgIHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RD
YW5jZWwocmVxdWVzdCk7Ci19Ci0KIC8qKgogICogd2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9n
ZXRfc2NoZW1lOgogICogQHJlcXVlc3Q6IGEgI1dlYktpdFVSSVNjaGVtZVJlcXVlc3QKQEAgLTEx
OSwxMCArMTAwLDExIEBAIHZvaWQgd2Via2l0VVJJU2NoZW1lUmVxdWVzdEludmFsaWRhdGUoV2Vi
S2l0VVJJU2NoZW1lUmVxdWVzdCogcmVxdWVzdCkKICAqLwogY29uc3QgY2hhciogd2Via2l0X3Vy
aV9zY2hlbWVfcmVxdWVzdF9nZXRfc2NoZW1lKFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHJlcXVl
c3QpCiB7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1VSSV9TQ0hFTUVfUkVR
VUVTVChyZXF1ZXN0KSwgMCk7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1VS
SV9TQ0hFTUVfUkVRVUVTVChyZXF1ZXN0KSwgbnVsbHB0cik7CiAKICAgICBpZiAoIXJlcXVlc3Qt
PnByaXYtPnNvdXBVUkkpCi0gICAgICAgIHJlcXVlc3QtPnByaXYtPnNvdXBVUkkucmVzZXQoc291
cF91cmlfbmV3KHJlcXVlc3QtPnByaXYtPnVyaS5kYXRhKCkpKTsKKyAgICAgICAgcmVxdWVzdC0+
cHJpdi0+c291cFVSSSA9IHVybFRvU291cFVSSShyZXF1ZXN0LT5wcml2LT50YXNrLT5yZXF1ZXN0
KCkudXJsKCkpOworCiAgICAgcmV0dXJuIHJlcXVlc3QtPnByaXYtPnNvdXBVUkktPnNjaGVtZTsK
IH0KIApAQCAtMTM2LDcgKzExOCwxMCBAQCBjb25zdCBjaGFyKiB3ZWJraXRfdXJpX3NjaGVtZV9y
ZXF1ZXN0X2dldF9zY2hlbWUoV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCogcmVxdWVzdAogICovCiBj
b25zdCBjaGFyKiB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2dldF91cmkoV2ViS2l0VVJJU2No
ZW1lUmVxdWVzdCogcmVxdWVzdCkKIHsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRf
SVNfVVJJX1NDSEVNRV9SRVFVRVNUKHJlcXVlc3QpLCAwKTsKKyAgICBnX3JldHVybl92YWxfaWZf
ZmFpbChXRUJLSVRfSVNfVVJJX1NDSEVNRV9SRVFVRVNUKHJlcXVlc3QpLCBudWxscHRyKTsKKwor
ICAgIGlmIChyZXF1ZXN0LT5wcml2LT51cmkuaXNOdWxsKCkpCisgICAgICAgIHJlcXVlc3QtPnBy
aXYtPnVyaSA9IHJlcXVlc3QtPnByaXYtPnRhc2stPnJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51
dGY4KCk7CiAKICAgICByZXR1cm4gcmVxdWVzdC0+cHJpdi0+dXJpLmRhdGEoKTsKIH0KQEAgLTE1
MSwxMCArMTM2LDExIEBAIGNvbnN0IGNoYXIqIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZ2V0
X3VyaShXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiByZXF1ZXN0KQogICovCiBjb25zdCBjaGFyKiB3
ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2dldF9wYXRoKFdlYktpdFVSSVNjaGVtZVJlcXVlc3Qq
IHJlcXVlc3QpCiB7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1VSSV9TQ0hF
TUVfUkVRVUVTVChyZXF1ZXN0KSwgMCk7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lU
X0lTX1VSSV9TQ0hFTUVfUkVRVUVTVChyZXF1ZXN0KSwgbnVsbHB0cik7CiAKICAgICBpZiAoIXJl
cXVlc3QtPnByaXYtPnNvdXBVUkkpCi0gICAgICAgIHJlcXVlc3QtPnByaXYtPnNvdXBVUkkucmVz
ZXQoc291cF91cmlfbmV3KHJlcXVlc3QtPnByaXYtPnVyaS5kYXRhKCkpKTsKKyAgICAgICAgcmVx
dWVzdC0+cHJpdi0+c291cFVSSSA9IHVybFRvU291cFVSSShyZXF1ZXN0LT5wcml2LT50YXNrLT5y
ZXF1ZXN0KCkudXJsKCkpOworCiAgICAgcmV0dXJuIHJlcXVlc3QtPnByaXYtPnNvdXBVUkktPnBh
dGg7CiB9CiAKQEAgLTE2OCw1MCArMTU0LDM4IEBAIGNvbnN0IGNoYXIqIHdlYmtpdF91cmlfc2No
ZW1lX3JlcXVlc3RfZ2V0X3BhdGgoV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCogcmVxdWVzdCkKICAq
LwogV2ViS2l0V2ViVmlldyogd2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9nZXRfd2ViX3ZpZXco
V2ViS2l0VVJJU2NoZW1lUmVxdWVzdCogcmVxdWVzdCkKIHsKLSAgICBnX3JldHVybl92YWxfaWZf
ZmFpbChXRUJLSVRfSVNfVVJJX1NDSEVNRV9SRVFVRVNUKHJlcXVlc3QpLCAwKTsKKyAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfVVJJX1NDSEVNRV9SRVFVRVNUKHJlcXVlc3QpLCBu
dWxscHRyKTsKIAotICAgIHJldHVybiB3ZWJraXRXZWJDb250ZXh0R2V0V2ViVmlld0ZvclBhZ2Uo
cmVxdWVzdC0+cHJpdi0+d2ViQ29udGV4dCwgcmVxdWVzdC0+cHJpdi0+aW5pdGlhdGluZ1BhZ2Uu
Z2V0KCkpOworICAgIHJldHVybiBXRUJLSVRfV0VCX1ZJRVcocmVxdWVzdC0+cHJpdi0+aW5pdGlh
dGluZ1BhZ2UtPnZpZXdXaWRnZXQoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdFVSSVNjaGVt
ZVJlcXVlc3RSZWFkQ2FsbGJhY2soR0lucHV0U3RyZWFtKiBpbnB1dFN0cmVhbSwgR0FzeW5jUmVz
dWx0KiByZXN1bHQsIFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHNjaGVtZVJlcXVlc3QpCiB7CiAg
ICAgR1JlZlB0cjxXZWJLaXRVUklTY2hlbWVSZXF1ZXN0PiByZXF1ZXN0ID0gYWRvcHRHUmVmKHNj
aGVtZVJlcXVlc3QpOwotICAgIFdlYktpdFVSSVNjaGVtZVJlcXVlc3RQcml2YXRlKiBwcml2ID0g
cmVxdWVzdC0+cHJpdjsKICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgZ3Nz
aXplIGJ5dGVzUmVhZCA9IGdfaW5wdXRfc3RyZWFtX3JlYWRfZmluaXNoKGlucHV0U3RyZWFtLCBy
ZXN1bHQsICZlcnJvci5vdXRQdHIoKSk7Ci0gICAgaWYgKCFwcml2LT5tYW5hZ2VyKSB7Ci0gICAg
ICAgIHdlYmtpdFdlYkNvbnRleHREaWRGaW5pc2hMb2FkaW5nQ3VzdG9tUHJvdG9jb2wocHJpdi0+
d2ViQ29udGV4dCwgcHJpdi0+cmVxdWVzdElEKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQog
ICAgIGlmIChieXRlc1JlYWQgPT0gLTEpIHsKICAgICAgICAgd2Via2l0X3VyaV9zY2hlbWVfcmVx
dWVzdF9maW5pc2hfZXJyb3IocmVxdWVzdC5nZXQoKSwgZXJyb3IuZ2V0KCkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCisgICAgV2ViS2l0VVJJU2NoZW1lUmVxdWVzdFByaXZhdGUqIHByaXYg
PSByZXF1ZXN0LT5wcml2OwogICAgIC8vIE5lZWQgdG8gY2hlY2sgdGhlIHN0cmVhbSBiZWZvcmUg
cHJvY2VlZGluZyBhcyBpdCBjYW4gYmUgY2FuY2VsbGVkIGlmIGZpbmlzaF9lcnJvcgogICAgIC8v
IHdhcyBwcmV2aW91c2x5IGNhbGwsIHdoaWNoIHdvbid0IGJlIGRldGVjdGVkIGJ5IGdfaW5wdXRf
c3RyZWFtX3JlYWRfZmluaXNoKCkuCi0gICAgaWYgKCFyZXF1ZXN0LT5wcml2LT5zdHJlYW0pCisg
ICAgaWYgKCFwcml2LT5zdHJlYW0pCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gd2ViRGF0
YSA9IElQQzo6RGF0YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihw
cml2LT5yZWFkQnVmZmVyKSwgYnl0ZXNSZWFkKTsKICAgICBpZiAoIXByaXYtPmJ5dGVzUmVhZCkg
ewotICAgICAgICAvLyBGaXJzdCBjaHVuayByZWFkLiBJbiBjYXNlIG9mIGVtcHR5IHJlcGx5IGFu
IGVtcHR5IEFQSTo6RGF0YSBpcyBzZW50IHRvIHRoZSBuZXR3b3JraW5nIHByb2Nlc3MuCi0gICAg
ICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UoVVJMKFVSTCgpLCBTdHJpbmc6OmZyb21VVEY4
KHByaXYtPnVyaSkpLCBTdHJpbmc6OmZyb21VVEY4KHByaXYtPm1pbWVUeXBlLmRhdGEoKSksCi0g
ICAgICAgICAgICBwcml2LT5zdHJlYW1MZW5ndGgsIGVtcHR5U3RyaW5nKCkpOwotICAgICAgICBw
cml2LT5tYW5hZ2VyLT5kaWRSZWNlaXZlUmVzcG9uc2UocHJpdi0+cmVxdWVzdElELCByZXNwb25z
ZSwgMCk7Ci0gICAgICAgIHByaXYtPm1hbmFnZXItPmRpZExvYWREYXRhKHByaXYtPnJlcXVlc3RJ
RCwgd2ViRGF0YSk7Ci0gICAgfSBlbHNlIGlmIChieXRlc1JlYWQgfHwgKCFieXRlc1JlYWQgJiYg
IXByaXYtPnN0cmVhbUxlbmd0aCkpIHsKLSAgICAgICAgLy8gU3Vic2VxdWVudCBjaHVuayByZWFk
LiBXZSBvbmx5IHNlbmQgYW4gZW1wdHkgQVBJOjpEYXRhIHRvIHRoZSBuZXR3b3JraW5nIHByb2Nl
c3Mgd2hlbiBzdHJlYW0gbGVuZ3RoIGlzIHVua25vd24uCi0gICAgICAgIHByaXYtPm1hbmFnZXIt
PmRpZExvYWREYXRhKHByaXYtPnJlcXVlc3RJRCwgd2ViRGF0YSk7CisgICAgICAgIFJlc291cmNl
UmVzcG9uc2UgcmVzcG9uc2UocHJpdi0+dGFzay0+cmVxdWVzdCgpLnVybCgpLCBTdHJpbmc6OmZy
b21VVEY4KHByaXYtPm1pbWVUeXBlLmRhdGEoKSksIHByaXYtPnN0cmVhbUxlbmd0aCwgZW1wdHlT
dHJpbmcoKSk7CisgICAgICAgIHByaXYtPnRhc2stPmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25z
ZSk7CiAgICAgfQogCiAgICAgaWYgKCFieXRlc1JlYWQpIHsKLSAgICAgICAgcHJpdi0+bWFuYWdl
ci0+ZGlkRmluaXNoTG9hZGluZyhwcml2LT5yZXF1ZXN0SUQpOwotICAgICAgICB3ZWJraXRXZWJD
b250ZXh0RGlkRmluaXNoTG9hZGluZ0N1c3RvbVByb3RvY29sKHByaXYtPndlYkNvbnRleHQsIHBy
aXYtPnJlcXVlc3RJRCk7CisgICAgICAgIHByaXYtPnRhc2stPmRpZENvbXBsZXRlKHsgfSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBwcml2LT50YXNrLT5kaWRSZWNlaXZlRGF0YShT
aGFyZWRCdWZmZXI6OmNyZWF0ZShwcml2LT5yZWFkQnVmZmVyLCBieXRlc1JlYWQpKTsKICAgICBw
cml2LT5ieXRlc1JlYWQgKz0gYnl0ZXNSZWFkOwogICAgIGdfaW5wdXRfc3RyZWFtX3JlYWRfYXN5
bmMoaW5wdXRTdHJlYW0sIHByaXYtPnJlYWRCdWZmZXIsIGdSZWFkQnVmZmVyU2l6ZSwgUnVuTG9v
cFNvdXJjZVByaW9yaXR5OjpBc3luY0lPTmV0d29yaywgcHJpdi0+Y2FuY2VsbGFibGUuZ2V0KCks
CiAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8R0FzeW5jUmVhZHlDYWxsYmFjaz4od2Via2l0VVJJ
U2NoZW1lUmVxdWVzdFJlYWRDYWxsYmFjayksIGdfb2JqZWN0X3JlZihyZXF1ZXN0LmdldCgpKSk7
CkBAIC0yNTcsMTEgKzIzMSw3IEBAIHZvaWQgd2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9maW5p
c2hfZXJyb3IoV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCogcmVxdWVzdCwgR0VyCiAgICAgZ19yZXR1
cm5faWZfZmFpbChlcnJvcik7CiAKICAgICBXZWJLaXRVUklTY2hlbWVSZXF1ZXN0UHJpdmF0ZSog
cHJpdiA9IHJlcXVlc3QtPnByaXY7Ci0gICAgaWYgKCF3ZWJraXRXZWJDb250ZXh0SXNMb2FkaW5n
Q3VzdG9tUHJvdG9jb2wocHJpdi0+d2ViQ29udGV4dCwgcHJpdi0+cmVxdWVzdElEKSkKLSAgICAg
ICAgcmV0dXJuOwotCiAgICAgcHJpdi0+c3RyZWFtID0gbnVsbHB0cjsKLSAgICBSZXNvdXJjZUVy
cm9yIHJlc291cmNlRXJyb3IoZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFpbiksIHRvV2Vi
Q29yZUVycm9yKGVycm9yLT5jb2RlKSwgc291cFVSSVRvVVJMKHByaXYtPnNvdXBVUkkuZ2V0KCkp
LCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSk7Ci0gICAgcHJpdi0+bWFuYWdlci0+
ZGlkRmFpbFdpdGhFcnJvcihwcml2LT5yZXF1ZXN0SUQsIHJlc291cmNlRXJyb3IpOwotICAgIHdl
YmtpdFdlYkNvbnRleHREaWRGaW5pc2hMb2FkaW5nQ3VzdG9tUHJvdG9jb2wocHJpdi0+d2ViQ29u
dGV4dCwgcHJpdi0+cmVxdWVzdElEKTsKKyAgICBSZXNvdXJjZUVycm9yIHJlc291cmNlRXJyb3Io
Z19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFpbiksIHRvV2ViQ29yZUVycm9yKGVycm9yLT5j
b2RlKSwgcHJpdi0+dGFzay0+cmVxdWVzdCgpLnVybCgpLCBTdHJpbmc6OmZyb21VVEY4KGVycm9y
LT5tZXNzYWdlKSk7CisgICAgcHJpdi0+dGFzay0+ZGlkQ29tcGxldGUocmVzb3VyY2VFcnJvcik7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRV
UklTY2hlbWVSZXF1ZXN0UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdFByaXZhdGUuaAppbmRleCBiYzJkZjI4YmFmNi4uMWNm
MzE2MDc0OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFVSSVNjaGVtZVJlcXVlc3RQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdFByaXZhdGUuaApAQCAtMTksMTIgKzE5
LDExIEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiTGVnYWN5Q3VzdG9tUHJvdG9jb2xN
YW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJXZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmgiCiAjaW5j
bHVkZSAiV2ViS2l0V2ViQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2lu
Y2x1ZGUgIldlYlVSTFNjaGVtZVRhc2suaCIKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVx
dWVzdC5oPgogCi1XZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiB3ZWJraXRVUklTY2hlbWVSZXF1ZXN0
Q3JlYXRlKHVpbnQ2NF90IHJlcXVlc3RJRCwgV2ViS2l0V2ViQ29udGV4dCosIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYktpdDo6TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
UHJveHkmKTsKK1dlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RD
cmVhdGUoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2smKTsK
IHZvaWQgd2Via2l0VVJJU2NoZW1lUmVxdWVzdENhbmNlbChXZWJLaXRVUklTY2hlbWVSZXF1ZXN0
Kik7Ci1XZWJLaXQ6OkxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5KiB3ZWJraXRVUklT
Y2hlbWVSZXF1ZXN0R2V0TWFuYWdlcihXZWJLaXRVUklTY2hlbWVSZXF1ZXN0Kik7Ci12b2lkIHdl
YmtpdFVSSVNjaGVtZVJlcXVlc3RJbnZhbGlkYXRlKFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNv
bnRleHQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29u
dGV4dC5jcHAKaW5kZXggNzg0OWI0YWQzYzQuLjQ1MjkwYjM0ZjA2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcApAQCAt
MjEsNyArMjEsNiBAQAogI2luY2x1ZGUgIldlYktpdFdlYkNvbnRleHQuaCIKIAogI2luY2x1ZGUg
IkFQSUF1dG9tYXRpb25DbGllbnQuaCIKLSNpbmNsdWRlICJBUElDdXN0b21Qcm90b2NvbE1hbmFn
ZXJDbGllbnQuaCIKICNpbmNsdWRlICJBUElEb3dubG9hZENsaWVudC5oIgogI2luY2x1ZGUgIkFQ
SUluamVjdGVkQnVuZGxlQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJUGFnZUNvbmZpZ3VyYXRpb24u
aCIKQEAgLTMzLDcgKzMyLDYgQEAKICNpbmNsdWRlICJXZWJBdXRvbWF0aW9uU2Vzc2lvbi5oIgog
I2luY2x1ZGUgIldlYkNlcnRpZmljYXRlSW5mby5oIgogI2luY2x1ZGUgIldlYktpdEF1dG9tYXRp
b25TZXNzaW9uUHJpdmF0ZS5oIgotI2luY2x1ZGUgIldlYktpdEN1c3RvbVByb3RvY29sTWFuYWdl
ckNsaWVudC5oIgogI2luY2x1ZGUgIldlYktpdERvd25sb2FkQ2xpZW50LmgiCiAjaW5jbHVkZSAi
V2ViS2l0RG93bmxvYWRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0RmF2aWNvbkRhdGFiYXNl
UHJpdmF0ZS5oIgpAQCAtNTMsNiArNTEsNyBAQAogI2luY2x1ZGUgIldlYktpdFdlYlZpZXdQcml2
YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyUHJpdmF0ZS5oIgogI2lu
Y2x1ZGUgIldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oIgorI2luY2x1ZGUgIldlYlVSTFNj
aGVtZUhhbmRsZXIuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVR5cGUuaCIKICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9SZW1vdGVJbnNwZWN0b3IuaD4KICNpbmNsdWRlIDxnbGliL2dpMThuLWxp
Yi5oPgpAQCAtMTI4LDEzICsxMjcsMTEgQEAgZW51bSB7CiAgICAgTEFTVF9TSUdOQUwKIH07CiAK
LWNsYXNzIFdlYktpdFVSSVNjaGVtZUhhbmRsZXI6IHB1YmxpYyBSZWZDb3VudGVkPFdlYktpdFVS
SVNjaGVtZUhhbmRsZXI+IHsKK2NsYXNzIFdlYktpdFVSSVNjaGVtZUhhbmRsZXIgZmluYWwgOiBw
dWJsaWMgV2ViVVJMU2NoZW1lSGFuZGxlciB7CiBwdWJsaWM6Ci0gICAgV2ViS2l0VVJJU2NoZW1l
SGFuZGxlcihXZWJLaXRVUklTY2hlbWVSZXF1ZXN0Q2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQqIHVz
ZXJEYXRhLCBHRGVzdHJveU5vdGlmeSBkZXN0cm95Tm90aWZ5KQotICAgICAgICA6IG1fY2FsbGJh
Y2soY2FsbGJhY2spCi0gICAgICAgICwgbV91c2VyRGF0YSh1c2VyRGF0YSkKLSAgICAgICAgLCBt
X2Rlc3Ryb3lOb3RpZnkoZGVzdHJveU5vdGlmeSkKKyAgICBzdGF0aWMgUmVmPFdlYktpdFVSSVNj
aGVtZUhhbmRsZXI+IGNyZWF0ZShXZWJLaXRVUklTY2hlbWVSZXF1ZXN0Q2FsbGJhY2sgY2FsbGJh
Y2ssIHZvaWQqIHVzZXJEYXRhLCBHRGVzdHJveU5vdGlmeSBkZXN0cm95Tm90aWZ5KQogICAgIHsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViS2l0VVJJU2NoZW1lSGFuZGxlcihjYWxs
YmFjaywgdXNlckRhdGEsIGRlc3Ryb3lOb3RpZnkpKTsKICAgICB9CiAKICAgICB+V2ViS2l0VVJJ
U2NoZW1lSGFuZGxlcigpCkBAIC0xNDMsMjIgKzE0MCw0NCBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICBtX2Rlc3Ryb3lOb3RpZnkobV91c2VyRGF0YSk7CiAgICAgfQogCi0gICAgYm9vbCBoYXNDYWxs
YmFjaygpCitwcml2YXRlOgorICAgIFdlYktpdFVSSVNjaGVtZUhhbmRsZXIoV2ViS2l0VVJJU2No
ZW1lUmVxdWVzdENhbGxiYWNrIGNhbGxiYWNrLCB2b2lkKiB1c2VyRGF0YSwgR0Rlc3Ryb3lOb3Rp
ZnkgZGVzdHJveU5vdGlmeSkKKyAgICAgICAgOiBtX2NhbGxiYWNrKGNhbGxiYWNrKQorICAgICAg
ICAsIG1fdXNlckRhdGEodXNlckRhdGEpCisgICAgICAgICwgbV9kZXN0cm95Tm90aWZ5KGRlc3Ry
b3lOb3RpZnkpCisgICAgeworICAgIH0KKworICAgIHZvaWQgcGxhdGZvcm1TdGFydFRhc2soV2Vi
UGFnZVByb3h5JiBwYWdlLCBXZWJVUkxTY2hlbWVUYXNrJiB0YXNrKSBmaW5hbAogICAgIHsKLSAg
ICAgICAgcmV0dXJuIG1fY2FsbGJhY2s7CisgICAgICAgIGlmICghbV9jYWxsYmFjaykKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICBHUmVmUHRyPFdlYktpdFVSSVNjaGVtZVJlcXVlc3Q+
IHJlcXVlc3QgPSBhZG9wdEdSZWYod2Via2l0VVJJU2NoZW1lUmVxdWVzdENyZWF0ZShwYWdlLCB0
YXNrKSk7CisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9yZXF1ZXN0cy5hZGQodGFzay5pZGVu
dGlmaWVyKCksIFdURk1vdmUocmVxdWVzdCkpOworICAgICAgICBBU1NFUlQoYWRkUmVzdWx0Lmlz
TmV3RW50cnkpOworICAgICAgICBtX2NhbGxiYWNrKGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUu
Z2V0KCksIG1fdXNlckRhdGEpOwogICAgIH0KIAotICAgIHZvaWQgcGVyZm9ybUNhbGxiYWNrKFdl
YktpdFVSSVNjaGVtZVJlcXVlc3QqIHJlcXVlc3QpCisgICAgdm9pZCBwbGF0Zm9ybVN0b3BUYXNr
KFdlYlBhZ2VQcm94eSYsIFdlYlVSTFNjaGVtZVRhc2smIHRhc2spIGZpbmFsCiAgICAgewotICAg
ICAgICBBU1NFUlQobV9jYWxsYmFjayk7CisgICAgICAgIGF1dG8gaXQgPSBtX3JlcXVlc3RzLmZp
bmQodGFzay5pZGVudGlmaWVyKCkpOworICAgICAgICBpZiAoaXQgPT0gbV9yZXF1ZXN0cy5lbmQo
KSkKKyAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBtX2NhbGxiYWNrKHJlcXVlc3QsIG1f
dXNlckRhdGEpOworICAgICAgICB3ZWJraXRVUklTY2hlbWVSZXF1ZXN0Q2FuY2VsKGl0LT52YWx1
ZS5nZXQoKSk7CisgICAgICAgIG1fcmVxdWVzdHMucmVtb3ZlKGl0KTsKKyAgICB9CisKKyAgICB2
b2lkIHBsYXRmb3JtVGFza0NvbXBsZXRlZChXZWJVUkxTY2hlbWVUYXNrJiB0YXNrKSBmaW5hbAor
ICAgIHsKKyAgICAgICAgbV9yZXF1ZXN0cy5yZW1vdmUodGFzay5pZGVudGlmaWVyKCkpOwogICAg
IH0KIAotcHJpdmF0ZToKICAgICBXZWJLaXRVUklTY2hlbWVSZXF1ZXN0Q2FsbGJhY2sgbV9jYWxs
YmFjayB7IG51bGxwdHIgfTsKICAgICB2b2lkKiBtX3VzZXJEYXRhIHsgbnVsbHB0ciB9OwogICAg
IEdEZXN0cm95Tm90aWZ5IG1fZGVzdHJveU5vdGlmeSB7IG51bGxwdHIgfTsKKyAgICBIYXNoTWFw
PHVpbnQ2NF90LCBHUmVmUHRyPFdlYktpdFVSSVNjaGVtZVJlcXVlc3Q+PiBtX3JlcXVlc3RzOwog
fTsKIAogdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUmVmUHRyPFdlYktpdFVSSVNjaGVtZUhhbmRs
ZXI+ID4gVVJJU2NoZW1lSGFuZGxlck1hcDsKQEAgLTE3Niw3ICsxOTUsNiBAQCBzdHJ1Y3QgX1dl
YktpdFdlYkNvbnRleHRQcml2YXRlIHsKICAgICBHUmVmUHRyPFdlYktpdEZhdmljb25EYXRhYmFz
ZT4gZmF2aWNvbkRhdGFiYXNlOwogICAgIEdSZWZQdHI8V2ViS2l0U2VjdXJpdHlNYW5hZ2VyPiBz
ZWN1cml0eU1hbmFnZXI7CiAgICAgVVJJU2NoZW1lSGFuZGxlck1hcCB1cmlTY2hlbWVIYW5kbGVy
czsKLSAgICBVUklTY2hlbWVSZXF1ZXN0TWFwIHVyaVNjaGVtZVJlcXVlc3RzOwogICAgIEdSZWZQ
dHI8V2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyPiBnZW9sb2NhdGlvbk1hbmFnZXI7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFdlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyPiBub3RpZmljYXRpb25Qcm92
aWRlcjsKICAgICBHUmVmUHRyPFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlcj4gd2Vic2l0ZURhdGFN
YW5hZ2VyOwpAQCAtMzY3LDcgKzM4NSw2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYkNvbnRleHRD
b25zdHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiAKICAgICBhdHRhY2hJbmplY3RlZEJ1bmRsZUNs
aWVudFRvQ29udGV4dCh3ZWJDb250ZXh0KTsKICAgICBhdHRhY2hEb3dubG9hZENsaWVudFRvQ29u
dGV4dCh3ZWJDb250ZXh0KTsKLSAgICBhdHRhY2hDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnRU
b0NvbnRleHQod2ViQ29udGV4dCk7CiAKICAgICBwcml2LT5nZW9sb2NhdGlvbk1hbmFnZXIgPSBh
ZG9wdEdSZWYod2Via2l0R2VvbG9jYXRpb25NYW5hZ2VyQ3JlYXRlKHByaXYtPnByb2Nlc3NQb29s
LT5zdXBwbGVtZW50PFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5PigpKSk7CiAgICAgcHJpdi0+
bm90aWZpY2F0aW9uUHJvdmlkZXIgPSBtYWtlVW5pcXVlPFdlYktpdE5vdGlmaWNhdGlvblByb3Zp
ZGVyPihwcml2LT5wcm9jZXNzUG9vbC0+c3VwcGxlbWVudDxXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
UHJveHk+KCksIHdlYkNvbnRleHQpOwpAQCAtMzg0LDcgKzQwMSw2IEBAIHN0YXRpYyB2b2lkIHdl
YmtpdFdlYkNvbnRleHREaXNwb3NlKEdPYmplY3QqIG9iamVjdCkKICAgICAgICAgcHJpdi0+Y2xp
ZW50c0RldGFjaGVkID0gdHJ1ZTsKICAgICAgICAgcHJpdi0+cHJvY2Vzc1Bvb2wtPnNldEluamVj
dGVkQnVuZGxlQ2xpZW50KG51bGxwdHIpOwogICAgICAgICBwcml2LT5wcm9jZXNzUG9vbC0+c2V0
RG93bmxvYWRDbGllbnQobWFrZVVuaXF1ZVJlZjxBUEk6OkRvd25sb2FkQ2xpZW50PigpKTsKLSAg
ICAgICAgcHJpdi0+cHJvY2Vzc1Bvb2wtPnNldExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNs
aWVudChudWxscHRyKTsKICAgICB9CiAKICAgICBpZiAocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2Vy
KSB7CkBAIC0xMTUzLDEwICsxMTY5LDEwIEBAIHZvaWQgd2Via2l0X3dlYl9jb250ZXh0X3JlZ2lz
dGVyX3VyaV9zY2hlbWUoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCwgY29uc3QgY2hhCiAgICAg
Z19yZXR1cm5faWZfZmFpbChzY2hlbWUpOwogICAgIGdfcmV0dXJuX2lmX2ZhaWwoY2FsbGJhY2sp
OwogCi0gICAgUmVmUHRyPFdlYktpdFVSSVNjaGVtZUhhbmRsZXI+IGhhbmRsZXIgPSBhZG9wdFJl
ZihuZXcgV2ViS2l0VVJJU2NoZW1lSGFuZGxlcihjYWxsYmFjaywgdXNlckRhdGEsIGRlc3Ryb3lO
b3RpZnkpKTsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IGNvbnRleHQtPnByaXYtPnVyaVNjaGVtZUhh
bmRsZXJzLnNldChTdHJpbmc6OmZyb21VVEY4KHNjaGVtZSksIGhhbmRsZXIuZ2V0KCkpOwotICAg
IGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6cmVnaXN0ZXJHbG9iYWxVUkxTY2hlbWVBc0hhdmluZ0N1c3RvbVByb3RvY29sSGFuZGxlcnMo
U3RyaW5nOjpmcm9tVVRGOChzY2hlbWUpKTsKKyAgICBhdXRvIGhhbmRsZXIgPSBXZWJLaXRVUklT
Y2hlbWVIYW5kbGVyOjpjcmVhdGUoY2FsbGJhY2ssIHVzZXJEYXRhLCBkZXN0cm95Tm90aWZ5KTsK
KyAgICBhdXRvIGFkZFJlc3VsdCA9IGNvbnRleHQtPnByaXYtPnVyaVNjaGVtZUhhbmRsZXJzLnNl
dChTdHJpbmc6OmZyb21VVEY4KHNjaGVtZSksIFdURk1vdmUoaGFuZGxlcikpOworICAgIGZvciAo
YXV0byogd2ViVmlldyA6IGNvbnRleHQtPnByaXYtPndlYlZpZXdzLnZhbHVlcygpKQorICAgICAg
ICB3ZWJraXRXZWJWaWV3R2V0UGFnZSh3ZWJWaWV3KS5zZXRVUkxTY2hlbWVIYW5kbGVyRm9yU2No
ZW1lKCphZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLCBTdHJpbmc6OmZyb21VVEY4KHNjaGVtZSkp
OwogfQogCiAvKioKQEAgLTE3MDMsNDUgKzE3MTksNiBAQCBXZWJQcm9jZXNzUG9vbCYgd2Via2l0
V2ViQ29udGV4dEdldFByb2Nlc3NQb29sKFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQpCiAgICAg
cmV0dXJuICpjb250ZXh0LT5wcml2LT5wcm9jZXNzUG9vbDsKIH0KIAotdm9pZCB3ZWJraXRXZWJD
b250ZXh0U3RhcnRMb2FkaW5nQ3VzdG9tUHJvdG9jb2woV2ViS2l0V2ViQ29udGV4dCogY29udGV4
dCwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiByZXNvdXJjZVJlcXVlc3QsIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5JiBt
YW5hZ2VyKQotewotICAgIEdSZWZQdHI8V2ViS2l0VVJJU2NoZW1lUmVxdWVzdD4gcmVxdWVzdCA9
IGFkb3B0R1JlZih3ZWJraXRVUklTY2hlbWVSZXF1ZXN0Q3JlYXRlKGN1c3RvbVByb3RvY29sSUQs
IGNvbnRleHQsIHJlc291cmNlUmVxdWVzdCwgbWFuYWdlcikpOwotICAgIFN0cmluZyBzY2hlbWUo
U3RyaW5nOjpmcm9tVVRGOCh3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2dldF9zY2hlbWUocmVx
dWVzdC5nZXQoKSkpKTsKLSAgICBSZWZQdHI8V2ViS2l0VVJJU2NoZW1lSGFuZGxlcj4gaGFuZGxl
ciA9IGNvbnRleHQtPnByaXYtPnVyaVNjaGVtZUhhbmRsZXJzLmdldChzY2hlbWUpOwotICAgIEFT
U0VSVChoYW5kbGVyLmdldCgpKTsKLSAgICBpZiAoIWhhbmRsZXItPmhhc0NhbGxiYWNrKCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGNvbnRleHQtPnByaXYtPnVyaVNjaGVtZVJlcXVlc3RzLnNl
dChjdXN0b21Qcm90b2NvbElELCByZXF1ZXN0LmdldCgpKTsKLSAgICBoYW5kbGVyLT5wZXJmb3Jt
Q2FsbGJhY2socmVxdWVzdC5nZXQoKSk7Ci19Ci0KLXZvaWQgd2Via2l0V2ViQ29udGV4dFN0b3BM
b2FkaW5nQ3VzdG9tUHJvdG9jb2woV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCwgdWludDY0X3Qg
Y3VzdG9tUHJvdG9jb2xJRCkKLXsKLSAgICBHUmVmUHRyPFdlYktpdFVSSVNjaGVtZVJlcXVlc3Q+
IHJlcXVlc3QgPSBjb250ZXh0LT5wcml2LT51cmlTY2hlbWVSZXF1ZXN0cy5nZXQoY3VzdG9tUHJv
dG9jb2xJRCk7Ci0gICAgaWYgKCFyZXF1ZXN0LmdldCgpKQotICAgICAgICByZXR1cm47Ci0gICAg
d2Via2l0VVJJU2NoZW1lUmVxdWVzdENhbmNlbChyZXF1ZXN0LmdldCgpKTsKLX0KLQotdm9pZCB3
ZWJraXRXZWJDb250ZXh0SW52YWxpZGF0ZUN1c3RvbVByb3RvY29sUmVxdWVzdHMoV2ViS2l0V2Vi
Q29udGV4dCogY29udGV4dCwgTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkmIG1hbmFn
ZXIpCi17Ci0gICAgZm9yIChhdXRvJiByZXF1ZXN0IDogY29weVRvVmVjdG9yKGNvbnRleHQtPnBy
aXYtPnVyaVNjaGVtZVJlcXVlc3RzLnZhbHVlcygpKSkgewotICAgICAgICBpZiAod2Via2l0VVJJ
U2NoZW1lUmVxdWVzdEdldE1hbmFnZXIocmVxdWVzdC5nZXQoKSkgPT0gJm1hbmFnZXIpCi0gICAg
ICAgICAgICB3ZWJraXRVUklTY2hlbWVSZXF1ZXN0SW52YWxpZGF0ZShyZXF1ZXN0LmdldCgpKTsK
LSAgICB9Ci19Ci0KLXZvaWQgd2Via2l0V2ViQ29udGV4dERpZEZpbmlzaExvYWRpbmdDdXN0b21Q
cm90b2NvbChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCB1aW50NjRfdCBjdXN0b21Qcm90b2Nv
bElEKQotewotICAgIGNvbnRleHQtPnByaXYtPnVyaVNjaGVtZVJlcXVlc3RzLnJlbW92ZShjdXN0
b21Qcm90b2NvbElEKTsKLX0KLQotYm9vbCB3ZWJraXRXZWJDb250ZXh0SXNMb2FkaW5nQ3VzdG9t
UHJvdG9jb2woV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCwgdWludDY0X3QgY3VzdG9tUHJvdG9j
b2xJRCkKLXsKLSAgICByZXR1cm4gY29udGV4dC0+cHJpdi0+dXJpU2NoZW1lUmVxdWVzdHMuZ2V0
KGN1c3RvbVByb3RvY29sSUQpOwotfQotCiB2b2lkIHdlYmtpdFdlYkNvbnRleHRDcmVhdGVQYWdl
Rm9yV2ViVmlldyhXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCBXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3LCBXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIqIHVzZXJDb250ZW50TWFuYWdlciwgV2ViS2l0
V2ViVmlldyogcmVsYXRlZFZpZXcpCiB7CiAgICAgYXV0byBwYWdlQ29uZmlndXJhdGlvbiA9IEFQ
STo6UGFnZUNvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOwpAQCAtMTc1Nyw2ICsxNzM0LDEyIEBAIHZv
aWQgd2Via2l0V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JXZWJWaWV3KFdlYktpdFdlYkNvbnRleHQq
IGNvbnRleHQsIFdlYktpdFdlYlZpCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFdlYnNpdGVE
YXRhU3RvcmUoJndlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckdldERhdGFTdG9yZShtYW5hZ2VyKSk7
CiAgICAgd2Via2l0V2ViVmlld0NyZWF0ZVBhZ2Uod2ViVmlldywgV1RGTW92ZShwYWdlQ29uZmln
dXJhdGlvbikpOwogCisgICAgYXV0byYgcGFnZSA9IHdlYmtpdFdlYlZpZXdHZXRQYWdlKHdlYlZp
ZXcpOworICAgIGZvciAoYXV0byYgaXQgOiBjb250ZXh0LT5wcml2LT51cmlTY2hlbWVIYW5kbGVy
cykgeworICAgICAgICBSZWY8V2ViVVJMU2NoZW1lSGFuZGxlcj4gaGFuZGxlcigqaXQudmFsdWUp
OworICAgICAgICBwYWdlLnNldFVSTFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUoV1RGTW92ZShoYW5k
bGVyKSwgaXQua2V5KTsKKyAgICB9CisKICAgICBjb250ZXh0LT5wcml2LT53ZWJWaWV3cy5zZXQo
d2Via2l0X3dlYl92aWV3X2dldF9wYWdlX2lkKHdlYlZpZXcpLCB3ZWJWaWV3KTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4
dFByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNv
bnRleHRQcml2YXRlLmgKaW5kZXggNmFkYjUyYjNjNTMuLmQ4NTY5Yzg1OWJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0UHJpdmF0
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRl
eHRQcml2YXRlLmgKQEAgLTI2LDcgKzI2LDYgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAi
RG93bmxvYWRQcm94eS5oIgotI2luY2x1ZGUgIkxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclBy
b3h5LmgiCiAjaW5jbHVkZSAiV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAi
V2ViS2l0V2ViQ29udGV4dC5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCkBAIC0zNywx
MSArMzYsNiBAQCBXZWJLaXREb3dubG9hZCogd2Via2l0V2ViQ29udGV4dEdldE9yQ3JlYXRlRG93
bmxvYWQoV2ViS2l0OjpEb3dubG9hZFByb3h5Kik7CiBXZWJLaXREb3dubG9hZCogd2Via2l0V2Vi
Q29udGV4dFN0YXJ0RG93bmxvYWQoV2ViS2l0V2ViQ29udGV4dCosIGNvbnN0IGNoYXIqIHVyaSwg
V2ViS2l0OjpXZWJQYWdlUHJveHkqKTsKIHZvaWQgd2Via2l0V2ViQ29udGV4dFJlbW92ZURvd25s
b2FkKFdlYktpdDo6RG93bmxvYWRQcm94eSopOwogdm9pZCB3ZWJraXRXZWJDb250ZXh0RG93bmxv
YWRTdGFydGVkKFdlYktpdFdlYkNvbnRleHQqLCBXZWJLaXREb3dubG9hZCopOwotdm9pZCB3ZWJr
aXRXZWJDb250ZXh0U3RhcnRMb2FkaW5nQ3VzdG9tUHJvdG9jb2woV2ViS2l0V2ViQ29udGV4dCos
IHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIFdlYktpdDo6TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkmKTsKLXZvaWQgd2Vi
a2l0V2ViQ29udGV4dFN0b3BMb2FkaW5nQ3VzdG9tUHJvdG9jb2woV2ViS2l0V2ViQ29udGV4dCos
IHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpOwotdm9pZCB3ZWJraXRXZWJDb250ZXh0SW52YWxp
ZGF0ZUN1c3RvbVByb3RvY29sUmVxdWVzdHMoV2ViS2l0V2ViQ29udGV4dCosIFdlYktpdDo6TGVn
YWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkmKTsKLXZvaWQgd2Via2l0V2ViQ29udGV4dERp
ZEZpbmlzaExvYWRpbmdDdXN0b21Qcm90b2NvbChXZWJLaXRXZWJDb250ZXh0KiwgdWludDY0X3Qg
Y3VzdG9tUHJvdG9jb2xJRCk7Ci1ib29sIHdlYmtpdFdlYkNvbnRleHRJc0xvYWRpbmdDdXN0b21Q
cm90b2NvbChXZWJLaXRXZWJDb250ZXh0KiwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCk7CiB2
b2lkIHdlYmtpdFdlYkNvbnRleHRDcmVhdGVQYWdlRm9yV2ViVmlldyhXZWJLaXRXZWJDb250ZXh0
KiwgV2ViS2l0V2ViVmlldyosIFdlYktpdFVzZXJDb250ZW50TWFuYWdlciosIFdlYktpdFdlYlZp
ZXcqKTsKIHZvaWQgd2Via2l0V2ViQ29udGV4dFdlYlZpZXdEZXN0cm95ZWQoV2ViS2l0V2ViQ29u
dGV4dCosIFdlYktpdFdlYlZpZXcqKTsKIFdlYktpdFdlYlZpZXcqIHdlYmtpdFdlYkNvbnRleHRH
ZXRXZWJWaWV3Rm9yUGFnZShXZWJLaXRXZWJDb250ZXh0KiwgV2ViS2l0OjpXZWJQYWdlUHJveHkq
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2su
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaAppbmRleCBiZmQ5
MjMzOTFjZS4uNGQ2ZDJmMzIwZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlVSTFNjaGVtZVRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxT
Y2hlbWVUYXNrLmgKQEAgLTYyLDEzICs2MiwxMSBAQCBwdWJsaWM6CiAgICAgV2ViUGFnZVByb3h5
SWRlbnRpZmllciBwYWdlUHJveHlJRCgpIGNvbnN0IHsgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigp
KTsgcmV0dXJuIG1fcGFnZVByb3h5SUQ7IH0KICAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3
ZWJQYWdlSUQoKSBjb25zdCB7IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7IHJldHVybiBtX3dl
YlBhZ2VJRDsgfQogICAgIFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcygpIHsgQVNTRVJUKFJ1bkxv
b3A6OmlzTWFpbigpKTsgcmV0dXJuIG1fcHJvY2Vzcy5nZXQoKTsgfQorICAgIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCgpIGNvbnN0IHsgQVNTRVJUKFJ1bkxvb3A6Omlz
TWFpbigpKTsgcmV0dXJuIG1fcmVxdWVzdDsgfQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
TlNVUkxSZXF1ZXN0ICpuc1JlcXVlc3QoKSBjb25zdDsKICNlbmRpZgotI2lmIFBMQVRGT1JNKFdJ
TikKLSAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QoKSBjb25zdCB7
IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7IHJldHVybiBtX3JlcXVlc3Q7IH0KLSNlbmRpZgog
CiAgICAgZW51bSBjbGFzcyBFeGNlcHRpb25UeXBlIHsKICAgICAgICAgRGF0YUFscmVhZHlTZW50
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvc291cC9XZWJQcm9jZXNzUG9v
bFNvdXAuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvc291cC9XZWJQcm9jZXNzUG9vbFNv
dXAuY3BwCmluZGV4IGVlNDI0OTE2ZmQwLi41OWVlNzg4YzEyMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3Mvc291cC9XZWJQcm9jZXNzUG9vbFNvdXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1Bvb2xTb3VwLmNwcApAQCAtMjYsNyAr
MjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgi
CiAKLSNpbmNsdWRlICJBUElDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaCIKICNpbmNsdWRl
ICJOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQ
cm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyUHJveHkuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zRlRXLmNtYWtlIGIvU291cmNlL2NtYWtlL09w
dGlvbnNGVFcuY21ha2UKaW5kZXggNjExYTRkOWQxZWUuLjZjZjM4OWE5ZGI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvY21ha2UvT3B0aW9uc0ZUVy5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9u
c0ZUVy5jbWFrZQpAQCAtOTAsNyArOTAsNiBAQCBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9W
QUxVRShFTkFCTEVfSU5URVJTRUNUSU9OX09CU0VSVkVSIFBSSVZBVEUgT04pCiBXRUJLSVRfT1BU
SU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfS0VZQk9BUkRfQ09ERV9BVFRSSUJVVEUgUFJJ
VkFURSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9LRVlCT0FS
RF9LRVlfQVRUUklCVVRFIFBSSVZBVEUgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9W
QUxVRShFTkFCTEVfTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMgUFJJVkFURSBPTikKLVdFQktJ
VF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9MRUdBQ1lfQ1VTVE9NX1BST1RPQ09M
X01BTkFHRVIgUFJJVkFURSBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShF
TkFCTEVfTUFDX0dFU1RVUkVfRVZFTlRTIFBSSVZBVEUgT0ZGKQogV0VCS0lUX09QVElPTl9ERUZB
VUxUX1BPUlRfVkFMVUUoRU5BQkxFX01BVEhNTCBQUklWQVRFIE9OKQogV0VCS0lUX09QVElPTl9E
RUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX01FRElBX0NPTlRST0xTX1NDUklQVCBQUklWQVRFIE9O
KQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNQbGF5U3RhdGlvbi5jbWFrZSBiL1Nv
dXJjZS9jbWFrZS9PcHRpb25zUGxheVN0YXRpb24uY21ha2UKaW5kZXggMjA3ZDg1YWQwYjkuLjE1
YTkzMzNiMTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc1BsYXlTdGF0aW9uLmNt
YWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zUGxheVN0YXRpb24uY21ha2UKQEAgLTM4LDcg
KzM4LDYgQEAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1ZBUklBVElP
Tl9GT05UUyBQUklWQVRFIE9GRikKICMgTm8gc3VwcG9ydCBwbGFubmVkCiBXRUJLSVRfT1BUSU9O
X0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfRlRQRElSIFBSSVZBVEUgT0ZGKQogV0VCS0lUX09Q
VElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0dFT0xPQ0FUSU9OIFBSSVZBVEUgT0ZGKQot
V0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0xFR0FDWV9DVVNUT01fUFJP
VE9DT0xfTUFOQUdFUiBQUklWQVRFIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZB
TFVFKEVOQUJMRV9NQVRITUwgUFJJVkFURSBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9S
VF9WQUxVRShFTkFCTEVfTUVURVJfRUxFTUVOVCBQUklWQVRFIE9GRikKIFdFQktJVF9PUFRJT05f
REVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9ORVRTQ0FQRV9QTFVHSU5fQVBJIFBSSVZBVEUgT0ZG
KQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNXaW4uY21ha2UgYi9Tb3VyY2UvY21h
a2UvT3B0aW9uc1dpbi5jbWFrZQppbmRleCAwNzE1M2VlYmEwZS4uY2JkYzMwMWE4NmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zV2luLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9P
cHRpb25zV2luLmNtYWtlCkBAIC03NSw3ICs3NSw2IEBAIFdFQktJVF9PUFRJT05fREVGQVVMVF9Q
T1JUX1ZBTFVFKFVTRV9TWVNURU1fTUFMTE9DIFBSSVZBVEUgT04pCiAKIGlmICgke1dURl9QTEFU
Rk9STV9XSU5fQ0FJUk99KQogICAgIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVO
QUJMRV9JTlRMIFBVQkxJQyBPTikKLSAgICBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxV
RShFTkFCTEVfTEVHQUNZX0NVU1RPTV9QUk9UT0NPTF9NQU5BR0VSIFBVQkxJQyBPRkYpCiAgICAg
V0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0xFR0FDWV9FTkNSWVBURURf
TUVESUEgUFVCTElDIE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShF
TkFCTEVfUFVCTElDX1NVRkZJWF9MSVNUIFBSSVZBVEUgT04pCiAgICAgV0VCS0lUX09QVElPTl9E
RUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1VTRVJfTUVTU0FHRV9IQU5ETEVSUyBQUklWQVRFIE9O
KQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlIGIvU291cmNl
L2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlCmluZGV4IDg3MWJlMjk0N2RiLi5lMzAxYWJkNmRl
OCAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlCisrKyBiL1Nv
dXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZQpAQCAtMTU2LDcgKzE1Niw3IEBAIG1hY3Jv
KFdFQktJVF9PUFRJT05fQkVHSU4pCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0tF
WUJPQVJEX0tFWV9BVFRSSUJVVEUgIlRvZ2dsZSBrZXlib2FyZCBrZXkgYXR0cmlidXRlIHN1cHBv
cnQiIFBSSVZBVEUgT04pCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0xBWU9VVF9G
T1JNQVRUSU5HX0NPTlRFWFQgIlRvZ2dsZSBMYXlvdXQgRm9ybWF0dGluZyBDb250ZXh0IHN1cHBv
cnQiIFBSSVZBVEUgT0ZGKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9MRUdBQ1lf
Q1NTX1ZFTkRPUl9QUkVGSVhFUyAiVG9nZ2xlIGxlZ2FjeSBjc3MgdmVuZG9yIHByZWZpeCBzdXBw
b3J0IiBQUklWQVRFIE9GRikKLSAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfTEVHQUNZ
X0NVU1RPTV9QUk9UT0NPTF9NQU5BR0VSICJUb2dnbGUgbGVnYWN5IHByb3RvY29sIG1hbmFnZXIg
c3VwcG9ydCIgUFJJVkFURSBPTikKKyAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfTEVH
QUNZX0NVU1RPTV9QUk9UT0NPTF9NQU5BR0VSICJUb2dnbGUgbGVnYWN5IHByb3RvY29sIG1hbmFn
ZXIgc3VwcG9ydCIgUFJJVkFURSBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxF
X0xFR0FDWV9FTkNSWVBURURfTUVESUEgIlRvZ2dsZSBMZWdhY3kgRU1FIFYyIHN1cHBvcnQiIFBS
SVZBVEUgT0ZGKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9MRVRURVJQUkVTUyAi
VG9nZ2xlIGxldHRlcnByZXNzIHN1cHBvcnQiIFBSSVZBVEUgT0ZGKQogICAgIFdFQktJVF9PUFRJ
T05fREVGSU5FKEVOQUJMRV9NQUNfR0VTVFVSRV9FVkVOVFMgIlRvZ2dsZSBNYWMgZ2VzdHVyZSBl
dmVudHMgc3VwcG9ydCIgUFJJVkFURSBPRkYpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYWVlNzdhMjBkNTMuLjg4MTIzYTQyOTY1IDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMTktMTAtMDEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdW1dQRV0gU3RvcCB1c2luZyBsZWdhY3kgY3VzdG9tIHByb3RvY29s
IGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDI0MDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBSZW1vdmUgdGhlIHRlc3RzIHRvIGNoZWNrIGZhaWx1cmUgYWZ0ZXIgY29tbWl0dGVk
LCBiZWNhdXNlIGl0J3Mgbm90IHBvc3NpYmxlIHRvIHRlc3QgaXQgd2l0aCBjdXJyZW50IGNvZGUu
CisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdl
YkNvbnRleHQuY3BwOgorICAgICAgICAodGVzdFdlYkNvbnRleHRVUklTY2hlbWUpOgorCiAyMDE5
LTEwLTAxICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAg
ICAgICBbR1RLXSBNYWtlIFBTT04gb3B0aW9uYWwKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViQ29udGV4dC5jcHAgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYkNvbnRleHQuY3BwCmlu
ZGV4IDYxNjBhZTdlMDVlLi4zNmMxODM4NzVjNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJDb250ZXh0LmNwcAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYkNvbnRleHQuY3Bw
CkBAIC0xNjEsNyArMTYxLDYgQEAgc3RhdGljIGNvbnN0IGludCBlcnJvckNvZGUgPSAxMDsKIAog
c3RhdGljIGNvbnN0IGNoYXIqIGdlbmVyaWNFcnJvck1lc3NhZ2UgPSAiRXJyb3IgbWVzc2FnZS4i
Owogc3RhdGljIGNvbnN0IGNoYXIqIGJlZm9yZVJlY2VpdmVSZXNwb25zZUVycm9yTWVzc2FnZSA9
ICJFcnJvciBiZWZvcmUgZGlkUmVjZWl2ZVJlc3BvbnNlLiI7Ci1zdGF0aWMgY29uc3QgY2hhciog
YWZ0ZXJJbml0aWFsQ2h1bmtFcnJvck1lc3NhZ2UgPSAiRXJyb3IgYWZ0ZXIgcmVhZGluZyB0aGUg
aW5pdGlhbCBjaHVuay4iOwogCiBjbGFzcyBVUklTY2hlbWVUZXN0OiBwdWJsaWMgTG9hZFRyYWNr
aW5nVGVzdCB7CiBwdWJsaWM6CkBAIC0yNDAsMjYgKzIzOSw4IEBAIHB1YmxpYzoKICAgICAgICAg
d2Via2l0X3dlYl9jb250ZXh0X3JlZ2lzdGVyX3VyaV9zY2hlbWUobV93ZWJDb250ZXh0LmdldCgp
LCBzY2hlbWUsIHVyaVNjaGVtZVJlcXVlc3RDYWxsYmFjaywgdGhpcywgMCk7CiAgICAgfQogCi0g
ICAgdm9pZCBsb2FkQ29tbWl0dGVkKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGlmIChtX2Zp
bmlzaE9uQ29tbWl0dGVkKSB7Ci0gICAgICAgICAgICBHVW5pcXVlUHRyPEdFcnJvcj4gZXJyb3Io
Z19lcnJvcl9uZXdfbGl0ZXJhbChnX3F1YXJrX2Zyb21fc3RyaW5nKGVycm9yRG9tYWluKSwgZXJy
b3JDb2RlLCBhZnRlckluaXRpYWxDaHVua0Vycm9yTWVzc2FnZSkpOwotICAgICAgICAgICAgd2Vi
a2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9maW5pc2hfZXJyb3IobV91cmlTY2hlbWVSZXF1ZXN0Lmdl
dCgpLCBlcnJvci5nZXQoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBMb2FkVHJhY2tpbmdUZXN0
Ojpsb2FkQ29tbWl0dGVkKCk7Ci0gICAgfQotCi0gICAgdm9pZCBmaW5pc2hPbkNvbW1pdHRlZEFu
ZFdhaXRVbnRpbExvYWRGaW5pc2hlZCgpCi0gICAgewotICAgICAgICBtX2ZpbmlzaE9uQ29tbWl0
dGVkID0gdHJ1ZTsKLSAgICAgICAgd2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7Ci0gICAgICAgIG1f
ZmluaXNoT25Db21taXR0ZWQgPSBmYWxzZTsKLSAgICB9Ci0KICAgICBHUmVmUHRyPFdlYktpdFVS
SVNjaGVtZVJlcXVlc3Q+IG1fdXJpU2NoZW1lUmVxdWVzdDsKICAgICBIYXNoTWFwPFN0cmluZywg
VVJJU2NoZW1lSGFuZGxlcj4gbV9oYW5kbGVyc01hcDsKLSAgICBib29sIG1fZmluaXNoT25Db21t
aXR0ZWQgeyBmYWxzZSB9OwogfTsKIAogU3RyaW5nIGdlbmVyYXRlSFRNTENvbnRlbnQodW5zaWdu
ZWQgY29udGVudExlbmd0aCkKQEAgLTMxOCwxMyArMjk5LDEzIEBAIHN0YXRpYyB2b2lkIHRlc3RX
ZWJDb250ZXh0VVJJU2NoZW1lKFVSSVNjaGVtZVRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAg
ICAgZ19hc3NlcnRfY21waW50KG1haW5SZXNvdXJjZURhdGFTaXplLCA9PSwgc3RybGVuKGVjaG9I
VE1MLmdldCgpKSk7CiAgICAgZ19hc3NlcnRfY21waW50KHN0cm5jbXAobWFpblJlc291cmNlRGF0
YSwgZWNob0hUTUwuZ2V0KCksIG1haW5SZXNvdXJjZURhdGFTaXplKSwgPT0sIDApOwogCi0gICAg
dGVzdC0+cmVnaXN0ZXJVUklTY2hlbWVIYW5kbGVyKCJub21pbWUiLCBrQmFySFRNTCwgLTEsIDAp
OworICAgIHRlc3QtPnJlZ2lzdGVyVVJJU2NoZW1lSGFuZGxlcigibm9taW1lIiwga0JhckhUTUws
IC0xLCBudWxscHRyKTsKICAgICB0ZXN0LT5tX2xvYWRFdmVudHMuY2xlYXIoKTsKICAgICB0ZXN0
LT5sb2FkVVJJKCJub21pbWU6Zm9vLWJhciIpOwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5p
c2hlZCgpOwogICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+bV9sb2FkRXZlbnRzLmNvbnRhaW5zKExv
YWRUcmFja2luZ1Rlc3Q6OlByb3Zpc2lvbmFsTG9hZEZhaWxlZCkpOwogCi0gICAgdGVzdC0+cmVn
aXN0ZXJVUklTY2hlbWVIYW5kbGVyKCJlbXB0eSIsIDAsIDAsICJ0ZXh0L2h0bWwiKTsKKyAgICB0
ZXN0LT5yZWdpc3RlclVSSVNjaGVtZUhhbmRsZXIoImVtcHR5IiwgbnVsbHB0ciwgMCwgInRleHQv
aHRtbCIpOwogICAgIHRlc3QtPm1fbG9hZEV2ZW50cy5jbGVhcigpOwogICAgIHRlc3QtPmxvYWRV
UkkoImVtcHR5Om5vdGhpbmciKTsKICAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsK
QEAgLTM1MiwxNiArMzMzLDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYkNvbnRleHRVUklTY2hlbWUo
VVJJU2NoZW1lVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBnX2Fzc2VydF9lcnJvcih0
ZXN0LT5tX2Vycm9yLmdldCgpLCBnX3F1YXJrX2Zyb21fc3RyaW5nKGVycm9yRG9tYWluKSwgZXJy
b3JDb2RlKTsKICAgICBnX2Fzc2VydF9jbXBzdHIodGVzdC0+bV9lcnJvci0+bWVzc2FnZSwgPT0s
IGJlZm9yZVJlY2VpdmVSZXNwb25zZUVycm9yTWVzc2FnZSk7CiAKLSAgICB0ZXN0LT5tX2xvYWRF
dmVudHMuY2xlYXIoKTsKLSAgICB0ZXN0LT5sb2FkVVJJKCJlcnJvcjphZnRlci1maXJzdC1jaHVu
ayIpOwotICAgIHRlc3QtPmZpbmlzaE9uQ29tbWl0dGVkQW5kV2FpdFVudGlsTG9hZEZpbmlzaGVk
KCk7Ci0gICAgZ19hc3NlcnRfZmFsc2UodGVzdC0+bV9sb2FkRXZlbnRzLmNvbnRhaW5zKExvYWRU
cmFja2luZ1Rlc3Q6OlByb3Zpc2lvbmFsTG9hZEZhaWxlZCkpOwotICAgIGdfYXNzZXJ0X3RydWUo
dGVzdC0+bV9sb2FkRXZlbnRzLmNvbnRhaW5zKExvYWRUcmFja2luZ1Rlc3Q6OkxvYWRGYWlsZWQp
KTsKLSAgICBnX2Fzc2VydF90cnVlKHRlc3QtPm1fbG9hZEZhaWxlZCk7Ci0gICAgZ19hc3NlcnRf
ZXJyb3IodGVzdC0+bV9lcnJvci5nZXQoKSwgZ19xdWFya19mcm9tX3N0cmluZyhlcnJvckRvbWFp
biksIGVycm9yQ29kZSk7Ci0gICAgZ19hc3NlcnRfY21wc3RyKHRlc3QtPm1fZXJyb3ItPm1lc3Nh
Z2UsID09LCBhZnRlckluaXRpYWxDaHVua0Vycm9yTWVzc2FnZSk7Ci0KLSAgICB0ZXN0LT5yZWdp
c3RlclVSSVNjaGVtZUhhbmRsZXIoImNsb3NlZCIsIDAsIDAsIDApOworICAgIHRlc3QtPnJlZ2lz
dGVyVVJJU2NoZW1lSGFuZGxlcigiY2xvc2VkIiwgbnVsbHB0ciwgMCwgbnVsbHB0cik7CiAgICAg
dGVzdC0+bV9sb2FkRXZlbnRzLmNsZWFyKCk7CiAgICAgdGVzdC0+bG9hZFVSSSgiY2xvc2VkOmlu
cHV0LXN0cmVhbSIpOwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379909</attachid>
            <date>2019-10-01 09:14:42 -0700</date>
            <delta_ts>2019-10-02 00:50:38 -0700</delta_ts>
            <desc>Fix WPE</desc>
            <filename>wk2-kill-legacy-custom-protocols.diff</filename>
            <type>text/plain</type>
            <size>65521</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA1MDk3NjI2M2MzNC4uYThi
ODU2MWFlOTUgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNyBAQAorMjAxOS0xMC0wMSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxp
YS5jb20+CisKKyAgICAgICAgW0dUS11bV1BFXSBTdG9wIHVzaW5nIGxlZ2FjeSBjdXN0b20gcHJv
dG9jb2wgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwMjQwNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE1ha2UgTEVHQUNZX0NVU1RPTV9QUk9UT0NPTF9NQU5BR0VSIGRpc2FibGVk
IGJ5IGRlZmF1bHQuCisKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc0ZUVy5jbWFrZToK
KyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc1BsYXlTdGF0aW9uLmNtYWtlOgorICAgICAg
ICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zV2luLmNtYWtlOgorICAgICAgICAqIFNvdXJjZS9jbWFr
ZS9XZWJLaXRGZWF0dXJlcy5jbWFrZToKKwogMjAxOS0wOS0zMCAgQWxleCBDaHJpc3RlbnNlbiAg
PGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlc3VycmVjdCBNYWMgQ01ha2Ug
YnVpbGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCAzY2Y5OGY5YjdiYy4uYWU1ZTcxNmFhMDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNiBAQAorMjAxOS0xMC0wMSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2Fy
Y2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV1BFXSBTdG9wIHVzaW5nIGxlZ2FjeSBj
dXN0b20gcHJvdG9jb2wgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjQwNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSB0aGUgY29kZSB0byBzZXR1cCBjdXN0b20gcHJv
dG9jb2xzIGluIHNvdXAgc2Vzc2lvbi4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291
cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cE5ldHdvcmtT
ZXNzaW9uOjpTb3VwTmV0d29ya1Nlc3Npb24pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
c291cC9Tb3VwTmV0d29ya1Nlc3Npb24uaDoKKwogMjAxOS0wOS0zMCAgQWxleCBDaHJpc3RlbnNl
biAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlc3VycmVjdCBNYWMgQ01h
a2UgYnVpbGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAKaW5kZXggMDk2ZGU1ZmU4YzkuLjQ2YzhkNDVi
MzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291
cE5ldHdvcmtTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcApAQCAtNDUsNyArNDUsNiBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBzdGF0aWMgYm9vbCBnSWdub3JlVExTRXJyb3JzOwotc3RhdGljIEdUeXBl
IGdDdXN0b21Qcm90b2NvbFJlcXVlc3RUeXBlOwogCiBzdGF0aWMgQ1N0cmluZyYgaW5pdGlhbEFj
Y2VwdExhbmd1YWdlcygpCiB7CkBAIC0xMzQsOCArMTMzLDYgQEAgU291cE5ldHdvcmtTZXNzaW9u
OjpTb3VwTmV0d29ya1Nlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogI2VuZGlmCiAg
ICAgICAgIG51bGxwdHIpOwogCi0gICAgc2V0dXBDdXN0b21Qcm90b2NvbHMoKTsKLQogICAgIGlm
ICghaW5pdGlhbEFjY2VwdExhbmd1YWdlcygpLmlzTnVsbCgpKQogICAgICAgICBzZXRBY2NlcHRM
YW5ndWFnZXMoaW5pdGlhbEFjY2VwdExhbmd1YWdlcygpKTsKIApAQCAtMzM3LDI0ICszMzQsNiBA
QCB2b2lkIFNvdXBOZXR3b3JrU2Vzc2lvbjo6c2V0QWNjZXB0TGFuZ3VhZ2VzKGNvbnN0IENTdHJp
bmcmIGxhbmd1YWdlcykKICAgICBnX29iamVjdF9zZXQobV9zb3VwU2Vzc2lvbi5nZXQoKSwgImFj
Y2VwdC1sYW5ndWFnZSIsIGxhbmd1YWdlcy5kYXRhKCksIG51bGxwdHIpOwogfQogCi12b2lkIFNv
dXBOZXR3b3JrU2Vzc2lvbjo6c2V0Q3VzdG9tUHJvdG9jb2xSZXF1ZXN0VHlwZShHVHlwZSByZXF1
ZXN0VHlwZSkKLXsKLSAgICBBU1NFUlQoZ190eXBlX2lzX2EocmVxdWVzdFR5cGUsIFNPVVBfVFlQ
RV9SRVFVRVNUKSk7Ci0gICAgZ0N1c3RvbVByb3RvY29sUmVxdWVzdFR5cGUgPSByZXF1ZXN0VHlw
ZTsKLX0KLQotdm9pZCBTb3VwTmV0d29ya1Nlc3Npb246OnNldHVwQ3VzdG9tUHJvdG9jb2xzKCkK
LXsKLSAgICBpZiAoIWdfdHlwZV9pc19hKGdDdXN0b21Qcm90b2NvbFJlcXVlc3RUeXBlLCBTT1VQ
X1RZUEVfUkVRVUVTVCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8qIHJlcXVlc3RDbGFz
cyA9IHN0YXRpY19jYXN0PFNvdXBSZXF1ZXN0Q2xhc3MqPihnX3R5cGVfY2xhc3NfcGVlayhnQ3Vz
dG9tUHJvdG9jb2xSZXF1ZXN0VHlwZSkpOwotICAgIGlmICghcmVxdWVzdENsYXNzIHx8ICFyZXF1
ZXN0Q2xhc3MtPnNjaGVtZXMpCi0gICAgICAgIHJldHVybjsKLQotICAgIHNvdXBfc2Vzc2lvbl9h
ZGRfZmVhdHVyZV9ieV90eXBlKG1fc291cFNlc3Npb24uZ2V0KCksIGdDdXN0b21Qcm90b2NvbFJl
cXVlc3RUeXBlKTsKLX0KLQogdm9pZCBTb3VwTmV0d29ya1Nlc3Npb246OnNldFNob3VsZElnbm9y
ZVRMU0Vycm9ycyhib29sIGlnbm9yZVRMU0Vycm9ycykKIHsKICAgICBnSWdub3JlVExTRXJyb3Jz
ID0gaWdub3JlVExTRXJyb3JzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5oCmluZGV4IGVjY2RhNDFhZTE0Li43
MmI2NTA3ZjcxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uaApAQCAtNzIsOSArNzIsNiBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIE9wdGlvbmFsPFJlc291cmNlRXJyb3I+IGNoZWNrVExTRXJyb3JzKGNvbnN0
IFVSTCYsIEdUbHNDZXJ0aWZpY2F0ZSosIEdUbHNDZXJ0aWZpY2F0ZUZsYWdzKTsKICAgICBzdGF0
aWMgdm9pZCBhbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QoY29uc3QgQ2VydGlm
aWNhdGVJbmZvJiwgY29uc3QgU3RyaW5nJiBob3N0KTsKIAotICAgIHN0YXRpYyB2b2lkIHNldEN1
c3RvbVByb3RvY29sUmVxdWVzdFR5cGUoR1R5cGUpOwotICAgIHZvaWQgc2V0dXBDdXN0b21Qcm90
b2NvbHMoKTsKLQogICAgIHZvaWQgZ2V0SG9zdE5hbWVzV2l0aEhTVFNDYWNoZShIYXNoU2V0PFN0
cmluZz4mKTsKICAgICB2b2lkIGRlbGV0ZUhTVFNDYWNoZUZvckhvc3ROYW1lcyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYpOwogICAgIHZvaWQgY2xlYXJIU1RTQ2FjaGUoV2FsbFRpbWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCBkOGZhYzRhODI4OC4uMjE4MTM4YTBlNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAK
KzIwMTktMTAtMDEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgor
CisgICAgICAgIFtHVEtdW1dQRV0gU3RvcCB1c2luZyBsZWdhY3kgY3VzdG9tIHByb3RvY29sIGlt
cGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDI0MDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBVc2UgdGhlIG5ldyBhcHByb2FjaCwgd2hpY2ggaXMgc2ltcGxlciBhbmQgZG9lc24ndCBy
ZXF1aXJlIHRvIGdvIHRvIHRoZSBuZXR3b3JrIHByb2Nlc3MgdG8gbG9hZCBjdXN0b20KKyAgICAg
ICAgcHJvdG9jb2xzLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xz
L3NvdXAvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyU291cC5jcHA6IFJlbW92ZWQuCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0
OjptX21lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW0uY3BwOiBSZW1vdmVkLgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvV2ViS2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbS5oOiBS
ZW1vdmVkLgorICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3Jt
V1BFLmNtYWtlOgorICAgICAgICAqIFNvdXJjZXNHVEsudHh0OgorICAgICAgICAqIFNvdXJjZXNX
UEUudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDdXN0b21Qcm90b2Nv
bE1hbmFnZXJDbGllbnQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHA6CisgICAgICAg
ICh3ZWJraXRVUklTY2hlbWVSZXF1ZXN0Q3JlYXRlKToKKyAgICAgICAgKHdlYmtpdF91cmlfc2No
ZW1lX3JlcXVlc3RfZ2V0X3NjaGVtZSk6CisgICAgICAgICh3ZWJraXRfdXJpX3NjaGVtZV9yZXF1
ZXN0X2dldF91cmkpOgorICAgICAgICAod2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9nZXRfcGF0
aCk6CisgICAgICAgICh3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2dldF93ZWJfdmlldyk6Cisg
ICAgICAgICh3ZWJraXRVUklTY2hlbWVSZXF1ZXN0UmVhZENhbGxiYWNrKToKKyAgICAgICAgKHdl
YmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZmluaXNoX2Vycm9yKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdFByaXZhdGUuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHA6CisgICAgICAgICh3ZWJraXRX
ZWJDb250ZXh0Q29uc3RydWN0ZWQpOgorICAgICAgICAod2Via2l0V2ViQ29udGV4dERpc3Bvc2Up
OgorICAgICAgICAod2Via2l0X3dlYl9jb250ZXh0X3JlZ2lzdGVyX3VyaV9zY2hlbWUpOgorICAg
ICAgICAod2Via2l0V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JXZWJWaWV3KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dFByaXZhdGUuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hl
bWVUYXNrOjpyZXF1ZXN0IGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3Mvc291cC9XZWJQcm9j
ZXNzUG9vbFNvdXAuY3BwOgorCiAyMDE5LTEwLTAxICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNn
YXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBNYWtlIFBTT04gb3B0aW9uYWwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL3Nv
dXAvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9zb3VwL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFu
YWdlclNvdXAuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOWIwYzNiMjE1Ny4u
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90
b2NvbHMvc291cC9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJTb3VwLmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDIxNyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIElnYWxpYSBT
LkwuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJMZWdhY3lDdXN0b21Qcm90b2NvbE1h
bmFnZXIuaCIKLQotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKLSNpbmNsdWRlICJMZWdhY3lD
dXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlcy5oIgotI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNz
LmgiCi0jaW5jbHVkZSAiTmV0d29ya1Nlc3Npb25Tb3VwLmgiCi0jaW5jbHVkZSAiV2ViS2l0U291
cFJlcXVlc3RJbnB1dFN0cmVhbS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQu
aD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KLSNpbmNsdWRlIDxXZWJDb3Jl
L1Jlc291cmNlUmVxdWVzdC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5o
PgotI2luY2x1ZGUgPFdlYkNvcmUvU291cE5ldHdvcmtTZXNzaW9uLmg+Ci0jaW5jbHVkZSA8V2Vi
Q29yZS9XZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWMuaD4KLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0
cm95ZWQuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
LQotUmVmUHRyPE5ldHdvcmtQcm9jZXNzPiYgbGFzdENyZWF0ZWROZXR3b3JrUHJvY2VzcygpCi17
Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZlB0cjxOZXR3b3JrUHJvY2Vzcz4+IG5ldHdv
cmtQcm9jZXNzOwotICAgIHJldHVybiBuZXR3b3JrUHJvY2Vzcy5nZXQoKTsKLX0KLQotdm9pZCBM
ZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXI6Om5ldHdvcmtQcm9jZXNzQ3JlYXRlZChOZXR3b3Jr
UHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MpCi17Ci0gICAgbGFzdENyZWF0ZWROZXR3b3JrUHJvY2Vz
cygpID0gJm5ldHdvcmtQcm9jZXNzOwotfQotCi1MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXI6
OldlYlNvdXBSZXF1ZXN0QXN5bmNEYXRhOjpXZWJTb3VwUmVxdWVzdEFzeW5jRGF0YShHUmVmUHRy
PEdUYXNrPiYmIHJlcXVlc3RUYXNrLCBXZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWMqIHJlcXVlc3RH
ZW5lcmljKQotICAgIDogdGFzayhXVEZNb3ZlKHJlcXVlc3RUYXNrKSkKLSAgICAsIHJlcXVlc3Qo
cmVxdWVzdEdlbmVyaWMpCi0gICAgLCBjYW5jZWxsYWJsZShnX3Rhc2tfZ2V0X2NhbmNlbGxhYmxl
KHRhc2suZ2V0KCkpKQotewotICAgIC8vIElmIHRoZSBzdHJ1Y3QgY29udGFpbnMgYSBudWxsIHJl
cXVlc3QsIGl0IGlzIGJlY2F1c2UgdGhlIHJlcXVlc3QgZmFpbGVkLgotICAgIGdfb2JqZWN0X2Fk
ZF93ZWFrX3BvaW50ZXIoR19PQkpFQ1QocmVxdWVzdCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoq
PigmcmVxdWVzdCkpOwotfQotCi1MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXI6OldlYlNvdXBS
ZXF1ZXN0QXN5bmNEYXRhOjp+V2ViU291cFJlcXVlc3RBc3luY0RhdGEoKQotewotICAgIGlmIChy
ZXF1ZXN0KQotICAgICAgICBnX29iamVjdF9yZW1vdmVfd2Vha19wb2ludGVyKEdfT0JKRUNUKHJl
cXVlc3QpLCByZWludGVycHJldF9jYXN0PHZvaWQqKj4oJnJlcXVlc3QpKTsKLX0KLQotY2xhc3Mg
Q3VzdG9tUHJvdG9jb2xSZXF1ZXN0Q2xpZW50IGZpbmFsIDogcHVibGljIFdlYktpdFNvdXBSZXF1
ZXN0R2VuZXJpY0NsaWVudCB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIEN1c3RvbVByb3RvY29sUmVx
dWVzdENsaWVudCYgc2luZ2xldG9uKCkKLSAgICB7Ci0gICAgICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxDdXN0b21Qcm90b2NvbFJlcXVlc3RDbGllbnQ+IGNsaWVudDsKLSAgICAgICAgcmV0dXJu
IGNsaWVudDsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCBzdGFydFJlcXVlc3QoR1JlZlB0
cjxHVGFzaz4mJiB0YXNrKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgV2ViS2l0U291cFJlcXVl
c3RHZW5lcmljKiByZXF1ZXN0ID0gV0VCS0lUX1NPVVBfUkVRVUVTVF9HRU5FUklDKGdfdGFza19n
ZXRfc291cmNlX29iamVjdCh0YXNrLmdldCgpKSk7Ci0gICAgICAgIGF1dG8qIGN1c3RvbVByb3Rv
Y29sTWFuYWdlciA9IGxhc3RDcmVhdGVkTmV0d29ya1Byb2Nlc3MoKS0+c3VwcGxlbWVudDxMZWdh
Y3lDdXN0b21Qcm90b2NvbE1hbmFnZXI+KCk7Ci0gICAgICAgIGlmICghY3VzdG9tUHJvdG9jb2xN
YW5hZ2VyKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGF1dG8gY3VzdG9tUHJvdG9j
b2xJRCA9IGN1c3RvbVByb3RvY29sTWFuYWdlci0+YWRkQ3VzdG9tUHJvdG9jb2wobWFrZVVuaXF1
ZTxMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXI6OldlYlNvdXBSZXF1ZXN0QXN5bmNEYXRhPihX
VEZNb3ZlKHRhc2spLCByZXF1ZXN0KSk7Ci0gICAgICAgIGN1c3RvbVByb3RvY29sTWFuYWdlci0+
c3RhcnRMb2FkaW5nKGN1c3RvbVByb3RvY29sSUQsIHdlYmtpdFNvdXBSZXF1ZXN0R2VuZXJpY0dl
dFJlcXVlc3QocmVxdWVzdCkpOwotICAgIH0KLX07Ci0KLXZvaWQgTGVnYWN5Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyOjpyZWdpc3RlclByb3RvY29sQ2xhc3MoKQotewotICAgIHN0YXRpY19jYXN0PFdl
YktpdFNvdXBSZXF1ZXN0R2VuZXJpY0NsYXNzKj4oZ190eXBlX2NsYXNzX3JlZihXRUJLSVRfVFlQ
RV9TT1VQX1JFUVVFU1RfR0VORVJJQykpLT5jbGllbnQgPSAmQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0
Q2xpZW50OjpzaW5nbGV0b24oKTsKLSAgICBTb3VwTmV0d29ya1Nlc3Npb246OnNldEN1c3RvbVBy
b3RvY29sUmVxdWVzdFR5cGUoV0VCS0lUX1RZUEVfU09VUF9SRVFVRVNUX0dFTkVSSUMpOwotfQot
Ci12b2lkIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcjo6cmVnaXN0ZXJTY2hlbWUoY29uc3Qg
U3RyaW5nJiBzY2hlbWUpCi17Ci0gICAgaWYgKCFtX3JlZ2lzdGVyZWRTY2hlbWVzKQotICAgICAg
ICBtX3JlZ2lzdGVyZWRTY2hlbWVzID0gYWRvcHRHUmVmKGdfcHRyX2FycmF5X25ld193aXRoX2Zy
ZWVfZnVuYyhnX2ZyZWUpKTsKLQotICAgIGlmIChtX3JlZ2lzdGVyZWRTY2hlbWVzLT5sZW4pCi0g
ICAgICAgIGdfcHRyX2FycmF5X3JlbW92ZV9pbmRleF9mYXN0KG1fcmVnaXN0ZXJlZFNjaGVtZXMu
Z2V0KCksIG1fcmVnaXN0ZXJlZFNjaGVtZXMtPmxlbiAtIDEpOwotICAgIGdfcHRyX2FycmF5X2Fk
ZChtX3JlZ2lzdGVyZWRTY2hlbWVzLmdldCgpLCBnX3N0cmR1cChzY2hlbWUudXRmOCgpLmRhdGEo
KSkpOwotICAgIGdfcHRyX2FycmF5X2FkZChtX3JlZ2lzdGVyZWRTY2hlbWVzLmdldCgpLCBudWxs
cHRyKTsKLQotICAgIGF1dG8qIGdlbmVyaWNSZXF1ZXN0Q2xhc3MgPSBzdGF0aWNfY2FzdDxTb3Vw
UmVxdWVzdENsYXNzKj4oZ190eXBlX2NsYXNzX3BlZWsoV0VCS0lUX1RZUEVfU09VUF9SRVFVRVNU
X0dFTkVSSUMpKTsKLSAgICBBU1NFUlQoZ2VuZXJpY1JlcXVlc3RDbGFzcyk7Ci0gICAgZ2VuZXJp
Y1JlcXVlc3RDbGFzcy0+c2NoZW1lcyA9IGNvbnN0X2Nhc3Q8Y29uc3QgY2hhcioqPihyZWludGVy
cHJldF9jYXN0PGNoYXIqKj4obV9yZWdpc3RlcmVkU2NoZW1lcy0+cGRhdGEpKTsKLSAgICBsYXN0
Q3JlYXRlZE5ldHdvcmtQcm9jZXNzKCktPmZvckVhY2hOZXR3b3JrU2Vzc2lvbihbXShjb25zdCBh
dXRvJiBzZXNzaW9uKSB7Ci0gICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IE5ldHdvcmtTZXNzaW9u
U291cCY+KHNlc3Npb24pLnNvdXBOZXR3b3JrU2Vzc2lvbigpLnNldHVwQ3VzdG9tUHJvdG9jb2xz
KCk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjp1bnJl
Z2lzdGVyU2NoZW1lKGNvbnN0IFN0cmluZyYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0K
LQotYm9vbCBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnN1cHBvcnRzU2NoZW1lKGNvbnN0
IFN0cmluZyYgc2NoZW1lKQotewotICAgIGlmIChzY2hlbWUuaXNOdWxsKCkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIENTdHJpbmcgY1NjaGVtZSA9IHNjaGVtZS51dGY4KCk7Ci0gICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fcmVnaXN0ZXJlZFNjaGVtZXMtPmxlbjsgKytpKSB7
Ci0gICAgICAgIGlmIChjU2NoZW1lID09IHN0YXRpY19jYXN0PGNoYXIqPihnX3B0cl9hcnJheV9p
bmRleChtX3JlZ2lzdGVyZWRTY2hlbWVzLmdldCgpLCBpKSkpCi0gICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZvaWQgTGVnYWN5Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyOjpkaWRGYWlsV2l0aEVycm9yKHVpbnQ2NF90IGN1c3RvbVByb3RvY29s
SUQsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQotewotICAgIGF1dG8qIGRhdGEgPSBtX2N1
c3RvbVByb3RvY29sTWFwLmdldChjdXN0b21Qcm90b2NvbElEKTsKLSAgICBBU1NFUlQoZGF0YSk7
Ci0KLSAgICAvLyBFaXRoZXIgd2UgaGF2ZW4ndCBzdGFydGVkIHJlYWRpbmcgdGhlIHN0cmVhbSB5
ZXQsIGluIHdoaWNoIGNhc2Ugd2UgbmVlZCB0byBjb21wbGV0ZSB0aGUKLSAgICAvLyB0YXNrIGZp
cnN0LCBvciB3ZSBmYWlsZWQgcmVhZGluZyBpdCBhbmQgdGhlIHRhc2sgd2FzIGFscmVhZHkgY29t
cGxldGVkIGJ5IGRpZExvYWREYXRhKCkuCi0gICAgQVNTRVJUKCFkYXRhLT5zdHJlYW0gfHwgIWRh
dGEtPnRhc2spOwotCi0gICAgaWYgKCFkYXRhLT5zdHJlYW0pIHsKLSAgICAgICAgR1JlZlB0cjxH
VGFzaz4gdGFzayA9IHN0ZDo6ZXhjaGFuZ2UoZGF0YS0+dGFzaywgbnVsbHB0cik7Ci0gICAgICAg
IEFTU0VSVCh0YXNrLmdldCgpKTsKLSAgICAgICAgZ190YXNrX3JldHVybl9uZXdfZXJyb3IodGFz
ay5nZXQoKSwgZ19xdWFya19mcm9tX3N0cmluZyhlcnJvci5kb21haW4oKS51dGY4KCkuZGF0YSgp
KSwKLSAgICAgICAgICAgIGVycm9yLmVycm9yQ29kZSgpLCAiJXMiLCBlcnJvci5sb2NhbGl6ZWRE
ZXNjcmlwdGlvbigpLnV0ZjgoKS5kYXRhKCkpOwotICAgIH0gZWxzZQotICAgICAgICB3ZWJraXRT
b3VwUmVxdWVzdElucHV0U3RyZWFtRGlkRmFpbFdpdGhFcnJvcihXRUJLSVRfU09VUF9SRVFVRVNU
X0lOUFVUX1NUUkVBTShkYXRhLT5zdHJlYW0uZ2V0KCkpLCBlcnJvcik7Ci0KLSAgICByZW1vdmVD
dXN0b21Qcm90b2NvbChjdXN0b21Qcm90b2NvbElEKTsKLX0KLQotdm9pZCBMZWdhY3lDdXN0b21Q
cm90b2NvbE1hbmFnZXI6OmRpZExvYWREYXRhKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSkKLXsKLSAgICBhdXRvKiBkYXRh
ID0gbV9jdXN0b21Qcm90b2NvbE1hcC5nZXQoY3VzdG9tUHJvdG9jb2xJRCk7Ci0gICAgLy8gVGhl
IGRhdGEgbWlnaHQgaGF2ZSBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgcmVxdWVzdCBtYXAgaWYgYSBw
cmV2aW91cyBjaHVuayBmYWlsZWQKLSAgICAvLyBhbmQgYSBuZXcgbWVzc2FnZSB3YXMgc2VudCBi
eSB0aGUgVUkgcHJvY2VzcyBiZWZvcmUgYmVpbmcgbm90aWZpZWQgYWJvdXQgdGhlIGZhaWx1cmUu
Ci0gICAgaWYgKCFkYXRhKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIWRhdGEtPnN0cmVh
bSkgewotICAgICAgICBHUmVmUHRyPEdUYXNrPiB0YXNrID0gc3RkOjpleGNoYW5nZShkYXRhLT50
YXNrLCBudWxscHRyKTsKLSAgICAgICAgQVNTRVJUKHRhc2suZ2V0KCkpOwotCi0gICAgICAgIGdv
ZmZzZXQgc291cENvbnRlbnRMZW5ndGggPSBzb3VwX3JlcXVlc3RfZ2V0X2NvbnRlbnRfbGVuZ3Ro
KFNPVVBfUkVRVUVTVChnX3Rhc2tfZ2V0X3NvdXJjZV9vYmplY3QodGFzay5nZXQoKSkpKTsKLSAg
ICAgICAgdWludDY0X3QgY29udGVudExlbmd0aCA9IHNvdXBDb250ZW50TGVuZ3RoID09IC0xID8g
MCA6IHN0YXRpY19jYXN0PHVpbnQ2NF90Pihzb3VwQ29udGVudExlbmd0aCk7Ci0gICAgICAgIGlm
ICghZGF0YVJlZmVyZW5jZS5zaXplKCkpIHsKLSAgICAgICAgICAgIC8vIEVtcHR5IHJlcGx5LCBq
dXN0IGNyZWF0ZSBhbmQgZW1wdHkgR01lbW9yeUlucHV0U3RyZWFtLgotICAgICAgICAgICAgZGF0
YS0+c3RyZWFtID0gZ19tZW1vcnlfaW5wdXRfc3RyZWFtX25ldygpOwotICAgICAgICB9IGVsc2Ug
aWYgKGRhdGFSZWZlcmVuY2Uuc2l6ZSgpID09IGNvbnRlbnRMZW5ndGgpIHsKLSAgICAgICAgICAg
IC8vIFdlIGRvbid0IGV4cGVjdCBtb3JlIGRhdGEsIHNvIHdlIGNhbiBqdXN0IGNyZWF0ZSBhIEdN
ZW1vcnlJbnB1dFN0cmVhbSB3aXRoIGFsbCB0aGUgZGF0YS4KLSAgICAgICAgICAgIGRhdGEtPnN0
cmVhbSA9IGdfbWVtb3J5X2lucHV0X3N0cmVhbV9uZXdfZnJvbV9kYXRhKGdfbWVtZHVwKGRhdGFS
ZWZlcmVuY2UuZGF0YSgpLCBkYXRhUmVmZXJlbmNlLnNpemUoKSksIGNvbnRlbnRMZW5ndGgsIGdf
ZnJlZSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBXZSBleHBlY3QgbW9yZSBk
YXRhIGNodW5rcyBmcm9tIHRoZSBVSSBwcm9jZXNzLgotICAgICAgICAgICAgZGF0YS0+c3RyZWFt
ID0gd2Via2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbU5ldyhjb250ZW50TGVuZ3RoKTsKLSAgICAg
ICAgICAgIHdlYmtpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW1BZGREYXRhKFdFQktJVF9TT1VQX1JF
UVVFU1RfSU5QVVRfU1RSRUFNKGRhdGEtPnN0cmVhbS5nZXQoKSksIGRhdGFSZWZlcmVuY2UuZGF0
YSgpLCBkYXRhUmVmZXJlbmNlLnNpemUoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZ190YXNrX3Jl
dHVybl9wb2ludGVyKHRhc2suZ2V0KCksIGRhdGEtPnN0cmVhbS5nZXQoKSwgZ19vYmplY3RfdW5y
ZWYpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGdfY2FuY2VsbGFibGVfaXNf
Y2FuY2VsbGVkKGRhdGEtPmNhbmNlbGxhYmxlLmdldCgpKSB8fCAhZGF0YS0+cmVxdWVzdCkgewot
ICAgICAgICAvLyBSZXNvdXJjZVJlcXVlc3QgZmFpbGVkIG9yIGl0IHdhcyBjYW5jZWxsZWQuIEl0
IGRvZXNuJ3QgbWF0dGVyIGhlcmUgdGhlIGVycm9yIG9yIGlmIGl0IHdhcyBjYW5jZWxsZWQsCi0g
ICAgICAgIC8vIGJlY2F1c2UgdGhhdCdzIGFscmVhZHkgaGFuZGxlZCBieSB0aGUgcmVzb3VyY2Ug
aGFuZGxlIGNsaWVudCwgd2UganVzdCB3YW50IHRvIG5vdGlmeSB0aGUgVUkgcHJvY2VzcwotICAg
ICAgICAvLyB0byBzdG9wIHJlYWRpbmcgZGF0YSBmcm9tIHRoZSB1c2VyIGlucHV0IHN0cmVhbS4g
SWYgVUkgcHJvY2VzcyBhbHJlYWR5IHNlbnQgYWxsIHRoZSBkYXRhIHdlIHNpbXBseQotICAgICAg
ICAvLyBmaW5pc2ggc2lsZW50bHkuCi0gICAgICAgIGlmICghd2Via2l0U291cFJlcXVlc3RJbnB1
dFN0cmVhbUZpbmlzaGVkKFdFQktJVF9TT1VQX1JFUVVFU1RfSU5QVVRfU1RSRUFNKGRhdGEtPnN0
cmVhbS5nZXQoKSkpKQotICAgICAgICAgICAgc3RvcExvYWRpbmcoY3VzdG9tUHJvdG9jb2xJRCk7
Ci0KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHdlYmtpdFNvdXBSZXF1ZXN0SW5wdXRT
dHJlYW1BZGREYXRhKFdFQktJVF9TT1VQX1JFUVVFU1RfSU5QVVRfU1RSRUFNKGRhdGEtPnN0cmVh
bS5nZXQoKSksIGRhdGFSZWZlcmVuY2UuZGF0YSgpLCBkYXRhUmVmZXJlbmNlLnNpemUoKSk7Ci19
Ci0KLXZvaWQgTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpkaWRSZWNlaXZlUmVzcG9uc2Uo
dWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UsIHVpbnQzMl90KQotewotICAgIGF1dG8qIGRhdGEgPSBtX2N1c3RvbVByb3RvY29sTWFwLmdl
dChjdXN0b21Qcm90b2NvbElEKTsKLSAgICAvLyBUaGUgZGF0YSBtaWdodCBoYXZlIGJlZW4gcmVt
b3ZlZCBmcm9tIHRoZSByZXF1ZXN0IG1hcCBpZiBhbiBlcnJvciBoYXBwZW5lZCBldmVuIGJlZm9y
ZSB0aGlzIHBvaW50LgotICAgIGlmICghZGF0YSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQVNT
RVJUKGRhdGEtPnRhc2spOwotCi0gICAgV2ViS2l0U291cFJlcXVlc3RHZW5lcmljKiByZXF1ZXN0
ID0gV0VCS0lUX1NPVVBfUkVRVUVTVF9HRU5FUklDKGdfdGFza19nZXRfc291cmNlX29iamVjdChk
YXRhLT50YXNrLmdldCgpKSk7Ci0gICAgd2Via2l0U291cFJlcXVlc3RHZW5lcmljU2V0Q29udGVu
dExlbmd0aChyZXF1ZXN0LCByZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKSA/IHJlc3Bv
bnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpIDogLTEpOwotICAgIHdlYmtpdFNvdXBSZXF1ZXN0
R2VuZXJpY1NldENvbnRlbnRUeXBlKHJlcXVlc3QsICFyZXNwb25zZS5taW1lVHlwZSgpLmlzRW1w
dHkoKSA/IHJlc3BvbnNlLm1pbWVUeXBlKCkudXRmOCgpLmRhdGEoKSA6IDApOwotfQotCi12b2lk
IExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcjo6ZGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBj
dXN0b21Qcm90b2NvbElEKQotewotICAgIEFTU0VSVChtX2N1c3RvbVByb3RvY29sTWFwLmNvbnRh
aW5zKGN1c3RvbVByb3RvY29sSUQpKTsKLSAgICByZW1vdmVDdXN0b21Qcm90b2NvbChjdXN0b21Q
cm90b2NvbElEKTsKLX0KLQotdm9pZCBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXI6Ondhc1Jl
ZGlyZWN0ZWRUb1JlcXVlc3QodWludDY0X3QsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcAppbmRleCBmNTJmNDBmYmRjZC4uYWVlNjhjZjJmYmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0xNjEsNyAr
MTYxLDcgQEAgTmV0d29ya1Byb2Nlc3M6Ok5ldHdvcmtQcm9jZXNzKEF1eGlsaWFyeVByb2Nlc3NJ
bml0aWFsaXphdGlvblBhcmFtZXRlcnMmJiBwYXJhbWUKICNpZiBFTkFCTEUoTEVHQUNZX0NVU1RP
TV9QUk9UT0NPTF9NQU5BR0VSKQogICAgIGFkZFN1cHBsZW1lbnQ8TGVnYWN5Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyPigpOwogI2VuZGlmCi0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShTT1VQKQor
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcjo6bmV0
d29ya1Byb2Nlc3NDcmVhdGVkKCp0aGlzKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViS2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViS2l0U291cFJlcXVlc3RJ
bnB1dFN0cmVhbS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg3NDUyNWUzOGNl
Li4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2Vi
S2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODQgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgotICoKLSAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
LSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiV2ViS2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbS5oIgotCi0jaW5j
bHVkZSA8d3RmL01haW5UaHJlYWQuaD4KLSNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgotI2luY2x1
ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+
Ci0KLXN0cnVjdCBBc3luY1JlYWREYXRhIHsKLSAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExP
Q0FURUQ7Ci0gICAgQXN5bmNSZWFkRGF0YShHUmVmUHRyPEdUYXNrPiYmIHRhc2ssIHZvaWQqIGJ1
ZmZlciwgZ3NpemUgY291bnQpCi0gICAgICAgIDogdGFzayhXVEZNb3ZlKHRhc2spKQotICAgICAg
ICAsIGJ1ZmZlcihidWZmZXIpCi0gICAgICAgICwgY291bnQoY291bnQpCi0gICAgewotICAgIH0K
LQotICAgIEdSZWZQdHI8R1Rhc2s+IHRhc2s7Ci0gICAgdm9pZCogYnVmZmVyOwotICAgIHNpemVf
dCBjb3VudDsKLX07Ci0KLXN0cnVjdCBfV2ViS2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbVByaXZh
dGUgewotICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKLSAgICB1aW50NjRfdCBj
b250ZW50TGVuZ3RoOwotICAgIHVpbnQ2NF90IGJ5dGVzUmVjZWl2ZWQ7Ci0gICAgdWludDY0X3Qg
Ynl0ZXNSZWFkOwotCi0gICAgR1VuaXF1ZVB0cjxHRXJyb3I+IGVycm9yOwotCi0gICAgc3RkOjp1
bmlxdWVfcHRyPEFzeW5jUmVhZERhdGE+IHBlbmRpbmdBc3luY1JlYWQ7Ci19OwotCi1HX0RFRklO
RV9UWVBFKFdlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW0sIHdlYmtpdF9zb3VwX3JlcXVlc3Rf
aW5wdXRfc3RyZWFtLCBHX1RZUEVfTUVNT1JZX0lOUFVUX1NUUkVBTSkKLQotc3RhdGljIHZvaWQg
d2Via2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbVJlYWRBc3luY1Jlc3VsdENvbXBsZXRlKEdUYXNr
KiB0YXNrLCB2b2lkKiBidWZmZXIsIGdzaXplIGNvdW50KQotewotICAgIFdlYktpdFNvdXBSZXF1
ZXN0SW5wdXRTdHJlYW0qIHN0cmVhbSA9IFdFQktJVF9TT1VQX1JFUVVFU1RfSU5QVVRfU1RSRUFN
KGdfdGFza19nZXRfc291cmNlX29iamVjdCh0YXNrKSk7Ci0gICAgR0Vycm9yKiBlcnJvciA9IG51
bGxwdHI7Ci0gICAgZ3NzaXplIGJ5dGVzUmVhZCA9IEdfSU5QVVRfU1RSRUFNX0dFVF9DTEFTUyhz
dHJlYW0pLT5yZWFkX2ZuKEdfSU5QVVRfU1RSRUFNKHN0cmVhbSksIGJ1ZmZlciwgY291bnQsIGdf
dGFza19nZXRfY2FuY2VsbGFibGUodGFzayksICZlcnJvcik7Ci0gICAgaWYgKCFlcnJvcikgewot
ICAgICAgICBzdHJlYW0tPnByaXYtPmJ5dGVzUmVhZCArPSBieXRlc1JlYWQ7Ci0gICAgICAgIGdf
dGFza19yZXR1cm5faW50KHRhc2ssIGJ5dGVzUmVhZCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIGdf
dGFza19yZXR1cm5fZXJyb3IodGFzaywgZXJyb3IpOwotfQotCi1zdGF0aWMgdm9pZCB3ZWJraXRT
b3VwUmVxdWVzdElucHV0U3RyZWFtUGVuZGluZ1JlYWRBc3luY0NvbXBsZXRlKFdlYktpdFNvdXBS
ZXF1ZXN0SW5wdXRTdHJlYW0qIHN0cmVhbSkKLXsKLSAgICBpZiAoYXV0byBkYXRhID0gV1RGTW92
ZShzdHJlYW0tPnByaXYtPnBlbmRpbmdBc3luY1JlYWQpKQotICAgICAgICB3ZWJraXRTb3VwUmVx
dWVzdElucHV0U3RyZWFtUmVhZEFzeW5jUmVzdWx0Q29tcGxldGUoZGF0YS0+dGFzay5nZXQoKSwg
ZGF0YS0+YnVmZmVyLCBkYXRhLT5jb3VudCk7Ci19Ci0KLXN0YXRpYyBib29sIHdlYmtpdFNvdXBS
ZXF1ZXN0SW5wdXRTdHJlYW1IYXNEYXRhVG9SZWFkKFdlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJl
YW0qIHN0cmVhbSkKLXsKLSAgICByZXR1cm4gc3RyZWFtLT5wcml2LT5ieXRlc1JlYWQgPCBzdHJl
YW0tPnByaXYtPmJ5dGVzUmVjZWl2ZWQ7Ci19Ci0KLXN0YXRpYyBib29sIHdlYmtpdFNvdXBSZXF1
ZXN0SW5wdXRTdHJlYW1Jc1dhaXRpbmdGb3JEYXRhKFdlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJl
YW0qIHN0cmVhbSkKLXsKLSAgICByZXR1cm4gIXN0cmVhbS0+cHJpdi0+Y29udGVudExlbmd0aCB8
fCBzdHJlYW0tPnByaXYtPmJ5dGVzUmVjZWl2ZWQgPCBzdHJlYW0tPnByaXYtPmNvbnRlbnRMZW5n
dGg7Ci19Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW1SZWFkQXN5
bmMoR0lucHV0U3RyZWFtKiBpbnB1dFN0cmVhbSwgdm9pZCogYnVmZmVyLCBnc2l6ZSBjb3VudCwg
aW50IC8qcHJpb3JpdHkqLywgR0NhbmNlbGxhYmxlKiBjYW5jZWxsYWJsZSwgR0FzeW5jUmVhZHlD
YWxsYmFjayBjYWxsYmFjaywgZ3BvaW50ZXIgdXNlckRhdGEpCi17Ci0gICAgQVNTRVJUKFJ1bkxv
b3A6OmlzTWFpbigpKTsKLSAgICBXZWJLaXRTb3VwUmVxdWVzdElucHV0U3RyZWFtKiBzdHJlYW0g
PSBXRUJLSVRfU09VUF9SRVFVRVNUX0lOUFVUX1NUUkVBTShpbnB1dFN0cmVhbSk7Ci0gICAgR1Jl
ZlB0cjxHVGFzaz4gdGFzayA9IGFkb3B0R1JlZihnX3Rhc2tfbmV3KHN0cmVhbSwgY2FuY2VsbGFi
bGUsIGNhbGxiYWNrLCB1c2VyRGF0YSkpOwotCi0gICAgaWYgKCF3ZWJraXRTb3VwUmVxdWVzdElu
cHV0U3RyZWFtSGFzRGF0YVRvUmVhZChzdHJlYW0pICYmICF3ZWJraXRTb3VwUmVxdWVzdElucHV0
U3RyZWFtSXNXYWl0aW5nRm9yRGF0YShzdHJlYW0pKSB7Ci0gICAgICAgIGdfdGFza19yZXR1cm5f
aW50KHRhc2suZ2V0KCksIDApOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKHN0
cmVhbS0+cHJpdi0+ZXJyb3IuZ2V0KCkpIHsKLSAgICAgICAgZ190YXNrX3JldHVybl9lcnJvcih0
YXNrLmdldCgpLCBzdHJlYW0tPnByaXYtPmVycm9yLnJlbGVhc2UoKSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBpZiAod2Via2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbUhhc0RhdGFU
b1JlYWQoc3RyZWFtKSkgewotICAgICAgICB3ZWJraXRTb3VwUmVxdWVzdElucHV0U3RyZWFtUmVh
ZEFzeW5jUmVzdWx0Q29tcGxldGUodGFzay5nZXQoKSwgYnVmZmVyLCBjb3VudCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBzdHJlYW0tPnByaXYtPnBlbmRpbmdBc3luY1JlYWQgPSBt
YWtlVW5pcXVlPEFzeW5jUmVhZERhdGE+KFdURk1vdmUodGFzayksIGJ1ZmZlciwgY291bnQpOwot
fQotCi1zdGF0aWMgZ3NzaXplIHdlYmtpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW1SZWFkRmluaXNo
KEdJbnB1dFN0cmVhbSogaW5wdXRTdHJlYW0sIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBHRXJyb3Iq
KiBlcnJvcikKLXsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChnX3Rhc2tfaXNfdmFsaWQocmVz
dWx0LCBpbnB1dFN0cmVhbSksIDApOwotCi0gICAgcmV0dXJuIGdfdGFza19wcm9wYWdhdGVfaW50
KEdfVEFTSyhyZXN1bHQpLCBlcnJvcik7Ci19Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdFNvdXBSZXF1
ZXN0SW5wdXRTdHJlYW1GaW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCi17Ci0gICAgV0VCS0lUX1NP
VVBfUkVRVUVTVF9JTlBVVF9TVFJFQU0ob2JqZWN0KS0+cHJpdi0+fldlYktpdFNvdXBSZXF1ZXN0
SW5wdXRTdHJlYW1Qcml2YXRlKCk7Ci0gICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X3NvdXBfcmVx
dWVzdF9pbnB1dF9zdHJlYW1fcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKLX0KLQot
c3RhdGljIHZvaWQgd2Via2l0X3NvdXBfcmVxdWVzdF9pbnB1dF9zdHJlYW1faW5pdChXZWJLaXRT
b3VwUmVxdWVzdElucHV0U3RyZWFtKiBzdHJlYW0pCi17Ci0gICAgV2ViS2l0U291cFJlcXVlc3RJ
bnB1dFN0cmVhbVByaXZhdGUqIHByaXYgPSBHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUoc3Ry
ZWFtLCBXRUJLSVRfVFlQRV9TT1VQX1JFUVVFU1RfSU5QVVRfU1RSRUFNLCBXZWJLaXRTb3VwUmVx
dWVzdElucHV0U3RyZWFtUHJpdmF0ZSk7Ci0gICAgc3RyZWFtLT5wcml2ID0gcHJpdjsKLSAgICBu
ZXcgKHByaXYpIFdlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW1Qcml2YXRlKCk7Ci19Ci0KLXN0
YXRpYyB2b2lkIHdlYmtpdF9zb3VwX3JlcXVlc3RfaW5wdXRfc3RyZWFtX2NsYXNzX2luaXQoV2Vi
S2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbUNsYXNzKiByZXF1ZXN0U3RyZWFtQ2xhc3MpCi17Ci0g
ICAgR09iamVjdENsYXNzKiBnT2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhyZXF1ZXN0U3Ry
ZWFtQ2xhc3MpOwotICAgIGdPYmplY3RDbGFzcy0+ZmluYWxpemUgPSB3ZWJraXRTb3VwUmVxdWVz
dElucHV0U3RyZWFtRmluYWxpemU7Ci0KLSAgICBHSW5wdXRTdHJlYW1DbGFzcyogaW5wdXRTdHJl
YW1DbGFzcyA9IEdfSU5QVVRfU1RSRUFNX0NMQVNTKHJlcXVlc3RTdHJlYW1DbGFzcyk7Ci0gICAg
aW5wdXRTdHJlYW1DbGFzcy0+cmVhZF9hc3luYyA9IHdlYmtpdFNvdXBSZXF1ZXN0SW5wdXRTdHJl
YW1SZWFkQXN5bmM7Ci0gICAgaW5wdXRTdHJlYW1DbGFzcy0+cmVhZF9maW5pc2ggPSB3ZWJraXRT
b3VwUmVxdWVzdElucHV0U3RyZWFtUmVhZEZpbmlzaDsKLQotICAgIGdfdHlwZV9jbGFzc19hZGRf
cHJpdmF0ZShyZXF1ZXN0U3RyZWFtQ2xhc3MsIHNpemVvZihXZWJLaXRTb3VwUmVxdWVzdElucHV0
U3RyZWFtUHJpdmF0ZSkpOwotfQotCi1HSW5wdXRTdHJlYW0qIHdlYmtpdFNvdXBSZXF1ZXN0SW5w
dXRTdHJlYW1OZXcodWludDY0X3QgY29udGVudExlbmd0aCkKLXsKLSAgICBXZWJLaXRTb3VwUmVx
dWVzdElucHV0U3RyZWFtKiBzdHJlYW0gPSBXRUJLSVRfU09VUF9SRVFVRVNUX0lOUFVUX1NUUkVB
TShnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfU09VUF9SRVFVRVNUX0lOUFVUX1NUUkVBTSwgTlVM
TCkpOwotICAgIHN0cmVhbS0+cHJpdi0+Y29udGVudExlbmd0aCA9IGNvbnRlbnRMZW5ndGg7Ci0g
ICAgcmV0dXJuIEdfSU5QVVRfU1RSRUFNKHN0cmVhbSk7Ci19Ci0KLXZvaWQgd2Via2l0U291cFJl
cXVlc3RJbnB1dFN0cmVhbUFkZERhdGEoV2ViS2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbSogc3Ry
ZWFtLCBjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKLXsKLSAgICBBU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOwotCi0gICAgaWYgKHdlYmtpdFNvdXBSZXF1ZXN0SW5wdXRTdHJl
YW1GaW5pc2hlZChzdHJlYW0pKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoZGF0YUxlbmd0
aCkgewotICAgICAgICAvLyBUcnVuY2F0ZSB0aGUgZGF0YUxlbmd0aCB0byB0aGUgY29udGVudExl
bmd0aCBpZiBpdCdzIGtub3duLgotICAgICAgICBpZiAoc3RyZWFtLT5wcml2LT5jb250ZW50TGVu
Z3RoICYmIHN0cmVhbS0+cHJpdi0+Ynl0ZXNSZWNlaXZlZCArIGRhdGFMZW5ndGggPiBzdHJlYW0t
PnByaXYtPmNvbnRlbnRMZW5ndGgpCi0gICAgICAgICAgICBkYXRhTGVuZ3RoID0gc3RyZWFtLT5w
cml2LT5jb250ZW50TGVuZ3RoIC0gc3RyZWFtLT5wcml2LT5ieXRlc1JlY2VpdmVkOwotICAgICAg
ICBzdHJlYW0tPnByaXYtPmJ5dGVzUmVjZWl2ZWQgKz0gZGF0YUxlbmd0aDsKLSAgICAgICAgZ19t
ZW1vcnlfaW5wdXRfc3RyZWFtX2FkZF9kYXRhKEdfTUVNT1JZX0lOUFVUX1NUUkVBTShzdHJlYW0p
LCBnX21lbWR1cChkYXRhLCBkYXRhTGVuZ3RoKSwgZGF0YUxlbmd0aCwgZ19mcmVlKTsKLSAgICB9
IGVsc2UgewotICAgICAgICAvLyBXZSBoYXZlIHJlY2VpdmVkIGFsbCB0aGUgZGF0YSwgc2V0IGNv
bnRlbnRMZW5ndGggdG8gYnl0ZXNSZWNlaXZlZCB0byBpbmRpY2F0ZSB3ZSBoYXZlIGZpbmlzaGVk
LgotICAgICAgICBzdHJlYW0tPnByaXYtPmNvbnRlbnRMZW5ndGggPSBzdHJlYW0tPnByaXYtPmJ5
dGVzUmVjZWl2ZWQ7Ci0gICAgICAgIC8vIElmIHRoZXJlJ3MgYSBwZW5kaW5nIHJlYWQgdG8gY29t
cGxldGUsIHJlYWRfZm4gd2lsbCByZXR1cm4gMCBiZWNhdXNlIHdlIGhhdmVuJ3QgYWRkZWQgbW9y
ZSBkYXRhIHRvIHRoZQotICAgICAgICAvLyBtZW1vcnkgaW5wdXQgc3RyZWFtLiBBbmQgaWYgdGhl
cmUgaXNuJ3QgYSBwZW5kaW5nIHJlYWQsIHRoZSBuZXh0IGNhbGwgdG8gcmVhZF9hc3luYyB3aWxs
IHJldHVybiAwIHRvbywgYmVjYXVzZQotICAgICAgICAvLyB3ZWJraXRTb3VwUmVxdWVzdElucHV0
U3RyZWFtRmluaXNoZWQoKSBpcyBub3cgVFJVRS4KLSAgICB9Ci0KLSAgICB3ZWJraXRTb3VwUmVx
dWVzdElucHV0U3RyZWFtUGVuZGluZ1JlYWRBc3luY0NvbXBsZXRlKHN0cmVhbSk7Ci19Ci0KLXZv
aWQgd2Via2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbURpZEZhaWxXaXRoRXJyb3IoV2ViS2l0U291
cFJlcXVlc3RJbnB1dFN0cmVhbSogc3RyZWFtLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
JiByZXNvdXJjZUVycm9yKQotewotICAgIEdVbmlxdWVQdHI8R0Vycm9yPiBlcnJvcihnX2Vycm9y
X25ldyhnX3F1YXJrX2Zyb21fc3RyaW5nKHJlc291cmNlRXJyb3IuZG9tYWluKCkudXRmOCgpLmRh
dGEoKSksIHJlc291cmNlRXJyb3IuZXJyb3JDb2RlKCksICIlcyIsIHJlc291cmNlRXJyb3IubG9j
YWxpemVkRGVzY3JpcHRpb24oKS51dGY4KCkuZGF0YSgpKSk7Ci0gICAgaWYgKGF1dG8gZGF0YSA9
IFdURk1vdmUoc3RyZWFtLT5wcml2LT5wZW5kaW5nQXN5bmNSZWFkKSkKLSAgICAgICAgZ190YXNr
X3JldHVybl9lcnJvcihkYXRhLT50YXNrLmdldCgpLCBlcnJvci5yZWxlYXNlKCkpOwotICAgIGVs
c2UgewotICAgICAgICBzdHJlYW0tPnByaXYtPmNvbnRlbnRMZW5ndGggPSBzdHJlYW0tPnByaXYt
PmJ5dGVzUmVjZWl2ZWQ7Ci0gICAgICAgIHN0cmVhbS0+cHJpdi0+ZXJyb3IgPSBXVEZNb3ZlKGVy
cm9yKTsKLSAgICB9Ci19Ci0KLWJvb2wgd2Via2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbUZpbmlz
aGVkKFdlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW0qIHN0cmVhbSkKLXsKLSAgICByZXR1cm4g
IXdlYmtpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW1Jc1dhaXRpbmdGb3JEYXRhKHN0cmVhbSk7Ci19
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViS2l0U291
cFJlcXVlc3RJbnB1dFN0cmVhbS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3Vw
L1dlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW0uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMzk5YjBiNDVkNmYuLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvc291cC9XZWJLaXRTb3VwUmVxdWVzdElucHV0U3RyZWFtLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw1NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwu
Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAot
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0K
LSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+Ci0jaW5j
bHVkZSA8Z2lvL2dpby5oPgotCi1HX0JFR0lOX0RFQ0xTCi0KLSNkZWZpbmUgV0VCS0lUX1RZUEVf
U09VUF9SRVFVRVNUX0lOUFVUX1NUUkVBTSAgICAgICAgICAgICh3ZWJraXRfc291cF9yZXF1ZXN0
X2lucHV0X3N0cmVhbV9nZXRfdHlwZSgpKQotI2RlZmluZSBXRUJLSVRfU09VUF9SRVFVRVNUX0lO
UFVUX1NUUkVBTShvYmplY3QpICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChv
YmplY3QpLCBXRUJLSVRfVFlQRV9TT1VQX1JFUVVFU1RfSU5QVVRfU1RSRUFNLCBXZWJLaXRTb3Vw
UmVxdWVzdElucHV0U3RyZWFtKSkKLSNkZWZpbmUgV0VCS0lUX0lTX1NPVVBfUkVRVUVTVF9JTlBV
VF9TVFJFQU0ob2JqZWN0KSAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqZWN0
KSwgV0VCS0lUX1RZUEVfU09VUF9SRVFVRVNUX0lOUFVUX1NUUkVBTSkpCi0jZGVmaW5lIFdFQktJ
VF9TT1VQX1JFUVVFU1RfSU5QVVRfU1RSRUFNX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNL
X0NMQVNTX0NBU1QoKGtsYXNzKSwgV0VCS0lUX1RZUEVfU09VUF9SRVFVRVNUX0lOUFVUX1NUUkVB
TSwgV2ViS2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbUNsYXNzKSkKLSNkZWZpbmUgV0VCS0lUX0lT
X1NPVVBfUkVRVUVTVF9JTlBVVF9TVFJFQU1fQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xB
U1NfVFlQRSgoa2xhc3MpLCBXRUJLSVRfVFlQRV9TT1VQX1JFUVVFU1RfSU5QVVRfU1RSRUFNKSkK
LSNkZWZpbmUgV0VCS0lUX1NPVVBfUkVRVUVTVF9JTlBVVF9TVFJFQU1fR0VUX0NMQVNTKG9iaikg
IChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCBXRUJLSVRfVFlQRV9TT1VQX1JFUVVF
U1RfSU5QVVRfU1RSRUFNLCBXZWJLaXRTb3VwUmVxdWVzdElucHV0U3RyZWFtQ2xhc3MpKQotCi10
eXBlZGVmIHN0cnVjdCBfV2ViS2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbSBXZWJLaXRTb3VwUmVx
dWVzdElucHV0U3RyZWFtOwotdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFNvdXBSZXF1ZXN0SW5wdXRT
dHJlYW1DbGFzcyBXZWJLaXRTb3VwUmVxdWVzdElucHV0U3RyZWFtQ2xhc3M7Ci10eXBlZGVmIHN0
cnVjdCBfV2ViS2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbVByaXZhdGUgV2ViS2l0U291cFJlcXVl
c3RJbnB1dFN0cmVhbVByaXZhdGU7Ci0KLXN0cnVjdCBfV2ViS2l0U291cFJlcXVlc3RJbnB1dFN0
cmVhbSB7Ci0gICAgR01lbW9yeUlucHV0U3RyZWFtIHBhcmVudDsKLQotICAgIFdlYktpdFNvdXBS
ZXF1ZXN0SW5wdXRTdHJlYW1Qcml2YXRlKiBwcml2OwotfTsKLQotc3RydWN0IF9XZWJLaXRTb3Vw
UmVxdWVzdElucHV0U3RyZWFtQ2xhc3MgewotICAgIEdNZW1vcnlJbnB1dFN0cmVhbUNsYXNzIHBh
cmVudDsKLX07Ci0KLUdUeXBlIHdlYmtpdF9zb3VwX3JlcXVlc3RfaW5wdXRfc3RyZWFtX2dldF90
eXBlKCk7Ci1HSW5wdXRTdHJlYW0qIHdlYmtpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW1OZXcodWlu
dDY0X3QgY29udGVudExlbmd0aCk7Ci12b2lkIHdlYmtpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW1B
ZGREYXRhKFdlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW0qLCBjb25zdCB2b2lkKiBkYXRhLCBz
aXplX3QgZGF0YUxlbmd0aCk7Ci12b2lkIHdlYmtpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW1EaWRG
YWlsV2l0aEVycm9yKFdlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW0qLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJik7Ci1ib29sIHdlYmtpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW1GaW5p
c2hlZChXZWJLaXRTb3VwUmVxdWVzdElucHV0U3RyZWFtKik7Ci0KLUdfRU5EX0RFQ0xTCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybUdUSy5jbWFrZQppbmRleCAyYmY1ZDBlMWExNi4uM2YzOWFlMzU3YTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybUdUSy5jbWFrZQpAQCAtMzMsMTIgKzMzLDggQEAgbGlzdChBUFBFTkQgV2ViS2l0X1VO
SUZJRURfU09VUkNFX0xJU1RfRklMRVMKICkKIAogbGlzdChBUFBFTkQgV2ViS2l0X01FU1NBR0VT
X0lOX0ZJTEVTCi0gICAgTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3Rv
bVByb3RvY29sTWFuYWdlci5tZXNzYWdlcy5pbgotCiAgICAgVUlQcm9jZXNzL1ZpZXdHZXN0dXJl
Q29udHJvbGxlci5tZXNzYWdlcy5pbgogCi0gICAgVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJv
dG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCi0KICAg
ICBXZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5tZXNzYWdl
cy5pbgogKQogCkBAIC0zNzMsNyArMzY5LDYgQEAgbGlzdChBUFBFTkQgV2ViS2l0X0lOQ0xVREVf
RElSRUNUT1JJRVMKICAgICAiJHtGT1JXQVJESU5HX0hFQURFUlNfRElSfS9KYXZhU2NyaXB0Q29y
ZS8iCiAgICAgIiR7Rk9SV0FSRElOR19IRUFERVJTX0RJUn0vSmF2YVNjcmlwdENvcmUvZ2xpYiIK
ICAgICAiJHtXRUJLSVRfRElSfS9QbHVnaW5Qcm9jZXNzL3VuaXgiCi0gICAgIiR7V0VCS0lUX0RJ
Un0vTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL3NvdXAiCiAgICAgIiR7V0VCS0lUX0RJ
Un0vTmV0d29ya1Byb2Nlc3MvZ2xpYiIKICAgICAiJHtXRUJLSVRfRElSfS9OZXR3b3JrUHJvY2Vz
cy9ndGsiCiAgICAgIiR7V0VCS0lUX0RJUn0vTmV0d29ya1Byb2Nlc3Mvc291cCIKQEAgLTM5Niw3
ICszOTEsNiBAQCBsaXN0KEFQUEVORCBXZWJLaXRfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIk
e1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ2xpYiIKICAgICAiJHtXRUJLSVRfRElSfS9VSVBy
b2Nlc3MvQVBJL2d0ayIKICAgICAiJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcyIKLSAgICAiJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90
b2NvbHMvc291cCIKICAgICAiJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvUGx1Z2lucy9ndGsiCiAg
ICAgIiR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL2dlb2NsdWUiCiAgICAgIiR7V0VCS0lUX0RJUn0v
VUlQcm9jZXNzL2dsaWIiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV1BFLmNt
YWtlIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdQRS5jbWFrZQppbmRleCA1NzBhNDFjYjVkOC4u
ODk3NzQyMWJiMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1XUEUuY21ha2UK
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdQRS5jbWFrZQpAQCAtNzUsMTIgKzc1LDYgQEAg
bGlzdChBUFBFTkQgV2ViS2l0X1VOSUZJRURfU09VUkNFX0xJU1RfRklMRVMKICAgICAiU291cmNl
c1dQRS50eHQiCiApCiAKLWxpc3QoQVBQRU5EIFdlYktpdF9NRVNTQUdFU19JTl9GSUxFUwotICAg
IE5ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFn
ZXIubWVzc2FnZXMuaW4KLQotICAgIFVJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9M
ZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgotKQotCiBsaXN0KEFQ
UEVORCBXZWJLaXRfREVSSVZFRF9TT1VSQ0VTCiAgICAgJHtXZWJLaXRfREVSSVZFRF9TT1VSQ0VT
X0RJUn0vV2ViS2l0UmVzb3VyY2VzR1Jlc291cmNlQnVuZGxlLmMKIApAQCAtMjMyLDcgKzIyNiw2
IEBAIGxpc3QoQVBQRU5EIFdlYktpdF9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7Rk9SV0FS
RElOR19IRUFERVJTX1dQRV9ET01fRElSfSIKICAgICAiJHtERVJJVkVEX1NPVVJDRVNfRElSfSIK
ICAgICAiJHtERVJJVkVEX1NPVVJDRVNfV1BFX0FQSV9ESVJ9IgotICAgICIke1dFQktJVF9ESVJ9
L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9zb3VwIgogICAgICIke1dFQktJVF9ESVJ9
L05ldHdvcmtQcm9jZXNzL2dsaWIiCiAgICAgIiR7V0VCS0lUX0RJUn0vTmV0d29ya1Byb2Nlc3Mv
c291cCIKICAgICAiJHtXRUJLSVRfRElSfS9OZXR3b3JrUHJvY2Vzcy91bml4IgpAQCAtMjUyLDcg
KzI0NSw2IEBAIGxpc3QoQVBQRU5EIFdlYktpdF9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7
V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS9nbGliIgogICAgICIke1dFQktJVF9ESVJ9L1VJUHJv
Y2Vzcy9BUEkvd3BlIgogICAgICIke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdy
YXBoaWNzIgotICAgICIke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3Rv
Y29scy9zb3VwIgogICAgICIke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9nZW9jbHVlIgogICAgICIk
e1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9nc3RyZWFtZXIiCiAgICAgIiR7V0VCS0lUX0RJUn0vVUlQ
cm9jZXNzL2xpbnV4IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dCBi
L1NvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQKaW5kZXggNTVkMThjMjZkZjcuLjFlNGU0MmNk
ZGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0CisrKyBiL1NvdXJj
ZS9XZWJLaXQvU291cmNlc0dUSy50eHQKQEAgLTI2LDEwICsyNiw2IEBAIE5ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5jcHAKIAogTmV0
d29ya1Byb2Nlc3MvQ29va2llcy9zb3VwL1dlYkNvb2tpZU1hbmFnZXJTb3VwLmNwcAogCi1OZXR3
b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmNw
cAotCi1OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvc291cC9MZWdhY3lDdXN0b21Qcm90
b2NvbE1hbmFnZXJTb3VwLmNwcAotCiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVE
YXRhU291cC5jcHAKIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbFNv
dXAuY3BwCiAKQEAgLTQxLDcgKzM3LDYgQEAgTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJv
Y2Vzc01haW5Tb3VwLmNwcAogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAu
Y3BwCiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5jcHAKIE5ldHdvcmtQ
cm9jZXNzL3NvdXAvUmVtb3RlTmV0d29ya2luZ0NvbnRleHRTb3VwLmNwcAotTmV0d29ya1Byb2Nl
c3Mvc291cC9XZWJLaXRTb3VwUmVxdWVzdElucHV0U3RyZWFtLmNwcAogTmV0d29ya1Byb2Nlc3Mv
c291cC9XZWJTb2NrZXRUYXNrU291cC5jcHAKIAogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL0xpYldl
YlJUQ1NvY2tldENsaWVudC5jcHAKQEAgLTEzNCw3ICsxMjksNiBAQCBVSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0QmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0Q29udGV4dE1lbnVDbGllbnQuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdENvb2tpZU1hbmFnZXIuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdENyZWRlbnRpYWwuY3BwIEBuby11bmlmeQotVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0RGV2aWNlSW5mb1Blcm1pc3Npb25SZXF1ZXN0LmNwcCBAbm8tdW5pZnkK
IFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXREb3dubG9hZC5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0RG93bmxvYWRDbGllbnQuY3BwIEBuby11bmlmeQpAQCAtMjE1LDgg
KzIwOSw2IEBAIFVJUHJvY2Vzcy9nZW9jbHVlL0dlb2NsdWVHZW9sb2NhdGlvblByb3ZpZGVyLmNw
cAogVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvUHJvY2Vzc0xhdW5jaGVyR0xpYi5jcHAgQG5vLXVu
aWZ5CiBVSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9CdWJibGV3cmFwTGF1bmNoZXIuY3BwIEBuby11
bmlmeQogCi1VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJv
dG9jb2xNYW5hZ2VyUHJveHkuY3BwCi0KIFVJUHJvY2Vzcy9saW51eC9NZW1vcnlQcmVzc3VyZU1v
bml0b3IuY3BwCiAKIFVJUHJvY2Vzcy9QbHVnaW5zL2d0ay9QbHVnaW5JbmZvQ2FjaGUuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNXUEUudHh0IGIvU291cmNlL1dlYktpdC9T
b3VyY2VzV1BFLnR4dAppbmRleCAyNDg1YmI2MWE5ZC4uYTIyZTRmMTA5OTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2Vz
V1BFLnR4dApAQCAtMjYsMTAgKzI2LDYgQEAgTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5LmNwcAogCiBOZXR3b3JrUHJvY2Vzcy9Db29r
aWVzL3NvdXAvV2ViQ29va2llTWFuYWdlclNvdXAuY3BwCiAKLU5ldHdvcmtQcm9jZXNzL0N1c3Rv
bVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuY3BwCi0KLU5ldHdvcmtQcm9j
ZXNzL0N1c3RvbVByb3RvY29scy9zb3VwL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclNvdXAu
Y3BwCi0KIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGFTb3VwLmNwcAogTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsU291cC5jcHAKIApAQCAtNDEs
NyArMzcsNiBAQCBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzTWFpblNvdXAuY3Bw
CiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKIE5ldHdvcmtQcm9j
ZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmNwcAogTmV0d29ya1Byb2Nlc3Mvc291cC9SZW1v
dGVOZXR3b3JraW5nQ29udGV4dFNvdXAuY3BwCi1OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYktpdFNv
dXBSZXF1ZXN0SW5wdXRTdHJlYW0uY3BwCiBOZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRh
c2tTb3VwLmNwcAogCiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDU29ja2V0Q2xpZW50
LmNwcApAQCAtMTIzLDcgKzExOCw2IEBAIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRCYWNrRm9y
d2FyZExpc3RJdGVtLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDb250
ZXh0TWVudUNsaWVudC5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q29v
a2llTWFuYWdlci5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q3JlZGVu
dGlhbC5jcHAgQG5vLXVuaWZ5Ci1VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyQ2xpZW50LmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRE
ZXZpY2VJbmZvUGVybWlzc2lvblJlcXVlc3QuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdERvd25sb2FkLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXREb3dubG9hZENsaWVudC5jcHAgQG5vLXVuaWZ5CkBAIC0xOTcsOCArMTkxLDYgQEAgVUlQcm9j
ZXNzL2dsaWIvV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0xh
dW5jaGVyL2dsaWIvUHJvY2Vzc0xhdW5jaGVyR0xpYi5jcHAKIFVJUHJvY2Vzcy9MYXVuY2hlci9n
bGliL0J1YmJsZXdyYXBMYXVuY2hlci5jcHAKIAotVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJv
dG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmNwcAotCiBVSVByb2Nlc3Mv
UGx1Z2lucy91bml4L1BsdWdpbkluZm9TdG9yZVVuaXguY3BwCiBVSVByb2Nlc3MvUGx1Z2lucy91
bml4L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDdXN0b21Qcm90b2Nv
bE1hbmFnZXJDbGllbnQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMzczYjI5
NDU3MS4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDYwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgSWdhbGlhIFMuTC4KLSAqCi0g
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYktpdEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVu
dC5oIgotCi0jaW5jbHVkZSAiQVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmgiCi0jaW5j
bHVkZSAiTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaCIKLSNpbmNsdWRlICJXZWJL
aXRXZWJDb250ZXh0UHJpdmF0ZS5oIgotI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCi0KLXVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLQotY2xhc3Mg
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50IGZpbmFsIDogcHVibGljIEFQSTo6Q3VzdG9tUHJv
dG9jb2xNYW5hZ2VyQ2xpZW50IHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBDdXN0b21Qcm90b2Nv
bE1hbmFnZXJDbGllbnQoV2ViS2l0V2ViQ29udGV4dCogd2ViQ29udGV4dCkKLSAgICAgICAgOiBt
X3dlYkNvbnRleHQod2ViQ29udGV4dCkKLSAgICB7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIHZv
aWQgc3RhcnRMb2FkaW5nKExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5JiBtYW5hZ2Vy
LCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QpIG92ZXJyaWRlCi0gICAgewotICAgICAgICB3ZWJraXRXZWJDb250ZXh0U3RhcnRMb2FkaW5n
Q3VzdG9tUHJvdG9jb2wobV93ZWJDb250ZXh0LCBjdXN0b21Qcm90b2NvbElELCByZXF1ZXN0LCBt
YW5hZ2VyKTsKLSAgICB9Ci0KLSAgICB2b2lkIHN0b3BMb2FkaW5nKExlZ2FjeUN1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5JiwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCkgb3ZlcnJpZGUKLSAg
ICB7Ci0gICAgICAgIHdlYmtpdFdlYkNvbnRleHRTdG9wTG9hZGluZ0N1c3RvbVByb3RvY29sKG1f
d2ViQ29udGV4dCwgY3VzdG9tUHJvdG9jb2xJRCk7Ci0gICAgfQotCi0gICAgdm9pZCBpbnZhbGlk
YXRlKExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5JiBtYW5hZ2VyKSBvdmVycmlkZQot
ICAgIHsKLSAgICAgICAgd2Via2l0V2ViQ29udGV4dEludmFsaWRhdGVDdXN0b21Qcm90b2NvbFJl
cXVlc3RzKG1fd2ViQ29udGV4dCwgbWFuYWdlcik7Ci0gICAgfQotCi0gICAgV2ViS2l0V2ViQ29u
dGV4dCogbV93ZWJDb250ZXh0OwotfTsKLQotdm9pZCBhdHRhY2hDdXN0b21Qcm90b2NvbE1hbmFn
ZXJDbGllbnRUb0NvbnRleHQoV2ViS2l0V2ViQ29udGV4dCogd2ViQ29udGV4dCkKLXsKLSAgICB3
ZWJraXRXZWJDb250ZXh0R2V0UHJvY2Vzc1Bvb2wod2ViQ29udGV4dCkuc2V0TGVnYWN5Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyQ2xpZW50KG1ha2VVbmlxdWU8Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xp
ZW50Pih3ZWJDb250ZXh0KSk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVu
dC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOWM0YzE3Y2MxZC4uMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q3VzdG9tUHJv
dG9jb2xNYW5hZ2VyQ2xpZW50LmgKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE2IElnYWxpYSBTLkwuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAq
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0g
KiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0g
KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVk
ZSAiV2ViS2l0V2ViQ29udGV4dC5oIgotCi12b2lkIGF0dGFjaEN1c3RvbVByb3RvY29sTWFuYWdl
ckNsaWVudFRvQ29udGV4dChXZWJLaXRXZWJDb250ZXh0Kik7Ci0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5j
cHAKaW5kZXggNDQyNzk0MGFjMGIuLjk1YmJkY2E4M2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNw
cApAQCAtNTgsOSArNTgsOSBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IGdSZWFkQnVmZmVy
U2l6ZSA9IDgxOTI7CiAKIHN0cnVjdCBfV2ViS2l0VVJJU2NoZW1lUmVxdWVzdFByaXZhdGUgewog
ICAgIFdlYktpdFdlYkNvbnRleHQqIHdlYkNvbnRleHQ7Ci0gICAgTGVnYWN5Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyUHJveHkqIG1hbmFnZXI7CisgICAgUmVmUHRyPFdlYlVSTFNjaGVtZVRhc2s+IHRh
c2s7CisKICAgICBSZWZQdHI8V2ViUGFnZVByb3h5PiBpbml0aWF0aW5nUGFnZTsKLSAgICB1aW50
NjRfdCByZXF1ZXN0SUQ7CiAgICAgQ1N0cmluZyB1cmk7CiAgICAgR1VuaXF1ZVB0cjxTb3VwVVJJ
PiBzb3VwVVJJOwogCkBAIC03OCwxOCArNzgsMTIgQEAgc3RhdGljIHZvaWQgd2Via2l0X3VyaV9z
Y2hlbWVfcmVxdWVzdF9jbGFzc19pbml0KFdlYktpdFVSSVNjaGVtZVJlcXVlc3RDbGFzcyopCiB7
CiB9CiAKLVdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RDcmVh
dGUodWludDY0X3QgcmVxdWVzdElELCBXZWJLaXRXZWJDb250ZXh0KiB3ZWJDb250ZXh0LCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCwgTGVnYWN5Q3VzdG9tUHJvdG9jb2xN
YW5hZ2VyUHJveHkmIG1hbmFnZXIpCitXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiB3ZWJraXRVUklT
Y2hlbWVSZXF1ZXN0Q3JlYXRlKFdlYktpdFdlYkNvbnRleHQqIHdlYkNvbnRleHQsIFdlYlBhZ2VQ
cm94eSYgcGFnZSwgV2ViVVJMU2NoZW1lVGFzayYgdGFzaykKIHsKICAgICBXZWJLaXRVUklTY2hl
bWVSZXF1ZXN0KiByZXF1ZXN0ID0gV0VCS0lUX1VSSV9TQ0hFTUVfUkVRVUVTVChnX29iamVjdF9u
ZXcoV0VCS0lUX1RZUEVfVVJJX1NDSEVNRV9SRVFVRVNULCBudWxscHRyKSk7CiAgICAgcmVxdWVz
dC0+cHJpdi0+d2ViQ29udGV4dCA9IHdlYkNvbnRleHQ7Ci0gICAgcmVxdWVzdC0+cHJpdi0+bWFu
YWdlciA9ICZtYW5hZ2VyOwotICAgIHJlcXVlc3QtPnByaXYtPnVyaSA9IHJlc291cmNlUmVxdWVz
dC51cmwoKS5zdHJpbmcoKS51dGY4KCk7Ci0gICAgcmVxdWVzdC0+cHJpdi0+cmVxdWVzdElEID0g
cmVxdWVzdElEOwotCi0gICAgQVNTRVJUKHJlc291cmNlUmVxdWVzdC5pbml0aWF0aW5nUGFnZUlE
KCkpOwotICAgIHJlcXVlc3QtPnByaXYtPmluaXRpYXRpbmdQYWdlID0gV2ViUHJvY2Vzc1Byb3h5
Ojp3ZWJQYWdlKG1ha2VPYmplY3RJZGVudGlmaWVyPFdlYlBhZ2VQcm94eUlkZW50aWZpZXJUeXBl
PigqcmVzb3VyY2VSZXF1ZXN0LmluaXRpYXRpbmdQYWdlSUQoKSkpOwotICAgIEFTU0VSVChyZXF1
ZXN0LT5wcml2LT5pbml0aWF0aW5nUGFnZSk7Ci0KKyAgICByZXF1ZXN0LT5wcml2LT50YXNrID0g
JnRhc2s7CisgICAgcmVxdWVzdC0+cHJpdi0+aW5pdGlhdGluZ1BhZ2UgPSAmcGFnZTsKICAgICBy
ZXR1cm4gcmVxdWVzdDsKIH0KIApAQCAtOTgsMTcgKzkyLDYgQEAgdm9pZCB3ZWJraXRVUklTY2hl
bWVSZXF1ZXN0Q2FuY2VsKFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHJlcXVlc3QpCiAgICAgZ19j
YW5jZWxsYWJsZV9jYW5jZWwocmVxdWVzdC0+cHJpdi0+Y2FuY2VsbGFibGUuZ2V0KCkpOwogfQog
Ci1MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSogd2Via2l0VVJJU2NoZW1lUmVxdWVz
dEdldE1hbmFnZXIoV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCogcmVxdWVzdCkKLXsKLSAgICByZXR1
cm4gcmVxdWVzdC0+cHJpdi0+bWFuYWdlcjsKLX0KLQotdm9pZCB3ZWJraXRVUklTY2hlbWVSZXF1
ZXN0SW52YWxpZGF0ZShXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiByZXF1ZXN0KQotewotICAgIHJl
cXVlc3QtPnByaXYtPm1hbmFnZXIgPSBudWxscHRyOwotICAgIHdlYmtpdFVSSVNjaGVtZVJlcXVl
c3RDYW5jZWwocmVxdWVzdCk7Ci19Ci0KIC8qKgogICogd2Via2l0X3VyaV9zY2hlbWVfcmVxdWVz
dF9nZXRfc2NoZW1lOgogICogQHJlcXVlc3Q6IGEgI1dlYktpdFVSSVNjaGVtZVJlcXVlc3QKQEAg
LTExOSwxMCArMTAyLDExIEBAIHZvaWQgd2Via2l0VVJJU2NoZW1lUmVxdWVzdEludmFsaWRhdGUo
V2ViS2l0VVJJU2NoZW1lUmVxdWVzdCogcmVxdWVzdCkKICAqLwogY29uc3QgY2hhciogd2Via2l0
X3VyaV9zY2hlbWVfcmVxdWVzdF9nZXRfc2NoZW1lKFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHJl
cXVlc3QpCiB7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1VSSV9TQ0hFTUVf
UkVRVUVTVChyZXF1ZXN0KSwgMCk7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lT
X1VSSV9TQ0hFTUVfUkVRVUVTVChyZXF1ZXN0KSwgbnVsbHB0cik7CiAKICAgICBpZiAoIXJlcXVl
c3QtPnByaXYtPnNvdXBVUkkpCi0gICAgICAgIHJlcXVlc3QtPnByaXYtPnNvdXBVUkkucmVzZXQo
c291cF91cmlfbmV3KHJlcXVlc3QtPnByaXYtPnVyaS5kYXRhKCkpKTsKKyAgICAgICAgcmVxdWVz
dC0+cHJpdi0+c291cFVSSSA9IHVybFRvU291cFVSSShyZXF1ZXN0LT5wcml2LT50YXNrLT5yZXF1
ZXN0KCkudXJsKCkpOworCiAgICAgcmV0dXJuIHJlcXVlc3QtPnByaXYtPnNvdXBVUkktPnNjaGVt
ZTsKIH0KIApAQCAtMTM2LDcgKzEyMCwxMCBAQCBjb25zdCBjaGFyKiB3ZWJraXRfdXJpX3NjaGVt
ZV9yZXF1ZXN0X2dldF9zY2hlbWUoV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCogcmVxdWVzdAogICov
CiBjb25zdCBjaGFyKiB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2dldF91cmkoV2ViS2l0VVJJ
U2NoZW1lUmVxdWVzdCogcmVxdWVzdCkKIHsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJL
SVRfSVNfVVJJX1NDSEVNRV9SRVFVRVNUKHJlcXVlc3QpLCAwKTsKKyAgICBnX3JldHVybl92YWxf
aWZfZmFpbChXRUJLSVRfSVNfVVJJX1NDSEVNRV9SRVFVRVNUKHJlcXVlc3QpLCBudWxscHRyKTsK
KworICAgIGlmIChyZXF1ZXN0LT5wcml2LT51cmkuaXNOdWxsKCkpCisgICAgICAgIHJlcXVlc3Qt
PnByaXYtPnVyaSA9IHJlcXVlc3QtPnByaXYtPnRhc2stPnJlcXVlc3QoKS51cmwoKS5zdHJpbmco
KS51dGY4KCk7CiAKICAgICByZXR1cm4gcmVxdWVzdC0+cHJpdi0+dXJpLmRhdGEoKTsKIH0KQEAg
LTE1MSwxMCArMTM4LDExIEBAIGNvbnN0IGNoYXIqIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3Rf
Z2V0X3VyaShXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiByZXF1ZXN0KQogICovCiBjb25zdCBjaGFy
KiB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2dldF9wYXRoKFdlYktpdFVSSVNjaGVtZVJlcXVl
c3QqIHJlcXVlc3QpCiB7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1VSSV9T
Q0hFTUVfUkVRVUVTVChyZXF1ZXN0KSwgMCk7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VC
S0lUX0lTX1VSSV9TQ0hFTUVfUkVRVUVTVChyZXF1ZXN0KSwgbnVsbHB0cik7CiAKICAgICBpZiAo
IXJlcXVlc3QtPnByaXYtPnNvdXBVUkkpCi0gICAgICAgIHJlcXVlc3QtPnByaXYtPnNvdXBVUkku
cmVzZXQoc291cF91cmlfbmV3KHJlcXVlc3QtPnByaXYtPnVyaS5kYXRhKCkpKTsKKyAgICAgICAg
cmVxdWVzdC0+cHJpdi0+c291cFVSSSA9IHVybFRvU291cFVSSShyZXF1ZXN0LT5wcml2LT50YXNr
LT5yZXF1ZXN0KCkudXJsKCkpOworCiAgICAgcmV0dXJuIHJlcXVlc3QtPnByaXYtPnNvdXBVUkkt
PnBhdGg7CiB9CiAKQEAgLTE2OCw3ICsxNTYsNyBAQCBjb25zdCBjaGFyKiB3ZWJraXRfdXJpX3Nj
aGVtZV9yZXF1ZXN0X2dldF9wYXRoKFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHJlcXVlc3QpCiAg
Ki8KIFdlYktpdFdlYlZpZXcqIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZ2V0X3dlYl92aWV3
KFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHJlcXVlc3QpCiB7Ci0gICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoV0VCS0lUX0lTX1VSSV9TQ0hFTUVfUkVRVUVTVChyZXF1ZXN0KSwgMCk7CisgICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1VSSV9TQ0hFTUVfUkVRVUVTVChyZXF1ZXN0KSwg
bnVsbHB0cik7CiAKICAgICByZXR1cm4gd2Via2l0V2ViQ29udGV4dEdldFdlYlZpZXdGb3JQYWdl
KHJlcXVlc3QtPnByaXYtPndlYkNvbnRleHQsIHJlcXVlc3QtPnByaXYtPmluaXRpYXRpbmdQYWdl
LmdldCgpKTsKIH0KQEAgLTE3Niw0MiArMTY0LDMwIEBAIFdlYktpdFdlYlZpZXcqIHdlYmtpdF91
cmlfc2NoZW1lX3JlcXVlc3RfZ2V0X3dlYl92aWV3KFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHJl
CiBzdGF0aWMgdm9pZCB3ZWJraXRVUklTY2hlbWVSZXF1ZXN0UmVhZENhbGxiYWNrKEdJbnB1dFN0
cmVhbSogaW5wdXRTdHJlYW0sIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBXZWJLaXRVUklTY2hlbWVS
ZXF1ZXN0KiBzY2hlbWVSZXF1ZXN0KQogewogICAgIEdSZWZQdHI8V2ViS2l0VVJJU2NoZW1lUmVx
dWVzdD4gcmVxdWVzdCA9IGFkb3B0R1JlZihzY2hlbWVSZXF1ZXN0KTsKLSAgICBXZWJLaXRVUklT
Y2hlbWVSZXF1ZXN0UHJpdmF0ZSogcHJpdiA9IHJlcXVlc3QtPnByaXY7CiAgICAgR1VuaXF1ZU91
dFB0cjxHRXJyb3I+IGVycm9yOwogICAgIGdzc2l6ZSBieXRlc1JlYWQgPSBnX2lucHV0X3N0cmVh
bV9yZWFkX2ZpbmlzaChpbnB1dFN0cmVhbSwgcmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkpOwotICAg
IGlmICghcHJpdi0+bWFuYWdlcikgewotICAgICAgICB3ZWJraXRXZWJDb250ZXh0RGlkRmluaXNo
TG9hZGluZ0N1c3RvbVByb3RvY29sKHByaXYtPndlYkNvbnRleHQsIHByaXYtPnJlcXVlc3RJRCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICBpZiAoYnl0ZXNSZWFkID09IC0xKSB7CiAg
ICAgICAgIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZmluaXNoX2Vycm9yKHJlcXVlc3QuZ2V0
KCksIGVycm9yLmdldCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIFdlYktpdFVS
SVNjaGVtZVJlcXVlc3RQcml2YXRlKiBwcml2ID0gcmVxdWVzdC0+cHJpdjsKICAgICAvLyBOZWVk
IHRvIGNoZWNrIHRoZSBzdHJlYW0gYmVmb3JlIHByb2NlZWRpbmcgYXMgaXQgY2FuIGJlIGNhbmNl
bGxlZCBpZiBmaW5pc2hfZXJyb3IKICAgICAvLyB3YXMgcHJldmlvdXNseSBjYWxsLCB3aGljaCB3
b24ndCBiZSBkZXRlY3RlZCBieSBnX2lucHV0X3N0cmVhbV9yZWFkX2ZpbmlzaCgpLgotICAgIGlm
ICghcmVxdWVzdC0+cHJpdi0+c3RyZWFtKQorICAgIGlmICghcHJpdi0+c3RyZWFtKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBhdXRvIHdlYkRhdGEgPSBJUEM6OkRhdGFSZWZlcmVuY2UocmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocHJpdi0+cmVhZEJ1ZmZlciksIGJ5dGVzUmVhZCk7
CiAgICAgaWYgKCFwcml2LT5ieXRlc1JlYWQpIHsKLSAgICAgICAgLy8gRmlyc3QgY2h1bmsgcmVh
ZC4gSW4gY2FzZSBvZiBlbXB0eSByZXBseSBhbiBlbXB0eSBBUEk6OkRhdGEgaXMgc2VudCB0byB0
aGUgbmV0d29ya2luZyBwcm9jZXNzLgotICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNl
KFVSTChVUkwoKSwgU3RyaW5nOjpmcm9tVVRGOChwcml2LT51cmkpKSwgU3RyaW5nOjpmcm9tVVRG
OChwcml2LT5taW1lVHlwZS5kYXRhKCkpLAotICAgICAgICAgICAgcHJpdi0+c3RyZWFtTGVuZ3Ro
LCBlbXB0eVN0cmluZygpKTsKLSAgICAgICAgcHJpdi0+bWFuYWdlci0+ZGlkUmVjZWl2ZVJlc3Bv
bnNlKHByaXYtPnJlcXVlc3RJRCwgcmVzcG9uc2UsIDApOwotICAgICAgICBwcml2LT5tYW5hZ2Vy
LT5kaWRMb2FkRGF0YShwcml2LT5yZXF1ZXN0SUQsIHdlYkRhdGEpOwotICAgIH0gZWxzZSBpZiAo
Ynl0ZXNSZWFkIHx8ICghYnl0ZXNSZWFkICYmICFwcml2LT5zdHJlYW1MZW5ndGgpKSB7Ci0gICAg
ICAgIC8vIFN1YnNlcXVlbnQgY2h1bmsgcmVhZC4gV2Ugb25seSBzZW5kIGFuIGVtcHR5IEFQSTo6
RGF0YSB0byB0aGUgbmV0d29ya2luZyBwcm9jZXNzIHdoZW4gc3RyZWFtIGxlbmd0aCBpcyB1bmtu
b3duLgotICAgICAgICBwcml2LT5tYW5hZ2VyLT5kaWRMb2FkRGF0YShwcml2LT5yZXF1ZXN0SUQs
IHdlYkRhdGEpOworICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKHByaXYtPnRhc2st
PnJlcXVlc3QoKS51cmwoKSwgU3RyaW5nOjpmcm9tVVRGOChwcml2LT5taW1lVHlwZS5kYXRhKCkp
LCBwcml2LT5zdHJlYW1MZW5ndGgsIGVtcHR5U3RyaW5nKCkpOworICAgICAgICBwcml2LT50YXNr
LT5kaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UpOwogICAgIH0KIAogICAgIGlmICghYnl0ZXNS
ZWFkKSB7Ci0gICAgICAgIHByaXYtPm1hbmFnZXItPmRpZEZpbmlzaExvYWRpbmcocHJpdi0+cmVx
dWVzdElEKTsKLSAgICAgICAgd2Via2l0V2ViQ29udGV4dERpZEZpbmlzaExvYWRpbmdDdXN0b21Q
cm90b2NvbChwcml2LT53ZWJDb250ZXh0LCBwcml2LT5yZXF1ZXN0SUQpOworICAgICAgICBwcml2
LT50YXNrLT5kaWRDb21wbGV0ZSh7IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAg
cHJpdi0+dGFzay0+ZGlkUmVjZWl2ZURhdGEoU2hhcmVkQnVmZmVyOjpjcmVhdGUocHJpdi0+cmVh
ZEJ1ZmZlciwgYnl0ZXNSZWFkKSk7CiAgICAgcHJpdi0+Ynl0ZXNSZWFkICs9IGJ5dGVzUmVhZDsK
ICAgICBnX2lucHV0X3N0cmVhbV9yZWFkX2FzeW5jKGlucHV0U3RyZWFtLCBwcml2LT5yZWFkQnVm
ZmVyLCBnUmVhZEJ1ZmZlclNpemUsIFJ1bkxvb3BTb3VyY2VQcmlvcml0eTo6QXN5bmNJT05ldHdv
cmssIHByaXYtPmNhbmNlbGxhYmxlLmdldCgpLAogICAgICAgICByZWludGVycHJldF9jYXN0PEdB
c3luY1JlYWR5Q2FsbGJhY2s+KHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RSZWFkQ2FsbGJhY2spLCBn
X29iamVjdF9yZWYocmVxdWVzdC5nZXQoKSkpOwpAQCAtMjU3LDExICsyMzMsNyBAQCB2b2lkIHdl
YmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZmluaXNoX2Vycm9yKFdlYktpdFVSSVNjaGVtZVJlcXVl
c3QqIHJlcXVlc3QsIEdFcgogICAgIGdfcmV0dXJuX2lmX2ZhaWwoZXJyb3IpOwogCiAgICAgV2Vi
S2l0VVJJU2NoZW1lUmVxdWVzdFByaXZhdGUqIHByaXYgPSByZXF1ZXN0LT5wcml2OwotICAgIGlm
ICghd2Via2l0V2ViQ29udGV4dElzTG9hZGluZ0N1c3RvbVByb3RvY29sKHByaXYtPndlYkNvbnRl
eHQsIHByaXYtPnJlcXVlc3RJRCkpCi0gICAgICAgIHJldHVybjsKLQogICAgIHByaXYtPnN0cmVh
bSA9IG51bGxwdHI7Ci0gICAgUmVzb3VyY2VFcnJvciByZXNvdXJjZUVycm9yKGdfcXVhcmtfdG9f
c3RyaW5nKGVycm9yLT5kb21haW4pLCB0b1dlYkNvcmVFcnJvcihlcnJvci0+Y29kZSksIHNvdXBV
UklUb1VSTChwcml2LT5zb3VwVVJJLmdldCgpKSwgU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+bWVz
c2FnZSkpOwotICAgIHByaXYtPm1hbmFnZXItPmRpZEZhaWxXaXRoRXJyb3IocHJpdi0+cmVxdWVz
dElELCByZXNvdXJjZUVycm9yKTsKLSAgICB3ZWJraXRXZWJDb250ZXh0RGlkRmluaXNoTG9hZGlu
Z0N1c3RvbVByb3RvY29sKHByaXYtPndlYkNvbnRleHQsIHByaXYtPnJlcXVlc3RJRCk7CisgICAg
UmVzb3VyY2VFcnJvciByZXNvdXJjZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21h
aW4pLCB0b1dlYkNvcmVFcnJvcihlcnJvci0+Y29kZSksIHByaXYtPnRhc2stPnJlcXVlc3QoKS51
cmwoKSwgU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+bWVzc2FnZSkpOworICAgIHByaXYtPnRhc2st
PmRpZENvbXBsZXRlKHJlc291cmNlRXJyb3IpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdFByaXZhdGUuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVlc3RQcml2
YXRlLmgKaW5kZXggYmMyZGYyOGJhZjYuLjAxODQ5ZTE1NzY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0UHJpdmF0ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJl
cXVlc3RQcml2YXRlLmgKQEAgLTE5LDEyICsxOSwxMSBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lu
Y2x1ZGUgIkxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiV2Vi
S2l0VVJJU2NoZW1lUmVxdWVzdC5oIgogI2luY2x1ZGUgIldlYktpdFdlYkNvbnRleHQuaCIKKyNp
bmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRlICJXZWJVUkxTY2hlbWVUYXNrLmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KIAotV2ViS2l0VVJJU2NoZW1lUmVx
dWVzdCogd2Via2l0VVJJU2NoZW1lUmVxdWVzdENyZWF0ZSh1aW50NjRfdCByZXF1ZXN0SUQsIFdl
YktpdFdlYkNvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJLaXQ6
OkxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Jik7CitXZWJLaXRVUklTY2hlbWVSZXF1
ZXN0KiB3ZWJraXRVUklTY2hlbWVSZXF1ZXN0Q3JlYXRlKFdlYktpdFdlYkNvbnRleHQqLCBXZWJL
aXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzayYpOwogdm9pZCB3ZWJr
aXRVUklTY2hlbWVSZXF1ZXN0Q2FuY2VsKFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqKTsKLVdlYktp
dDo6TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkqIHdlYmtpdFVSSVNjaGVtZVJlcXVl
c3RHZXRNYW5hZ2VyKFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqKTsKLXZvaWQgd2Via2l0VVJJU2No
ZW1lUmVxdWVzdEludmFsaWRhdGUoV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCopOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcApp
bmRleCA3ODQ5YjRhZDNjNC4uN2JkOTQ3ZDEyYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCkBAIC0yMSw3ICsyMSw2
IEBACiAjaW5jbHVkZSAiV2ViS2l0V2ViQ29udGV4dC5oIgogCiAjaW5jbHVkZSAiQVBJQXV0b21h
dGlvbkNsaWVudC5oIgotI2luY2x1ZGUgIkFQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5o
IgogI2luY2x1ZGUgIkFQSURvd25sb2FkQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJSW5qZWN0ZWRC
dW5kbGVDbGllbnQuaCIKICNpbmNsdWRlICJBUElQYWdlQ29uZmlndXJhdGlvbi5oIgpAQCAtMzMs
NyArMzIsNiBAQAogI2luY2x1ZGUgIldlYkF1dG9tYXRpb25TZXNzaW9uLmgiCiAjaW5jbHVkZSAi
V2ViQ2VydGlmaWNhdGVJbmZvLmgiCiAjaW5jbHVkZSAiV2ViS2l0QXV0b21hdGlvblNlc3Npb25Q
cml2YXRlLmgiCi0jaW5jbHVkZSAiV2ViS2l0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50Lmgi
CiAjaW5jbHVkZSAiV2ViS2l0RG93bmxvYWRDbGllbnQuaCIKICNpbmNsdWRlICJXZWJLaXREb3du
bG9hZFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRGYXZpY29uRGF0YWJhc2VQcml2YXRlLmgi
CkBAIC01Myw2ICs1MSw3IEBACiAjaW5jbHVkZSAiV2ViS2l0V2ViVmlld1ByaXZhdGUuaCIKICNp
bmNsdWRlICJXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmgiCisjaW5jbHVkZSAiV2ViVVJMU2NoZW1lSGFuZGxl
ci5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhVHlwZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL1JlbW90ZUluc3BlY3Rvci5oPgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CkBAIC0x
MjgsMTMgKzEyNywxMSBAQCBlbnVtIHsKICAgICBMQVNUX1NJR05BTAogfTsKIAotY2xhc3MgV2Vi
S2l0VVJJU2NoZW1lSGFuZGxlcjogcHVibGljIFJlZkNvdW50ZWQ8V2ViS2l0VVJJU2NoZW1lSGFu
ZGxlcj4geworY2xhc3MgV2ViS2l0VVJJU2NoZW1lSGFuZGxlciBmaW5hbCA6IHB1YmxpYyBXZWJV
UkxTY2hlbWVIYW5kbGVyIHsKIHB1YmxpYzoKLSAgICBXZWJLaXRVUklTY2hlbWVIYW5kbGVyKFdl
YktpdFVSSVNjaGVtZVJlcXVlc3RDYWxsYmFjayBjYWxsYmFjaywgdm9pZCogdXNlckRhdGEsIEdE
ZXN0cm95Tm90aWZ5IGRlc3Ryb3lOb3RpZnkpCi0gICAgICAgIDogbV9jYWxsYmFjayhjYWxsYmFj
aykKLSAgICAgICAgLCBtX3VzZXJEYXRhKHVzZXJEYXRhKQotICAgICAgICAsIG1fZGVzdHJveU5v
dGlmeShkZXN0cm95Tm90aWZ5KQorICAgIHN0YXRpYyBSZWY8V2ViS2l0VVJJU2NoZW1lSGFuZGxl
cj4gY3JlYXRlKFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIFdlYktpdFVSSVNjaGVtZVJlcXVl
c3RDYWxsYmFjayBjYWxsYmFjaywgdm9pZCogdXNlckRhdGEsIEdEZXN0cm95Tm90aWZ5IGRlc3Ry
b3lOb3RpZnkpCiAgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJLaXRVUklT
Y2hlbWVIYW5kbGVyKGNvbnRleHQsIGNhbGxiYWNrLCB1c2VyRGF0YSwgZGVzdHJveU5vdGlmeSkp
OwogICAgIH0KIAogICAgIH5XZWJLaXRVUklTY2hlbWVIYW5kbGVyKCkKQEAgLTE0MywyMiArMTQw
LDQ2IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fZGVzdHJveU5vdGlmeShtX3VzZXJEYXRhKTsK
ICAgICB9CiAKLSAgICBib29sIGhhc0NhbGxiYWNrKCkKK3ByaXZhdGU6CisgICAgV2ViS2l0VVJJ
U2NoZW1lSGFuZGxlcihXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCBXZWJLaXRVUklTY2hlbWVS
ZXF1ZXN0Q2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQqIHVzZXJEYXRhLCBHRGVzdHJveU5vdGlmeSBk
ZXN0cm95Tm90aWZ5KQorICAgICAgICA6IG1fY29udGV4dChjb250ZXh0KQorICAgICAgICAsIG1f
Y2FsbGJhY2soY2FsbGJhY2spCisgICAgICAgICwgbV91c2VyRGF0YSh1c2VyRGF0YSkKKyAgICAg
ICAgLCBtX2Rlc3Ryb3lOb3RpZnkoZGVzdHJveU5vdGlmeSkKICAgICB7Ci0gICAgICAgIHJldHVy
biBtX2NhbGxiYWNrOwogICAgIH0KIAotICAgIHZvaWQgcGVyZm9ybUNhbGxiYWNrKFdlYktpdFVS
SVNjaGVtZVJlcXVlc3QqIHJlcXVlc3QpCisgICAgdm9pZCBwbGF0Zm9ybVN0YXJ0VGFzayhXZWJQ
YWdlUHJveHkmIHBhZ2UsIFdlYlVSTFNjaGVtZVRhc2smIHRhc2spIGZpbmFsCiAgICAgewotICAg
ICAgICBBU1NFUlQobV9jYWxsYmFjayk7CisgICAgICAgIGlmICghbV9jYWxsYmFjaykKKyAgICAg
ICAgICAgIHJldHVybjsKIAotICAgICAgICBtX2NhbGxiYWNrKHJlcXVlc3QsIG1fdXNlckRhdGEp
OworICAgICAgICBHUmVmUHRyPFdlYktpdFVSSVNjaGVtZVJlcXVlc3Q+IHJlcXVlc3QgPSBhZG9w
dEdSZWYod2Via2l0VVJJU2NoZW1lUmVxdWVzdENyZWF0ZShtX2NvbnRleHQsIHBhZ2UsIHRhc2sp
KTsKKyAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3JlcXVlc3RzLmFkZCh0YXNrLmlkZW50aWZp
ZXIoKSwgV1RGTW92ZShyZXF1ZXN0KSk7CisgICAgICAgIEFTU0VSVChhZGRSZXN1bHQuaXNOZXdF
bnRyeSk7CisgICAgICAgIG1fY2FsbGJhY2soYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQo
KSwgbV91c2VyRGF0YSk7CiAgICAgfQogCi1wcml2YXRlOgorICAgIHZvaWQgcGxhdGZvcm1TdG9w
VGFzayhXZWJQYWdlUHJveHkmLCBXZWJVUkxTY2hlbWVUYXNrJiB0YXNrKSBmaW5hbAorICAgIHsK
KyAgICAgICAgYXV0byBpdCA9IG1fcmVxdWVzdHMuZmluZCh0YXNrLmlkZW50aWZpZXIoKSk7Cisg
ICAgICAgIGlmIChpdCA9PSBtX3JlcXVlc3RzLmVuZCgpKQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RDYW5jZWwoaXQtPnZhbHVlLmdldCgpKTsK
KyAgICAgICAgbV9yZXF1ZXN0cy5yZW1vdmUoaXQpOworICAgIH0KKworICAgIHZvaWQgcGxhdGZv
cm1UYXNrQ29tcGxldGVkKFdlYlVSTFNjaGVtZVRhc2smIHRhc2spIGZpbmFsCisgICAgeworICAg
ICAgICBtX3JlcXVlc3RzLnJlbW92ZSh0YXNrLmlkZW50aWZpZXIoKSk7CisgICAgfQorCisgICAg
V2ViS2l0V2ViQ29udGV4dCogbV9jb250ZXh0IHsgbnVsbHB0ciB9OwogICAgIFdlYktpdFVSSVNj
aGVtZVJlcXVlc3RDYWxsYmFjayBtX2NhbGxiYWNrIHsgbnVsbHB0ciB9OwogICAgIHZvaWQqIG1f
dXNlckRhdGEgeyBudWxscHRyIH07CiAgICAgR0Rlc3Ryb3lOb3RpZnkgbV9kZXN0cm95Tm90aWZ5
IHsgbnVsbHB0ciB9OworICAgIEhhc2hNYXA8dWludDY0X3QsIEdSZWZQdHI8V2ViS2l0VVJJU2No
ZW1lUmVxdWVzdD4+IG1fcmVxdWVzdHM7CiB9OwogCiB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBS
ZWZQdHI8V2ViS2l0VVJJU2NoZW1lSGFuZGxlcj4gPiBVUklTY2hlbWVIYW5kbGVyTWFwOwpAQCAt
MTc2LDcgKzE5Nyw2IEBAIHN0cnVjdCBfV2ViS2l0V2ViQ29udGV4dFByaXZhdGUgewogICAgIEdS
ZWZQdHI8V2ViS2l0RmF2aWNvbkRhdGFiYXNlPiBmYXZpY29uRGF0YWJhc2U7CiAgICAgR1JlZlB0
cjxXZWJLaXRTZWN1cml0eU1hbmFnZXI+IHNlY3VyaXR5TWFuYWdlcjsKICAgICBVUklTY2hlbWVI
YW5kbGVyTWFwIHVyaVNjaGVtZUhhbmRsZXJzOwotICAgIFVSSVNjaGVtZVJlcXVlc3RNYXAgdXJp
U2NoZW1lUmVxdWVzdHM7CiAgICAgR1JlZlB0cjxXZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXI+IGdl
b2xvY2F0aW9uTWFuYWdlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0Tm90aWZpY2F0aW9u
UHJvdmlkZXI+IG5vdGlmaWNhdGlvblByb3ZpZGVyOwogICAgIEdSZWZQdHI8V2ViS2l0V2Vic2l0
ZURhdGFNYW5hZ2VyPiB3ZWJzaXRlRGF0YU1hbmFnZXI7CkBAIC0zNjcsNyArMzg3LDYgQEAgc3Rh
dGljIHZvaWQgd2Via2l0V2ViQ29udGV4dENvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKIAog
ICAgIGF0dGFjaEluamVjdGVkQnVuZGxlQ2xpZW50VG9Db250ZXh0KHdlYkNvbnRleHQpOwogICAg
IGF0dGFjaERvd25sb2FkQ2xpZW50VG9Db250ZXh0KHdlYkNvbnRleHQpOwotICAgIGF0dGFjaEN1
c3RvbVByb3RvY29sTWFuYWdlckNsaWVudFRvQ29udGV4dCh3ZWJDb250ZXh0KTsKIAogICAgIHBy
aXYtPmdlb2xvY2F0aW9uTWFuYWdlciA9IGFkb3B0R1JlZih3ZWJraXRHZW9sb2NhdGlvbk1hbmFn
ZXJDcmVhdGUocHJpdi0+cHJvY2Vzc1Bvb2wtPnN1cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25NYW5h
Z2VyUHJveHk+KCkpKTsKICAgICBwcml2LT5ub3RpZmljYXRpb25Qcm92aWRlciA9IG1ha2VVbmlx
dWU8V2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXI+KHByaXYtPnByb2Nlc3NQb29sLT5zdXBwbGVt
ZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eT4oKSwgd2ViQ29udGV4dCk7CkBAIC0zODQs
NyArNDAzLDYgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViQ29udGV4dERpc3Bvc2UoR09iamVjdCog
b2JqZWN0KQogICAgICAgICBwcml2LT5jbGllbnRzRGV0YWNoZWQgPSB0cnVlOwogICAgICAgICBw
cml2LT5wcm9jZXNzUG9vbC0+c2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQobnVsbHB0cik7CiAgICAg
ICAgIHByaXYtPnByb2Nlc3NQb29sLT5zZXREb3dubG9hZENsaWVudChtYWtlVW5pcXVlUmVmPEFQ
STo6RG93bmxvYWRDbGllbnQ+KCkpOwotICAgICAgICBwcml2LT5wcm9jZXNzUG9vbC0+c2V0TGVn
YWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KG51bGxwdHIpOwogICAgIH0KIAogICAgIGlm
IChwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIpIHsKQEAgLTExNTMsMTAgKzExNzEsMTAgQEAgdm9p
ZCB3ZWJraXRfd2ViX2NvbnRleHRfcmVnaXN0ZXJfdXJpX3NjaGVtZShXZWJLaXRXZWJDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBjaGEKICAgICBnX3JldHVybl9pZl9mYWlsKHNjaGVtZSk7CiAgICAg
Z19yZXR1cm5faWZfZmFpbChjYWxsYmFjayk7CiAKLSAgICBSZWZQdHI8V2ViS2l0VVJJU2NoZW1l
SGFuZGxlcj4gaGFuZGxlciA9IGFkb3B0UmVmKG5ldyBXZWJLaXRVUklTY2hlbWVIYW5kbGVyKGNh
bGxiYWNrLCB1c2VyRGF0YSwgZGVzdHJveU5vdGlmeSkpOwotICAgIGF1dG8gYWRkUmVzdWx0ID0g
Y29udGV4dC0+cHJpdi0+dXJpU2NoZW1lSGFuZGxlcnMuc2V0KFN0cmluZzo6ZnJvbVVURjgoc2No
ZW1lKSwgaGFuZGxlci5nZXQoKSk7Ci0gICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KQotICAg
ICAgICBXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpyZWdpc3Rlckdsb2JhbFVSTFNjaGVtZUFzSGF2
aW5nQ3VzdG9tUHJvdG9jb2xIYW5kbGVycyhTdHJpbmc6OmZyb21VVEY4KHNjaGVtZSkpOworICAg
IGF1dG8gaGFuZGxlciA9IFdlYktpdFVSSVNjaGVtZUhhbmRsZXI6OmNyZWF0ZShjb250ZXh0LCBj
YWxsYmFjaywgdXNlckRhdGEsIGRlc3Ryb3lOb3RpZnkpOworICAgIGF1dG8gYWRkUmVzdWx0ID0g
Y29udGV4dC0+cHJpdi0+dXJpU2NoZW1lSGFuZGxlcnMuc2V0KFN0cmluZzo6ZnJvbVVURjgoc2No
ZW1lKSwgV1RGTW92ZShoYW5kbGVyKSk7CisgICAgZm9yIChhdXRvKiB3ZWJWaWV3IDogY29udGV4
dC0+cHJpdi0+d2ViVmlld3MudmFsdWVzKCkpCisgICAgICAgIHdlYmtpdFdlYlZpZXdHZXRQYWdl
KHdlYlZpZXcpLnNldFVSTFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUoKmFkZFJlc3VsdC5pdGVyYXRv
ci0+dmFsdWUsIFN0cmluZzo6ZnJvbVVURjgoc2NoZW1lKSk7CiB9CiAKIC8qKgpAQCAtMTcwMyw0
NSArMTcyMSw2IEBAIFdlYlByb2Nlc3NQb29sJiB3ZWJraXRXZWJDb250ZXh0R2V0UHJvY2Vzc1Bv
b2woV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCkKICAgICByZXR1cm4gKmNvbnRleHQtPnByaXYt
PnByb2Nlc3NQb29sOwogfQogCi12b2lkIHdlYmtpdFdlYkNvbnRleHRTdGFydExvYWRpbmdDdXN0
b21Qcm90b2NvbChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCB1aW50NjRfdCBjdXN0b21Qcm90
b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCwg
TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkmIG1hbmFnZXIpCi17Ci0gICAgR1JlZlB0
cjxXZWJLaXRVUklTY2hlbWVSZXF1ZXN0PiByZXF1ZXN0ID0gYWRvcHRHUmVmKHdlYmtpdFVSSVNj
aGVtZVJlcXVlc3RDcmVhdGUoY3VzdG9tUHJvdG9jb2xJRCwgY29udGV4dCwgcmVzb3VyY2VSZXF1
ZXN0LCBtYW5hZ2VyKSk7Ci0gICAgU3RyaW5nIHNjaGVtZShTdHJpbmc6OmZyb21VVEY4KHdlYmtp
dF91cmlfc2NoZW1lX3JlcXVlc3RfZ2V0X3NjaGVtZShyZXF1ZXN0LmdldCgpKSkpOwotICAgIFJl
ZlB0cjxXZWJLaXRVUklTY2hlbWVIYW5kbGVyPiBoYW5kbGVyID0gY29udGV4dC0+cHJpdi0+dXJp
U2NoZW1lSGFuZGxlcnMuZ2V0KHNjaGVtZSk7Ci0gICAgQVNTRVJUKGhhbmRsZXIuZ2V0KCkpOwot
ICAgIGlmICghaGFuZGxlci0+aGFzQ2FsbGJhY2soKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
Y29udGV4dC0+cHJpdi0+dXJpU2NoZW1lUmVxdWVzdHMuc2V0KGN1c3RvbVByb3RvY29sSUQsIHJl
cXVlc3QuZ2V0KCkpOwotICAgIGhhbmRsZXItPnBlcmZvcm1DYWxsYmFjayhyZXF1ZXN0LmdldCgp
KTsKLX0KLQotdm9pZCB3ZWJraXRXZWJDb250ZXh0U3RvcExvYWRpbmdDdXN0b21Qcm90b2NvbChX
ZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKQotewot
ICAgIEdSZWZQdHI8V2ViS2l0VVJJU2NoZW1lUmVxdWVzdD4gcmVxdWVzdCA9IGNvbnRleHQtPnBy
aXYtPnVyaVNjaGVtZVJlcXVlc3RzLmdldChjdXN0b21Qcm90b2NvbElEKTsKLSAgICBpZiAoIXJl
cXVlc3QuZ2V0KCkpCi0gICAgICAgIHJldHVybjsKLSAgICB3ZWJraXRVUklTY2hlbWVSZXF1ZXN0
Q2FuY2VsKHJlcXVlc3QuZ2V0KCkpOwotfQotCi12b2lkIHdlYmtpdFdlYkNvbnRleHRJbnZhbGlk
YXRlQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0cyhXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCBMZWdh
Y3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSYgbWFuYWdlcikKLXsKLSAgICBmb3IgKGF1dG8m
IHJlcXVlc3QgOiBjb3B5VG9WZWN0b3IoY29udGV4dC0+cHJpdi0+dXJpU2NoZW1lUmVxdWVzdHMu
dmFsdWVzKCkpKSB7Ci0gICAgICAgIGlmICh3ZWJraXRVUklTY2hlbWVSZXF1ZXN0R2V0TWFuYWdl
cihyZXF1ZXN0LmdldCgpKSA9PSAmbWFuYWdlcikKLSAgICAgICAgICAgIHdlYmtpdFVSSVNjaGVt
ZVJlcXVlc3RJbnZhbGlkYXRlKHJlcXVlc3QuZ2V0KCkpOwotICAgIH0KLX0KLQotdm9pZCB3ZWJr
aXRXZWJDb250ZXh0RGlkRmluaXNoTG9hZGluZ0N1c3RvbVByb3RvY29sKFdlYktpdFdlYkNvbnRl
eHQqIGNvbnRleHQsIHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpCi17Ci0gICAgY29udGV4dC0+
cHJpdi0+dXJpU2NoZW1lUmVxdWVzdHMucmVtb3ZlKGN1c3RvbVByb3RvY29sSUQpOwotfQotCi1i
b29sIHdlYmtpdFdlYkNvbnRleHRJc0xvYWRpbmdDdXN0b21Qcm90b2NvbChXZWJLaXRXZWJDb250
ZXh0KiBjb250ZXh0LCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKQotewotICAgIHJldHVybiBj
b250ZXh0LT5wcml2LT51cmlTY2hlbWVSZXF1ZXN0cy5nZXQoY3VzdG9tUHJvdG9jb2xJRCk7Ci19
Ci0KIHZvaWQgd2Via2l0V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JXZWJWaWV3KFdlYktpdFdlYkNv
bnRleHQqIGNvbnRleHQsIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdFVzZXJDb250ZW50
TWFuYWdlciogdXNlckNvbnRlbnRNYW5hZ2VyLCBXZWJLaXRXZWJWaWV3KiByZWxhdGVkVmlldykK
IHsKICAgICBhdXRvIHBhZ2VDb25maWd1cmF0aW9uID0gQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6
Y3JlYXRlKCk7CkBAIC0xNzU3LDYgKzE3MzYsMTIgQEAgdm9pZCB3ZWJraXRXZWJDb250ZXh0Q3Jl
YXRlUGFnZUZvcldlYlZpZXcoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCwgV2ViS2l0V2ViVmkK
ICAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0V2Vic2l0ZURhdGFTdG9yZSgmd2Via2l0V2Vic2l0
ZURhdGFNYW5hZ2VyR2V0RGF0YVN0b3JlKG1hbmFnZXIpKTsKICAgICB3ZWJraXRXZWJWaWV3Q3Jl
YXRlUGFnZSh3ZWJWaWV3LCBXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7CiAKKyAgICBhdXRv
JiBwYWdlID0gd2Via2l0V2ViVmlld0dldFBhZ2Uod2ViVmlldyk7CisgICAgZm9yIChhdXRvJiBp
dCA6IGNvbnRleHQtPnByaXYtPnVyaVNjaGVtZUhhbmRsZXJzKSB7CisgICAgICAgIFJlZjxXZWJV
UkxTY2hlbWVIYW5kbGVyPiBoYW5kbGVyKCppdC52YWx1ZSk7CisgICAgICAgIHBhZ2Uuc2V0VVJM
U2NoZW1lSGFuZGxlckZvclNjaGVtZShXVEZNb3ZlKGhhbmRsZXIpLCBpdC5rZXkpOworICAgIH0K
KwogICAgIGNvbnRleHQtPnByaXYtPndlYlZpZXdzLnNldCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3Bh
Z2VfaWQod2ViVmlldyksIHdlYlZpZXcpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dFByaXZhdGUuaAppbmRleCA2
YWRiNTJiM2M1My4uZDg1NjljODU5YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHRQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dFByaXZhdGUuaApAQCAtMjYsNyAr
MjYsNiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJEb3dubG9hZFByb3h5LmgiCi0jaW5j
bHVkZSAiTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJXZWJL
aXRVc2VyQ29udGVudE1hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJDb250ZXh0LmgiCiAj
aW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKQEAgLTM3LDExICszNiw2IEBAIFdlYktpdERvd25s
b2FkKiB3ZWJraXRXZWJDb250ZXh0R2V0T3JDcmVhdGVEb3dubG9hZChXZWJLaXQ6OkRvd25sb2Fk
UHJveHkqKTsKIFdlYktpdERvd25sb2FkKiB3ZWJraXRXZWJDb250ZXh0U3RhcnREb3dubG9hZChX
ZWJLaXRXZWJDb250ZXh0KiwgY29uc3QgY2hhciogdXJpLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSop
Owogdm9pZCB3ZWJraXRXZWJDb250ZXh0UmVtb3ZlRG93bmxvYWQoV2ViS2l0OjpEb3dubG9hZFBy
b3h5Kik7CiB2b2lkIHdlYmtpdFdlYkNvbnRleHREb3dubG9hZFN0YXJ0ZWQoV2ViS2l0V2ViQ29u
dGV4dCosIFdlYktpdERvd25sb2FkKik7Ci12b2lkIHdlYmtpdFdlYkNvbnRleHRTdGFydExvYWRp
bmdDdXN0b21Qcm90b2NvbChXZWJLaXRXZWJDb250ZXh0KiwgdWludDY0X3QgY3VzdG9tUHJvdG9j
b2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViS2l0OjpMZWdhY3lDdXN0
b21Qcm90b2NvbE1hbmFnZXJQcm94eSYpOwotdm9pZCB3ZWJraXRXZWJDb250ZXh0U3RvcExvYWRp
bmdDdXN0b21Qcm90b2NvbChXZWJLaXRXZWJDb250ZXh0KiwgdWludDY0X3QgY3VzdG9tUHJvdG9j
b2xJRCk7Ci12b2lkIHdlYmtpdFdlYkNvbnRleHRJbnZhbGlkYXRlQ3VzdG9tUHJvdG9jb2xSZXF1
ZXN0cyhXZWJLaXRXZWJDb250ZXh0KiwgV2ViS2l0OjpMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFn
ZXJQcm94eSYpOwotdm9pZCB3ZWJraXRXZWJDb250ZXh0RGlkRmluaXNoTG9hZGluZ0N1c3RvbVBy
b3RvY29sKFdlYktpdFdlYkNvbnRleHQqLCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKTsKLWJv
b2wgd2Via2l0V2ViQ29udGV4dElzTG9hZGluZ0N1c3RvbVByb3RvY29sKFdlYktpdFdlYkNvbnRl
eHQqLCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKTsKIHZvaWQgd2Via2l0V2ViQ29udGV4dENy
ZWF0ZVBhZ2VGb3JXZWJWaWV3KFdlYktpdFdlYkNvbnRleHQqLCBXZWJLaXRXZWJWaWV3KiwgV2Vi
S2l0VXNlckNvbnRlbnRNYW5hZ2VyKiwgV2ViS2l0V2ViVmlldyopOwogdm9pZCB3ZWJraXRXZWJD
b250ZXh0V2ViVmlld0Rlc3Ryb3llZChXZWJLaXRXZWJDb250ZXh0KiwgV2ViS2l0V2ViVmlldyop
OwogV2ViS2l0V2ViVmlldyogd2Via2l0V2ViQ29udGV4dEdldFdlYlZpZXdGb3JQYWdlKFdlYktp
dFdlYkNvbnRleHQqLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSopOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCmluZGV4IGJmZDkyMzM5MWNlLi40ZDZkMmYzMjBkNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaApAQCAtNjIsMTMg
KzYyLDExIEBAIHB1YmxpYzoKICAgICBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VQcm94eUlE
KCkgY29uc3QgeyBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOyByZXR1cm4gbV9wYWdlUHJveHlJ
RDsgfQogICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCgpIGNvbnN0IHsgQVNT
RVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsgcmV0dXJuIG1fd2ViUGFnZUlEOyB9CiAgICAgV2ViUHJv
Y2Vzc1Byb3h5KiBwcm9jZXNzKCkgeyBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOyByZXR1cm4g
bV9wcm9jZXNzLmdldCgpOyB9CisgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0KCkgY29uc3QgeyBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOyByZXR1cm4gbV9yZXF1
ZXN0OyB9CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBOU1VSTFJlcXVlc3QgKm5zUmVxdWVz
dCgpIGNvbnN0OwogI2VuZGlmCi0jaWYgUExBVEZPUk0oV0lOKQotICAgIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCgpIGNvbnN0IHsgQVNTRVJUKFJ1bkxvb3A6OmlzTWFp
bigpKTsgcmV0dXJuIG1fcmVxdWVzdDsgfQotI2VuZGlmCiAKICAgICBlbnVtIGNsYXNzIEV4Y2Vw
dGlvblR5cGUgewogICAgICAgICBEYXRhQWxyZWFkeVNlbnQsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NQb29sU291cC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NQb29sU291cC5jcHAKaW5kZXggZWU0MjQ5MTZm
ZDAuLjU5ZWU3ODhjMTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9zb3Vw
L1dlYlByb2Nlc3NQb29sU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvc291
cC9XZWJQcm9jZXNzUG9vbFNvdXAuY3BwCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKIAotI2luY2x1ZGUgIkFQSUN1c3Rv
bVByb3RvY29sTWFuYWdlckNsaWVudC5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgIldlYkNvb2tpZU1hbmFnZXJQcm94eS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtl
L09wdGlvbnNGVFcuY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0ZUVy5jbWFrZQppbmRleCA2
MTFhNGQ5ZDFlZS4uNmNmMzg5YTlkYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25z
RlRXLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zRlRXLmNtYWtlCkBAIC05MCw3ICs5
MCw2IEBAIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9JTlRFUlNFQ1RJ
T05fT0JTRVJWRVIgUFJJVkFURSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVF
KEVOQUJMRV9LRVlCT0FSRF9DT0RFX0FUVFJJQlVURSBQUklWQVRFIE9OKQogV0VCS0lUX09QVElP
Tl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0tFWUJPQVJEX0tFWV9BVFRSSUJVVEUgUFJJVkFU
RSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9MRUdBQ1lfQ1NT
X1ZFTkRPUl9QUkVGSVhFUyBQUklWQVRFIE9OKQotV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRf
VkFMVUUoRU5BQkxFX0xFR0FDWV9DVVNUT01fUFJPVE9DT0xfTUFOQUdFUiBQUklWQVRFIE9GRikK
IFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9NQUNfR0VTVFVSRV9FVkVO
VFMgUFJJVkFURSBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVf
TUFUSE1MIFBSSVZBVEUgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFC
TEVfTUVESUFfQ09OVFJPTFNfU0NSSVBUIFBSSVZBVEUgT04pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
Y21ha2UvT3B0aW9uc1BsYXlTdGF0aW9uLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNQbGF5
U3RhdGlvbi5jbWFrZQppbmRleCAyMDdkODVhZDBiOS4uMTVhOTMzM2IxOTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9jbWFrZS9PcHRpb25zUGxheVN0YXRpb24uY21ha2UKKysrIGIvU291cmNlL2NtYWtl
L09wdGlvbnNQbGF5U3RhdGlvbi5jbWFrZQpAQCAtMzgsNyArMzgsNiBAQCBXRUJLSVRfT1BUSU9O
X0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfVkFSSUFUSU9OX0ZPTlRTIFBSSVZBVEUgT0ZGKQog
IyBObyBzdXBwb3J0IHBsYW5uZWQKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVO
QUJMRV9GVFBESVIgUFJJVkFURSBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxV
RShFTkFCTEVfR0VPTE9DQVRJT04gUFJJVkFURSBPRkYpCi1XRUJLSVRfT1BUSU9OX0RFRkFVTFRf
UE9SVF9WQUxVRShFTkFCTEVfTEVHQUNZX0NVU1RPTV9QUk9UT0NPTF9NQU5BR0VSIFBSSVZBVEUg
T0ZGKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX01BVEhNTCBQUklW
QVRFIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9NRVRFUl9F
TEVNRU5UIFBSSVZBVEUgT0ZGKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5B
QkxFX05FVFNDQVBFX1BMVUdJTl9BUEkgUFJJVkFURSBPRkYpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
Y21ha2UvT3B0aW9uc1dpbi5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zV2luLmNtYWtlCmlu
ZGV4IDA3MTUzZWViYTBlLi5jYmRjMzAxYTg2YiAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09w
dGlvbnNXaW4uY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNXaW4uY21ha2UKQEAgLTc1
LDcgKzc1LDYgQEAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoVVNFX1NZU1RFTV9N
QUxMT0MgUFJJVkFURSBPTikKIAogaWYgKCR7V1RGX1BMQVRGT1JNX1dJTl9DQUlST30pCiAgICAg
V0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0lOVEwgUFVCTElDIE9OKQot
ICAgIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9MRUdBQ1lfQ1VTVE9N
X1BST1RPQ09MX01BTkFHRVIgUFVCTElDIE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RFRkFVTFRf
UE9SVF9WQUxVRShFTkFCTEVfTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSBQVUJMSUMgT0ZGKQogICAg
IFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9QVUJMSUNfU1VGRklYX0xJ
U1QgUFJJVkFURSBPTikKICAgICBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFC
TEVfVVNFUl9NRVNTQUdFX0hBTkRMRVJTIFBSSVZBVEUgT04pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
Y21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UgYi9Tb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMu
Y21ha2UKaW5kZXggODcxYmUyOTQ3ZGIuLmUzMDFhYmQ2ZGU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
Y21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL1dlYktpdEZlYXR1
cmVzLmNtYWtlCkBAIC0xNTYsNyArMTU2LDcgQEAgbWFjcm8oV0VCS0lUX09QVElPTl9CRUdJTikK
ICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfS0VZQk9BUkRfS0VZX0FUVFJJQlVURSAi
VG9nZ2xlIGtleWJvYXJkIGtleSBhdHRyaWJ1dGUgc3VwcG9ydCIgUFJJVkFURSBPTikKICAgICBX
RUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCAiVG9n
Z2xlIExheW91dCBGb3JtYXR0aW5nIENvbnRleHQgc3VwcG9ydCIgUFJJVkFURSBPRkYpCiAgICAg
V0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTICJU
b2dnbGUgbGVnYWN5IGNzcyB2ZW5kb3IgcHJlZml4IHN1cHBvcnQiIFBSSVZBVEUgT0ZGKQotICAg
IFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9MRUdBQ1lfQ1VTVE9NX1BST1RPQ09MX01BTkFH
RVIgIlRvZ2dsZSBsZWdhY3kgcHJvdG9jb2wgbWFuYWdlciBzdXBwb3J0IiBQUklWQVRFIE9OKQor
ICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9MRUdBQ1lfQ1VTVE9NX1BST1RPQ09MX01B
TkFHRVIgIlRvZ2dsZSBsZWdhY3kgcHJvdG9jb2wgbWFuYWdlciBzdXBwb3J0IiBQUklWQVRFIE9G
RikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfTEVHQUNZX0VOQ1JZUFRFRF9NRURJ
QSAiVG9nZ2xlIExlZ2FjeSBFTUUgVjIgc3VwcG9ydCIgUFJJVkFURSBPRkYpCiAgICAgV0VCS0lU
X09QVElPTl9ERUZJTkUoRU5BQkxFX0xFVFRFUlBSRVNTICJUb2dnbGUgbGV0dGVycHJlc3Mgc3Vw
cG9ydCIgUFJJVkFURSBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX01BQ19H
RVNUVVJFX0VWRU5UUyAiVG9nZ2xlIE1hYyBnZXN0dXJlIGV2ZW50cyBzdXBwb3J0IiBQUklWQVRF
IE9GRikKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCBhZWU3N2EyMGQ1My4uODgxMjNhNDI5NjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxOS0xMC0wMSAgQ2FybG9z
IEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV1BF
XSBTdG9wIHVzaW5nIGxlZ2FjeSBjdXN0b20gcHJvdG9jb2wgaW1wbGVtZW50YXRpb24KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjQwNworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSB0aGUgdGVz
dHMgdG8gY2hlY2sgZmFpbHVyZSBhZnRlciBjb21taXR0ZWQsIGJlY2F1c2UgaXQncyBub3QgcG9z
c2libGUgdG8gdGVzdCBpdCB3aXRoIGN1cnJlbnQgY29kZS4KKworICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViQ29udGV4dC5jcHA6CisgICAgICAg
ICh0ZXN0V2ViQ29udGV4dFVSSVNjaGVtZSk6CisKIDIwMTktMTAtMDEgIENhcmxvcyBHYXJjaWEg
Q2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIE1ha2UgUFNPTiBv
cHRpb25hbApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGli
L1Rlc3RXZWJLaXRXZWJDb250ZXh0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0R0xpYi9UZXN0V2ViS2l0V2ViQ29udGV4dC5jcHAKaW5kZXggNjE2MGFlN2UwNWUuLjM2YzE4
Mzg3NWM3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIv
VGVzdFdlYktpdFdlYkNvbnRleHQuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViQ29udGV4dC5jcHAKQEAgLTE2MSw3ICsxNjEsNiBAQCBz
dGF0aWMgY29uc3QgaW50IGVycm9yQ29kZSA9IDEwOwogCiBzdGF0aWMgY29uc3QgY2hhciogZ2Vu
ZXJpY0Vycm9yTWVzc2FnZSA9ICJFcnJvciBtZXNzYWdlLiI7CiBzdGF0aWMgY29uc3QgY2hhciog
YmVmb3JlUmVjZWl2ZVJlc3BvbnNlRXJyb3JNZXNzYWdlID0gIkVycm9yIGJlZm9yZSBkaWRSZWNl
aXZlUmVzcG9uc2UuIjsKLXN0YXRpYyBjb25zdCBjaGFyKiBhZnRlckluaXRpYWxDaHVua0Vycm9y
TWVzc2FnZSA9ICJFcnJvciBhZnRlciByZWFkaW5nIHRoZSBpbml0aWFsIGNodW5rLiI7CiAKIGNs
YXNzIFVSSVNjaGVtZVRlc3Q6IHB1YmxpYyBMb2FkVHJhY2tpbmdUZXN0IHsKIHB1YmxpYzoKQEAg
LTI0MCwyNiArMjM5LDggQEAgcHVibGljOgogICAgICAgICB3ZWJraXRfd2ViX2NvbnRleHRfcmVn
aXN0ZXJfdXJpX3NjaGVtZShtX3dlYkNvbnRleHQuZ2V0KCksIHNjaGVtZSwgdXJpU2NoZW1lUmVx
dWVzdENhbGxiYWNrLCB0aGlzLCAwKTsKICAgICB9CiAKLSAgICB2b2lkIGxvYWRDb21taXR0ZWQo
KSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgaWYgKG1fZmluaXNoT25Db21taXR0ZWQpIHsKLSAg
ICAgICAgICAgIEdVbmlxdWVQdHI8R0Vycm9yPiBlcnJvcihnX2Vycm9yX25ld19saXRlcmFsKGdf
cXVhcmtfZnJvbV9zdHJpbmcoZXJyb3JEb21haW4pLCBlcnJvckNvZGUsIGFmdGVySW5pdGlhbENo
dW5rRXJyb3JNZXNzYWdlKSk7Ci0gICAgICAgICAgICB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0
X2ZpbmlzaF9lcnJvcihtX3VyaVNjaGVtZVJlcXVlc3QuZ2V0KCksIGVycm9yLmdldCgpKTsKLSAg
ICAgICAgfQotCi0gICAgICAgIExvYWRUcmFja2luZ1Rlc3Q6OmxvYWRDb21taXR0ZWQoKTsKLSAg
ICB9Ci0KLSAgICB2b2lkIGZpbmlzaE9uQ29tbWl0dGVkQW5kV2FpdFVudGlsTG9hZEZpbmlzaGVk
KCkKLSAgICB7Ci0gICAgICAgIG1fZmluaXNoT25Db21taXR0ZWQgPSB0cnVlOwotICAgICAgICB3
YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKLSAgICAgICAgbV9maW5pc2hPbkNvbW1pdHRlZCA9IGZh
bHNlOwotICAgIH0KLQogICAgIEdSZWZQdHI8V2ViS2l0VVJJU2NoZW1lUmVxdWVzdD4gbV91cmlT
Y2hlbWVSZXF1ZXN0OwogICAgIEhhc2hNYXA8U3RyaW5nLCBVUklTY2hlbWVIYW5kbGVyPiBtX2hh
bmRsZXJzTWFwOwotICAgIGJvb2wgbV9maW5pc2hPbkNvbW1pdHRlZCB7IGZhbHNlIH07CiB9Owog
CiBTdHJpbmcgZ2VuZXJhdGVIVE1MQ29udGVudCh1bnNpZ25lZCBjb250ZW50TGVuZ3RoKQpAQCAt
MzE4LDEzICsyOTksMTMgQEAgc3RhdGljIHZvaWQgdGVzdFdlYkNvbnRleHRVUklTY2hlbWUoVVJJ
U2NoZW1lVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBnX2Fzc2VydF9jbXBpbnQobWFp
blJlc291cmNlRGF0YVNpemUsID09LCBzdHJsZW4oZWNob0hUTUwuZ2V0KCkpKTsKICAgICBnX2Fz
c2VydF9jbXBpbnQoc3RybmNtcChtYWluUmVzb3VyY2VEYXRhLCBlY2hvSFRNTC5nZXQoKSwgbWFp
blJlc291cmNlRGF0YVNpemUpLCA9PSwgMCk7CiAKLSAgICB0ZXN0LT5yZWdpc3RlclVSSVNjaGVt
ZUhhbmRsZXIoIm5vbWltZSIsIGtCYXJIVE1MLCAtMSwgMCk7CisgICAgdGVzdC0+cmVnaXN0ZXJV
UklTY2hlbWVIYW5kbGVyKCJub21pbWUiLCBrQmFySFRNTCwgLTEsIG51bGxwdHIpOwogICAgIHRl
c3QtPm1fbG9hZEV2ZW50cy5jbGVhcigpOwogICAgIHRlc3QtPmxvYWRVUkkoIm5vbWltZTpmb28t
YmFyIik7CiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CiAgICAgZ19hc3NlcnRf
dHJ1ZSh0ZXN0LT5tX2xvYWRFdmVudHMuY29udGFpbnMoTG9hZFRyYWNraW5nVGVzdDo6UHJvdmlz
aW9uYWxMb2FkRmFpbGVkKSk7CiAKLSAgICB0ZXN0LT5yZWdpc3RlclVSSVNjaGVtZUhhbmRsZXIo
ImVtcHR5IiwgMCwgMCwgInRleHQvaHRtbCIpOworICAgIHRlc3QtPnJlZ2lzdGVyVVJJU2NoZW1l
SGFuZGxlcigiZW1wdHkiLCBudWxscHRyLCAwLCAidGV4dC9odG1sIik7CiAgICAgdGVzdC0+bV9s
b2FkRXZlbnRzLmNsZWFyKCk7CiAgICAgdGVzdC0+bG9hZFVSSSgiZW1wdHk6bm90aGluZyIpOwog
ICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwpAQCAtMzUyLDE2ICszMzMsNyBAQCBz
dGF0aWMgdm9pZCB0ZXN0V2ViQ29udGV4dFVSSVNjaGVtZShVUklTY2hlbWVUZXN0KiB0ZXN0LCBn
Y29uc3Rwb2ludGVyKQogICAgIGdfYXNzZXJ0X2Vycm9yKHRlc3QtPm1fZXJyb3IuZ2V0KCksIGdf
cXVhcmtfZnJvbV9zdHJpbmcoZXJyb3JEb21haW4pLCBlcnJvckNvZGUpOwogICAgIGdfYXNzZXJ0
X2NtcHN0cih0ZXN0LT5tX2Vycm9yLT5tZXNzYWdlLCA9PSwgYmVmb3JlUmVjZWl2ZVJlc3BvbnNl
RXJyb3JNZXNzYWdlKTsKIAotICAgIHRlc3QtPm1fbG9hZEV2ZW50cy5jbGVhcigpOwotICAgIHRl
c3QtPmxvYWRVUkkoImVycm9yOmFmdGVyLWZpcnN0LWNodW5rIik7Ci0gICAgdGVzdC0+ZmluaXNo
T25Db21taXR0ZWRBbmRXYWl0VW50aWxMb2FkRmluaXNoZWQoKTsKLSAgICBnX2Fzc2VydF9mYWxz
ZSh0ZXN0LT5tX2xvYWRFdmVudHMuY29udGFpbnMoTG9hZFRyYWNraW5nVGVzdDo6UHJvdmlzaW9u
YWxMb2FkRmFpbGVkKSk7Ci0gICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5tX2xvYWRFdmVudHMuY29u
dGFpbnMoTG9hZFRyYWNraW5nVGVzdDo6TG9hZEZhaWxlZCkpOwotICAgIGdfYXNzZXJ0X3RydWUo
dGVzdC0+bV9sb2FkRmFpbGVkKTsKLSAgICBnX2Fzc2VydF9lcnJvcih0ZXN0LT5tX2Vycm9yLmdl
dCgpLCBnX3F1YXJrX2Zyb21fc3RyaW5nKGVycm9yRG9tYWluKSwgZXJyb3JDb2RlKTsKLSAgICBn
X2Fzc2VydF9jbXBzdHIodGVzdC0+bV9lcnJvci0+bWVzc2FnZSwgPT0sIGFmdGVySW5pdGlhbENo
dW5rRXJyb3JNZXNzYWdlKTsKLQotICAgIHRlc3QtPnJlZ2lzdGVyVVJJU2NoZW1lSGFuZGxlcigi
Y2xvc2VkIiwgMCwgMCwgMCk7CisgICAgdGVzdC0+cmVnaXN0ZXJVUklTY2hlbWVIYW5kbGVyKCJj
bG9zZWQiLCBudWxscHRyLCAwLCBudWxscHRyKTsKICAgICB0ZXN0LT5tX2xvYWRFdmVudHMuY2xl
YXIoKTsKICAgICB0ZXN0LT5sb2FkVVJJKCJjbG9zZWQ6aW5wdXQtc3RyZWFtIik7CiAgICAgdGVz
dC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7Cg==
</data>
<flag name="review"
          id="395628"
          type_id="1"
          status="+"
          setter="zan"
    />
          </attachment>
      

    </bug>

</bugzilla>