<?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>153789</bug_id>
          
          <creation_ts>2016-02-02 09:17:18 -0800</creation_ts>
          <short_desc>Convert another batch of String::lower callsites to something better, typically convertToASCIILowercase</short_desc>
          <delta_ts>2016-02-03 14:09:08 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>andersca</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1161290</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-02-02 09:17:18 -0800</bug_when>
    <thetext>Convert another batch of String::lower callsites to something better, typically convertToASCIILowercase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1161545</commentid>
    <comment_count>1</comment_count>
      <attachid>270551</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-02-02 21:48:43 -0800</bug_when>
    <thetext>Created attachment 270551
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1161676</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-02-03 08:52:08 -0800</bug_when>
    <thetext>Looking for a reviewer for this next batch of ASCII case changes. I tried to keep it from being too huge by only doing about 1/2 of the easily-convertible calls to lower(). Once this is landed I’ll do another batch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1161778</commentid>
    <comment_count>3</comment_count>
      <attachid>270551</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-03 14:09:03 -0800</bug_when>
    <thetext>Comment on attachment 270551
Patch

Clearing flags on attachment: 270551

Committed r196080: &lt;http://trac.webkit.org/changeset/196080&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1161779</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-03 14:09:08 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>270551</attachid>
            <date>2016-02-02 21:48:43 -0800</date>
            <delta_ts>2016-02-03 14:09:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-153789-20160202214819.patch</filename>
            <type>text/plain</type>
            <size>70796</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk2MDQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDVlZDdiZmJiOWE0Njg2OGM1ZWZhZjgz
ZmVkMzlmOTg5ZTNjYmU5NjUuLjhlZDEwMTc4OWIxM2Y2NDYxMGY3MDA1ODNhZDMwYjdjNDJlOTlh
OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTYtMDItMDIgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgorCisgICAgICAgIENvbnZlcnQgYW5vdGhlciBiYXRjaCBvZiBTdHJpbmc6Omxv
d2VyIGNhbGxzaXRlcyB0byBzb21ldGhpbmcgYmV0dGVyLCB0eXBpY2FsbHkgY29udmVydFRvQVND
SUlMb3dlcmNhc2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1Mzc4OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogd3RmL3RleHQvU3RyaW5nVmlldy5oOgorICAgICAgICAoV1RGOjpTdHJpbmdWaWV3Ojp0
b0ludCk6IEFkZGVkIGFuIG92ZXJsb2FkIHdpdGhvdXQgdGhlIG91dCBwYXJhbWV0ZXIuCisKIDIw
MTYtMDItMDEgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KIAog
ICAgICAgICBDYWNoZSB0aGUgUGF0aCBpbnN0ZWFkIG9mIGNyZWF0aW5nIGl0IGV2ZXJ5IHRpbWUg
aXQgaXMgcmVxdWlyZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1ODhmYTA4OTNhYzY4MDFiODkzZTc2MTRiOWRl
MTZhYzU5MDNkOWM5Li41MGIxODYyODMzNTIyNWQzYTUxYjI3YjFmZDM1ZjZiZjhmMjE4OTQ0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTc5IEBACisyMDE2LTAyLTAyICBEYXJpbiBBZGxlciAgPGRh
cmluQGFwcGxlLmNvbT4KKworICAgICAgICBDb252ZXJ0IGFub3RoZXIgYmF0Y2ggb2YgU3RyaW5n
Ojpsb3dlciBjYWxsc2l0ZXMgdG8gc29tZXRoaW5nIGJldHRlciwgdHlwaWNhbGx5IGNvbnZlcnRU
b0FTQ0lJTG93ZXJjYXNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTM3ODkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIGRvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
T01JbXBsZW1lbnRhdGlvbjo6aXNYTUxNSU1FVHlwZSk6IFVzZSBlcXVhbExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZQorICAgICAgICBhbmQgdGhlIGJvb2xlYW4gYXJndW1lbnQgdG8gZW5kc1dpdGgg
dG8gaWdub3JlIEFTQ0lJIGNhc2UuCisgICAgICAgIChXZWJDb3JlOjpET01JbXBsZW1lbnRhdGlv
bjo6aXNUZXh0TUlNRVR5cGUpOiBEaXR0by4gQWxzbyBzaW1wbGlmaWVkIHRoZSBsb2dpYworICAg
ICAgICBieSByZW1vdmluZyBhbiBpZiBzdGF0ZW1lbnQuCisKKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNTZXBhcmF0b3IpOiBEZWxldGVkLiBNb3ZlZCB0
byBXaW5kb3dGZWF0dXJlcy5jcHAuCisgICAgICAgIChXZWJDb3JlOjpwcm9jZXNzQXJndW1lbnRz
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cHJvY2Vzc1ZpZXdwb3J0KTog
Q2FsbCB0aGUgcHJvY2Vzc0ZlYXR1cmVzU3RyaW5nIGZ1bmN0aW9uCisgICAgICAgIGZyb20gV2lu
ZG93RmVhdHVyZXMuaDsgdGhlIGNvZGUgaGVyZSB3YXMgb3JpZ2luYWxseSBqdXN0IGEgcGFzdGVk
IGNvcHkgb2YgdGhhdCBjb2RlIQorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnByb2Nlc3NG
b3JtYXREZXRlY3Rpb24pOiBEaXR0by4KKworICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OnRvRW5jb2RpbmdN
aW1lVHlwZSk6IFJlbW92ZSBub3ctdW5uZWVkZWQKKyAgICAgICAgbG93ZXJjYXNpbmcgb2YgTUlN
RSB0eXBlIGJlZm9yZSBjYWxsaW5nIGlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZUZvckVuY29kaW5n
LAorICAgICAgICBzaW5jZSB0aGUgTUlNRSB0eXBlIHJlZ2lzdHJ5IG5vdyBpZ25vcmVzIEFTQ0lJ
IGNhc2UuIFVzZSBjb252ZXJ0VG9BU0NJSUxvd2VyY2FzZQorICAgICAgICBvbiB0aGUgcmV0dXJu
IHZhbHVlLCB0byBwcmVzZXJ2ZSBiZWhhdmlvci4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52
YXNFbGVtZW50Ojp0b0RhdGFVUkwpOiBNaW5vciBjb2Rpbmcgc3R5bGUgdHdlYWtzLgorCisgICAg
ICAgICogaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxF
bWJlZEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKTogVXNlIGNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNl
IGZvcgorICAgICAgICB0aGUgc2VydmljZSB0eXBlIGhlcmUuCisKKyAgICAgICAgKiBodG1sL0hU
TUxJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6
YmVzdEZpdFNvdXJjZUZyb21QaWN0dXJlRWxlbWVudCk6IFJlbW92ZSBub3ctdW5uZWVkZWQKKyAg
ICAgICAgbG93ZXJjYXNpbmcgc2luY2UgTUlNRSB0eXBlIHJlZ2lzdHJ5IG5vdyBpZ25vcmVzIEFT
Q0lJIGNhc2UuIEFuZCB1c2UKKyAgICAgICAgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Ug
Zm9yIHRoZSBjYXNlIGhlcmUuCisKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VBY2NlcHRBdHRyaWJ1dGUpOiBVc2UgY29udmVydFRv
QVNDSUlMb3dlcmNhc2UgZm9yIHRoZSB0eXBlIGhlcmUuCisKKyAgICAgICAgKiBodG1sL0hUTUxM
aW5rRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKTogVXNlIGNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlIGZvciB0aGUKKyAgICAgICAg
bWVkaWEgdmFsdWUgaGVyZS4KKworICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpjYW5QbGF5VHlwZSk6IFVzZSBj
b252ZXJ0VG9BU0NJSUxvd2VyY2FzZSBmb3IgdGhlCisgICAgICAgIGNvbnRlbnQgdHlwZSBoZXJl
LgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2VsZWN0TmV4dFNvdXJjZUNo
aWxkKTogRGl0dG8uCisKKyAgICAgICAgKiBodG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxPYmplY3RFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6IFVzZSBj
b252ZXJ0VG9BU0NJSUxvd2VyY2FzZSBmb3IKKyAgICAgICAgdGhlIHNlcnZpY2UgdHlwZSBoZXJl
LgorCisgICAgICAgICogaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxUcmFja0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKTogVXNlIGNvbnZlcnRUb0FTQ0lJ
TG93ZXJjYXNlIGZvcgorICAgICAgICB0aGUga2luZCBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFRyYWNrRWxlbWVudDo6ZW5zdXJlVHJhY2spOiBEaXR0by4gQWxzbyB1c2UgZmFzdEdldEF0
dHJpYnV0ZQorICAgICAgICBzaW5jZSB0aGlzIGlzIG5laXRoZXIgdGhlIHN0eWxlIGF0dHJpYnV0
ZSBub3IgYW4gYW5pbWF0YWJsZSBTVkcgYXR0cmlidXRlLgorCisgICAgICAgICogaHRtbC9wYXJz
ZXIvSFRNTFRyZWVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNhc2VNYXAp
OiBVc2UgY29udmVydFRvQVNDSUlMb3dlcmNhc2UgZm9yIHRoZSBsb2NhbCBuYW1lcyBoZXJlLgor
CisgICAgICAgICogaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpET01QYXRjaFN1cHBvcnQ6OnBhdGNoTm9kZSk6IFVzZSBjb250YWluc0lnbm9yaW5nQVND
SUlDYXNlIGluc3RlYWQKKyAgICAgICAgb2YgY29tYmluaW5nIGxvd2VyIHdpdGggZmluZCA9PSBu
b3RGb3VuZCBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6bm9kZU5hbWUpOiBVc2UgY29udmVydFRv
QVNDSUlMb3dlcmNhc2UgaGVyZS4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JPdmVy
bGF5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkT2JqZWN0Rm9yRWxlbWVudERhdGEpOiBV
c2UgY29udmVydFRvQVNDSUlMb3dlcmNhc2UgZm9yIG5vZGUKKyAgICAgICAgbmFtZSBoZXJlLgor
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVYSFJUZXh0RGVjb2Rlcik6IFJlbW92ZSBhIG5vdy11bm5lZWRlZCBjYWxs
IHRvIGxvd2VyIHNpbmNlCisgICAgICAgIERPTUltcGxlbWVudGF0aW9uOjppc1hNTE1JTUVUeXBl
IG5vdyBpZ25vcmVzIEFTQ0lJIGNhc2UuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
U3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsb3dlcmNhc2VQcm9wZXJ0eU5hbWUp
OiBVc2UgY29udmVydFRvQVNDSUlMb3dlcmNhc2UgZm9yIHByb3BlcnR5CisgICAgICAgIG5hbWVz
IGhlcmUuIEFsc28gdXNlIHN0YXJ0c1dpdGggcmF0aGVyIHRoYW4gYSBoYW5kLXdyaXR0ZW4gYWx0
ZXJuYXRpdmUuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZTo6cG9wdWxhdGVBbGxQ
cm9wZXJ0aWVzKTogVXNlIHRoZSByZXR1cm4gdmFsdWUgb2YKKyAgICAgICAgdGhlIGFkZCBmdW5j
dGlvbiB0byBhdm9pZCBkb2luZyBhIGRvdWJsZSBoYXNoIHRhYmxlIGxvb2twLgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yU3R5bGU6OnN0eWxlV2l0aFByb3BlcnRpZXMpOiBVc2UgY29udmVy
dFRvQVNDSUlMb3dlcmNhc2UKKyAgICAgICAgdG8gbG93ZXJjYXNlIHRoZSBwcm9wZXJ0eSBuYW1l
LgorCisgICAgICAgICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZU90aGVyUmVzb3VyY2VUZXh0RGVjb2Rlcik6IFJlbW92ZSB1bm5l
ZWRlZCBjYWxsIHRvIGxvd2VyIHNpbmNlCisgICAgICAgIERPTUltcGxlbWVudDo6aXNYTUxNSU1F
VHlwZSBub3cgaWdub3JlcyBBU0NJSSBjYXNlLgorCisgICAgICAgICogbG9hZGVyL0Nyb3NzT3Jp
Z2luQWNjZXNzQ29udHJvbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVBY2Nlc3NDb250
cm9sUHJlZmxpZ2h0UmVxdWVzdCk6IFVzZSBjb252ZXJ0VG9BU0NJSUxvd2VyY2FzZQorICAgICAg
ICB0byBsb3dlcmNhc2UgdGhlIGFjY2VzcyBjb250cm9sIHJlcXVlc3QgaGVhZGVyIGZpZWxkIHZh
bHVlLgorCisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRTY3JpcHQ6Om1pbWVUeXBlKTogVXNlIGNvbnZlcnRUb0FTQ0lJTG93
ZXJjYXNlIG9uIHRoZSBjb250ZW50IHR5cGUuCisKKyAgICAgICAgKiBwYWdlL0NhcHRpb25Vc2Vy
UHJlZmVyZW5jZXNNZWRpYUFGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omxhbmd1YWdlSWRlbnRp
Zmllcik6IFVzZSBjb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSBvbiB0aGUgbGFuZ3VhZ2UgY29kZS4K
KworICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdp
bmRvdzo6b3Blbik6IENhbGwgcGFyc2VXaW5kb3dGZWF0dXJlcyBpbnN0ZWFkIG9mIHVzaW5nIHRo
ZQorICAgICAgICBjb25zdHJ1Y3RvciBmb3IgV2luZG93RmVhdHVyZXMuCisgICAgICAgIChXZWJD
b3JlOjpET01XaW5kb3c6OnNob3dNb2RhbERpYWxvZyk6IENhbGwgcGFyc2VEaWFsb2dGZWF0dXJl
cyBpbnN0ZWFkIG9mCisgICAgICAgIHVzaW5nIHRoZSBjb25zdHJ1Y3RvciBmb3IgV2luZG93RmVh
dHVyZXMuCisKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpmaW5kRHJvcFpvbmUpOiBSZW1vdmUgdW5uZWVkZWQgbG93ZXJjYXNpbmcgYW5kIGVtcHR5
IHN0cmluZyBjaGVja2luZywKKyAgICAgICAgYW5kIHVzZSB0aGUgb3B0aW9uIFNwYWNlU3BsaXRT
dHJpbmcgYWxyZWFkeSBoYXMgdG8gY29udmVydCB0byBsb3dlcmNhc2UuCisgICAgICAgIChXZWJD
b3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZUFjY2Vzc0tleSk6IFJlbW92ZSB1bm5lZWRlZCBjYWxs
IHRvIGxvd2VyIHNpbmNlCisgICAgICAgIGdldEVsZW1lbnRCeUFjY2Vzc0tleSBub3cgaWdub3Jl
cyBjYXNlLiBBbHNvIHR3ZWFrZWQgY29kaW5nIHN0eWxlIGEgYml0LgorCisgICAgICAgICogcGFn
ZS9PcmlnaW5BY2Nlc3NFbnRyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPcmlnaW5BY2Nlc3NF
bnRyeTo6T3JpZ2luQWNjZXNzRW50cnkpOiBVc2UgY29udmVydFRvQVNDSUlMb3dlcmNhc2UKKyAg
ICAgICAgb24gdGhlIHByb3RvY29sIGFuZCBob3N0LgorICAgICAgICAoV2ViQ29yZTo6T3JpZ2lu
QWNjZXNzRW50cnk6Om1hdGNoZXNPcmlnaW4pOiBEaXR0by4KKworICAgICAgICAqIHBhZ2UvU2Vj
dXJpdHlPcmlnaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkVHJlYXRBc1VuaXF1ZU9y
aWdpbik6IFJlbW92ZSB1bm5lZWRlZCBjYWxsIHRvIGxvd2VyIHNpbmNlCisgICAgICAgIFNjaGVt
ZVJlZ2lzdHJ5IG5vdyBpZ25vcmVzIEFTQ0lJIGNhc2UuCisgICAgICAgIChXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4pOiBVc2UgY29udmVydFRvQVNDSUlMb3dlcmNhc2Ug
b24KKyAgICAgICAgdGhlIHByb3RvY29sIGFuZCBob3N0LgorICAgICAgICAoV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW46OnNldERvbWFpbkZyb21ET00pOiBVc2UgY29udmVydFRvQVNDSUlMb3dlcmNh
c2Ugb24KKyAgICAgICAgdGhlIGRvbWFpbi4KKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luOjpjYW5EaXNwbGF5KTogUmVtb3ZlIGNhbGwgdG8gbG93ZXIgc2luY2UgU2NoZW1lUmVnaXN0
cnkKKyAgICAgICAgbm93IGlnbm9yZXMgQVNDSUkgY2FzZSBhbmQgYmVjYXVzZSB0aGlzIG5vdyB1
c2VzIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UgaW4KKyAgICAgICAgb25lIHBsYWNlIHRoYXQgdXNl
ZCB0byB1c2UgZXhhY3QgbWF0Y2hpbmcuCisKKyAgICAgICAgKiBwYWdlL1dpbmRvd0ZlYXR1cmVz
LmNwcDogUmVmYWN0b3JlZCBzbyB0aGlzIGlzIG5vdyBzb21lIGhlbHBlciBmdW5jdGlvbnMKKyAg
ICAgICAgcGx1cyBhIHN0cnVjdCByYXRoZXIgdGhhbiBhIGNsYXNzLgorICAgICAgICAoV2ViQ29y
ZTo6aXNTZXBhcmF0b3IpOiBSZW5hbWVkIHRoaXMgYW5kIHJlbW92ZWQgc3BlY2lhbCBoYW5kbGlu
ZyBmb3IgTlVMLgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VXaW5kb3dGZWF0dXJlcyk6IE1vdmVk
IHRoZSBjb2RlIHRoYXQgd2FzIGZvcm1lcmx5IGluIHRoZQorICAgICAgICBXaW5kb3dGZWF0dXJl
cyBjb25zdHJ1Y3RvciBpbiBoZXJlLiBSZWZhY3RvcmVkIHRoZSBwYXJzaW5nIGludG8gdGhlCisg
ICAgICAgIHByb2Nlc3NGZWF0dXJlc1N0cmluZyBmdW5jdGlvbiwgc2hhcmVkIHdpdGggdGhlIGZ1
bmN0aW9ucyBpbiBEb2N1bWVudCB0aGF0CisgICAgICAgIGRvIHRoZSBzYW1lIGtpbmQgb2YgcGFy
c2luZy4gUmVtb3ZlZCB0aGUgY29kZSB0aGF0IGNvbnZlcnRzIHRoZSBlbnRpcmUgc3RyaW5nCisg
ICAgICAgIHRvIGxvd2VyY2FzZSBiZWZvcmUgcGFyc2luZy4KKyAgICAgICAgKFdlYkNvcmU6OnBy
b2Nlc3NGZWF0dXJlc1N0cmluZyk6IE1vdmVkIHRoZSBpbXByb3ZlZCB2ZXJzaW9uIG9mIHRoaXMg
ZnVuY3Rpb24KKyAgICAgICAgaGVyZSBmcm9tIERvY3VtZW50LmNwcDsgbW9yZSBlZmZpY2llbnQg
YmVjYXVzZSBpdCBkb2Vzbid0IGFsbG9jYXRlIHN0cmluZ3MuCisgICAgICAgIChXZWJDb3JlOjpz
ZXRXaW5kb3dGZWF0dXJlKTogQ2hhbmdlZCB0byBiZSBhIGZ1bmN0aW9uIHByaXZhdGUgdG8gdGhp
cyBmaWxlCisgICAgICAgIHdpdGggaW50ZXJuYWwgbGlua2FnZS4gVXNlIGVxdWFsTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlIHNvIHdlIG5vIGxvbmdlcgorICAgICAgICByZWx5IG9uIGNvbnZlcnRp
bmcgdGhlIHN0cmluZyB0byBsb3dlcmNhc2UgYmVmb3JlIHBhcnNpbmcuCisgICAgICAgIChXZWJD
b3JlOjpwYXJzZURpYWxvZ0ZlYXR1cmVzKTogU2ltaWxhciByZWZhY3RvcmluZywgYnV0IGFsc28g
Y2hhbmdlZCBhbGwKKyAgICAgICAgdGhlIGRlZmF1bHQgaGFuZGxpbmcgdG8gdXNlIE9wdGlvbmFs
PD4gaW5zdGVhZCBvZiBkZWZhdWx0IHZhbHVlcy4KKyAgICAgICAgKFdlYkNvcmU6OmJvb2xGZWF0
dXJlKTogQ2hhbmdlZCB0byB1c2Ugb3B0aW9uIGFuZCB0byBpZ25vcmUgQVNDSUkgY2FzZS4KKyAg
ICAgICAgKFdlYkNvcmU6OmZsb2F0RmVhdHVyZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
cGFyc2VEaWFsb2dGZWF0dXJlc01hcCk6IFJlbW92ZWQgdGhlIGNhbGxzIHRvIGxvd2VyLCB3aGlj
aCBhcmUKKyAgICAgICAgbm90IG5lZWRlZCBhbnkgbW9yZS4KKworICAgICAgICAqIHBhZ2UvV2lu
ZG93RmVhdHVyZXMuaDogQWRkZWQgZGVmYXVsdCB2YWx1ZXMgZm9yIGFsbCB0aGUgZGF0YSBtZW1i
ZXJzLAorICAgICAgICBhbmQgcmVtb3ZlZCBhbGwgdGhlIGZ1bmN0aW9ucyBmcm9tIHRoZSBXaW5k
b3dGZWF0dXJlcyBzdHJ1Y3QuIEFkZGVkIHRoZSB0d28KKyAgICAgICAgZnVuY3Rpb25zIGZvciBw
YXJzaW5nIHdpbmRvdyBhbmQgZGlhbG9nIGZlYXR1cmVzLiBBbHNvIGFkZGVkIHRoZQorICAgICAg
ICBwcm9jZXNzRmVhdHVyZXNTdHJpbmcgZnVuY3Rpb24gc28gd2UgY2FuIHNoYXJlIGl0IHdpdGgg
RG9jdW1lbnQuY3BwLgorCisgICAgICAgICogcGxhdGZvcm0vU2NoZW1lUmVnaXN0cnkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2NoZW1lUmVnaXN0cnk6OnJlbW92ZVVSTFNjaGVtZVJlZ2lzdGVy
ZWRBc0xvY2FsKTogVXNlCisgICAgICAgIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlIHRv
IGlnbm9yZSBBU0NJSSBjYXNlLgorCisgICAgICAgICogcGxhdGZvcm0vZWZsL01JTUVUeXBlUmVn
aXN0cnlFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlN
RVR5cGVGb3JFeHRlbnNpb24pOiBVc2UgYSBtb2Rlcm4gZm9yIGxvb3AsCisgICAgICAgIGFuZCBl
cXVhbElnbm9yaW5nQVNDSUlDYXNlIHJhdGhlciB0aGFuIGNhbGxpbmcgbG93ZXIuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllcjo6bG9hZCk6IFVzZSBjb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSBvbiBNSU1F
IHR5cGUgYW5kCisgICAgICAgIGtleSBzeXN0ZW0uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllcjo6Z2VuZXJhdGVLZXlSZXF1ZXN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllcjo6YWRkS2V5KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6
Y2FuY2VsS2V5UmVxdWVzdCk6IERpdHRvLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTENvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zM0RPcGVuR0xDb21tb246OkV4dGVuc2lvbnMzRE9wZW5HTENvbW1vbik6IFVzZQor
ICAgICAgICBjb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSBvbiB2ZW5kb3Igc3RyaW5nLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3RrL01JTUVUeXBlUmVnaXN0cnlHdGsuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JFeHRlbnNpb24pOiBVc2UgYSBt
b2Rlcm4gZm9yIGxvb3AsCisgICAgICAgIGFuZCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlIHJhdGhl
ciB0aGFuIGNhbGxpbmcgbG93ZXIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2Fy
ZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNvY29hVHlwZUZyb21IVE1MQ2xpcGJvYXJkVHlw
ZSk6IFVzZSBjb252ZXJ0VG9BU0NJSUxvd2VyY2FzZQorICAgICAgICBvbiB0aGUgdHlwZS4gQWxz
byBkaWQgYSBiaXQgb2YgcmVuYW1pbmcgYW5kIHR3ZWFraW5nIHRoZSBsb2dpYy4KKwogMjAxNi0w
Mi0wMiAgQWFrYXNoIEphaW4gIDxhYWthc2hfamFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVt
b3ZlIHJlZmVyZW5jZXMgdG8gQ2FsbEZyYW1lSW5saW5lcy5oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmll
dy5oCmluZGV4IGQyNGMwYWI1MWY0YmYwY2M5YmI3MjVlYTM5NTQ3ZjExYWEwYTFkOWQuLjZkZDkz
OTg2ZGVlNWFkYzg3YTNhMmYxM2FkNTQ3YjcyMTkyOTVmZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5n
Vmlldy5oCkBAIC0xMjUsNiArMTI1LDcgQEAgcHVibGljOgogICAgIFdURl9FWFBPUlRfU1RSSU5H
X0FQSSBib29sIGVuZHNXaXRoKGNvbnN0IFN0cmluZ1ZpZXcmKSBjb25zdDsKICAgICBXVEZfRVhQ
T1JUX1NUUklOR19BUEkgYm9vbCBlbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmlu
Z1ZpZXcmKSBjb25zdDsKIAorICAgIGludCB0b0ludCgpIGNvbnN0OwogICAgIGludCB0b0ludChi
b29sJiBpc1ZhbGlkKSBjb25zdDsKICAgICBpbnQgdG9JbnRTdHJpY3QoYm9vbCYgaXNWYWxpZCkg
Y29uc3Q7CiAgICAgZmxvYXQgdG9GbG9hdChib29sJiBpc1ZhbGlkKSBjb25zdDsKQEAgLTQ1NSw2
ICs0NTYsMTIgQEAgaW5saW5lIGZsb2F0IFN0cmluZ1ZpZXc6OnRvRmxvYXQoYm9vbCYgaXNWYWxp
ZCkgY29uc3QKICAgICByZXR1cm4gY2hhcmFjdGVyc1RvRmxvYXQoY2hhcmFjdGVyczE2KCksIGxl
bmd0aCgpLCAmaXNWYWxpZCk7CiB9CiAKK2lubGluZSBpbnQgU3RyaW5nVmlldzo6dG9JbnQoKSBj
b25zdAoreworICAgIGJvb2wgaXNWYWxpZDsKKyAgICByZXR1cm4gdG9JbnQoaXNWYWxpZCk7Cit9
CisKIGlubGluZSBpbnQgU3RyaW5nVmlldzo6dG9JbnQoYm9vbCYgaXNWYWxpZCkgY29uc3QKIHsK
ICAgICBpZiAoaXM4Qml0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1w
bGVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmNw
cAppbmRleCBhZTBlNzBiNmZmZDhlM2RhMjIyMzBlOWIzZmE5NWVlNGNlOTE4YWJmLi5iYzZhNzgy
MzAzNTY2N2UyN2YwOWMzZWM3YTc4NzgzZTMyNGQxMzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
T01JbXBsZW1lbnRhdGlvbi5jcHAKQEAgLTI2OCwxMCArMjY4LDEyIEBAIHN0YXRpYyBpbmxpbmUg
Ym9vbCBpc1ZhbGlkWE1MTUlNRVR5cGVDaGFyKFVDaGFyIGMpCiAKIGJvb2wgRE9NSW1wbGVtZW50
YXRpb246OmlzWE1MTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsKLSAgICBpZiAo
bWltZVR5cGUgPT0gInRleHQveG1sIiB8fCBtaW1lVHlwZSA9PSAiYXBwbGljYXRpb24veG1sIiB8
fCBtaW1lVHlwZSA9PSAidGV4dC94c2wiKQorICAgIC8vIEZJWE1FOiBDYW4gd2UgbW92ZSB0aGlz
IGxvZ2ljIHRvIE1JTUVUeXBlUmVnaXN0cnkgYW5kIGhhdmUgdGhpcyBqdXN0IGJlIGEgc2luZ2xl
IGZ1bmN0aW9uIGNhbGw/CisKKyAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uo
bWltZVR5cGUsICJ0ZXh0L3htbCIpIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1p
bWVUeXBlLCAiYXBwbGljYXRpb24veG1sIikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UobWltZVR5cGUsICJ0ZXh0L3hzbCIpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlm
ICghbWltZVR5cGUuZW5kc1dpdGgoIit4bWwiKSkKKyAgICBpZiAoIW1pbWVUeXBlLmVuZHNXaXRo
KCIreG1sIiwgZmFsc2UpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBzaXplX3Qgc2xh
c2hQb3NpdGlvbiA9IG1pbWVUeXBlLmZpbmQoJy8nKTsKQEAgLTI5MSwxMyArMjkzLDE0IEBAIGJv
b2wgRE9NSW1wbGVtZW50YXRpb246OmlzWE1MTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSkKIAogYm9vbCBET01JbXBsZW1lbnRhdGlvbjo6aXNUZXh0TUlNRVR5cGUoY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSkKIHsKLSAgICBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRKYXZh
U2NyaXB0TUlNRVR5cGUobWltZVR5cGUpCi0gICAgICAgIHx8IG1pbWVUeXBlID09ICJhcHBsaWNh
dGlvbi9qc29uIiAvLyBSZW5kZXIgSlNPTiBhcyB0ZXh0L3BsYWluLgotICAgICAgICB8fCAobWlt
ZVR5cGUuc3RhcnRzV2l0aCgidGV4dC8iKSAmJiBtaW1lVHlwZSAhPSAidGV4dC9odG1sIgotICAg
ICAgICAgICAgJiYgbWltZVR5cGUgIT0gInRleHQveG1sIiAmJiBtaW1lVHlwZSAhPSAidGV4dC94
c2wiKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICByZXR1cm4gZmFsc2U7CisgICAgLy8g
RklYTUU6IENhbiB3ZSBtb3ZlIHRoaXMgbG9naWMgdG8gTUlNRVR5cGVSZWdpc3RyeSBhbmQgaGF2
ZSB0aGlzIGp1c3QgYmUgYSBzaW5nbGUgZnVuY3Rpb24gY2FsbD8KKworICAgIHJldHVybiBNSU1F
VHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZShtaW1lVHlwZSkKKyAg
ICAgICAgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJhcHBsaWNh
dGlvbi9qc29uIikgLy8gUmVuZGVyIEpTT04gYXMgdGV4dC9wbGFpbi4KKyAgICAgICAgfHwgKG1p
bWVUeXBlLnN0YXJ0c1dpdGgoInRleHQvIiwgZmFsc2UpCisgICAgICAgICAgICAmJiAhZXF1YWxM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJ0ZXh0L2h0bWwiKQorICAgICAgICAg
ICAgJiYgIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAidGV4dC94bWwi
KQorICAgICAgICAgICAgJiYgIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBl
LCAidGV4dC94c2wiKSk7CiB9CiAKIFJlZjxIVE1MRG9jdW1lbnQ+IERPTUltcGxlbWVudGF0aW9u
OjpjcmVhdGVIVE1MRG9jdW1lbnQoY29uc3QgU3RyaW5nJiB0aXRsZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCmluZGV4IDVjNWE1MjliZjRjNzM0NWZmNGQ2ODQxN2MyNTZiY2Q3OTkzMDdlN2QuLjNh
OTA5NWZhNDU0MGQ1OGVjMWUxNGZlYTU3MjMyZGQyN2YyNGRkMTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcApAQCAtMTY4LDYgKzE2OCw3IEBACiAjaW5jbHVkZSAiVHJlZVdhbGtlci5oIgogI2lu
Y2x1ZGUgIlZpc2l0ZWRMaW5rU3RhdGUuaCIKICNpbmNsdWRlICJXaGVlbEV2ZW50LmgiCisjaW5j
bHVkZSAiV2luZG93RmVhdHVyZXMuaCIKICNpbmNsdWRlICJYTUxEb2N1bWVudC5oIgogI2luY2x1
ZGUgIlhNTERvY3VtZW50UGFyc2VyLmgiCiAjaW5jbHVkZSAiWE1MTlNOYW1lcy5oIgpAQCAtMzI3
OCw0MyArMzI3OSw2IEBAIHZvaWQgRG9jdW1lbnQ6OnByb2Nlc3NIdHRwRXF1aXYoY29uc3QgU3Ry
aW5nJiBlcXVpdiwgY29uc3QgU3RyaW5nJiBjb250ZW50KQogICAgIH0KIH0KIAotc3RhdGljIGJv
b2wgaXNTZXBhcmF0b3IoVUNoYXIgY2hhcmFjdGVyKQotewotICAgIHJldHVybiBjaGFyYWN0ZXIg
PT0gJyAnIHx8IGNoYXJhY3RlciA9PSAnXHQnIHx8IGNoYXJhY3RlciA9PSAnXG4nIHx8IGNoYXJh
Y3RlciA9PSAnXHInIHx8IGNoYXJhY3RlciA9PSAnPScgfHwgY2hhcmFjdGVyID09ICcsJzsKLX0K
LQotc3RhdGljIHZvaWQgcHJvY2Vzc0FyZ3VtZW50cyhTdHJpbmdWaWV3IGZlYXR1cmVzLCBzdGQ6
OmZ1bmN0aW9uPHZvaWQoU3RyaW5nVmlldyB0eXBlLCBTdHJpbmdWaWV3IHZhbHVlKT4gY2FsbGJh
Y2spCi17Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0gZmVhdHVyZXMubGVuZ3RoKCk7Ci0gICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKSB7Ci0gICAgICAgIC8vIHNraXAgdG8gZmly
c3Qgbm9uLXNlcGFyYXRvcgotICAgICAgICB3aGlsZSAoaSA8IGxlbmd0aCAmJiBpc1NlcGFyYXRv
cihmZWF0dXJlc1tpXSkpCi0gICAgICAgICAgICArK2k7Ci0gICAgICAgIHVuc2lnbmVkIGtleUJl
Z2luID0gaTsKLQotICAgICAgICAvLyBza2lwIHRvIGZpcnN0IHNlcGFyYXRvcgotICAgICAgICB3
aGlsZSAoaSA8IGxlbmd0aCAmJiAhaXNTZXBhcmF0b3IoZmVhdHVyZXNbaV0pKQotICAgICAgICAg
ICAgaSsrOwotICAgICAgICB1bnNpZ25lZCBrZXlFbmQgPSBpOwotCi0gICAgICAgIC8vIHNraXAg
dG8gZmlyc3QgJz0nLCBidXQgZG9uJ3Qgc2tpcCBwYXN0IGEgJywnCi0gICAgICAgIHdoaWxlIChp
IDwgbGVuZ3RoICYmIGZlYXR1cmVzW2ldICE9ICc9JyAmJiBmZWF0dXJlc1tpXSAhPSAnLCcpCi0g
ICAgICAgICAgICArK2k7Ci0KLSAgICAgICAgLy8gc2tpcCB0byBmaXJzdCBub24tc2VwYXJhdG9y
LCBidXQgZG9uJ3Qgc2tpcCBwYXN0IGEgJywnCi0gICAgICAgIHdoaWxlIChpIDwgbGVuZ3RoICYm
IGlzU2VwYXJhdG9yKGZlYXR1cmVzW2ldKSAmJiBmZWF0dXJlc1tpXSAhPSAnLCcpCi0gICAgICAg
ICAgICArK2k7Ci0gICAgICAgIHVuc2lnbmVkIHZhbHVlQmVnaW4gPSBpOwotCi0gICAgICAgIC8v
IHNraXAgdG8gZmlyc3Qgc2VwYXJhdG9yCi0gICAgICAgIHdoaWxlIChpIDwgbGVuZ3RoICYmICFp
c1NlcGFyYXRvcihmZWF0dXJlc1tpXSkpCi0gICAgICAgICAgICArK2k7Ci0gICAgICAgIHVuc2ln
bmVkIHZhbHVlRW5kID0gaTsKLQotICAgICAgICBjYWxsYmFjayhmZWF0dXJlcy5zdWJzdHJpbmco
a2V5QmVnaW4sIGtleUVuZCAtIGtleUJlZ2luKSwgZmVhdHVyZXMuc3Vic3RyaW5nKHZhbHVlQmVn
aW4sIHZhbHVlRW5kIC0gdmFsdWVCZWdpbikpOwotICAgIH0KLX0KLQogdm9pZCBEb2N1bWVudDo6
cHJvY2Vzc1ZpZXdwb3J0KGNvbnN0IFN0cmluZyYgZmVhdHVyZXMsIFZpZXdwb3J0QXJndW1lbnRz
OjpUeXBlIG9yaWdpbikKIHsKICAgICBBU1NFUlQoIWZlYXR1cmVzLmlzTnVsbCgpKTsKQEAgLTMz
MjQsNyArMzI4OCw3IEBAIHZvaWQgRG9jdW1lbnQ6OnByb2Nlc3NWaWV3cG9ydChjb25zdCBTdHJp
bmcmIGZlYXR1cmVzLCBWaWV3cG9ydEFyZ3VtZW50czo6VHlwZSBvCiAKICAgICBtX3ZpZXdwb3J0
QXJndW1lbnRzID0gVmlld3BvcnRBcmd1bWVudHMob3JpZ2luKTsKIAotICAgIHByb2Nlc3NBcmd1
bWVudHMoZmVhdHVyZXMsIFt0aGlzXShTdHJpbmdWaWV3IGtleSwgU3RyaW5nVmlldyB2YWx1ZSkg
eworICAgIHByb2Nlc3NGZWF0dXJlc1N0cmluZyhmZWF0dXJlcywgW3RoaXNdKFN0cmluZ1ZpZXcg
a2V5LCBTdHJpbmdWaWV3IHZhbHVlKSB7CiAgICAgICAgIHNldFZpZXdwb3J0RmVhdHVyZShtX3Zp
ZXdwb3J0QXJndW1lbnRzLCAqdGhpcywga2V5LCB2YWx1ZSk7CiAgICAgfSk7CiAKQEAgLTMzNDks
NyArMzMxMyw3IEBAIHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZVZpZXdwb3J0QXJndW1lbnRzKCkKIHZv
aWQgRG9jdW1lbnQ6OnByb2Nlc3NGb3JtYXREZXRlY3Rpb24oY29uc3QgU3RyaW5nJiBmZWF0dXJl
cykKIHsKICAgICAvLyBGSVhNRTogRmluZCBhIGJldHRlciBwbGFjZSBmb3IgdGhpcyBmdW5jdGlv
bi4KLSAgICBwcm9jZXNzQXJndW1lbnRzKGZlYXR1cmVzLCBbdGhpc10oU3RyaW5nVmlldyBrZXks
IFN0cmluZ1ZpZXcgdmFsdWUpIHsKKyAgICBwcm9jZXNzRmVhdHVyZXNTdHJpbmcoZmVhdHVyZXMs
IFt0aGlzXShTdHJpbmdWaWV3IGtleSwgU3RyaW5nVmlldyB2YWx1ZSkgewogICAgICAgICBpZiAo
ZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoa2V5LCAidGVsZXBob25lIikgJiYgZXF1YWxM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFsdWUsICJubyIpKQogICAgICAgICAgICAgc2V0SXNU
ZWxlcGhvbmVOdW1iZXJQYXJzaW5nQWxsb3dlZChmYWxzZSk7CiAgICAgfSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCmluZGV4IDdiMzU2OTliY2Q1MmMyNzY0MWU0
MDljNWU3ZDhiZjAyYzdkYWJjYTYuLmE5YTU3ZDQ0NTRkZTVjYzBiOTJjMjI4MTg4NDIyZDQ4NTVk
ZDQ0MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCkBAIC00
ODAsMTMgKzQ4MCw5IEBAIHZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6OnNldFN1cmZhY2VTaXplKGNv
bnN0IEludFNpemUmIHNpemUpCiAKIFN0cmluZyBIVE1MQ2FudmFzRWxlbWVudDo6dG9FbmNvZGlu
Z01pbWVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiB7Ci0gICAgU3RyaW5nIGxvd2VyY2Fz
ZU1pbWVUeXBlID0gbWltZVR5cGUubG93ZXIoKTsKLQotICAgIC8vIEZJWE1FOiBNYWtlIGlzU3Vw
cG9ydGVkSW1hZ2VNSU1FVHlwZUZvckVuY29kaW5nIHRocmVhZHNhZmUgKHRvIGFsbG93IHRoaXMg
bWV0aG9kIHRvIGJlIHVzZWQgb24gYSB3b3JrZXIgdGhyZWFkKS4KLSAgICBpZiAobWltZVR5cGUu
aXNOdWxsKCkgfHwgIU1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZUZv
ckVuY29kaW5nKGxvd2VyY2FzZU1pbWVUeXBlKSkKLSAgICAgICAgbG93ZXJjYXNlTWltZVR5cGUg
PSAiaW1hZ2UvcG5nIjsKLQotICAgIHJldHVybiBsb3dlcmNhc2VNaW1lVHlwZTsKKyAgICBpZiAo
IU1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZUZvckVuY29kaW5nKG1p
bWVUeXBlKSkKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiaW1hZ2UvcG5nIik7CisgICAg
cmV0dXJuIG1pbWVUeXBlLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7CiB9CiAKIFN0cmluZyBI
VE1MQ2FudmFzRWxlbWVudDo6dG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0
IGRvdWJsZSogcXVhbGl0eSwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC00OTksMTkgKzQ5NSwxNyBA
QCBTdHJpbmcgSFRNTENhbnZhc0VsZW1lbnQ6OnRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBjb25zdCBkb3VibGUqIHF1YWxpdAogICAgIGlmIChtX3NpemUuaXNFbXB0eSgpIHx8ICFi
dWZmZXIoKSkKICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiZGF0YTosIik7CiAKLSAgICBT
dHJpbmcgZW5jb2RpbmdNaW1lVHlwZSA9IHRvRW5jb2RpbmdNaW1lVHlwZShtaW1lVHlwZSk7Cisg
ICAgU3RyaW5nIGVuY29kaW5nTUlNRVR5cGUgPSB0b0VuY29kaW5nTWltZVR5cGUobWltZVR5cGUp
OwogCiAjaWYgVVNFKENHKQogICAgIC8vIFRyeSB0byBnZXQgSW1hZ2VEYXRhIGZpcnN0LCBhcyB0
aGF0IG1heSBhdm9pZCBsb3NzeSBjb252ZXJzaW9ucy4KLSAgICBSZWZQdHI8SW1hZ2VEYXRhPiBp
bWFnZURhdGEgPSBnZXRJbWFnZURhdGEoKTsKLQotICAgIGlmIChpbWFnZURhdGEpCi0gICAgICAg
IHJldHVybiBJbWFnZURhdGFUb0RhdGFVUkwoKmltYWdlRGF0YSwgZW5jb2RpbmdNaW1lVHlwZSwg
cXVhbGl0eSk7CisgICAgaWYgKGF1dG8gaW1hZ2VEYXRhID0gZ2V0SW1hZ2VEYXRhKCkpCisgICAg
ICAgIHJldHVybiBJbWFnZURhdGFUb0RhdGFVUkwoKmltYWdlRGF0YSwgZW5jb2RpbmdNSU1FVHlw
ZSwgcXVhbGl0eSk7CiAjZW5kaWYKIAogICAgIG1ha2VSZW5kZXJpbmdSZXN1bHRzQXZhaWxhYmxl
KCk7CiAKLSAgICByZXR1cm4gYnVmZmVyKCktPnRvRGF0YVVSTChlbmNvZGluZ01pbWVUeXBlLCBx
dWFsaXR5KTsKKyAgICByZXR1cm4gYnVmZmVyKCktPnRvRGF0YVVSTChlbmNvZGluZ01JTUVUeXBl
LCBxdWFsaXR5KTsKIH0KIAogUmVmUHRyPEltYWdlRGF0YT4gSFRNTENhbnZhc0VsZW1lbnQ6Omdl
dEltYWdlRGF0YSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcAppbmRl
eCA1M2VjZjBhY2ZjMmE0Mzc0ZmJhYTdiNjA4YzUxYjhhOTEwODcyMTQ5Li4wOTM2NjQ5YzVmYWUx
OGJmN2MzNGMxNjk4NTA5ZGIxYWFhODQ1ZDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVt
YmVkRWxlbWVudC5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIEhUTUxFbWJlZEVsZW1lbnQ6
OmNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
Jgogdm9pZCBIVE1MRW1iZWRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewogICAgIGlmIChuYW1lID09
IHR5cGVBdHRyKSB7Ci0gICAgICAgIG1fc2VydmljZVR5cGUgPSB2YWx1ZS5zdHJpbmcoKS5sZWZ0
KHZhbHVlLmZpbmQoJzsnKSkubG93ZXIoKTsKKyAgICAgICAgbV9zZXJ2aWNlVHlwZSA9IHZhbHVl
LnN0cmluZygpLmxlZnQodmFsdWUuZmluZCgnOycpKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgp
OwogICAgICAgICAvLyBGSVhNRTogVGhlIG9ubHkgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoaXMgYW5k
IEhUTUxPYmplY3RFbGVtZW50J3MgY29ycmVzcG9uZGluZwogICAgICAgICAvLyBjb2RlIGlzIHRo
YXQgSFRNTE9iamVjdEVsZW1lbnQgZG9lcyBzZXROZWVkc1dpZGdldFVwZGF0ZSh0cnVlKS4gQ29u
c2lkZXIgbW92aW5nCiAgICAgICAgIC8vIHRoaXMgdXAgdG8gdGhlIEhUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQgdG8gYmUgc2hhcmVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5j
cHAKaW5kZXggODAwODkxYjQxNGQ2ZDQ0MTNiZjRiMWE3NTg0NDg0ZmNiNDZlZjdjMy4uOGRlOTU2
MzBmYmJkMGVlNGVjMTRlNDlkMGE2NmYzY2NiZjA3NzBkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJbWFnZUVsZW1lbnQuY3BwCkBAIC0xNjIsOCArMTYyLDcgQEAgSW1hZ2VDYW5kaWRhdGUg
SFRNTEltYWdlRWxlbWVudDo6YmVzdEZpdFNvdXJjZUZyb21QaWN0dXJlRWxlbWVudCgpCiAgICAg
ICAgICAgICBpZiAoaW5kZXhPZlNlbWljb2xvbiA+PSAwKQogICAgICAgICAgICAgICAgIHR5cGUu
dHJ1bmNhdGUoaW5kZXhPZlNlbWljb2xvbik7CiAgICAgICAgICAgICB0eXBlID0gc3RyaXBMZWFk
aW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKHR5cGUpOwotICAgICAgICAgICAgdHlwZSA9IHR5cGUu
bG93ZXIoKTsKLSAgICAgICAgICAgIGlmICghdHlwZS5pc0VtcHR5KCkgJiYgIU1JTUVUeXBlUmVn
aXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZSh0eXBlKSAmJiB0eXBlICE9ICJpbWFnZS9z
dmcreG1sIikKKyAgICAgICAgICAgIGlmICghdHlwZS5pc0VtcHR5KCkgJiYgIU1JTUVUeXBlUmVn
aXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZSh0eXBlKSAmJiAhZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2UodHlwZSwgImltYWdlL3N2Zyt4bWwiKSkKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgfQogICAgICAgICBNZWRpYVF1ZXJ5RXZhbHVhdG9yIGV2YWx1YXRv
cihkb2N1bWVudCgpLnByaW50aW5nKCkgPyAicHJpbnQiIDogInNjcmVlbiIsIGRvY3VtZW50KCku
ZnJhbWUoKSwgZG9jdW1lbnQoKS5kb2N1bWVudEVsZW1lbnQoKSA/IGRvY3VtZW50KCkuZG9jdW1l
bnRFbGVtZW50KCktPmNvbXB1dGVkU3R5bGUoKSA6IG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggM2MwMmUzOWFjYmU0ZTdhODc4NzNkMzMxOTVh
MjRlNzllZDJhZmIxMi4uYWNkYmE4NDJiOTM0OWQzYjYxMTc1Yjg4MjMwMzE5MWY5MmNjNDJjNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC0xMjI5LDcgKzEy
MjksNyBAQCBzdGF0aWMgVmVjdG9yPFN0cmluZz4gcGFyc2VBY2NlcHRBdHRyaWJ1dGUoY29uc3Qg
U3RyaW5nJiBhY2NlcHRTdHJpbmcsIGJvb2wgKCpwcgogICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgIGlmICghcHJlZGljYXRlKHRyaW1tZWRUeXBlKSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICB0eXBlcy5hcHBlbmQodHJpbW1lZFR5cGUubG93ZXIoKSk7CisgICAgICAgIHR5
cGVzLmFwcGVuZCh0cmltbWVkVHlwZS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpKTsKICAgICB9
CiAKICAgICByZXR1cm4gdHlwZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxMaW5rRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5j
cHAKaW5kZXggMWM0OWVhM2ZhZTBhM2VkYWVmMDBjNDJkN2MwMWVkMDdjNDk2MzY1Yy4uMThlZTQz
NWFkNGI5MTcyMDA5OGVlMDRhNWNhMDNmYzM2YWJkZDViNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTExpbmtFbGVtZW50LmNwcApAQCAtMTY0LDcgKzE2NCw3IEBAIHZvaWQgSFRNTExpbmtFbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9t
aWNTdHJpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKG5hbWUgPT0gbWVkaWFBdHRy
KSB7Ci0gICAgICAgIG1fbWVkaWEgPSB2YWx1ZS5zdHJpbmcoKS5sb3dlcigpOworICAgICAgICBt
X21lZGlhID0gdmFsdWUuc3RyaW5nKCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKICAgICAg
ICAgcHJvY2VzcygpOwogICAgICAgICBpZiAobV9zaGVldCAmJiAhaXNEaXNhYmxlZCgpKQogICAg
ICAgICAgICAgZG9jdW1lbnQoKS5zdHlsZVJlc29sdmVyQ2hhbmdlZChEZWZlclJlY2FsY1N0eWxl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDRhODI5ZTBj
MDhkMTVhYjdjNDMyM2RmNmM3YTI1M2U3MTI0M2ZlMDguLjI2NjBmZWQwMDlmNWU2Zjk1ZjU4M2Fi
ZjBmMGIyY2FlNWI0NjdhOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcApAQCAtOTIwLDcgKzkyMCw3IEBAIFN0cmluZyBIVE1MTWVkaWFFbGVtZW50OjpjYW5QbGF5
VHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGtleVN5CiB7CiAgICAg
TWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyBwYXJhbWV0ZXJzOwogICAgIENvbnRlbnRUeXBl
IGNvbnRlbnRUeXBlKG1pbWVUeXBlKTsKLSAgICBwYXJhbWV0ZXJzLnR5cGUgPSBjb250ZW50VHlw
ZS50eXBlKCkubG93ZXIoKTsKKyAgICBwYXJhbWV0ZXJzLnR5cGUgPSBjb250ZW50VHlwZS50eXBl
KCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKICAgICBwYXJhbWV0ZXJzLmNvZGVjcyA9IGNv
bnRlbnRUeXBlLnBhcmFtZXRlcihBU0NJSUxpdGVyYWwoImNvZGVjcyIpKTsKICAgICBwYXJhbWV0
ZXJzLnVybCA9IHVybDsKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQpAQCAtNDE3Niw3ICs0
MTc2LDcgQEAgVVJMIEhUTUxNZWRpYUVsZW1lbnQ6OnNlbGVjdE5leHRTb3VyY2VDaGlsZChDb250
ZW50VHlwZSogY29udGVudFR5cGUsIFN0cmluZyoga2UKICNlbmRpZgogICAgICAgICAgICAgTWVk
aWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyBwYXJhbWV0ZXJzOwogICAgICAgICAgICAgQ29udGVu
dFR5cGUgY29udGVudFR5cGUodHlwZSk7Ci0gICAgICAgICAgICBwYXJhbWV0ZXJzLnR5cGUgPSBj
b250ZW50VHlwZS50eXBlKCkubG93ZXIoKTsKKyAgICAgICAgICAgIHBhcmFtZXRlcnMudHlwZSA9
IGNvbnRlbnRUeXBlLnR5cGUoKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwogICAgICAgICAg
ICAgcGFyYW1ldGVycy5jb2RlY3MgPSBjb250ZW50VHlwZS5wYXJhbWV0ZXIoQVNDSUlMaXRlcmFs
KCJjb2RlY3MiKSk7CiAgICAgICAgICAgICBwYXJhbWV0ZXJzLnVybCA9IG1lZGlhVVJMOwogI2lm
IEVOQUJMRShFTkNSWVBURURfTUVESUEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxPYmplY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVs
ZW1lbnQuY3BwCmluZGV4IDhiMjgzMTA0ZGU1NzU5OWViNzM0Y2RmOTQyNDVmMzBkY2I1MjE5MzEu
LmIxNjkyOGY2NmQwZjljNWRjYmJmMDFmYzM3MDc5MTJiNjZhYjViMjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCkBAIC0xMTIsNyArMTEyLDcgQEAgdm9pZCBI
VE1MT2JqZWN0RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFt
ZSwgY29uc3QgQXRvbWljU3QKICAgICBpZiAobmFtZSA9PSBmb3JtQXR0cikKICAgICAgICAgZm9y
bUF0dHJpYnV0ZUNoYW5nZWQoKTsKICAgICBlbHNlIGlmIChuYW1lID09IHR5cGVBdHRyKSB7Ci0g
ICAgICAgIG1fc2VydmljZVR5cGUgPSB2YWx1ZS5zdHJpbmcoKS5sZWZ0KHZhbHVlLmZpbmQoJzsn
KSkubG93ZXIoKTsKKyAgICAgICAgbV9zZXJ2aWNlVHlwZSA9IHZhbHVlLnN0cmluZygpLmxlZnQo
dmFsdWUuZmluZCgnOycpKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwogICAgICAgICBpbnZh
bGlkYXRlUmVuZGVyZXIgPSAhZmFzdEhhc0F0dHJpYnV0ZShjbGFzc2lkQXR0cik7CiAgICAgICAg
IHNldE5lZWRzV2lkZ2V0VXBkYXRlKHRydWUpOwogICAgIH0gZWxzZSBpZiAobmFtZSA9PSBkYXRh
QXR0cikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAKaW5kZXggYjNl
YjNiODA0ZWRiNDNjNWU3OGI4ZTRjZGU3MTljZTBjYmRlMmM2YS4uZmE3N2JlNzliM2FhMTYwMjBh
OGMwNDlmN2ZkOWJlYjQzMjFkNjJlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVHJhY2tFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0Vs
ZW1lbnQuY3BwCkBAIC0xMDIsNyArMTAyLDcgQEAgdm9pZCBIVE1MVHJhY2tFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHIKICAg
ICAgICAgLy8gNC44LjEwLjEyLjMgU291cmNpbmcgb3V0LW9mLWJhbmQgdGV4dCB0cmFja3MKICAg
ICAgICAgLy8gQXMgdGhlIGtpbmQsIGxhYmVsLCBhbmQgc3JjbGFuZyBhdHRyaWJ1dGVzIGFyZSBz
ZXQsIGNoYW5nZWQsIG9yIHJlbW92ZWQsIHRoZSB0ZXh0IHRyYWNrIG11c3QgdXBkYXRlIGFjY29y
ZGluZ2x5Li4uCiAgICAgICAgIH0gZWxzZSBpZiAobmFtZSA9PSBraW5kQXR0cikKLSAgICAgICAg
ICAgIHRyYWNrKCktPnNldEtpbmQodmFsdWUubG93ZXIoKSk7CisgICAgICAgICAgICB0cmFjaygp
LT5zZXRLaW5kKHZhbHVlLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkpOwogICAgICAgICBlbHNl
IGlmIChuYW1lID09IGxhYmVsQXR0cikKICAgICAgICAgICAgIHRyYWNrKCktPnNldExhYmVsKHZh
bHVlKTsKICAgICAgICAgZWxzZSBpZiAobmFtZSA9PSBzcmNsYW5nQXR0cikKQEAgLTE1Nyw4ICsx
NTcsOCBAQCB2b2lkIEhUTUxUcmFja0VsZW1lbnQ6OnNldElzRGVmYXVsdChib29sIGlzRGVmYXVs
dCkKIExvYWRhYmxlVGV4dFRyYWNrJiBIVE1MVHJhY2tFbGVtZW50OjplbnN1cmVUcmFjaygpCiB7
CiAgICAgaWYgKCFtX3RyYWNrKSB7Ci0gICAgICAgIC8vIFRoZSBraW5kIGF0dHJpYnV0ZSBpcyBh
biBlbnVtZXJhdGVkIGF0dHJpYnV0ZSwgbGltaXRlZCBvbmx5IHRvIGtub3cgdmFsdWVzLiBJdCBk
ZWZhdWx0cyB0byAnc3VidGl0bGVzJyBpZiBtaXNzaW5nIG9yIGludmFsaWQuCi0gICAgICAgIFN0
cmluZyBraW5kID0gZ2V0QXR0cmlidXRlKGtpbmRBdHRyKS5sb3dlcigpOworICAgICAgICAvLyBU
aGUga2luZCBhdHRyaWJ1dGUgaXMgYW4gZW51bWVyYXRlZCBhdHRyaWJ1dGUsIGxpbWl0ZWQgb25s
eSB0byBrbm93biB2YWx1ZXMuIEl0IGRlZmF1bHRzIHRvICdzdWJ0aXRsZXMnIGlmIG1pc3Npbmcg
b3IgaW52YWxpZC4KKyAgICAgICAgU3RyaW5nIGtpbmQgPSBmYXN0R2V0QXR0cmlidXRlKGtpbmRB
dHRyKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwogICAgICAgICBpZiAoIVRleHRUcmFjazo6
aXNWYWxpZEtpbmRLZXl3b3JkKGtpbmQpKQogICAgICAgICAgICAga2luZCA9IFRleHRUcmFjazo6
c3VidGl0bGVzS2V5d29yZCgpOwogICAgICAgICBtX3RyYWNrID0gTG9hZGFibGVUZXh0VHJhY2s6
OmNyZWF0ZSh0aGlzLCBraW5kLCBsYWJlbCgpLCBzcmNsYW5nKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAKaW5kZXggYTIxY2MyZGMwMzlhZjMw
MDViM2M4MGZjODRhZTU3MTdmN2FiMzg1Yy4uZGRhMGRlODUxMzNjZTQzMDA5N2E2ZTIzOGI0YmFh
YWZmYTdiMWQwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRy
ZWVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1
aWxkZXIuY3BwCkBAIC01MTEsNyArNTExLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhYmxlUXVh
bGlmaWVkTmFtZT4gc3RhdGljIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBRdWFsaWZpZWROYW0KICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKICAgICAgICAgY29uc3Qg
UXVhbGlmaWVkTmFtZSYgbmFtZSA9ICpuYW1lc1tpXTsKICAgICAgICAgY29uc3QgQXRvbWljU3Ry
aW5nJiBsb2NhbE5hbWUgPSBuYW1lLmxvY2FsTmFtZSgpOwotICAgICAgICBBdG9taWNTdHJpbmcg
bG93ZXJlZExvY2FsTmFtZSA9IGxvY2FsTmFtZS5sb3dlcigpOworICAgICAgICBBdG9taWNTdHJp
bmcgbG93ZXJlZExvY2FsTmFtZSA9IGxvY2FsTmFtZS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgp
OwogICAgICAgICBpZiAobG93ZXJlZExvY2FsTmFtZSAhPSBsb2NhbE5hbWUpCiAgICAgICAgICAg
ICBtYXAuYWRkKGxvd2VyZWRMb2NhbE5hbWUsIG5hbWUpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAKaW5kZXggYjY5MjM4Y2E4ZmY3NjE1N2I5
NGUwOThmOTc1ZmY2NTA2ZmE4MWNlNy4uOWZmYTAwYmM0ODJjMzFlNTY5NjU0ZTZmNjM0NDY0YzA1
MGQ4MTEwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3Vw
cG9ydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5j
cHAKQEAgLTEzNiwxNCArMTM2LDEzIEBAIE5vZGUqIERPTVBhdGNoU3VwcG9ydDo6cGF0Y2hOb2Rl
KE5vZGUmIG5vZGUsIGNvbnN0IFN0cmluZyYgbWFya3VwLCBFeGNlcHRpb25Db2RlCiAgICAgICAg
IG9sZExpc3QuYXBwZW5kKGNyZWF0ZURpZ2VzdChjaGlsZCwgbnVsbHB0cikpOwogCiAgICAgLy8g
Q29tcG9zZSB0aGUgbmV3IGxpc3QuCi0gICAgU3RyaW5nIG1hcmt1cENvcHkgPSBtYXJrdXAubG93
ZXIoKTsKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPERpZ2VzdD4+IG5ld0xpc3Q7CiAgICAg
Zm9yIChOb2RlKiBjaGlsZCA9IHBhcmVudE5vZGUtPmZpcnN0Q2hpbGQoKTsgY2hpbGQgIT0gJm5v
ZGU7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpCiAgICAgICAgIG5ld0xpc3QuYXBwZW5k
KGNyZWF0ZURpZ2VzdChjaGlsZCwgbnVsbHB0cikpOwogICAgIGZvciAoTm9kZSogY2hpbGQgPSBm
cmFnbWVudC0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmco
KSkgewotICAgICAgICBpZiAoY2hpbGQtPmhhc1RhZ05hbWUoaGVhZFRhZykgJiYgIWNoaWxkLT5m
aXJzdENoaWxkKCkgJiYgbWFya3VwQ29weS5maW5kKCI8L2hlYWQ+IikgPT0gbm90Rm91bmQpCisg
ICAgICAgIGlmIChjaGlsZC0+aGFzVGFnTmFtZShoZWFkVGFnKSAmJiAhY2hpbGQtPmZpcnN0Q2hp
bGQoKSAmJiAhbWFya3VwLmNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2UoIjwvaGVhZD4iKSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOyAvLyBIVE1MNSBwYXJzZXIgaW5zZXJ0cyBlbXB0eSA8aGVhZD4g
dGFnIHdoZW5ldmVyIGl0IHBhcnNlcyA8Ym9keT4KLSAgICAgICAgaWYgKGNoaWxkLT5oYXNUYWdO
YW1lKGJvZHlUYWcpICYmICFjaGlsZC0+Zmlyc3RDaGlsZCgpICYmIG1hcmt1cENvcHkuZmluZCgi
PC9ib2R5PiIpID09IG5vdEZvdW5kKQorICAgICAgICBpZiAoY2hpbGQtPmhhc1RhZ05hbWUoYm9k
eVRhZykgJiYgIWNoaWxkLT5maXJzdENoaWxkKCkgJiYgIW1hcmt1cC5jb250YWluc0lnbm9yaW5n
QVNDSUlDYXNlKCI8L2JvZHk+IikpCiAgICAgICAgICAgICBjb250aW51ZTsgLy8gSFRNTDUgcGFy
c2VyIGluc2VydHMgZW1wdHkgPGJvZHk+IHRhZyB3aGVuZXZlciBpdCBwYXJzZXMgPC9oZWFkPgog
ICAgICAgICBuZXdMaXN0LmFwcGVuZChjcmVhdGVEaWdlc3QoY2hpbGQsICZtX3VudXNlZE5vZGVz
TWFwKSk7CiAgICAgfQpAQCAtNDk2LDExICs0OTUsMTIgQEAgdm9pZCBET01QYXRjaFN1cHBvcnQ6
Om1hcmtOb2RlQXNVc2VkKERpZ2VzdCogZGlnZXN0KQogfQogCiAjaWZkZWYgREVCVUdfRE9NX1BB
VENIX1NVUFBPUlQKKwogc3RhdGljIFN0cmluZyBub2RlTmFtZShOb2RlKiBub2RlKQogewogICAg
IGlmIChub2RlLT5kb2N1bWVudCgpLmlzWEhUTUxEb2N1bWVudCgpKQogICAgICAgICAgcmV0dXJu
IG5vZGUtPm5vZGVOYW1lKCk7Ci0gICAgcmV0dXJuIG5vZGUtPm5vZGVOYW1lKCkubG93ZXIoKTsK
KyAgICByZXR1cm4gbm9kZS0+bm9kZU5hbWUoKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwog
fQogCiB2b2lkIERPTVBhdGNoU3VwcG9ydDo6ZHVtcE1hcChjb25zdCBSZXN1bHRNYXAmIG1hcCwg
Y29uc3QgU3RyaW5nJiBuYW1lKQpAQCAtNTA5LDYgKzUwOSw3IEBAIHZvaWQgRE9NUGF0Y2hTdXBw
b3J0OjpkdW1wTWFwKGNvbnN0IFJlc3VsdE1hcCYgbWFwLCBjb25zdCBTdHJpbmcmIG5hbWUpCiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXAuc2l6ZSgpOyArK2kpCiAgICAgICAgIGZwcmlu
dGYoc3RkZXJyLCAiJXNbJWx1XTogJXMgKCVwKSAtIFslbHVdXG4iLCBuYW1lLnV0ZjgoKS5kYXRh
KCksIGksIG1hcFtpXS5maXJzdCA/IG5vZGVOYW1lKG1hcFtpXS5maXJzdC0+bV9ub2RlKS51dGY4
KCkuZGF0YSgpIDogIiIsIG1hcFtpXS5maXJzdCwgbWFwW2ldLnNlY29uZCk7CiB9CisKICNlbmRp
ZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yT3ZlcmxheS5jcHAKaW5kZXggMTBjYzAyNDZlNTI3OTQ1MTAzYmQwMTE0ZjQxNTBh
MGMzYjkxMzMyZS4uOGU5ODkzM2ExMzAyZjQzYjYyZDRkN2M1YWQ0YjM1MWE4ZTczYzE0NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcApAQCAtNzA5
LDcgKzcwOSw3IEBAIHN0YXRpYyBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5
cGVzOjpFbGVtZW50RGF0YT4gYnVpbGRPYmplY3RGb3JFbGVtCiAgICAgRWxlbWVudCYgZWxlbWVu
dCA9ICplZmZlY3RpdmVFbGVtZW50OwogICAgIGJvb2wgaXNYSFRNTCA9IGVsZW1lbnQuZG9jdW1l
bnQoKS5pc1hIVE1MRG9jdW1lbnQoKTsKICAgICBhdXRvIGVsZW1lbnREYXRhID0gSW5zcGVjdG9y
OjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpFbGVtZW50RGF0YTo6Y3JlYXRlKCkKLSAgICAgICAg
LnNldFRhZ05hbWUoaXNYSFRNTCA/IGVsZW1lbnQubm9kZU5hbWUoKSA6IGVsZW1lbnQubm9kZU5h
bWUoKS5sb3dlcigpKQorICAgICAgICAuc2V0VGFnTmFtZShpc1hIVE1MID8gZWxlbWVudC5ub2Rl
TmFtZSgpIDogZWxlbWVudC5ub2RlTmFtZSgpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkpCiAg
ICAgICAgIC5zZXRJZFZhbHVlKGVsZW1lbnQuZ2V0SWRBdHRyaWJ1dGUoKSkKICAgICAgICAgLnJl
bGVhc2UoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFn
ZW50LmNwcAppbmRleCBmZGE3N2U0Mzg2NjU5MDA5Y2ZkOTI3MDdhNDM1OTkyYTljNWNjZWFmLi44
MGFlN2YyODFiZDQ3YmVmYWRlNWIwNTJmMjNjMjY1NDZhZTIwNWMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtMTIzLDcgKzEyMyw3
IEBAIHN0YXRpYyBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gY3JlYXRlWEhSVGV4dERlY29k
ZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwKICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rl
cj4gZGVjb2RlcjsKICAgICBpZiAoIXRleHRFbmNvZGluZ05hbWUuaXNFbXB0eSgpKQogICAgICAg
ICBkZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L3BsYWluIiwgdGV4
dEVuY29kaW5nTmFtZSk7Ci0gICAgZWxzZSBpZiAoRE9NSW1wbGVtZW50YXRpb246OmlzWE1MTUlN
RVR5cGUobWltZVR5cGUubG93ZXIoKSkpIHsKKyAgICBlbHNlIGlmIChET01JbXBsZW1lbnRhdGlv
bjo6aXNYTUxNSU1FVHlwZShtaW1lVHlwZSkpIHsKICAgICAgICAgZGVjb2RlciA9IFRleHRSZXNv
dXJjZURlY29kZXI6OmNyZWF0ZSgiYXBwbGljYXRpb24veG1sIik7CiAgICAgICAgIGRlY29kZXIt
PnVzZUxlbmllbnRYTUxEZWNvZGluZygpOwogICAgIH0gZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJ0ZXh0L2h0bWwiKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAppbmRleCAwNjUwMzVkN2FlZDNh
Y2VmMjIxM2ExNGI5YzI0ZDk2MjRlN2M1YWNkLi5jMzEwOTIxZDdhYjg2Zjc5NmQ5ZDQyMjIxNDUz
MmE2ZmU5ZTM5MmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clN0eWxlU2hlZXQuY3BwCkBAIC0zNTAsOSArMzUwLDkgQEAgYm9vbCBJbnNwZWN0b3JTdHlsZTo6
Z2V0VGV4dChTdHJpbmcqIHJlc3VsdCkgY29uc3QKIHN0YXRpYyBTdHJpbmcgbG93ZXJjYXNlUHJv
cGVydHlOYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICAvLyBDdXN0b20gcHJvcGVydGll
cyBhcmUgY2FzZS1zZW5zaXRpdmUuCi0gICAgaWYgKG5hbWUubGVuZ3RoKCkgPiAyICYmIG5hbWUu
Y2hhcmFjdGVyQXQoMCkgPT0gJy0nICYmIG5hbWUuY2hhcmFjdGVyQXQoMSkgPT0gJy0nKQorICAg
IGlmIChuYW1lLnN0YXJ0c1dpdGgoIi0tIikpCiAgICAgICAgIHJldHVybiBuYW1lOwotICAgIHJl
dHVybiBuYW1lLmxvd2VyKCk7CisgICAgcmV0dXJuIG5hbWUuY29udmVydFRvQVNDSUlMb3dlcmNh
c2UoKTsKIH0KIAogYm9vbCBJbnNwZWN0b3JTdHlsZTo6cG9wdWxhdGVBbGxQcm9wZXJ0aWVzKFZl
Y3RvcjxJbnNwZWN0b3JTdHlsZVByb3BlcnR5PiogcmVzdWx0KSBjb25zdApAQCAtMzc1LDExICsz
NzUsOCBAQCBib29sIEluc3BlY3RvclN0eWxlOjpwb3B1bGF0ZUFsbFByb3BlcnRpZXMoVmVjdG9y
PEluc3BlY3RvclN0eWxlUHJvcGVydHk+KiByZXN1bAogCiAgICAgZm9yIChpbnQgaSA9IDAsIHNp
emUgPSBtX3N0eWxlLT5sZW5ndGgoKTsgaSA8IHNpemU7ICsraSkgewogICAgICAgICBTdHJpbmcg
bmFtZSA9IG1fc3R5bGUtPml0ZW0oaSk7Ci0gICAgICAgIFN0cmluZyBsb3dlck5hbWUgPSBsb3dl
cmNhc2VQcm9wZXJ0eU5hbWUobmFtZSk7Ci0gICAgICAgIGlmIChzb3VyY2VQcm9wZXJ0eU5hbWVz
LmNvbnRhaW5zKGxvd2VyTmFtZSkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgc291
cmNlUHJvcGVydHlOYW1lcy5hZGQobG93ZXJOYW1lKTsKLSAgICAgICAgcmVzdWx0LT5hcHBlbmQo
SW5zcGVjdG9yU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVNvdXJjZURhdGEobmFtZSwgbV9zdHls
ZS0+Z2V0UHJvcGVydHlWYWx1ZShuYW1lKSwgIW1fc3R5bGUtPmdldFByb3BlcnR5UHJpb3JpdHko
bmFtZSkuaXNFbXB0eSgpLCB0cnVlLCBTb3VyY2VSYW5nZSgpKSwgZmFsc2UsIGZhbHNlKSk7Cisg
ICAgICAgIGlmIChzb3VyY2VQcm9wZXJ0eU5hbWVzLmFkZChsb3dlcmNhc2VQcm9wZXJ0eU5hbWUo
bmFtZSkpKQorICAgICAgICAgICAgcmVzdWx0LT5hcHBlbmQoSW5zcGVjdG9yU3R5bGVQcm9wZXJ0
eShDU1NQcm9wZXJ0eVNvdXJjZURhdGEobmFtZSwgbV9zdHlsZS0+Z2V0UHJvcGVydHlWYWx1ZShu
YW1lKSwgIW1fc3R5bGUtPmdldFByb3BlcnR5UHJpb3JpdHkobmFtZSkuaXNFbXB0eSgpLCB0cnVl
LCBTb3VyY2VSYW5nZSgpKSwgZmFsc2UsIGZhbHNlKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHRy
dWU7CkBAIC00MTMsNyArNDEwLDcgQEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NT
U3R5bGU+IEluc3BlY3RvclN0eWxlOjpzdHlsZVdpdGhQcm9wZXJ0aWVzKCkgY28KICAgICAgICAg
c3RhdHVzID0gaXQtPmRpc2FibGVkID8gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NQcm9w
ZXJ0eVN0YXR1czo6RGlzYWJsZWQgOiBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1Byb3Bl
cnR5U3RhdHVzOjpBY3RpdmU7CiAKICAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkNTUzo6Q1NTUHJvcGVydHk+IHByb3BlcnR5ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpD
U1NQcm9wZXJ0eTo6Y3JlYXRlKCkKLSAgICAgICAgICAgIC5zZXROYW1lKG5hbWUubG93ZXIoKSkK
KyAgICAgICAgICAgIC5zZXROYW1lKG5hbWUuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSkKICAg
ICAgICAgICAgIC5zZXRWYWx1ZShwcm9wZXJ0eUVudHJ5LnZhbHVlKQogICAgICAgICAgICAgLnJl
bGVhc2UoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtS
ZXNvdXJjZXNEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3Vy
Y2VzRGF0YS5jcHAKaW5kZXggZGJkNDMxYTNiYWI0ZmM3MmFlZDE0YjVjZWQyZWYzOTdiZDlkODVk
My4uMzlkMzUzNTQ4YWE3ZTg5MmYwZGI3NjkwOGJiOWE4MjFiNjg0MmM0MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCkBAIC0xNDEs
NyArMTQxLDcgQEAgc3RhdGljIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBjcmVhdGVPdGhl
clJlc291cmNlVGV4dERlY29kZXIoY29uc3QgU3RyaW5nJgogICAgIFJlZlB0cjxUZXh0UmVzb3Vy
Y2VEZWNvZGVyPiBkZWNvZGVyOwogICAgIGlmICghdGV4dEVuY29kaW5nTmFtZS5pc0VtcHR5KCkp
CiAgICAgICAgIGRlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQvcGxh
aW4iLCB0ZXh0RW5jb2RpbmdOYW1lKTsKLSAgICBlbHNlIGlmIChET01JbXBsZW1lbnRhdGlvbjo6
aXNYTUxNSU1FVHlwZShtaW1lVHlwZS5sb3dlcigpKSkgeworICAgIGVsc2UgaWYgKERPTUltcGxl
bWVudGF0aW9uOjppc1hNTE1JTUVUeXBlKG1pbWVUeXBlKSkgewogICAgICAgICBkZWNvZGVyID0g
VGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJhcHBsaWNhdGlvbi94bWwiKTsKICAgICAgICAg
ZGVjb2Rlci0+dXNlTGVuaWVudFhNTERlY29kaW5nKCk7CiAgICAgfSBlbHNlIGlmIChlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgInRleHQvaHRtbCIpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcAppbmRleCAx
N2EwYjBiZDI0ZWMyODE3ZjgyNThkMGYxMmIwYzI1ODhmMjZjNTMxLi4wMWE0ZDZmYzFhN2Y1YWEx
YzRkMTZjZmMzYWIxZmE0MjM3YmM1NTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcApAQCAtMTI3LDcgKzEyNyw3IEBAIFJlc291
cmNlUmVxdWVzdCBjcmVhdGVBY2Nlc3NDb250cm9sUHJlZmxpZ2h0UmVxdWVzdChjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlCiAgICAgICAgICAgICBoZWFkZXJCdWZmZXIuYXBwZW5kKGhlYWRl
ckZpZWxkLmtleSk7CiAgICAgICAgIH0KIAotICAgICAgICBwcmVmbGlnaHRSZXF1ZXN0LnNldEhU
VFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6QWNjZXNzQ29udHJvbFJlcXVlc3RIZWFkZXJz
LCBoZWFkZXJCdWZmZXIudG9TdHJpbmcoKS5sb3dlcigpKTsKKyAgICAgICAgcHJlZmxpZ2h0UmVx
dWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkFjY2Vzc0NvbnRyb2xSZXF1
ZXN0SGVhZGVycywgaGVhZGVyQnVmZmVyLnRvU3RyaW5nKCkuY29udmVydFRvQVNDSUlMb3dlcmNh
c2UoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHByZWZsaWdodFJlcXVlc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCmluZGV4IDU5NGZiMzNmMzRhODQ1
NTUwOGFhODY2YTk0YTc4MWViYjBlYTljMGIuLmVkY2VjZjhjNTE3ZWM3MzVjNTlkZTBlYWMwN2Fk
MDdjYWFkOWFmMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3Jp
cHQuY3BwCkBAIC02Niw3ICs2Niw3IEBAIFN0cmluZyBDYWNoZWRTY3JpcHQ6OmVuY29kaW5nKCkg
Y29uc3QKIAogU3RyaW5nIENhY2hlZFNjcmlwdDo6bWltZVR5cGUoKSBjb25zdAogewotICAgIHJl
dHVybiBleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFUeXBlKG1fcmVzcG9uc2UuaHR0cEhlYWRlckZp
ZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50VHlwZSkpLmxvd2VyKCk7CisgICAgcmV0dXJuIGV4
dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUobV9yZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRU
UEhlYWRlck5hbWU6OkNvbnRlbnRUeXBlKSkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKIH0K
IAogU3RyaW5nVmlldyBDYWNoZWRTY3JpcHQ6OnNjcmlwdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwCmluZGV4IDQyYWUx
NzBiZGYxNWY4MWZlZTc0NTZlNjM1NmRkOTMwN2JjMWEzZWEuLjUwMDZkY2E2YWEyMzg2YTc4OWQ2
YTgwZGI0MzcyODdhMzZiOTk1OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2Fw
dGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwCkBAIC01OTMsNyArNTkzLDcgQEAgc3Rh
dGljIFN0cmluZyBsYW5ndWFnZUlkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBsYW5ndWFnZUNvZGUp
CiAgICAgaWYgKGxhbmd1YWdlQ29kZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBsYW5ndWFn
ZUNvZGU7CiAKLSAgICBTdHJpbmcgbG93ZXJjYXNlTGFuZ3VhZ2VDb2RlID0gbGFuZ3VhZ2VDb2Rl
Lmxvd2VyKCk7CisgICAgU3RyaW5nIGxvd2VyY2FzZUxhbmd1YWdlQ29kZSA9IGxhbmd1YWdlQ29k
ZS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwogCiAgICAgLy8gTmVlZCAyVSBoZXJlIHRvIGRp
c2FtYmlndWF0ZSBTdHJpbmc6Om9wZXJhdG9yW10gZnJvbSBvcGVyYXRvcihOU1N0cmluZyosIGlu
dClbXSBpbiBhIHByb2R1Y3Rpb24gYnVpbGQuCiAgICAgaWYgKGxvd2VyY2FzZUxhbmd1YWdlQ29k
ZS5sZW5ndGgoKSA+PSAzICYmIChsb3dlcmNhc2VMYW5ndWFnZUNvZGVbMlVdID09ICdfJyB8fCBs
b3dlcmNhc2VMYW5ndWFnZUNvZGVbMlVdID09ICctJykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5j
cHAKaW5kZXggOGUzM2E3NzNmNGZiZDI5YjlmYWVhZjc1ZjczNWQ2MmQ2MThjNGVmOS4uZGFjNTRk
NzJiMDljYWI0MDFiYjg3YzAyMWFmY2I2M2I4YWE5MWI0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2lu
ZG93LmNwcApAQCAtMjIxNyw4ICsyMjE3LDcgQEAgUGFzc1JlZlB0cjxET01XaW5kb3c+IERPTVdp
bmRvdzo6b3Blbihjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgQXRvbWljU3RyaW4KICAg
ICAgICAgcmV0dXJuIHRhcmdldEZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKTsKICAgICB9
CiAKLSAgICBXaW5kb3dGZWF0dXJlcyB3aW5kb3dGZWF0dXJlcyh3aW5kb3dGZWF0dXJlc1N0cmlu
Zyk7Ci0gICAgUmVmUHRyPEZyYW1lPiByZXN1bHQgPSBjcmVhdGVXaW5kb3codXJsU3RyaW5nLCBm
cmFtZU5hbWUsIHdpbmRvd0ZlYXR1cmVzLCBhY3RpdmVXaW5kb3csICpmaXJzdEZyYW1lLCAqbV9m
cmFtZSk7CisgICAgUmVmUHRyPEZyYW1lPiByZXN1bHQgPSBjcmVhdGVXaW5kb3codXJsU3RyaW5n
LCBmcmFtZU5hbWUsIHBhcnNlV2luZG93RmVhdHVyZXMod2luZG93RmVhdHVyZXNTdHJpbmcpLCBh
Y3RpdmVXaW5kb3csICpmaXJzdEZyYW1lLCAqbV9mcmFtZSk7CiAgICAgcmV0dXJuIHJlc3VsdCA/
IHJlc3VsdC0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCkgOiBudWxscHRyOwogfQogCkBAIC0yMjQ1
LDggKzIyNDQsNyBAQCB2b2lkIERPTVdpbmRvdzo6c2hvd01vZGFsRGlhbG9nKGNvbnN0IFN0cmlu
ZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIGRpYWxvZ0ZlYQogICAgIGlmICghY2FuU2hvd01v
ZGFsRGlhbG9nTm93KG1fZnJhbWUpIHx8ICFmaXJzdFdpbmRvdy5hbGxvd1BvcFVwKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFdpbmRvd0ZlYXR1cmVzIHdpbmRvd0ZlYXR1cmVzKGRpYWxvZ0Zl
YXR1cmVzU3RyaW5nLCBzY3JlZW5BdmFpbGFibGVSZWN0KG1fZnJhbWUtPnZpZXcoKSkpOwotICAg
IFJlZlB0cjxGcmFtZT4gZGlhbG9nRnJhbWUgPSBjcmVhdGVXaW5kb3codXJsU3RyaW5nLCBlbXB0
eUF0b20sIHdpbmRvd0ZlYXR1cmVzLCBhY3RpdmVXaW5kb3csICpmaXJzdEZyYW1lLCAqbV9mcmFt
ZSwgV1RGTW92ZShwcmVwYXJlRGlhbG9nRnVuY3Rpb24pKTsKKyAgICBSZWZQdHI8RnJhbWU+IGRp
YWxvZ0ZyYW1lID0gY3JlYXRlV2luZG93KHVybFN0cmluZywgZW1wdHlBdG9tLCBwYXJzZURpYWxv
Z0ZlYXR1cmVzKGRpYWxvZ0ZlYXR1cmVzU3RyaW5nLCBzY3JlZW5BdmFpbGFibGVSZWN0KG1fZnJh
bWUtPnZpZXcoKSkpLCBhY3RpdmVXaW5kb3csICpmaXJzdEZyYW1lLCAqbV9mcmFtZSwgV1RGTW92
ZShwcmVwYXJlRGlhbG9nRnVuY3Rpb24pKTsKICAgICBpZiAoIWRpYWxvZ0ZyYW1lKQogICAgICAg
ICByZXR1cm47CiAgICAgZGlhbG9nRnJhbWUtPnBhZ2UoKS0+Y2hyb21lKCkucnVuTW9kYWwoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCBhMjQ4OTBjMTA0ZGI2MDI4ODRh
MDdkZGZiODk5NmEwZmRmMmI2NjA0Li4zZmNhNTk3NDhkNzRlZDM4NDhlYTczYzMzZDQwMjczN2Vm
NjM2ZGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0yMTY2LDI3ICsy
MTY2LDE2IEBAIHN0YXRpYyBib29sIGZpbmREcm9wWm9uZShOb2RlKiB0YXJnZXQsIERhdGFUcmFu
c2ZlciogZGF0YVRyYW5zZmVyKQogICAgIEFTU0VSVCh0YXJnZXQpOwogICAgIEVsZW1lbnQqIGVs
ZW1lbnQgPSBpczxFbGVtZW50PigqdGFyZ2V0KSA/IGRvd25jYXN0PEVsZW1lbnQ+KHRhcmdldCkg
OiB0YXJnZXQtPnBhcmVudEVsZW1lbnQoKTsKICAgICBmb3IgKDsgZWxlbWVudDsgZWxlbWVudCA9
IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkgeworICAgICAgICBTcGFjZVNwbGl0U3RyaW5nIGtl
eXdvcmRzKGVsZW1lbnQtPmZhc3RHZXRBdHRyaWJ1dGUod2Via2l0ZHJvcHpvbmVBdHRyKSwgdHJ1
ZSk7CiAgICAgICAgIGJvb2wgbWF0Y2hlZCA9IGZhbHNlOwotICAgICAgICBTdHJpbmcgZHJvcFpv
bmVTdHIgPSBlbGVtZW50LT5mYXN0R2V0QXR0cmlidXRlKHdlYmtpdGRyb3B6b25lQXR0cik7Ci0K
LSAgICAgICAgaWYgKGRyb3Bab25lU3RyLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICAKLSAgICAgICAgZHJvcFpvbmVTdHIgPSBkcm9wWm9uZVN0ci5sb3dlcigpOwot
ICAgICAgICAKLSAgICAgICAgU3BhY2VTcGxpdFN0cmluZyBrZXl3b3Jkcyhkcm9wWm9uZVN0ciwg
ZmFsc2UpOwotICAgICAgICBpZiAoa2V5d29yZHMuaXNFbXB0eSgpKQotICAgICAgICAgICAgY29u
dGludWU7Ci0gICAgICAgIAogICAgICAgICBEcmFnT3BlcmF0aW9uIGRyYWdPcGVyYXRpb24gPSBE
cmFnT3BlcmF0aW9uTm9uZTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBr
ZXl3b3Jkcy5zaXplKCk7IGkrKykgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBzaXpl
ID0ga2V5d29yZHMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAgICAgICBEcmFnT3Bl
cmF0aW9uIG9wID0gY29udmVydERyb3Bab25lT3BlcmF0aW9uVG9EcmFnT3BlcmF0aW9uKGtleXdv
cmRzW2ldKTsKICAgICAgICAgICAgIGlmIChvcCAhPSBEcmFnT3BlcmF0aW9uTm9uZSkgewogICAg
ICAgICAgICAgICAgIGlmIChkcmFnT3BlcmF0aW9uID09IERyYWdPcGVyYXRpb25Ob25lKQogICAg
ICAgICAgICAgICAgICAgICBkcmFnT3BlcmF0aW9uID0gb3A7CiAgICAgICAgICAgICB9IGVsc2UK
ICAgICAgICAgICAgICAgICBtYXRjaGVkID0gbWF0Y2hlZCB8fCBoYXNEcm9wWm9uZVR5cGUoKmRh
dGFUcmFuc2Zlciwga2V5d29yZHNbaV0uc3RyaW5nKCkpOwotCiAgICAgICAgICAgICBpZiAobWF0
Y2hlZCAmJiBkcmFnT3BlcmF0aW9uICE9IERyYWdPcGVyYXRpb25Ob25lKQogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0yOTEzLDIwICsyOTAyLDE5IEBAIHZvaWQgRXZlbnRI
YW5kbGVyOjpob3ZlclRpbWVyRmlyZWQoKQogICAgIH0KIH0KIAotYm9vbCBFdmVudEhhbmRsZXI6
OmhhbmRsZUFjY2Vzc0tleShjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmIGV2dCkKK2Jvb2wg
RXZlbnRIYW5kbGVyOjpoYW5kbGVBY2Nlc3NLZXkoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50
JiBldmVudCkKIHsKICAgICAvLyBGSVhNRTogSWdub3JpbmcgdGhlIHN0YXRlIG9mIFNoaWZ0IGtl
eSBpcyB3aGF0IG5laXRoZXIgSUUgbm9yIEZpcmVmb3ggZG8uCiAgICAgLy8gSUUgbWF0Y2hlcyBs
b3dlciBhbmQgdXBwZXIgY2FzZSBhY2Nlc3Mga2V5cyByZWdhcmRsZXNzIG9mIFNoaWZ0IGtleSBz
dGF0ZSAtIGJ1dCBpZiBib3RoIHVwcGVyIGFuZAogICAgIC8vIGxvd2VyIGNhc2UgdmFyaWFudHMg
YXJlIHByZXNlbnQgaW4gYSBkb2N1bWVudCwgdGhlIGNvcnJlY3QgZWxlbWVudCBpcyBtYXRjaGVk
IGJhc2VkIG9uIFNoaWZ0IGtleSBzdGF0ZS4KICAgICAvLyBGaXJlZm94IG9ubHkgbWF0Y2hlcyBh
biBhY2Nlc3Mga2V5IGlmIFNoaWZ0IGlzIG5vdCBwcmVzc2VkLCBhbmQgZG9lcyB0aGF0IGNhc2Ut
aW5zZW5zaXRpdmVseS4KICAgICBBU1NFUlQoIShhY2Nlc3NLZXlNb2RpZmllcnMoKSAmIFBsYXRm
b3JtRXZlbnQ6OlNoaWZ0S2V5KSk7Ci0gICAgaWYgKChldnQubW9kaWZpZXJzKCkgJiB+UGxhdGZv
cm1FdmVudDo6U2hpZnRLZXkpICE9IGFjY2Vzc0tleU1vZGlmaWVycygpKQorICAgIGlmICgoZXZl
bnQubW9kaWZpZXJzKCkgJiB+UGxhdGZvcm1FdmVudDo6U2hpZnRLZXkpICE9IGFjY2Vzc0tleU1v
ZGlmaWVycygpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgU3RyaW5nIGtleSA9IGV2dC51
bm1vZGlmaWVkVGV4dCgpOwotICAgIEVsZW1lbnQqIGVsZW0gPSBtX2ZyYW1lLmRvY3VtZW50KCkt
PmdldEVsZW1lbnRCeUFjY2Vzc0tleShrZXkubG93ZXIoKSk7Ci0gICAgaWYgKCFlbGVtKQorICAg
IEVsZW1lbnQqIGVsZW1lbnQgPSBtX2ZyYW1lLmRvY3VtZW50KCktPmdldEVsZW1lbnRCeUFjY2Vz
c0tleShldmVudC51bm1vZGlmaWVkVGV4dCgpKTsKKyAgICBpZiAoIWVsZW1lbnQpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBlbGVtLT5hY2Nlc3NLZXlBY3Rpb24oZmFsc2UpOworICAgIGVs
ZW1lbnQtPmFjY2Vzc0tleUFjdGlvbihmYWxzZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvT3JpZ2luQWNjZXNzRW50cnkuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9PcmlnaW5BY2Nlc3NFbnRyeS5jcHAKaW5kZXggN2ZmNjdjYzQ2MmZh
MTIwM2NhNzVlOGNiODY5N2Y5OTQzYTI4MzhkYS4uOGMxMjNhZTI2MDA5ZDg2MTJiMWY4NzQyYzE5
ZGFmYmY4N2E4Y2JkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9PcmlnaW5BY2Nl
c3NFbnRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9PcmlnaW5BY2Nlc3NFbnRyeS5j
cHAKQEAgLTM2LDggKzM2LDggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIE9yaWdpbkFj
Y2Vzc0VudHJ5OjpPcmlnaW5BY2Nlc3NFbnRyeShjb25zdCBTdHJpbmcmIHByb3RvY29sLCBjb25z
dCBTdHJpbmcmIGhvc3QsIFN1YmRvbWFpblNldHRpbmcgc3ViZG9tYWluU2V0dGluZykKLSAgICA6
IG1fcHJvdG9jb2wocHJvdG9jb2wubG93ZXIoKSkKLSAgICAsIG1faG9zdChob3N0Lmxvd2VyKCkp
CisgICAgOiBtX3Byb3RvY29sKHByb3RvY29sLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkpCisg
ICAgLCBtX2hvc3QoaG9zdC5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpKQogICAgICwgbV9zdWJk
b21haW5TZXR0aW5ncyhzdWJkb21haW5TZXR0aW5nKQogewogICAgIEFTU0VSVChzdWJkb21haW5T
ZXR0aW5nID09IEFsbG93U3ViZG9tYWlucyB8fCBzdWJkb21haW5TZXR0aW5nID09IERpc2FsbG93
U3ViZG9tYWlucyk7CkBAIC00OCw4ICs0OCw4IEBAIE9yaWdpbkFjY2Vzc0VudHJ5OjpPcmlnaW5B
Y2Nlc3NFbnRyeShjb25zdCBTdHJpbmcmIHByb3RvY29sLCBjb25zdCBTdHJpbmcmIGhvc3QsCiAK
IGJvb2wgT3JpZ2luQWNjZXNzRW50cnk6Om1hdGNoZXNPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmln
aW4mIG9yaWdpbikgY29uc3QKIHsKLSAgICBBU1NFUlQob3JpZ2luLmhvc3QoKSA9PSBvcmlnaW4u
aG9zdCgpLmxvd2VyKCkpOwotICAgIEFTU0VSVChvcmlnaW4ucHJvdG9jb2woKSA9PSBvcmlnaW4u
cHJvdG9jb2woKS5sb3dlcigpKTsKKyAgICBBU1NFUlQob3JpZ2luLmhvc3QoKSA9PSBvcmlnaW4u
aG9zdCgpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkpOworICAgIEFTU0VSVChvcmlnaW4ucHJv
dG9jb2woKSA9PSBvcmlnaW4ucHJvdG9jb2woKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpKTsK
IAogICAgIGlmIChtX3Byb3RvY29sICE9IG9yaWdpbi5wcm90b2NvbCgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2lu
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCmluZGV4IDhmZTdl
NjA2OTQwODI4NzgwZWNkOWMyODE2NzMyZTU5YWVmZjEyNjAuLmZiYTZmYzFhNTZjNWE0Mzk0YTA2
ZjEzMmU5ZmJkOWJkY2RhOThlMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2Vj
dXJpdHlPcmlnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4u
Y3BwCkBAIC05NywxMSArOTcsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRUcmVhdEFzVW5pcXVlT3Jp
Z2luKGNvbnN0IFVSTCYgdXJsKQogICAgIGlmIChzY2hlbWVSZXF1aXJlc0hvc3QoaW5uZXJVUkwp
ICYmIGlubmVyVVJMLmhvc3QoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0g
ICAgLy8gU2NoZW1lUmVnaXN0cnkgbmVlZHMgYSBsb3dlciBjYXNlIHByb3RvY29sIGJlY2F1c2Ug
aXQgdXNlcyBIYXNoTWFwcwotICAgIC8vIHRoYXQgYXNzdW1lIHRoZSBzY2hlbWUgaGFzIGFscmVh
ZHkgYmVlbiBjYW5vbmljYWxpemVkLgotICAgIFN0cmluZyBwcm90b2NvbCA9IGlubmVyVVJMLnBy
b3RvY29sKCkubG93ZXIoKTsKLQotICAgIGlmIChTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRV
UkxTY2hlbWVBc05vQWNjZXNzKHByb3RvY29sKSkKKyAgICBpZiAoU2NoZW1lUmVnaXN0cnk6OnNo
b3VsZFRyZWF0VVJMU2NoZW1lQXNOb0FjY2Vzcyhpbm5lclVSTC5wcm90b2NvbCgpKSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBUaGlzIGlzIHRoZSBjb21tb24gY2FzZS4KQEAgLTEw
OSw4ICsxMDUsOCBAQCBzdGF0aWMgYm9vbCBzaG91bGRUcmVhdEFzVW5pcXVlT3JpZ2luKGNvbnN0
IFVSTCYgdXJsKQogfQogCiBTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4oY29uc3QgVVJM
JiB1cmwpCi0gICAgOiBtX3Byb3RvY29sKHVybC5wcm90b2NvbCgpLmlzTnVsbCgpID8gZW1wdHlT
dHJpbmcoKSA6IHVybC5wcm90b2NvbCgpLmxvd2VyKCkpCi0gICAgLCBtX2hvc3QodXJsLmhvc3Qo
KS5pc051bGwoKSA/IGVtcHR5U3RyaW5nKCkgOiB1cmwuaG9zdCgpLmxvd2VyKCkpCisgICAgOiBt
X3Byb3RvY29sKHVybC5wcm90b2NvbCgpLmlzTnVsbCgpID8gZW1wdHlTdHJpbmcoKSA6IHVybC5w
cm90b2NvbCgpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkpCisgICAgLCBtX2hvc3QodXJsLmhv
c3QoKS5pc051bGwoKSA/IGVtcHR5U3RyaW5nKCkgOiB1cmwuaG9zdCgpLmNvbnZlcnRUb0FTQ0lJ
TG93ZXJjYXNlKCkpCiAgICAgLCBtX3BvcnQodXJsLnBvcnQoKSkKICAgICAsIG1faXNVbmlxdWUo
ZmFsc2UpCiAgICAgLCBtX3VuaXZlcnNhbEFjY2VzcyhmYWxzZSkKQEAgLTIwMyw3ICsxOTksNyBA
QCBSZWY8U2VjdXJpdHlPcmlnaW4+IFNlY3VyaXR5T3JpZ2luOjppc29sYXRlZENvcHkoKSBjb25z
dAogdm9pZCBTZWN1cml0eU9yaWdpbjo6c2V0RG9tYWluRnJvbURPTShjb25zdCBTdHJpbmcmIG5l
d0RvbWFpbikKIHsKICAgICBtX2RvbWFpbldhc1NldEluRE9NID0gdHJ1ZTsKLSAgICBtX2RvbWFp
biA9IG5ld0RvbWFpbi5sb3dlcigpOworICAgIG1fZG9tYWluID0gbmV3RG9tYWluLmNvbnZlcnRU
b0FTQ0lJTG93ZXJjYXNlKCk7CiB9CiAKIGJvb2wgU2VjdXJpdHlPcmlnaW46OmlzU2VjdXJlKGNv
bnN0IFVSTCYgdXJsKQpAQCAtMzU0LDE2ICszNTAsMTYgQEAgYm9vbCBTZWN1cml0eU9yaWdpbjo6
Y2FuRGlzcGxheShjb25zdCBVUkwmIHVybCkgY29uc3QKICAgICBpZiAobV91bml2ZXJzYWxBY2Nl
c3MpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgU3RyaW5nIHByb3RvY29sID0gdXJsLnBy
b3RvY29sKCkubG93ZXIoKTsKLQogICAgIGlmIChpc0ZlZWRXaXRoTmVzdGVkUHJvdG9jb2xJbkhU
VFBGYW1pbHkodXJsKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKKyAgICBTdHJpbmcgcHJvdG9j
b2wgPSB1cmwucHJvdG9jb2woKTsKKwogICAgIGlmIChTY2hlbWVSZWdpc3RyeTo6Y2FuRGlzcGxh
eU9ubHlJZkNhblJlcXVlc3QocHJvdG9jb2wpKQogICAgICAgICByZXR1cm4gY2FuUmVxdWVzdCh1
cmwpOwogCiAgICAgaWYgKFNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzRGlz
cGxheUlzb2xhdGVkKHByb3RvY29sKSkKLSAgICAgICAgcmV0dXJuIG1fcHJvdG9jb2wgPT0gcHJv
dG9jb2wgfHwgU2VjdXJpdHlQb2xpY3k6OmlzQWNjZXNzVG9VUkxXaGl0ZUxpc3RlZCh0aGlzLCB1
cmwpOworICAgICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShtX3Byb3RvY29sLCBw
cm90b2NvbCkgfHwgU2VjdXJpdHlQb2xpY3k6OmlzQWNjZXNzVG9VUkxXaGl0ZUxpc3RlZCh0aGlz
LCB1cmwpOwogCiAgICAgaWYgKFNlY3VyaXR5UG9saWN5OjpyZXN0cmljdEFjY2Vzc1RvTG9jYWwo
KSAmJiBTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0xvY2FsKHByb3RvY29s
KSkKICAgICAgICAgcmV0dXJuIGNhbkxvYWRMb2NhbFJlc291cmNlcygpIHx8IFNlY3VyaXR5UG9s
aWN5Ojppc0FjY2Vzc1RvVVJMV2hpdGVMaXN0ZWQodGhpcywgdXJsKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93RmVhdHVyZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9XaW5kb3dGZWF0dXJlcy5jcHAKaW5kZXggYzBkZDg2Y2FhMDNmNjM5ZmUyNDMwNzRiZDEzMDgz
ZjliZGZkMzI2MS4uN2M3NmFlMTI4MjA4Zjg0M2NlNzI3ZDRjNmUxYjRhNmUzNmI5NWY1MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dGZWF0dXJlcy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dGZWF0dXJlcy5jcHAKQEAgLTI1LDE0MSArMjUsMTIzIEBA
CiAKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgor
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Ly8gVGhvdWdoIGlzc3BhY2UoKSBjb25zaWRlcnMgXHQgYW5kIFx2IHRvIGJlIHdoaXRlc3BhY2Us
IFdpbiBJRSBkb2Vzbid0IHdoZW4gcGFyc2luZyB3aW5kb3cgZmVhdHVyZXMuCi1zdGF0aWMgYm9v
bCBpc1dpbmRvd0ZlYXR1cmVzU2VwYXJhdG9yKFVDaGFyIGMpCit0eXBlZGVmIEhhc2hNYXA8U3Ry
aW5nLCBTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4gRGlhbG9nRmVhdHVyZXNNYXA7
CisKK3N0YXRpYyB2b2lkIHNldFdpbmRvd0ZlYXR1cmUoV2luZG93RmVhdHVyZXMmLCBTdHJpbmdW
aWV3IGtleSwgU3RyaW5nVmlldyB2YWx1ZSk7CisKK3N0YXRpYyBEaWFsb2dGZWF0dXJlc01hcCBw
YXJzZURpYWxvZ0ZlYXR1cmVzTWFwKGNvbnN0IFN0cmluZyYpOworc3RhdGljIE9wdGlvbmFsPGJv
b2w+IGJvb2xGZWF0dXJlKGNvbnN0IERpYWxvZ0ZlYXR1cmVzTWFwJiwgY29uc3QgY2hhcioga2V5
KTsKK3N0YXRpYyBPcHRpb25hbDxmbG9hdD4gZmxvYXRGZWF0dXJlKGNvbnN0IERpYWxvZ0ZlYXR1
cmVzTWFwJiwgY29uc3QgY2hhcioga2V5LCBmbG9hdCBtaW4sIGZsb2F0IG1heCk7CisKK3N0YXRp
YyBib29sIGlzU2VwYXJhdG9yKFVDaGFyIGNoYXJhY3RlcikKIHsKLSAgICByZXR1cm4gYyA9PSAn
ICcgfHwgYyA9PSAnXHQnIHx8IGMgPT0gJ1xuJyB8fCBjID09ICdccicgfHwgYyA9PSAnPScgfHwg
YyA9PSAnLCcgfHwgYyA9PSAnXDAnOworICAgIHJldHVybiBjaGFyYWN0ZXIgPT0gJyAnIHx8IGNo
YXJhY3RlciA9PSAnXHQnIHx8IGNoYXJhY3RlciA9PSAnXG4nIHx8IGNoYXJhY3RlciA9PSAnXHIn
IHx8IGNoYXJhY3RlciA9PSAnPScgfHwgY2hhcmFjdGVyID09ICcsJzsKIH0KIAotV2luZG93RmVh
dHVyZXM6OldpbmRvd0ZlYXR1cmVzKGNvbnN0IFN0cmluZyYgZmVhdHVyZXMpCi0gICAgOiByZXNp
emFibGUodHJ1ZSkKLSAgICAsIGZ1bGxzY3JlZW4oZmFsc2UpCi0gICAgLCBkaWFsb2coZmFsc2Up
CitXaW5kb3dGZWF0dXJlcyBwYXJzZVdpbmRvd0ZlYXR1cmVzKFN0cmluZ1ZpZXcgZmVhdHVyZXNT
dHJpbmcpCiB7Ci0gICAgLyoKLSAgICAgVGhlIElFIHJ1bGUgaXM6IGFsbCBmZWF0dXJlcyBleGNl
cHQgZm9yIGNoYW5uZWxtb2RlIGFuZCBmdWxsc2NyZWVuIGRlZmF1bHQgdG8gWUVTLCBidXQKLSAg
ICAgaWYgdGhlIHVzZXIgc3BlY2lmaWVzIGEgZmVhdHVyZSBzdHJpbmcsIGFsbCBmZWF0dXJlcyBk
ZWZhdWx0IHRvIE5PLiAoVGhlcmUgaXMgbm8gcHVibGljCi0gICAgIHN0YW5kYXJkIHRoYXQgYXBw
bGllcyB0byB0aGlzIG1ldGhvZC4pCi0KLSAgICAgPGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20v
d29ya3Nob3AvYXV0aG9yL2RodG1sL3JlZmVyZW5jZS9tZXRob2RzL29wZW5fMC5hc3A+Ci0gICAg
IFdlIGFsd2F5cyBhbGxvdyBhIHdpbmRvdyB0byBiZSByZXNpemVkLCB3aGljaCBpcyBjb25zaXN0
ZW50IHdpdGggRmlyZWZveC4KLSAgICAgKi8KLQotICAgIGlmIChmZWF0dXJlcy5pc0VtcHR5KCkp
IHsKLSAgICAgICAgbWVudUJhclZpc2libGUgPSB0cnVlOwotICAgICAgICBzdGF0dXNCYXJWaXNp
YmxlID0gdHJ1ZTsKLSAgICAgICAgdG9vbEJhclZpc2libGUgPSB0cnVlOwotICAgICAgICBsb2Nh
dGlvbkJhclZpc2libGUgPSB0cnVlOwotICAgICAgICBzY3JvbGxiYXJzVmlzaWJsZSA9IHRydWU7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgLy8gVGhlIElFIHJ1bGUgaXM6IGFsbCBmZWF0
dXJlcyBleGNlcHQgZm9yIGNoYW5uZWxtb2RlIGFuZCBmdWxsc2NyZWVuIGRlZmF1bHQgdG8gWUVT
LCBidXQKKyAgICAvLyBpZiB0aGUgdXNlciBzcGVjaWZpZXMgYSBmZWF0dXJlIHN0cmluZywgYWxs
IGZlYXR1cmVzIGRlZmF1bHQgdG8gTk8uIChUaGVyZSBpcyBubyBwdWJsaWMKKyAgICAvLyBzdGFu
ZGFyZCB0aGF0IGFwcGxpZXMgdG8gdGhpcyBtZXRob2QuKQorICAgIC8vCisgICAgLy8gPGh0dHA6
Ly9tc2RuLm1pY3Jvc29mdC5jb20vd29ya3Nob3AvYXV0aG9yL2RodG1sL3JlZmVyZW5jZS9tZXRo
b2RzL29wZW5fMC5hc3A+CisgICAgLy8gV2UgYWx3YXlzIGFsbG93IGEgd2luZG93IHRvIGJlIHJl
c2l6ZWQsIHdoaWNoIGlzIGNvbnNpc3RlbnQgd2l0aCBGaXJlZm94LgorCisgICAgV2luZG93RmVh
dHVyZXMgZmVhdHVyZXM7CisKKyAgICBpZiAoZmVhdHVyZXNTdHJpbmcuaXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm4gZmVhdHVyZXM7CiAKLSAgICBtZW51QmFyVmlzaWJsZSA9IGZhbHNlOwotICAg
IHN0YXR1c0JhclZpc2libGUgPSBmYWxzZTsKLSAgICB0b29sQmFyVmlzaWJsZSA9IGZhbHNlOwot
ICAgIGxvY2F0aW9uQmFyVmlzaWJsZSA9IGZhbHNlOwotICAgIHNjcm9sbGJhcnNWaXNpYmxlID0g
ZmFsc2U7CisgICAgZmVhdHVyZXMubWVudUJhclZpc2libGUgPSBmYWxzZTsKKyAgICBmZWF0dXJl
cy5zdGF0dXNCYXJWaXNpYmxlID0gZmFsc2U7CisgICAgZmVhdHVyZXMudG9vbEJhclZpc2libGUg
PSBmYWxzZTsKKyAgICBmZWF0dXJlcy5sb2NhdGlvbkJhclZpc2libGUgPSBmYWxzZTsKKyAgICBm
ZWF0dXJlcy5zY3JvbGxiYXJzVmlzaWJsZSA9IGZhbHNlOwogCi0gICAgLy8gVHJlYWQgbGlnaHRs
eSBpbiB0aGlzIGNvZGUgLS0gaXQgd2FzIHNwZWNpZmljYWxseSBkZXNpZ25lZCB0byBtaW1pYyBX
aW4gSUUncyBwYXJzaW5nIGJlaGF2aW9yLgotICAgIHVuc2lnbmVkIGtleUJlZ2luLCBrZXlFbmQ7
Ci0gICAgdW5zaWduZWQgdmFsdWVCZWdpbiwgdmFsdWVFbmQ7CisgICAgcHJvY2Vzc0ZlYXR1cmVz
U3RyaW5nKGZlYXR1cmVzU3RyaW5nLCBbJmZlYXR1cmVzXShTdHJpbmdWaWV3IGtleSwgU3RyaW5n
VmlldyB2YWx1ZSkgeworICAgICAgICBzZXRXaW5kb3dGZWF0dXJlKGZlYXR1cmVzLCBrZXksIHZh
bHVlKTsKKyAgICB9KTsKIAotICAgIFN0cmluZyBidWZmZXIgPSBmZWF0dXJlcy5sb3dlcigpOwot
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IGJ1ZmZlci5sZW5ndGgoKTsKKyAgICByZXR1cm4gZmVhdHVy
ZXM7Cit9CisKK3ZvaWQgcHJvY2Vzc0ZlYXR1cmVzU3RyaW5nKFN0cmluZ1ZpZXcgZmVhdHVyZXMs
IHN0ZDo6ZnVuY3Rpb248dm9pZChTdHJpbmdWaWV3IHR5cGUsIFN0cmluZ1ZpZXcgdmFsdWUpPiBj
YWxsYmFjaykKK3sKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBmZWF0dXJlcy5sZW5ndGgoKTsKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyApIHsKLSAgICAgICAgLy8gc2tpcCB0
byBmaXJzdCBub24tc2VwYXJhdG9yLCBidXQgZG9uJ3Qgc2tpcCBwYXN0IHRoZSBlbmQgb2YgdGhl
IHN0cmluZwotICAgICAgICB3aGlsZSAoaXNXaW5kb3dGZWF0dXJlc1NlcGFyYXRvcihidWZmZXJb
aV0pKSB7Ci0gICAgICAgICAgICBpZiAoaSA+PSBsZW5ndGgpCi0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICBpKys7Ci0gICAgICAgIH0KLSAgICAgICAga2V5QmVnaW4gPSBpOwor
ICAgICAgICAvLyBza2lwIHRvIGZpcnN0IG5vbi1zZXBhcmF0b3IKKyAgICAgICAgd2hpbGUgKGkg
PCBsZW5ndGggJiYgaXNTZXBhcmF0b3IoZmVhdHVyZXNbaV0pKQorICAgICAgICAgICAgKytpOwor
ICAgICAgICB1bnNpZ25lZCBrZXlCZWdpbiA9IGk7CiAKICAgICAgICAgLy8gc2tpcCB0byBmaXJz
dCBzZXBhcmF0b3IKLSAgICAgICAgd2hpbGUgKCFpc1dpbmRvd0ZlYXR1cmVzU2VwYXJhdG9yKGJ1
ZmZlcltpXSkpCisgICAgICAgIHdoaWxlIChpIDwgbGVuZ3RoICYmICFpc1NlcGFyYXRvcihmZWF0
dXJlc1tpXSkpCiAgICAgICAgICAgICBpKys7Ci0gICAgICAgIGtleUVuZCA9IGk7CisgICAgICAg
IHVuc2lnbmVkIGtleUVuZCA9IGk7CiAKLSAgICAgICAgLy8gc2tpcCB0byBmaXJzdCAnPScsIGJ1
dCBkb24ndCBza2lwIHBhc3QgYSAnLCcgb3IgdGhlIGVuZCBvZiB0aGUgc3RyaW5nCi0gICAgICAg
IHdoaWxlIChidWZmZXJbaV0gIT0gJz0nKSB7Ci0gICAgICAgICAgICBpZiAoYnVmZmVyW2ldID09
ICcsJyB8fCBpID49IGxlbmd0aCkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IGkrKzsKLSAgICAgICAgfQorICAgICAgICAvLyBza2lwIHRvIGZpcnN0ICc9JywgYnV0IGRvbid0
IHNraXAgcGFzdCBhICcsJworICAgICAgICB3aGlsZSAoaSA8IGxlbmd0aCAmJiBmZWF0dXJlc1tp
XSAhPSAnPScgJiYgZmVhdHVyZXNbaV0gIT0gJywnKQorICAgICAgICAgICAgKytpOwogCi0gICAg
ICAgIC8vIHNraXAgdG8gZmlyc3Qgbm9uLXNlcGFyYXRvciwgYnV0IGRvbid0IHNraXAgcGFzdCBh
ICcsJyBvciB0aGUgZW5kIG9mIHRoZSBzdHJpbmcKLSAgICAgICAgd2hpbGUgKGlzV2luZG93RmVh
dHVyZXNTZXBhcmF0b3IoYnVmZmVyW2ldKSkgewotICAgICAgICAgICAgaWYgKGJ1ZmZlcltpXSA9
PSAnLCcgfHwgaSA+PSBsZW5ndGgpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICBpKys7Ci0gICAgICAgIH0KLSAgICAgICAgdmFsdWVCZWdpbiA9IGk7CisgICAgICAgIC8vIHNr
aXAgdG8gZmlyc3Qgbm9uLXNlcGFyYXRvciwgYnV0IGRvbid0IHNraXAgcGFzdCBhICcsJworICAg
ICAgICB3aGlsZSAoaSA8IGxlbmd0aCAmJiBpc1NlcGFyYXRvcihmZWF0dXJlc1tpXSkgJiYgZmVh
dHVyZXNbaV0gIT0gJywnKQorICAgICAgICAgICAgKytpOworICAgICAgICB1bnNpZ25lZCB2YWx1
ZUJlZ2luID0gaTsKIAogICAgICAgICAvLyBza2lwIHRvIGZpcnN0IHNlcGFyYXRvcgotICAgICAg
ICB3aGlsZSAoIWlzV2luZG93RmVhdHVyZXNTZXBhcmF0b3IoYnVmZmVyW2ldKSkKLSAgICAgICAg
ICAgIGkrKzsKLSAgICAgICAgdmFsdWVFbmQgPSBpOwotCi0gICAgICAgIEFTU0VSVF9XSVRIX1NF
Q1VSSVRZX0lNUExJQ0FUSU9OKGkgPD0gbGVuZ3RoKTsKKyAgICAgICAgd2hpbGUgKGkgPCBsZW5n
dGggJiYgIWlzU2VwYXJhdG9yKGZlYXR1cmVzW2ldKSkKKyAgICAgICAgICAgICsraTsKKyAgICAg
ICAgdW5zaWduZWQgdmFsdWVFbmQgPSBpOwogCi0gICAgICAgIFN0cmluZyBrZXlTdHJpbmcoYnVm
ZmVyLnN1YnN0cmluZyhrZXlCZWdpbiwga2V5RW5kIC0ga2V5QmVnaW4pKTsKLSAgICAgICAgU3Ry
aW5nIHZhbHVlU3RyaW5nKGJ1ZmZlci5zdWJzdHJpbmcodmFsdWVCZWdpbiwgdmFsdWVFbmQgLSB2
YWx1ZUJlZ2luKSk7Ci0gICAgICAgIHNldFdpbmRvd0ZlYXR1cmUoa2V5U3RyaW5nLCB2YWx1ZVN0
cmluZyk7CisgICAgICAgIGNhbGxiYWNrKGZlYXR1cmVzLnN1YnN0cmluZyhrZXlCZWdpbiwga2V5
RW5kIC0ga2V5QmVnaW4pLCBmZWF0dXJlcy5zdWJzdHJpbmcodmFsdWVCZWdpbiwgdmFsdWVFbmQg
LSB2YWx1ZUJlZ2luKSk7CiAgICAgfQogfQogCi12b2lkIFdpbmRvd0ZlYXR1cmVzOjpzZXRXaW5k
b3dGZWF0dXJlKGNvbnN0IFN0cmluZyYga2V5U3RyaW5nLCBjb25zdCBTdHJpbmcmIHZhbHVlU3Ry
aW5nKQorc3RhdGljIHZvaWQgc2V0V2luZG93RmVhdHVyZShXaW5kb3dGZWF0dXJlcyYgZmVhdHVy
ZXMsIFN0cmluZ1ZpZXcga2V5LCBTdHJpbmdWaWV3IHZhbHVlKQogewotICAgIGludCB2YWx1ZTsK
LQogICAgIC8vIExpc3RpbmcgYSBrZXkgd2l0aCBubyB2YWx1ZSBpcyBzaG9ydGhhbmQgZm9yIGtl
eT15ZXMKLSAgICBpZiAodmFsdWVTdHJpbmcuaXNFbXB0eSgpIHx8IHZhbHVlU3RyaW5nID09ICJ5
ZXMiKQotICAgICAgICB2YWx1ZSA9IDE7CisgICAgaW50IG51bWVyaWNWYWx1ZTsKKyAgICBpZiAo
dmFsdWUuaXNFbXB0eSgpIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHZhbHVlLCAi
eWVzIikpCisgICAgICAgIG51bWVyaWNWYWx1ZSA9IDE7CiAgICAgZWxzZQotICAgICAgICB2YWx1
ZSA9IHZhbHVlU3RyaW5nLnRvSW50KCk7CisgICAgICAgIG51bWVyaWNWYWx1ZSA9IHZhbHVlLnRv
SW50KCk7CiAKLSAgICAvLyBXZSB0cmVhdCBrZXlTdHJpbmcgb2YgInJlc2l6YWJsZSIgaGVyZSBh
cyBhbiBhZGRpdGlvbmFsIGZlYXR1cmUgcmF0aGVyIHRoYW4gc2V0dGluZyByZXNpemVhYmxlIHRv
IHRydWUuCisgICAgLy8gV2UgdHJlYXQga2V5IG9mICJyZXNpemFibGUiIGhlcmUgYXMgYW4gYWRk
aXRpb25hbCBmZWF0dXJlIHJhdGhlciB0aGFuIHNldHRpbmcgcmVzaXplYWJsZSB0byB0cnVlLgog
ICAgIC8vIFRoaXMgaXMgY29uc2lzdGVudCB3aXRoIEZpcmVmb3gsIGJ1dCBjb3VsZCBhbHNvIGJl
IGhhbmRsZWQgYXQgYW5vdGhlciBsZXZlbC4KIAotICAgIGlmIChrZXlTdHJpbmcgPT0gImxlZnQi
IHx8IGtleVN0cmluZyA9PSAic2NyZWVueCIpCi0gICAgICAgIHggPSB2YWx1ZTsKLSAgICBlbHNl
IGlmIChrZXlTdHJpbmcgPT0gInRvcCIgfHwga2V5U3RyaW5nID09ICJzY3JlZW55IikKLSAgICAg
ICAgeSA9IHZhbHVlOwotICAgIGVsc2UgaWYgKGtleVN0cmluZyA9PSAid2lkdGgiIHx8IGtleVN0
cmluZyA9PSAiaW5uZXJ3aWR0aCIpCi0gICAgICAgIHdpZHRoID0gdmFsdWU7Ci0gICAgZWxzZSBp
ZiAoa2V5U3RyaW5nID09ICJoZWlnaHQiIHx8IGtleVN0cmluZyA9PSAiaW5uZXJoZWlnaHQiKQot
ICAgICAgICBoZWlnaHQgPSB2YWx1ZTsKLSAgICBlbHNlIGlmIChrZXlTdHJpbmcgPT0gIm1lbnVi
YXIiKQotICAgICAgICBtZW51QmFyVmlzaWJsZSA9IHZhbHVlOwotICAgIGVsc2UgaWYgKGtleVN0
cmluZyA9PSAidG9vbGJhciIpCi0gICAgICAgIHRvb2xCYXJWaXNpYmxlID0gdmFsdWU7Ci0gICAg
ZWxzZSBpZiAoa2V5U3RyaW5nID09ICJsb2NhdGlvbiIpCi0gICAgICAgIGxvY2F0aW9uQmFyVmlz
aWJsZSA9IHZhbHVlOwotICAgIGVsc2UgaWYgKGtleVN0cmluZyA9PSAic3RhdHVzIikKLSAgICAg
ICAgc3RhdHVzQmFyVmlzaWJsZSA9IHZhbHVlOwotICAgIGVsc2UgaWYgKGtleVN0cmluZyA9PSAi
ZnVsbHNjcmVlbiIpCi0gICAgICAgIGZ1bGxzY3JlZW4gPSB2YWx1ZTsKLSAgICBlbHNlIGlmIChr
ZXlTdHJpbmcgPT0gInNjcm9sbGJhcnMiKQotICAgICAgICBzY3JvbGxiYXJzVmlzaWJsZSA9IHZh
bHVlOwotICAgIGVsc2UgaWYgKHZhbHVlID09IDEpCi0gICAgICAgIGFkZGl0aW9uYWxGZWF0dXJl
cy5hcHBlbmQoa2V5U3RyaW5nKTsKKyAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2Uoa2V5LCAibGVmdCIpIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGtleSwgInNj
cmVlbngiKSkKKyAgICAgICAgZmVhdHVyZXMueCA9IG51bWVyaWNWYWx1ZTsKKyAgICBlbHNlIGlm
IChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShrZXksICJ0b3AiKSB8fCBlcXVhbExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZShrZXksICJzY3JlZW55IikpCisgICAgICAgIGZlYXR1cmVzLnkg
PSBudW1lcmljVmFsdWU7CisgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2Uoa2V5LCAid2lkdGgiKSB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShrZXksICJp
bm5lcndpZHRoIikpCisgICAgICAgIGZlYXR1cmVzLndpZHRoID0gbnVtZXJpY1ZhbHVlOworICAg
IGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGtleSwgImhlaWdodCIpIHx8
IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGtleSwgImlubmVyaGVpZ2h0IikpCisgICAg
ICAgIGZlYXR1cmVzLmhlaWdodCA9IG51bWVyaWNWYWx1ZTsKKyAgICBlbHNlIGlmIChlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShrZXksICJtZW51YmFyIikpCisgICAgICAgIGZlYXR1cmVz
Lm1lbnVCYXJWaXNpYmxlID0gbnVtZXJpY1ZhbHVlOworICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKGtleSwgInRvb2xiYXIiKSkKKyAgICAgICAgZmVhdHVyZXMudG9v
bEJhclZpc2libGUgPSBudW1lcmljVmFsdWU7CisgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2Uoa2V5LCAibG9jYXRpb24iKSkKKyAgICAgICAgZmVhdHVyZXMubG9jYXRp
b25CYXJWaXNpYmxlID0gbnVtZXJpY1ZhbHVlOworICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKGtleSwgInN0YXR1cyIpKQorICAgICAgICBmZWF0dXJlcy5zdGF0dXNC
YXJWaXNpYmxlID0gbnVtZXJpY1ZhbHVlOworICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKGtleSwgImZ1bGxzY3JlZW4iKSkKKyAgICAgICAgZmVhdHVyZXMuZnVsbHNj
cmVlbiA9IG51bWVyaWNWYWx1ZTsKKyAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZShrZXksICJzY3JvbGxiYXJzIikpCisgICAgICAgIGZlYXR1cmVzLnNjcm9sbGJhcnNW
aXNpYmxlID0gbnVtZXJpY1ZhbHVlOworICAgIGVsc2UgaWYgKG51bWVyaWNWYWx1ZSA9PSAxKQor
ICAgICAgICBmZWF0dXJlcy5hZGRpdGlvbmFsRmVhdHVyZXMuYXBwZW5kKGtleS50b1N0cmluZygp
KTsKIH0KIAotV2luZG93RmVhdHVyZXM6OldpbmRvd0ZlYXR1cmVzKGNvbnN0IFN0cmluZyYgZGlh
bG9nRmVhdHVyZXNTdHJpbmcsIGNvbnN0IEZsb2F0UmVjdCYgc2NyZWVuQXZhaWxhYmxlUmVjdCkK
LSAgICA6IG1lbnVCYXJWaXNpYmxlKGZhbHNlKQotICAgICwgdG9vbEJhclZpc2libGUoZmFsc2Up
Ci0gICAgLCBsb2NhdGlvbkJhclZpc2libGUoZmFsc2UpCi0gICAgLCBmdWxsc2NyZWVuKGZhbHNl
KQotICAgICwgZGlhbG9nKHRydWUpCitXaW5kb3dGZWF0dXJlcyBwYXJzZURpYWxvZ0ZlYXR1cmVz
KGNvbnN0IFN0cmluZyYgZGlhbG9nRmVhdHVyZXNTdHJpbmcsIGNvbnN0IEZsb2F0UmVjdCYgc2Ny
ZWVuQXZhaWxhYmxlUmVjdCkKIHsKLSAgICBhdXRvIGZlYXR1cmVzID0gcGFyc2VEaWFsb2dGZWF0
dXJlcyhkaWFsb2dGZWF0dXJlc1N0cmluZyk7Ci0KLSAgICBjb25zdCBib29sIHRydXN0ZWQgPSBm
YWxzZTsKKyAgICBhdXRvIGZlYXR1cmVzTWFwID0gcGFyc2VEaWFsb2dGZWF0dXJlc01hcChkaWFs
b2dGZWF0dXJlc1N0cmluZyk7CiAKICAgICAvLyBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGZyb20g
TWljcm9zb2Z0J3MgZG9jdW1lbnRhdGlvbiBhcmUgbm90IGltcGxlbWVudGVkOgogICAgIC8vIC0g
ZGVmYXVsdCBmb250IHNldHRpbmdzCkBAIC0xNjksNTIgKzE1MSw2MSBAQCBXaW5kb3dGZWF0dXJl
czo6V2luZG93RmVhdHVyZXMoY29uc3QgU3RyaW5nJiBkaWFsb2dGZWF0dXJlc1N0cmluZywgY29u
c3QgRmxvYXRSZQogICAgIC8vIC0gaGVscDogYm9vbEZlYXR1cmUoZmVhdHVyZXMsICJoZWxwIiwg
dHJ1ZSksIG1ha2VzIGhlbHAgaWNvbiBhcHBlYXIgaW4gZGlhbG9nICh3aGF0IGRvZXMgaXQgZG8g
b24gV2luZG93cz8pCiAgICAgLy8gLSB1bmFkb3JuZWQ6IHRydXN0ZWQgJiYgYm9vbEZlYXR1cmUo
ZmVhdHVyZXMsICJ1bmFkb3JuZWQiKTsKIAotICAgIHdpZHRoID0gZmxvYXRGZWF0dXJlKGZlYXR1
cmVzLCAiZGlhbG9nd2lkdGgiLCAxMDAsIHNjcmVlbkF2YWlsYWJsZVJlY3Qud2lkdGgoKSwgNjIw
KTsgLy8gZGVmYXVsdCBoZXJlIGNhbWUgZnJvbSBmcmFtZSBzaXplIG9mIGRpYWxvZyBpbiBNYWNJ
RQotICAgIGhlaWdodCA9IGZsb2F0RmVhdHVyZShmZWF0dXJlcywgImRpYWxvZ2hlaWdodCIsIDEw
MCwgc2NyZWVuQXZhaWxhYmxlUmVjdC5oZWlnaHQoKSwgNDUwKTsgLy8gZGVmYXVsdCBoZXJlIGNh
bWUgZnJvbSBmcmFtZSBzaXplIG9mIGRpYWxvZyBpbiBNYWNJRQorICAgIFdpbmRvd0ZlYXR1cmVz
IGZlYXR1cmVzOworCisgICAgZmVhdHVyZXMubWVudUJhclZpc2libGUgPSBmYWxzZTsKKyAgICBm
ZWF0dXJlcy50b29sQmFyVmlzaWJsZSA9IGZhbHNlOworICAgIGZlYXR1cmVzLmxvY2F0aW9uQmFy
VmlzaWJsZSA9IGZhbHNlOworICAgIGZlYXR1cmVzLmRpYWxvZyA9IHRydWU7CiAKLSAgICBhdXRv
IGRpYWxvZ0xlZnQgPSBmbG9hdEZlYXR1cmUoZmVhdHVyZXMsICJkaWFsb2dsZWZ0Iiwgc2NyZWVu
QXZhaWxhYmxlUmVjdC54KCksIHNjcmVlbkF2YWlsYWJsZVJlY3QubWF4WCgpIC0gKndpZHRoLCAt
MSk7Ci0gICAgaWYgKGRpYWxvZ0xlZnQgPiAwKQotICAgICAgICB4ID0gZGlhbG9nTGVmdDsKKyAg
ICBmbG9hdCB3aWR0aCA9IGZsb2F0RmVhdHVyZShmZWF0dXJlc01hcCwgImRpYWxvZ3dpZHRoIiwg
MTAwLCBzY3JlZW5BdmFpbGFibGVSZWN0LndpZHRoKCkpLnZhbHVlT3IoNjIwKTsgLy8gZGVmYXVs
dCBoZXJlIGNhbWUgZnJvbSBmcmFtZSBzaXplIG9mIGRpYWxvZyBpbiBNYWNJRQorICAgIGZsb2F0
IGhlaWdodCA9IGZsb2F0RmVhdHVyZShmZWF0dXJlc01hcCwgImRpYWxvZ2hlaWdodCIsIDEwMCwg
c2NyZWVuQXZhaWxhYmxlUmVjdC5oZWlnaHQoKSkudmFsdWVPcig0NTApOyAvLyBkZWZhdWx0IGhl
cmUgY2FtZSBmcm9tIGZyYW1lIHNpemUgb2YgZGlhbG9nIGluIE1hY0lFCiAKLSAgICBhdXRvIGRp
YWxvZ1RvcCA9IGZsb2F0RmVhdHVyZShmZWF0dXJlcywgImRpYWxvZ3RvcCIsIHNjcmVlbkF2YWls
YWJsZVJlY3QueSgpLCBzY3JlZW5BdmFpbGFibGVSZWN0Lm1heFkoKSAtICpoZWlnaHQsIC0xKTsK
LSAgICBpZiAoZGlhbG9nVG9wID4gMCkKLSAgICAgICAgeSA9IGRpYWxvZ1RvcDsKKyAgICBmZWF0
dXJlcy53aWR0aCA9IHdpZHRoOworICAgIGZlYXR1cmVzLmhlaWdodCA9IGhlaWdodDsKIAotICAg
IGlmIChib29sRmVhdHVyZShmZWF0dXJlcywgImNlbnRlciIsIHRydWUpKSB7Ci0gICAgICAgIGlm
ICgheCkKLSAgICAgICAgICAgIHggPSBzY3JlZW5BdmFpbGFibGVSZWN0LngoKSArIChzY3JlZW5B
dmFpbGFibGVSZWN0LndpZHRoKCkgLSAqd2lkdGgpIC8gMjsKKyAgICBmZWF0dXJlcy54ID0gZmxv
YXRGZWF0dXJlKGZlYXR1cmVzTWFwLCAiZGlhbG9nbGVmdCIsIHNjcmVlbkF2YWlsYWJsZVJlY3Qu
eCgpLCBzY3JlZW5BdmFpbGFibGVSZWN0Lm1heFgoKSAtIHdpZHRoKTsKKyAgICBmZWF0dXJlcy55
ID0gZmxvYXRGZWF0dXJlKGZlYXR1cmVzTWFwLCAiZGlhbG9ndG9wIiwgc2NyZWVuQXZhaWxhYmxl
UmVjdC55KCksIHNjcmVlbkF2YWlsYWJsZVJlY3QubWF4WSgpIC0gaGVpZ2h0KTsKIAotICAgICAg
ICBpZiAoIXkpCi0gICAgICAgICAgICB5ID0gc2NyZWVuQXZhaWxhYmxlUmVjdC55KCkgKyAoc2Ny
ZWVuQXZhaWxhYmxlUmVjdC5oZWlnaHQoKSAtICpoZWlnaHQpIC8gMjsKKyAgICBpZiAoYm9vbEZl
YXR1cmUoZmVhdHVyZXNNYXAsICJjZW50ZXIiKS52YWx1ZU9yKHRydWUpKSB7CisgICAgICAgIGlm
ICghZmVhdHVyZXMueCkKKyAgICAgICAgICAgIGZlYXR1cmVzLnggPSBzY3JlZW5BdmFpbGFibGVS
ZWN0LngoKSArIChzY3JlZW5BdmFpbGFibGVSZWN0LndpZHRoKCkgLSB3aWR0aCkgLyAyOworICAg
ICAgICBpZiAoIWZlYXR1cmVzLnkpCisgICAgICAgICAgICBmZWF0dXJlcy55ID0gc2NyZWVuQXZh
aWxhYmxlUmVjdC55KCkgKyAoc2NyZWVuQXZhaWxhYmxlUmVjdC5oZWlnaHQoKSAtIGhlaWdodCkg
LyAyOwogICAgIH0KIAotICAgIHJlc2l6YWJsZSA9IGJvb2xGZWF0dXJlKGZlYXR1cmVzLCAicmVz
aXphYmxlIik7Ci0gICAgc2Nyb2xsYmFyc1Zpc2libGUgPSBib29sRmVhdHVyZShmZWF0dXJlcywg
InNjcm9sbCIsIHRydWUpOwotICAgIHN0YXR1c0JhclZpc2libGUgPSBib29sRmVhdHVyZShmZWF0
dXJlcywgInN0YXR1cyIsICF0cnVzdGVkKTsKKyAgICBmZWF0dXJlcy5yZXNpemFibGUgPSBib29s
RmVhdHVyZShmZWF0dXJlc01hcCwgInJlc2l6YWJsZSIpLnZhbHVlT3IoZmFsc2UpOworICAgIGZl
YXR1cmVzLnNjcm9sbGJhcnNWaXNpYmxlID0gYm9vbEZlYXR1cmUoZmVhdHVyZXNNYXAsICJzY3Jv
bGwiKS52YWx1ZU9yKHRydWUpOworICAgIGZlYXR1cmVzLnN0YXR1c0JhclZpc2libGUgPSBib29s
RmVhdHVyZShmZWF0dXJlc01hcCwgInN0YXR1cyIpLnZhbHVlT3IoZmFsc2UpOworCisgICAgcmV0
dXJuIGZlYXR1cmVzOwogfQogCi1ib29sIFdpbmRvd0ZlYXR1cmVzOjpib29sRmVhdHVyZShjb25z
dCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgZmVhdHVyZXMsIGNvbnN0IGNoYXIqIGtleSwgYm9v
bCBkZWZhdWx0VmFsdWUpCitzdGF0aWMgT3B0aW9uYWw8Ym9vbD4gYm9vbEZlYXR1cmUoY29uc3Qg
RGlhbG9nRmVhdHVyZXNNYXAmIGZlYXR1cmVzLCBjb25zdCBjaGFyKiBrZXkpCiB7CiAgICAgYXV0
byBpdCA9IGZlYXR1cmVzLmZpbmQoa2V5KTsKICAgICBpZiAoaXQgPT0gZmVhdHVyZXMuZW5kKCkp
Ci0gICAgICAgIHJldHVybiBkZWZhdWx0VmFsdWU7CisgICAgICAgIHJldHVybiBOdWxsb3B0Owog
Ci0gICAgY29uc3QgU3RyaW5nJiB2YWx1ZSA9IGl0LT52YWx1ZTsKLSAgICByZXR1cm4gdmFsdWUu
aXNOdWxsKCkgfHwgdmFsdWUgPT0gIjEiIHx8IHZhbHVlID09ICJ5ZXMiIHx8IHZhbHVlID09ICJv
biI7CisgICAgYXV0byYgdmFsdWUgPSBpdC0+dmFsdWU7CisgICAgcmV0dXJuIHZhbHVlLmlzTnVs
bCgpCisgICAgICAgIHx8IHZhbHVlID09ICIxIgorICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZSh2YWx1ZSwgInllcyIpCisgICAgICAgIHx8IGVxdWFsTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKHZhbHVlLCAib24iKTsKIH0KIAotZmxvYXQgV2luZG93RmVhdHVyZXM6OmZs
b2F0RmVhdHVyZShjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgZmVhdHVyZXMsIGNvbnN0
IGNoYXIqIGtleSwgZmxvYXQgbWluLCBmbG9hdCBtYXgsIGZsb2F0IGRlZmF1bHRWYWx1ZSkKK3N0
YXRpYyBPcHRpb25hbDxmbG9hdD4gZmxvYXRGZWF0dXJlKGNvbnN0IERpYWxvZ0ZlYXR1cmVzTWFw
JiBmZWF0dXJlcywgY29uc3QgY2hhcioga2V5LCBmbG9hdCBtaW4sIGZsb2F0IG1heCkKIHsKICAg
ICBhdXRvIGl0ID0gZmVhdHVyZXMuZmluZChrZXkpOwogICAgIGlmIChpdCA9PSBmZWF0dXJlcy5l
bmQoKSkKLSAgICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTsKKyAgICAgICAgcmV0dXJuIE51bGxv
cHQ7CiAKICAgICAvLyBGSVhNRTogVGhlIHRvRG91YmxlIGZ1bmN0aW9uIGRvZXMgbm90IG9mZmVy
IGEgd2F5IHRvIHRlbGwgIjBxIiBmcm9tIHN0cmluZyB3aXRoIG5vIGRpZ2l0cyBpbiBpdDogQm90
aAogICAgIC8vIHJldHVybiB0aGUgbnVtYmVyIDAgYW5kIGZhbHNlIGZvciBvay4gQnV0ICIwcSIg
c2hvdWxkIHlpZWxkIHRoZSBtaW5pbXVtIHJhdGhlciB0aGFuIHRoZSBkZWZhdWx0LgogICAgIGJv
b2wgb2s7CiAgICAgZG91YmxlIHBhcnNlZE51bWJlciA9IGl0LT52YWx1ZS50b0RvdWJsZSgmb2sp
OwogICAgIGlmICgoIXBhcnNlZE51bWJlciAmJiAhb2spIHx8IHN0ZDo6aXNuYW4ocGFyc2VkTnVt
YmVyKSkKLSAgICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTsKKyAgICAgICAgcmV0dXJuIE51bGxv
cHQ7CiAgICAgaWYgKHBhcnNlZE51bWJlciA8IG1pbiB8fCBtYXggPD0gbWluKQogICAgICAgICBy
ZXR1cm4gbWluOwogICAgIGlmIChwYXJzZWROdW1iZXIgPiBtYXgpCkBAIC0yMjQsOSArMjE1LDEy
IEBAIGZsb2F0IFdpbmRvd0ZlYXR1cmVzOjpmbG9hdEZlYXR1cmUoY29uc3QgSGFzaE1hcDxTdHJp
bmcsIFN0cmluZz4mIGZlYXR1cmVzLCBjb25zCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4o
cGFyc2VkTnVtYmVyKTsKIH0KIAotSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gV2luZG93RmVhdHVy
ZXM6OnBhcnNlRGlhbG9nRmVhdHVyZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcpCitzdGF0aWMgRGlh
bG9nRmVhdHVyZXNNYXAgcGFyc2VEaWFsb2dGZWF0dXJlc01hcChjb25zdCBTdHJpbmcmIHN0cmlu
ZykKIHsKLSAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBmZWF0dXJlczsKKyAgICAvLyBGSVhN
RTogTm90IGNsZWFyIHdoeSB3ZSB0YWtlIHN1Y2ggYSBkaWZmZXJlbnQgYXBwcm9hY2ggdG8gcGFy
c2luZyBkaWFsb2cgZmVhdHVyZXMKKyAgICAvLyBhcyBvcHBvc2VkIHRvIHdpbmRvdyBmZWF0dXJl
cyAodXNpbmcgYSBtYXAsIGRpZmZlcmVudCBwYXJzaW5nIHF1aXJrcykuCisKKyAgICBEaWFsb2dG
ZWF0dXJlc01hcCBmZWF0dXJlczsKIAogICAgIFZlY3RvcjxTdHJpbmc+IHZlY3RvcjsKICAgICBz
dHJpbmcuc3BsaXQoJzsnLCB2ZWN0b3IpOwpAQCAtMjM5LDEyICsyMzMsMTIgQEAgSGFzaE1hcDxT
dHJpbmcsIFN0cmluZz4gV2luZG93RmVhdHVyZXM6OnBhcnNlRGlhbG9nRmVhdHVyZXMoY29uc3Qg
U3RyaW5nJiBzdHJpbmcKICAgICAgICAgaWYgKHNlcGFyYXRvclBvc2l0aW9uID09IG5vdEZvdW5k
KQogICAgICAgICAgICAgc2VwYXJhdG9yUG9zaXRpb24gPSBjb2xvblBvc2l0aW9uOwogCi0gICAg
ICAgIFN0cmluZyBrZXkgPSBmZWF0dXJlU3RyaW5nLmxlZnQoc2VwYXJhdG9yUG9zaXRpb24pLnN0
cmlwV2hpdGVTcGFjZSgpLmxvd2VyKCk7CisgICAgICAgIFN0cmluZyBrZXkgPSBmZWF0dXJlU3Ry
aW5nLmxlZnQoc2VwYXJhdG9yUG9zaXRpb24pLnN0cmlwV2hpdGVTcGFjZSgpOwogCiAgICAgICAg
IC8vIE51bGwgc3RyaW5nIGZvciB2YWx1ZSBpbmRpY2F0ZXMga2V5IHdpdGhvdXQgdmFsdWUuCiAg
ICAgICAgIFN0cmluZyB2YWx1ZTsKICAgICAgICAgaWYgKHNlcGFyYXRvclBvc2l0aW9uICE9IG5v
dEZvdW5kKSB7Ci0gICAgICAgICAgICB2YWx1ZSA9IGZlYXR1cmVTdHJpbmcuc3Vic3RyaW5nKHNl
cGFyYXRvclBvc2l0aW9uICsgMSkuc3RyaXBXaGl0ZVNwYWNlKCkubG93ZXIoKTsKKyAgICAgICAg
ICAgIHZhbHVlID0gZmVhdHVyZVN0cmluZy5zdWJzdHJpbmcoc2VwYXJhdG9yUG9zaXRpb24gKyAx
KS5zdHJpcFdoaXRlU3BhY2UoKTsKICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUubGVmdCh2YWx1
ZS5maW5kKCcgJykpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvV2luZG93RmVhdHVyZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93RmVhdHVyZXMu
aAppbmRleCA4N2Y2YThiOTcwM2IyNzk4MDk3Y2MwMWFjZWRjMjQwNDk1Y2YxZTE3Li4wY2I2ZDlm
ZjkwZmZlYTFlNWFiNDg5YTMzYzc1MDY5MGQ2MGE0OGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1dpbmRvd0ZlYXR1cmVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9XaW5k
b3dGZWF0dXJlcy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwMywg
MjAwNywgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDMsIDIwMDcsIDIwMTAsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSw1NSArMjksMzkgQEAKICNp
Zm5kZWYgV2luZG93RmVhdHVyZXNfaAogI2RlZmluZSBXaW5kb3dGZWF0dXJlc19oCiAKLSNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8
ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZsb2F0UmVj
dDsKIAogc3RydWN0IFdpbmRvd0ZlYXR1cmVzIHsKLSAgICBXaW5kb3dGZWF0dXJlcygpCi0gICAg
ICAgIDogbWVudUJhclZpc2libGUodHJ1ZSkKLSAgICAgICAgLCBzdGF0dXNCYXJWaXNpYmxlKHRy
dWUpCi0gICAgICAgICwgdG9vbEJhclZpc2libGUodHJ1ZSkKLSAgICAgICAgLCBsb2NhdGlvbkJh
clZpc2libGUodHJ1ZSkKLSAgICAgICAgLCBzY3JvbGxiYXJzVmlzaWJsZSh0cnVlKQotICAgICAg
ICAsIHJlc2l6YWJsZSh0cnVlKQotICAgICAgICAsIGZ1bGxzY3JlZW4oZmFsc2UpCi0gICAgICAg
ICwgZGlhbG9nKGZhbHNlKQotICAgIHsKLSAgICB9Ci0gICAgZXhwbGljaXQgV2luZG93RmVhdHVy
ZXMoY29uc3QgU3RyaW5nJiB3aW5kb3dGZWF0dXJlc1N0cmluZyk7Ci0gICAgV2luZG93RmVhdHVy
ZXMoY29uc3QgU3RyaW5nJiBkaWFsb2dGZWF0dXJlc1N0cmluZywgY29uc3QgRmxvYXRSZWN0JiBz
Y3JlZW5BdmFpbGFibGVSZWN0KTsKLQogICAgIE9wdGlvbmFsPGZsb2F0PiB4OwogICAgIE9wdGlv
bmFsPGZsb2F0PiB5OwogICAgIE9wdGlvbmFsPGZsb2F0PiB3aWR0aDsKICAgICBPcHRpb25hbDxm
bG9hdD4gaGVpZ2h0OwogCi0gICAgYm9vbCBtZW51QmFyVmlzaWJsZTsKLSAgICBib29sIHN0YXR1
c0JhclZpc2libGU7Ci0gICAgYm9vbCB0b29sQmFyVmlzaWJsZTsKLSAgICBib29sIGxvY2F0aW9u
QmFyVmlzaWJsZTsKLSAgICBib29sIHNjcm9sbGJhcnNWaXNpYmxlOwotICAgIGJvb2wgcmVzaXph
YmxlOworICAgIGJvb2wgbWVudUJhclZpc2libGUgeyB0cnVlIH07CisgICAgYm9vbCBzdGF0dXNC
YXJWaXNpYmxlIHsgdHJ1ZSB9OworICAgIGJvb2wgdG9vbEJhclZpc2libGUgeyB0cnVlIH07Cisg
ICAgYm9vbCBsb2NhdGlvbkJhclZpc2libGUgeyB0cnVlIH07CisgICAgYm9vbCBzY3JvbGxiYXJz
VmlzaWJsZSB7IHRydWUgfTsKKyAgICBib29sIHJlc2l6YWJsZSB7IHRydWUgfTsKIAotICAgIGJv
b2wgZnVsbHNjcmVlbjsKLSAgICBib29sIGRpYWxvZzsKKyAgICBib29sIGZ1bGxzY3JlZW4geyBm
YWxzZSB9OworICAgIGJvb2wgZGlhbG9nIHsgZmFsc2UgfTsKIAogICAgIFZlY3RvcjxTdHJpbmc+
IGFkZGl0aW9uYWxGZWF0dXJlczsKLQotcHJpdmF0ZToKLSAgICBzdGF0aWMgSGFzaE1hcDxTdHJp
bmcsIFN0cmluZz4gcGFyc2VEaWFsb2dGZWF0dXJlcyhjb25zdCBTdHJpbmcmKTsKLSAgICBzdGF0
aWMgYm9vbCBib29sRmVhdHVyZShjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYsIGNvbnN0
IGNoYXIqIGtleSwgYm9vbCBkZWZhdWx0VmFsdWUgPSBmYWxzZSk7Ci0gICAgc3RhdGljIGZsb2F0
IGZsb2F0RmVhdHVyZShjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYsIGNvbnN0IGNoYXIq
IGtleSwgZmxvYXQgbWluLCBmbG9hdCBtYXgsIGZsb2F0IGRlZmF1bHRWYWx1ZSk7Ci0gICAgdm9p
ZCBzZXRXaW5kb3dGZWF0dXJlKGNvbnN0IFN0cmluZyYga2V5U3RyaW5nLCBjb25zdCBTdHJpbmcm
IHZhbHVlU3RyaW5nKTsKIH07CiAKK1dpbmRvd0ZlYXR1cmVzIHBhcnNlV2luZG93RmVhdHVyZXMo
U3RyaW5nVmlldyB3aW5kb3dGZWF0dXJlc1N0cmluZyk7CitXaW5kb3dGZWF0dXJlcyBwYXJzZURp
YWxvZ0ZlYXR1cmVzKGNvbnN0IFN0cmluZyYgZGlhbG9nRmVhdHVyZXNTdHJpbmcsIGNvbnN0IEZs
b2F0UmVjdCYgc2NyZWVuQXZhaWxhYmxlUmVjdCk7CisKK3ZvaWQgcHJvY2Vzc0ZlYXR1cmVzU3Ry
aW5nKFN0cmluZ1ZpZXcgZmVhdHVyZXMsIHN0ZDo6ZnVuY3Rpb248dm9pZChTdHJpbmdWaWV3IHR5
cGUsIFN0cmluZ1ZpZXcgdmFsdWUpPiBjYWxsYmFjayk7CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI2VuZGlmIC8vIFdpbmRvd0ZlYXR1cmVzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NjaGVtZVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NjaGVtZVJlZ2lzdHJ5LmNwcAppbmRleCBlZjM0NzNiYzM4ZmMxYzJiZmM4MWFkMzA4YWU5Y2Nh
ZGI0MDUzMmViLi5lNWY3M2IyZmEwZTFmNjk5YzE0ZWYwY2IyYzZiNjg5OWFiNzI4MzExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY2hlbWVSZWdpc3RyeS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NoZW1lUmVnaXN0cnkuY3BwCkBAIC0xMjYsMTAgKzEy
NiwxMCBAQCB2b2lkIFNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFzTG9jYWwoY29u
c3QgU3RyaW5nJiBzY2hlbWUpCiAKIHZvaWQgU2NoZW1lUmVnaXN0cnk6OnJlbW92ZVVSTFNjaGVt
ZVJlZ2lzdGVyZWRBc0xvY2FsKGNvbnN0IFN0cmluZyYgc2NoZW1lKQogewotICAgIGlmIChzY2hl
bWUgPT0gImZpbGUiKQorICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzY2hl
bWUsICJmaWxlIikpCiAgICAgICAgIHJldHVybjsKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBp
ZiAoc2NoZW1lID09ICJhcHBsZXdlYmRhdGEiKQorICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZShzY2hlbWUsICJhcHBsZXdlYmRhdGEiKSkKICAgICAgICAgcmV0dXJuOwogI2Vu
ZGlmCiAgICAgbG9jYWxVUkxTY2hlbWVzKCkucmVtb3ZlKHNjaGVtZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvTUlNRVR5cGVSZWdpc3RyeUVmbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvTUlNRVR5cGVSZWdpc3RyeUVmbC5jcHAKaW5kZXggMzM2
NDJiMDQxNTY2NjNlNDVlN2Q3ZjBlZjUxODE4ZjgyY2MwNjQ5Ni4uN2M4ZWU5NTgwYzkyYTc5MGE2
YWRkODk0ZjE4MzM4MzU2MWI2NWEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZWZsL01JTUVUeXBlUmVnaXN0cnlFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VmbC9NSU1FVHlwZVJlZ2lzdHJ5RWZsLmNwcApAQCAtMzEsMTAgKzMxLDYgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAKLSNpbmNsdWRl
ICJOb3RJbXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5jbHVk
ZSA8d3RmL01haW5UaHJlYWQuaD4KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgRXh0
ZW5zaW9uTWFwIHsKQEAgLTc0LDIxICs3MCwxNCBAQCBzdGF0aWMgY29uc3QgRXh0ZW5zaW9uTWFw
IGV4dGVuc2lvbk1hcFtdID0gewogICAgIHsgInhodG1sIiwgImFwcGxpY2F0aW9uL3hodG1sK3ht
bCIgfSwKICAgICB7ICJ3bWwiLCAidGV4dC92bmQud2FwLndtbCIgfSwKICAgICB7ICJ3bWxjIiwg
ImFwcGxpY2F0aW9uL3ZuZC53YXAud21sYyIgfSwKLSAgICB7IDAsIDAgfQogfTsKIAotU3RyaW5n
IE1JTUVUeXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyAm
ZXh0KQorU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yRXh0ZW5zaW9uKGNv
bnN0IFN0cmluZyYgZXh0ZW5zaW9uKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0K
LSAgICBTdHJpbmcgcyA9IGV4dC5sb3dlcigpOwotICAgIGNvbnN0IEV4dGVuc2lvbk1hcCAqZSA9
IGV4dGVuc2lvbk1hcDsKLSAgICB3aGlsZSAoZS0+ZXh0ZW5zaW9uKSB7Ci0gICAgICAgIGlmIChz
ID09IGUtPmV4dGVuc2lvbikKLSAgICAgICAgICAgIHJldHVybiBlLT5taW1lVHlwZTsKLSAgICAg
ICAgKytlOworICAgIGZvciAoYXV0byYgZW50cnkgOiBleHRlbnNpb25NYXApIHsKKyAgICAgICAg
aWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoZXh0ZW5zaW9uLCBlbnRyeS5leHRlbnNpb24pKQor
ICAgICAgICAgICAgcmV0dXJuIGVudHJ5Lm1pbWVUeXBlOwogICAgIH0KLQogICAgIHJldHVybiBT
dHJpbmcoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuY3BwCmluZGV4IGFiODJlNDhkMTg3MzU2OWQxNzQ5OWQ1ODQzYWU1YmZjNzg4NTdk
ZGIuLjhkZGZiMmJjMjkwZDkzNTNhOWI2YTA2NDlmYzEwYWViOGI1MjE0NDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTMyNCwx
MCArMzI0LDEwIEBAIGJvb2wgTWVkaWFQbGF5ZXI6OmxvYWQoY29uc3QgVVJMJiB1cmwsIGNvbnN0
IENvbnRlbnRUeXBlJiBjb250ZW50VHlwZSwgY29uc3QgU3RyCiB7CiAgICAgQVNTRVJUKCFtX3Jl
bG9hZFRpbWVyLmlzQWN0aXZlKCkpOwogCi0gICAgbV9jb250ZW50TUlNRVR5cGUgPSBjb250ZW50
VHlwZS50eXBlKCkubG93ZXIoKTsKKyAgICBtX2NvbnRlbnRNSU1FVHlwZSA9IGNvbnRlbnRUeXBl
LnR5cGUoKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwogICAgIG1fY29udGVudFR5cGVDb2Rl
Y3MgPSBjb250ZW50VHlwZS5wYXJhbWV0ZXIoY29kZWNzKCkpOwogICAgIG1fdXJsID0gdXJsOwot
ICAgIG1fa2V5U3lzdGVtID0ga2V5U3lzdGVtLmxvd2VyKCk7CisgICAgbV9rZXlTeXN0ZW0gPSBr
ZXlTeXN0ZW0uY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKICAgICBtX2NvbnRlbnRNSU1FVHlw
ZVdhc0luZmVycmVkRnJvbUV4dGVuc2lvbiA9IGZhbHNlOwogCiAjaWYgRU5BQkxFKE1FRElBX1NP
VVJDRSkKQEAgLTM2Niw3ICszNjYsNyBAQCBib29sIE1lZGlhUGxheWVyOjpsb2FkKGNvbnN0IFVS
TCYgdXJsLCBjb25zdCBDb250ZW50VHlwZSYgY29udGVudFR5cGUsIE1lZGlhU291cgogICAgIEFT
U0VSVChtZWRpYVNvdXJjZSk7CiAKICAgICBtX21lZGlhU291cmNlID0gbWVkaWFTb3VyY2U7Ci0g
ICAgbV9jb250ZW50TUlNRVR5cGUgPSBjb250ZW50VHlwZS50eXBlKCkubG93ZXIoKTsKKyAgICBt
X2NvbnRlbnRNSU1FVHlwZSA9IGNvbnRlbnRUeXBlLnR5cGUoKS5jb252ZXJ0VG9BU0NJSUxvd2Vy
Y2FzZSgpOwogICAgIG1fY29udGVudFR5cGVDb2RlY3MgPSBjb250ZW50VHlwZS5wYXJhbWV0ZXIo
Y29kZWNzKCkpOwogICAgIG1fdXJsID0gdXJsOwogICAgIG1fa2V5U3lzdGVtID0gIiI7CkBAIC01
MTcsMTcgKzUxNywxNyBAQCB2b2lkIE1lZGlhUGxheWVyOjpzZXRTaG91bGRCdWZmZXJEYXRhKGJv
b2wgc2hvdWxkQnVmZmVyKQogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiBNZWRpYVBsYXll
cjo6TWVkaWFLZXlFeGNlcHRpb24gTWVkaWFQbGF5ZXI6OmdlbmVyYXRlS2V5UmVxdWVzdChjb25z
dCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgdW5zaWduZWQgY2hhciogaW5pdERhdGEsIHVuc2ln
bmVkIGluaXREYXRhTGVuZ3RoKQogewotICAgIHJldHVybiBtX3ByaXZhdGUtPmdlbmVyYXRlS2V5
UmVxdWVzdChrZXlTeXN0ZW0ubG93ZXIoKSwgaW5pdERhdGEsIGluaXREYXRhTGVuZ3RoKTsKKyAg
ICByZXR1cm4gbV9wcml2YXRlLT5nZW5lcmF0ZUtleVJlcXVlc3Qoa2V5U3lzdGVtLmNvbnZlcnRU
b0FTQ0lJTG93ZXJjYXNlKCksIGluaXREYXRhLCBpbml0RGF0YUxlbmd0aCk7CiB9CiAKIE1lZGlh
UGxheWVyOjpNZWRpYUtleUV4Y2VwdGlvbiBNZWRpYVBsYXllcjo6YWRkS2V5KGNvbnN0IFN0cmlu
ZyYga2V5U3lzdGVtLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBrZXksIHVuc2lnbmVkIGtleUxlbmd0
aCwgY29uc3QgdW5zaWduZWQgY2hhciogaW5pdERhdGEsIHVuc2lnbmVkIGluaXREYXRhTGVuZ3Ro
LCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCkKIHsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5hZGRL
ZXkoa2V5U3lzdGVtLmxvd2VyKCksIGtleSwga2V5TGVuZ3RoLCBpbml0RGF0YSwgaW5pdERhdGFM
ZW5ndGgsIHNlc3Npb25JZCk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+YWRkS2V5KGtleVN5c3Rl
bS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpLCBrZXksIGtleUxlbmd0aCwgaW5pdERhdGEsIGlu
aXREYXRhTGVuZ3RoLCBzZXNzaW9uSWQpOwogfQogCiBNZWRpYVBsYXllcjo6TWVkaWFLZXlFeGNl
cHRpb24gTWVkaWFQbGF5ZXI6OmNhbmNlbEtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBrZXlTeXN0
ZW0sIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKQogewotICAgIHJldHVybiBtX3ByaXZhdGUtPmNh
bmNlbEtleVJlcXVlc3Qoa2V5U3lzdGVtLmxvd2VyKCksIHNlc3Npb25JZCk7CisgICAgcmV0dXJu
IG1fcHJpdmF0ZS0+Y2FuY2VsS2V5UmVxdWVzdChrZXlTeXN0ZW0uY29udmVydFRvQVNDSUlMb3dl
cmNhc2UoKSwgc2Vzc2lvbklkKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMQ29tbW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RP
cGVuR0xDb21tb24uY3BwCmluZGV4IDRjMmNkOThmMTEwNGE2NDllMjQ5YzYwZjkyYjQ0MzQ5MGFk
ZGY3NWYuLmRiYTg1NzFlYzZlMzQxMDhhNzM4NGM1ZmIwYmM3NTBhYTY5YjAyYzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RP
cGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9FeHRlbnNpb25zM0RPcGVuR0xDb21tb24uY3BwCkBAIC02NSw3ICs2NSw3IEBAIEV4dGVu
c2lvbnMzRE9wZW5HTENvbW1vbjo6RXh0ZW5zaW9uczNET3BlbkdMQ29tbW9uKEdyYXBoaWNzQ29u
dGV4dDNEKiBjb250ZXh0KQogICAgIG1fcmVuZGVyZXIgPSBTdHJpbmcocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBjaGFyKj4oOjpnbEdldFN0cmluZyhHTF9SRU5ERVJFUikpKTsKIAogICAgIFZlY3Rv
cjxTdHJpbmc+IHZlbmRvckNvbXBvbmVudHM7Ci0gICAgbV92ZW5kb3IubG93ZXIoKS5zcGxpdCgn
ICcsIHZlbmRvckNvbXBvbmVudHMpOworICAgIG1fdmVuZG9yLmNvbnZlcnRUb0FTQ0lJTG93ZXJj
YXNlKCkuc3BsaXQoJyAnLCB2ZW5kb3JDb21wb25lbnRzKTsKICAgICBpZiAodmVuZG9yQ29tcG9u
ZW50cy5jb250YWlucygibnZpZGlhIikpCiAgICAgICAgIG1faXNOVklESUEgPSB0cnVlOwogICAg
IGlmICh2ZW5kb3JDb21wb25lbnRzLmNvbnRhaW5zKCJhdGkiKSB8fCB2ZW5kb3JDb21wb25lbnRz
LmNvbnRhaW5zKCJhbWQiKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9NSU1FVHlwZVJlZ2lzdHJ5R3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9N
SU1FVHlwZVJlZ2lzdHJ5R3RrLmNwcAppbmRleCAwZDljMTg4ZDIxNDkyYzAxNGI5NWVkZjYzOTI2
MDkwMWUxZDRlM2FiLi45YTQxZGEzMzU3YzJhMDljOWNkNjc1N2M5MjY3MDliYmVhODUyYmRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvTUlNRVR5cGVSZWdpc3RyeUd0
ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL01JTUVUeXBlUmVnaXN0cnlH
dGsuY3BwCkBAIC0yOCw5ICsyOCw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
TUlNRVR5cGVSZWdpc3RyeS5oIgogCi0jaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KLSNpbmNs
dWRlIDx3dGYvTWFpblRocmVhZC5oPgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBF
eHRlbnNpb25NYXAgewpAQCAtNjEsMjEgKzU4LDE0IEBAIHN0YXRpYyBjb25zdCBFeHRlbnNpb25N
YXAgZXh0ZW5zaW9uTWFwIFtdID0gewogICAgIHsgInhodG1sIiwgImFwcGxpY2F0aW9uL3hodG1s
K3htbCIgfSwKICAgICB7ICJ3bWwiLCAidGV4dC92bmQud2FwLndtbCIgfSwKICAgICB7ICJ3bWxj
IiwgImFwcGxpY2F0aW9uL3ZuZC53YXAud21sYyIgfSwKLSAgICB7IDAsIDAgfQogfTsKIAotU3Ry
aW5nIE1JTUVUeXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yRXh0ZW5zaW9uKGNvbnN0IFN0cmlu
ZyAmZXh0KQorU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yRXh0ZW5zaW9u
KGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
Ci0KLSAgICBTdHJpbmcgcyA9IGV4dC5sb3dlcigpOwotICAgIGNvbnN0IEV4dGVuc2lvbk1hcCAq
ZSA9IGV4dGVuc2lvbk1hcDsKLSAgICB3aGlsZSAoZS0+ZXh0ZW5zaW9uKSB7Ci0gICAgICAgIGlm
IChzID09IGUtPmV4dGVuc2lvbikKLSAgICAgICAgICAgIHJldHVybiBlLT5taW1lVHlwZTsKLSAg
ICAgICAgKytlOworICAgIGZvciAoYXV0byYgZW50cnkgOiBleHRlbnNpb25NYXApIHsKKyAgICAg
ICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoZXh0ZW5zaW9uLCBlbnRyeS5leHRlbnNpb24p
KQorICAgICAgICAgICAgcmV0dXJuIGVudHJ5Lm1pbWVUeXBlOwogICAgIH0KLQogICAgIHJldHVy
biBTdHJpbmcoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1Bhc3RlYm9hcmRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2Fy
ZE1hYy5tbQppbmRleCAyZWQ1MWM2NTA1MTc4YzUwNTYzNzI3MzFkODcyYjllNmRhMDg5NDljLi5j
MDEzMjQ2NzkxNDJiZGYzZmM4NzRmMDQ3YzI2YzNjZmFmZTYwNzYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQpAQCAtNDE3LDM0ICs0MTcsMzIgQEAg
Ym9vbCBQYXN0ZWJvYXJkOjpoYXNEYXRhKCkKIHN0YXRpYyBTdHJpbmcgY29jb2FUeXBlRnJvbUhU
TUxDbGlwYm9hcmRUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICAvLyBodHRwOi8vd3d3
LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS9kbmQuaHRt
bCNkb20tZGF0YXRyYW5zZmVyLXNldGRhdGEKLSAgICBTdHJpbmcgcVR5cGUgPSB0eXBlLmxvd2Vy
KCk7Ci0KLSAgICBpZiAocVR5cGUgPT0gInRleHQiKQotICAgICAgICBxVHlwZSA9IEFTQ0lJTGl0
ZXJhbCgidGV4dC9wbGFpbiIpOwotICAgIGlmIChxVHlwZSA9PSAidXJsIikKLSAgICAgICAgcVR5
cGUgPSBBU0NJSUxpdGVyYWwoInRleHQvdXJpLWxpc3QiKTsKLQotICAgIC8vIElnbm9yZSBhbnkg
dHJhaWxpbmcgY2hhcnNldCAtIEpTIHN0cmluZ3MgYXJlIFVuaWNvZGUsIHdoaWNoIGVuY2Fwc3Vs
YXRlcyB0aGUgY2hhcnNldCBpc3N1ZQotICAgIGlmIChxVHlwZSA9PSAidGV4dC9wbGFpbiIgfHwg
cVR5cGUuc3RhcnRzV2l0aCgidGV4dC9wbGFpbjsiKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZyhO
U1N0cmluZ1Bib2FyZFR5cGUpOwotICAgIGlmIChxVHlwZSA9PSAidGV4dC91cmktbGlzdCIpCi0g
ICAgICAgIC8vIHNwZWNpYWwgY2FzZSBiZWNhdXNlIFVUSSBkb2Vzbid0IHdvcmsgd2l0aCBDb2Nv
YSdzIFVSTCB0eXBlCi0gICAgICAgIHJldHVybiBTdHJpbmcoTlNVUkxQYm9hcmRUeXBlKTsgLy8g
bm90ZSBzcGVjaWFsIGNhc2UgaW4gZ2V0RGF0YSB0byByZWFkIE5TRmlsZW5hbWVzVHlwZQotCi0g
ICAgLy8gQmxhY2tsaXN0IHR5cGVzIHRoYXQgbWlnaHQgY29udGFpbiBzdWJmcmFtZSBpbmZvcm1h
dGlvbgotICAgIGlmIChxVHlwZSA9PSAidGV4dC9ydGYiIHx8IHFUeXBlID09ICJwdWJsaWMucnRm
IiB8fCBxVHlwZSA9PSAiY29tLmFwcGxlLnRyYWRpdGlvbmFsLW1hYy1wbGFpbi10ZXh0IikKKyAg
ICBTdHJpbmcgbG93ZXJjYXNlZFR5cGUgPSB0eXBlLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7
CisKKyAgICBpZiAobG93ZXJjYXNlZFR5cGUgPT0gInRleHQiKQorICAgICAgICBsb3dlcmNhc2Vk
VHlwZSA9IEFTQ0lJTGl0ZXJhbCgidGV4dC9wbGFpbiIpOworICAgIGlmIChsb3dlcmNhc2VkVHlw
ZSA9PSAidXJsIikKKyAgICAgICAgbG93ZXJjYXNlZFR5cGUgPSBBU0NJSUxpdGVyYWwoInRleHQv
dXJpLWxpc3QiKTsKKworICAgIC8vIElnbm9yZSBhbnkgdHJhaWxpbmcgY2hhcnNldCAtIHN0cmlu
Z3MgYXJlIGFscmVhZHkgVVRGLTE2LCBhbmQgdGhlIGNoYXJzZXQgaXNzdWUgaGFzIGFscmVhZHkg
YmVlbiBkZWFsdCB3aXRoLgorICAgIGlmIChsb3dlcmNhc2VkVHlwZSA9PSAidGV4dC9wbGFpbiIg
fHwgbG93ZXJjYXNlZFR5cGUuc3RhcnRzV2l0aCgidGV4dC9wbGFpbjsiKSkKKyAgICAgICAgcmV0
dXJuIE5TU3RyaW5nUGJvYXJkVHlwZTsKKyAgICBpZiAobG93ZXJjYXNlZFR5cGUgPT0gInRleHQv
dXJpLWxpc3QiKSB7CisgICAgICAgIC8vIFNwZWNpYWwgY2FzZSBiZWNhdXNlIFVUSSBkb2Vzbid0
IHdvcmsgd2l0aCBDb2NvYSdzIFVSTCB0eXBlLgorICAgICAgICByZXR1cm4gTlNVUkxQYm9hcmRU
eXBlOworICAgIH0KKworICAgIC8vIEJsYWNrbGlzdCB0eXBlcyB0aGF0IG1pZ2h0IGNvbnRhaW4g
c3ViZnJhbWUgaW5mb3JtYXRpb24uCisgICAgaWYgKGxvd2VyY2FzZWRUeXBlID09ICJ0ZXh0L3J0
ZiIgfHwgbG93ZXJjYXNlZFR5cGUgPT0gInB1YmxpYy5ydGYiIHx8IGxvd2VyY2FzZWRUeXBlID09
ICJjb20uYXBwbGUudHJhZGl0aW9uYWwtbWFjLXBsYWluLXRleHQiKQogICAgICAgICByZXR1cm4g
U3RyaW5nKCk7CiAKLSAgICAvLyBUcnkgVVRJIG5vdwotICAgIFN0cmluZyBtaW1lVHlwZSA9IHFU
eXBlOwotICAgIGlmIChSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHV0aVR5cGUgPSBhZG9wdENGKFVU
VHlwZUNyZWF0ZVByZWZlcnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NNSU1FVHlwZSwg
bWltZVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgTlVMTCkpKSB7Ci0gICAgICAgIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gcGJUeXBlID0gYWRvcHRDRihVVFR5cGVDb3B5UHJlZmVycmVkVGFn
V2l0aENsYXNzKHV0aVR5cGUuZ2V0KCksIGtVVFRhZ0NsYXNzTlNQYm9hcmRUeXBlKSk7Ci0gICAg
ICAgIGlmIChwYlR5cGUpCisgICAgaWYgKGF1dG8gdXRpVHlwZSA9IGFkb3B0Q0YoVVRUeXBlQ3Jl
YXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRUYWdDbGFzc01JTUVUeXBlLCBsb3dlcmNh
c2VkVHlwZS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBOVUxMKSkpIHsKKyAgICAgICAgaWYgKGF1
dG8gcGJUeXBlID0gYWRvcHRDRihVVFR5cGVDb3B5UHJlZmVycmVkVGFnV2l0aENsYXNzKHV0aVR5
cGUuZ2V0KCksIGtVVFRhZ0NsYXNzTlNQYm9hcmRUeXBlKSkpCiAgICAgICAgICAgICByZXR1cm4g
cGJUeXBlLmdldCgpOwogICAgIH0KIAogICAgIC8vIE5vIG1hcHBpbmcsIGp1c3QgcGFzcyB0aGUg
d2hvbGUgc3RyaW5nIHRob3VnaAotICAgIHJldHVybiBxVHlwZTsKKyAgICByZXR1cm4gbG93ZXJj
YXNlZFR5cGU7CiB9CiAKIHZvaWQgUGFzdGVib2FyZDo6Y2xlYXIoY29uc3QgU3RyaW5nJiB0eXBl
KQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>