<?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>172095</bug_id>
          
          <creation_ts>2017-05-14 13:58:09 -0700</creation_ts>
          <short_desc>[WebIDL/DOM] Remove need for custom bindings for HTMLAllCollection and bring up to spec</short_desc>
          <delta_ts>2017-05-14 22:01:32 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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>
          
          <blocked>172100</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>buildbot</cc>
    
    <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1308522</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-05-14 13:58:09 -0700</bug_when>
    <thetext>[WebIDL/DOM] Remove need for custom bindings for HTMLAllCollection and bring up to spec</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308523</commentid>
    <comment_count>1</comment_count>
      <attachid>310096</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-05-14 14:15:15 -0700</bug_when>
    <thetext>Created attachment 310096
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308525</commentid>
    <comment_count>2</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-05-14 14:16:38 -0700</bug_when>
    <thetext>Attachment 310096 did not pass style-queue:


ERROR: Source/WebCore/ChangeLog:50:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ERROR: Source/WebCore/ChangeLog:51:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Total errors found: 2 in 22 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308528</commentid>
    <comment_count>3</comment_count>
      <attachid>310098</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-05-14 14:39:00 -0700</bug_when>
    <thetext>Created attachment 310098
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308529</commentid>
    <comment_count>4</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-05-14 14:41:05 -0700</bug_when>
    <thetext>Attachment 310098 did not pass style-queue:


ERROR: Source/WebCore/ChangeLog:50:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ERROR: Source/WebCore/ChangeLog:51:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Total errors found: 2 in 22 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308531</commentid>
    <comment_count>5</comment_count>
      <attachid>310098</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-05-14 16:00:19 -0700</bug_when>
    <thetext>Comment on attachment 310098
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=310098&amp;action=review

Both GTK and Windows build failures are: &quot;Can&apos;t locate Clone.pm in @INC (you may need to install the Clone module)&quot;.

&gt; Source/WebCore/ChangeLog:8
&gt; +        - Adds support the legacycaller WebIDL special annotation

support for

&gt; Source/WebCore/bindings/scripts/IDLParser.pm:2
&gt;  # KDOM IDL parser

KDOM!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308537</commentid>
    <comment_count>6</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-05-14 16:41:03 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #5)
&gt; Comment on attachment 310098 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=310098&amp;action=review
&gt; 
&gt; Both GTK and Windows build failures are: &quot;Can&apos;t locate Clone.pm in @INC (you
&gt; may need to install the Clone module)&quot;.

Yeah, I guess my excited use premature. Adding my own hand rolled clones is easy enough. 

&gt; 
&gt; &gt; Source/WebCore/ChangeLog:8
&gt; &gt; +        - Adds support the legacycaller WebIDL special annotation
&gt; 
&gt; support for
&gt;

Will fix.
 
&gt; &gt; Source/WebCore/bindings/scripts/IDLParser.pm:2
&gt; &gt;  # KDOM IDL parser
&gt; 
&gt; KDOM!

!!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308540</commentid>
    <comment_count>7</comment_count>
      <attachid>310102</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-05-14 17:03:54 -0700</bug_when>
    <thetext>Created attachment 310102
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308541</commentid>
    <comment_count>8</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-05-14 17:05:41 -0700</bug_when>
    <thetext>Attachment 310102 did not pass style-queue:


ERROR: Source/WebCore/ChangeLog:53:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ERROR: Source/WebCore/ChangeLog:54:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Total errors found: 2 in 22 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308548</commentid>
    <comment_count>9</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-05-14 18:09:51 -0700</bug_when>
    <thetext>Committed r216851: &lt;http://trac.webkit.org/changeset/216851&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>310096</attachid>
            <date>2017-05-14 14:15:15 -0700</date>
            <delta_ts>2017-05-14 14:38:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172095-20170514141502.patch</filename>
            <type>text/plain</type>
            <size>62315</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNjg0OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk0IEBACisyMDE3LTA1LTE0ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1dlYklETC9ET01dIFJlbW92ZSBuZWVk
IGZvciBjdXN0b20gYmluZGluZ3MgZm9yIEhUTUxBbGxDb2xsZWN0aW9uIGFuZCBicmluZyB1cCB0
byBzcGVjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NzIwOTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAt
IEFkZHMgc3VwcG9ydCB0aGUgbGVnYWN5Y2FsbGVyIFdlYklETCBzcGVjaWFsIGFubm90YXRpb24K
KyAgICAgICAgLSBVcGRhdGVzIGltcGxlbWVudGF0aW9uIG9mIEhUTUxBbGxDb2xsZWN0aW9uIHRv
IG1hdGNoIHRoZSBjdXJyZW50IEhUTUwgc3BlYy4KKworICAgICAgICBUZXN0OiBmYXN0L2RvbS9k
b2N1bWVudC1hbGwuaHRtbAorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTQmluZGluZ3NBbGxJbk9uZS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MQWxs
Q29sbGVjdGlvbkN1c3RvbS5jcHA6IFJlbW92ZWQuCisgICAgICAgIFJlbW92ZWQgSlNIVE1MQWxs
Q29sbGVjdGlvbkN1c3RvbS5jcHAKKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVJbnRlcmZhY2UpOgorICAgICAgICAoQWRk
TGVnYWN5Q2FsbGVyT3BlcmF0aW9uSWZOZWVkZWQpOgorICAgICAgICBCZWZvcmUgY29kZSBnZW5l
cmF0aW9uLCBjbG9uZSBhbGwgdGhlIGxlZ2FjeWNhbGxlciBvcGVyYXRpb25zIGFuZCBwdXQgdGhl
bQorICAgICAgICBpbiB0aGVpciBvd24gc2V0LCBzbyB0aGV5IGNhbiBmb3JtIGFuIG92ZXJsb2Fk
IHNldC4KKyAgICAgICAgCisgICAgICAgIChBZGRTdHJpbmdpZmllck9wZXJhdGlvbklmTmVlZGVk
KToKKyAgICAgICAgVXNlIHRoZSBDbG9uZSBwZXJsIG1vZHVsZSwgbm93IHRoYXQgSSBrbm93IGl0
IGV4aXN0cy4KKworICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOgorICAgICAgICBHcm91cCBjYWxs
IHJlbGF0ZWQgZnVuY3Rpb25hbGl0eSB0b2dldGhlciBhbmQgdXNlIG5ldyBJc0NhbGxhYmxlIHBy
ZWRpY2F0ZS4KKworICAgICAgICAoR2VuZXJhdGVPdmVybG9hZGVkRnVuY3Rpb25PckNvbnN0cnVj
dG9yKToKKyAgICAgICAgR2VuZXJhbGl6ZSBhIGxpdHRsZSBiaXQgdG8gYWxsb3cgdGhlIGZ1bmN0
aW9uIGJlaW5nIG92ZXJsb2FkZWQgdG8gYmUgYW4gb3ZlcmxvYWRlZCBsZWdhY3ljYWxsZXIuCisK
KyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAgICAgICBBZGQgY2FsbCB0byBn
ZW5lcmF0ZSB0aGUgbGVnYWN5Y2FsbGVyIGNvZGUuCisKKyAgICAgICAgKEdlbmVyYXRlTGVnYWN5
Q2FsbGVyRGVmaW5pdGlvbnMpOgorICAgICAgICAoR2VuZXJhdGVMZWdhY3lDYWxsZXJEZWZpbml0
aW9uKToKKyAgICAgICAgR2VuZXJhdGUgdGhlIGxlZ2FjeWNhbGxlciBkZWZpbml0aW9uLCB1c2lu
ZyBHZW5lcmF0ZUFyZ3VtZW50c0NvdW50Q2hlY2ssIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCisg
ICAgICAgIGFuZCBHZW5lcmF0ZUltcGxlbWVudGF0aW9uRnVuY3Rpb25DYWxsIHRvIGRvIGFsbCB0
aGUgaGVhdnkgbGlmdGluZy4KKworICAgICAgICAoSXNDYWxsYWJsZSk6CisgICAgICAgIEFkZCBo
ZWxwZXIgcHJlZGljYXRlIGZvciBib3RoIGN1c3RvbSBjYWxscyBhbmQgbGVnYWN5Y2FsbGVyLgor
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG06CisgICAgICAgICh0eXBl
QnlBcHBseWluZ1R5cGVkZWZzKToKKyAgICAgICAgKGNsb25lVHlwZSk6IERlbGV0ZWQuCisgICAg
ICAgIFVzZSBDbG9uZSByYXRoZXIgdGhhbiBoYW5kIHdyaXRpbmcgaXQuCisKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaAorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9UZXN0T2JqLmlkbDoKKyAgICAgICAgQWRkIHRlc3Rpbmcgb2YgbGVnYWN5Y2FsbGVyIG92
ZXJsb2FkaW5nLgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50OjphbGxGaWx0ZXJlZEJ5TmFtZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50
Lmg6CisgICAgICAgIEFkZCBuZXcgY29sbGVjdGlvbiBhY2Nlc3MgZm9yIHRoZSBIVE1MQWxsTmFt
ZWRTdWJDb2xsZWN0aW9uLgorCisgICAgICAgICogaHRtbC9DYWNoZWRIVE1MQ29sbGVjdGlvbi5o
OgorICAgICAgICAoV2ViQ29yZTo6bmFtZVNob3VsZEJlVmlzaWJsZUluRG9jdW1lbnRBbGwpOgor
ICAgICAgICBVcGRhdGUgbGlzdCBvZiB0YWdzIHRvIG1hdGNoIHRoZSBjdXJyZW50IHNwZWMuCisK
KyAgICAgICAgKiBodG1sL0NvbGxlY3Rpb25UeXBlLmg6CisgICAgICAgIEFkZCBuZXcgdHlwZSBm
b3IgSFRNTEFsbE5hbWVkU3ViQ29sbGVjdGlvbi4KKworICAgICAgICAqIGh0bWwvR2VuZXJpY0Nh
Y2hlZEhUTUxDb2xsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdlbmVyaWNDYWNoZWRI
VE1MQ29sbGVjdGlvbjx0cmF2ZXJzYWxUeXBlPjo6ZWxlbWVudE1hdGNoZXMpOgorICAgICAgICBT
cGVjaWZ5IHRoYXQgRG9jdW1lbnRBbGxOYW1lZEl0ZW1zIGRvZXMgbm90IHdhbnQKKyAgICAgICAg
dGhlIGRlZmF1bHQgZWxlbWVudE1hdGNoZXMuCisgCisgICAgICAgICogaHRtbC9IVE1MQWxsQ29s
bGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQWxsQ29sbGVjdGlvbjo6bmFtZWRP
ckluZGV4ZWRJdGVtT3JJdGVtcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQWxsQ29sbGVjdGlv
bjo6bmFtZWRJdGVtT3JJdGVtcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQWxsTmFtZWRTdWJD
b2xsZWN0aW9uOjp+SFRNTEFsbE5hbWVkU3ViQ29sbGVjdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MQWxsTmFtZWRTdWJDb2xsZWN0aW9uOjplbGVtZW50TWF0Y2hlcyk6CisgICAgICAgICog
aHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5oOgorICAgICAgICBNb3ZlIGltcGxlbWVudGF0aW9ucyBm
cm9tIHRoZSBjdXN0b20gYmluZGluZywgYW5kIHJlLWltcGxlbWVudCB0bworICAgICAgICBtYXRj
aCB0aGUgc3BlYy4gQWx0ZXJuYXRlIG5hbWVzIHRvIGl0ZW0vbmFtZWRJdGVtIHdlcmUgbmVlZGVk
IHRvIG5vdAorICAgICAgICBzaGFkb3cgdGhlIGV4aXN0aW5nIG9uZXMgaW4gSFRNTENvbGxlY3Rp
b24uIEhUTUxBbGxOYW1lZFN1YkNvbGxlY3Rpb24KKyAgICAgICAgaXMgYSBzaW1wbGUgSFRNTENv
bGxlY3Rpb24gdGhhdCBtYXRjaGVzIG9uIGEgbmFtZSwgZm9sbG93aW5nIHRoZSBydWxlcworICAg
ICAgICBvZiBkb2N1bWVudC5hbGwgYWJvdXQgd2hpY2ggdGFncyBjYW4gaGF2ZSBuYW1lIGF0dHJp
YnV0ZXMuCisKKyAgICAgICAgKiBodG1sL0hUTUxBbGxDb2xsZWN0aW9uLmlkbDoKKyAgICAgICAg
UmVtb3ZlIGN1c3RvbSBhbm5vdGF0aW9ucyBhbmQgYWRkIGxlZ2FjeWNhbGxlciB3aGljaCBpcyBu
b3cgc3VwcG9ydGVkLgorCisgICAgICAgICogaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjppbnZhbGlkYXRpb25UeXBlRXhjbHVkaW5nSWRBbmROYW1lQXR0cmlidXRl
cyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29sbGVjdGlvbjo6fkhUTUxDb2xsZWN0aW9uKToK
KyAgICAgICAgQWRkIERvY3VtZW50QWxsTmFtZWRJdGVtcy4KKwogMjAxNy0wNS0xMyAgRGF2aWQg
S2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFVudXNlZCBsYW1iZGEgaW4g
SlNXZWJLaXRTdWJ0bGVDcnlwdG86OndyYXBLZXkoKQpJbmRleDogU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJ
KHJldmlzaW9uIDIxNjg0OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTY4LDcgKzExNjgsNiBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAg
YmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTRXZlbnRU
YXJnZXRDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNFeGNlcHRpb25CYXNlLmNwcAotICAg
IGJpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCiAgICAgYmluZGluZ3Mv
anMvSlNIVE1MQXBwbGV0RWxlbWVudEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0hUTUxD
YW52YXNFbGVtZW50Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTSFRNTENvbGxlY3Rpb25D
dXN0b20uY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMTY4NDgpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTU3NDQsNyAr
NTc0NCw2IEBACiAJCUJDOTdFMjNCMTA5MTQ0OTUwMDEwRDM2MSAvKiBIVE1MQWxsQ29sbGVjdGlv
bi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzk3
RTIzOTEwOTE0NDk1MDAxMEQzNjEgLyogSFRNTEFsbENvbGxlY3Rpb24uY3BwICovOyB9OwogCQlC
Qzk3RTQxMjEwOTE1NEZBMDAxMEQzNjEgLyogSlNIVE1MQWxsQ29sbGVjdGlvbi5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzk3RTQxMDEwOTE1NEZB
MDAxMEQzNjEgLyogSlNIVE1MQWxsQ29sbGVjdGlvbi5jcHAgKi87IH07CiAJCUJDOTdFNDEzMTA5
MTU0RkEwMDEwRDM2MSAvKiBKU0hUTUxBbGxDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzk3RTQxMTEwOTE1NEZBMDAxMEQzNjEgLyog
SlNIVE1MQWxsQ29sbGVjdGlvbi5oICovOyB9OwotCQlCQzk3RTQyQzEwOTE1QjA2MDAxMEQzNjEg
LyogSlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzk3RTQyQjEwOTE1QjA2MDAxMEQzNjEgLyogSlNIVE1M
QWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAgKi87IH07CiAJCUJDOThBMjdEMEMwQzk5NTAwMDRCRUJG
NyAvKiBKU1N0eWxlU2hlZXRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkM5OEEyN0MwQzBDOTk1MDAwNEJFQkY3IC8qIEpTU3R5bGVTaGVl
dEN1c3RvbS5jcHAgKi87IH07CiAJCUJDQTE2OUEyMEJGRDU1QjQwMDE5Q0E3NiAvKiBKU0hUTUxU
YWJsZUNhcHRpb25FbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDQTE2OUEwMEJGRDU1QjQwMDE5Q0E3NiAvKiBKU0hUTUxUYWJsZUNhcHRp
b25FbGVtZW50LmNwcCAqLzsgfTsKIAkJQkNBMTY5QTMwQkZENTVCNDAwMTlDQTc2IC8qIEpTSFRN
TFRhYmxlQ2FwdGlvbkVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDQTE2OUExMEJGRDU1QjQwMDE5Q0E3NiAvKiBKU0hUTUxUYWJsZUNhcHRp
b25FbGVtZW50LmggKi87IH07CkBAIC0xNDE2Niw3ICsxNDE2NSw2IEBACiAJCUJDOTdFMjNDMTA5
MTQ2RjEwMDEwRDM2MSAvKiBIVE1MQWxsQ29sbGVjdGlvbi5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gSFRNTEFsbENvbGxlY3Rpb24uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlCQzk3RTQxMDEwOTE1NEZBMDAxMEQzNjEgLyogSlNIVE1MQWxsQ29sbGVjdGlvbi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0hUTUxBbGxDb2xsZWN0aW9uLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM5N0U0MTExMDkxNTRGQTAwMTBEMzYx
IC8qIEpTSFRNTEFsbENvbGxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNIVE1MQWxsQ29sbGVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlC
Qzk3RTQyQjEwOTE1QjA2MDAxMEQzNjEgLyogSlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0hUTUxBbGxDb2xsZWN0aW9u
Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM5OEEyN0MwQzBDOTk1
MDAwNEJFQkY3IC8qIEpTU3R5bGVTaGVldEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU1N0eWxlU2hlZXRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlCQzlBNjE0MTE0Njg1OUQ5MDA2MDU3RkQgLyogRE9NRXhjZXB0aW9ucy5p
biAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBET01FeGNlcHRpb25zLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
QzlBNjE0MjE0Njg1OUQ5MDA2MDU3RkQgLyogRXZlbnROYW1lcy5pbiAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBFdmVudE5hbWVz
LmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTk1NjEsNiArMTk1NTksNyBAQAog
CQkJCTUxRTI2OTMyMUREM0JDNDMwMDZCNkE1OCAvKiBKU0lEQlRyYW5zYWN0aW9uQ3VzdG9tLmNw
cCAqLywKIAkJCQlBN0QwMzE4RDBFOTM1NDAzMDBFMjRBQ0QgLyogSlNJbWFnZURhdGFDdXN0b20u
Y3BwICovLAogCQkJCUFENzI2RkU3MTZEOUYyMDQwMDNBNEU2RCAvKiBKU01lZGlhTGlzdEN1c3Rv
bS5oICovLAorCQkJCTQxNUNEQUY2MUU2Q0UwRDMwMDRGMTFFRSAvKiBKU01lZGlhU3RyZWFtVHJh
Y2tDdXN0b20uY3BwICovLAogCQkJCUUxQTVGOTlBMEU3RUFBMjUwMEFGODVFQSAvKiBKU01lc3Nh
Z2VDaGFubmVsQ3VzdG9tLmNwcCAqLywKIAkJCQlFMUFERUQ0NjBFNzZCOEREMDA0QTFBNUUgLyog
SlNNZXNzYWdlUG9ydEN1c3RvbS5jcHAgKi8sCiAJCQkJMUE3NTBERDMwQTkwRTcyOTAwMEZGMjE1
IC8qIEpTTm9kZUl0ZXJhdG9yQ3VzdG9tLmNwcCAqLywKQEAgLTIzNDYyLDcgKzIzNDYxLDYgQEAK
IAkJCQlDMjgwODM0MTFDNkRDOTZBMDAxNDUxQjYgLyogSlNGb250RmFjZUN1c3RvbS5jcHAgKi8s
CiAJCQkJMUMyNEVFQUExQzcyQUEwQTAwODBGOEZDIC8qIEpTRm9udEZhY2VTZXRDdXN0b20uY3Bw
ICovLAogCQkJCUJDRTdCMTkyMEQ0RTg2OTYwMDc1QTUzOSAvKiBKU0hpc3RvcnlDdXN0b20uY3Bw
ICovLAotCQkJCUJDOTdFNDJCMTA5MTVCMDYwMDEwRDM2MSAvKiBKU0hUTUxBbGxDb2xsZWN0aW9u
Q3VzdG9tLmNwcCAqLywKIAkJCQlCQzRFREVGMzBDMDhGM0ZCMDA3RURENDkgLyogSlNIVE1MQXBw
bGV0RWxlbWVudEN1c3RvbS5jcHAgKi8sCiAJCQkJOTM5MjI2MkMxMDMyMTA3QjAwNkU3RDVEIC8q
IEpTSFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwICovLAogCQkJCUJDNTE1ODBBMEMwM0Q0MDQw
MDhCQjBFRSAvKiBKU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAgKi8sCkBAIC0yMzQ3Nyw3ICsyMzQ3
NSw2IEBACiAJCQkJN0E3NEVDQkMxMDE4MzlEQTAwQkY5MzlFIC8qIEpTSW5zcGVjdG9yRnJvbnRl
bmRIb3N0Q3VzdG9tLmNwcCAqLywKIAkJCQlCQ0UxQzQzRjBEOTgzMEY0MDAzQjAyRjIgLyogSlNM
b2NhdGlvbkN1c3RvbS5jcHAgKi8sCiAJCQkJMkQ5QkY3NDgxREJGRERGODAwN0E3RDk5IC8qIEpT
TWVkaWFLZXlTZXNzaW9uQ3VzdG9tLmNwcCAqLywKLQkJCQk0MTVDREFGNjFFNkNFMEQzMDA0RjEx
RUUgLyogSlNNZWRpYVN0cmVhbVRyYWNrQ3VzdG9tLmNwcCAqLywKIAkJCQk0MTBCN0U3MTEwNDVG
QUIwMDBEODIyNEYgLyogSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwICovLAogCQkJCUExRTVCMzFE
MUFBRDFEQTQwMDZFQkVGQiAvKiBKU01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDdXN0b20uY3Bw
ICovLAogCQkJCUM2RjA5MTdFMTQzQTJCQjkwMDY4NTg0OSAvKiBKU011dGF0aW9uT2JzZXJ2ZXJD
dXN0b20uY3BwICovLApAQCAtMzE3MzgsNyArMzE3MzUsNiBAQAogCQkJCTU3OTU3Q0I2MUU5NzJD
NzgwMDgwNzJBQiAvKiBKU0hrZGZQYXJhbXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTdFMjMz
NjkxRENBQjI0MzAwRjI4RDAxIC8qIEpTSG1hY0tleVBhcmFtcy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlCQzk3RTQxMjEwOTE1NEZBMDAxMEQzNjEgLyogSlNIVE1MQWxsQ29sbGVjdGlvbi5jcHAg
aW4gU291cmNlcyAqLywKLQkJCQlCQzk3RTQyQzEwOTE1QjA2MDAxMEQzNjEgLyogSlNIVE1MQWxs
Q29sbGVjdGlvbkN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTRBMkRFRjBBMUI4NTJB
MDBDODA3RjggLyogSlNIVE1MQW5jaG9yRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkx
QTRBMkRGMTBBMUI4NTJBMDBDODA3RjggLyogSlNIVE1MQXBwbGV0RWxlbWVudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCQzRFREVGNDBDMDhGM0ZCMDA3RURENDkgLyogSlNIVE1MQXBwbGV0RWxl
bWVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAkocmV2aXNpb24gMjE2ODQ4KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNjcsNyArNjcsNiBAQAogI2luY2x1ZGUgIkpTRXZlbnRMaXN0ZW5lci5j
cHAiCiAjaW5jbHVkZSAiSlNFdmVudFRhcmdldEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNFeGNl
cHRpb25CYXNlLmNwcCIKLSNpbmNsdWRlICJKU0hUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcCIK
ICNpbmNsdWRlICJKU0hUTUxBcHBsZXRFbGVtZW50Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0hU
TUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0hUTUxDb2xsZWN0aW9uQ3Vz
dG9tLmNwcCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxl
Y3Rpb25DdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCShyZXZpc2lvbiAyMTY4NDgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcAkobm9u
ZXhpc3RlbnQpCkBAIC0xLDEyNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5LCAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJK
U0hUTUxBbGxDb2xsZWN0aW9uLmgiCi0KLSNpbmNsdWRlICJIVE1MQWxsQ29sbGVjdGlvbi5oIgot
I2luY2x1ZGUgIkpTTm9kZS5oIgotI2luY2x1ZGUgIkpTTm9kZUxpc3QuaCIKLSNpbmNsdWRlICJT
dGF0aWNOb2RlTGlzdC5oIgotI2luY2x1ZGUgPHJ1bnRpbWUvSWRlbnRpZmllcklubGluZXMuaD4K
LQotdXNpbmcgbmFtZXNwYWNlIEpTQzsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMg
SlNWYWx1ZSBuYW1lZEl0ZW1zKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTSFRNTEFsbENvbGxlY3Rpb24q
IGNvbGxlY3Rpb24sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCi17Ci0gICAgVmVjdG9yPFJl
ZjxFbGVtZW50Pj4gbmFtZWRJdGVtcyA9IGNvbGxlY3Rpb24tPndyYXBwZWQoKS5uYW1lZEl0ZW1z
KHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOwotCi0gICAgaWYgKG5h
bWVkSXRlbXMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICBp
ZiAobmFtZWRJdGVtcy5zaXplKCkgPT0gMSkKLSAgICAgICAgcmV0dXJuIHRvSlMoJnN0YXRlLCBj
b2xsZWN0aW9uLT5nbG9iYWxPYmplY3QoKSwgbmFtZWRJdGVtc1swXSk7Ci0KLSAgICAvLyBGSVhN
RTogSFRNTDUgc3BlY2lmaWNhdGlvbiBzYXlzIHRoaXMgc2hvdWxkIGJlIGEgSFRNTENvbGxlY3Rp
b24uCi0gICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQt
d29yay9tdWx0aXBhZ2UvY29tbW9uLWRvbS1pbnRlcmZhY2VzLmh0bWwjaHRtbGFsbGNvbGxlY3Rp
b24KLSAgICByZXR1cm4gdG9KUygmc3RhdGUsIGNvbGxlY3Rpb24tPmdsb2JhbE9iamVjdCgpLCBT
dGF0aWNFbGVtZW50TGlzdDo6Y3JlYXRlKFdURk1vdmUobmFtZWRJdGVtcykpKTsKLX0KLQotLy8g
SFRNTEFsbENvbGxlY3Rpb25zIGFyZSBzdHJhbmdlIG9iamVjdHMsIHRoZXkgc3VwcG9ydCBib3Ro
IGdldCBhbmQgY2FsbC4KLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxI
VE1MQWxsQ29sbGVjdGlvbihFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0KLSAgICBp
ZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKLQotICAgIC8vIERvIG5vdCB1c2UgdGhpc09iaiBoZXJlLiBJ
dCBjYW4gYmUgdGhlIEpTSFRNTERvY3VtZW50LCBpbiB0aGUgZG9jdW1lbnQuZm9ybXMoaSkgY2Fz
ZS4KLSAgICBKU0hUTUxBbGxDb2xsZWN0aW9uKiBqc0NvbGxlY3Rpb24gPSBqc0Nhc3Q8SlNIVE1M
QWxsQ29sbGVjdGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkpOwotICAgIEhUTUxBbGxDb2xsZWN0aW9u
JiBjb2xsZWN0aW9uID0ganNDb2xsZWN0aW9uLT53cmFwcGVkKCk7Ci0KLSAgICAvLyBBbHNvLCBk
byB3ZSBuZWVkIHRoZSBUeXBlRXJyb3IgdGVzdCBoZXJlID8KLQotICAgIGlmIChleGVjLT5hcmd1
bWVudENvdW50KCkgPT0gMSkgewotICAgICAgICAvLyBTdXBwb3J0IGZvciBkb2N1bWVudC5hbGwo
PGluZGV4PikgZXRjLgotICAgICAgICBTdHJpbmcgc3RyaW5nID0gZXhlYy0+YXJndW1lbnQoMCku
dG9XVEZTdHJpbmcoZXhlYyk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwotICAgICAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5k
ZXggPSBwYXJzZUluZGV4KCpzdHJpbmcuaW1wbCgpKSkKLSAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodG9KUyhleGVjLCBqc0NvbGxlY3Rpb24tPmdsb2JhbE9iamVjdCgpLCBjb2xs
ZWN0aW9uLml0ZW0oaW5kZXgudmFsdWUoKSkpKTsKLQotICAgICAgICAvLyBTdXBwb3J0IGZvciBk
b2N1bWVudC5pbWFnZXMoJzxuYW1lPicpIGV0Yy4KLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShuYW1lZEl0ZW1zKCpleGVjLCBqc0NvbGxlY3Rpb24sIElkZW50aWZpZXI6OmZyb21TdHJp
bmcoZXhlYywgc3RyaW5nKSkpOwotICAgIH0KLQotICAgIC8vIFRoZSBzZWNvbmQgYXJnLCBpZiBz
ZXQsIGlzIHRoZSBpbmRleCBvZiB0aGUgaXRlbSB3ZSB3YW50Ci0gICAgU3RyaW5nIHN0cmluZyA9
IGV4ZWMtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKGV4ZWMpOwotICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVp
bnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgoKmV4ZWMtPmFyZ3VtZW50KDEpLnRvV1RGU3RyaW5n
KGV4ZWMpLmltcGwoKSkpIHsKLSAgICAgICAgaWYgKGF1dG8qIGl0ZW0gPSBjb2xsZWN0aW9uLm5h
bWVkSXRlbVdpdGhJbmRleChzdHJpbmcsIGluZGV4LnZhbHVlKCkpKQotICAgICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTKGV4ZWMsIGpzQ29sbGVjdGlvbi0+Z2xvYmFsT2JqZWN0
KCksICppdGVtKSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKLX0KLQotQ2FsbFR5cGUgSlNIVE1MQWxsQ29sbGVjdGlvbjo6Z2V0Q2FsbERhdGEo
SlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQotewotICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5j
dGlvbiA9IGNhbGxIVE1MQWxsQ29sbGVjdGlvbjsKLSAgICByZXR1cm4gQ2FsbFR5cGU6Okhvc3Q7
Ci19Ci0KLWJvb2wgSlNIVE1MQWxsQ29sbGVjdGlvbjo6bmFtZUdldHRlcihFeGVjU3RhdGUqIHN0
YXRlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlJiB2YWx1ZSkKLXsKLSAgICBK
U1ZhbHVlIGl0ZW1zID0gbmFtZWRJdGVtcygqc3RhdGUsIHRoaXMsIHByb3BlcnR5TmFtZSk7Ci0g
ICAgaWYgKGl0ZW1zLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IHZhbHVlID0gaXRlbXM7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLUpTVmFsdWUgSlNIVE1MQWxs
Q29sbGVjdGlvbjo6aXRlbShFeGVjU3RhdGUmIHN0YXRlKQotewotICAgIFZNJiB2bSA9IHN0YXRl
LnZtKCk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotCi0gICAg
aWYgKFVOTElLRUxZKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4g
dGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3IoJnN0YXRlKSk7Ci0KLSAgICBTdHJpbmcgYXJndW1lbnQgPSBzdGF0ZS51bmNoZWNrZWRBcmd1
bWVudCgwKS50b1dURlN0cmluZygmc3RhdGUpOwotICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQz
Ml90PiBpbmRleCA9IHBhcnNlSW5kZXgoKmFyZ3VtZW50LmltcGwoKSkpCi0gICAgICAgIHJldHVy
biB0b0pTKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCksIHdyYXBwZWQoKS5pdGVtKGluZGV4LnZhbHVl
KCkpKTsKLSAgICByZXR1cm4gbmFtZWRJdGVtcyhzdGF0ZSwgdGhpcywgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZygmc3RhdGUsIGFyZ3VtZW50KSk7Ci19Ci0KLUpTVmFsdWUgSlNIVE1MQWxsQ29sbGVj
dGlvbjo6bmFtZWRJdGVtKEV4ZWNTdGF0ZSYgc3RhdGUpCi17Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9
IG5hbWVkSXRlbXMoc3RhdGUsIHRoaXMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCBz
dGF0ZS5hcmd1bWVudCgwKS50b1dURlN0cmluZygmc3RhdGUpKSk7Ci0gICAgcmV0dXJuIHZhbHVl
LmlzVW5kZWZpbmVkKCkgPyBqc051bGwoKSA6IHZhbHVlOwotfQotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0hUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcApfX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wt
c3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVy
dHkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtCShyZXZpc2lvbiAyMTY4NDgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQs
NyBAQCBwYWNrYWdlIENvZGVHZW5lcmF0b3JKUzsKIHVzZSBzdHJpY3Q7CiB1c2UgY29uc3RhbnQg
RmlsZU5hbWVQcmVmaXggPT4gIkpTIjsKIHVzZSBDYXJwIHF3PGxvbmdtZXNzPjsKK3VzZSBDbG9u
ZTsKIHVzZSBEYXRhOjpEdW1wZXI7CiB1c2UgSGFzaGVyOwogCkBAIC0xNjIsNyArMTYzLDkgQEAg
c3ViIEdlbmVyYXRlSW50ZXJmYWNlCiAgICAgbXkgKCRvYmplY3QsICRpbnRlcmZhY2UsICRkZWZp
bmVzLCAkZW51bWVyYXRpb25zLCAkZGljdGlvbmFyaWVzKSA9IEBfOwogCiAgICAgJGNvZGVHZW5l
cmF0b3ItPkxpbmtPdmVybG9hZGVkRnVuY3Rpb25zKCRpbnRlcmZhY2UpOworCiAgICAgQWRkU3Ry
aW5naWZpZXJPcGVyYXRpb25JZk5lZWRlZCgkaW50ZXJmYWNlKTsKKyAgICBBZGRMZWdhY3lDYWxs
ZXJPcGVyYXRpb25JZk5lZWRlZCgkaW50ZXJmYWNlKTsKIAogICAgIGlmICgkaW50ZXJmYWNlLT5p
c0NhbGxiYWNrKSB7CiAgICAgICAgICRvYmplY3QtPkdlbmVyYXRlQ2FsbGJhY2tJbnRlcmZhY2VI
ZWFkZXIoJGludGVyZmFjZSwgJGVudW1lcmF0aW9ucywgJGRpY3Rpb25hcmllcyk7CkBAIC0xODgs
MTAgKzE5MSw3IEBAIHN1YiBBZGRTdHJpbmdpZmllck9wZXJhdGlvbklmTmVlZGVkCiAgICAgICAg
ICRzdHJpbmdpZmllci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJpYnV0ZUxpc3Qp
OwogICAgICAgICBkaWUgInN0cmluZ2lmaWVyIGNhbiBvbmx5IGJlIHVzZWQgb24gYXR0cmlidXRl
cyBvZiBTdHJpbmcgdHlwZXMiIHVubGVzcyAkY29kZUdlbmVyYXRvci0+SXNTdHJpbmdUeXBlKCRh
dHRyaWJ1dGUtPnR5cGUpOwogICAgICAgICAKLSAgICAgICAgIyBGSVhNRTogVGhpcyBzaG91bGQg
dXNlIElETFBhcnNlcidzIGNsb25lVHlwZS4KLSAgICAgICAgbXkgJHR5cGUgPSBJRExUeXBlLT5u
ZXcoKTsKLSAgICAgICAgJHR5cGUtPm5hbWUoJGF0dHJpYnV0ZS0+dHlwZS0+bmFtZSk7Ci0KKyAg
ICAgICAgbXkgJHR5cGUgPSBDbG9uZTo6Y2xvbmUoJGF0dHJpYnV0ZS0+dHlwZSk7CiAgICAgICAg
ICRzdHJpbmdpZmllci0+dHlwZSgkdHlwZSk7CiAKICAgICAgICAgcHVzaChAeyRpbnRlcmZhY2Ut
PmZ1bmN0aW9uc30sICRzdHJpbmdpZmllcik7CkBAIC0xOTksNiArMTk5LDI0IEBAIHN1YiBBZGRT
dHJpbmdpZmllck9wZXJhdGlvbklmTmVlZGVkCiAgICAgfQogfQogCitzdWIgQWRkTGVnYWN5Q2Fs
bGVyT3BlcmF0aW9uSWZOZWVkZWQKK3sKKyAgICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7CisKKyAg
ICBmb3JlYWNoIG15ICRmdW5jdGlvbiAoQHskaW50ZXJmYWNlLT5mdW5jdGlvbnN9LCBAeyRpbnRl
cmZhY2UtPmFub255bW91c0Z1bmN0aW9uc30pIHsKKyAgICAgICAgbXkgJGlzTGVnYWN5Q2FsbGVy
ID0gZ3JlcCB7ICRfIGVxICJsZWdhY3ljYWxsZXIiIH0gQHskZnVuY3Rpb24tPnNwZWNpYWxzfTsK
KyAgICAgICAgaWYgKCRpc0xlZ2FjeUNhbGxlcikgeworICAgICAgICAgICAgJGludGVyZmFjZS0+
e0xlZ2FjeUNhbGxlcnN9ID0gW10gaWYgIWV4aXN0cyAkaW50ZXJmYWNlLT57TGVnYWN5Q2FsbGVy
c307CisKKyAgICAgICAgICAgIG15ICRjbG9uZWRPcGVyYXRpb24gPSBDbG9uZTo6Y2xvbmUoJGZ1
bmN0aW9uKTsKKyAgICAgICAgICAgIHB1c2goJGludGVyZmFjZS0+e0xlZ2FjeUNhbGxlcnN9LCAk
Y2xvbmVkT3BlcmF0aW9uKTsKKyAgICAKKyAgICAgICAgICAgICRjbG9uZWRPcGVyYXRpb24tPntv
dmVybG9hZHN9ID0gJGludGVyZmFjZS0+e0xlZ2FjeUNhbGxlcnN9OworICAgICAgICAgICAgJGNs
b25lZE9wZXJhdGlvbi0+e292ZXJsb2FkSW5kZXh9ID0gQHskaW50ZXJmYWNlLT57TGVnYWN5Q2Fs
bGVyc319OworICAgICAgICB9CisgICAgfQorfQorCiBzdWIgRXZlbnRIYW5kbGVyQXR0cmlidXRl
RXZlbnROYW1lCiB7CiAgICAgbXkgJGF0dHJpYnV0ZSA9IHNoaWZ0OwpAQCAtMTc0MCw4ICsxNzU4
LDYgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgICAgIH0KICAgICB9CiAKLSAgICAkaGVhZGVy
SW5jbHVkZXN7IjxydW50aW1lL0NhbGxEYXRhLmg+In0gPSAxIGlmICRpbnRlcmZhY2UtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e0N1c3RvbUNhbGx9OwotCiAgICAgJGhlYWRlckluY2x1ZGVzeyIkaW50
ZXJmYWNlTmFtZS5oIn0gPSAxIGlmICRoYXNQYXJlbnQgJiYgJGludGVyZmFjZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57SlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0fTsKIAogICAgICRoZWFkZXJJbmNs
dWRlc3siU1ZHRWxlbWVudC5oIn0gPSAxIGlmICRjbGFzc05hbWUgPX4gL15KU1NWRy87CkBAIC0x
ODY0LDcgKzE4ODAsNiBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICB9CiAgICAgJHN0cnVjdHVy
ZUZsYWdzeyJKU0M6Ok5ld0ltcHVyZVByb3BlcnR5RmlyZXNXYXRjaHBvaW50cyJ9ID0gMSBpZiAk
aW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntOZXdJbXB1cmVQcm9wZXJ0eUZpcmVzV2F0
Y2hwb2ludHN9OwogICAgICRzdHJ1Y3R1cmVGbGFnc3siSlNDOjpJc0ltbXV0YWJsZVByb3RvdHlw
ZUV4b3RpY09iamVjdCJ9ID0gMSBpZiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntJ
c0ltbXV0YWJsZVByb3RvdHlwZUV4b3RpY09iamVjdH07Ci0gICAgJHN0cnVjdHVyZUZsYWdzeyJK
U0M6OlR5cGVPZlNob3VsZENhbGxHZXRDYWxsRGF0YSJ9ID0gMSBpZiAkaW50ZXJmYWNlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPntDdXN0b21DYWxsfTsKIAogICAgICMgR2V0dGVycwogICAgIGlmICgk
aGFzR2V0dGVyKSB7CkBAIC0xOTIwLDggKzE5MzUsMTIgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAg
ICAgIyBDdXN0b20gcHVzaEV2ZW50SGFuZGxlclNjb3BlIGZ1bmN0aW9uCiAgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIiAgICBKU0M6OkpTU2NvcGUqIHB1c2hFdmVudEhhbmRsZXJTY29wZShKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6SlNTY29wZSopIGNvbnN0O1xuXG4iKSBpZiAkaW50ZXJmYWNlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPntKU0N1c3RvbVB1c2hFdmVudEhhbmRsZXJTY29wZX07CiAKLSAg
ICAjIEN1c3RvbSBjYWxsIGZ1bmN0aW9ucwotICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAg
c3RhdGljIEpTQzo6Q2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDOjpKU0NlbGwqLCBKU0M6OkNhbGxE
YXRhJik7XG5cbiIpIGlmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbUNh
bGx9OworICAgICMgTGVnYWN5Q2FsbGVyIGFuZCBjdXN0b20gY2FsbCBmdW5jdGlvbnMKKyAgICBp
ZiAoSXNDYWxsYWJsZSgkaW50ZXJmYWNlKSkgeworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCAiICAgIHN0YXRpYyBKU0M6OkNhbGxUeXBlIGdldENhbGxEYXRhKEpTQzo6SlNDZWxsKiwgSlND
OjpDYWxsRGF0YSYpO1xuXG4iKTsKKyAgICAgICAgJGhlYWRlckluY2x1ZGVzeyI8cnVudGltZS9D
YWxsRGF0YS5oPiJ9ID0gMTsKKyAgICAgICAgJHN0cnVjdHVyZUZsYWdzeyJKU0M6OlR5cGVPZlNo
b3VsZENhbGxHZXRDYWxsRGF0YSJ9ID0gMTsKKyAgICB9CiAKICAgICAjIEN1c3RvbSBkZWxldGVQ
cm9wZXJ0eSBmdW5jdGlvbgogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIGJv
b2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJv
cGVydHlOYW1lKTtcbiIpIGlmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3Rv
bURlbGV0ZVByb3BlcnR5fTsKQEAgLTI1ODQsMTQgKzI2MDMsMTYgQEAgc3ViIGdldENvbmRpdGlv
bmFsRm9yRnVuY3Rpb25Db25zaWRlcmluZwogIyBodHRwOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJp
ZGwvI2VzLW92ZXJsb2Fkcwogc3ViIEdlbmVyYXRlT3ZlcmxvYWRlZEZ1bmN0aW9uT3JDb25zdHJ1
Y3RvcgogewotICAgIG15ICgkZnVuY3Rpb24sICRpbnRlcmZhY2UsICRpc0NvbnN0cnVjdG9yKSA9
IEBfOworICAgIG15ICgkZnVuY3Rpb24sICRpbnRlcmZhY2UsICR2YXJpYW50KSA9IEBfOwogICAg
IG15ICVhbGxTZXRzID0gQ29tcHV0ZUVmZmVjdGl2ZU92ZXJsb2FkU2V0KCRmdW5jdGlvbi0+e292
ZXJsb2Fkc30pOwogCiAgICAgbXkgJGludGVyZmFjZU5hbWUgPSAkaW50ZXJmYWNlLT50eXBlLT5u
YW1lOwogICAgIG15ICRjbGFzc05hbWUgPSAiSlMkaW50ZXJmYWNlTmFtZSI7CiAgICAgbXkgJGZ1
bmN0aW9uTmFtZTsKLSAgICBpZiAoJGlzQ29uc3RydWN0b3IpIHsKKyAgICBpZiAoJHZhcmlhbnQg
ZXEgImNvbnN0cnVjdG9yIikgewogICAgICAgICAkZnVuY3Rpb25OYW1lID0gImNvbnN0cnVjdCR7
Y2xhc3NOYW1lfSI7CisgICAgfSBlbHNpZiAoJHZhcmlhbnQgZXEgImxlZ2FjeWNhbGxlciIpIHsK
KyAgICAgICAgJGZ1bmN0aW9uTmFtZSA9ICJjYWxsJHtjbGFzc05hbWV9IjsKICAgICB9IGVsc2Ug
ewogICAgICAgICBteSAka2luZCA9ICRmdW5jdGlvbi0+aXNTdGF0aWMgPyAiQ29uc3RydWN0b3Ii
IDogKE9wZXJhdGlvblNob3VsZEJlT25JbnN0YW5jZSgkaW50ZXJmYWNlLCAkZnVuY3Rpb24pID8g
Ikluc3RhbmNlIiA6ICJQcm90b3R5cGUiKTsKICAgICAgICAgJGZ1bmN0aW9uTmFtZSA9ICJqcyR7
aW50ZXJmYWNlTmFtZX0ke2tpbmR9RnVuY3Rpb24iIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmly
c3QoJGZ1bmN0aW9uLT5uYW1lKTsKQEAgLTI2NzcsNyArMjY5OCw3IEBAIHN1YiBHZW5lcmF0ZU92
ZXJsb2FkZWRGdW5jdGlvbk9yQ29uc3RydWMKICAgICBteSAkY29uZGl0aW9uYWxBdHRyaWJ1dGUg
PSBnZXRDb25kaXRpb25hbEZvckZ1bmN0aW9uQ29uc2lkZXJpbmdPdmVybG9hZHMoJGZ1bmN0aW9u
KTsKICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29uZGl0aW9uYWxBdHRyaWJ1dGUgPyAk
Y29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZ0Zyb21BdHRyaWJ1dGVWYWx1
ZSgkY29uZGl0aW9uYWxBdHRyaWJ1dGUpIDogdW5kZWY7CiAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKLSAg
ICBpZiAoJGlzQ29uc3RydWN0b3IpIHsKKyAgICBpZiAoJHZhcmlhbnQgZXEgImNvbnN0cnVjdG9y
IikgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInRlbXBsYXRlPD4gRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCAke2NsYXNzTmFtZX1Db25zdHJ1Y3Rvcjo6Y29uc3RydWN0KEV4ZWNT
dGF0ZSogc3RhdGUpXG4iKTsKICAgICB9IGVsc2UgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgJHtmdW5jdGlvbk5hbWV9KEV4ZWNTdGF0
ZSogc3RhdGUpXG4iKTsKQEAgLTQyNTksMTYgKzQyODAsMTggQEAgRU5ECiAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiNlbmRpZlxuXG4iKSBpZiAkY29uZGl0aW9uYWw7CiAKICAgICAg
ICAgICAgICMgR2VuZXJhdGUgYSBmdW5jdGlvbiBkaXNwYXRjaGluZyBjYWxsIHRvIHRoZSByZXN0
IG9mIHRoZSBvdmVybG9hZHMuCi0gICAgICAgICAgICBHZW5lcmF0ZU92ZXJsb2FkZWRGdW5jdGlv
bk9yQ29uc3RydWN0b3IoJGZ1bmN0aW9uLCAkaW50ZXJmYWNlLCAwKSBpZiAhJGlzQ3VzdG9tICYm
ICRpc092ZXJsb2FkZWQgJiYgJGZ1bmN0aW9uLT57b3ZlcmxvYWRJbmRleH0gPT0gQHskZnVuY3Rp
b24tPntvdmVybG9hZHN9fTsKKyAgICAgICAgICAgIEdlbmVyYXRlT3ZlcmxvYWRlZEZ1bmN0aW9u
T3JDb25zdHJ1Y3RvcigkZnVuY3Rpb24sICRpbnRlcmZhY2UsICJvcGVyYXRpb24iKSBpZiAhJGlz
Q3VzdG9tICYmICRpc092ZXJsb2FkZWQgJiYgJGZ1bmN0aW9uLT57b3ZlcmxvYWRJbmRleH0gPT0g
QHskZnVuY3Rpb24tPntvdmVybG9hZHN9fTsKICAgICAgICAgfQogCiAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAkZW5kQXBwbGVDb3B5cmlnaHQpIGlmICRpbkFwcGxlQ29weXJpZ2h0OwogCiAg
ICAgfQogCisgICAgR2VuZXJhdGVMZWdhY3lDYWxsZXJEZWZpbml0aW9ucygkaW50ZXJmYWNlLCAk
Y2xhc3NOYW1lKTsKIAogICAgIEdlbmVyYXRlSW1wbGVtZW50YXRpb25JdGVyYWJsZUZ1bmN0aW9u
cygkaW50ZXJmYWNlKSBpZiAkaW50ZXJmYWNlLT5pdGVyYWJsZTsKICAgICBHZW5lcmF0ZVNlcmlh
bGl6ZXJGdW5jdGlvbigkaW50ZXJmYWNlLCAkY2xhc3NOYW1lKSBpZiAkaW50ZXJmYWNlLT5zZXJp
YWxpemFibGU7CisKICAgICBBZGRUb0ltcGxJbmNsdWRlcygiSlNET01NYXBMaWtlLmgiKSBpZiAk
aW50ZXJmYWNlLT5tYXBMaWtlOwogCiAgICAgaWYgKCRuZWVkc1Zpc2l0Q2hpbGRyZW4pIHsKQEAg
LTQ1NzMsNiArNDU5Niw2MiBAQCBzdWIgR2VuZXJhdGVTZXJpYWxpemVyRnVuY3Rpb24KICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIlxuIik7CiB9CiAKK3N1YiBHZW5lcmF0ZUxlZ2FjeUNhbGxlckRl
ZmluaXRpb25zCit7CisgICAgbXkgKCRpbnRlcmZhY2UsICRjbGFzc05hbWUpID0gQF87CisKKyAg
ICBpZiAoIUlzQ2FsbGFibGUoJGludGVyZmFjZSkgfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57Q3VzdG9tQ2FsbH0pIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG15
IEBsZWdhY3lDYWxsZXJzID0gQHskaW50ZXJmYWNlLT57TGVnYWN5Q2FsbGVyc319OworICAgIGlm
IChAbGVnYWN5Q2FsbGVycyA+IDEpIHsKKyAgICAgICAgZm9yZWFjaCBteSAkbGVnYWN5Q2FsbGVy
IChAbGVnYWN5Q2FsbGVycykgeworICAgICAgICAgICAgR2VuZXJhdGVMZWdhY3lDYWxsZXJEZWZp
bml0aW9uKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRsZWdhY3lDYWxsZXIpOworICAgICAgICB9
CisgICAgICAgIEdlbmVyYXRlT3ZlcmxvYWRlZEZ1bmN0aW9uT3JDb25zdHJ1Y3RvcigkbGVnYWN5
Q2FsbGVyc1swXSwgJGludGVyZmFjZSwgImxlZ2FjeWNhbGxlciIpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIEdlbmVyYXRlTGVnYWN5Q2FsbGVyRGVmaW5pdGlvbigkaW50ZXJmYWNlLCAkY2xhc3NO
YW1lLCAkbGVnYWN5Q2FsbGVyc1swXSk7CisgICAgfQorCisgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJDYWxsVHlwZSAke2NsYXNzTmFtZX06OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJiBj
YWxsRGF0YSlcbiIpOworICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CisgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY2FsbCR7Y2xhc3NO
YW1lfTtcbiIpOworICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBDYWxsVHlwZTo6
SG9zdDtcbiIpOworICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuIik7CisgICAgcHVzaChAaW1w
bENvbnRlbnQsICJcbiIpOworfQorCitzdWIgR2VuZXJhdGVMZWdhY3lDYWxsZXJEZWZpbml0aW9u
Cit7CisgICAgbXkgKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRmdW5jdGlvbikgPSBAXzsKKwor
ICAgIG15ICRpc092ZXJsb2FkZWQgPSAkZnVuY3Rpb24tPntvdmVybG9hZHN9ICYmIEB7JGZ1bmN0
aW9uLT57b3ZlcmxvYWRzfX0gPiAxOworICAgIGlmICgkaXNPdmVybG9hZGVkKSB7CisgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAic3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjYWxsJHtj
bGFzc05hbWV9JGZ1bmN0aW9uLT57b3ZlcmxvYWRJbmRleH0oRXhlY1N0YXRlKiBzdGF0ZSlcbiIp
OworICAgIH0gZWxzZSB7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAic3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbCR7Y2xhc3NOYW1lfShFeGVjU3RhdGUqIHN0YXRl
KVxuIik7CisgICAgfQorCisgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKKyAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTtcbiIpOworICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pO1xuIik7CisgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5VU0VEX1BBUkFNKHRocm93
U2NvcGUpO1xuIik7CisKKyAgICBHZW5lcmF0ZUFyZ3VtZW50c0NvdW50Q2hlY2soXEBpbXBsQ29u
dGVudCwgJGZ1bmN0aW9uLCAkaW50ZXJmYWNlKTsKKworICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8JHtjbGFzc05hbWV9Kj4oc3RhdGUtPmpzQ2Fs
bGVlKCkpO1xuIik7CisgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQVNTRVJUKGNhc3RlZFRo
aXMpO1xuIik7CisgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTtcbiIpOworCisgICAgbXkgJGZ1bmN0aW9uSW1wbGVtZW50YXRpb25O
YW1lID0gJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntJbXBsZW1lbnRlZEFzfSB8fCAk
Y29kZUdlbmVyYXRvci0+V0tfbGNmaXJzdCgkZnVuY3Rpb24tPm5hbWUpIHx8ICJsZWdhY3lDYWxs
ZXJPcGVyYXRpb25Gcm9tQmluZGluZ3MiOworICAgIG15ICRmdW5jdGlvblN0cmluZyA9IEdlbmVy
YXRlUGFyYW1ldGVyc0NoZWNrKFxAaW1wbENvbnRlbnQsICRmdW5jdGlvbiwgJGludGVyZmFjZSwg
JGZ1bmN0aW9uSW1wbGVtZW50YXRpb25OYW1lKTsKKworICAgIEdlbmVyYXRlSW1wbGVtZW50YXRp
b25GdW5jdGlvbkNhbGwoJGZ1bmN0aW9uLCAkZnVuY3Rpb25TdHJpbmcsICIgICAgIiwgJGludGVy
ZmFjZSk7CisKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7Cit9CisKIHN1YiBHZW5l
cmF0ZUNhbGxXaXRoVXNpbmdSZWZlcmVuY2VzCiB7CiAgICAgbXkgKCRjYWxsV2l0aCwgJG91dHB1
dEFycmF5LCAkcmV0dXJuVmFsdWUsICRmdW5jdGlvbikgPSBAXzsKQEAgLTUxOTMsNyArNTI3Miw4
IEBAIHN1YiBHZW5lcmF0ZUNhbGxiYWNrSW1wbGVtZW50YXRpb25Db250ZW4KIAogICAgICAgICBH
ZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbnMoJGNvbnRlbnRSZWYsICRjbGFzc05hbWUsICIi
LCAkdmlzaWJsZU5hbWUsICRpbnRlcmZhY2VPckNhbGxiYWNrKTsKIAotICAgICAgICBwdXNoKEAk
Y29udGVudFJlZiwgIkpTVmFsdWUgJHtjbGFzc05hbWV9OjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0s
IGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpXG57XG4iKTsKKyAgICAgICAgcHVz
aChAJGNvbnRlbnRSZWYsICJKU1ZhbHVlICR7Y2xhc3NOYW1lfTo6Z2V0Q29uc3RydWN0b3IoVk0m
IHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KVxuIik7CisgICAgICAgIHB1
c2goQCRjb250ZW50UmVmLCAie1xuIik7CiAgICAgICAgIHB1c2goQCRjb250ZW50UmVmLCAiICAg
IHJldHVybiBnZXRET01Db25zdHJ1Y3Rvcjwke2NsYXNzTmFtZX1Db25zdHJ1Y3Rvcj4odm0sICpq
c0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTtcbiIpOwogICAg
ICAgICBwdXNoKEAkY29udGVudFJlZiwgIn1cblxuIik7CiAgICAgfQpAQCAtNTI1Nyw3ICs1MzM3
LDcgQEAgc3ViIEdlbmVyYXRlQ2FsbGJhY2tJbXBsZW1lbnRhdGlvbkNvbnRlbgogICAgIHB1c2go
QCRjb250ZW50UmVmLCAifVxuXG4iKTsKIH0KIAotc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb25G
dW5jdGlvbkNhbGwoKQorc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb25GdW5jdGlvbkNhbGwKIHsK
ICAgICBteSAoJGZ1bmN0aW9uLCAkZnVuY3Rpb25TdHJpbmcsICRpbmRlbnQsICRpbnRlcmZhY2Up
ID0gQF87CiAKQEAgLTYxNzgsNyArNjI1OCw3IEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVm
aW5pdGlvbnMKICAgICAgICAgICAgIGZvcmVhY2ggbXkgJGNvbnN0cnVjdG9yIChAY29uc3RydWN0
b3JzKSB7CiAgICAgICAgICAgICAgICAgR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb24oJG91
dHB1dEFycmF5LCAkY2xhc3NOYW1lLCAkcHJvdG9DbGFzc05hbWUsICR2aXNpYmxlSW50ZXJmYWNl
TmFtZSwgJGludGVyZmFjZSwgJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yLCAkY29uc3RydWN0
b3IpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgR2VuZXJhdGVPdmVybG9hZGVkRnVuY3Rp
b25PckNvbnN0cnVjdG9yKEB7JGludGVyZmFjZS0+Y29uc3RydWN0b3JzfVswXSwgJGludGVyZmFj
ZSwgMSk7CisgICAgICAgICAgICBHZW5lcmF0ZU92ZXJsb2FkZWRGdW5jdGlvbk9yQ29uc3RydWN0
b3IoQHskaW50ZXJmYWNlLT5jb25zdHJ1Y3RvcnN9WzBdLCAkaW50ZXJmYWNlLCAiY29uc3RydWN0
b3IiKTsKICAgICAgICAgfSBlbHNpZiAoQGNvbnN0cnVjdG9ycyA9PSAxKSB7CiAgICAgICAgICAg
ICBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbigkb3V0cHV0QXJyYXksICRjbGFzc05hbWUs
ICRwcm90b0NsYXNzTmFtZSwgJHZpc2libGVJbnRlcmZhY2VOYW1lLCAkaW50ZXJmYWNlLCAkZ2Vu
ZXJhdGluZ05hbWVkQ29uc3RydWN0b3IsICRjb25zdHJ1Y3RvcnNbMF0pOwogICAgICAgICB9IGVs
c2UgewpAQCAtNjM3Niw2ICs2NDU2LDEyIEBAIHN1YiBJc0NvbnN0cnVjdGFibGUKICAgICAgICAg
fHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57SlNCdWlsdGluQ29uc3RydWN0b3J9
OwogfQogCitzdWIgSXNDYWxsYWJsZQoreworICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKKyAg
ICByZXR1cm4gJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tQ2FsbH0gfHwg
JGludGVyZmFjZS0+e0xlZ2FjeUNhbGxlcnN9Cit9CisKIHN1YiBIZWFkZXJOZWVkc1Byb3RvdHlw
ZURlY2xhcmF0aW9uCiB7CiAgICAgbXkgJGludGVyZmFjZSA9IHNoaWZ0OwpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0JKHJldmlzaW9uIDIxNjg0
OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAotIyAKKyMKICMgS0RPTSBJREwgcGFyc2VyCiAjCiAj
IENvcHlyaWdodCAoQykgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4K
QEAgLTI2LDYgKzI2LDggQEAgdXNlIHN0cmljdDsKIHVzZSBDYXJwIHF3PGxvbmdtZXNzPjsKIHVz
ZSBEYXRhOjpEdW1wZXI7CiAKK3VzZSBDbG9uZTsKKwogdXNlIHByZXByb2Nlc3NvcjsKIHVzZSBD
bGFzczo6U3RydWN0OwogCkBAIC01MTEsMjUgKzUxMyw2IEBAIHN1YiBtYWtlU2ltcGxlVHlwZQog
ICAgIHJldHVybiBJRExUeXBlLT5uZXcobmFtZSA9PiAkdHlwZU5hbWUpOwogfQogCi1zdWIgY2xv
bmVUeXBlCi17Ci0gICAgbXkgJHNlbGYgPSBzaGlmdDsKLSAgICBteSAkdHlwZSA9IHNoaWZ0Owot
Ci0gICAgbXkgJGNsb25lZFR5cGUgPSBJRExUeXBlLT5uZXcoKTsKLSAgICAkY2xvbmVkVHlwZS0+
bmFtZSgkdHlwZS0+bmFtZSk7Ci0gICAgJGNsb25lZFR5cGUtPmlzTnVsbGFibGUoJHR5cGUtPmlz
TnVsbGFibGUpOwotICAgICRjbG9uZWRUeXBlLT5pc1VuaW9uKCR0eXBlLT5pc1VuaW9uKTsKLQot
ICAgIGNvcHlFeHRlbmRlZEF0dHJpYnV0ZXMoJGNsb25lZFR5cGUtPmV4dGVuZGVkQXR0cmlidXRl
cywgJHR5cGUtPmV4dGVuZGVkQXR0cmlidXRlcyk7Ci0KLSAgICBmb3JlYWNoIG15ICRzdWJ0eXBl
IChAeyR0eXBlLT5zdWJ0eXBlc30pIHsKLSAgICAgICAgcHVzaChAeyRjbG9uZWRUeXBlLT5zdWJ0
eXBlc30sICRzZWxmLT5jbG9uZVR5cGUoJHN1YnR5cGUpKTsKLSAgICB9Ci0KLSAgICByZXR1cm4g
JGNsb25lZFR5cGU7Ci19Ci0KIG15ICRuZXh0QXR0cmlidXRlXzEgPSAnXihhdHRyaWJ1dGV8aW5o
ZXJpdCkkJzsKIG15ICRuZXh0UHJpbWl0aXZlVHlwZV8xID0gJ14oaW50fGxvbmd8c2hvcnR8dW5z
aWduZWQpJCc7CiBteSAkbmV4dFByaW1pdGl2ZVR5cGVfMiA9ICdeKGRvdWJsZXxmbG9hdHx1bnJl
c3RyaWN0ZWQpJCc7CkBAIC02NDUsNyArNjI4LDcgQEAgc3ViIHR5cGVCeUFwcGx5aW5nVHlwZWRl
ZnMKICAgICBpZiAoZXhpc3RzICR0eXBlZGVmc3skdHlwZS0+bmFtZX0pIHsKICAgICAgICAgbXkg
JHR5cGVkZWYgPSAkdHlwZWRlZnN7JHR5cGUtPm5hbWV9OwogCi0gICAgICAgIG15ICRjbG9uZWRU
eXBlID0gJHNlbGYtPmNsb25lVHlwZSgkdHlwZWRlZi0+dHlwZSk7CisgICAgICAgIG15ICRjbG9u
ZWRUeXBlID0gQ2xvbmU6OmNsb25lKCR0eXBlZGVmLT50eXBlKTsKICAgICAgICAgJGNsb25lZFR5
cGUtPmlzTnVsbGFibGUoJGNsb25lZFR5cGUtPmlzTnVsbGFibGUgfHwgJHR5cGUtPmlzTnVsbGFi
bGUpOwogICAgICAgICAkc2VsZi0+bW92ZUV4dGVuZGVkQXR0cmlidXRlc0FwcGxpY2FibGVUb1R5
cGVzKCRjbG9uZWRUeXBlLCAkdHlwZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKTsKIApJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAkocmV2
aXNpb24gMjE2ODQ4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rl
c3RPYmouaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00MzMsNiArNDMzLDEwIEBAIGVudW0gVGVzdENv
bmZpZGVuY2UgeyAiaGlnaCIsICJraW5kYS1sb3cKICAgICBzZXJpYWxpemVyID0ge2NyZWF0ZSwg
cmVhZE9ubHlTdHJpbmdBdHRyLCBlbnVtQXR0ciwgbG9uZ0F0dHJ9OwogCiAgICAgdm9pZCBidWZm
ZXJTb3VyY2VQYXJhbWV0ZXIoQnVmZmVyU291cmNlIGRhdGEpOworICAgIAorICAgIGxlZ2FjeWNh
bGxlciB2b2lkIGxlZ2FjeUNhbGxlck5hbWVkKGxvbmcgcGFyYW0pOworICAgIGxlZ2FjeWNhbGxl
ciBsb25nIChET01TdHJpbmcgcGFyYW0pOworICAgIGxlZ2FjeWNhbGxlciB2b2lkICgpOwogfTsK
IAogLy8gVGhlIGZvbGxvd2luZyBjb21tZW50IHNob3VsZCBub3QgZ2VuZXJhdGUgYW55IGNvZGUu
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2Jq
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T2JqLmNwcAkocmV2aXNpb24gMjE2ODQ4KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEy
NjAsNiArMTI2MCw3IEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3QK
IEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbkF0dGFjaFNoYWRvd1Jvb3QoSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9wZXJhdGlvbldpdGhF
eHRlcm5hbERpY3Rpb25hcnlQYXJhbWV0ZXIoSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ1ZmZlclNv
dXJjZVBhcmFtZXRlcihKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTGVnYWN5Q2FsbGVyTmFtZWQoSlND
OjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Ub0pTT04o
SlNDOjpFeGVjU3RhdGUqKTsKIApAQCAtMTkyMiw2ICsxOTIzLDcgQEAgc3RhdGljIGNvbnN0IEhh
c2hUYWJsZVZhbHVlIEpTVGVzdE9ialBybwogICAgIHsgImF0dGFjaFNoYWRvd1Jvb3QiLCBKU0M6
OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVu
Y3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQXR0YWNoU2hhZG93Um9vdCksIChpbnRw
dHJfdCkgKDEpIH0gfSwKICAgICB7ICJvcGVyYXRpb25XaXRoRXh0ZXJuYWxEaWN0aW9uYXJ5UGFy
YW1ldGVyIiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9wZXJhdGlvbldp
dGhFeHRlcm5hbERpY3Rpb25hcnlQYXJhbWV0ZXIpLCAoaW50cHRyX3QpICgxKSB9IH0sCiAgICAg
eyAiYnVmZmVyU291cmNlUGFyYW1ldGVyIiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkJ1ZmZlclNvdXJjZVBhcmFtZXRlciksIChpbnRwdHJfdCkgKDEpIH0gfSwKKyAgICB7
ICJsZWdhY3lDYWxsZXJOYW1lZCIsIEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25MZWdhY3lDYWxsZXJOYW1lZCksIChpbnRwdHJfdCkgKDEpIH0gfSwKICAgICB7ICJ0b1N0cmlu
ZyIsIEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxO
YXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZyksIChpbnRw
dHJfdCkgKDApIH0gfSwKICAgICB7ICJ0b0pTT04iLCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uVG9KU09OKSwgKGludHB0cl90KSAoMCkgfSB9LAogI2lmIEVOQUJMRShDb25k
aXRpb24xKQpAQCAtODc2Myw2ICs4NzY1LDI2IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogfQogCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25MZWdhY3lDYWxsZXJOYW1lZENhbGxlcihKU0M6OkV4ZWNTdGF0ZSosIEpTVGVz
dE9iaiosIEpTQzo6VGhyb3dTY29wZSYpOworCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTGVnYWN5Q2FsbGVyTmFtZWQoRXhlY1N0YXRlKiBz
dGF0ZSkKK3sKKyAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjpjYWxsT3BlcmF0
aW9uPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTGVnYWN5Q2FsbGVyTmFtZWRDYWxsZXI+KHN0
YXRlLCAibGVnYWN5Q2FsbGVyTmFtZWQiKTsKK30KKworc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTGVnYWN5Q2FsbGVyTmFtZWRDYWxs
ZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMsIEpTQzo6VGhy
b3dTY29wZSYgdGhyb3dTY29wZSkKK3sKKyAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOworICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCisg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgYXV0byBwYXJhbSA9IGNvbnZlcnQ8SURM
TG9uZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOworICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgaW1wbC5sZWdh
Y3lDYWxsZXJOYW1lZChXVEZNb3ZlKHBhcmFtKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKK30KKwogc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmdDYWxsZXIoSlNDOjpFeGVjU3RhdGUq
LCBKU1Rlc3RPYmoqLCBKU0M6OlRocm93U2NvcGUmKTsKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKEV4ZWNTdGF0ZSogc3Rh
dGUpCkBAIC04Nzc4LDYgKzg4MDAsNzMgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVU1ZTdHJpbmc+
KCpzdGF0ZSwgaW1wbC5zdHJpbmdpZmllckF0dHJpYnV0ZSgpKSk7CiB9CiAKK3N0YXRpYyBpbmxp
bmUgRW5jb2RlZEpTVmFsdWUgY2FsbEpTVGVzdE9iajEoRXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAg
ICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CisgICAgaWYgKFVO
TElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
c3RhdGUpKTsKKyAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+KHN0YXRl
LT5qc0NhbGxlZSgpKTsKKyAgICBBU1NFUlQoY2FzdGVkVGhpcyk7CisgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKKyAgICBhdXRvIHBhcmFtID0gY29udmVydDxJRExMb25n
Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CisgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICBpbXBsLmxlZ2FjeUNh
bGxlck5hbWVkKFdURk1vdmUocGFyYW0pKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOworfQorCitzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGNhbGxKU1Rl
c3RPYmoyKEV4ZWNTdGF0ZSogc3RhdGUpCit7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7Cisg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VE
X1BBUkFNKHRocm93U2NvcGUpOworICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3Vu
dCgpIDwgMSkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgYXV0byogY2FzdGVk
VGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihzdGF0ZS0+anNDYWxsZWUoKSk7CisgICAgQVNTRVJU
KGNhc3RlZFRoaXMpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Cisg
ICAgYXV0byBwYXJhbSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqc3RhdGUsIHN0YXRlLT51bmNo
ZWNrZWRBcmd1bWVudCgwKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMTG9u
Zz4oaW1wbC5sZWdhY3lDYWxsZXJPcGVyYXRpb25Gcm9tQmluZGluZ3MoV1RGTW92ZShwYXJhbSkp
KSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY2FsbEpTVGVzdE9iajMoRXhl
Y1N0YXRlKiBzdGF0ZSkKK3sKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CisgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihzdGF0
ZS0+anNDYWxsZWUoKSk7CisgICAgQVNTRVJUKGNhc3RlZFRoaXMpOworICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CisgICAgaW1wbC5sZWdhY3lDYWxsZXJPcGVyYXRpb25G
cm9tQmluZGluZ3MoKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxKU1Rlc3RPYmooRXhlY1N0
YXRlKiBzdGF0ZSkKK3sKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7CisgICAgc2l6ZV90IGFyZ3NDb3VudCA9IHN0ZDo6bWluPHNpemVfdD4oMSwgc3RhdGUt
PmFyZ3VtZW50Q291bnQoKSk7CisgICAgaWYgKGFyZ3NDb3VudCA9PSAwKSB7CisgICAgICAgIHJl
dHVybiBjYWxsSlNUZXN0T2JqMyhzdGF0ZSk7CisgICAgfQorICAgIGlmIChhcmdzQ291bnQgPT0g
MSkgeworICAgICAgICBKU1ZhbHVlIGRpc3Rpbmd1aXNoaW5nQXJnID0gc3RhdGUtPnVuY2hlY2tl
ZEFyZ3VtZW50KDApOworICAgICAgICBpZiAoZGlzdGluZ3Vpc2hpbmdBcmcuaXNOdW1iZXIoKSkK
KyAgICAgICAgICAgIHJldHVybiBjYWxsSlNUZXN0T2JqMShzdGF0ZSk7CisgICAgICAgIHJldHVy
biBjYWxsSlNUZXN0T2JqMihzdGF0ZSk7CisgICAgfQorICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKK30KKworQ2FsbFR5cGUgSlNUZXN0T2JqOjpnZXRDYWxs
RGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCit7CisgICAgY2FsbERhdGEubmF0aXZl
LmZ1bmN0aW9uID0gY2FsbEpTVGVzdE9iajsKKyAgICByZXR1cm4gQ2FsbFR5cGU6Okhvc3Q7Cit9
CisKIEpTQzo6SlNPYmplY3QqIEpTVGVzdE9iajo6c2VyaWFsaXplKEV4ZWNTdGF0ZSogc3RhdGUs
IEpTVGVzdE9iaiogdGhpc09iamVjdCwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBh
dXRvJiB2bSA9IHN0YXRlLT52bSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaAkocmV2aXNpb24gMjE2ODQ4KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSAiSlNET01Db252ZXJ0LmgiCiAj
aW5jbHVkZSAiSlNET01XcmFwcGVyLmgiCiAjaW5jbHVkZSAiVGVzdE9iai5oIgorI2luY2x1ZGUg
PHJ1bnRpbWUvQ2FsbERhdGEuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTEsNiArNTIsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwg
SlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsK
ICAgICB9CiAKKyAgICBzdGF0aWMgSlNDOjpDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0M6OkpTQ2Vs
bCosIEpTQzo6Q2FsbERhdGEmKTsKKwogICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFt
ZXMoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJh
eSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlID0gSlNDOjpFbnVtZXJhdGlvbk1vZGUoKSk7CiAgICAg
c3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpK
U0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBzZXJpYWxpemUoSlND
OjpFeGVjU3RhdGUqLCBKU1Rlc3RPYmoqIHRoaXNPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYpOwpA
QCAtNjksNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBjbGFzc01l
dGhvZDIoSlNDOjpFeGVjU3RhdGUmKTsKICAgICBKU0M6OkpTVmFsdWUgdGVzdEN1c3RvbVByb21p
c2VGdW5jdGlvbihKU0M6OkV4ZWNTdGF0ZSYpOwogcHVibGljOgotICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEpTQzo6SGFzU3RhdGljUHJvcGVydHlUYWJsZSB8IEpT
Qzo6SW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90
WmVybyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpPdmVycmlkZXNH
ZXRQcm9wZXJ0eU5hbWVzIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CisgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gSlNDOjpIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlIHwg
SlNDOjpJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNO
b3RaZXJvIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6Ok92ZXJyaWRl
c0dldFByb3BlcnR5TmFtZXMgfCBKU0M6OlR5cGVPZlNob3VsZENhbGxHZXRDYWxsRGF0YSB8IEJh
c2U6OlN0cnVjdHVyZUZsYWdzOwogcHJvdGVjdGVkOgogICAgIEpTVGVzdE9iaihKU0M6OlN0cnVj
dHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRlc3RPYmo+JiYpOwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDIxNjg0OCkKKysrIFNvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5NzksNiArNDk3OSwxMSBAQCBSZWY8
SFRNTENvbGxlY3Rpb24+IERvY3VtZW50OjphbGwoKQogICAgIHJldHVybiBlbnN1cmVSYXJlRGF0
YSgpLmVuc3VyZU5vZGVMaXN0cygpLmFkZENhY2hlZENvbGxlY3Rpb248SFRNTEFsbENvbGxlY3Rp
b24+KCp0aGlzLCBEb2NBbGwpOwogfQogCitSZWY8SFRNTENvbGxlY3Rpb24+IERvY3VtZW50Ojph
bGxGaWx0ZXJlZEJ5TmFtZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCit7CisgICAgcmV0dXJu
IGVuc3VyZVJhcmVEYXRhKCkuZW5zdXJlTm9kZUxpc3RzKCkuYWRkQ2FjaGVkQ29sbGVjdGlvbjxI
VE1MQWxsTmFtZWRTdWJDb2xsZWN0aW9uPigqdGhpcywgRG9jdW1lbnRBbGxOYW1lZEl0ZW1zLCBu
YW1lKTsKK30KKwogUmVmPEhUTUxDb2xsZWN0aW9uPiBEb2N1bWVudDo6d2luZG93TmFtZWRJdGVt
cyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCiB7CiAgICAgcmV0dXJuIGVuc3VyZVJhcmVEYXRh
KCkuZW5zdXJlTm9kZUxpc3RzKCkuYWRkQ2FjaGVkQ29sbGVjdGlvbjxXaW5kb3dOYW1lQ29sbGVj
dGlvbj4oKnRoaXMsIFdpbmRvd05hbWVkSXRlbXMsIG5hbWUpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmgJKHJldmlzaW9uIDIxNjg0OCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC00NjQsOSArNDY0LDEwIEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCBSZWY8SFRNTENvbGxlY3Rpb24+IGFuY2hvcnMoKTsKICAgICBXRUJDT1JFX0VYUE9S
VCBSZWY8SFRNTENvbGxlY3Rpb24+IHNjcmlwdHMoKTsKICAgICBSZWY8SFRNTENvbGxlY3Rpb24+
IGFsbCgpOworICAgIFJlZjxIVE1MQ29sbGVjdGlvbj4gYWxsRmlsdGVyZWRCeU5hbWUoY29uc3Qg
QXRvbWljU3RyaW5nJik7CiAKLSAgICBSZWY8SFRNTENvbGxlY3Rpb24+IHdpbmRvd05hbWVkSXRl
bXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKTsKLSAgICBSZWY8SFRNTENvbGxlY3Rpb24+IGRv
Y3VtZW50TmFtZWRJdGVtcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpOworICAgIFJlZjxIVE1M
Q29sbGVjdGlvbj4gd2luZG93TmFtZWRJdGVtcyhjb25zdCBBdG9taWNTdHJpbmcmKTsKKyAgICBS
ZWY8SFRNTENvbGxlY3Rpb24+IGRvY3VtZW50TmFtZWRJdGVtcyhjb25zdCBBdG9taWNTdHJpbmcm
KTsKIAogICAgIC8vIE90aGVyIG1ldGhvZHMgKG5vdCBwYXJ0IG9mIERPTSkKICAgICBib29sIGlz
U3ludGhlc2l6ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzU3ludGhlc2l6ZWQ7IH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2h0bWwvQ2FjaGVkSFRNTENvbGxlY3Rpb24uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL0NhY2hlZEhUTUxDb2xsZWN0aW9uLmgJKHJldmlzaW9uIDIxNjg0
OCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvQ2FjaGVkSFRNTENvbGxlY3Rpb24uaAkod29ya2lu
ZyBjb3B5KQpAQCAtOTcsMTUgKzk3LDIyIEBAIGJvb2wgQ2FjaGVkSFRNTENvbGxlY3Rpb248SFRN
TENvbGxlY3Rpb24KIAogc3RhdGljIGlubGluZSBib29sIG5hbWVTaG91bGRCZVZpc2libGVJbkRv
Y3VtZW50QWxsKEhUTUxFbGVtZW50JiBlbGVtZW50KQogewotICAgIC8vIFRoZSBkb2N1bWVudC5h
bGwgY29sbGVjdGlvbiByZXR1cm5zIG9ubHkgY2VydGFpbiB0eXBlcyBvZiBlbGVtZW50cyBieSBu
YW1lLAotICAgIC8vIGFsdGhvdWdoIGl0IHJldHVybnMgYW55IHR5cGUgb2YgZWxlbWVudCBieSBp
ZC4KLSAgICByZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6YXBwbGV0VGFnKQor
ICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2luZnJhc3RydWN0
dXJlLmh0bWwjYWxsLW5hbWVkLWVsZW1lbnRzCisgICAgcmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFt
ZShIVE1MTmFtZXM6OmFUYWcpCisgICAgICAgIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFt
ZXM6OiAgICkKKyAgICAgICAgfHwgZWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6YnV0dG9u
VGFnKQogICAgICAgICB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjplbWJlZFRhZykK
ICAgICAgICAgfHwgZWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6Zm9ybVRhZykKKyAgICAg
ICAgfHwgZWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6ZnJhbWVUYWcpCisgICAgICAgIHx8
IGVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6OmZyYW1lc2V0VGFnKQorICAgICAgICB8fCBl
bGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjppZnJhbWVUYWcpCiAgICAgICAgIHx8IGVsZW1l
bnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6OmltZ1RhZykKICAgICAgICAgfHwgZWxlbWVudC5oYXNU
YWdOYW1lKEhUTUxOYW1lczo6aW5wdXRUYWcpCisgICAgICAgIHx8IGVsZW1lbnQuaGFzVGFnTmFt
ZShIVE1MTmFtZXM6Om1hcFRhZykKKyAgICAgICAgfHwgZWxlbWVudC5oYXNUYWdOYW1lKEhUTUxO
YW1lczo6bWV0YVRhZykKICAgICAgICAgfHwgZWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6
b2JqZWN0VGFnKQotICAgICAgICB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpzZWxl
Y3RUYWcpOworICAgICAgICB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpzZWxlY3RU
YWcpCisgICAgICAgIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6OnRleHRhcmVhVGFn
KTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIG5hbWVTaG91bGRCZVZpc2libGVJbkRvY3VtZW50
QWxsKEVsZW1lbnQmIGVsZW1lbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0NvbGxlY3Rp
b25UeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9Db2xsZWN0aW9uVHlw
ZS5oCShyZXZpc2lvbiAyMTY4NDgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0NvbGxlY3Rpb25U
eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDggQEAgZW51bSBDb2xsZWN0aW9uVHlw
ZSB7CiAgICAgV2luZG93TmFtZWRJdGVtcywKICAgICBEb2N1bWVudE5hbWVkSXRlbXMsCiAKKyAg
ICBEb2N1bWVudEFsbE5hbWVkSXRlbXMsIC8vIFN1Yi1jb2xsZWN0aW9uIHJldHVybmVkIGJ5IHRo
ZSAiYWxsIiBjb2xsZWN0aW9uIHdoZW4gdGhlcmUgYXJlIG11bHRpcGxlIGl0ZW1zIHdpdGggdGhl
IHNhbWUgbmFtZQorCiAgICAgLy8gVW5uYW1lZCBIVE1MQ29sbGVjdGlvbiB0eXBlcyBjYWNoZWQg
aW4gZWxlbWVudHMuCiAgICAgTm9kZUNoaWxkcmVuLCAvLyBmaXJzdC1sZXZlbCBjaGlsZHJlbiAo
SUUpCiAgICAgVGFibGVUQm9kaWVzLCAvLyBhbGwgPHRib2R5PiBlbGVtZW50cyBpbiB0aGlzIHRh
YmxlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0dlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlv
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9HZW5lcmljQ2FjaGVkSFRN
TENvbGxlY3Rpb24uY3BwCShyZXZpc2lvbiAyMTY4NDgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L0dlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3LDYg
Kzc3LDcgQEAgYm9vbCBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb248dHJhdmVycwogICAgIGNh
c2UgQnlIVE1MVGFnOgogICAgIGNhc2UgQWxsRGVzY2VuZGFudHM6CiAgICAgY2FzZSBEb2NBbGw6
CisgICAgY2FzZSBEb2N1bWVudEFsbE5hbWVkSXRlbXM6CiAgICAgY2FzZSBEb2N1bWVudE5hbWVk
SXRlbXM6CiAgICAgY2FzZSBGb3JtQ29udHJvbHM6CiAgICAgY2FzZSBTZWxlY3RPcHRpb25zOgpJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5jcHAJKHJldmlzaW9u
IDIxNjg0OCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFsbENvbGxlY3Rpb24uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw4IEBACiAjaW5jbHVkZSAiSFRNTEFsbENvbGxlY3Rp
b24uaCIKIAogI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJOb2RlUmFyZURhdGEuaCIK
KyNpbmNsdWRlIDxydW50aW1lL0lkZW50aWZpZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC00MCwyMyArNDIsNTAgQEAgaW5saW5lIEhUTUxBbGxDb2xsZWN0aW9uOjpIVE1MQWxsQ29s
bGVjdAogewogfQogCi1FbGVtZW50KiBIVE1MQWxsQ29sbGVjdGlvbjo6bmFtZWRJdGVtV2l0aElu
ZGV4KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgdW5zaWduZWQgaW5kZXgpIGNvbnN0CisvLyBo
dHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9pbmZyYXN0cnVjdHVyZS5odG1s
I2RvbS1odG1sYWxsY29sbGVjdGlvbi1pdGVtCitzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8UmVmUHRy
PEhUTUxDb2xsZWN0aW9uPiwgUmVmUHRyPEVsZW1lbnQ+Pj4gSFRNTEFsbENvbGxlY3Rpb246Om5h
bWVkT3JJbmRleGVkSXRlbU9ySXRlbXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lT3JJbmRleCkg
Y29uc3QKIHsKLSAgICB1cGRhdGVOYW1lZEVsZW1lbnRDYWNoZSgpOwotICAgIGNvbnN0IENvbGxl
Y3Rpb25OYW1lZEVsZW1lbnRDYWNoZSYgY2FjaGUgPSBuYW1lZEl0ZW1DYWNoZXMoKTsKKyAgICBp
ZiAobmFtZU9ySW5kZXguaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
LSAgICBpZiAoY29uc3QgVmVjdG9yPEVsZW1lbnQqPiogZWxlbWVudHMgPSBjYWNoZS5maW5kRWxl
bWVudHNXaXRoSWQobmFtZSkpIHsKLSAgICAgICAgaWYgKGluZGV4IDwgZWxlbWVudHMtPnNpemUo
KSkKLSAgICAgICAgICAgIHJldHVybiBlbGVtZW50cy0+YXQoaW5kZXgpOwotICAgICAgICBpbmRl
eCAtPSBlbGVtZW50cy0+c2l6ZSgpOwotICAgIH0KLQotICAgIGlmIChjb25zdCBWZWN0b3I8RWxl
bWVudCo+KiBlbGVtZW50cyA9IGNhY2hlLmZpbmRFbGVtZW50c1dpdGhOYW1lKG5hbWUpKSB7Ci0g
ICAgICAgIGlmIChpbmRleCA8IGVsZW1lbnRzLT5zaXplKCkpCi0gICAgICAgICAgICByZXR1cm4g
ZWxlbWVudHMtPmF0KGluZGV4KTsKLSAgICB9CisgICAgaWYgKGF1dG8gaW5kZXggPSBKU0M6OnBh
cnNlSW5kZXgoKm5hbWVPckluZGV4LmltcGwoKSkpCisgICAgICAgIHJldHVybiBWYXJpYW50PFJl
ZlB0cjxIVE1MQ29sbGVjdGlvbj4sIFJlZlB0cjxFbGVtZW50Pj4geyBSZWZQdHI8RWxlbWVudD4g
eyBpdGVtKGluZGV4LnZhbHVlKCkpIH0gfTsKIAotICAgIHJldHVybiBudWxscHRyOworICAgIHJl
dHVybiBuYW1lZEl0ZW1Pckl0ZW1zKG5hbWVPckluZGV4KTsKK30KKworLy8gaHR0cHM6Ly9odG1s
LnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvaW5mcmFzdHJ1Y3R1cmUuaHRtbCNjb25jZXB0LWdl
dC1hbGwtbmFtZWQKK3N0ZDo6b3B0aW9uYWw8VmFyaWFudDxSZWZQdHI8SFRNTENvbGxlY3Rpb24+
LCBSZWZQdHI8RWxlbWVudD4+PiBIVE1MQWxsQ29sbGVjdGlvbjo6bmFtZWRJdGVtT3JJdGVtcyhj
b25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0Cit7CisgICAgYXV0byBuYW1lZEl0ZW1zID0g
dGhpcy0+bmFtZWRJdGVtcyhuYW1lKTsKKworICAgIGlmIChuYW1lZEl0ZW1zLmlzRW1wdHkoKSkK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAobmFtZWRJdGVtcy5zaXplKCkg
PT0gMSkKKyAgICAgICAgcmV0dXJuIFZhcmlhbnQ8UmVmUHRyPEhUTUxDb2xsZWN0aW9uPiwgUmVm
UHRyPEVsZW1lbnQ+PiB7IFJlZlB0cjxFbGVtZW50PiB7IFdURk1vdmUobmFtZWRJdGVtc1swXSkg
fSB9OworCisgICAgcmV0dXJuIFZhcmlhbnQ8UmVmUHRyPEhUTUxDb2xsZWN0aW9uPiwgUmVmUHRy
PEVsZW1lbnQ+PiB7IFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4geyBkb3duY2FzdDxEb2N1bWVudD4o
b3duZXJOb2RlKCkpLmFsbEZpbHRlcmVkQnlOYW1lKG5hbWUpIH0gfTsKK30KKworSFRNTEFsbE5h
bWVkU3ViQ29sbGVjdGlvbjo6fkhUTUxBbGxOYW1lZFN1YkNvbGxlY3Rpb24oKQoreworICAgIG93
bmVyTm9kZSgpLm5vZGVMaXN0cygpLT5yZW1vdmVDYWNoZWRDb2xsZWN0aW9uKHRoaXMsIG1fbmFt
ZSk7Cit9CisKK2Jvb2wgSFRNTEFsbE5hbWVkU3ViQ29sbGVjdGlvbjo6ZWxlbWVudE1hdGNoZXMo
RWxlbWVudCYgZWxlbWVudCkgY29uc3QKK3sKKyAgICBjb25zdCBhdXRvJiBpZCA9IGVsZW1lbnQu
Z2V0SWRBdHRyaWJ1dGUoKTsKKyAgICBpZiAoaWQgPT0gbV9uYW1lKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKworICAgIGlmICghbmFtZVNob3VsZEJlVmlzaWJsZUluRG9jdW1lbnRBbGwoZWxlbWVu
dCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGNvbnN0IGF1dG8mIG5hbWUgPSBlbGVt
ZW50LmdldE5hbWVBdHRyaWJ1dGUoKTsKKyAgICBpZiAobmFtZSA9PSBtX25hbWUpCisgICAgICAg
IHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIGZhbHNlOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbGxDb2xsZWN0aW9uLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5oCShyZXZp
c2lvbiAyMTY4NDgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbGxDb2xsZWN0aW9uLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5
LCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwOSwgMjAxMSwgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDYgKzI2LDggQEAKICNwcmFnbWEgb25jZQog
CiAjaW5jbHVkZSAiQWxsRGVzY2VuZGFudHNDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSA8d3RmL09w
dGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC0zMywxMiArMzUsMzUgQEAgY2xhc3MgSFRNTEFsbENvbGxlY3Rpb24gZmluYWwgOiBw
dWJsaWMgQQogcHVibGljOgogICAgIHN0YXRpYyBSZWY8SFRNTEFsbENvbGxlY3Rpb24+IGNyZWF0
ZShEb2N1bWVudCYsIENvbGxlY3Rpb25UeXBlKTsKIAotICAgIEVsZW1lbnQqIG5hbWVkSXRlbVdp
dGhJbmRleChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIHVuc2lnbmVkIGluZGV4KSBjb25zdDsK
KyAgICBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8UmVmUHRyPEhUTUxDb2xsZWN0aW9uPiwgUmVmUHRy
PEVsZW1lbnQ+Pj4gbmFtZWRPckluZGV4ZWRJdGVtT3JJdGVtcyhjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWVPckluZGV4KSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8UmVmUHRyPEhU
TUxDb2xsZWN0aW9uPiwgUmVmUHRyPEVsZW1lbnQ+Pj4gbmFtZWRJdGVtT3JJdGVtcyhjb25zdCBB
dG9taWNTdHJpbmcmKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBIVE1MQWxsQ29sbGVjdGlvbihE
b2N1bWVudCYsIENvbGxlY3Rpb25UeXBlKTsKIH07CiAKK2NsYXNzIEhUTUxBbGxOYW1lZFN1YkNv
bGxlY3Rpb24gZmluYWwgOiBwdWJsaWMgQ2FjaGVkSFRNTENvbGxlY3Rpb248SFRNTEFsbE5hbWVk
U3ViQ29sbGVjdGlvbiwgQ29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRzPiB7Citw
dWJsaWM6CisgICAgc3RhdGljIFJlZjxIVE1MQWxsTmFtZWRTdWJDb2xsZWN0aW9uPiBjcmVhdGUo
RG9jdW1lbnQmIGRvY3VtZW50LCBDb2xsZWN0aW9uVHlwZSB0eXBlLCBjb25zdCBBdG9taWNTdHJp
bmcmIG5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBIVE1MQWxsTmFt
ZWRTdWJDb2xsZWN0aW9uKGRvY3VtZW50LCB0eXBlLCBuYW1lKSk7CisgICAgfQorICAgIHZpcnR1
YWwgfkhUTUxBbGxOYW1lZFN1YkNvbGxlY3Rpb24oKTsKKworICAgIGJvb2wgZWxlbWVudE1hdGNo
ZXMoRWxlbWVudCYpIGNvbnN0OworCitwcml2YXRlOgorICAgIEhUTUxBbGxOYW1lZFN1YkNvbGxl
Y3Rpb24oRG9jdW1lbnQmIGRvY3VtZW50LCBDb2xsZWN0aW9uVHlwZSB0eXBlLCBjb25zdCBBdG9t
aWNTdHJpbmcmIG5hbWUpCisgICAgICAgIDogQ2FjaGVkSFRNTENvbGxlY3Rpb248SFRNTEFsbE5h
bWVkU3ViQ29sbGVjdGlvbiwgQ29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRzPihk
b2N1bWVudCwgdHlwZSkKKyAgICAgICAgLCBtX25hbWUobmFtZSkKKyAgICB7CisgICAgICAgIEFT
U0VSVCh0eXBlID09IERvY3VtZW50QWxsTmFtZWRJdGVtcyk7CisgICAgfQorCisgICAgQXRvbWlj
U3RyaW5nIG1fbmFtZTsKK307CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19IVE1MQ09MTEVDVElPTihIVE1MQWxsQ29sbGVjdGlvbiwgRG9jQWxsKQor
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19IVE1MQ09MTEVDVElPTihIVE1MQWxsTmFtZWRTdWJDb2xs
ZWN0aW9uLCBEb2N1bWVudEFsbE5hbWVkSXRlbXMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxBbGxDb2xsZWN0aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxBbGxDb2xsZWN0aW9uLmlkbAkocmV2aXNpb24gMjE2ODQ4KQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDE2ICsy
NCwxMyBAQAogICovCiAKIFsKLSAgICBDdXN0b21DYWxsLAotICAgIEN1c3RvbU5hbWVkR2V0dGVy
LAogICAgIExlZ2FjeVVuZW51bWVyYWJsZU5hbWVkUHJvcGVydGllcywKICAgICBNYXNxdWVyYWRl
c0FzVW5kZWZpbmVkLAogICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbE93bmVyTm9kZVJvb3Qs
CiBdIGludGVyZmFjZSBIVE1MQWxsQ29sbGVjdGlvbiB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IHVuc2lnbmVkIGxvbmcgbGVuZ3RoOwogCi0gICAgW0N1c3RvbV0gZ2V0dGVyIEVsZW1lbnQ/IGl0
ZW0odW5zaWduZWQgbG9uZyBpbmRleCk7Ci0gICAgW0N1c3RvbV0gZ2V0dGVyIChIVE1MQ29sbGVj
dGlvbiBvciBFbGVtZW50KT8gbmFtZWRJdGVtKERPTVN0cmluZyBuYW1lKTsKLSAgICAvLyBbQ3Vz
dG9tXSBsZWdhY3ljYWxsZXIgKEhUTUxDb2xsZWN0aW9uIG9yIEVsZW1lbnQpPyBpdGVtKG9wdGlv
bmFsIERPTVN0cmluZyBuYW1lT3JJbmRleCk7CisgICAgZ2V0dGVyIEVsZW1lbnQ/ICh1bnNpZ25l
ZCBsb25nIGluZGV4KTsKKyAgICBbSW1wbGVtZW50ZWRBcz1uYW1lZEl0ZW1Pckl0ZW1zXSBnZXR0
ZXIgKEhUTUxDb2xsZWN0aW9uIG9yIEVsZW1lbnQpPyBuYW1lZEl0ZW0oRE9NU3RyaW5nIG5hbWUp
OworICAgIFtJbXBsZW1lbnRlZEFzPW5hbWVkT3JJbmRleGVkSXRlbU9ySXRlbXNdIGxlZ2FjeWNh
bGxlciAoSFRNTENvbGxlY3Rpb24gb3IgRWxlbWVudCk/IGl0ZW0ob3B0aW9uYWwgRE9NU3RyaW5n
IG5hbWVPckluZGV4KTsKIH07Ci0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxl
Y3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rp
b24uY3BwCShyZXZpc2lvbiAyMTY4NDgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xs
ZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsNyBAQCBpbmxpbmUgYXV0byBI
VE1MQ29sbGVjdGlvbjo6cm9vdFR5cGVGcm9tCiAgICAgY2FzZSBEb2NBbGw6CiAgICAgY2FzZSBX
aW5kb3dOYW1lZEl0ZW1zOgogICAgIGNhc2UgRG9jdW1lbnROYW1lZEl0ZW1zOgorICAgIGNhc2Ug
RG9jdW1lbnRBbGxOYW1lZEl0ZW1zOgogICAgIGNhc2UgRm9ybUNvbnRyb2xzOgogICAgICAgICBy
ZXR1cm4gSFRNTENvbGxlY3Rpb246OklzUm9vdGVkQXREb2N1bWVudDsKICAgICBjYXNlIEFsbERl
c2NlbmRhbnRzOgpAQCAtOTYsOCArOTcsOCBAQCBzdGF0aWMgTm9kZUxpc3RJbnZhbGlkYXRpb25U
eXBlIGludmFsaWRhCiAgICAgY2FzZSBEb2NMaW5rczoKICAgICAgICAgcmV0dXJuIEludmFsaWRh
dGVPbkhSZWZBdHRyQ2hhbmdlOwogICAgIGNhc2UgV2luZG93TmFtZWRJdGVtczoKLSAgICAgICAg
cmV0dXJuIEludmFsaWRhdGVPbklkTmFtZUF0dHJDaGFuZ2U7CiAgICAgY2FzZSBEb2N1bWVudE5h
bWVkSXRlbXM6CisgICAgY2FzZSBEb2N1bWVudEFsbE5hbWVkSXRlbXM6CiAgICAgICAgIHJldHVy
biBJbnZhbGlkYXRlT25JZE5hbWVBdHRyQ2hhbmdlOwogICAgIGNhc2UgRm9ybUNvbnRyb2xzOgog
ICAgICAgICByZXR1cm4gSW52YWxpZGF0ZUZvckZvcm1Db250cm9sczsKQEAgLTEzMCw2ICsxMzEs
NyBAQCBIVE1MQ29sbGVjdGlvbjo6fkhUTUxDb2xsZWN0aW9uKCkKICAgICBjYXNlIEJ5SFRNTFRh
ZzoKICAgICBjYXNlIFdpbmRvd05hbWVkSXRlbXM6CiAgICAgY2FzZSBEb2N1bWVudE5hbWVkSXRl
bXM6CisgICAgY2FzZSBEb2N1bWVudEFsbE5hbWVkSXRlbXM6CiAgICAgICAgIGJyZWFrOwogICAg
IGRlZmF1bHQ6CiAgICAgICAgIG93bmVyTm9kZSgpLm5vZGVMaXN0cygpLT5yZW1vdmVDYWNoZWRD
b2xsZWN0aW9uKHRoaXMpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjE2ODQ4KQorKysgTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTctMDUtMTQg
IFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBbV2ViSURML0RPTV0gUmVt
b3ZlIG5lZWQgZm9yIGN1c3RvbSBiaW5kaW5ncyBmb3IgSFRNTEFsbENvbGxlY3Rpb24gYW5kIGJy
aW5nIHVwIHRvIHNwZWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE3MjA5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogZmFzdC9kb20vY29sbGVjdGlvbi1udWxsLWxpa2UtYXJndW1lbnRzLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgVXBkYXRlIHJlc3VsdHMuCisKKyAgICAgICAgKiBmYXN0L2RvbS9kb2N1
bWVudC1hbGwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9kb2N1bWVu
dC1hbGwuaHRtbDogQWRkZWQuCisgICAgICAgIE5ldyB0ZXN0IHRoYXQgY292ZXJzIGEgYnVuY2gg
b2YgbWlzc2luZyBjb3ZlcmFnZS4KKwogMjAxNy0wNS0xNCAgRGF2aWQgS2lsemVyICA8ZGRraWx6
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1MvbWFjT1MgRGVidWcgV0syXSBMYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9pbnRlcmZhY2VzLmh0bWwg
aXMgYSBmbGFreSBjcmFzaCBkdWUgdG8gYXNzZXJ0aW9uIGZhaWx1cmUKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZG9tL2NvbGxlY3Rpb24tbnVsbC1saWtlLWFyZ3VtZW50cy1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vY29sbGVjdGlvbi1udWxsLWxpa2Ut
YXJndW1lbnRzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjE2ODQ4KQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9kb20vY29sbGVjdGlvbi1udWxsLWxpa2UtYXJndW1lbnRzLWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtNywxOSArNywxOSBAQCBkb2N1bWVudC5hbGwoMCk6ICAgICAgW29iamVj
dCBIVE1MSHRtbEVsCiBkb2N1bWVudC5hbGwuaXRlbSgwKTogW29iamVjdCBIVE1MSHRtbEVsZW1l
bnRdCiAKIGRvY3VtZW50LmFsbFsiIl06ICAgICAgdW5kZWZpbmVkCi1kb2N1bWVudC5hbGwoIiIp
OiAgICAgIHVuZGVmaW5lZAotZG9jdW1lbnQuYWxsLml0ZW0oIiIpOiB1bmRlZmluZWQKK2RvY3Vt
ZW50LmFsbCgiIik6ICAgICAgbnVsbAorZG9jdW1lbnQuYWxsLml0ZW0oIiIpOiBudWxsCiAKIGRv
Y3VtZW50LmFsbFsiMCJdOiAgICAgIFtvYmplY3QgSFRNTEh0bWxFbGVtZW50XQogZG9jdW1lbnQu
YWxsKCIwIik6ICAgICAgW29iamVjdCBIVE1MSHRtbEVsZW1lbnRdCiBkb2N1bWVudC5hbGwuaXRl
bSgiMCIpOiBbb2JqZWN0IEhUTUxIdG1sRWxlbWVudF0KIAogZG9jdW1lbnQuYWxsW3VuZGVmaW5l
ZF06ICAgICAgdW5kZWZpbmVkCi1kb2N1bWVudC5hbGwodW5kZWZpbmVkKTogICAgICB1bmRlZmlu
ZWQKLWRvY3VtZW50LmFsbC5pdGVtKHVuZGVmaW5lZCk6IHVuZGVmaW5lZAorZG9jdW1lbnQuYWxs
KHVuZGVmaW5lZCk6ICAgICAgbnVsbAorZG9jdW1lbnQuYWxsLml0ZW0odW5kZWZpbmVkKTogbnVs
bAogCiBkb2N1bWVudC5hbGxbbnVsbF06ICAgICAgdW5kZWZpbmVkCi1kb2N1bWVudC5hbGwobnVs
bCk6ICAgICAgdW5kZWZpbmVkCi1kb2N1bWVudC5hbGwuaXRlbShudWxsKTogdW5kZWZpbmVkCitk
b2N1bWVudC5hbGwobnVsbCk6ICAgICAgbnVsbAorZG9jdW1lbnQuYWxsLml0ZW0obnVsbCk6IG51
bGwKIAogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9kb2N1bWVudC1hbGwtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2RvY3VtZW50LWFsbC1leHBl
Y3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vZG9jdW1lbnQt
YWxsLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ3IEBACitUZXN0cyBk
b2N1bWVudC5hbGwKKworCitQQVNTIGRvY3VtZW50LmFsbCdzIGluZGV4IGdldHRlciByZXR1cm5z
IGFsbCB0aGUgZWxlbWVudHMgaW4gZG9jdW1lbnQgb3JkZXIgCitQQVNTIGRvY3VtZW50LmFsbCdz
IGluZGV4IGdldHRlciByZXR1cm5zIHVuZGVmaW5lZCBmb3IgaW5kZXhlcyBncmVhdGVyIHRoYW4g
bGVuZ3RoIAorUEFTUyBkb2N1bWVudC5hbGwncyBpbmRleCBnZXR0ZXIgcmV0dXJucyB1bmRlZmlu
ZWQgZm9yIGluZGV4ZXMgbGVzcyB0aGFuIHplcm8gCitQQVNTIGRvY3VtZW50LmFsbCdzIG5hbWUg
YXR0cmlidXRlIGFjY2Vzc2luZyB3b3JrcyBmb3IgYSAKK1BBU1MgZG9jdW1lbnQuYWxsJ3MgbmFt
ZSBhdHRyaWJ1dGUgYWNjZXNzaW5nIHdvcmtzIGZvciBhcHBsZXQgCitQQVNTIGRvY3VtZW50LmFs
bCdzIG5hbWUgYXR0cmlidXRlIGFjY2Vzc2luZyB3b3JrcyBmb3IgYnV0dG9uIAorUEFTUyBkb2N1
bWVudC5hbGwncyBuYW1lIGF0dHJpYnV0ZSBhY2Nlc3Npbmcgd29ya3MgZm9yIGVtYmVkIAorUEFT
UyBkb2N1bWVudC5hbGwncyBuYW1lIGF0dHJpYnV0ZSBhY2Nlc3Npbmcgd29ya3MgZm9yIGZvcm0g
CitQQVNTIGRvY3VtZW50LmFsbCdzIG5hbWUgYXR0cmlidXRlIGFjY2Vzc2luZyB3b3JrcyBmb3Ig
ZnJhbWUgCitQQVNTIGRvY3VtZW50LmFsbCdzIG5hbWUgYXR0cmlidXRlIGFjY2Vzc2luZyB3b3Jr
cyBmb3IgZnJhbWVzZXQgCitQQVNTIGRvY3VtZW50LmFsbCdzIG5hbWUgYXR0cmlidXRlIGFjY2Vz
c2luZyB3b3JrcyBmb3IgaWZyYW1lIAorUEFTUyBkb2N1bWVudC5hbGwncyBuYW1lIGF0dHJpYnV0
ZSBhY2Nlc3Npbmcgd29ya3MgZm9yIGltZyAKK1BBU1MgZG9jdW1lbnQuYWxsJ3MgbmFtZSBhdHRy
aWJ1dGUgYWNjZXNzaW5nIHdvcmtzIGZvciBpbnB1dCAKK1BBU1MgZG9jdW1lbnQuYWxsJ3MgbmFt
ZSBhdHRyaWJ1dGUgYWNjZXNzaW5nIHdvcmtzIGZvciBtYXAgCitQQVNTIGRvY3VtZW50LmFsbCdz
IG5hbWUgYXR0cmlidXRlIGFjY2Vzc2luZyB3b3JrcyBmb3IgbWV0YSAKK1BBU1MgZG9jdW1lbnQu
YWxsJ3MgbmFtZSBhdHRyaWJ1dGUgYWNjZXNzaW5nIHdvcmtzIGZvciBvYmplY3QgCitQQVNTIGRv
Y3VtZW50LmFsbCdzIG5hbWUgYXR0cmlidXRlIGFjY2Vzc2luZyB3b3JrcyBmb3Igc2VsZWN0IAor
UEFTUyBkb2N1bWVudC5hbGwncyBuYW1lIGF0dHJpYnV0ZSBhY2Nlc3Npbmcgd29ya3MgZm9yIHRl
eHRhcmVhIAorUEFTUyBkb2N1bWVudC5hbGwncyBuYW1lIGF0dHJpYnV0ZSBhY2Nlc3NpbmcgZG9l
c24ndCB3b3JrIGZvciBkaXYgCitQQVNTIGRvY3VtZW50LmFsbCdzIG5hbWUgYXR0cmlidXRlIGFj
Y2Vzc2luZyBkb2Vzbid0IHdvcmsgZm9yIHNwYW4gCitQQVNTIGRvY3VtZW50LmFsbCdzIGlkIGF0
dHJpYnV0ZSBhY2Nlc3Npbmcgd29ya3MgZm9yIGEgCitQQVNTIGRvY3VtZW50LmFsbCdzIGlkIGF0
dHJpYnV0ZSBhY2Nlc3Npbmcgd29ya3MgZm9yIGFwcGxldCAKK1BBU1MgZG9jdW1lbnQuYWxsJ3Mg
aWQgYXR0cmlidXRlIGFjY2Vzc2luZyB3b3JrcyBmb3IgYnV0dG9uIAorUEFTUyBkb2N1bWVudC5h
bGwncyBpZCBhdHRyaWJ1dGUgYWNjZXNzaW5nIHdvcmtzIGZvciBlbWJlZCAKK1BBU1MgZG9jdW1l
bnQuYWxsJ3MgaWQgYXR0cmlidXRlIGFjY2Vzc2luZyB3b3JrcyBmb3IgZm9ybSAKK1BBU1MgZG9j
dW1lbnQuYWxsJ3MgaWQgYXR0cmlidXRlIGFjY2Vzc2luZyB3b3JrcyBmb3IgZnJhbWUgCitQQVNT
IGRvY3VtZW50LmFsbCdzIGlkIGF0dHJpYnV0ZSBhY2Nlc3Npbmcgd29ya3MgZm9yIGZyYW1lc2V0
IAorUEFTUyBkb2N1bWVudC5hbGwncyBpZCBhdHRyaWJ1dGUgYWNjZXNzaW5nIHdvcmtzIGZvciBp
ZnJhbWUgCitQQVNTIGRvY3VtZW50LmFsbCdzIGlkIGF0dHJpYnV0ZSBhY2Nlc3Npbmcgd29ya3Mg
Zm9yIGltZyAKK1BBU1MgZG9jdW1lbnQuYWxsJ3MgaWQgYXR0cmlidXRlIGFjY2Vzc2luZyB3b3Jr
cyBmb3IgaW5wdXQgCitQQVNTIGRvY3VtZW50LmFsbCdzIGlkIGF0dHJpYnV0ZSBhY2Nlc3Npbmcg
d29ya3MgZm9yIG1hcCAKK1BBU1MgZG9jdW1lbnQuYWxsJ3MgaWQgYXR0cmlidXRlIGFjY2Vzc2lu
ZyB3b3JrcyBmb3IgbWV0YSAKK1BBU1MgZG9jdW1lbnQuYWxsJ3MgaWQgYXR0cmlidXRlIGFjY2Vz
c2luZyB3b3JrcyBmb3Igb2JqZWN0IAorUEFTUyBkb2N1bWVudC5hbGwncyBpZCBhdHRyaWJ1dGUg
YWNjZXNzaW5nIHdvcmtzIGZvciBzZWxlY3QgCitQQVNTIGRvY3VtZW50LmFsbCdzIGlkIGF0dHJp
YnV0ZSBhY2Nlc3Npbmcgd29ya3MgZm9yIHRleHRhcmVhIAorUEFTUyBkb2N1bWVudC5hbGwncyBp
ZCBhdHRyaWJ1dGUgYWNjZXNzaW5nIHdvcmtzIGZvciBkaXYgCitQQVNTIGRvY3VtZW50LmFsbCdz
IGlkIGF0dHJpYnV0ZSBhY2Nlc3Npbmcgd29ya3MgZm9yIHNwYW4gCitQQVNTIGRvY3VtZW50LmFs
bCB3aWxsIHJldHVybiBhIHN1Yi1jb2xsZWN0aW9uIGlmIHRoZSBuYW1lL2lkIGlzIGZvdW5kIG1v
cmUgdGhhbiBvbmNlIAorUEFTUyBkb2N1bWVudC5hbGwgd2lsbCByZXR1cm4gYSBzdWItY29sbGVj
dGlvbiBpZiB0aGUgbmFtZS9pZCBpcyBmb3VuZCBtb3JlIHRoYW4gb25jZSwgYnV0IHN0aWxsIGFk
aGVyZXMgdG8gdGhlIHJ1bGVzIGFib3V0IHdoYXQgdGFncyBjYW4gaGF2ZSBuYW1lcyAKK1BBU1Mg
ZG9jdW1lbnQuYWxsIHdpbGwgcmV0dXJuIGEgc3ViLWNvbGxlY3Rpb24gaWYgdGhlIG5hbWUvaWQg
aXMgZm91bmQgbW9yZSB0aGFuIG9uY2UsIHRoYXQgaXMgbGl2ZSAKK1BBU1MgZG9jdW1lbnQuYWxs
J3MgbmFtZWRJdGVtIGZ1bmN0aW9uIHJlcXVpcmVzIHBhc3NpbmcgYW4gYXJndW1lbnQgCitQQVNT
IGRvY3VtZW50LmFsbCdzIGl0ZW0gZnVuY3Rpb24gYW5kIGxlZ2FjeSBjYWxsZXIgZnVuY3Rpb25h
bGl0eSBhbGxvdyBwYXNzaW5nIG5vIGFyZ3VtZW50cyAKK1BBU1MgZG9jdW1lbnQuYWxsJ3MgaXRl
bSBmdW5jdGlvbiBhbmQgbGVnYWN5IGNhbGxlciBmdW5jdGlvbmFsaXR5IHdpbGwgdHJ5IHRvIGNv
bnZlcnQgdGhlaXIgRE9NU3RyaW5nIGFyZ3VtZW50IHRvIGFuIGluZGV4IGJlZm9yZSBuYW1lIGxv
b2t1cCAKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vZG9jdW1lbnQtYWxsLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vZG9jdW1lbnQtYWxsLmh0bWwJKG5vbmV4
aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vZG9jdW1lbnQtYWxsLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwxNzkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGhlYWQ+CisgICAg
PHRpdGxlPmRvY3VtZW50LmFsbDwvdGl0bGU+Cis8Ym9keT4KKzxwPlRlc3RzIGRvY3VtZW50LmFs
bDwvcD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitsZXQgdmFsaWROYW1lZEVsZW1lbnRUYWdzID0gWydhJywg
J2FwcGxldCcsICdidXR0b24nLCAnZW1iZWQnLCAnZm9ybScsICdmcmFtZScsICdmcmFtZXNldCcs
ICdpZnJhbWUnLCAnaW1nJywgJ2lucHV0JywgJ21hcCcsICdtZXRhJywgJ29iamVjdCcsICdzZWxl
Y3QnLCAndGV4dGFyZWEnXTsKK2xldCBpbnZhbGlkTmFtZWRFbGVtZW50VGFncyA9IFsnZGl2Jywg
J3NwYW4nXTsKK2xldCB2YWxpZEFuSW52YWxpZE5hbWVkRWxlbWVudFRhZ3MgPSB2YWxpZE5hbWVk
RWxlbWVudFRhZ3MuY29uY2F0KGludmFsaWROYW1lZEVsZW1lbnRUYWdzKTsKKworbGV0IHBsYXln
cm91bmQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKK2RvY3VtZW50LmJvZHkuYXBw
ZW5kKHBsYXlncm91bmQpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGFzc2VydF9lcXVhbHMo
ZG9jdW1lbnQuYWxsWzBdLCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpOworICAgIGFzc2VydF9l
cXVhbHMoZG9jdW1lbnQuYWxsWzFdLCBkb2N1bWVudC5oZWFkKTsKKyAgICBhc3NlcnRfZXF1YWxz
KGRvY3VtZW50LmFsbFsyXSwgZG9jdW1lbnQuaGVhZC5maXJzdEVsZW1lbnRDaGlsZCk7Cit9LCAi
ZG9jdW1lbnQuYWxsJ3MgaW5kZXggZ2V0dGVyIHJldHVybnMgYWxsIHRoZSBlbGVtZW50cyBpbiBk
b2N1bWVudCBvcmRlciIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGFzc2VydF9lcXVhbHMo
ZG9jdW1lbnQuYWxsW2RvY3VtZW50LmFsbC5sZW5ndGggKyAxXSwgdW5kZWZpbmVkKTsKK30sICJk
b2N1bWVudC5hbGwncyBpbmRleCBnZXR0ZXIgcmV0dXJucyB1bmRlZmluZWQgZm9yIGluZGV4ZXMg
Z3JlYXRlciB0aGFuIGxlbmd0aCIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGFzc2VydF9l
cXVhbHMoZG9jdW1lbnQuYWxsWy0xXSwgdW5kZWZpbmVkKTsKK30sICJkb2N1bWVudC5hbGwncyBp
bmRleCBnZXR0ZXIgcmV0dXJucyB1bmRlZmluZWQgZm9yIGluZGV4ZXMgbGVzcyB0aGFuIHplcm8i
KTsKKworZm9yIChsZXQgZWxlbWVudFRhZyBvZiB2YWxpZE5hbWVkRWxlbWVudFRhZ3MpIHsKKyAg
ICB0ZXN0KGZ1bmN0aW9uKCkgeworICAgICAgICBsZXQgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoZWxlbWVudFRhZyk7CisgICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCJuYW1l
IiwgInRlc3ROYW1lIik7CisgICAgICAgIHBsYXlncm91bmQuYXBwZW5kKGVsZW1lbnQpOworICAg
IAorICAgICAgICBhc3NlcnRfZXF1YWxzKGRvY3VtZW50LmFsbC5uYW1lZEl0ZW0oJ3Rlc3ROYW1l
JyksIGVsZW1lbnQpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGRvY3VtZW50LmFsbFsndGVzdE5h
bWUnXSwgZWxlbWVudCk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoZG9jdW1lbnQuYWxsLml0ZW0o
J3Rlc3ROYW1lJyksIGVsZW1lbnQpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGRvY3VtZW50LmFs
bCgndGVzdE5hbWUnKSwgZWxlbWVudCk7CisgICAgCisgICAgICAgIGVsZW1lbnQucmVtb3ZlKCk7
CisgICAgfSwgImRvY3VtZW50LmFsbCdzIG5hbWUgYXR0cmlidXRlIGFjY2Vzc2luZyB3b3JrcyBm
b3IgIiArIGVsZW1lbnRUYWcpOworfQorCitmb3IgKGxldCBlbGVtZW50VGFnIG9mIGludmFsaWRO
YW1lZEVsZW1lbnRUYWdzKSB7CisgICAgdGVzdChmdW5jdGlvbigpIHsKKyAgICAgICAgbGV0IGVs
ZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGVsZW1lbnRUYWcpOworICAgICAgICBlbGVt
ZW50LnNldEF0dHJpYnV0ZSgibmFtZSIsICJ0ZXN0TmFtZSIpOworICAgICAgICBwbGF5Z3JvdW5k
LmFwcGVuZChlbGVtZW50KTsKKyAgICAKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhkb2N1bWVudC5h
bGwubmFtZWRJdGVtKCd0ZXN0TmFtZScpLCBudWxsKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhk
b2N1bWVudC5hbGxbJ3Rlc3ROYW1lJ10sIHVuZGVmaW5lZCk7CisgICAgICAgIGFzc2VydF9lcXVh
bHMoZG9jdW1lbnQuYWxsLml0ZW0oJ3Rlc3ROYW1lJyksIG51bGwpOworICAgICAgICBhc3NlcnRf
ZXF1YWxzKGRvY3VtZW50LmFsbCgndGVzdE5hbWUnKSwgbnVsbCk7CisgICAgCisgICAgICAgIGVs
ZW1lbnQucmVtb3ZlKCk7CisgICAgfSwgImRvY3VtZW50LmFsbCdzIG5hbWUgYXR0cmlidXRlIGFj
Y2Vzc2luZyBkb2Vzbid0IHdvcmsgZm9yICIgKyBlbGVtZW50VGFnKTsKK30KKworZm9yIChsZXQg
ZWxlbWVudFRhZyBvZiB2YWxpZEFuSW52YWxpZE5hbWVkRWxlbWVudFRhZ3MpIHsKKyAgICB0ZXN0
KGZ1bmN0aW9uKCkgeworICAgICAgICBsZXQgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoZWxlbWVudFRhZyk7CisgICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCJpZCIsICJ0ZXN0
SWQiKTsKKyAgICAgICAgcGxheWdyb3VuZC5hcHBlbmQoZWxlbWVudCk7CisgICAgCisgICAgICAg
IGFzc2VydF9lcXVhbHMoZG9jdW1lbnQuYWxsLm5hbWVkSXRlbSgndGVzdElkJyksIGVsZW1lbnQp
OworICAgICAgICBhc3NlcnRfZXF1YWxzKGRvY3VtZW50LmFsbFsndGVzdElkJ10sIGVsZW1lbnQp
OworICAgICAgICBhc3NlcnRfZXF1YWxzKGRvY3VtZW50LmFsbC5pdGVtKCd0ZXN0SWQnKSwgZWxl
bWVudCk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoZG9jdW1lbnQuYWxsKCd0ZXN0SWQnKSwgZWxl
bWVudCk7CisgICAgCisgICAgICAgIGVsZW1lbnQucmVtb3ZlKCk7CisgICAgfSwgImRvY3VtZW50
LmFsbCdzIGlkIGF0dHJpYnV0ZSBhY2Nlc3Npbmcgd29ya3MgZm9yICIgKyBlbGVtZW50VGFnKTsK
K30KKwordGVzdChmdW5jdGlvbigpIHsKKyAgICBsZXQgZWxlbWVudDEgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdidXR0b24nKTsKKyAgICBlbGVtZW50MS5zZXRBdHRyaWJ1dGUoIm5hbWUiLCAi
dGVzdCIpOworICAgIHBsYXlncm91bmQuYXBwZW5kKGVsZW1lbnQxKTsKKworICAgIGxldCBlbGVt
ZW50MiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTsKKyAgICBlbGVtZW50Mi5zZXRB
dHRyaWJ1dGUoImlkIiwgInRlc3QiKTsKKyAgICBwbGF5Z3JvdW5kLmFwcGVuZChlbGVtZW50Mik7
CisKKyAgICBhc3NlcnRfZXF1YWxzKGRvY3VtZW50LmFsbC5uYW1lZEl0ZW0oJ3Rlc3QnKS5sZW5n
dGgsIDIpOworICAgIGFzc2VydF9lcXVhbHMoZG9jdW1lbnQuYWxsWyd0ZXN0J10ubGVuZ3RoLCAy
KTsKKyAgICBhc3NlcnRfZXF1YWxzKGRvY3VtZW50LmFsbC5pdGVtKCd0ZXN0JykubGVuZ3RoLCAy
KTsKKyAgICBhc3NlcnRfZXF1YWxzKGRvY3VtZW50LmFsbCgndGVzdCcpLmxlbmd0aCwgMik7Cisg
ICAgYXNzZXJ0X2NsYXNzX3N0cmluZyhkb2N1bWVudC5hbGwubmFtZWRJdGVtKCd0ZXN0JyksICJI
VE1MQ29sbGVjdGlvbiIpOworICAgIGFzc2VydF9jbGFzc19zdHJpbmcoZG9jdW1lbnQuYWxsWyd0
ZXN0J10sICJIVE1MQ29sbGVjdGlvbiIpOworICAgIGFzc2VydF9jbGFzc19zdHJpbmcoZG9jdW1l
bnQuYWxsLml0ZW0oJ3Rlc3QnKSwgIkhUTUxDb2xsZWN0aW9uIik7CisgICAgYXNzZXJ0X2NsYXNz
X3N0cmluZyhkb2N1bWVudC5hbGwoJ3Rlc3QnKSwgIkhUTUxDb2xsZWN0aW9uIik7CisKKyAgICBl
bGVtZW50MS5yZW1vdmUoKTsKKyAgICBlbGVtZW50Mi5yZW1vdmUoKTsKK30sICJkb2N1bWVudC5h
bGwgd2lsbCByZXR1cm4gYSBzdWItY29sbGVjdGlvbiBpZiB0aGUgbmFtZS9pZCBpcyBmb3VuZCBt
b3JlIHRoYW4gb25jZSIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGxldCBlbGVtZW50MSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpOworICAgIGVsZW1lbnQxLnNldEF0dHJp
YnV0ZSgibmFtZSIsICJ0ZXN0Iik7CisgICAgcGxheWdyb3VuZC5hcHBlbmQoZWxlbWVudDEpOwor
CisgICAgbGV0IGVsZW1lbnQyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpOworICAg
IGVsZW1lbnQyLnNldEF0dHJpYnV0ZSgiaWQiLCAidGVzdCIpOworICAgIHBsYXlncm91bmQuYXBw
ZW5kKGVsZW1lbnQyKTsKKworICAgIGxldCBlbGVtZW50MyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ3NwYW4nKTsKKyAgICBlbGVtZW50My5zZXRBdHRyaWJ1dGUoIm5hbWUiLCAidGVzdCIpOwor
ICAgIHBsYXlncm91bmQuYXBwZW5kKGVsZW1lbnQyKTsKKworICAgIGFzc2VydF9lcXVhbHMoZG9j
dW1lbnQuYWxsLm5hbWVkSXRlbSgndGVzdCcpLmxlbmd0aCwgMik7CisgICAgYXNzZXJ0X2VxdWFs
cyhkb2N1bWVudC5hbGxbJ3Rlc3QnXS5sZW5ndGgsIDIpOworICAgIGFzc2VydF9lcXVhbHMoZG9j
dW1lbnQuYWxsLml0ZW0oJ3Rlc3QnKS5sZW5ndGgsIDIpOworICAgIGFzc2VydF9lcXVhbHMoZG9j
dW1lbnQuYWxsKCd0ZXN0JykubGVuZ3RoLCAyKTsKKyAgICBhc3NlcnRfZXF1YWxzKGRvY3VtZW50
LmFsbC5uYW1lZEl0ZW0oJ3Rlc3QnKVswXSwgZWxlbWVudDEpOworICAgIGFzc2VydF9lcXVhbHMo
ZG9jdW1lbnQuYWxsLm5hbWVkSXRlbSgndGVzdCcpWzFdLCBlbGVtZW50Mik7CisgICAgYXNzZXJ0
X2VxdWFscyhkb2N1bWVudC5hbGxbJ3Rlc3QnXVswXSwgZWxlbWVudDEpOworICAgIGFzc2VydF9l
cXVhbHMoZG9jdW1lbnQuYWxsWyd0ZXN0J11bMV0sIGVsZW1lbnQyKTsKKyAgICBhc3NlcnRfZXF1
YWxzKGRvY3VtZW50LmFsbC5pdGVtKCd0ZXN0JylbMF0sIGVsZW1lbnQxKTsKKyAgICBhc3NlcnRf
ZXF1YWxzKGRvY3VtZW50LmFsbC5pdGVtKCd0ZXN0JylbMV0sIGVsZW1lbnQyKTsKKyAgICBhc3Nl
cnRfZXF1YWxzKGRvY3VtZW50LmFsbCgndGVzdCcpWzBdLCBlbGVtZW50MSk7CisgICAgYXNzZXJ0
X2VxdWFscyhkb2N1bWVudC5hbGwoJ3Rlc3QnKVsxXSwgZWxlbWVudDIpOworCisgICAgZWxlbWVu
dDEucmVtb3ZlKCk7CisgICAgZWxlbWVudDIucmVtb3ZlKCk7CisgICAgZWxlbWVudDMucmVtb3Zl
KCk7Cit9LCAiZG9jdW1lbnQuYWxsIHdpbGwgcmV0dXJuIGEgc3ViLWNvbGxlY3Rpb24gaWYgdGhl
IG5hbWUvaWQgaXMgZm91bmQgbW9yZSB0aGFuIG9uY2UsIGJ1dCBzdGlsbCBhZGhlcmVzIHRvIHRo
ZSBydWxlcyBhYm91dCB3aGF0IHRhZ3MgY2FuIGhhdmUgbmFtZXMiKTsKKwordGVzdChmdW5jdGlv
bigpIHsKKyAgICBsZXQgZWxlbWVudDEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24n
KTsKKyAgICBlbGVtZW50MS5zZXRBdHRyaWJ1dGUoIm5hbWUiLCAidGVzdCIpOworICAgIHBsYXln
cm91bmQuYXBwZW5kKGVsZW1lbnQxKTsKKworICAgIGxldCBlbGVtZW50MiA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ3NwYW4nKTsKKyAgICBlbGVtZW50Mi5zZXRBdHRyaWJ1dGUoImlkIiwgInRl
c3QiKTsKKyAgICBwbGF5Z3JvdW5kLmFwcGVuZChlbGVtZW50Mik7CisKKyAgICBsZXQgY29sbGVj
dGlvbiA9IGRvY3VtZW50LmFsbC5uYW1lZEl0ZW0oJ3Rlc3QnKTsKKyAgICBhc3NlcnRfZXF1YWxz
KGNvbGxlY3Rpb24ubGVuZ3RoLCAyKTsKKworICAgIGxldCBlbGVtZW50MyA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ2ltZycpOworICAgIGVsZW1lbnQzLnNldEF0dHJpYnV0ZSgibmFtZSIsICJ0
ZXN0Iik7CisgICAgcGxheWdyb3VuZC5hcHBlbmQoZWxlbWVudDMpOworCisgICAgYXNzZXJ0X2Vx
dWFscyhjb2xsZWN0aW9uLmxlbmd0aCwgMyk7CisKKyAgICBlbGVtZW50MS5yZW1vdmUoKTsKKyAg
ICBlbGVtZW50Mi5yZW1vdmUoKTsKKworICAgIGFzc2VydF9lcXVhbHMoY29sbGVjdGlvbi5sZW5n
dGgsIDEpOworCisgICAgZWxlbWVudDMucmVtb3ZlKCk7Cit9LCAiZG9jdW1lbnQuYWxsIHdpbGwg
cmV0dXJuIGEgc3ViLWNvbGxlY3Rpb24gaWYgdGhlIG5hbWUvaWQgaXMgZm91bmQgbW9yZSB0aGFu
IG9uY2UsIHRoYXQgaXMgbGl2ZSIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGFzc2VydF90
aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsgZG9jdW1lbnQuYWxsLm5hbWVkSXRl
bSgpIH0pOworfSwgImRvY3VtZW50LmFsbCdzIG5hbWVkSXRlbSBmdW5jdGlvbiByZXF1aXJlcyBw
YXNzaW5nIGFuIGFyZ3VtZW50Iik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgYXNzZXJ0X2Vx
dWFscyhkb2N1bWVudC5hbGwuaXRlbSgpLCBudWxsKTsKKyAgICBhc3NlcnRfZXF1YWxzKGRvY3Vt
ZW50LmFsbCgpLCBudWxsKTsKK30sICJkb2N1bWVudC5hbGwncyBpdGVtIGZ1bmN0aW9uIGFuZCBs
ZWdhY3kgY2FsbGVyIGZ1bmN0aW9uYWxpdHkgYWxsb3cgcGFzc2luZyBubyBhcmd1bWVudHMiKTsK
KwordGVzdChmdW5jdGlvbigpIHsKKyAgICBsZXQgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ2J1dHRvbicpOworICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCJuYW1lIiwgIjAiKTsK
KyAgICBwbGF5Z3JvdW5kLmFwcGVuZChlbGVtZW50KTsKKworICAgIGFzc2VydF9lcXVhbHMoZG9j
dW1lbnQuYWxsLml0ZW0oJzAnKSwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KTsKKyAgICBhc3Nl
cnRfZXF1YWxzKGRvY3VtZW50LmFsbCgnMCcpLCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpOwor
ICAgIGFzc2VydF9lcXVhbHMoZG9jdW1lbnQuYWxsLm5hbWVkSXRlbSgnMCcpLCBlbGVtZW50KTsK
KworICAgIGVsZW1lbnQucmVtb3ZlKCk7Cit9LCAiZG9jdW1lbnQuYWxsJ3MgaXRlbSBmdW5jdGlv
biBhbmQgbGVnYWN5IGNhbGxlciBmdW5jdGlvbmFsaXR5IHdpbGwgdHJ5IHRvIGNvbnZlcnQgdGhl
aXIgRE9NU3RyaW5nIGFyZ3VtZW50IHRvIGFuIGluZGV4IGJlZm9yZSBuYW1lIGxvb2t1cCIpOwor
CitwbGF5Z3JvdW5kLnJlbW92ZSgpOworCis8L3NjcmlwdD4KKzwvYm9keT4KSW5kZXg6IExheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwkocmV2aXNpb24gMjE2ODQ4KQorKysgTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisy
MDE3LTA1LTE0ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1dlYklE
TC9ET01dIFJlbW92ZSBuZWVkIGZvciBjdXN0b20gYmluZGluZ3MgZm9yIEhUTUxBbGxDb2xsZWN0
aW9uIGFuZCBicmluZyB1cCB0byBzcGVjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzIwOTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2luZnJhc3RydWN0dXJl
L2NvbW1vbi1kb20taW50ZXJmYWNlcy9jb2xsZWN0aW9ucy9odG1sYWxsY29sbGVjdGlvbi1leHBl
Y3RlZC50eHQ6CisgICAgICAgIFVwZGF0ZSByZXN1bHRzLgorCiAyMDE3LTA1LTEyICBSb21haW4g
QmVsbGVzc29ydCAgPHJvbWFpbi5iZWxsZXNzb3J0QGNyZi5jYW5vbi5mcj4KIAogICAgICAgICBb
UmVhZGFibGUgU3RyZWFtcyBBUEldIEFkZCBSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIgY2xvc2Vk
IGdldHRlcgpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL2luZnJhc3RydWN0dXJlL2NvbW1vbi1kb20taW50ZXJmYWNlcy9jb2xsZWN0aW9ucy9o
dG1sYWxsY29sbGVjdGlvbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2luZnJhc3RydWN0dXJlL2NvbW1v
bi1kb20taW50ZXJmYWNlcy9jb2xsZWN0aW9ucy9odG1sYWxsY29sbGVjdGlvbi1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDIxNjg0OCkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9pbmZyYXN0cnVjdHVyZS9jb21tb24tZG9tLWludGVyZmFjZXMvY29s
bGVjdGlvbnMvaHRtbGFsbGNvbGxlY3Rpb24tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0xMCw1ICsxMCw1IEBAIFBBU1MgVGVzdCBsb29rdXAgSU1HIGluIGNvbGxlY3Rpb24gdXNpbmcK
IFBBU1MgVGVzdCBsb29rdXAgSU1HIGluIGNvbGxlY3Rpb24gdXNpbmcgLiAKIFBBU1MgVGVzdCBs
b29rdXAgdGFncyBpbiBjb2xsZWN0aW9uIHVzaW5nIC4gCiBQQVNTIFNob3VsZCBmaW5kIHJvb3Qg
ZWxlbWVudCB0b28gCi1GQUlMIFNob3VsZCBmaW5kIGJvdGggYW5jaG9ycyBhbmQgcHJvZHVjZSBh
IGxpc3QgdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ2RvY3VtZW50LmFs
bFsiZm9vIl0ubGVuZ3RoJykKK1BBU1MgU2hvdWxkIGZpbmQgYm90aCBhbmNob3JzIGFuZCBwcm9k
dWNlIGEgbGlzdCAKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>310098</attachid>
            <date>2017-05-14 14:39:00 -0700</date>
            <delta_ts>2017-05-14 16:00:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172095-20170514143847.patch</filename>
            <type>text/plain</type>
            <size>62321</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNjg0OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk0IEBACisyMDE3LTA1LTE0ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1dlYklETC9ET01dIFJlbW92ZSBuZWVk
IGZvciBjdXN0b20gYmluZGluZ3MgZm9yIEhUTUxBbGxDb2xsZWN0aW9uIGFuZCBicmluZyB1cCB0
byBzcGVjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NzIwOTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAt
IEFkZHMgc3VwcG9ydCB0aGUgbGVnYWN5Y2FsbGVyIFdlYklETCBzcGVjaWFsIGFubm90YXRpb24K
KyAgICAgICAgLSBVcGRhdGVzIGltcGxlbWVudGF0aW9uIG9mIEhUTUxBbGxDb2xsZWN0aW9uIHRv
IG1hdGNoIHRoZSBjdXJyZW50IEhUTUwgc3BlYy4KKworICAgICAgICBUZXN0OiBmYXN0L2RvbS9k
b2N1bWVudC1hbGwuaHRtbAorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTQmluZGluZ3NBbGxJbk9uZS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MQWxs
Q29sbGVjdGlvbkN1c3RvbS5jcHA6IFJlbW92ZWQuCisgICAgICAgIFJlbW92ZWQgSlNIVE1MQWxs
Q29sbGVjdGlvbkN1c3RvbS5jcHAKKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVJbnRlcmZhY2UpOgorICAgICAgICAoQWRk
TGVnYWN5Q2FsbGVyT3BlcmF0aW9uSWZOZWVkZWQpOgorICAgICAgICBCZWZvcmUgY29kZSBnZW5l
cmF0aW9uLCBjbG9uZSBhbGwgdGhlIGxlZ2FjeWNhbGxlciBvcGVyYXRpb25zIGFuZCBwdXQgdGhl
bQorICAgICAgICBpbiB0aGVpciBvd24gc2V0LCBzbyB0aGV5IGNhbiBmb3JtIGFuIG92ZXJsb2Fk
IHNldC4KKyAgICAgICAgCisgICAgICAgIChBZGRTdHJpbmdpZmllck9wZXJhdGlvbklmTmVlZGVk
KToKKyAgICAgICAgVXNlIHRoZSBDbG9uZSBwZXJsIG1vZHVsZSwgbm93IHRoYXQgSSBrbm93IGl0
IGV4aXN0cy4KKworICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOgorICAgICAgICBHcm91cCBjYWxs
IHJlbGF0ZWQgZnVuY3Rpb25hbGl0eSB0b2dldGhlciBhbmQgdXNlIG5ldyBJc0NhbGxhYmxlIHBy
ZWRpY2F0ZS4KKworICAgICAgICAoR2VuZXJhdGVPdmVybG9hZGVkRnVuY3Rpb25PckNvbnN0cnVj
dG9yKToKKyAgICAgICAgR2VuZXJhbGl6ZSBhIGxpdHRsZSBiaXQgdG8gYWxsb3cgdGhlIGZ1bmN0
aW9uIGJlaW5nIG92ZXJsb2FkZWQgdG8gYmUgYW4gb3ZlcmxvYWRlZCBsZWdhY3ljYWxsZXIuCisK
KyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAgICAgICBBZGQgY2FsbCB0byBn
ZW5lcmF0ZSB0aGUgbGVnYWN5Y2FsbGVyIGNvZGUuCisKKyAgICAgICAgKEdlbmVyYXRlTGVnYWN5
Q2FsbGVyRGVmaW5pdGlvbnMpOgorICAgICAgICAoR2VuZXJhdGVMZWdhY3lDYWxsZXJEZWZpbml0
aW9uKToKKyAgICAgICAgR2VuZXJhdGUgdGhlIGxlZ2FjeWNhbGxlciBkZWZpbml0aW9uLCB1c2lu
ZyBHZW5lcmF0ZUFyZ3VtZW50c0NvdW50Q2hlY2ssIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCisg
ICAgICAgIGFuZCBHZW5lcmF0ZUltcGxlbWVudGF0aW9uRnVuY3Rpb25DYWxsIHRvIGRvIGFsbCB0
aGUgaGVhdnkgbGlmdGluZy4KKworICAgICAgICAoSXNDYWxsYWJsZSk6CisgICAgICAgIEFkZCBo
ZWxwZXIgcHJlZGljYXRlIGZvciBib3RoIGN1c3RvbSBjYWxscyBhbmQgbGVnYWN5Y2FsbGVyLgor
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG06CisgICAgICAgICh0eXBl
QnlBcHBseWluZ1R5cGVkZWZzKToKKyAgICAgICAgKGNsb25lVHlwZSk6IERlbGV0ZWQuCisgICAg
ICAgIFVzZSBDbG9uZSByYXRoZXIgdGhhbiBoYW5kIHdyaXRpbmcgaXQuCisKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaAorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9UZXN0T2JqLmlkbDoKKyAgICAgICAgQWRkIHRlc3Rpbmcgb2YgbGVnYWN5Y2FsbGVyIG92
ZXJsb2FkaW5nLgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50OjphbGxGaWx0ZXJlZEJ5TmFtZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50
Lmg6CisgICAgICAgIEFkZCBuZXcgY29sbGVjdGlvbiBhY2Nlc3MgZm9yIHRoZSBIVE1MQWxsTmFt
ZWRTdWJDb2xsZWN0aW9uLgorCisgICAgICAgICogaHRtbC9DYWNoZWRIVE1MQ29sbGVjdGlvbi5o
OgorICAgICAgICAoV2ViQ29yZTo6bmFtZVNob3VsZEJlVmlzaWJsZUluRG9jdW1lbnRBbGwpOgor
ICAgICAgICBVcGRhdGUgbGlzdCBvZiB0YWdzIHRvIG1hdGNoIHRoZSBjdXJyZW50IHNwZWMuCisK
KyAgICAgICAgKiBodG1sL0NvbGxlY3Rpb25UeXBlLmg6CisgICAgICAgIEFkZCBuZXcgdHlwZSBm
b3IgSFRNTEFsbE5hbWVkU3ViQ29sbGVjdGlvbi4KKworICAgICAgICAqIGh0bWwvR2VuZXJpY0Nh
Y2hlZEhUTUxDb2xsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdlbmVyaWNDYWNoZWRI
VE1MQ29sbGVjdGlvbjx0cmF2ZXJzYWxUeXBlPjo6ZWxlbWVudE1hdGNoZXMpOgorICAgICAgICBT
cGVjaWZ5IHRoYXQgRG9jdW1lbnRBbGxOYW1lZEl0ZW1zIGRvZXMgbm90IHdhbnQKKyAgICAgICAg
dGhlIGRlZmF1bHQgZWxlbWVudE1hdGNoZXMuCisgCisgICAgICAgICogaHRtbC9IVE1MQWxsQ29s
bGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQWxsQ29sbGVjdGlvbjo6bmFtZWRP
ckluZGV4ZWRJdGVtT3JJdGVtcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQWxsQ29sbGVjdGlv
bjo6bmFtZWRJdGVtT3JJdGVtcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQWxsTmFtZWRTdWJD
b2xsZWN0aW9uOjp+SFRNTEFsbE5hbWVkU3ViQ29sbGVjdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MQWxsTmFtZWRTdWJDb2xsZWN0aW9uOjplbGVtZW50TWF0Y2hlcyk6CisgICAgICAgICog
aHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5oOgorICAgICAgICBNb3ZlIGltcGxlbWVudGF0aW9ucyBm
cm9tIHRoZSBjdXN0b20gYmluZGluZywgYW5kIHJlLWltcGxlbWVudCB0bworICAgICAgICBtYXRj
aCB0aGUgc3BlYy4gQWx0ZXJuYXRlIG5hbWVzIHRvIGl0ZW0vbmFtZWRJdGVtIHdlcmUgbmVlZGVk
IHRvIG5vdAorICAgICAgICBzaGFkb3cgdGhlIGV4aXN0aW5nIG9uZXMgaW4gSFRNTENvbGxlY3Rp
b24uIEhUTUxBbGxOYW1lZFN1YkNvbGxlY3Rpb24KKyAgICAgICAgaXMgYSBzaW1wbGUgSFRNTENv
bGxlY3Rpb24gdGhhdCBtYXRjaGVzIG9uIGEgbmFtZSwgZm9sbG93aW5nIHRoZSBydWxlcworICAg
ICAgICBvZiBkb2N1bWVudC5hbGwgYWJvdXQgd2hpY2ggdGFncyBjYW4gaGF2ZSBuYW1lIGF0dHJp
YnV0ZXMuCisKKyAgICAgICAgKiBodG1sL0hUTUxBbGxDb2xsZWN0aW9uLmlkbDoKKyAgICAgICAg
UmVtb3ZlIGN1c3RvbSBhbm5vdGF0aW9ucyBhbmQgYWRkIGxlZ2FjeWNhbGxlciB3aGljaCBpcyBu
b3cgc3VwcG9ydGVkLgorCisgICAgICAgICogaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjppbnZhbGlkYXRpb25UeXBlRXhjbHVkaW5nSWRBbmROYW1lQXR0cmlidXRl
cyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29sbGVjdGlvbjo6fkhUTUxDb2xsZWN0aW9uKToK
KyAgICAgICAgQWRkIERvY3VtZW50QWxsTmFtZWRJdGVtcy4KKwogMjAxNy0wNS0xMyAgRGF2aWQg
S2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFVudXNlZCBsYW1iZGEgaW4g
SlNXZWJLaXRTdWJ0bGVDcnlwdG86OndyYXBLZXkoKQpJbmRleDogU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJ
KHJldmlzaW9uIDIxNjg0OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTY4LDcgKzExNjgsNiBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAg
YmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTRXZlbnRU
YXJnZXRDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNFeGNlcHRpb25CYXNlLmNwcAotICAg
IGJpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCiAgICAgYmluZGluZ3Mv
anMvSlNIVE1MQXBwbGV0RWxlbWVudEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0hUTUxD
YW52YXNFbGVtZW50Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTSFRNTENvbGxlY3Rpb25D
dXN0b20uY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMTY4NDgpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTU3NDQsNyAr
NTc0NCw2IEBACiAJCUJDOTdFMjNCMTA5MTQ0OTUwMDEwRDM2MSAvKiBIVE1MQWxsQ29sbGVjdGlv
bi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzk3
RTIzOTEwOTE0NDk1MDAxMEQzNjEgLyogSFRNTEFsbENvbGxlY3Rpb24uY3BwICovOyB9OwogCQlC
Qzk3RTQxMjEwOTE1NEZBMDAxMEQzNjEgLyogSlNIVE1MQWxsQ29sbGVjdGlvbi5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzk3RTQxMDEwOTE1NEZB
MDAxMEQzNjEgLyogSlNIVE1MQWxsQ29sbGVjdGlvbi5jcHAgKi87IH07CiAJCUJDOTdFNDEzMTA5
MTU0RkEwMDEwRDM2MSAvKiBKU0hUTUxBbGxDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzk3RTQxMTEwOTE1NEZBMDAxMEQzNjEgLyog
SlNIVE1MQWxsQ29sbGVjdGlvbi5oICovOyB9OwotCQlCQzk3RTQyQzEwOTE1QjA2MDAxMEQzNjEg
LyogSlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzk3RTQyQjEwOTE1QjA2MDAxMEQzNjEgLyogSlNIVE1M
QWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAgKi87IH07CiAJCUJDOThBMjdEMEMwQzk5NTAwMDRCRUJG
NyAvKiBKU1N0eWxlU2hlZXRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkM5OEEyN0MwQzBDOTk1MDAwNEJFQkY3IC8qIEpTU3R5bGVTaGVl
dEN1c3RvbS5jcHAgKi87IH07CiAJCUJDQTE2OUEyMEJGRDU1QjQwMDE5Q0E3NiAvKiBKU0hUTUxU
YWJsZUNhcHRpb25FbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDQTE2OUEwMEJGRDU1QjQwMDE5Q0E3NiAvKiBKU0hUTUxUYWJsZUNhcHRp
b25FbGVtZW50LmNwcCAqLzsgfTsKIAkJQkNBMTY5QTMwQkZENTVCNDAwMTlDQTc2IC8qIEpTSFRN
TFRhYmxlQ2FwdGlvbkVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDQTE2OUExMEJGRDU1QjQwMDE5Q0E3NiAvKiBKU0hUTUxUYWJsZUNhcHRp
b25FbGVtZW50LmggKi87IH07CkBAIC0xNDE2Niw3ICsxNDE2NSw2IEBACiAJCUJDOTdFMjNDMTA5
MTQ2RjEwMDEwRDM2MSAvKiBIVE1MQWxsQ29sbGVjdGlvbi5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gSFRNTEFsbENvbGxlY3Rpb24uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlCQzk3RTQxMDEwOTE1NEZBMDAxMEQzNjEgLyogSlNIVE1MQWxsQ29sbGVjdGlvbi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0hUTUxBbGxDb2xsZWN0aW9uLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM5N0U0MTExMDkxNTRGQTAwMTBEMzYx
IC8qIEpTSFRNTEFsbENvbGxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNIVE1MQWxsQ29sbGVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlC
Qzk3RTQyQjEwOTE1QjA2MDAxMEQzNjEgLyogSlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0hUTUxBbGxDb2xsZWN0aW9u
Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM5OEEyN0MwQzBDOTk1
MDAwNEJFQkY3IC8qIEpTU3R5bGVTaGVldEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU1N0eWxlU2hlZXRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlCQzlBNjE0MTE0Njg1OUQ5MDA2MDU3RkQgLyogRE9NRXhjZXB0aW9ucy5p
biAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBET01FeGNlcHRpb25zLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
QzlBNjE0MjE0Njg1OUQ5MDA2MDU3RkQgLyogRXZlbnROYW1lcy5pbiAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBFdmVudE5hbWVz
LmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTk1NjEsNiArMTk1NTksNyBAQAog
CQkJCTUxRTI2OTMyMUREM0JDNDMwMDZCNkE1OCAvKiBKU0lEQlRyYW5zYWN0aW9uQ3VzdG9tLmNw
cCAqLywKIAkJCQlBN0QwMzE4RDBFOTM1NDAzMDBFMjRBQ0QgLyogSlNJbWFnZURhdGFDdXN0b20u
Y3BwICovLAogCQkJCUFENzI2RkU3MTZEOUYyMDQwMDNBNEU2RCAvKiBKU01lZGlhTGlzdEN1c3Rv
bS5oICovLAorCQkJCTQxNUNEQUY2MUU2Q0UwRDMwMDRGMTFFRSAvKiBKU01lZGlhU3RyZWFtVHJh
Y2tDdXN0b20uY3BwICovLAogCQkJCUUxQTVGOTlBMEU3RUFBMjUwMEFGODVFQSAvKiBKU01lc3Nh
Z2VDaGFubmVsQ3VzdG9tLmNwcCAqLywKIAkJCQlFMUFERUQ0NjBFNzZCOEREMDA0QTFBNUUgLyog
SlNNZXNzYWdlUG9ydEN1c3RvbS5jcHAgKi8sCiAJCQkJMUE3NTBERDMwQTkwRTcyOTAwMEZGMjE1
IC8qIEpTTm9kZUl0ZXJhdG9yQ3VzdG9tLmNwcCAqLywKQEAgLTIzNDYyLDcgKzIzNDYxLDYgQEAK
IAkJCQlDMjgwODM0MTFDNkRDOTZBMDAxNDUxQjYgLyogSlNGb250RmFjZUN1c3RvbS5jcHAgKi8s
CiAJCQkJMUMyNEVFQUExQzcyQUEwQTAwODBGOEZDIC8qIEpTRm9udEZhY2VTZXRDdXN0b20uY3Bw
ICovLAogCQkJCUJDRTdCMTkyMEQ0RTg2OTYwMDc1QTUzOSAvKiBKU0hpc3RvcnlDdXN0b20uY3Bw
ICovLAotCQkJCUJDOTdFNDJCMTA5MTVCMDYwMDEwRDM2MSAvKiBKU0hUTUxBbGxDb2xsZWN0aW9u
Q3VzdG9tLmNwcCAqLywKIAkJCQlCQzRFREVGMzBDMDhGM0ZCMDA3RURENDkgLyogSlNIVE1MQXBw
bGV0RWxlbWVudEN1c3RvbS5jcHAgKi8sCiAJCQkJOTM5MjI2MkMxMDMyMTA3QjAwNkU3RDVEIC8q
IEpTSFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwICovLAogCQkJCUJDNTE1ODBBMEMwM0Q0MDQw
MDhCQjBFRSAvKiBKU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAgKi8sCkBAIC0yMzQ3Nyw3ICsyMzQ3
NSw2IEBACiAJCQkJN0E3NEVDQkMxMDE4MzlEQTAwQkY5MzlFIC8qIEpTSW5zcGVjdG9yRnJvbnRl
bmRIb3N0Q3VzdG9tLmNwcCAqLywKIAkJCQlCQ0UxQzQzRjBEOTgzMEY0MDAzQjAyRjIgLyogSlNM
b2NhdGlvbkN1c3RvbS5jcHAgKi8sCiAJCQkJMkQ5QkY3NDgxREJGRERGODAwN0E3RDk5IC8qIEpT
TWVkaWFLZXlTZXNzaW9uQ3VzdG9tLmNwcCAqLywKLQkJCQk0MTVDREFGNjFFNkNFMEQzMDA0RjEx
RUUgLyogSlNNZWRpYVN0cmVhbVRyYWNrQ3VzdG9tLmNwcCAqLywKIAkJCQk0MTBCN0U3MTEwNDVG
QUIwMDBEODIyNEYgLyogSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwICovLAogCQkJCUExRTVCMzFE
MUFBRDFEQTQwMDZFQkVGQiAvKiBKU01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDdXN0b20uY3Bw
ICovLAogCQkJCUM2RjA5MTdFMTQzQTJCQjkwMDY4NTg0OSAvKiBKU011dGF0aW9uT2JzZXJ2ZXJD
dXN0b20uY3BwICovLApAQCAtMzE3MzgsNyArMzE3MzUsNiBAQAogCQkJCTU3OTU3Q0I2MUU5NzJD
NzgwMDgwNzJBQiAvKiBKU0hrZGZQYXJhbXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTdFMjMz
NjkxRENBQjI0MzAwRjI4RDAxIC8qIEpTSG1hY0tleVBhcmFtcy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlCQzk3RTQxMjEwOTE1NEZBMDAxMEQzNjEgLyogSlNIVE1MQWxsQ29sbGVjdGlvbi5jcHAg
aW4gU291cmNlcyAqLywKLQkJCQlCQzk3RTQyQzEwOTE1QjA2MDAxMEQzNjEgLyogSlNIVE1MQWxs
Q29sbGVjdGlvbkN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTRBMkRFRjBBMUI4NTJB
MDBDODA3RjggLyogSlNIVE1MQW5jaG9yRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkx
QTRBMkRGMTBBMUI4NTJBMDBDODA3RjggLyogSlNIVE1MQXBwbGV0RWxlbWVudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCQzRFREVGNDBDMDhGM0ZCMDA3RURENDkgLyogSlNIVE1MQXBwbGV0RWxl
bWVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAkocmV2aXNpb24gMjE2ODQ4KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNjcsNyArNjcsNiBAQAogI2luY2x1ZGUgIkpTRXZlbnRMaXN0ZW5lci5j
cHAiCiAjaW5jbHVkZSAiSlNFdmVudFRhcmdldEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNFeGNl
cHRpb25CYXNlLmNwcCIKLSNpbmNsdWRlICJKU0hUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcCIK
ICNpbmNsdWRlICJKU0hUTUxBcHBsZXRFbGVtZW50Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0hU
TUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0hUTUxDb2xsZWN0aW9uQ3Vz
dG9tLmNwcCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxl
Y3Rpb25DdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCShyZXZpc2lvbiAyMTY4NDgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcAkobm9u
ZXhpc3RlbnQpCkBAIC0xLDEyNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5LCAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJK
U0hUTUxBbGxDb2xsZWN0aW9uLmgiCi0KLSNpbmNsdWRlICJIVE1MQWxsQ29sbGVjdGlvbi5oIgot
I2luY2x1ZGUgIkpTTm9kZS5oIgotI2luY2x1ZGUgIkpTTm9kZUxpc3QuaCIKLSNpbmNsdWRlICJT
dGF0aWNOb2RlTGlzdC5oIgotI2luY2x1ZGUgPHJ1bnRpbWUvSWRlbnRpZmllcklubGluZXMuaD4K
LQotdXNpbmcgbmFtZXNwYWNlIEpTQzsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMg
SlNWYWx1ZSBuYW1lZEl0ZW1zKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTSFRNTEFsbENvbGxlY3Rpb24q
IGNvbGxlY3Rpb24sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCi17Ci0gICAgVmVjdG9yPFJl
ZjxFbGVtZW50Pj4gbmFtZWRJdGVtcyA9IGNvbGxlY3Rpb24tPndyYXBwZWQoKS5uYW1lZEl0ZW1z
KHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOwotCi0gICAgaWYgKG5h
bWVkSXRlbXMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICBp
ZiAobmFtZWRJdGVtcy5zaXplKCkgPT0gMSkKLSAgICAgICAgcmV0dXJuIHRvSlMoJnN0YXRlLCBj
b2xsZWN0aW9uLT5nbG9iYWxPYmplY3QoKSwgbmFtZWRJdGVtc1swXSk7Ci0KLSAgICAvLyBGSVhN
RTogSFRNTDUgc3BlY2lmaWNhdGlvbiBzYXlzIHRoaXMgc2hvdWxkIGJlIGEgSFRNTENvbGxlY3Rp
b24uCi0gICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQt
d29yay9tdWx0aXBhZ2UvY29tbW9uLWRvbS1pbnRlcmZhY2VzLmh0bWwjaHRtbGFsbGNvbGxlY3Rp
b24KLSAgICByZXR1cm4gdG9KUygmc3RhdGUsIGNvbGxlY3Rpb24tPmdsb2JhbE9iamVjdCgpLCBT
dGF0aWNFbGVtZW50TGlzdDo6Y3JlYXRlKFdURk1vdmUobmFtZWRJdGVtcykpKTsKLX0KLQotLy8g
SFRNTEFsbENvbGxlY3Rpb25zIGFyZSBzdHJhbmdlIG9iamVjdHMsIHRoZXkgc3VwcG9ydCBib3Ro
IGdldCBhbmQgY2FsbC4KLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxI
VE1MQWxsQ29sbGVjdGlvbihFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0KLSAgICBp
ZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKLQotICAgIC8vIERvIG5vdCB1c2UgdGhpc09iaiBoZXJlLiBJ
dCBjYW4gYmUgdGhlIEpTSFRNTERvY3VtZW50LCBpbiB0aGUgZG9jdW1lbnQuZm9ybXMoaSkgY2Fz
ZS4KLSAgICBKU0hUTUxBbGxDb2xsZWN0aW9uKiBqc0NvbGxlY3Rpb24gPSBqc0Nhc3Q8SlNIVE1M
QWxsQ29sbGVjdGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkpOwotICAgIEhUTUxBbGxDb2xsZWN0aW9u
JiBjb2xsZWN0aW9uID0ganNDb2xsZWN0aW9uLT53cmFwcGVkKCk7Ci0KLSAgICAvLyBBbHNvLCBk
byB3ZSBuZWVkIHRoZSBUeXBlRXJyb3IgdGVzdCBoZXJlID8KLQotICAgIGlmIChleGVjLT5hcmd1
bWVudENvdW50KCkgPT0gMSkgewotICAgICAgICAvLyBTdXBwb3J0IGZvciBkb2N1bWVudC5hbGwo
PGluZGV4PikgZXRjLgotICAgICAgICBTdHJpbmcgc3RyaW5nID0gZXhlYy0+YXJndW1lbnQoMCku
dG9XVEZTdHJpbmcoZXhlYyk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwotICAgICAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5k
ZXggPSBwYXJzZUluZGV4KCpzdHJpbmcuaW1wbCgpKSkKLSAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodG9KUyhleGVjLCBqc0NvbGxlY3Rpb24tPmdsb2JhbE9iamVjdCgpLCBjb2xs
ZWN0aW9uLml0ZW0oaW5kZXgudmFsdWUoKSkpKTsKLQotICAgICAgICAvLyBTdXBwb3J0IGZvciBk
b2N1bWVudC5pbWFnZXMoJzxuYW1lPicpIGV0Yy4KLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShuYW1lZEl0ZW1zKCpleGVjLCBqc0NvbGxlY3Rpb24sIElkZW50aWZpZXI6OmZyb21TdHJp
bmcoZXhlYywgc3RyaW5nKSkpOwotICAgIH0KLQotICAgIC8vIFRoZSBzZWNvbmQgYXJnLCBpZiBz
ZXQsIGlzIHRoZSBpbmRleCBvZiB0aGUgaXRlbSB3ZSB3YW50Ci0gICAgU3RyaW5nIHN0cmluZyA9
IGV4ZWMtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKGV4ZWMpOwotICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVp
bnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgoKmV4ZWMtPmFyZ3VtZW50KDEpLnRvV1RGU3RyaW5n
KGV4ZWMpLmltcGwoKSkpIHsKLSAgICAgICAgaWYgKGF1dG8qIGl0ZW0gPSBjb2xsZWN0aW9uLm5h
bWVkSXRlbVdpdGhJbmRleChzdHJpbmcsIGluZGV4LnZhbHVlKCkpKQotICAgICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTKGV4ZWMsIGpzQ29sbGVjdGlvbi0+Z2xvYmFsT2JqZWN0
KCksICppdGVtKSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKLX0KLQotQ2FsbFR5cGUgSlNIVE1MQWxsQ29sbGVjdGlvbjo6Z2V0Q2FsbERhdGEo
SlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQotewotICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5j
dGlvbiA9IGNhbGxIVE1MQWxsQ29sbGVjdGlvbjsKLSAgICByZXR1cm4gQ2FsbFR5cGU6Okhvc3Q7
Ci19Ci0KLWJvb2wgSlNIVE1MQWxsQ29sbGVjdGlvbjo6bmFtZUdldHRlcihFeGVjU3RhdGUqIHN0
YXRlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlJiB2YWx1ZSkKLXsKLSAgICBK
U1ZhbHVlIGl0ZW1zID0gbmFtZWRJdGVtcygqc3RhdGUsIHRoaXMsIHByb3BlcnR5TmFtZSk7Ci0g
ICAgaWYgKGl0ZW1zLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IHZhbHVlID0gaXRlbXM7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLUpTVmFsdWUgSlNIVE1MQWxs
Q29sbGVjdGlvbjo6aXRlbShFeGVjU3RhdGUmIHN0YXRlKQotewotICAgIFZNJiB2bSA9IHN0YXRl
LnZtKCk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotCi0gICAg
aWYgKFVOTElLRUxZKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4g
dGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3IoJnN0YXRlKSk7Ci0KLSAgICBTdHJpbmcgYXJndW1lbnQgPSBzdGF0ZS51bmNoZWNrZWRBcmd1
bWVudCgwKS50b1dURlN0cmluZygmc3RhdGUpOwotICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQz
Ml90PiBpbmRleCA9IHBhcnNlSW5kZXgoKmFyZ3VtZW50LmltcGwoKSkpCi0gICAgICAgIHJldHVy
biB0b0pTKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCksIHdyYXBwZWQoKS5pdGVtKGluZGV4LnZhbHVl
KCkpKTsKLSAgICByZXR1cm4gbmFtZWRJdGVtcyhzdGF0ZSwgdGhpcywgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZygmc3RhdGUsIGFyZ3VtZW50KSk7Ci19Ci0KLUpTVmFsdWUgSlNIVE1MQWxsQ29sbGVj
dGlvbjo6bmFtZWRJdGVtKEV4ZWNTdGF0ZSYgc3RhdGUpCi17Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9
IG5hbWVkSXRlbXMoc3RhdGUsIHRoaXMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCBz
dGF0ZS5hcmd1bWVudCgwKS50b1dURlN0cmluZygmc3RhdGUpKSk7Ci0gICAgcmV0dXJuIHZhbHVl
LmlzVW5kZWZpbmVkKCkgPyBqc051bGwoKSA6IHZhbHVlOwotfQotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0hUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcApfX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wt
c3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVy
dHkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtCShyZXZpc2lvbiAyMTY4NDgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQs
NyBAQCBwYWNrYWdlIENvZGVHZW5lcmF0b3JKUzsKIHVzZSBzdHJpY3Q7CiB1c2UgY29uc3RhbnQg
RmlsZU5hbWVQcmVmaXggPT4gIkpTIjsKIHVzZSBDYXJwIHF3PGxvbmdtZXNzPjsKK3VzZSBDbG9u
ZTsKIHVzZSBEYXRhOjpEdW1wZXI7CiB1c2UgSGFzaGVyOwogCkBAIC0xNjIsNyArMTYzLDkgQEAg
c3ViIEdlbmVyYXRlSW50ZXJmYWNlCiAgICAgbXkgKCRvYmplY3QsICRpbnRlcmZhY2UsICRkZWZp
bmVzLCAkZW51bWVyYXRpb25zLCAkZGljdGlvbmFyaWVzKSA9IEBfOwogCiAgICAgJGNvZGVHZW5l
cmF0b3ItPkxpbmtPdmVybG9hZGVkRnVuY3Rpb25zKCRpbnRlcmZhY2UpOworCiAgICAgQWRkU3Ry
aW5naWZpZXJPcGVyYXRpb25JZk5lZWRlZCgkaW50ZXJmYWNlKTsKKyAgICBBZGRMZWdhY3lDYWxs
ZXJPcGVyYXRpb25JZk5lZWRlZCgkaW50ZXJmYWNlKTsKIAogICAgIGlmICgkaW50ZXJmYWNlLT5p
c0NhbGxiYWNrKSB7CiAgICAgICAgICRvYmplY3QtPkdlbmVyYXRlQ2FsbGJhY2tJbnRlcmZhY2VI
ZWFkZXIoJGludGVyZmFjZSwgJGVudW1lcmF0aW9ucywgJGRpY3Rpb25hcmllcyk7CkBAIC0xODgs
MTAgKzE5MSw3IEBAIHN1YiBBZGRTdHJpbmdpZmllck9wZXJhdGlvbklmTmVlZGVkCiAgICAgICAg
ICRzdHJpbmdpZmllci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJpYnV0ZUxpc3Qp
OwogICAgICAgICBkaWUgInN0cmluZ2lmaWVyIGNhbiBvbmx5IGJlIHVzZWQgb24gYXR0cmlidXRl
cyBvZiBTdHJpbmcgdHlwZXMiIHVubGVzcyAkY29kZUdlbmVyYXRvci0+SXNTdHJpbmdUeXBlKCRh
dHRyaWJ1dGUtPnR5cGUpOwogICAgICAgICAKLSAgICAgICAgIyBGSVhNRTogVGhpcyBzaG91bGQg
dXNlIElETFBhcnNlcidzIGNsb25lVHlwZS4KLSAgICAgICAgbXkgJHR5cGUgPSBJRExUeXBlLT5u
ZXcoKTsKLSAgICAgICAgJHR5cGUtPm5hbWUoJGF0dHJpYnV0ZS0+dHlwZS0+bmFtZSk7Ci0KKyAg
ICAgICAgbXkgJHR5cGUgPSBDbG9uZTo6Y2xvbmUoJGF0dHJpYnV0ZS0+dHlwZSk7CiAgICAgICAg
ICRzdHJpbmdpZmllci0+dHlwZSgkdHlwZSk7CiAKICAgICAgICAgcHVzaChAeyRpbnRlcmZhY2Ut
PmZ1bmN0aW9uc30sICRzdHJpbmdpZmllcik7CkBAIC0xOTksNiArMTk5LDI0IEBAIHN1YiBBZGRT
dHJpbmdpZmllck9wZXJhdGlvbklmTmVlZGVkCiAgICAgfQogfQogCitzdWIgQWRkTGVnYWN5Q2Fs
bGVyT3BlcmF0aW9uSWZOZWVkZWQKK3sKKyAgICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7CisKKyAg
ICBmb3JlYWNoIG15ICRmdW5jdGlvbiAoQHskaW50ZXJmYWNlLT5mdW5jdGlvbnN9LCBAeyRpbnRl
cmZhY2UtPmFub255bW91c0Z1bmN0aW9uc30pIHsKKyAgICAgICAgbXkgJGlzTGVnYWN5Q2FsbGVy
ID0gZ3JlcCB7ICRfIGVxICJsZWdhY3ljYWxsZXIiIH0gQHskZnVuY3Rpb24tPnNwZWNpYWxzfTsK
KyAgICAgICAgaWYgKCRpc0xlZ2FjeUNhbGxlcikgeworICAgICAgICAgICAgJGludGVyZmFjZS0+
e0xlZ2FjeUNhbGxlcnN9ID0gW10gaWYgIWV4aXN0cyAkaW50ZXJmYWNlLT57TGVnYWN5Q2FsbGVy
c307CisKKyAgICAgICAgICAgIG15ICRjbG9uZWRPcGVyYXRpb24gPSBDbG9uZTo6Y2xvbmUoJGZ1
bmN0aW9uKTsKKyAgICAgICAgICAgIHB1c2goJGludGVyZmFjZS0+e0xlZ2FjeUNhbGxlcnN9LCAk
Y2xvbmVkT3BlcmF0aW9uKTsKKyAgICAKKyAgICAgICAgICAgICRjbG9uZWRPcGVyYXRpb24tPntv
dmVybG9hZHN9ID0gJGludGVyZmFjZS0+e0xlZ2FjeUNhbGxlcnN9OworICAgICAgICAgICAgJGNs
b25lZE9wZXJhdGlvbi0+e292ZXJsb2FkSW5kZXh9ID0gQHskaW50ZXJmYWNlLT57TGVnYWN5Q2Fs
bGVyc319OworICAgICAgICB9CisgICAgfQorfQorCiBzdWIgRXZlbnRIYW5kbGVyQXR0cmlidXRl
RXZlbnROYW1lCiB7CiAgICAgbXkgJGF0dHJpYnV0ZSA9IHNoaWZ0OwpAQCAtMTc0MCw4ICsxNzU4
LDYgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgICAgIH0KICAgICB9CiAKLSAgICAkaGVhZGVy
SW5jbHVkZXN7IjxydW50aW1lL0NhbGxEYXRhLmg+In0gPSAxIGlmICRpbnRlcmZhY2UtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e0N1c3RvbUNhbGx9OwotCiAgICAgJGhlYWRlckluY2x1ZGVzeyIkaW50
ZXJmYWNlTmFtZS5oIn0gPSAxIGlmICRoYXNQYXJlbnQgJiYgJGludGVyZmFjZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57SlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0fTsKIAogICAgICRoZWFkZXJJbmNs
dWRlc3siU1ZHRWxlbWVudC5oIn0gPSAxIGlmICRjbGFzc05hbWUgPX4gL15KU1NWRy87CkBAIC0x
ODY0LDcgKzE4ODAsNiBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICB9CiAgICAgJHN0cnVjdHVy
ZUZsYWdzeyJKU0M6Ok5ld0ltcHVyZVByb3BlcnR5RmlyZXNXYXRjaHBvaW50cyJ9ID0gMSBpZiAk
aW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntOZXdJbXB1cmVQcm9wZXJ0eUZpcmVzV2F0
Y2hwb2ludHN9OwogICAgICRzdHJ1Y3R1cmVGbGFnc3siSlNDOjpJc0ltbXV0YWJsZVByb3RvdHlw
ZUV4b3RpY09iamVjdCJ9ID0gMSBpZiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntJ
c0ltbXV0YWJsZVByb3RvdHlwZUV4b3RpY09iamVjdH07Ci0gICAgJHN0cnVjdHVyZUZsYWdzeyJK
U0M6OlR5cGVPZlNob3VsZENhbGxHZXRDYWxsRGF0YSJ9ID0gMSBpZiAkaW50ZXJmYWNlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPntDdXN0b21DYWxsfTsKIAogICAgICMgR2V0dGVycwogICAgIGlmICgk
aGFzR2V0dGVyKSB7CkBAIC0xOTIwLDggKzE5MzUsMTIgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAg
ICAgIyBDdXN0b20gcHVzaEV2ZW50SGFuZGxlclNjb3BlIGZ1bmN0aW9uCiAgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIiAgICBKU0M6OkpTU2NvcGUqIHB1c2hFdmVudEhhbmRsZXJTY29wZShKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6SlNTY29wZSopIGNvbnN0O1xuXG4iKSBpZiAkaW50ZXJmYWNlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPntKU0N1c3RvbVB1c2hFdmVudEhhbmRsZXJTY29wZX07CiAKLSAg
ICAjIEN1c3RvbSBjYWxsIGZ1bmN0aW9ucwotICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAg
c3RhdGljIEpTQzo6Q2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDOjpKU0NlbGwqLCBKU0M6OkNhbGxE
YXRhJik7XG5cbiIpIGlmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbUNh
bGx9OworICAgICMgTGVnYWN5Q2FsbGVyIGFuZCBjdXN0b20gY2FsbCBmdW5jdGlvbnMKKyAgICBp
ZiAoSXNDYWxsYWJsZSgkaW50ZXJmYWNlKSkgeworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCAiICAgIHN0YXRpYyBKU0M6OkNhbGxUeXBlIGdldENhbGxEYXRhKEpTQzo6SlNDZWxsKiwgSlND
OjpDYWxsRGF0YSYpO1xuXG4iKTsKKyAgICAgICAgJGhlYWRlckluY2x1ZGVzeyI8cnVudGltZS9D
YWxsRGF0YS5oPiJ9ID0gMTsKKyAgICAgICAgJHN0cnVjdHVyZUZsYWdzeyJKU0M6OlR5cGVPZlNo
b3VsZENhbGxHZXRDYWxsRGF0YSJ9ID0gMTsKKyAgICB9CiAKICAgICAjIEN1c3RvbSBkZWxldGVQ
cm9wZXJ0eSBmdW5jdGlvbgogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIGJv
b2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJv
cGVydHlOYW1lKTtcbiIpIGlmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3Rv
bURlbGV0ZVByb3BlcnR5fTsKQEAgLTI1ODQsMTQgKzI2MDMsMTYgQEAgc3ViIGdldENvbmRpdGlv
bmFsRm9yRnVuY3Rpb25Db25zaWRlcmluZwogIyBodHRwOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJp
ZGwvI2VzLW92ZXJsb2Fkcwogc3ViIEdlbmVyYXRlT3ZlcmxvYWRlZEZ1bmN0aW9uT3JDb25zdHJ1
Y3RvcgogewotICAgIG15ICgkZnVuY3Rpb24sICRpbnRlcmZhY2UsICRpc0NvbnN0cnVjdG9yKSA9
IEBfOworICAgIG15ICgkZnVuY3Rpb24sICRpbnRlcmZhY2UsICR2YXJpYW50KSA9IEBfOwogICAg
IG15ICVhbGxTZXRzID0gQ29tcHV0ZUVmZmVjdGl2ZU92ZXJsb2FkU2V0KCRmdW5jdGlvbi0+e292
ZXJsb2Fkc30pOwogCiAgICAgbXkgJGludGVyZmFjZU5hbWUgPSAkaW50ZXJmYWNlLT50eXBlLT5u
YW1lOwogICAgIG15ICRjbGFzc05hbWUgPSAiSlMkaW50ZXJmYWNlTmFtZSI7CiAgICAgbXkgJGZ1
bmN0aW9uTmFtZTsKLSAgICBpZiAoJGlzQ29uc3RydWN0b3IpIHsKKyAgICBpZiAoJHZhcmlhbnQg
ZXEgImNvbnN0cnVjdG9yIikgewogICAgICAgICAkZnVuY3Rpb25OYW1lID0gImNvbnN0cnVjdCR7
Y2xhc3NOYW1lfSI7CisgICAgfSBlbHNpZiAoJHZhcmlhbnQgZXEgImxlZ2FjeWNhbGxlciIpIHsK
KyAgICAgICAgJGZ1bmN0aW9uTmFtZSA9ICJjYWxsJHtjbGFzc05hbWV9IjsKICAgICB9IGVsc2Ug
ewogICAgICAgICBteSAka2luZCA9ICRmdW5jdGlvbi0+aXNTdGF0aWMgPyAiQ29uc3RydWN0b3Ii
IDogKE9wZXJhdGlvblNob3VsZEJlT25JbnN0YW5jZSgkaW50ZXJmYWNlLCAkZnVuY3Rpb24pID8g
Ikluc3RhbmNlIiA6ICJQcm90b3R5cGUiKTsKICAgICAgICAgJGZ1bmN0aW9uTmFtZSA9ICJqcyR7
aW50ZXJmYWNlTmFtZX0ke2tpbmR9RnVuY3Rpb24iIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmly
c3QoJGZ1bmN0aW9uLT5uYW1lKTsKQEAgLTI2NzcsNyArMjY5OCw3IEBAIHN1YiBHZW5lcmF0ZU92
ZXJsb2FkZWRGdW5jdGlvbk9yQ29uc3RydWMKICAgICBteSAkY29uZGl0aW9uYWxBdHRyaWJ1dGUg
PSBnZXRDb25kaXRpb25hbEZvckZ1bmN0aW9uQ29uc2lkZXJpbmdPdmVybG9hZHMoJGZ1bmN0aW9u
KTsKICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29uZGl0aW9uYWxBdHRyaWJ1dGUgPyAk
Y29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZ0Zyb21BdHRyaWJ1dGVWYWx1
ZSgkY29uZGl0aW9uYWxBdHRyaWJ1dGUpIDogdW5kZWY7CiAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKLSAg
ICBpZiAoJGlzQ29uc3RydWN0b3IpIHsKKyAgICBpZiAoJHZhcmlhbnQgZXEgImNvbnN0cnVjdG9y
IikgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInRlbXBsYXRlPD4gRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCAke2NsYXNzTmFtZX1Db25zdHJ1Y3Rvcjo6Y29uc3RydWN0KEV4ZWNT
dGF0ZSogc3RhdGUpXG4iKTsKICAgICB9IGVsc2UgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgJHtmdW5jdGlvbk5hbWV9KEV4ZWNTdGF0
ZSogc3RhdGUpXG4iKTsKQEAgLTQyNTksMTYgKzQyODAsMTggQEAgRU5ECiAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiNlbmRpZlxuXG4iKSBpZiAkY29uZGl0aW9uYWw7CiAKICAgICAg
ICAgICAgICMgR2VuZXJhdGUgYSBmdW5jdGlvbiBkaXNwYXRjaGluZyBjYWxsIHRvIHRoZSByZXN0
IG9mIHRoZSBvdmVybG9hZHMuCi0gICAgICAgICAgICBHZW5lcmF0ZU92ZXJsb2FkZWRGdW5jdGlv
bk9yQ29uc3RydWN0b3IoJGZ1bmN0aW9uLCAkaW50ZXJmYWNlLCAwKSBpZiAhJGlzQ3VzdG9tICYm
ICRpc092ZXJsb2FkZWQgJiYgJGZ1bmN0aW9uLT57b3ZlcmxvYWRJbmRleH0gPT0gQHskZnVuY3Rp
b24tPntvdmVybG9hZHN9fTsKKyAgICAgICAgICAgIEdlbmVyYXRlT3ZlcmxvYWRlZEZ1bmN0aW9u
T3JDb25zdHJ1Y3RvcigkZnVuY3Rpb24sICRpbnRlcmZhY2UsICJvcGVyYXRpb24iKSBpZiAhJGlz
Q3VzdG9tICYmICRpc092ZXJsb2FkZWQgJiYgJGZ1bmN0aW9uLT57b3ZlcmxvYWRJbmRleH0gPT0g
QHskZnVuY3Rpb24tPntvdmVybG9hZHN9fTsKICAgICAgICAgfQogCiAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAkZW5kQXBwbGVDb3B5cmlnaHQpIGlmICRpbkFwcGxlQ29weXJpZ2h0OwogCiAg
ICAgfQogCisgICAgR2VuZXJhdGVMZWdhY3lDYWxsZXJEZWZpbml0aW9ucygkaW50ZXJmYWNlLCAk
Y2xhc3NOYW1lKTsKIAogICAgIEdlbmVyYXRlSW1wbGVtZW50YXRpb25JdGVyYWJsZUZ1bmN0aW9u
cygkaW50ZXJmYWNlKSBpZiAkaW50ZXJmYWNlLT5pdGVyYWJsZTsKICAgICBHZW5lcmF0ZVNlcmlh
bGl6ZXJGdW5jdGlvbigkaW50ZXJmYWNlLCAkY2xhc3NOYW1lKSBpZiAkaW50ZXJmYWNlLT5zZXJp
YWxpemFibGU7CisKICAgICBBZGRUb0ltcGxJbmNsdWRlcygiSlNET01NYXBMaWtlLmgiKSBpZiAk
aW50ZXJmYWNlLT5tYXBMaWtlOwogCiAgICAgaWYgKCRuZWVkc1Zpc2l0Q2hpbGRyZW4pIHsKQEAg
LTQ1NzMsNiArNDU5Niw2MiBAQCBzdWIgR2VuZXJhdGVTZXJpYWxpemVyRnVuY3Rpb24KICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIlxuIik7CiB9CiAKK3N1YiBHZW5lcmF0ZUxlZ2FjeUNhbGxlckRl
ZmluaXRpb25zCit7CisgICAgbXkgKCRpbnRlcmZhY2UsICRjbGFzc05hbWUpID0gQF87CisKKyAg
ICBpZiAoIUlzQ2FsbGFibGUoJGludGVyZmFjZSkgfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57Q3VzdG9tQ2FsbH0pIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG15
IEBsZWdhY3lDYWxsZXJzID0gQHskaW50ZXJmYWNlLT57TGVnYWN5Q2FsbGVyc319OworICAgIGlm
IChAbGVnYWN5Q2FsbGVycyA+IDEpIHsKKyAgICAgICAgZm9yZWFjaCBteSAkbGVnYWN5Q2FsbGVy
IChAbGVnYWN5Q2FsbGVycykgeworICAgICAgICAgICAgR2VuZXJhdGVMZWdhY3lDYWxsZXJEZWZp
bml0aW9uKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRsZWdhY3lDYWxsZXIpOworICAgICAgICB9
CisgICAgICAgIEdlbmVyYXRlT3ZlcmxvYWRlZEZ1bmN0aW9uT3JDb25zdHJ1Y3RvcigkbGVnYWN5
Q2FsbGVyc1swXSwgJGludGVyZmFjZSwgImxlZ2FjeWNhbGxlciIpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIEdlbmVyYXRlTGVnYWN5Q2FsbGVyRGVmaW5pdGlvbigkaW50ZXJmYWNlLCAkY2xhc3NO
YW1lLCAkbGVnYWN5Q2FsbGVyc1swXSk7CisgICAgfQorCisgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJDYWxsVHlwZSAke2NsYXNzTmFtZX06OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJiBj
YWxsRGF0YSlcbiIpOworICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CisgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY2FsbCR7Y2xhc3NO
YW1lfTtcbiIpOworICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBDYWxsVHlwZTo6
SG9zdDtcbiIpOworICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuIik7CisgICAgcHVzaChAaW1w
bENvbnRlbnQsICJcbiIpOworfQorCitzdWIgR2VuZXJhdGVMZWdhY3lDYWxsZXJEZWZpbml0aW9u
Cit7CisgICAgbXkgKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRmdW5jdGlvbikgPSBAXzsKKwor
ICAgIG15ICRpc092ZXJsb2FkZWQgPSAkZnVuY3Rpb24tPntvdmVybG9hZHN9ICYmIEB7JGZ1bmN0
aW9uLT57b3ZlcmxvYWRzfX0gPiAxOworICAgIGlmICgkaXNPdmVybG9hZGVkKSB7CisgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAic3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjYWxsJHtj
bGFzc05hbWV9JGZ1bmN0aW9uLT57b3ZlcmxvYWRJbmRleH0oRXhlY1N0YXRlKiBzdGF0ZSlcbiIp
OworICAgIH0gZWxzZSB7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAic3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbCR7Y2xhc3NOYW1lfShFeGVjU3RhdGUqIHN0YXRl
KVxuIik7CisgICAgfQorCisgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKKyAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTtcbiIpOworICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pO1xuIik7CisgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5VU0VEX1BBUkFNKHRocm93
U2NvcGUpO1xuIik7CisKKyAgICBHZW5lcmF0ZUFyZ3VtZW50c0NvdW50Q2hlY2soXEBpbXBsQ29u
dGVudCwgJGZ1bmN0aW9uLCAkaW50ZXJmYWNlKTsKKworICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8JHtjbGFzc05hbWV9Kj4oc3RhdGUtPmpzQ2Fs
bGVlKCkpO1xuIik7CisgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQVNTRVJUKGNhc3RlZFRo
aXMpO1xuIik7CisgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTtcbiIpOworCisgICAgbXkgJGZ1bmN0aW9uSW1wbGVtZW50YXRpb25O
YW1lID0gJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntJbXBsZW1lbnRlZEFzfSB8fCAk
Y29kZUdlbmVyYXRvci0+V0tfbGNmaXJzdCgkZnVuY3Rpb24tPm5hbWUpIHx8ICJsZWdhY3lDYWxs
ZXJPcGVyYXRpb25Gcm9tQmluZGluZ3MiOworICAgIG15ICRmdW5jdGlvblN0cmluZyA9IEdlbmVy
YXRlUGFyYW1ldGVyc0NoZWNrKFxAaW1wbENvbnRlbnQsICRmdW5jdGlvbiwgJGludGVyZmFjZSwg
JGZ1bmN0aW9uSW1wbGVtZW50YXRpb25OYW1lKTsKKworICAgIEdlbmVyYXRlSW1wbGVtZW50YXRp
b25GdW5jdGlvbkNhbGwoJGZ1bmN0aW9uLCAkZnVuY3Rpb25TdHJpbmcsICIgICAgIiwgJGludGVy
ZmFjZSk7CisKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7Cit9CisKIHN1YiBHZW5l
cmF0ZUNhbGxXaXRoVXNpbmdSZWZlcmVuY2VzCiB7CiAgICAgbXkgKCRjYWxsV2l0aCwgJG91dHB1
dEFycmF5LCAkcmV0dXJuVmFsdWUsICRmdW5jdGlvbikgPSBAXzsKQEAgLTUxOTMsNyArNTI3Miw4
IEBAIHN1YiBHZW5lcmF0ZUNhbGxiYWNrSW1wbGVtZW50YXRpb25Db250ZW4KIAogICAgICAgICBH
ZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbnMoJGNvbnRlbnRSZWYsICRjbGFzc05hbWUsICIi
LCAkdmlzaWJsZU5hbWUsICRpbnRlcmZhY2VPckNhbGxiYWNrKTsKIAotICAgICAgICBwdXNoKEAk
Y29udGVudFJlZiwgIkpTVmFsdWUgJHtjbGFzc05hbWV9OjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0s
IGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpXG57XG4iKTsKKyAgICAgICAgcHVz
aChAJGNvbnRlbnRSZWYsICJKU1ZhbHVlICR7Y2xhc3NOYW1lfTo6Z2V0Q29uc3RydWN0b3IoVk0m
IHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KVxuIik7CisgICAgICAgIHB1
c2goQCRjb250ZW50UmVmLCAie1xuIik7CiAgICAgICAgIHB1c2goQCRjb250ZW50UmVmLCAiICAg
IHJldHVybiBnZXRET01Db25zdHJ1Y3Rvcjwke2NsYXNzTmFtZX1Db25zdHJ1Y3Rvcj4odm0sICpq
c0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTtcbiIpOwogICAg
ICAgICBwdXNoKEAkY29udGVudFJlZiwgIn1cblxuIik7CiAgICAgfQpAQCAtNTI1Nyw3ICs1MzM3
LDcgQEAgc3ViIEdlbmVyYXRlQ2FsbGJhY2tJbXBsZW1lbnRhdGlvbkNvbnRlbgogICAgIHB1c2go
QCRjb250ZW50UmVmLCAifVxuXG4iKTsKIH0KIAotc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb25G
dW5jdGlvbkNhbGwoKQorc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb25GdW5jdGlvbkNhbGwKIHsK
ICAgICBteSAoJGZ1bmN0aW9uLCAkZnVuY3Rpb25TdHJpbmcsICRpbmRlbnQsICRpbnRlcmZhY2Up
ID0gQF87CiAKQEAgLTYxNzgsNyArNjI1OCw3IEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVm
aW5pdGlvbnMKICAgICAgICAgICAgIGZvcmVhY2ggbXkgJGNvbnN0cnVjdG9yIChAY29uc3RydWN0
b3JzKSB7CiAgICAgICAgICAgICAgICAgR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb24oJG91
dHB1dEFycmF5LCAkY2xhc3NOYW1lLCAkcHJvdG9DbGFzc05hbWUsICR2aXNpYmxlSW50ZXJmYWNl
TmFtZSwgJGludGVyZmFjZSwgJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yLCAkY29uc3RydWN0
b3IpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgR2VuZXJhdGVPdmVybG9hZGVkRnVuY3Rp
b25PckNvbnN0cnVjdG9yKEB7JGludGVyZmFjZS0+Y29uc3RydWN0b3JzfVswXSwgJGludGVyZmFj
ZSwgMSk7CisgICAgICAgICAgICBHZW5lcmF0ZU92ZXJsb2FkZWRGdW5jdGlvbk9yQ29uc3RydWN0
b3IoQHskaW50ZXJmYWNlLT5jb25zdHJ1Y3RvcnN9WzBdLCAkaW50ZXJmYWNlLCAiY29uc3RydWN0
b3IiKTsKICAgICAgICAgfSBlbHNpZiAoQGNvbnN0cnVjdG9ycyA9PSAxKSB7CiAgICAgICAgICAg
ICBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbigkb3V0cHV0QXJyYXksICRjbGFzc05hbWUs
ICRwcm90b0NsYXNzTmFtZSwgJHZpc2libGVJbnRlcmZhY2VOYW1lLCAkaW50ZXJmYWNlLCAkZ2Vu
ZXJhdGluZ05hbWVkQ29uc3RydWN0b3IsICRjb25zdHJ1Y3RvcnNbMF0pOwogICAgICAgICB9IGVs
c2UgewpAQCAtNjM3Niw2ICs2NDU2LDEyIEBAIHN1YiBJc0NvbnN0cnVjdGFibGUKICAgICAgICAg
fHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57SlNCdWlsdGluQ29uc3RydWN0b3J9
OwogfQogCitzdWIgSXNDYWxsYWJsZQoreworICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKKyAg
ICByZXR1cm4gJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tQ2FsbH0gfHwg
JGludGVyZmFjZS0+e0xlZ2FjeUNhbGxlcnN9Cit9CisKIHN1YiBIZWFkZXJOZWVkc1Byb3RvdHlw
ZURlY2xhcmF0aW9uCiB7CiAgICAgbXkgJGludGVyZmFjZSA9IHNoaWZ0OwpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0JKHJldmlzaW9uIDIxNjg0
OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAotIyAKKyMKICMgS0RPTSBJREwgcGFyc2VyCiAjCiAj
IENvcHlyaWdodCAoQykgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4K
QEAgLTI2LDYgKzI2LDggQEAgdXNlIHN0cmljdDsKIHVzZSBDYXJwIHF3PGxvbmdtZXNzPjsKIHVz
ZSBEYXRhOjpEdW1wZXI7CiAKK3VzZSBDbG9uZTsKKwogdXNlIHByZXByb2Nlc3NvcjsKIHVzZSBD
bGFzczo6U3RydWN0OwogCkBAIC01MTEsMjUgKzUxMyw2IEBAIHN1YiBtYWtlU2ltcGxlVHlwZQog
ICAgIHJldHVybiBJRExUeXBlLT5uZXcobmFtZSA9PiAkdHlwZU5hbWUpOwogfQogCi1zdWIgY2xv
bmVUeXBlCi17Ci0gICAgbXkgJHNlbGYgPSBzaGlmdDsKLSAgICBteSAkdHlwZSA9IHNoaWZ0Owot
Ci0gICAgbXkgJGNsb25lZFR5cGUgPSBJRExUeXBlLT5uZXcoKTsKLSAgICAkY2xvbmVkVHlwZS0+
bmFtZSgkdHlwZS0+bmFtZSk7Ci0gICAgJGNsb25lZFR5cGUtPmlzTnVsbGFibGUoJHR5cGUtPmlz
TnVsbGFibGUpOwotICAgICRjbG9uZWRUeXBlLT5pc1VuaW9uKCR0eXBlLT5pc1VuaW9uKTsKLQot
ICAgIGNvcHlFeHRlbmRlZEF0dHJpYnV0ZXMoJGNsb25lZFR5cGUtPmV4dGVuZGVkQXR0cmlidXRl
cywgJHR5cGUtPmV4dGVuZGVkQXR0cmlidXRlcyk7Ci0KLSAgICBmb3JlYWNoIG15ICRzdWJ0eXBl
IChAeyR0eXBlLT5zdWJ0eXBlc30pIHsKLSAgICAgICAgcHVzaChAeyRjbG9uZWRUeXBlLT5zdWJ0
eXBlc30sICRzZWxmLT5jbG9uZVR5cGUoJHN1YnR5cGUpKTsKLSAgICB9Ci0KLSAgICByZXR1cm4g
JGNsb25lZFR5cGU7Ci19Ci0KIG15ICRuZXh0QXR0cmlidXRlXzEgPSAnXihhdHRyaWJ1dGV8aW5o
ZXJpdCkkJzsKIG15ICRuZXh0UHJpbWl0aXZlVHlwZV8xID0gJ14oaW50fGxvbmd8c2hvcnR8dW5z
aWduZWQpJCc7CiBteSAkbmV4dFByaW1pdGl2ZVR5cGVfMiA9ICdeKGRvdWJsZXxmbG9hdHx1bnJl
c3RyaWN0ZWQpJCc7CkBAIC02NDUsNyArNjI4LDcgQEAgc3ViIHR5cGVCeUFwcGx5aW5nVHlwZWRl
ZnMKICAgICBpZiAoZXhpc3RzICR0eXBlZGVmc3skdHlwZS0+bmFtZX0pIHsKICAgICAgICAgbXkg
JHR5cGVkZWYgPSAkdHlwZWRlZnN7JHR5cGUtPm5hbWV9OwogCi0gICAgICAgIG15ICRjbG9uZWRU
eXBlID0gJHNlbGYtPmNsb25lVHlwZSgkdHlwZWRlZi0+dHlwZSk7CisgICAgICAgIG15ICRjbG9u
ZWRUeXBlID0gQ2xvbmU6OmNsb25lKCR0eXBlZGVmLT50eXBlKTsKICAgICAgICAgJGNsb25lZFR5
cGUtPmlzTnVsbGFibGUoJGNsb25lZFR5cGUtPmlzTnVsbGFibGUgfHwgJHR5cGUtPmlzTnVsbGFi
bGUpOwogICAgICAgICAkc2VsZi0+bW92ZUV4dGVuZGVkQXR0cmlidXRlc0FwcGxpY2FibGVUb1R5
cGVzKCRjbG9uZWRUeXBlLCAkdHlwZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKTsKIApJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAkocmV2
aXNpb24gMjE2ODQ4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rl
c3RPYmouaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00MzMsNiArNDMzLDEwIEBAIGVudW0gVGVzdENv
bmZpZGVuY2UgeyAiaGlnaCIsICJraW5kYS1sb3cKICAgICBzZXJpYWxpemVyID0ge2NyZWF0ZSwg
cmVhZE9ubHlTdHJpbmdBdHRyLCBlbnVtQXR0ciwgbG9uZ0F0dHJ9OwogCiAgICAgdm9pZCBidWZm
ZXJTb3VyY2VQYXJhbWV0ZXIoQnVmZmVyU291cmNlIGRhdGEpOworICAgIAorICAgIGxlZ2FjeWNh
bGxlciB2b2lkIGxlZ2FjeUNhbGxlck5hbWVkKGxvbmcgcGFyYW0pOworICAgIGxlZ2FjeWNhbGxl
ciBsb25nIChET01TdHJpbmcgcGFyYW0pOworICAgIGxlZ2FjeWNhbGxlciB2b2lkICgpOwogfTsK
IAogLy8gVGhlIGZvbGxvd2luZyBjb21tZW50IHNob3VsZCBub3QgZ2VuZXJhdGUgYW55IGNvZGUu
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2Jq
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T2JqLmNwcAkocmV2aXNpb24gMjE2ODQ4KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEy
NjAsNiArMTI2MCw3IEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3QK
IEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbkF0dGFjaFNoYWRvd1Jvb3QoSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9wZXJhdGlvbldpdGhF
eHRlcm5hbERpY3Rpb25hcnlQYXJhbWV0ZXIoSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ1ZmZlclNv
dXJjZVBhcmFtZXRlcihKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTGVnYWN5Q2FsbGVyTmFtZWQoSlND
OjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Ub0pTT04o
SlNDOjpFeGVjU3RhdGUqKTsKIApAQCAtMTkyMiw2ICsxOTIzLDcgQEAgc3RhdGljIGNvbnN0IEhh
c2hUYWJsZVZhbHVlIEpTVGVzdE9ialBybwogICAgIHsgImF0dGFjaFNoYWRvd1Jvb3QiLCBKU0M6
OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVu
Y3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQXR0YWNoU2hhZG93Um9vdCksIChpbnRw
dHJfdCkgKDEpIH0gfSwKICAgICB7ICJvcGVyYXRpb25XaXRoRXh0ZXJuYWxEaWN0aW9uYXJ5UGFy
YW1ldGVyIiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9wZXJhdGlvbldp
dGhFeHRlcm5hbERpY3Rpb25hcnlQYXJhbWV0ZXIpLCAoaW50cHRyX3QpICgxKSB9IH0sCiAgICAg
eyAiYnVmZmVyU291cmNlUGFyYW1ldGVyIiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkJ1ZmZlclNvdXJjZVBhcmFtZXRlciksIChpbnRwdHJfdCkgKDEpIH0gfSwKKyAgICB7
ICJsZWdhY3lDYWxsZXJOYW1lZCIsIEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25MZWdhY3lDYWxsZXJOYW1lZCksIChpbnRwdHJfdCkgKDEpIH0gfSwKICAgICB7ICJ0b1N0cmlu
ZyIsIEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxO
YXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZyksIChpbnRw
dHJfdCkgKDApIH0gfSwKICAgICB7ICJ0b0pTT04iLCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uVG9KU09OKSwgKGludHB0cl90KSAoMCkgfSB9LAogI2lmIEVOQUJMRShDb25k
aXRpb24xKQpAQCAtODc2Myw2ICs4NzY1LDI2IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogfQogCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25MZWdhY3lDYWxsZXJOYW1lZENhbGxlcihKU0M6OkV4ZWNTdGF0ZSosIEpTVGVz
dE9iaiosIEpTQzo6VGhyb3dTY29wZSYpOworCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTGVnYWN5Q2FsbGVyTmFtZWQoRXhlY1N0YXRlKiBz
dGF0ZSkKK3sKKyAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjpjYWxsT3BlcmF0
aW9uPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTGVnYWN5Q2FsbGVyTmFtZWRDYWxsZXI+KHN0
YXRlLCAibGVnYWN5Q2FsbGVyTmFtZWQiKTsKK30KKworc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTGVnYWN5Q2FsbGVyTmFtZWRDYWxs
ZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMsIEpTQzo6VGhy
b3dTY29wZSYgdGhyb3dTY29wZSkKK3sKKyAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOworICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCisg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgYXV0byBwYXJhbSA9IGNvbnZlcnQ8SURM
TG9uZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOworICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgaW1wbC5sZWdh
Y3lDYWxsZXJOYW1lZChXVEZNb3ZlKHBhcmFtKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKK30KKwogc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmdDYWxsZXIoSlNDOjpFeGVjU3RhdGUq
LCBKU1Rlc3RPYmoqLCBKU0M6OlRocm93U2NvcGUmKTsKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKEV4ZWNTdGF0ZSogc3Rh
dGUpCkBAIC04Nzc4LDYgKzg4MDAsNzMgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVU1ZTdHJpbmc+
KCpzdGF0ZSwgaW1wbC5zdHJpbmdpZmllckF0dHJpYnV0ZSgpKSk7CiB9CiAKK3N0YXRpYyBpbmxp
bmUgRW5jb2RlZEpTVmFsdWUgY2FsbEpTVGVzdE9iajEoRXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAg
ICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CisgICAgaWYgKFVO
TElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
c3RhdGUpKTsKKyAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+KHN0YXRl
LT5qc0NhbGxlZSgpKTsKKyAgICBBU1NFUlQoY2FzdGVkVGhpcyk7CisgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKKyAgICBhdXRvIHBhcmFtID0gY29udmVydDxJRExMb25n
Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CisgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICBpbXBsLmxlZ2FjeUNh
bGxlck5hbWVkKFdURk1vdmUocGFyYW0pKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOworfQorCitzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGNhbGxKU1Rl
c3RPYmoyKEV4ZWNTdGF0ZSogc3RhdGUpCit7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7Cisg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VE
X1BBUkFNKHRocm93U2NvcGUpOworICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3Vu
dCgpIDwgMSkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgYXV0byogY2FzdGVk
VGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihzdGF0ZS0+anNDYWxsZWUoKSk7CisgICAgQVNTRVJU
KGNhc3RlZFRoaXMpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Cisg
ICAgYXV0byBwYXJhbSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqc3RhdGUsIHN0YXRlLT51bmNo
ZWNrZWRBcmd1bWVudCgwKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMTG9u
Zz4oaW1wbC5sZWdhY3lDYWxsZXJPcGVyYXRpb25Gcm9tQmluZGluZ3MoV1RGTW92ZShwYXJhbSkp
KSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY2FsbEpTVGVzdE9iajMoRXhl
Y1N0YXRlKiBzdGF0ZSkKK3sKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CisgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihzdGF0
ZS0+anNDYWxsZWUoKSk7CisgICAgQVNTRVJUKGNhc3RlZFRoaXMpOworICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CisgICAgaW1wbC5sZWdhY3lDYWxsZXJPcGVyYXRpb25G
cm9tQmluZGluZ3MoKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxKU1Rlc3RPYmooRXhlY1N0
YXRlKiBzdGF0ZSkKK3sKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7CisgICAgc2l6ZV90IGFyZ3NDb3VudCA9IHN0ZDo6bWluPHNpemVfdD4oMSwgc3RhdGUt
PmFyZ3VtZW50Q291bnQoKSk7CisgICAgaWYgKGFyZ3NDb3VudCA9PSAwKSB7CisgICAgICAgIHJl
dHVybiBjYWxsSlNUZXN0T2JqMyhzdGF0ZSk7CisgICAgfQorICAgIGlmIChhcmdzQ291bnQgPT0g
MSkgeworICAgICAgICBKU1ZhbHVlIGRpc3Rpbmd1aXNoaW5nQXJnID0gc3RhdGUtPnVuY2hlY2tl
ZEFyZ3VtZW50KDApOworICAgICAgICBpZiAoZGlzdGluZ3Vpc2hpbmdBcmcuaXNOdW1iZXIoKSkK
KyAgICAgICAgICAgIHJldHVybiBjYWxsSlNUZXN0T2JqMShzdGF0ZSk7CisgICAgICAgIHJldHVy
biBjYWxsSlNUZXN0T2JqMihzdGF0ZSk7CisgICAgfQorICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKK30KKworQ2FsbFR5cGUgSlNUZXN0T2JqOjpnZXRDYWxs
RGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCit7CisgICAgY2FsbERhdGEubmF0aXZl
LmZ1bmN0aW9uID0gY2FsbEpTVGVzdE9iajsKKyAgICByZXR1cm4gQ2FsbFR5cGU6Okhvc3Q7Cit9
CisKIEpTQzo6SlNPYmplY3QqIEpTVGVzdE9iajo6c2VyaWFsaXplKEV4ZWNTdGF0ZSogc3RhdGUs
IEpTVGVzdE9iaiogdGhpc09iamVjdCwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBh
dXRvJiB2bSA9IHN0YXRlLT52bSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaAkocmV2aXNpb24gMjE2ODQ4KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSAiSlNET01Db252ZXJ0LmgiCiAj
aW5jbHVkZSAiSlNET01XcmFwcGVyLmgiCiAjaW5jbHVkZSAiVGVzdE9iai5oIgorI2luY2x1ZGUg
PHJ1bnRpbWUvQ2FsbERhdGEuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTEsNiArNTIsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwg
SlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsK
ICAgICB9CiAKKyAgICBzdGF0aWMgSlNDOjpDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0M6OkpTQ2Vs
bCosIEpTQzo6Q2FsbERhdGEmKTsKKwogICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFt
ZXMoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJh
eSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlID0gSlNDOjpFbnVtZXJhdGlvbk1vZGUoKSk7CiAgICAg
c3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpK
U0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBzZXJpYWxpemUoSlND
OjpFeGVjU3RhdGUqLCBKU1Rlc3RPYmoqIHRoaXNPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYpOwpA
QCAtNjksNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBjbGFzc01l
dGhvZDIoSlNDOjpFeGVjU3RhdGUmKTsKICAgICBKU0M6OkpTVmFsdWUgdGVzdEN1c3RvbVByb21p
c2VGdW5jdGlvbihKU0M6OkV4ZWNTdGF0ZSYpOwogcHVibGljOgotICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEpTQzo6SGFzU3RhdGljUHJvcGVydHlUYWJsZSB8IEpT
Qzo6SW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90
WmVybyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpPdmVycmlkZXNH
ZXRQcm9wZXJ0eU5hbWVzIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CisgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gSlNDOjpIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlIHwg
SlNDOjpJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNO
b3RaZXJvIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6Ok92ZXJyaWRl
c0dldFByb3BlcnR5TmFtZXMgfCBKU0M6OlR5cGVPZlNob3VsZENhbGxHZXRDYWxsRGF0YSB8IEJh
c2U6OlN0cnVjdHVyZUZsYWdzOwogcHJvdGVjdGVkOgogICAgIEpTVGVzdE9iaihKU0M6OlN0cnVj
dHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRlc3RPYmo+JiYpOwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDIxNjg0OCkKKysrIFNvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5NzksNiArNDk3OSwxMSBAQCBSZWY8
SFRNTENvbGxlY3Rpb24+IERvY3VtZW50OjphbGwoKQogICAgIHJldHVybiBlbnN1cmVSYXJlRGF0
YSgpLmVuc3VyZU5vZGVMaXN0cygpLmFkZENhY2hlZENvbGxlY3Rpb248SFRNTEFsbENvbGxlY3Rp
b24+KCp0aGlzLCBEb2NBbGwpOwogfQogCitSZWY8SFRNTENvbGxlY3Rpb24+IERvY3VtZW50Ojph
bGxGaWx0ZXJlZEJ5TmFtZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCit7CisgICAgcmV0dXJu
IGVuc3VyZVJhcmVEYXRhKCkuZW5zdXJlTm9kZUxpc3RzKCkuYWRkQ2FjaGVkQ29sbGVjdGlvbjxI
VE1MQWxsTmFtZWRTdWJDb2xsZWN0aW9uPigqdGhpcywgRG9jdW1lbnRBbGxOYW1lZEl0ZW1zLCBu
YW1lKTsKK30KKwogUmVmPEhUTUxDb2xsZWN0aW9uPiBEb2N1bWVudDo6d2luZG93TmFtZWRJdGVt
cyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCiB7CiAgICAgcmV0dXJuIGVuc3VyZVJhcmVEYXRh
KCkuZW5zdXJlTm9kZUxpc3RzKCkuYWRkQ2FjaGVkQ29sbGVjdGlvbjxXaW5kb3dOYW1lQ29sbGVj
dGlvbj4oKnRoaXMsIFdpbmRvd05hbWVkSXRlbXMsIG5hbWUpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmgJKHJldmlzaW9uIDIxNjg0OCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC00NjQsOSArNDY0LDEwIEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCBSZWY8SFRNTENvbGxlY3Rpb24+IGFuY2hvcnMoKTsKICAgICBXRUJDT1JFX0VYUE9S
VCBSZWY8SFRNTENvbGxlY3Rpb24+IHNjcmlwdHMoKTsKICAgICBSZWY8SFRNTENvbGxlY3Rpb24+
IGFsbCgpOworICAgIFJlZjxIVE1MQ29sbGVjdGlvbj4gYWxsRmlsdGVyZWRCeU5hbWUoY29uc3Qg
QXRvbWljU3RyaW5nJik7CiAKLSAgICBSZWY8SFRNTENvbGxlY3Rpb24+IHdpbmRvd05hbWVkSXRl
bXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKTsKLSAgICBSZWY8SFRNTENvbGxlY3Rpb24+IGRv
Y3VtZW50TmFtZWRJdGVtcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpOworICAgIFJlZjxIVE1M
Q29sbGVjdGlvbj4gd2luZG93TmFtZWRJdGVtcyhjb25zdCBBdG9taWNTdHJpbmcmKTsKKyAgICBS
ZWY8SFRNTENvbGxlY3Rpb24+IGRvY3VtZW50TmFtZWRJdGVtcyhjb25zdCBBdG9taWNTdHJpbmcm
KTsKIAogICAgIC8vIE90aGVyIG1ldGhvZHMgKG5vdCBwYXJ0IG9mIERPTSkKICAgICBib29sIGlz
U3ludGhlc2l6ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzU3ludGhlc2l6ZWQ7IH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2h0bWwvQ2FjaGVkSFRNTENvbGxlY3Rpb24uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL0NhY2hlZEhUTUxDb2xsZWN0aW9uLmgJKHJldmlzaW9uIDIxNjg0
OCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvQ2FjaGVkSFRNTENvbGxlY3Rpb24uaAkod29ya2lu
ZyBjb3B5KQpAQCAtOTcsMTUgKzk3LDIyIEBAIGJvb2wgQ2FjaGVkSFRNTENvbGxlY3Rpb248SFRN
TENvbGxlY3Rpb24KIAogc3RhdGljIGlubGluZSBib29sIG5hbWVTaG91bGRCZVZpc2libGVJbkRv
Y3VtZW50QWxsKEhUTUxFbGVtZW50JiBlbGVtZW50KQogewotICAgIC8vIFRoZSBkb2N1bWVudC5h
bGwgY29sbGVjdGlvbiByZXR1cm5zIG9ubHkgY2VydGFpbiB0eXBlcyBvZiBlbGVtZW50cyBieSBu
YW1lLAotICAgIC8vIGFsdGhvdWdoIGl0IHJldHVybnMgYW55IHR5cGUgb2YgZWxlbWVudCBieSBp
ZC4KLSAgICByZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6YXBwbGV0VGFnKQor
ICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2luZnJhc3RydWN0
dXJlLmh0bWwjYWxsLW5hbWVkLWVsZW1lbnRzCisgICAgcmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFt
ZShIVE1MTmFtZXM6OmFUYWcpCisgICAgICAgIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFt
ZXM6OmFwcGxldFRhZykKKyAgICAgICAgfHwgZWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6
YnV0dG9uVGFnKQogICAgICAgICB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjplbWJl
ZFRhZykKICAgICAgICAgfHwgZWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6Zm9ybVRhZykK
KyAgICAgICAgfHwgZWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6ZnJhbWVUYWcpCisgICAg
ICAgIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6OmZyYW1lc2V0VGFnKQorICAgICAg
ICB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjppZnJhbWVUYWcpCiAgICAgICAgIHx8
IGVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6OmltZ1RhZykKICAgICAgICAgfHwgZWxlbWVu
dC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aW5wdXRUYWcpCisgICAgICAgIHx8IGVsZW1lbnQuaGFz
VGFnTmFtZShIVE1MTmFtZXM6Om1hcFRhZykKKyAgICAgICAgfHwgZWxlbWVudC5oYXNUYWdOYW1l
KEhUTUxOYW1lczo6bWV0YVRhZykKICAgICAgICAgfHwgZWxlbWVudC5oYXNUYWdOYW1lKEhUTUxO
YW1lczo6b2JqZWN0VGFnKQotICAgICAgICB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVz
OjpzZWxlY3RUYWcpOworICAgICAgICB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpz
ZWxlY3RUYWcpCisgICAgICAgIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6OnRleHRh
cmVhVGFnKTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIG5hbWVTaG91bGRCZVZpc2libGVJbkRv
Y3VtZW50QWxsKEVsZW1lbnQmIGVsZW1lbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0Nv
bGxlY3Rpb25UeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9Db2xsZWN0
aW9uVHlwZS5oCShyZXZpc2lvbiAyMTY4NDgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0NvbGxl
Y3Rpb25UeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDggQEAgZW51bSBDb2xsZWN0
aW9uVHlwZSB7CiAgICAgV2luZG93TmFtZWRJdGVtcywKICAgICBEb2N1bWVudE5hbWVkSXRlbXMs
CiAKKyAgICBEb2N1bWVudEFsbE5hbWVkSXRlbXMsIC8vIFN1Yi1jb2xsZWN0aW9uIHJldHVybmVk
IGJ5IHRoZSAiYWxsIiBjb2xsZWN0aW9uIHdoZW4gdGhlcmUgYXJlIG11bHRpcGxlIGl0ZW1zIHdp
dGggdGhlIHNhbWUgbmFtZQorCiAgICAgLy8gVW5uYW1lZCBIVE1MQ29sbGVjdGlvbiB0eXBlcyBj
YWNoZWQgaW4gZWxlbWVudHMuCiAgICAgTm9kZUNoaWxkcmVuLCAvLyBmaXJzdC1sZXZlbCBjaGls
ZHJlbiAoSUUpCiAgICAgVGFibGVUQm9kaWVzLCAvLyBhbGwgPHRib2R5PiBlbGVtZW50cyBpbiB0
aGlzIHRhYmxlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0dlbmVyaWNDYWNoZWRIVE1MQ29s
bGVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9HZW5lcmljQ2Fj
aGVkSFRNTENvbGxlY3Rpb24uY3BwCShyZXZpc2lvbiAyMTY4NDgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL0dlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTc3LDYgKzc3LDcgQEAgYm9vbCBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb248dHJhdmVycwog
ICAgIGNhc2UgQnlIVE1MVGFnOgogICAgIGNhc2UgQWxsRGVzY2VuZGFudHM6CiAgICAgY2FzZSBE
b2NBbGw6CisgICAgY2FzZSBEb2N1bWVudEFsbE5hbWVkSXRlbXM6CiAgICAgY2FzZSBEb2N1bWVu
dE5hbWVkSXRlbXM6CiAgICAgY2FzZSBGb3JtQ29udHJvbHM6CiAgICAgY2FzZSBTZWxlY3RPcHRp
b25zOgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5jcHAJKHJl
dmlzaW9uIDIxNjg0OCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFsbENvbGxlY3Rpb24u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw4IEBACiAjaW5jbHVkZSAiSFRNTEFsbENv
bGxlY3Rpb24uaCIKIAogI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJOb2RlUmFyZURh
dGEuaCIKKyNpbmNsdWRlIDxydW50aW1lL0lkZW50aWZpZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC00MCwyMyArNDIsNTAgQEAgaW5saW5lIEhUTUxBbGxDb2xsZWN0aW9uOjpIVE1M
QWxsQ29sbGVjdAogewogfQogCi1FbGVtZW50KiBIVE1MQWxsQ29sbGVjdGlvbjo6bmFtZWRJdGVt
V2l0aEluZGV4KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgdW5zaWduZWQgaW5kZXgpIGNvbnN0
CisvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9pbmZyYXN0cnVjdHVy
ZS5odG1sI2RvbS1odG1sYWxsY29sbGVjdGlvbi1pdGVtCitzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8
UmVmUHRyPEhUTUxDb2xsZWN0aW9uPiwgUmVmUHRyPEVsZW1lbnQ+Pj4gSFRNTEFsbENvbGxlY3Rp
b246Om5hbWVkT3JJbmRleGVkSXRlbU9ySXRlbXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lT3JJ
bmRleCkgY29uc3QKIHsKLSAgICB1cGRhdGVOYW1lZEVsZW1lbnRDYWNoZSgpOwotICAgIGNvbnN0
IENvbGxlY3Rpb25OYW1lZEVsZW1lbnRDYWNoZSYgY2FjaGUgPSBuYW1lZEl0ZW1DYWNoZXMoKTsK
KyAgICBpZiAobmFtZU9ySW5kZXguaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKLSAgICBpZiAoY29uc3QgVmVjdG9yPEVsZW1lbnQqPiogZWxlbWVudHMgPSBjYWNoZS5m
aW5kRWxlbWVudHNXaXRoSWQobmFtZSkpIHsKLSAgICAgICAgaWYgKGluZGV4IDwgZWxlbWVudHMt
PnNpemUoKSkKLSAgICAgICAgICAgIHJldHVybiBlbGVtZW50cy0+YXQoaW5kZXgpOwotICAgICAg
ICBpbmRleCAtPSBlbGVtZW50cy0+c2l6ZSgpOwotICAgIH0KLQotICAgIGlmIChjb25zdCBWZWN0
b3I8RWxlbWVudCo+KiBlbGVtZW50cyA9IGNhY2hlLmZpbmRFbGVtZW50c1dpdGhOYW1lKG5hbWUp
KSB7Ci0gICAgICAgIGlmIChpbmRleCA8IGVsZW1lbnRzLT5zaXplKCkpCi0gICAgICAgICAgICBy
ZXR1cm4gZWxlbWVudHMtPmF0KGluZGV4KTsKLSAgICB9CisgICAgaWYgKGF1dG8gaW5kZXggPSBK
U0M6OnBhcnNlSW5kZXgoKm5hbWVPckluZGV4LmltcGwoKSkpCisgICAgICAgIHJldHVybiBWYXJp
YW50PFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4sIFJlZlB0cjxFbGVtZW50Pj4geyBSZWZQdHI8RWxl
bWVudD4geyBpdGVtKGluZGV4LnZhbHVlKCkpIH0gfTsKIAotICAgIHJldHVybiBudWxscHRyOwor
ICAgIHJldHVybiBuYW1lZEl0ZW1Pckl0ZW1zKG5hbWVPckluZGV4KTsKK30KKworLy8gaHR0cHM6
Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvaW5mcmFzdHJ1Y3R1cmUuaHRtbCNjb25j
ZXB0LWdldC1hbGwtbmFtZWQKK3N0ZDo6b3B0aW9uYWw8VmFyaWFudDxSZWZQdHI8SFRNTENvbGxl
Y3Rpb24+LCBSZWZQdHI8RWxlbWVudD4+PiBIVE1MQWxsQ29sbGVjdGlvbjo6bmFtZWRJdGVtT3JJ
dGVtcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0Cit7CisgICAgYXV0byBuYW1lZEl0
ZW1zID0gdGhpcy0+bmFtZWRJdGVtcyhuYW1lKTsKKworICAgIGlmIChuYW1lZEl0ZW1zLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAobmFtZWRJdGVtcy5z
aXplKCkgPT0gMSkKKyAgICAgICAgcmV0dXJuIFZhcmlhbnQ8UmVmUHRyPEhUTUxDb2xsZWN0aW9u
PiwgUmVmUHRyPEVsZW1lbnQ+PiB7IFJlZlB0cjxFbGVtZW50PiB7IFdURk1vdmUobmFtZWRJdGVt
c1swXSkgfSB9OworCisgICAgcmV0dXJuIFZhcmlhbnQ8UmVmUHRyPEhUTUxDb2xsZWN0aW9uPiwg
UmVmUHRyPEVsZW1lbnQ+PiB7IFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4geyBkb3duY2FzdDxEb2N1
bWVudD4ob3duZXJOb2RlKCkpLmFsbEZpbHRlcmVkQnlOYW1lKG5hbWUpIH0gfTsKK30KKworSFRN
TEFsbE5hbWVkU3ViQ29sbGVjdGlvbjo6fkhUTUxBbGxOYW1lZFN1YkNvbGxlY3Rpb24oKQorewor
ICAgIG93bmVyTm9kZSgpLm5vZGVMaXN0cygpLT5yZW1vdmVDYWNoZWRDb2xsZWN0aW9uKHRoaXMs
IG1fbmFtZSk7Cit9CisKK2Jvb2wgSFRNTEFsbE5hbWVkU3ViQ29sbGVjdGlvbjo6ZWxlbWVudE1h
dGNoZXMoRWxlbWVudCYgZWxlbWVudCkgY29uc3QKK3sKKyAgICBjb25zdCBhdXRvJiBpZCA9IGVs
ZW1lbnQuZ2V0SWRBdHRyaWJ1dGUoKTsKKyAgICBpZiAoaWQgPT0gbV9uYW1lKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKworICAgIGlmICghbmFtZVNob3VsZEJlVmlzaWJsZUluRG9jdW1lbnRBbGwo
ZWxlbWVudCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGNvbnN0IGF1dG8mIG5hbWUg
PSBlbGVtZW50LmdldE5hbWVBdHRyaWJ1dGUoKTsKKyAgICBpZiAobmFtZSA9PSBtX25hbWUpCisg
ICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIGZhbHNlOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbGxDb2xsZWN0aW9u
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5o
CShyZXZpc2lvbiAyMTY4NDgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbGxDb2xsZWN0
aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDA5LCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwOSwgMjAxMSwgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDYgKzI2LDggQEAKICNwcmFnbWEg
b25jZQogCiAjaW5jbHVkZSAiQWxsRGVzY2VuZGFudHNDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSA8
d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC0zMywxMiArMzUsMzUgQEAgY2xhc3MgSFRNTEFsbENvbGxlY3Rpb24gZmlu
YWwgOiBwdWJsaWMgQQogcHVibGljOgogICAgIHN0YXRpYyBSZWY8SFRNTEFsbENvbGxlY3Rpb24+
IGNyZWF0ZShEb2N1bWVudCYsIENvbGxlY3Rpb25UeXBlKTsKIAotICAgIEVsZW1lbnQqIG5hbWVk
SXRlbVdpdGhJbmRleChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIHVuc2lnbmVkIGluZGV4KSBj
b25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8UmVmUHRyPEhUTUxDb2xsZWN0aW9uPiwg
UmVmUHRyPEVsZW1lbnQ+Pj4gbmFtZWRPckluZGV4ZWRJdGVtT3JJdGVtcyhjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWVPckluZGV4KSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8UmVm
UHRyPEhUTUxDb2xsZWN0aW9uPiwgUmVmUHRyPEVsZW1lbnQ+Pj4gbmFtZWRJdGVtT3JJdGVtcyhj
b25zdCBBdG9taWNTdHJpbmcmKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBIVE1MQWxsQ29sbGVj
dGlvbihEb2N1bWVudCYsIENvbGxlY3Rpb25UeXBlKTsKIH07CiAKK2NsYXNzIEhUTUxBbGxOYW1l
ZFN1YkNvbGxlY3Rpb24gZmluYWwgOiBwdWJsaWMgQ2FjaGVkSFRNTENvbGxlY3Rpb248SFRNTEFs
bE5hbWVkU3ViQ29sbGVjdGlvbiwgQ29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRz
PiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxIVE1MQWxsTmFtZWRTdWJDb2xsZWN0aW9uPiBj
cmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBDb2xsZWN0aW9uVHlwZSB0eXBlLCBjb25zdCBBdG9t
aWNTdHJpbmcmIG5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBIVE1M
QWxsTmFtZWRTdWJDb2xsZWN0aW9uKGRvY3VtZW50LCB0eXBlLCBuYW1lKSk7CisgICAgfQorICAg
IHZpcnR1YWwgfkhUTUxBbGxOYW1lZFN1YkNvbGxlY3Rpb24oKTsKKworICAgIGJvb2wgZWxlbWVu
dE1hdGNoZXMoRWxlbWVudCYpIGNvbnN0OworCitwcml2YXRlOgorICAgIEhUTUxBbGxOYW1lZFN1
YkNvbGxlY3Rpb24oRG9jdW1lbnQmIGRvY3VtZW50LCBDb2xsZWN0aW9uVHlwZSB0eXBlLCBjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWUpCisgICAgICAgIDogQ2FjaGVkSFRNTENvbGxlY3Rpb248SFRN
TEFsbE5hbWVkU3ViQ29sbGVjdGlvbiwgQ29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2NlbmRh
bnRzPihkb2N1bWVudCwgdHlwZSkKKyAgICAgICAgLCBtX25hbWUobmFtZSkKKyAgICB7CisgICAg
ICAgIEFTU0VSVCh0eXBlID09IERvY3VtZW50QWxsTmFtZWRJdGVtcyk7CisgICAgfQorCisgICAg
QXRvbWljU3RyaW5nIG1fbmFtZTsKK307CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19IVE1MQ09MTEVDVElPTihIVE1MQWxsQ29sbGVjdGlvbiwgRG9j
QWxsKQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19IVE1MQ09MTEVDVElPTihIVE1MQWxsTmFtZWRT
dWJDb2xsZWN0aW9uLCBEb2N1bWVudEFsbE5hbWVkSXRlbXMpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxBbGxDb2xsZWN0aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxBbGxDb2xsZWN0aW9uLmlkbAkocmV2aXNpb24gMjE2ODQ4KQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0
LDE2ICsyNCwxMyBAQAogICovCiAKIFsKLSAgICBDdXN0b21DYWxsLAotICAgIEN1c3RvbU5hbWVk
R2V0dGVyLAogICAgIExlZ2FjeVVuZW51bWVyYWJsZU5hbWVkUHJvcGVydGllcywKICAgICBNYXNx
dWVyYWRlc0FzVW5kZWZpbmVkLAogICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbE93bmVyTm9k
ZVJvb3QsCiBdIGludGVyZmFjZSBIVE1MQWxsQ29sbGVjdGlvbiB7CiAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOwogCi0gICAgW0N1c3RvbV0gZ2V0dGVyIEVsZW1l
bnQ/IGl0ZW0odW5zaWduZWQgbG9uZyBpbmRleCk7Ci0gICAgW0N1c3RvbV0gZ2V0dGVyIChIVE1M
Q29sbGVjdGlvbiBvciBFbGVtZW50KT8gbmFtZWRJdGVtKERPTVN0cmluZyBuYW1lKTsKLSAgICAv
LyBbQ3VzdG9tXSBsZWdhY3ljYWxsZXIgKEhUTUxDb2xsZWN0aW9uIG9yIEVsZW1lbnQpPyBpdGVt
KG9wdGlvbmFsIERPTVN0cmluZyBuYW1lT3JJbmRleCk7CisgICAgZ2V0dGVyIEVsZW1lbnQ/ICh1
bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICBbSW1wbGVtZW50ZWRBcz1uYW1lZEl0ZW1Pckl0ZW1z
XSBnZXR0ZXIgKEhUTUxDb2xsZWN0aW9uIG9yIEVsZW1lbnQpPyBuYW1lZEl0ZW0oRE9NU3RyaW5n
IG5hbWUpOworICAgIFtJbXBsZW1lbnRlZEFzPW5hbWVkT3JJbmRleGVkSXRlbU9ySXRlbXNdIGxl
Z2FjeWNhbGxlciAoSFRNTENvbGxlY3Rpb24gb3IgRWxlbWVudCk/IGl0ZW0ob3B0aW9uYWwgRE9N
U3RyaW5nIG5hbWVPckluZGV4KTsKIH07Ci0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TENvbGxlY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENv
bGxlY3Rpb24uY3BwCShyZXZpc2lvbiAyMTY4NDgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxDb2xsZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsNyBAQCBpbmxpbmUg
YXV0byBIVE1MQ29sbGVjdGlvbjo6cm9vdFR5cGVGcm9tCiAgICAgY2FzZSBEb2NBbGw6CiAgICAg
Y2FzZSBXaW5kb3dOYW1lZEl0ZW1zOgogICAgIGNhc2UgRG9jdW1lbnROYW1lZEl0ZW1zOgorICAg
IGNhc2UgRG9jdW1lbnRBbGxOYW1lZEl0ZW1zOgogICAgIGNhc2UgRm9ybUNvbnRyb2xzOgogICAg
ICAgICByZXR1cm4gSFRNTENvbGxlY3Rpb246OklzUm9vdGVkQXREb2N1bWVudDsKICAgICBjYXNl
IEFsbERlc2NlbmRhbnRzOgpAQCAtOTYsOCArOTcsOCBAQCBzdGF0aWMgTm9kZUxpc3RJbnZhbGlk
YXRpb25UeXBlIGludmFsaWRhCiAgICAgY2FzZSBEb2NMaW5rczoKICAgICAgICAgcmV0dXJuIElu
dmFsaWRhdGVPbkhSZWZBdHRyQ2hhbmdlOwogICAgIGNhc2UgV2luZG93TmFtZWRJdGVtczoKLSAg
ICAgICAgcmV0dXJuIEludmFsaWRhdGVPbklkTmFtZUF0dHJDaGFuZ2U7CiAgICAgY2FzZSBEb2N1
bWVudE5hbWVkSXRlbXM6CisgICAgY2FzZSBEb2N1bWVudEFsbE5hbWVkSXRlbXM6CiAgICAgICAg
IHJldHVybiBJbnZhbGlkYXRlT25JZE5hbWVBdHRyQ2hhbmdlOwogICAgIGNhc2UgRm9ybUNvbnRy
b2xzOgogICAgICAgICByZXR1cm4gSW52YWxpZGF0ZUZvckZvcm1Db250cm9sczsKQEAgLTEzMCw2
ICsxMzEsNyBAQCBIVE1MQ29sbGVjdGlvbjo6fkhUTUxDb2xsZWN0aW9uKCkKICAgICBjYXNlIEJ5
SFRNTFRhZzoKICAgICBjYXNlIFdpbmRvd05hbWVkSXRlbXM6CiAgICAgY2FzZSBEb2N1bWVudE5h
bWVkSXRlbXM6CisgICAgY2FzZSBEb2N1bWVudEFsbE5hbWVkSXRlbXM6CiAgICAgICAgIGJyZWFr
OwogICAgIGRlZmF1bHQ6CiAgICAgICAgIG93bmVyTm9kZSgpLm5vZGVMaXN0cygpLT5yZW1vdmVD
YWNoZWRDb2xsZWN0aW9uKHRoaXMpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjE2ODQ4KQorKysgTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTct
MDUtMTQgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBbV2ViSURML0RP
TV0gUmVtb3ZlIG5lZWQgZm9yIGN1c3RvbSBiaW5kaW5ncyBmb3IgSFRNTEFsbENvbGxlY3Rpb24g
YW5kIGJyaW5nIHVwIHRvIHNwZWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3MjA5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogZmFzdC9kb20vY29sbGVjdGlvbi1udWxsLWxpa2UtYXJndW1lbnRzLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgVXBkYXRlIHJlc3VsdHMuCisKKyAgICAgICAgKiBmYXN0L2Rv
bS9kb2N1bWVudC1hbGwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9k
b2N1bWVudC1hbGwuaHRtbDogQWRkZWQuCisgICAgICAgIE5ldyB0ZXN0IHRoYXQgY292ZXJzIGEg
YnVuY2ggb2YgbWlzc2luZyBjb3ZlcmFnZS4KKwogMjAxNy0wNS0xNCAgRGF2aWQgS2lsemVyICA8
ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1MvbWFjT1MgRGVidWcgV0syXSBMYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9pbnRlcmZhY2Vz
Lmh0bWwgaXMgYSBmbGFreSBjcmFzaCBkdWUgdG8gYXNzZXJ0aW9uIGZhaWx1cmUKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZG9tL2NvbGxlY3Rpb24tbnVsbC1saWtlLWFyZ3VtZW50cy1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vY29sbGVjdGlvbi1udWxs
LWxpa2UtYXJndW1lbnRzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjE2ODQ4KQorKysgTGF5b3V0
VGVzdHMvZmFzdC9kb20vY29sbGVjdGlvbi1udWxsLWxpa2UtYXJndW1lbnRzLWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtNywxOSArNywxOSBAQCBkb2N1bWVudC5hbGwoMCk6ICAgICAg
W29iamVjdCBIVE1MSHRtbEVsCiBkb2N1bWVudC5hbGwuaXRlbSgwKTogW29iamVjdCBIVE1MSHRt
bEVsZW1lbnRdCiAKIGRvY3VtZW50LmFsbFsiIl06ICAgICAgdW5kZWZpbmVkCi1kb2N1bWVudC5h
bGwoIiIpOiAgICAgIHVuZGVmaW5lZAotZG9jdW1lbnQuYWxsLml0ZW0oIiIpOiB1bmRlZmluZWQK
K2RvY3VtZW50LmFsbCgiIik6ICAgICAgbnVsbAorZG9jdW1lbnQuYWxsLml0ZW0oIiIpOiBudWxs
CiAKIGRvY3VtZW50LmFsbFsiMCJdOiAgICAgIFtvYmplY3QgSFRNTEh0bWxFbGVtZW50XQogZG9j
dW1lbnQuYWxsKCIwIik6ICAgICAgW29iamVjdCBIVE1MSHRtbEVsZW1lbnRdCiBkb2N1bWVudC5h
bGwuaXRlbSgiMCIpOiBbb2JqZWN0IEhUTUxIdG1sRWxlbWVudF0KIAogZG9jdW1lbnQuYWxsW3Vu
ZGVmaW5lZF06ICAgICAgdW5kZWZpbmVkCi1kb2N1bWVudC5hbGwodW5kZWZpbmVkKTogICAgICB1
bmRlZmluZWQKLWRvY3VtZW50LmFsbC5pdGVtKHVuZGVmaW5lZCk6IHVuZGVmaW5lZAorZG9jdW1l
bnQuYWxsKHVuZGVmaW5lZCk6ICAgICAgbnVsbAorZG9jdW1lbnQuYWxsLml0ZW0odW5kZWZpbmVk
KTogbnVsbAogCiBkb2N1bWVudC5hbGxbbnVsbF06ICAgICAgdW5kZWZpbmVkCi1kb2N1bWVudC5h
bGwobnVsbCk6ICAgICAgdW5kZWZpbmVkCi1kb2N1bWVudC5hbGwuaXRlbShudWxsKTogdW5kZWZp
bmVkCitkb2N1bWVudC5hbGwobnVsbCk6ICAgICAgbnVsbAorZG9jdW1lbnQuYWxsLml0ZW0obnVs
bCk6IG51bGwKIAogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9kb2N1bWVudC1hbGwtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2RvY3VtZW50LWFs
bC1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vZG9j
dW1lbnQtYWxsLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ3IEBACitU
ZXN0cyBkb2N1bWVudC5hbGwKKworCitQQVNTIGRvY3VtZW50LmFsbCdzIGluZGV4IGdldHRlciBy
ZXR1cm5zIGFsbCB0aGUgZWxlbWVudHMgaW4gZG9jdW1lbnQgb3JkZXIgCitQQVNTIGRvY3VtZW50
LmFsbCdzIGluZGV4IGdldHRlciByZXR1cm5zIHVuZGVmaW5lZCBmb3IgaW5kZXhlcyBncmVhdGVy
IHRoYW4gbGVuZ3RoIAorUEFTUyBkb2N1bWVudC5hbGwncyBpbmRleCBnZXR0ZXIgcmV0dXJucyB1
bmRlZmluZWQgZm9yIGluZGV4ZXMgbGVzcyB0aGFuIHplcm8gCitQQVNTIGRvY3VtZW50LmFsbCdz
IG5hbWUgYXR0cmlidXRlIGFjY2Vzc2luZyB3b3JrcyBmb3IgYSAKK1BBU1MgZG9jdW1lbnQuYWxs
J3MgbmFtZSBhdHRyaWJ1dGUgYWNjZXNzaW5nIHdvcmtzIGZvciBhcHBsZXQgCitQQVNTIGRvY3Vt
ZW50LmFsbCdzIG5hbWUgYXR0cmlidXRlIGFjY2Vzc2luZyB3b3JrcyBmb3IgYnV0dG9uIAorUEFT
UyBkb2N1bWVudC5hbGwncyBuYW1lIGF0dHJpYnV0ZSBhY2Nlc3Npbmcgd29ya3MgZm9yIGVtYmVk
IAorUEFTUyBkb2N1bWVudC5hbGwncyBuYW1lIGF0dHJpYnV0ZSBhY2Nlc3Npbmcgd29ya3MgZm9y
IGZvcm0gCitQQVNTIGRvY3VtZW50LmFsbCdzIG5hbWUgYXR0cmlidXRlIGFjY2Vzc2luZyB3b3Jr
cyBmb3IgZnJhbWUgCitQQVNTIGRvY3VtZW50LmFsbCdzIG5hbWUgYXR0cmlidXRlIGFjY2Vzc2lu
ZyB3b3JrcyBmb3IgZnJhbWVzZXQgCitQQVNTIGRvY3VtZW50LmFsbCdzIG5hbWUgYXR0cmlidXRl
IGFjY2Vzc2luZyB3b3JrcyBmb3IgaWZyYW1lIAorUEFTUyBkb2N1bWVudC5hbGwncyBuYW1lIGF0
dHJpYnV0ZSBhY2Nlc3Npbmcgd29ya3MgZm9yIGltZyAKK1BBU1MgZG9jdW1lbnQuYWxsJ3MgbmFt
ZSBhdHRyaWJ1dGUgYWNjZXNzaW5nIHdvcmtzIGZvciBpbnB1dCAKK1BBU1MgZG9jdW1lbnQuYWxs
J3MgbmFtZSBhdHRyaWJ1dGUgYWNjZXNzaW5nIHdvcmtzIGZvciBtYXAgCitQQVNTIGRvY3VtZW50
LmFsbCdzIG5hbWUgYXR0cmlidXRlIGFjY2Vzc2luZyB3b3JrcyBmb3IgbWV0YSAKK1BBU1MgZG9j
dW1lbnQuYWxsJ3MgbmFtZSBhdHRyaWJ1dGUgYWNjZXNzaW5nIHdvcmtzIGZvciBvYmplY3QgCitQ
QVNTIGRvY3VtZW50LmFsbCdzIG5hbWUgYXR0cmlidXRlIGFjY2Vzc2luZyB3b3JrcyBmb3Igc2Vs
ZWN0IAorUEFTUyBkb2N1bWVudC5hbGwncyBuYW1lIGF0dHJpYnV0ZSBhY2Nlc3Npbmcgd29ya3Mg
Zm9yIHRleHRhcmVhIAorUEFTUyBkb2N1bWVudC5hbGwncyBuYW1lIGF0dHJpYnV0ZSBhY2Nlc3Np
bmcgZG9lc24ndCB3b3JrIGZvciBkaXYgCitQQVNTIGRvY3VtZW50LmFsbCdzIG5hbWUgYXR0cmli
dXRlIGFjY2Vzc2luZyBkb2Vzbid0IHdvcmsgZm9yIHNwYW4gCitQQVNTIGRvY3VtZW50LmFsbCdz
IGlkIGF0dHJpYnV0ZSBhY2Nlc3Npbmcgd29ya3MgZm9yIGEgCitQQVNTIGRvY3VtZW50LmFsbCdz
IGlkIGF0dHJpYnV0ZSBhY2Nlc3Npbmcgd29ya3MgZm9yIGFwcGxldCAKK1BBU1MgZG9jdW1lbnQu
YWxsJ3MgaWQgYXR0cmlidXRlIGFjY2Vzc2luZyB3b3JrcyBmb3IgYnV0dG9uIAorUEFTUyBkb2N1
bWVudC5hbGwncyBpZCBhdHRyaWJ1dGUgYWNjZXNzaW5nIHdvcmtzIGZvciBlbWJlZCAKK1BBU1Mg
ZG9jdW1lbnQuYWxsJ3MgaWQgYXR0cmlidXRlIGFjY2Vzc2luZyB3b3JrcyBmb3IgZm9ybSAKK1BB
U1MgZG9jdW1lbnQuYWxsJ3MgaWQgYXR0cmlidXRlIGFjY2Vzc2luZyB3b3JrcyBmb3IgZnJhbWUg
CitQQVNTIGRvY3VtZW50LmFsbCdzIGlkIGF0dHJpYnV0ZSBhY2Nlc3Npbmcgd29ya3MgZm9yIGZy
YW1lc2V0IAorUEFTUyBkb2N1bWVudC5hbGwncyBpZCBhdHRyaWJ1dGUgYWNjZXNzaW5nIHdvcmtz
IGZvciBpZnJhbWUgCitQQVNTIGRvY3VtZW50LmFsbCdzIGlkIGF0dHJpYnV0ZSBhY2Nlc3Npbmcg
d29ya3MgZm9yIGltZyAKK1BBU1MgZG9jdW1lbnQuYWxsJ3MgaWQgYXR0cmlidXRlIGFjY2Vzc2lu
ZyB3b3JrcyBmb3IgaW5wdXQgCitQQVNTIGRvY3VtZW50LmFsbCdzIGlkIGF0dHJpYnV0ZSBhY2Nl
c3Npbmcgd29ya3MgZm9yIG1hcCAKK1BBU1MgZG9jdW1lbnQuYWxsJ3MgaWQgYXR0cmlidXRlIGFj
Y2Vzc2luZyB3b3JrcyBmb3IgbWV0YSAKK1BBU1MgZG9jdW1lbnQuYWxsJ3MgaWQgYXR0cmlidXRl
IGFjY2Vzc2luZyB3b3JrcyBmb3Igb2JqZWN0IAorUEFTUyBkb2N1bWVudC5hbGwncyBpZCBhdHRy
aWJ1dGUgYWNjZXNzaW5nIHdvcmtzIGZvciBzZWxlY3QgCitQQVNTIGRvY3VtZW50LmFsbCdzIGlk
IGF0dHJpYnV0ZSBhY2Nlc3Npbmcgd29ya3MgZm9yIHRleHRhcmVhIAorUEFTUyBkb2N1bWVudC5h
bGwncyBpZCBhdHRyaWJ1dGUgYWNjZXNzaW5nIHdvcmtzIGZvciBkaXYgCitQQVNTIGRvY3VtZW50
LmFsbCdzIGlkIGF0dHJpYnV0ZSBhY2Nlc3Npbmcgd29ya3MgZm9yIHNwYW4gCitQQVNTIGRvY3Vt
ZW50LmFsbCB3aWxsIHJldHVybiBhIHN1Yi1jb2xsZWN0aW9uIGlmIHRoZSBuYW1lL2lkIGlzIGZv
dW5kIG1vcmUgdGhhbiBvbmNlIAorUEFTUyBkb2N1bWVudC5hbGwgd2lsbCByZXR1cm4gYSBzdWIt
Y29sbGVjdGlvbiBpZiB0aGUgbmFtZS9pZCBpcyBmb3VuZCBtb3JlIHRoYW4gb25jZSwgYnV0IHN0
aWxsIGFkaGVyZXMgdG8gdGhlIHJ1bGVzIGFib3V0IHdoYXQgdGFncyBjYW4gaGF2ZSBuYW1lcyAK
K1BBU1MgZG9jdW1lbnQuYWxsIHdpbGwgcmV0dXJuIGEgc3ViLWNvbGxlY3Rpb24gaWYgdGhlIG5h
bWUvaWQgaXMgZm91bmQgbW9yZSB0aGFuIG9uY2UsIHRoYXQgaXMgbGl2ZSAKK1BBU1MgZG9jdW1l
bnQuYWxsJ3MgbmFtZWRJdGVtIGZ1bmN0aW9uIHJlcXVpcmVzIHBhc3NpbmcgYW4gYXJndW1lbnQg
CitQQVNTIGRvY3VtZW50LmFsbCdzIGl0ZW0gZnVuY3Rpb24gYW5kIGxlZ2FjeSBjYWxsZXIgZnVu
Y3Rpb25hbGl0eSBhbGxvdyBwYXNzaW5nIG5vIGFyZ3VtZW50cyAKK1BBU1MgZG9jdW1lbnQuYWxs
J3MgaXRlbSBmdW5jdGlvbiBhbmQgbGVnYWN5IGNhbGxlciBmdW5jdGlvbmFsaXR5IHdpbGwgdHJ5
IHRvIGNvbnZlcnQgdGhlaXIgRE9NU3RyaW5nIGFyZ3VtZW50IHRvIGFuIGluZGV4IGJlZm9yZSBu
YW1lIGxvb2t1cCAKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vZG9jdW1lbnQtYWxsLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vZG9jdW1lbnQtYWxsLmh0bWwJ
KG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vZG9jdW1lbnQtYWxsLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNzkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGhlYWQ+
CisgICAgPHRpdGxlPmRvY3VtZW50LmFsbDwvdGl0bGU+Cis8Ym9keT4KKzxwPlRlc3RzIGRvY3Vt
ZW50LmFsbDwvcD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9y
dC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitsZXQgdmFsaWROYW1lZEVsZW1lbnRUYWdzID0g
WydhJywgJ2FwcGxldCcsICdidXR0b24nLCAnZW1iZWQnLCAnZm9ybScsICdmcmFtZScsICdmcmFt
ZXNldCcsICdpZnJhbWUnLCAnaW1nJywgJ2lucHV0JywgJ21hcCcsICdtZXRhJywgJ29iamVjdCcs
ICdzZWxlY3QnLCAndGV4dGFyZWEnXTsKK2xldCBpbnZhbGlkTmFtZWRFbGVtZW50VGFncyA9IFsn
ZGl2JywgJ3NwYW4nXTsKK2xldCB2YWxpZEFuSW52YWxpZE5hbWVkRWxlbWVudFRhZ3MgPSB2YWxp
ZE5hbWVkRWxlbWVudFRhZ3MuY29uY2F0KGludmFsaWROYW1lZEVsZW1lbnRUYWdzKTsKKworbGV0
IHBsYXlncm91bmQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKK2RvY3VtZW50LmJv
ZHkuYXBwZW5kKHBsYXlncm91bmQpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGFzc2VydF9l
cXVhbHMoZG9jdW1lbnQuYWxsWzBdLCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpOworICAgIGFz
c2VydF9lcXVhbHMoZG9jdW1lbnQuYWxsWzFdLCBkb2N1bWVudC5oZWFkKTsKKyAgICBhc3NlcnRf
ZXF1YWxzKGRvY3VtZW50LmFsbFsyXSwgZG9jdW1lbnQuaGVhZC5maXJzdEVsZW1lbnRDaGlsZCk7
Cit9LCAiZG9jdW1lbnQuYWxsJ3MgaW5kZXggZ2V0dGVyIHJldHVybnMgYWxsIHRoZSBlbGVtZW50
cyBpbiBkb2N1bWVudCBvcmRlciIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGFzc2VydF9l
cXVhbHMoZG9jdW1lbnQuYWxsW2RvY3VtZW50LmFsbC5sZW5ndGggKyAxXSwgdW5kZWZpbmVkKTsK
K30sICJkb2N1bWVudC5hbGwncyBpbmRleCBnZXR0ZXIgcmV0dXJucyB1bmRlZmluZWQgZm9yIGlu
ZGV4ZXMgZ3JlYXRlciB0aGFuIGxlbmd0aCIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGFz
c2VydF9lcXVhbHMoZG9jdW1lbnQuYWxsWy0xXSwgdW5kZWZpbmVkKTsKK30sICJkb2N1bWVudC5h
bGwncyBpbmRleCBnZXR0ZXIgcmV0dXJucyB1bmRlZmluZWQgZm9yIGluZGV4ZXMgbGVzcyB0aGFu
IHplcm8iKTsKKworZm9yIChsZXQgZWxlbWVudFRhZyBvZiB2YWxpZE5hbWVkRWxlbWVudFRhZ3Mp
IHsKKyAgICB0ZXN0KGZ1bmN0aW9uKCkgeworICAgICAgICBsZXQgZWxlbWVudCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoZWxlbWVudFRhZyk7CisgICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRl
KCJuYW1lIiwgInRlc3ROYW1lIik7CisgICAgICAgIHBsYXlncm91bmQuYXBwZW5kKGVsZW1lbnQp
OworICAgIAorICAgICAgICBhc3NlcnRfZXF1YWxzKGRvY3VtZW50LmFsbC5uYW1lZEl0ZW0oJ3Rl
c3ROYW1lJyksIGVsZW1lbnQpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGRvY3VtZW50LmFsbFsn
dGVzdE5hbWUnXSwgZWxlbWVudCk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoZG9jdW1lbnQuYWxs
Lml0ZW0oJ3Rlc3ROYW1lJyksIGVsZW1lbnQpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGRvY3Vt
ZW50LmFsbCgndGVzdE5hbWUnKSwgZWxlbWVudCk7CisgICAgCisgICAgICAgIGVsZW1lbnQucmVt
b3ZlKCk7CisgICAgfSwgImRvY3VtZW50LmFsbCdzIG5hbWUgYXR0cmlidXRlIGFjY2Vzc2luZyB3
b3JrcyBmb3IgIiArIGVsZW1lbnRUYWcpOworfQorCitmb3IgKGxldCBlbGVtZW50VGFnIG9mIGlu
dmFsaWROYW1lZEVsZW1lbnRUYWdzKSB7CisgICAgdGVzdChmdW5jdGlvbigpIHsKKyAgICAgICAg
bGV0IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGVsZW1lbnRUYWcpOworICAgICAg
ICBlbGVtZW50LnNldEF0dHJpYnV0ZSgibmFtZSIsICJ0ZXN0TmFtZSIpOworICAgICAgICBwbGF5
Z3JvdW5kLmFwcGVuZChlbGVtZW50KTsKKyAgICAKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhkb2N1
bWVudC5hbGwubmFtZWRJdGVtKCd0ZXN0TmFtZScpLCBudWxsKTsKKyAgICAgICAgYXNzZXJ0X2Vx
dWFscyhkb2N1bWVudC5hbGxbJ3Rlc3ROYW1lJ10sIHVuZGVmaW5lZCk7CisgICAgICAgIGFzc2Vy
dF9lcXVhbHMoZG9jdW1lbnQuYWxsLml0ZW0oJ3Rlc3ROYW1lJyksIG51bGwpOworICAgICAgICBh
c3NlcnRfZXF1YWxzKGRvY3VtZW50LmFsbCgndGVzdE5hbWUnKSwgbnVsbCk7CisgICAgCisgICAg
ICAgIGVsZW1lbnQucmVtb3ZlKCk7CisgICAgfSwgImRvY3VtZW50LmFsbCdzIG5hbWUgYXR0cmli
dXRlIGFjY2Vzc2luZyBkb2Vzbid0IHdvcmsgZm9yICIgKyBlbGVtZW50VGFnKTsKK30KKworZm9y
IChsZXQgZWxlbWVudFRhZyBvZiB2YWxpZEFuSW52YWxpZE5hbWVkRWxlbWVudFRhZ3MpIHsKKyAg
ICB0ZXN0KGZ1bmN0aW9uKCkgeworICAgICAgICBsZXQgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoZWxlbWVudFRhZyk7CisgICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCJpZCIs
ICJ0ZXN0SWQiKTsKKyAgICAgICAgcGxheWdyb3VuZC5hcHBlbmQoZWxlbWVudCk7CisgICAgCisg
ICAgICAgIGFzc2VydF9lcXVhbHMoZG9jdW1lbnQuYWxsLm5hbWVkSXRlbSgndGVzdElkJyksIGVs
ZW1lbnQpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGRvY3VtZW50LmFsbFsndGVzdElkJ10sIGVs
ZW1lbnQpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGRvY3VtZW50LmFsbC5pdGVtKCd0ZXN0SWQn
KSwgZWxlbWVudCk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoZG9jdW1lbnQuYWxsKCd0ZXN0SWQn
KSwgZWxlbWVudCk7CisgICAgCisgICAgICAgIGVsZW1lbnQucmVtb3ZlKCk7CisgICAgfSwgImRv
Y3VtZW50LmFsbCdzIGlkIGF0dHJpYnV0ZSBhY2Nlc3Npbmcgd29ya3MgZm9yICIgKyBlbGVtZW50
VGFnKTsKK30KKwordGVzdChmdW5jdGlvbigpIHsKKyAgICBsZXQgZWxlbWVudDEgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTsKKyAgICBlbGVtZW50MS5zZXRBdHRyaWJ1dGUoIm5h
bWUiLCAidGVzdCIpOworICAgIHBsYXlncm91bmQuYXBwZW5kKGVsZW1lbnQxKTsKKworICAgIGxl
dCBlbGVtZW50MiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTsKKyAgICBlbGVtZW50
Mi5zZXRBdHRyaWJ1dGUoImlkIiwgInRlc3QiKTsKKyAgICBwbGF5Z3JvdW5kLmFwcGVuZChlbGVt
ZW50Mik7CisKKyAgICBhc3NlcnRfZXF1YWxzKGRvY3VtZW50LmFsbC5uYW1lZEl0ZW0oJ3Rlc3Qn
KS5sZW5ndGgsIDIpOworICAgIGFzc2VydF9lcXVhbHMoZG9jdW1lbnQuYWxsWyd0ZXN0J10ubGVu
Z3RoLCAyKTsKKyAgICBhc3NlcnRfZXF1YWxzKGRvY3VtZW50LmFsbC5pdGVtKCd0ZXN0JykubGVu
Z3RoLCAyKTsKKyAgICBhc3NlcnRfZXF1YWxzKGRvY3VtZW50LmFsbCgndGVzdCcpLmxlbmd0aCwg
Mik7CisgICAgYXNzZXJ0X2NsYXNzX3N0cmluZyhkb2N1bWVudC5hbGwubmFtZWRJdGVtKCd0ZXN0
JyksICJIVE1MQ29sbGVjdGlvbiIpOworICAgIGFzc2VydF9jbGFzc19zdHJpbmcoZG9jdW1lbnQu
YWxsWyd0ZXN0J10sICJIVE1MQ29sbGVjdGlvbiIpOworICAgIGFzc2VydF9jbGFzc19zdHJpbmco
ZG9jdW1lbnQuYWxsLml0ZW0oJ3Rlc3QnKSwgIkhUTUxDb2xsZWN0aW9uIik7CisgICAgYXNzZXJ0
X2NsYXNzX3N0cmluZyhkb2N1bWVudC5hbGwoJ3Rlc3QnKSwgIkhUTUxDb2xsZWN0aW9uIik7CisK
KyAgICBlbGVtZW50MS5yZW1vdmUoKTsKKyAgICBlbGVtZW50Mi5yZW1vdmUoKTsKK30sICJkb2N1
bWVudC5hbGwgd2lsbCByZXR1cm4gYSBzdWItY29sbGVjdGlvbiBpZiB0aGUgbmFtZS9pZCBpcyBm
b3VuZCBtb3JlIHRoYW4gb25jZSIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGxldCBlbGVt
ZW50MSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpOworICAgIGVsZW1lbnQxLnNl
dEF0dHJpYnV0ZSgibmFtZSIsICJ0ZXN0Iik7CisgICAgcGxheWdyb3VuZC5hcHBlbmQoZWxlbWVu
dDEpOworCisgICAgbGV0IGVsZW1lbnQyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3Bhbicp
OworICAgIGVsZW1lbnQyLnNldEF0dHJpYnV0ZSgiaWQiLCAidGVzdCIpOworICAgIHBsYXlncm91
bmQuYXBwZW5kKGVsZW1lbnQyKTsKKworICAgIGxldCBlbGVtZW50MyA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ3NwYW4nKTsKKyAgICBlbGVtZW50My5zZXRBdHRyaWJ1dGUoIm5hbWUiLCAidGVz
dCIpOworICAgIHBsYXlncm91bmQuYXBwZW5kKGVsZW1lbnQyKTsKKworICAgIGFzc2VydF9lcXVh
bHMoZG9jdW1lbnQuYWxsLm5hbWVkSXRlbSgndGVzdCcpLmxlbmd0aCwgMik7CisgICAgYXNzZXJ0
X2VxdWFscyhkb2N1bWVudC5hbGxbJ3Rlc3QnXS5sZW5ndGgsIDIpOworICAgIGFzc2VydF9lcXVh
bHMoZG9jdW1lbnQuYWxsLml0ZW0oJ3Rlc3QnKS5sZW5ndGgsIDIpOworICAgIGFzc2VydF9lcXVh
bHMoZG9jdW1lbnQuYWxsKCd0ZXN0JykubGVuZ3RoLCAyKTsKKyAgICBhc3NlcnRfZXF1YWxzKGRv
Y3VtZW50LmFsbC5uYW1lZEl0ZW0oJ3Rlc3QnKVswXSwgZWxlbWVudDEpOworICAgIGFzc2VydF9l
cXVhbHMoZG9jdW1lbnQuYWxsLm5hbWVkSXRlbSgndGVzdCcpWzFdLCBlbGVtZW50Mik7CisgICAg
YXNzZXJ0X2VxdWFscyhkb2N1bWVudC5hbGxbJ3Rlc3QnXVswXSwgZWxlbWVudDEpOworICAgIGFz
c2VydF9lcXVhbHMoZG9jdW1lbnQuYWxsWyd0ZXN0J11bMV0sIGVsZW1lbnQyKTsKKyAgICBhc3Nl
cnRfZXF1YWxzKGRvY3VtZW50LmFsbC5pdGVtKCd0ZXN0JylbMF0sIGVsZW1lbnQxKTsKKyAgICBh
c3NlcnRfZXF1YWxzKGRvY3VtZW50LmFsbC5pdGVtKCd0ZXN0JylbMV0sIGVsZW1lbnQyKTsKKyAg
ICBhc3NlcnRfZXF1YWxzKGRvY3VtZW50LmFsbCgndGVzdCcpWzBdLCBlbGVtZW50MSk7CisgICAg
YXNzZXJ0X2VxdWFscyhkb2N1bWVudC5hbGwoJ3Rlc3QnKVsxXSwgZWxlbWVudDIpOworCisgICAg
ZWxlbWVudDEucmVtb3ZlKCk7CisgICAgZWxlbWVudDIucmVtb3ZlKCk7CisgICAgZWxlbWVudDMu
cmVtb3ZlKCk7Cit9LCAiZG9jdW1lbnQuYWxsIHdpbGwgcmV0dXJuIGEgc3ViLWNvbGxlY3Rpb24g
aWYgdGhlIG5hbWUvaWQgaXMgZm91bmQgbW9yZSB0aGFuIG9uY2UsIGJ1dCBzdGlsbCBhZGhlcmVz
IHRvIHRoZSBydWxlcyBhYm91dCB3aGF0IHRhZ3MgY2FuIGhhdmUgbmFtZXMiKTsKKwordGVzdChm
dW5jdGlvbigpIHsKKyAgICBsZXQgZWxlbWVudDEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdi
dXR0b24nKTsKKyAgICBlbGVtZW50MS5zZXRBdHRyaWJ1dGUoIm5hbWUiLCAidGVzdCIpOworICAg
IHBsYXlncm91bmQuYXBwZW5kKGVsZW1lbnQxKTsKKworICAgIGxldCBlbGVtZW50MiA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTsKKyAgICBlbGVtZW50Mi5zZXRBdHRyaWJ1dGUoImlk
IiwgInRlc3QiKTsKKyAgICBwbGF5Z3JvdW5kLmFwcGVuZChlbGVtZW50Mik7CisKKyAgICBsZXQg
Y29sbGVjdGlvbiA9IGRvY3VtZW50LmFsbC5uYW1lZEl0ZW0oJ3Rlc3QnKTsKKyAgICBhc3NlcnRf
ZXF1YWxzKGNvbGxlY3Rpb24ubGVuZ3RoLCAyKTsKKworICAgIGxldCBlbGVtZW50MyA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2ltZycpOworICAgIGVsZW1lbnQzLnNldEF0dHJpYnV0ZSgibmFt
ZSIsICJ0ZXN0Iik7CisgICAgcGxheWdyb3VuZC5hcHBlbmQoZWxlbWVudDMpOworCisgICAgYXNz
ZXJ0X2VxdWFscyhjb2xsZWN0aW9uLmxlbmd0aCwgMyk7CisKKyAgICBlbGVtZW50MS5yZW1vdmUo
KTsKKyAgICBlbGVtZW50Mi5yZW1vdmUoKTsKKworICAgIGFzc2VydF9lcXVhbHMoY29sbGVjdGlv
bi5sZW5ndGgsIDEpOworCisgICAgZWxlbWVudDMucmVtb3ZlKCk7Cit9LCAiZG9jdW1lbnQuYWxs
IHdpbGwgcmV0dXJuIGEgc3ViLWNvbGxlY3Rpb24gaWYgdGhlIG5hbWUvaWQgaXMgZm91bmQgbW9y
ZSB0aGFuIG9uY2UsIHRoYXQgaXMgbGl2ZSIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGFz
c2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsgZG9jdW1lbnQuYWxsLm5h
bWVkSXRlbSgpIH0pOworfSwgImRvY3VtZW50LmFsbCdzIG5hbWVkSXRlbSBmdW5jdGlvbiByZXF1
aXJlcyBwYXNzaW5nIGFuIGFyZ3VtZW50Iik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgYXNz
ZXJ0X2VxdWFscyhkb2N1bWVudC5hbGwuaXRlbSgpLCBudWxsKTsKKyAgICBhc3NlcnRfZXF1YWxz
KGRvY3VtZW50LmFsbCgpLCBudWxsKTsKK30sICJkb2N1bWVudC5hbGwncyBpdGVtIGZ1bmN0aW9u
IGFuZCBsZWdhY3kgY2FsbGVyIGZ1bmN0aW9uYWxpdHkgYWxsb3cgcGFzc2luZyBubyBhcmd1bWVu
dHMiKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICBsZXQgZWxlbWVudCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ2J1dHRvbicpOworICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCJuYW1lIiwg
IjAiKTsKKyAgICBwbGF5Z3JvdW5kLmFwcGVuZChlbGVtZW50KTsKKworICAgIGFzc2VydF9lcXVh
bHMoZG9jdW1lbnQuYWxsLml0ZW0oJzAnKSwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KTsKKyAg
ICBhc3NlcnRfZXF1YWxzKGRvY3VtZW50LmFsbCgnMCcpLCBkb2N1bWVudC5kb2N1bWVudEVsZW1l
bnQpOworICAgIGFzc2VydF9lcXVhbHMoZG9jdW1lbnQuYWxsLm5hbWVkSXRlbSgnMCcpLCBlbGVt
ZW50KTsKKworICAgIGVsZW1lbnQucmVtb3ZlKCk7Cit9LCAiZG9jdW1lbnQuYWxsJ3MgaXRlbSBm
dW5jdGlvbiBhbmQgbGVnYWN5IGNhbGxlciBmdW5jdGlvbmFsaXR5IHdpbGwgdHJ5IHRvIGNvbnZl
cnQgdGhlaXIgRE9NU3RyaW5nIGFyZ3VtZW50IHRvIGFuIGluZGV4IGJlZm9yZSBuYW1lIGxvb2t1
cCIpOworCitwbGF5Z3JvdW5kLnJlbW92ZSgpOworCis8L3NjcmlwdD4KKzwvYm9keT4KSW5kZXg6
IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwkocmV2aXNpb24gMjE2ODQ4KQorKysgTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEz
IEBACisyMDE3LTA1LTE0ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
W1dlYklETC9ET01dIFJlbW92ZSBuZWVkIGZvciBjdXN0b20gYmluZGluZ3MgZm9yIEhUTUxBbGxD
b2xsZWN0aW9uIGFuZCBicmluZyB1cCB0byBzcGVjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzIwOTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2luZnJhc3Ry
dWN0dXJlL2NvbW1vbi1kb20taW50ZXJmYWNlcy9jb2xsZWN0aW9ucy9odG1sYWxsY29sbGVjdGlv
bi1leHBlY3RlZC50eHQ6CisgICAgICAgIFVwZGF0ZSByZXN1bHRzLgorCiAyMDE3LTA1LTEyICBS
b21haW4gQmVsbGVzc29ydCAgPHJvbWFpbi5iZWxsZXNzb3J0QGNyZi5jYW5vbi5mcj4KIAogICAg
ICAgICBbUmVhZGFibGUgU3RyZWFtcyBBUEldIEFkZCBSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIg
Y2xvc2VkIGdldHRlcgpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL2luZnJhc3RydWN0dXJlL2NvbW1vbi1kb20taW50ZXJmYWNlcy9jb2xsZWN0
aW9ucy9odG1sYWxsY29sbGVjdGlvbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2luZnJhc3RydWN0dXJl
L2NvbW1vbi1kb20taW50ZXJmYWNlcy9jb2xsZWN0aW9ucy9odG1sYWxsY29sbGVjdGlvbi1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDIxNjg0OCkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9pbmZyYXN0cnVjdHVyZS9jb21tb24tZG9tLWludGVyZmFj
ZXMvY29sbGVjdGlvbnMvaHRtbGFsbGNvbGxlY3Rpb24tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0xMCw1ICsxMCw1IEBAIFBBU1MgVGVzdCBsb29rdXAgSU1HIGluIGNvbGxlY3Rpb24g
dXNpbmcKIFBBU1MgVGVzdCBsb29rdXAgSU1HIGluIGNvbGxlY3Rpb24gdXNpbmcgLiAKIFBBU1Mg
VGVzdCBsb29rdXAgdGFncyBpbiBjb2xsZWN0aW9uIHVzaW5nIC4gCiBQQVNTIFNob3VsZCBmaW5k
IHJvb3QgZWxlbWVudCB0b28gCi1GQUlMIFNob3VsZCBmaW5kIGJvdGggYW5jaG9ycyBhbmQgcHJv
ZHVjZSBhIGxpc3QgdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ2RvY3Vt
ZW50LmFsbFsiZm9vIl0ubGVuZ3RoJykKK1BBU1MgU2hvdWxkIGZpbmQgYm90aCBhbmNob3JzIGFu
ZCBwcm9kdWNlIGEgbGlzdCAKIAo=
</data>
<flag name="review"
          id="331198"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>310102</attachid>
            <date>2017-05-14 17:03:54 -0700</date>
            <delta_ts>2017-05-14 17:03:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172095-20170514170354.patch</filename>
            <type>text/plain</type>
            <size>63710</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNjg0OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk3IEBACisyMDE3LTA1LTE0ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1dlYklETC9ET01dIFJlbW92ZSBuZWVk
IGZvciBjdXN0b20gYmluZGluZ3MgZm9yIEhUTUxBbGxDb2xsZWN0aW9uIGFuZCBicmluZyB1cCB0
byBzcGVjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NzIwOTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAt
IEFkZHMgc3VwcG9ydCBmb3IgdGhlIGxlZ2FjeWNhbGxlciBXZWJJREwgc3BlY2lhbCBhbm5vdGF0
aW9uLgorICAgICAgICAtIFVwZGF0ZXMgaW1wbGVtZW50YXRpb24gb2YgSFRNTEFsbENvbGxlY3Rp
b24gdG8gbWF0Y2ggdGhlIGN1cnJlbnQgSFRNTCBzcGVjLgorCisgICAgICAgIFRlc3Q6IGZhc3Qv
ZG9tL2RvY3VtZW50LWFsbC5odG1sCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hU
TUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgUmVtb3ZlZCBKU0hU
TUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcAorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUludGVyZmFjZSk6CisgICAgICAg
IChBZGRMZWdhY3lDYWxsZXJPcGVyYXRpb25JZk5lZWRlZCk6CisgICAgICAgIEJlZm9yZSBjb2Rl
IGdlbmVyYXRpb24sIGNsb25lIGFsbCB0aGUgbGVnYWN5Y2FsbGVyIG9wZXJhdGlvbnMgYW5kIHB1
dCB0aGVtCisgICAgICAgIGluIHRoZWlyIG93biBzZXQsIHNvIHRoZXkgY2FuIGZvcm0gYW4gb3Zl
cmxvYWQgc2V0LgorICAgICAgICAKKyAgICAgICAgKEFkZFN0cmluZ2lmaWVyT3BlcmF0aW9uSWZO
ZWVkZWQpOgorICAgICAgICBVc2UgSURMUGFyc2VyOjpjbG9uZVR5cGUgYXMgdGhlIEZJWE1FIHN1
Z2dlc3RlZC4KKworICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOgorICAgICAgICBHcm91cCBjYWxs
IHJlbGF0ZWQgZnVuY3Rpb25hbGl0eSB0b2dldGhlciBhbmQgdXNlIG5ldyBJc0NhbGxhYmxlIHBy
ZWRpY2F0ZS4KKworICAgICAgICAoR2VuZXJhdGVPdmVybG9hZGVkRnVuY3Rpb25PckNvbnN0cnVj
dG9yKToKKyAgICAgICAgR2VuZXJhbGl6ZSBhIGxpdHRsZSBiaXQgdG8gYWxsb3cgdGhlIGZ1bmN0
aW9uIGJlaW5nIG92ZXJsb2FkZWQgdG8gYmUgYW4gb3ZlcmxvYWRlZCBsZWdhY3ljYWxsZXIuCisK
KyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAgICAgICBBZGQgY2FsbCB0byBn
ZW5lcmF0ZSB0aGUgbGVnYWN5Y2FsbGVyIGNvZGUuCisKKyAgICAgICAgKEdlbmVyYXRlTGVnYWN5
Q2FsbGVyRGVmaW5pdGlvbnMpOgorICAgICAgICAoR2VuZXJhdGVMZWdhY3lDYWxsZXJEZWZpbml0
aW9uKToKKyAgICAgICAgR2VuZXJhdGUgdGhlIGxlZ2FjeWNhbGxlciBkZWZpbml0aW9uLCB1c2lu
ZyBHZW5lcmF0ZUFyZ3VtZW50c0NvdW50Q2hlY2ssIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCisg
ICAgICAgIGFuZCBHZW5lcmF0ZUltcGxlbWVudGF0aW9uRnVuY3Rpb25DYWxsIHRvIGRvIGFsbCB0
aGUgaGVhdnkgbGlmdGluZy4KKworICAgICAgICAoSXNDYWxsYWJsZSk6CisgICAgICAgIEFkZCBo
ZWxwZXIgcHJlZGljYXRlIGZvciBib3RoIGN1c3RvbSBjYWxscyBhbmQgbGVnYWN5Y2FsbGVyLgor
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG06CisgICAgICAgIChjbG9u
ZVR5cGUpOi4KKyAgICAgICAgKGNsb25lQXJndW1lbnQpOi4KKyAgICAgICAgKGNsb25lT3BlcmF0
aW9uKToKKyAgICAgICAgQWRkIGNsb25pbmcgZnVuY3Rpb25zIGZvciBJRExBcmd1bWVudCBhbmQg
SURMT3BlcmF0aW9uLCBhbmQgbWFrZSBJRExUeXBlJ3MKKyAgICAgICAgY2xvbmUgZmVhc2libGUg
Zm9yIGNhbGxpbmcgb3V0c2lkZSB0aGUgcGFja2FnZSBieSByZW1vdmluZyB0aGUgdW5uZWVkZWQg
CisgICAgICAgIHNlbGYgcGFyYW1ldGVyLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE9iai5jcHAKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T2JqLmgKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGw6
CisgICAgICAgIEFkZCB0ZXN0aW5nIG9mIGxlZ2FjeWNhbGxlciBvdmVybG9hZGluZy4KKworICAg
ICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YWxs
RmlsdGVyZWRCeU5hbWUpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICBBZGQg
bmV3IGNvbGxlY3Rpb24gYWNjZXNzIGZvciB0aGUgSFRNTEFsbE5hbWVkU3ViQ29sbGVjdGlvbi4K
KworICAgICAgICAqIGh0bWwvQ2FjaGVkSFRNTENvbGxlY3Rpb24uaDoKKyAgICAgICAgKFdlYkNv
cmU6Om5hbWVTaG91bGRCZVZpc2libGVJbkRvY3VtZW50QWxsKToKKyAgICAgICAgVXBkYXRlIGxp
c3Qgb2YgdGFncyB0byBtYXRjaCB0aGUgY3VycmVudCBzcGVjLgorCisgICAgICAgICogaHRtbC9D
b2xsZWN0aW9uVHlwZS5oOgorICAgICAgICBBZGQgbmV3IHR5cGUgZm9yIEhUTUxBbGxOYW1lZFN1
YkNvbGxlY3Rpb24uCisKKyAgICAgICAgKiBodG1sL0dlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb248dHJh
dmVyc2FsVHlwZT46OmVsZW1lbnRNYXRjaGVzKToKKyAgICAgICAgU3BlY2lmeSB0aGF0IERvY3Vt
ZW50QWxsTmFtZWRJdGVtcyBkb2VzIG5vdCB3YW50CisgICAgICAgIHRoZSBkZWZhdWx0IGVsZW1l
bnRNYXRjaGVzLgorIAorICAgICAgICAqIGh0bWwvSFRNTEFsbENvbGxlY3Rpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEFsbENvbGxlY3Rpb246Om5hbWVkT3JJbmRleGVkSXRlbU9ySXRl
bXMpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFsbENvbGxlY3Rpb246Om5hbWVkSXRlbU9ySXRl
bXMpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFsbE5hbWVkU3ViQ29sbGVjdGlvbjo6fkhUTUxB
bGxOYW1lZFN1YkNvbGxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFsbE5hbWVkU3Vi
Q29sbGVjdGlvbjo6ZWxlbWVudE1hdGNoZXMpOgorICAgICAgICAqIGh0bWwvSFRNTEFsbENvbGxl
Y3Rpb24uaDoKKyAgICAgICAgTW92ZSBpbXBsZW1lbnRhdGlvbnMgZnJvbSB0aGUgY3VzdG9tIGJp
bmRpbmcsIGFuZCByZS1pbXBsZW1lbnQgdG8KKyAgICAgICAgbWF0Y2ggdGhlIHNwZWMuIEFsdGVy
bmF0ZSBuYW1lcyB0byBpdGVtL25hbWVkSXRlbSB3ZXJlIG5lZWRlZCB0byBub3QKKyAgICAgICAg
c2hhZG93IHRoZSBleGlzdGluZyBvbmVzIGluIEhUTUxDb2xsZWN0aW9uLiBIVE1MQWxsTmFtZWRT
dWJDb2xsZWN0aW9uCisgICAgICAgIGlzIGEgc2ltcGxlIEhUTUxDb2xsZWN0aW9uIHRoYXQgbWF0
Y2hlcyBvbiBhIG5hbWUsIGZvbGxvd2luZyB0aGUgcnVsZXMKKyAgICAgICAgb2YgZG9jdW1lbnQu
YWxsIGFib3V0IHdoaWNoIHRhZ3MgY2FuIGhhdmUgbmFtZSBhdHRyaWJ1dGVzLgorCisgICAgICAg
ICogaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5pZGw6CisgICAgICAgIFJlbW92ZSBjdXN0b20gYW5u
b3RhdGlvbnMgYW5kIGFkZCBsZWdhY3ljYWxsZXIgd2hpY2ggaXMgbm93IHN1cHBvcnRlZC4KKwor
ICAgICAgICAqIGh0bWwvSFRNTENvbGxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6aW52
YWxpZGF0aW9uVHlwZUV4Y2x1ZGluZ0lkQW5kTmFtZUF0dHJpYnV0ZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTENvbGxlY3Rpb246On5IVE1MQ29sbGVjdGlvbik6CisgICAgICAgIEFkZCBEb2N1
bWVudEFsbE5hbWVkSXRlbXMuCisKIDIwMTctMDUtMTMgIERhdmlkIEtpbHplciAgPGRka2lsemVy
QGFwcGxlLmNvbT4KIAogICAgICAgICBVbnVzZWQgbGFtYmRhIGluIEpTV2ViS2l0U3VidGxlQ3J5
cHRvOjp3cmFwS2V5KCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMTY4NDgp
CisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTE2
OCw3ICsxMTY4LDYgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIGJpbmRpbmdzL2pzL0pTRXZl
bnRMaXN0ZW5lci5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmNwcAog
ICAgIGJpbmRpbmdzL2pzL0pTRXhjZXB0aW9uQmFzZS5jcHAKLSAgICBiaW5kaW5ncy9qcy9KU0hU
TUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTSFRNTEFwcGxldEVs
ZW1lbnRDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNIVE1MQ2FudmFzRWxlbWVudEN1c3Rv
bS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0hUTUxDb2xsZWN0aW9uQ3VzdG9tLmNwcApJbmRleDog
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gMjE2ODQ4KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC01NzQ0LDcgKzU3NDQsNiBAQAogCQlCQzk3
RTIzQjEwOTE0NDk1MDAxMEQzNjEgLyogSFRNTEFsbENvbGxlY3Rpb24uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM5N0UyMzkxMDkxNDQ5NTAwMTBE
MzYxIC8qIEhUTUxBbGxDb2xsZWN0aW9uLmNwcCAqLzsgfTsKIAkJQkM5N0U0MTIxMDkxNTRGQTAw
MTBEMzYxIC8qIEpTSFRNTEFsbENvbGxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM5N0U0MTAxMDkxNTRGQTAwMTBEMzYxIC8qIEpTSFRN
TEFsbENvbGxlY3Rpb24uY3BwICovOyB9OwogCQlCQzk3RTQxMzEwOTE1NEZBMDAxMEQzNjEgLyog
SlNIVE1MQWxsQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkM5N0U0MTExMDkxNTRGQTAwMTBEMzYxIC8qIEpTSFRNTEFsbENvbGxlY3Rp
b24uaCAqLzsgfTsKLQkJQkM5N0U0MkMxMDkxNUIwNjAwMTBEMzYxIC8qIEpTSFRNTEFsbENvbGxl
Y3Rpb25DdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkM5N0U0MkIxMDkxNUIwNjAwMTBEMzYxIC8qIEpTSFRNTEFsbENvbGxlY3Rpb25DdXN0
b20uY3BwICovOyB9OwogCQlCQzk4QTI3RDBDMEM5OTUwMDA0QkVCRjcgLyogSlNTdHlsZVNoZWV0
Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDOThBMjdDMEMwQzk5NTAwMDRCRUJGNyAvKiBKU1N0eWxlU2hlZXRDdXN0b20uY3BwICovOyB9
OwogCQlCQ0ExNjlBMjBCRkQ1NUI0MDAxOUNBNzYgLyogSlNIVE1MVGFibGVDYXB0aW9uRWxlbWVu
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0Ex
NjlBMDBCRkQ1NUI0MDAxOUNBNzYgLyogSlNIVE1MVGFibGVDYXB0aW9uRWxlbWVudC5jcHAgKi87
IH07CiAJCUJDQTE2OUEzMEJGRDU1QjQwMDE5Q0E3NiAvKiBKU0hUTUxUYWJsZUNhcHRpb25FbGVt
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0Ex
NjlBMTBCRkQ1NUI0MDAxOUNBNzYgLyogSlNIVE1MVGFibGVDYXB0aW9uRWxlbWVudC5oICovOyB9
OwpAQCAtMTQxNjYsNyArMTQxNjUsNiBAQAogCQlCQzk3RTIzQzEwOTE0NkYxMDAxMEQzNjEgLyog
SFRNTEFsbENvbGxlY3Rpb24uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEhUTUxBbGxDb2xs
ZWN0aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM5N0U0MTAxMDkxNTRG
QTAwMTBEMzYxIC8qIEpTSFRNTEFsbENvbGxlY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MQWxsQ29sbGVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUJDOTdFNDExMTA5MTU0RkEwMDEwRDM2MSAvKiBKU0hUTUxBbGxDb2xs
ZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSFRNTEFsbENvbGxl
Y3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkM5N0U0MkIxMDkxNUIwNjAw
MTBEMzYxIC8qIEpTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDOThBMjdDMEMwQzk5NTAwMDRCRUJGNyAvKiBKU1N0
eWxlU2hlZXRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNTdHlsZVNoZWV0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM5
QTYxNDExNDY4NTlEOTAwNjA1N0ZEIC8qIERPTUV4Y2VwdGlvbnMuaW4gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRE9NRXhjZXB0
aW9ucy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM5QTYxNDIxNDY4NTlEOTAw
NjA1N0ZEIC8qIEV2ZW50TmFtZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRXZlbnROYW1lcy5pbjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTE5NTYxLDYgKzE5NTU5LDcgQEAKIAkJCQk1MUUyNjkzMjFERDNC
QzQzMDA2QjZBNTggLyogSlNJREJUcmFuc2FjdGlvbkN1c3RvbS5jcHAgKi8sCiAJCQkJQTdEMDMx
OEQwRTkzNTQwMzAwRTI0QUNEIC8qIEpTSW1hZ2VEYXRhQ3VzdG9tLmNwcCAqLywKIAkJCQlBRDcy
NkZFNzE2RDlGMjA0MDAzQTRFNkQgLyogSlNNZWRpYUxpc3RDdXN0b20uaCAqLywKKwkJCQk0MTVD
REFGNjFFNkNFMEQzMDA0RjExRUUgLyogSlNNZWRpYVN0cmVhbVRyYWNrQ3VzdG9tLmNwcCAqLywK
IAkJCQlFMUE1Rjk5QTBFN0VBQTI1MDBBRjg1RUEgLyogSlNNZXNzYWdlQ2hhbm5lbEN1c3RvbS5j
cHAgKi8sCiAJCQkJRTFBREVENDYwRTc2QjhERDAwNEExQTVFIC8qIEpTTWVzc2FnZVBvcnRDdXN0
b20uY3BwICovLAogCQkJCTFBNzUwREQzMEE5MEU3MjkwMDBGRjIxNSAvKiBKU05vZGVJdGVyYXRv
ckN1c3RvbS5jcHAgKi8sCkBAIC0yMzQ2Miw3ICsyMzQ2MSw2IEBACiAJCQkJQzI4MDgzNDExQzZE
Qzk2QTAwMTQ1MUI2IC8qIEpTRm9udEZhY2VDdXN0b20uY3BwICovLAogCQkJCTFDMjRFRUFBMUM3
MkFBMEEwMDgwRjhGQyAvKiBKU0ZvbnRGYWNlU2V0Q3VzdG9tLmNwcCAqLywKIAkJCQlCQ0U3QjE5
MjBENEU4Njk2MDA3NUE1MzkgLyogSlNIaXN0b3J5Q3VzdG9tLmNwcCAqLywKLQkJCQlCQzk3RTQy
QjEwOTE1QjA2MDAxMEQzNjEgLyogSlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAgKi8sCiAJ
CQkJQkM0RURFRjMwQzA4RjNGQjAwN0VERDQ5IC8qIEpTSFRNTEFwcGxldEVsZW1lbnRDdXN0b20u
Y3BwICovLAogCQkJCTkzOTIyNjJDMTAzMjEwN0IwMDZFN0Q1RCAvKiBKU0hUTUxDYW52YXNFbGVt
ZW50Q3VzdG9tLmNwcCAqLywKIAkJCQlCQzUxNTgwQTBDMDNENDA0MDA4QkIwRUUgLyogSlNIVE1M
RG9jdW1lbnRDdXN0b20uY3BwICovLApAQCAtMjM0NzcsNyArMjM0NzUsNiBAQAogCQkJCTdBNzRF
Q0JDMTAxODM5REEwMEJGOTM5RSAvKiBKU0luc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAg
Ki8sCiAJCQkJQkNFMUM0M0YwRDk4MzBGNDAwM0IwMkYyIC8qIEpTTG9jYXRpb25DdXN0b20uY3Bw
ICovLAogCQkJCTJEOUJGNzQ4MURCRkRERjgwMDdBN0Q5OSAvKiBKU01lZGlhS2V5U2Vzc2lvbkN1
c3RvbS5jcHAgKi8sCi0JCQkJNDE1Q0RBRjYxRTZDRTBEMzAwNEYxMUVFIC8qIEpTTWVkaWFTdHJl
YW1UcmFja0N1c3RvbS5jcHAgKi8sCiAJCQkJNDEwQjdFNzExMDQ1RkFCMDAwRDgyMjRGIC8qIEpT
TWVzc2FnZUV2ZW50Q3VzdG9tLmNwcCAqLywKIAkJCQlBMUU1QjMxRDFBQUQxREE0MDA2RUJFRkIg
LyogSlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ3VzdG9tLmNwcCAqLywKIAkJCQlDNkYwOTE3
RTE0M0EyQkI5MDA2ODU4NDkgLyogSlNNdXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcCAqLywKQEAg
LTMxNzM4LDcgKzMxNzM1LDYgQEAKIAkJCQk1Nzk1N0NCNjFFOTcyQzc4MDA4MDcyQUIgLyogSlNI
a2RmUGFyYW1zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTU3RTIzMzY5MURDQUIyNDMwMEYyOEQw
MSAvKiBKU0htYWNLZXlQYXJhbXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM5N0U0MTIxMDkx
NTRGQTAwMTBEMzYxIC8qIEpTSFRNTEFsbENvbGxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCi0J
CQkJQkM5N0U0MkMxMDkxNUIwNjAwMTBEMzYxIC8qIEpTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20u
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE0QTJERUYwQTFCODUyQTAwQzgwN0Y4IC8qIEpTSFRN
TEFuY2hvckVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE0QTJERjEwQTFCODUyQTAw
QzgwN0Y4IC8qIEpTSFRNTEFwcGxldEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM0
RURFRjQwQzA4RjNGQjAwN0VERDQ5IC8qIEpTSFRNTEFwcGxldEVsZW1lbnRDdXN0b20uY3BwIGlu
IFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdz
QWxsSW5PbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
QmluZGluZ3NBbGxJbk9uZS5jcHAJKHJldmlzaW9uIDIxNjg0OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3
LDcgKzY3LDYgQEAKICNpbmNsdWRlICJKU0V2ZW50TGlzdGVuZXIuY3BwIgogI2luY2x1ZGUgIkpT
RXZlbnRUYXJnZXRDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTRXhjZXB0aW9uQmFzZS5jcHAiCi0j
aW5jbHVkZSAiSlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNIVE1M
QXBwbGV0RWxlbWVudEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNIVE1MQ2FudmFzRWxlbWVudEN1
c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNIVE1MQ29sbGVjdGlvbkN1c3RvbS5jcHAiCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0
aW9uQ3VzdG9tLmNwcAkocmV2aXNpb24gMjE2ODQ4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSwx
MjYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSlNIVE1MQWxsQ29sbGVjdGlv
bi5oIgotCi0jaW5jbHVkZSAiSFRNTEFsbENvbGxlY3Rpb24uaCIKLSNpbmNsdWRlICJKU05vZGUu
aCIKLSNpbmNsdWRlICJKU05vZGVMaXN0LmgiCi0jaW5jbHVkZSAiU3RhdGljTm9kZUxpc3QuaCIK
LSNpbmNsdWRlIDxydW50aW1lL0lkZW50aWZpZXJJbmxpbmVzLmg+Ci0KLXVzaW5nIG5hbWVzcGFj
ZSBKU0M7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIEpTVmFsdWUgbmFtZWRJdGVt
cyhFeGVjU3RhdGUmIHN0YXRlLCBKU0hUTUxBbGxDb2xsZWN0aW9uKiBjb2xsZWN0aW9uLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQotewotICAgIFZlY3RvcjxSZWY8RWxlbWVudD4+IG5hbWVk
SXRlbXMgPSBjb2xsZWN0aW9uLT53cmFwcGVkKCkubmFtZWRJdGVtcyhwcm9wZXJ0eU5hbWVUb0F0
b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKLQotICAgIGlmIChuYW1lZEl0ZW1zLmlzRW1wdHko
KSkKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgaWYgKG5hbWVkSXRlbXMuc2l6
ZSgpID09IDEpCi0gICAgICAgIHJldHVybiB0b0pTKCZzdGF0ZSwgY29sbGVjdGlvbi0+Z2xvYmFs
T2JqZWN0KCksIG5hbWVkSXRlbXNbMF0pOwotCi0gICAgLy8gRklYTUU6IEhUTUw1IHNwZWNpZmlj
YXRpb24gc2F5cyB0aGlzIHNob3VsZCBiZSBhIEhUTUxDb2xsZWN0aW9uLgotICAgIC8vIGh0dHA6
Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL2Nv
bW1vbi1kb20taW50ZXJmYWNlcy5odG1sI2h0bWxhbGxjb2xsZWN0aW9uCi0gICAgcmV0dXJuIHRv
SlMoJnN0YXRlLCBjb2xsZWN0aW9uLT5nbG9iYWxPYmplY3QoKSwgU3RhdGljRWxlbWVudExpc3Q6
OmNyZWF0ZShXVEZNb3ZlKG5hbWVkSXRlbXMpKSk7Ci19Ci0KLS8vIEhUTUxBbGxDb2xsZWN0aW9u
cyBhcmUgc3RyYW5nZSBvYmplY3RzLCB0aGV5IHN1cHBvcnQgYm90aCBnZXQgYW5kIGNhbGwuCi1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSFRNTEFsbENvbGxlY3Rpb24o
RXhlY1N0YXRlKiBleGVjKQotewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotCi0gICAgaWYgKGV4ZWMtPmFyZ3VtZW50
Q291bnQoKSA8IDEpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7Ci0KLSAgICAvLyBEbyBub3QgdXNlIHRoaXNPYmogaGVyZS4gSXQgY2FuIGJlIHRoZSBKU0hU
TUxEb2N1bWVudCwgaW4gdGhlIGRvY3VtZW50LmZvcm1zKGkpIGNhc2UuCi0gICAgSlNIVE1MQWxs
Q29sbGVjdGlvbioganNDb2xsZWN0aW9uID0ganNDYXN0PEpTSFRNTEFsbENvbGxlY3Rpb24qPihl
eGVjLT5qc0NhbGxlZSgpKTsKLSAgICBIVE1MQWxsQ29sbGVjdGlvbiYgY29sbGVjdGlvbiA9IGpz
Q29sbGVjdGlvbi0+d3JhcHBlZCgpOwotCi0gICAgLy8gQWxzbywgZG8gd2UgbmVlZCB0aGUgVHlw
ZUVycm9yIHRlc3QgaGVyZSA/Ci0KLSAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID09IDEp
IHsKLSAgICAgICAgLy8gU3VwcG9ydCBmb3IgZG9jdW1lbnQuYWxsKDxpbmRleD4pIGV0Yy4KLSAg
ICAgICAgU3RyaW5nIHN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKGV4ZWMp
OwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
LSAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleCgq
c3RyaW5nLmltcGwoKSkpCi0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlMo
ZXhlYywganNDb2xsZWN0aW9uLT5nbG9iYWxPYmplY3QoKSwgY29sbGVjdGlvbi5pdGVtKGluZGV4
LnZhbHVlKCkpKSk7Ci0KLSAgICAgICAgLy8gU3VwcG9ydCBmb3IgZG9jdW1lbnQuaW1hZ2VzKCc8
bmFtZT4nKSBldGMuCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobmFtZWRJdGVtcygq
ZXhlYywganNDb2xsZWN0aW9uLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIHN0cmluZykp
KTsKLSAgICB9Ci0KLSAgICAvLyBUaGUgc2Vjb25kIGFyZywgaWYgc2V0LCBpcyB0aGUgaW5kZXgg
b2YgdGhlIGl0ZW0gd2Ugd2FudAotICAgIFN0cmluZyBzdHJpbmcgPSBleGVjLT5hcmd1bWVudCgw
KS50b1dURlN0cmluZyhleGVjKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKLSAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBw
YXJzZUluZGV4KCpleGVjLT5hcmd1bWVudCgxKS50b1dURlN0cmluZyhleGVjKS5pbXBsKCkpKSB7
Ci0gICAgICAgIGlmIChhdXRvKiBpdGVtID0gY29sbGVjdGlvbi5uYW1lZEl0ZW1XaXRoSW5kZXgo
c3RyaW5nLCBpbmRleC52YWx1ZSgpKSkKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodG9KUyhleGVjLCBqc0NvbGxlY3Rpb24tPmdsb2JhbE9iamVjdCgpLCAqaXRlbSkpOwotICAg
IH0KLQotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci19Ci0KLUNh
bGxUeXBlIEpTSFRNTEFsbENvbGxlY3Rpb246OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRh
JiBjYWxsRGF0YSkKLXsKLSAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxsSFRNTEFs
bENvbGxlY3Rpb247Ci0gICAgcmV0dXJuIENhbGxUeXBlOjpIb3N0OwotfQotCi1ib29sIEpTSFRN
TEFsbENvbGxlY3Rpb246Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBzdGF0ZSwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSYgdmFsdWUpCi17Ci0gICAgSlNWYWx1ZSBpdGVtcyA9IG5h
bWVkSXRlbXMoKnN0YXRlLCB0aGlzLCBwcm9wZXJ0eU5hbWUpOwotICAgIGlmIChpdGVtcy5pc1Vu
ZGVmaW5lZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICB2YWx1ZSA9IGl0ZW1zOwot
ICAgIHJldHVybiB0cnVlOwotfQotCi1KU1ZhbHVlIEpTSFRNTEFsbENvbGxlY3Rpb246Oml0ZW0o
RXhlY1N0YXRlJiBzdGF0ZSkKLXsKLSAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOwotICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLQotICAgIGlmIChVTkxJS0VMWShzdGF0
ZS5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZz
dGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwotCi0g
ICAgU3RyaW5nIGFyZ3VtZW50ID0gc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkudG9XVEZTdHJp
bmcoJnN0YXRlKTsKLSAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJz
ZUluZGV4KCphcmd1bWVudC5pbXBsKCkpKQotICAgICAgICByZXR1cm4gdG9KUygmc3RhdGUsIGds
b2JhbE9iamVjdCgpLCB3cmFwcGVkKCkuaXRlbShpbmRleC52YWx1ZSgpKSk7Ci0gICAgcmV0dXJu
IG5hbWVkSXRlbXMoc3RhdGUsIHRoaXMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCBh
cmd1bWVudCkpOwotfQotCi1KU1ZhbHVlIEpTSFRNTEFsbENvbGxlY3Rpb246Om5hbWVkSXRlbShF
eGVjU3RhdGUmIHN0YXRlKQotewotICAgIEpTVmFsdWUgdmFsdWUgPSBuYW1lZEl0ZW1zKHN0YXRl
LCB0aGlzLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgc3RhdGUuYXJndW1lbnQoMCku
dG9XVEZTdHJpbmcoJnN0YXRlKSkpOwotICAgIHJldHVybiB2YWx1ZS5pc1VuZGVmaW5lZCgpID8g
anNOdWxsKCkgOiB2YWx1ZTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQoKUHJvcGVydHkg
Y2hhbmdlcyBvbjogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQWxsQ29sbGVjdGlv
bkN1c3RvbS5jcHAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAg
IyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2
aXNpb24gMjE2ODQ4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTE2Miw3ICsxNjIsOSBAQCBzdWIgR2VuZXJh
dGVJbnRlcmZhY2UKICAgICBteSAoJG9iamVjdCwgJGludGVyZmFjZSwgJGRlZmluZXMsICRlbnVt
ZXJhdGlvbnMsICRkaWN0aW9uYXJpZXMpID0gQF87CiAKICAgICAkY29kZUdlbmVyYXRvci0+TGlu
a092ZXJsb2FkZWRGdW5jdGlvbnMoJGludGVyZmFjZSk7CisKICAgICBBZGRTdHJpbmdpZmllck9w
ZXJhdGlvbklmTmVlZGVkKCRpbnRlcmZhY2UpOworICAgIEFkZExlZ2FjeUNhbGxlck9wZXJhdGlv
bklmTmVlZGVkKCRpbnRlcmZhY2UpOwogCiAgICAgaWYgKCRpbnRlcmZhY2UtPmlzQ2FsbGJhY2sp
IHsKICAgICAgICAgJG9iamVjdC0+R2VuZXJhdGVDYWxsYmFja0ludGVyZmFjZUhlYWRlcigkaW50
ZXJmYWNlLCAkZW51bWVyYXRpb25zLCAkZGljdGlvbmFyaWVzKTsKQEAgLTE4OCwxMCArMTkwLDcg
QEAgc3ViIEFkZFN0cmluZ2lmaWVyT3BlcmF0aW9uSWZOZWVkZWQKICAgICAgICAgJHN0cmluZ2lm
aWVyLT5leHRlbmRlZEF0dHJpYnV0ZXMoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7CiAgICAgICAg
IGRpZSAic3RyaW5naWZpZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBhdHRyaWJ1dGVzIG9mIFN0cmlu
ZyB0eXBlcyIgdW5sZXNzICRjb2RlR2VuZXJhdG9yLT5Jc1N0cmluZ1R5cGUoJGF0dHJpYnV0ZS0+
dHlwZSk7CiAgICAgICAgIAotICAgICAgICAjIEZJWE1FOiBUaGlzIHNob3VsZCB1c2UgSURMUGFy
c2VyJ3MgY2xvbmVUeXBlLgotICAgICAgICBteSAkdHlwZSA9IElETFR5cGUtPm5ldygpOwotICAg
ICAgICAkdHlwZS0+bmFtZSgkYXR0cmlidXRlLT50eXBlLT5uYW1lKTsKLQorICAgICAgICBteSAk
dHlwZSA9IElETFBhcnNlcjo6Y2xvbmVUeXBlKCRhdHRyaWJ1dGUtPnR5cGUpOwogICAgICAgICAk
c3RyaW5naWZpZXItPnR5cGUoJHR5cGUpOwogCiAgICAgICAgIHB1c2goQHskaW50ZXJmYWNlLT5m
dW5jdGlvbnN9LCAkc3RyaW5naWZpZXIpOwpAQCAtMTk5LDYgKzE5OCwyNCBAQCBzdWIgQWRkU3Ry
aW5naWZpZXJPcGVyYXRpb25JZk5lZWRlZAogICAgIH0KIH0KIAorc3ViIEFkZExlZ2FjeUNhbGxl
ck9wZXJhdGlvbklmTmVlZGVkCit7CisgICAgbXkgJGludGVyZmFjZSA9IHNoaWZ0OworCisgICAg
Zm9yZWFjaCBteSAkb3BlcmF0aW9uIChAeyRpbnRlcmZhY2UtPmZ1bmN0aW9uc30sIEB7JGludGVy
ZmFjZS0+YW5vbnltb3VzRnVuY3Rpb25zfSkgeworICAgICAgICBteSAkaXNMZWdhY3lDYWxsZXIg
PSBncmVwIHsgJF8gZXEgImxlZ2FjeWNhbGxlciIgfSBAeyRvcGVyYXRpb24tPnNwZWNpYWxzfTsK
KyAgICAgICAgaWYgKCRpc0xlZ2FjeUNhbGxlcikgeworICAgICAgICAgICAgJGludGVyZmFjZS0+
e0xlZ2FjeUNhbGxlcnN9ID0gW10gaWYgIWV4aXN0cyAkaW50ZXJmYWNlLT57TGVnYWN5Q2FsbGVy
c307CisKKyAgICAgICAgICAgIG15ICRjbG9uZWRPcGVyYXRpb24gPSBJRExQYXJzZXI6OmNsb25l
T3BlcmF0aW9uKCRvcGVyYXRpb24pOworICAgICAgICAgICAgcHVzaCgkaW50ZXJmYWNlLT57TGVn
YWN5Q2FsbGVyc30sICRjbG9uZWRPcGVyYXRpb24pOworICAgIAorICAgICAgICAgICAgJGNsb25l
ZE9wZXJhdGlvbi0+e292ZXJsb2Fkc30gPSAkaW50ZXJmYWNlLT57TGVnYWN5Q2FsbGVyc307Cisg
ICAgICAgICAgICAkY2xvbmVkT3BlcmF0aW9uLT57b3ZlcmxvYWRJbmRleH0gPSBAeyRpbnRlcmZh
Y2UtPntMZWdhY3lDYWxsZXJzfX07CisgICAgICAgIH0KKyAgICB9Cit9CisKIHN1YiBFdmVudEhh
bmRsZXJBdHRyaWJ1dGVFdmVudE5hbWUKIHsKICAgICBteSAkYXR0cmlidXRlID0gc2hpZnQ7CkBA
IC0xNzQwLDggKzE3NTcsNiBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICAgICAgfQogICAgIH0K
IAotICAgICRoZWFkZXJJbmNsdWRlc3siPHJ1bnRpbWUvQ2FsbERhdGEuaD4ifSA9IDEgaWYgJGlu
dGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tQ2FsbH07Ci0KICAgICAkaGVhZGVy
SW5jbHVkZXN7IiRpbnRlcmZhY2VOYW1lLmgifSA9IDEgaWYgJGhhc1BhcmVudCAmJiAkaW50ZXJm
YWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntKU0dlbmVyYXRlVG9OYXRpdmVPYmplY3R9OwogCiAg
ICAgJGhlYWRlckluY2x1ZGVzeyJTVkdFbGVtZW50LmgifSA9IDEgaWYgJGNsYXNzTmFtZSA9fiAv
XkpTU1ZHLzsKQEAgLTE4NjQsNyArMTg3OSw2IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgIH0K
ICAgICAkc3RydWN0dXJlRmxhZ3N7IkpTQzo6TmV3SW1wdXJlUHJvcGVydHlGaXJlc1dhdGNocG9p
bnRzIn0gPSAxIGlmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e05ld0ltcHVyZVBy
b3BlcnR5RmlyZXNXYXRjaHBvaW50c307CiAgICAgJHN0cnVjdHVyZUZsYWdzeyJKU0M6OklzSW1t
dXRhYmxlUHJvdG90eXBlRXhvdGljT2JqZWN0In0gPSAxIGlmICRpbnRlcmZhY2UtPmV4dGVuZGVk
QXR0cmlidXRlcy0+e0lzSW1tdXRhYmxlUHJvdG90eXBlRXhvdGljT2JqZWN0fTsKLSAgICAkc3Ry
dWN0dXJlRmxhZ3N7IkpTQzo6VHlwZU9mU2hvdWxkQ2FsbEdldENhbGxEYXRhIn0gPSAxIGlmICRp
bnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbUNhbGx9OwogCiAgICAgIyBHZXR0
ZXJzCiAgICAgaWYgKCRoYXNHZXR0ZXIpIHsKQEAgLTE5MjAsOCArMTkzNCwxMiBAQCBzdWIgR2Vu
ZXJhdGVIZWFkZXIKICAgICAjIEN1c3RvbSBwdXNoRXZlbnRIYW5kbGVyU2NvcGUgZnVuY3Rpb24K
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIEpTQzo6SlNTY29wZSogcHVzaEV2ZW50SGFu
ZGxlclNjb3BlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1Njb3BlKikgY29uc3Q7XG5cbiIpIGlm
ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0pTQ3VzdG9tUHVzaEV2ZW50SGFuZGxl
clNjb3BlfTsKIAotICAgICMgQ3VzdG9tIGNhbGwgZnVuY3Rpb25zCi0gICAgcHVzaChAaGVhZGVy
Q29udGVudCwgIiAgICBzdGF0aWMgSlNDOjpDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0M6OkpTQ2Vs
bCosIEpTQzo6Q2FsbERhdGEmKTtcblxuIikgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57Q3VzdG9tQ2FsbH07CisgICAgIyBMZWdhY3lDYWxsZXIgYW5kIGN1c3RvbSBjYWxsIGZ1
bmN0aW9ucworICAgIGlmIChJc0NhbGxhYmxlKCRpbnRlcmZhY2UpKSB7CisgICAgICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIEpTQzo6Q2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlND
OjpKU0NlbGwqLCBKU0M6OkNhbGxEYXRhJik7XG5cbiIpOworICAgICAgICAkaGVhZGVySW5jbHVk
ZXN7IjxydW50aW1lL0NhbGxEYXRhLmg+In0gPSAxOworICAgICAgICAkc3RydWN0dXJlRmxhZ3N7
IkpTQzo6VHlwZU9mU2hvdWxkQ2FsbEdldENhbGxEYXRhIn0gPSAxOworICAgIH0KIAogICAgICMg
Q3VzdG9tIGRlbGV0ZVByb3BlcnR5IGZ1bmN0aW9uCiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwg
IiAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUpO1xuIikgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57Q3VzdG9tRGVsZXRlUHJvcGVydHl9OwpAQCAtMjU4NCwxNCArMjYwMiwxNiBAQCBz
dWIgZ2V0Q29uZGl0aW9uYWxGb3JGdW5jdGlvbkNvbnNpZGVyaW5nCiAjIGh0dHA6Ly9oZXljYW0u
Z2l0aHViLmlvL3dlYmlkbC8jZXMtb3ZlcmxvYWRzCiBzdWIgR2VuZXJhdGVPdmVybG9hZGVkRnVu
Y3Rpb25PckNvbnN0cnVjdG9yCiB7Ci0gICAgbXkgKCRmdW5jdGlvbiwgJGludGVyZmFjZSwgJGlz
Q29uc3RydWN0b3IpID0gQF87CisgICAgbXkgKCRmdW5jdGlvbiwgJGludGVyZmFjZSwgJHZhcmlh
bnQpID0gQF87CiAgICAgbXkgJWFsbFNldHMgPSBDb21wdXRlRWZmZWN0aXZlT3ZlcmxvYWRTZXQo
JGZ1bmN0aW9uLT57b3ZlcmxvYWRzfSk7CiAKICAgICBteSAkaW50ZXJmYWNlTmFtZSA9ICRpbnRl
cmZhY2UtPnR5cGUtPm5hbWU7CiAgICAgbXkgJGNsYXNzTmFtZSA9ICJKUyRpbnRlcmZhY2VOYW1l
IjsKICAgICBteSAkZnVuY3Rpb25OYW1lOwotICAgIGlmICgkaXNDb25zdHJ1Y3RvcikgeworICAg
IGlmICgkdmFyaWFudCBlcSAiY29uc3RydWN0b3IiKSB7CiAgICAgICAgICRmdW5jdGlvbk5hbWUg
PSAiY29uc3RydWN0JHtjbGFzc05hbWV9IjsKKyAgICB9IGVsc2lmICgkdmFyaWFudCBlcSAibGVn
YWN5Y2FsbGVyIikgeworICAgICAgICAkZnVuY3Rpb25OYW1lID0gImNhbGwke2NsYXNzTmFtZX0i
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIG15ICRraW5kID0gJGZ1bmN0aW9uLT5pc1N0YXRpYyA/
ICJDb25zdHJ1Y3RvciIgOiAoT3BlcmF0aW9uU2hvdWxkQmVPbkluc3RhbmNlKCRpbnRlcmZhY2Us
ICRmdW5jdGlvbikgPyAiSW5zdGFuY2UiIDogIlByb3RvdHlwZSIpOwogICAgICAgICAkZnVuY3Rp
b25OYW1lID0gImpzJHtpbnRlcmZhY2VOYW1lfSR7a2luZH1GdW5jdGlvbiIgLiAkY29kZUdlbmVy
YXRvci0+V0tfdWNmaXJzdCgkZnVuY3Rpb24tPm5hbWUpOwpAQCAtMjY3Nyw3ICsyNjk3LDcgQEAg
c3ViIEdlbmVyYXRlT3ZlcmxvYWRlZEZ1bmN0aW9uT3JDb25zdHJ1YwogICAgIG15ICRjb25kaXRp
b25hbEF0dHJpYnV0ZSA9IGdldENvbmRpdGlvbmFsRm9yRnVuY3Rpb25Db25zaWRlcmluZ092ZXJs
b2FkcygkZnVuY3Rpb24pOwogICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb25kaXRpb25h
bEF0dHJpYnV0ZSA/ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nRnJv
bUF0dHJpYnV0ZVZhbHVlKCRjb25kaXRpb25hbEF0dHJpYnV0ZSkgOiB1bmRlZjsKICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlv
bmFsU3RyaW5nOwotICAgIGlmICgkaXNDb25zdHJ1Y3RvcikgeworICAgIGlmICgkdmFyaWFudCBl
cSAiY29uc3RydWN0b3IiKSB7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAidGVtcGxhdGU8
PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7Y2xhc3NOYW1lfUNvbnN0cnVjdG9yOjpj
b25zdHJ1Y3QoRXhlY1N0YXRlKiBzdGF0ZSlcbiIpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCAke2Z1bmN0aW9u
TmFtZX0oRXhlY1N0YXRlKiBzdGF0ZSlcbiIpOwpAQCAtNDI1OSwxNiArNDI3OSwxOCBAQCBFTkQK
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2VuZGlmXG5cbiIpIGlmICRjb25kaXRp
b25hbDsKIAogICAgICAgICAgICAgIyBHZW5lcmF0ZSBhIGZ1bmN0aW9uIGRpc3BhdGNoaW5nIGNh
bGwgdG8gdGhlIHJlc3Qgb2YgdGhlIG92ZXJsb2Fkcy4KLSAgICAgICAgICAgIEdlbmVyYXRlT3Zl
cmxvYWRlZEZ1bmN0aW9uT3JDb25zdHJ1Y3RvcigkZnVuY3Rpb24sICRpbnRlcmZhY2UsIDApIGlm
ICEkaXNDdXN0b20gJiYgJGlzT3ZlcmxvYWRlZCAmJiAkZnVuY3Rpb24tPntvdmVybG9hZEluZGV4
fSA9PSBAeyRmdW5jdGlvbi0+e292ZXJsb2Fkc319OworICAgICAgICAgICAgR2VuZXJhdGVPdmVy
bG9hZGVkRnVuY3Rpb25PckNvbnN0cnVjdG9yKCRmdW5jdGlvbiwgJGludGVyZmFjZSwgIm9wZXJh
dGlvbiIpIGlmICEkaXNDdXN0b20gJiYgJGlzT3ZlcmxvYWRlZCAmJiAkZnVuY3Rpb24tPntvdmVy
bG9hZEluZGV4fSA9PSBAeyRmdW5jdGlvbi0+e292ZXJsb2Fkc319OwogICAgICAgICB9CiAKICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRlbmRBcHBsZUNvcHlyaWdodCkgaWYgJGluQXBwbGVD
b3B5cmlnaHQ7CiAKICAgICB9CiAKKyAgICBHZW5lcmF0ZUxlZ2FjeUNhbGxlckRlZmluaXRpb25z
KCRpbnRlcmZhY2UsICRjbGFzc05hbWUpOwogCiAgICAgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbkl0
ZXJhYmxlRnVuY3Rpb25zKCRpbnRlcmZhY2UpIGlmICRpbnRlcmZhY2UtPml0ZXJhYmxlOwogICAg
IEdlbmVyYXRlU2VyaWFsaXplckZ1bmN0aW9uKCRpbnRlcmZhY2UsICRjbGFzc05hbWUpIGlmICRp
bnRlcmZhY2UtPnNlcmlhbGl6YWJsZTsKKwogICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJKU0RPTU1h
cExpa2UuaCIpIGlmICRpbnRlcmZhY2UtPm1hcExpa2U7CiAKICAgICBpZiAoJG5lZWRzVmlzaXRD
aGlsZHJlbikgewpAQCAtNDU3Myw2ICs0NTk1LDYyIEBAIHN1YiBHZW5lcmF0ZVNlcmlhbGl6ZXJG
dW5jdGlvbgogICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4iKTsKIH0KIAorc3ViIEdlbmVyYXRl
TGVnYWN5Q2FsbGVyRGVmaW5pdGlvbnMKK3sKKyAgICBteSAoJGludGVyZmFjZSwgJGNsYXNzTmFt
ZSkgPSBAXzsKKworICAgIGlmICghSXNDYWxsYWJsZSgkaW50ZXJmYWNlKSB8fCAkaW50ZXJmYWNl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21DYWxsfSkgeworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgbXkgQGxlZ2FjeUNhbGxlcnMgPSBAeyRpbnRlcmZhY2UtPntMZWdhY3lDYWxs
ZXJzfX07CisgICAgaWYgKEBsZWdhY3lDYWxsZXJzID4gMSkgeworICAgICAgICBmb3JlYWNoIG15
ICRsZWdhY3lDYWxsZXIgKEBsZWdhY3lDYWxsZXJzKSB7CisgICAgICAgICAgICBHZW5lcmF0ZUxl
Z2FjeUNhbGxlckRlZmluaXRpb24oJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGxlZ2FjeUNhbGxl
cik7CisgICAgICAgIH0KKyAgICAgICAgR2VuZXJhdGVPdmVybG9hZGVkRnVuY3Rpb25PckNvbnN0
cnVjdG9yKCRsZWdhY3lDYWxsZXJzWzBdLCAkaW50ZXJmYWNlLCAibGVnYWN5Y2FsbGVyIik7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgR2VuZXJhdGVMZWdhY3lDYWxsZXJEZWZpbml0aW9uKCRpbnRl
cmZhY2UsICRjbGFzc05hbWUsICRsZWdhY3lDYWxsZXJzWzBdKTsKKyAgICB9CisKKyAgICBwdXNo
KEBpbXBsQ29udGVudCwgIkNhbGxUeXBlICR7Y2xhc3NOYW1lfTo6Z2V0Q2FsbERhdGEoSlNDZWxs
KiwgQ2FsbERhdGEmIGNhbGxEYXRhKVxuIik7CisgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4i
KTsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24g
PSBjYWxsJHtjbGFzc05hbWV9O1xuIik7CisgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0
dXJuIENhbGxUeXBlOjpIb3N0O1xuIik7CisgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG4iKTsK
KyAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxuIik7Cit9CisKK3N1YiBHZW5lcmF0ZUxlZ2FjeUNh
bGxlckRlZmluaXRpb24KK3sKKyAgICBteSAoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGZ1bmN0
aW9uKSA9IEBfOworCisgICAgbXkgJGlzT3ZlcmxvYWRlZCA9ICRmdW5jdGlvbi0+e292ZXJsb2Fk
c30gJiYgQHskZnVuY3Rpb24tPntvdmVybG9hZHN9fSA+IDE7CisgICAgaWYgKCRpc092ZXJsb2Fk
ZWQpIHsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJzdGF0aWMgaW5saW5lIEVuY29kZWRK
U1ZhbHVlIGNhbGwke2NsYXNzTmFtZX0kZnVuY3Rpb24tPntvdmVybG9hZEluZGV4fShFeGVjU3Rh
dGUqIHN0YXRlKVxuIik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsJHtjbGFzc05hbWV9KEV4
ZWNTdGF0ZSogc3RhdGUpXG4iKTsKKyAgICB9CisKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgIntc
biIpOworICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpO1xu
Iik7CisgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7XG4iKTsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7XG4iKTsKKworICAgIEdlbmVyYXRlQXJndW1lbnRzQ291bnRD
aGVjayhcQGltcGxDb250ZW50LCAkZnVuY3Rpb24sICRpbnRlcmZhY2UpOworCisgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDwke2NsYXNzTmFtZX0q
PihzdGF0ZS0+anNDYWxsZWUoKSk7XG4iKTsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBB
U1NFUlQoY2FzdGVkVGhpcyk7XG4iKTsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpO1xuIik7CisKKyAgICBteSAkZnVuY3Rpb25J
bXBsZW1lbnRhdGlvbk5hbWUgPSAkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0ltcGxl
bWVudGVkQXN9IHx8ICRjb2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0KCRmdW5jdGlvbi0+bmFtZSkg
fHwgImxlZ2FjeUNhbGxlck9wZXJhdGlvbkZyb21CaW5kaW5ncyI7CisgICAgbXkgJGZ1bmN0aW9u
U3RyaW5nID0gR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2soXEBpbXBsQ29udGVudCwgJGZ1bmN0aW9u
LCAkaW50ZXJmYWNlLCAkZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWUpOworCisgICAgR2VuZXJh
dGVJbXBsZW1lbnRhdGlvbkZ1bmN0aW9uQ2FsbCgkZnVuY3Rpb24sICRmdW5jdGlvblN0cmluZywg
IiAgICAiLCAkaW50ZXJmYWNlKTsKKworICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsK
K30KKwogc3ViIEdlbmVyYXRlQ2FsbFdpdGhVc2luZ1JlZmVyZW5jZXMKIHsKICAgICBteSAoJGNh
bGxXaXRoLCAkb3V0cHV0QXJyYXksICRyZXR1cm5WYWx1ZSwgJGZ1bmN0aW9uKSA9IEBfOwpAQCAt
NTE5Myw3ICs1MjcxLDggQEAgc3ViIEdlbmVyYXRlQ2FsbGJhY2tJbXBsZW1lbnRhdGlvbkNvbnRl
bgogCiAgICAgICAgIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9ucygkY29udGVudFJlZiwg
JGNsYXNzTmFtZSwgIiIsICR2aXNpYmxlTmFtZSwgJGludGVyZmFjZU9yQ2FsbGJhY2spOwogCi0g
ICAgICAgIHB1c2goQCRjb250ZW50UmVmLCAiSlNWYWx1ZSAke2NsYXNzTmFtZX06OmdldENvbnN0
cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdClcbntcbiIp
OworICAgICAgICBwdXNoKEAkY29udGVudFJlZiwgIkpTVmFsdWUgJHtjbGFzc05hbWV9OjpnZXRD
b25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpXG4i
KTsKKyAgICAgICAgcHVzaChAJGNvbnRlbnRSZWYsICJ7XG4iKTsKICAgICAgICAgcHVzaChAJGNv
bnRlbnRSZWYsICIgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPCR7Y2xhc3NOYW1lfUNvbnN0
cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVj
dCkpO1xuIik7CiAgICAgICAgIHB1c2goQCRjb250ZW50UmVmLCAifVxuXG4iKTsKICAgICB9CkBA
IC01MjU3LDcgKzUzMzYsNyBAQCBzdWIgR2VuZXJhdGVDYWxsYmFja0ltcGxlbWVudGF0aW9uQ29u
dGVuCiAgICAgcHVzaChAJGNvbnRlbnRSZWYsICJ9XG5cbiIpOwogfQogCi1zdWIgR2VuZXJhdGVJ
bXBsZW1lbnRhdGlvbkZ1bmN0aW9uQ2FsbCgpCitzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbkZ1
bmN0aW9uQ2FsbAogewogICAgIG15ICgkZnVuY3Rpb24sICRmdW5jdGlvblN0cmluZywgJGluZGVu
dCwgJGludGVyZmFjZSkgPSBAXzsKIApAQCAtNjE3OCw3ICs2MjU3LDcgQEAgc3ViIEdlbmVyYXRl
Q29uc3RydWN0b3JEZWZpbml0aW9ucwogICAgICAgICAgICAgZm9yZWFjaCBteSAkY29uc3RydWN0
b3IgKEBjb25zdHJ1Y3RvcnMpIHsKICAgICAgICAgICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9y
RGVmaW5pdGlvbigkb3V0cHV0QXJyYXksICRjbGFzc05hbWUsICRwcm90b0NsYXNzTmFtZSwgJHZp
c2libGVJbnRlcmZhY2VOYW1lLCAkaW50ZXJmYWNlLCAkZ2VuZXJhdGluZ05hbWVkQ29uc3RydWN0
b3IsICRjb25zdHJ1Y3Rvcik7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBHZW5lcmF0ZU92
ZXJsb2FkZWRGdW5jdGlvbk9yQ29uc3RydWN0b3IoQHskaW50ZXJmYWNlLT5jb25zdHJ1Y3RvcnN9
WzBdLCAkaW50ZXJmYWNlLCAxKTsKKyAgICAgICAgICAgIEdlbmVyYXRlT3ZlcmxvYWRlZEZ1bmN0
aW9uT3JDb25zdHJ1Y3RvcihAeyRpbnRlcmZhY2UtPmNvbnN0cnVjdG9yc31bMF0sICRpbnRlcmZh
Y2UsICJjb25zdHJ1Y3RvciIpOwogICAgICAgICB9IGVsc2lmIChAY29uc3RydWN0b3JzID09IDEp
IHsKICAgICAgICAgICAgIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uKCRvdXRwdXRBcnJh
eSwgJGNsYXNzTmFtZSwgJHByb3RvQ2xhc3NOYW1lLCAkdmlzaWJsZUludGVyZmFjZU5hbWUsICRp
bnRlcmZhY2UsICRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3RvciwgJGNvbnN0cnVjdG9yc1swXSk7
CiAgICAgICAgIH0gZWxzZSB7CkBAIC02Mzc2LDYgKzY0NTUsMTIgQEAgc3ViIElzQ29uc3RydWN0
YWJsZQogICAgICAgICB8fCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntKU0J1aWx0
aW5Db25zdHJ1Y3Rvcn07CiB9CiAKK3N1YiBJc0NhbGxhYmxlCit7CisgICAgbXkgJGludGVyZmFj
ZSA9IHNoaWZ0OworICAgIHJldHVybiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntD
dXN0b21DYWxsfSB8fCAkaW50ZXJmYWNlLT57TGVnYWN5Q2FsbGVyc30KK30KKwogc3ViIEhlYWRl
ck5lZWRzUHJvdG90eXBlRGVjbGFyYXRpb24KIHsKICAgICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbQko
cmV2aXNpb24gMjE2ODQ4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQ
YXJzZXIucG0JKHdvcmtpbmcgY29weSkKQEAgLTgwLDcgKzgwLDcgQEAgc3RydWN0KCBJRExBcmd1
bWVudCA9PiB7CiAgICAgaXNWYXJpYWRpYyA9PiAnJCcsCiAgICAgaXNPcHRpb25hbCA9PiAnJCcs
CiAgICAgZGVmYXVsdCA9PiAnJCcsCi0gICAgZXh0ZW5kZWRBdHRyaWJ1dGVzID0+ICckJywKKyAg
ICBleHRlbmRlZEF0dHJpYnV0ZXMgPT4gJyUnLAogfSk7CiAKICMgaHR0cHM6Ly9oZXljYW0uZ2l0
aHViLmlvL3dlYmlkbC8jaWRsLW9wZXJhdGlvbnMKQEAgLTkzLDcgKzkzLDcgQEAgc3RydWN0KCBJ
RExPcGVyYXRpb24gPT4gewogICAgIGlzU2VyaWFsaXplciA9PiAnJCcsCiAgICAgaXNNYXBMaWtl
ID0+ICckJywKICAgICBzcGVjaWFscyA9PiAnQCcsCi0gICAgZXh0ZW5kZWRBdHRyaWJ1dGVzID0+
ICckJywKKyAgICBleHRlbmRlZEF0dHJpYnV0ZXMgPT4gJyUnLAogfSk7CiAKIApAQCAtNTEzLDcg
KzUxMyw2IEBAIHN1YiBtYWtlU2ltcGxlVHlwZQogCiBzdWIgY2xvbmVUeXBlCiB7Ci0gICAgbXkg
JHNlbGYgPSBzaGlmdDsKICAgICBteSAkdHlwZSA9IHNoaWZ0OwogCiAgICAgbXkgJGNsb25lZFR5
cGUgPSBJRExUeXBlLT5uZXcoKTsKQEAgLTUyNCwxMiArNTIzLDUwIEBAIHN1YiBjbG9uZVR5cGUK
ICAgICBjb3B5RXh0ZW5kZWRBdHRyaWJ1dGVzKCRjbG9uZWRUeXBlLT5leHRlbmRlZEF0dHJpYnV0
ZXMsICR0eXBlLT5leHRlbmRlZEF0dHJpYnV0ZXMpOwogCiAgICAgZm9yZWFjaCBteSAkc3VidHlw
ZSAoQHskdHlwZS0+c3VidHlwZXN9KSB7Ci0gICAgICAgIHB1c2goQHskY2xvbmVkVHlwZS0+c3Vi
dHlwZXN9LCAkc2VsZi0+Y2xvbmVUeXBlKCRzdWJ0eXBlKSk7CisgICAgICAgIHB1c2goQHskY2xv
bmVkVHlwZS0+c3VidHlwZXN9LCBjbG9uZVR5cGUoJHN1YnR5cGUpKTsKICAgICB9CiAKICAgICBy
ZXR1cm4gJGNsb25lZFR5cGU7CiB9CiAKK3N1YiBjbG9uZUFyZ3VtZW50Cit7CisgICAgbXkgJGFy
Z3VtZW50ID0gc2hpZnQ7CisKKyAgICBteSAkY2xvbmVkQXJndW1lbnQgPSBJRExBcmd1bWVudC0+
bmV3KCk7CisgICAgJGNsb25lZEFyZ3VtZW50LT5uYW1lKCRhcmd1bWVudC0+bmFtZSk7CisgICAg
JGNsb25lZEFyZ3VtZW50LT50eXBlKGNsb25lVHlwZSgkYXJndW1lbnQtPnR5cGUpKTsKKyAgICAk
Y2xvbmVkQXJndW1lbnQtPmlzVmFyaWFkaWMoJGFyZ3VtZW50LT5pc1ZhcmlhZGljKTsKKyAgICAk
Y2xvbmVkQXJndW1lbnQtPmlzT3B0aW9uYWwoJGFyZ3VtZW50LT5pc09wdGlvbmFsKTsKKyAgICAk
Y2xvbmVkQXJndW1lbnQtPmRlZmF1bHQoJGFyZ3VtZW50LT5kZWZhdWx0KTsKKyAgICBjb3B5RXh0
ZW5kZWRBdHRyaWJ1dGVzKCRjbG9uZWRBcmd1bWVudC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLCAkYXJn
dW1lbnQtPmV4dGVuZGVkQXR0cmlidXRlcyk7CisKKyAgICByZXR1cm4gJGNsb25lZEFyZ3VtZW50
OworfQorCitzdWIgY2xvbmVPcGVyYXRpb24KK3sKKyAgICBteSAkb3BlcmF0aW9uID0gc2hpZnQ7
CisKKyAgICBteSAkY2xvbmVkT3BlcmF0aW9uID0gSURMT3BlcmF0aW9uLT5uZXcoKTsKKyAgICAk
Y2xvbmVkT3BlcmF0aW9uLT5uYW1lKCRvcGVyYXRpb24tPm5hbWUpOworICAgICRjbG9uZWRPcGVy
YXRpb24tPnR5cGUoY2xvbmVUeXBlKCRvcGVyYXRpb24tPnR5cGUpKTsKKyAgICAKKyAgICBmb3Jl
YWNoIG15ICRhcmd1bWVudCAoQHskb3BlcmF0aW9uLT5hcmd1bWVudHN9KSB7CisgICAgICAgIHB1
c2goQHskY2xvbmVkT3BlcmF0aW9uLT5hcmd1bWVudHN9LCBjbG9uZUFyZ3VtZW50KCRhcmd1bWVu
dCkpOworICAgIH0KKworICAgICRjbG9uZWRPcGVyYXRpb24tPmlzU3RhdGljKCRvcGVyYXRpb24t
PmlzU3RhdGljKTsKKyAgICAkY2xvbmVkT3BlcmF0aW9uLT5pc0l0ZXJhYmxlKCRvcGVyYXRpb24t
PmlzSXRlcmFibGUpOworICAgICRjbG9uZWRPcGVyYXRpb24tPmlzU2VyaWFsaXplcigkb3BlcmF0
aW9uLT5pc1NlcmlhbGl6ZXIpOworICAgICRjbG9uZWRPcGVyYXRpb24tPmlzTWFwTGlrZSgkb3Bl
cmF0aW9uLT5pc01hcExpa2UpOworICAgICRjbG9uZWRPcGVyYXRpb24tPnNwZWNpYWxzKCRvcGVy
YXRpb24tPnNwZWNpYWxzKTsKKworICAgIGNvcHlFeHRlbmRlZEF0dHJpYnV0ZXMoJGNsb25lZE9w
ZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLCAkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0
ZXMpOworCisgICAgcmV0dXJuICRjbG9uZWRPcGVyYXRpb247Cit9CisKIG15ICRuZXh0QXR0cmli
dXRlXzEgPSAnXihhdHRyaWJ1dGV8aW5oZXJpdCkkJzsKIG15ICRuZXh0UHJpbWl0aXZlVHlwZV8x
ID0gJ14oaW50fGxvbmd8c2hvcnR8dW5zaWduZWQpJCc7CiBteSAkbmV4dFByaW1pdGl2ZVR5cGVf
MiA9ICdeKGRvdWJsZXxmbG9hdHx1bnJlc3RyaWN0ZWQpJCc7CkBAIC02NDUsNyArNjgyLDcgQEAg
c3ViIHR5cGVCeUFwcGx5aW5nVHlwZWRlZnMKICAgICBpZiAoZXhpc3RzICR0eXBlZGVmc3skdHlw
ZS0+bmFtZX0pIHsKICAgICAgICAgbXkgJHR5cGVkZWYgPSAkdHlwZWRlZnN7JHR5cGUtPm5hbWV9
OwogCi0gICAgICAgIG15ICRjbG9uZWRUeXBlID0gJHNlbGYtPmNsb25lVHlwZSgkdHlwZWRlZi0+
dHlwZSk7CisgICAgICAgIG15ICRjbG9uZWRUeXBlID0gY2xvbmVUeXBlKCR0eXBlZGVmLT50eXBl
KTsKICAgICAgICAgJGNsb25lZFR5cGUtPmlzTnVsbGFibGUoJGNsb25lZFR5cGUtPmlzTnVsbGFi
bGUgfHwgJHR5cGUtPmlzTnVsbGFibGUpOwogICAgICAgICAkc2VsZi0+bW92ZUV4dGVuZGVkQXR0
cmlidXRlc0FwcGxpY2FibGVUb1R5cGVzKCRjbG9uZWRUeXBlLCAkdHlwZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rl
c3RPYmouaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9UZXN0T2JqLmlkbAkocmV2aXNpb24gMjE2ODQ4KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00MzMsNiAr
NDMzLDEwIEBAIGVudW0gVGVzdENvbmZpZGVuY2UgeyAiaGlnaCIsICJraW5kYS1sb3cKICAgICBz
ZXJpYWxpemVyID0ge2NyZWF0ZSwgcmVhZE9ubHlTdHJpbmdBdHRyLCBlbnVtQXR0ciwgbG9uZ0F0
dHJ9OwogCiAgICAgdm9pZCBidWZmZXJTb3VyY2VQYXJhbWV0ZXIoQnVmZmVyU291cmNlIGRhdGEp
OworICAgIAorICAgIGxlZ2FjeWNhbGxlciB2b2lkIGxlZ2FjeUNhbGxlck5hbWVkKGxvbmcgcGFy
YW0pOworICAgIGxlZ2FjeWNhbGxlciBsb25nIChET01TdHJpbmcgcGFyYW0pOworICAgIGxlZ2Fj
eWNhbGxlciB2b2lkICgpOwogfTsKIAogLy8gVGhlIGZvbGxvd2luZyBjb21tZW50IHNob3VsZCBu
b3QgZ2VuZXJhdGUgYW55IGNvZGUuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAkocmV2aXNpb24gMjE2ODQ4KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEyNjAsNiArMTI2MCw3IEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3QKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkF0dGFjaFNoYWRvd1Jvb3QoSlNDOjpFeGVjU3RhdGUq
KTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk9wZXJhdGlvbldpdGhFeHRlcm5hbERpY3Rpb25hcnlQYXJhbWV0ZXIoSlNDOjpFeGVj
U3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbkJ1ZmZlclNvdXJjZVBhcmFtZXRlcihKU0M6OkV4ZWNTdGF0ZSopOworSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TGVnYWN5Q2FsbGVyTmFtZWQoSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKEpTQzo6RXhl
Y1N0YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25Ub0pTT04oSlNDOjpFeGVjU3RhdGUqKTsKIApAQCAtMTkyMiw2ICsxOTIz
LDcgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE9ialBybwogICAgIHsgImF0
dGFjaFNoYWRvd1Jvb3QiLCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQXR0
YWNoU2hhZG93Um9vdCksIChpbnRwdHJfdCkgKDEpIH0gfSwKICAgICB7ICJvcGVyYXRpb25XaXRo
RXh0ZXJuYWxEaWN0aW9uYXJ5UGFyYW1ldGVyIiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk9wZXJhdGlvbldpdGhFeHRlcm5hbERpY3Rpb25hcnlQYXJhbWV0ZXIpLCAoaW50
cHRyX3QpICgxKSB9IH0sCiAgICAgeyAiYnVmZmVyU291cmNlUGFyYW1ldGVyIiwgSlNDOjpGdW5j
dGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9u
Pihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ1ZmZlclNvdXJjZVBhcmFtZXRlciksIChpbnRw
dHJfdCkgKDEpIH0gfSwKKyAgICB7ICJsZWdhY3lDYWxsZXJOYW1lZCIsIEpTQzo6RnVuY3Rpb24s
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25MZWdhY3lDYWxsZXJOYW1lZCksIChpbnRwdHJfdCkgKDEp
IH0gfSwKICAgICB7ICJ0b1N0cmluZyIsIEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25Ub1N0cmluZyksIChpbnRwdHJfdCkgKDApIH0gfSwKICAgICB7ICJ0b0pTT04iLCBKU0M6
OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVu
Y3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVG9KU09OKSwgKGludHB0cl90KSAoMCkg
fSB9LAogI2lmIEVOQUJMRShDb25kaXRpb24xKQpAQCAtODc2Myw2ICs4NzY1LDI2IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25MZWdhY3lDYWxsZXJOYW1lZENhbGxlcihK
U0M6OkV4ZWNTdGF0ZSosIEpTVGVzdE9iaiosIEpTQzo6VGhyb3dTY29wZSYpOworCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTGVnYWN5Q2Fs
bGVyTmFtZWQoRXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxK
U1Rlc3RPYmo+OjpjYWxsT3BlcmF0aW9uPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTGVnYWN5
Q2FsbGVyTmFtZWRDYWxsZXI+KHN0YXRlLCAibGVnYWN5Q2FsbGVyTmFtZWQiKTsKK30KKworc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TGVnYWN5Q2FsbGVyTmFtZWRDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RPYmoq
IGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3sKKyAgICBVTlVTRURf
UEFSQU0oc3RhdGUpOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOworICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJn
dW1lbnRDb3VudCgpIDwgMSkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRo
cm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgYXV0
byBwYXJhbSA9IGNvbnZlcnQ8SURMTG9uZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1l
bnQoMCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CisgICAgaW1wbC5sZWdhY3lDYWxsZXJOYW1lZChXVEZNb3ZlKHBhcmFtKSk7CisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKK30KKwogc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmdD
YWxsZXIoSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RPYmoqLCBKU0M6OlRocm93U2NvcGUmKTsKIAog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRv
U3RyaW5nKEV4ZWNTdGF0ZSogc3RhdGUpCkBAIC04Nzc4LDYgKzg4MDAsNzMgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodG9KUzxJRExVU1ZTdHJpbmc+KCpzdGF0ZSwgaW1wbC5zdHJpbmdpZmllckF0dHJpYnV0ZSgp
KSk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY2FsbEpTVGVzdE9iajEoRXhl
Y1N0YXRlKiBzdGF0ZSkKK3sKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CisgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90
RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganND
YXN0PEpTVGVzdE9iaio+KHN0YXRlLT5qc0NhbGxlZSgpKTsKKyAgICBBU1NFUlQoY2FzdGVkVGhp
cyk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKKyAgICBhdXRvIHBh
cmFtID0gY29udmVydDxJRExMb25nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgw
KSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKKyAgICBpbXBsLmxlZ2FjeUNhbGxlck5hbWVkKFdURk1vdmUocGFyYW0pKTsKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQorCitzdGF0aWMgaW5saW5lIEVu
Y29kZWRKU1ZhbHVlIGNhbGxKU1Rlc3RPYmoyKEV4ZWNTdGF0ZSogc3RhdGUpCit7CisgICAgVk0m
IHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRl
KSk7CisgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihzdGF0ZS0+anND
YWxsZWUoKSk7CisgICAgQVNTRVJUKGNhc3RlZFRoaXMpOworICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CisgICAgYXV0byBwYXJhbSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5n
Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CisgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRvSlM8SURMTG9uZz4oaW1wbC5sZWdhY3lDYWxsZXJPcGVyYXRpb25Gcm9tQmlu
ZGluZ3MoV1RGTW92ZShwYXJhbSkpKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFs
dWUgY2FsbEpTVGVzdE9iajMoRXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAgICBWTSYgdm0gPSBzdGF0
ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CisgICAgYXV0byogY2FzdGVkVGhpcyA9IGpz
Q2FzdDxKU1Rlc3RPYmoqPihzdGF0ZS0+anNDYWxsZWUoKSk7CisgICAgQVNTRVJUKGNhc3RlZFRo
aXMpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CisgICAgaW1wbC5s
ZWdhY3lDYWxsZXJPcGVyYXRpb25Gcm9tQmluZGluZ3MoKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNhbGxKU1Rlc3RPYmooRXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAgICBWTSYgdm0gPSBzdGF0ZS0+
dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CisgICAgc2l6ZV90IGFyZ3NDb3VudCA9IHN0ZDo6
bWluPHNpemVfdD4oMSwgc3RhdGUtPmFyZ3VtZW50Q291bnQoKSk7CisgICAgaWYgKGFyZ3NDb3Vu
dCA9PSAwKSB7CisgICAgICAgIHJldHVybiBjYWxsSlNUZXN0T2JqMyhzdGF0ZSk7CisgICAgfQor
ICAgIGlmIChhcmdzQ291bnQgPT0gMSkgeworICAgICAgICBKU1ZhbHVlIGRpc3Rpbmd1aXNoaW5n
QXJnID0gc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOworICAgICAgICBpZiAoZGlzdGluZ3Vp
c2hpbmdBcmcuaXNOdW1iZXIoKSkKKyAgICAgICAgICAgIHJldHVybiBjYWxsSlNUZXN0T2JqMShz
dGF0ZSk7CisgICAgICAgIHJldHVybiBjYWxsSlNUZXN0T2JqMihzdGF0ZSk7CisgICAgfQorICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKK30KKworQ2FsbFR5
cGUgSlNUZXN0T2JqOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCit7
CisgICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY2FsbEpTVGVzdE9iajsKKyAgICByZXR1
cm4gQ2FsbFR5cGU6Okhvc3Q7Cit9CisKIEpTQzo6SlNPYmplY3QqIEpTVGVzdE9iajo6c2VyaWFs
aXplKEV4ZWNTdGF0ZSogc3RhdGUsIEpTVGVzdE9iaiogdGhpc09iamVjdCwgVGhyb3dTY29wZSYg
dGhyb3dTY29wZSkKIHsKICAgICBhdXRvJiB2bSA9IHN0YXRlLT52bSgpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaAko
cmV2aXNpb24gMjE2ODQ4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE9iai5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVk
ZSAiSlNET01Db252ZXJ0LmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyLmgiCiAjaW5jbHVkZSAi
VGVzdE9iai5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvQ2FsbERhdGEuaD4KICNpbmNsdWRlIDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTEsNiArNTIsOCBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVj
dHVyZUZsYWdzKSwgaW5mbygpKTsKICAgICB9CiAKKyAgICBzdGF0aWMgSlNDOjpDYWxsVHlwZSBn
ZXRDYWxsRGF0YShKU0M6OkpTQ2VsbCosIEpTQzo6Q2FsbERhdGEmKTsKKwogICAgIHN0YXRpYyB2
b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlID0gSlNDOjpFbnVt
ZXJhdGlvbk1vZGUoKSk7CiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihK
U0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRpYyBKU0M6OkpT
T2JqZWN0KiBzZXJpYWxpemUoSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RPYmoqIHRoaXNPYmplY3Qs
IEpTQzo6VGhyb3dTY29wZSYpOwpAQCAtNjksNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IEpTQzo6SlNWYWx1ZSBjbGFzc01ldGhvZDIoSlNDOjpFeGVjU3RhdGUmKTsKICAgICBKU0M6OkpT
VmFsdWUgdGVzdEN1c3RvbVByb21pc2VGdW5jdGlvbihKU0M6OkV4ZWNTdGF0ZSYpOwogcHVibGlj
OgotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEpTQzo6SGFzU3Rh
dGljUHJvcGVydHlUYWJsZSB8IEpTQzo6SW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5k
ZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlT
bG90IHwgSlNDOjpPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgQmFzZTo6U3RydWN0dXJlRmxh
Z3M7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gSlNDOjpIYXNT
dGF0aWNQcm9wZXJ0eVRhYmxlIHwgSlNDOjpJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJ
bmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0
eVNsb3QgfCBKU0M6Ok92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBKU0M6OlR5cGVPZlNob3Vs
ZENhbGxHZXRDYWxsRGF0YSB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogcHJvdGVjdGVkOgogICAg
IEpTVGVzdE9iaihKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRlc3RP
Ymo+JiYpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDIxNjg0OCkK
KysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5
NzksNiArNDk3OSwxMSBAQCBSZWY8SFRNTENvbGxlY3Rpb24+IERvY3VtZW50OjphbGwoKQogICAg
IHJldHVybiBlbnN1cmVSYXJlRGF0YSgpLmVuc3VyZU5vZGVMaXN0cygpLmFkZENhY2hlZENvbGxl
Y3Rpb248SFRNTEFsbENvbGxlY3Rpb24+KCp0aGlzLCBEb2NBbGwpOwogfQogCitSZWY8SFRNTENv
bGxlY3Rpb24+IERvY3VtZW50OjphbGxGaWx0ZXJlZEJ5TmFtZShjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUpCit7CisgICAgcmV0dXJuIGVuc3VyZVJhcmVEYXRhKCkuZW5zdXJlTm9kZUxpc3RzKCku
YWRkQ2FjaGVkQ29sbGVjdGlvbjxIVE1MQWxsTmFtZWRTdWJDb2xsZWN0aW9uPigqdGhpcywgRG9j
dW1lbnRBbGxOYW1lZEl0ZW1zLCBuYW1lKTsKK30KKwogUmVmPEhUTUxDb2xsZWN0aW9uPiBEb2N1
bWVudDo6d2luZG93TmFtZWRJdGVtcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCiB7CiAgICAg
cmV0dXJuIGVuc3VyZVJhcmVEYXRhKCkuZW5zdXJlTm9kZUxpc3RzKCkuYWRkQ2FjaGVkQ29sbGVj
dGlvbjxXaW5kb3dOYW1lQ29sbGVjdGlvbj4oKnRoaXMsIFdpbmRvd05hbWVkSXRlbXMsIG5hbWUp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDIxNjg0OCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NjQsOSArNDY0LDEwIEBA
IHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBSZWY8SFRNTENvbGxlY3Rpb24+IGFuY2hvcnMo
KTsKICAgICBXRUJDT1JFX0VYUE9SVCBSZWY8SFRNTENvbGxlY3Rpb24+IHNjcmlwdHMoKTsKICAg
ICBSZWY8SFRNTENvbGxlY3Rpb24+IGFsbCgpOworICAgIFJlZjxIVE1MQ29sbGVjdGlvbj4gYWxs
RmlsdGVyZWRCeU5hbWUoY29uc3QgQXRvbWljU3RyaW5nJik7CiAKLSAgICBSZWY8SFRNTENvbGxl
Y3Rpb24+IHdpbmRvd05hbWVkSXRlbXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKTsKLSAgICBS
ZWY8SFRNTENvbGxlY3Rpb24+IGRvY3VtZW50TmFtZWRJdGVtcyhjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUpOworICAgIFJlZjxIVE1MQ29sbGVjdGlvbj4gd2luZG93TmFtZWRJdGVtcyhjb25zdCBB
dG9taWNTdHJpbmcmKTsKKyAgICBSZWY8SFRNTENvbGxlY3Rpb24+IGRvY3VtZW50TmFtZWRJdGVt
cyhjb25zdCBBdG9taWNTdHJpbmcmKTsKIAogICAgIC8vIE90aGVyIG1ldGhvZHMgKG5vdCBwYXJ0
IG9mIERPTSkKICAgICBib29sIGlzU3ludGhlc2l6ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzU3lu
dGhlc2l6ZWQ7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvQ2FjaGVkSFRNTENvbGxlY3Rp
b24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0NhY2hlZEhUTUxDb2xsZWN0
aW9uLmgJKHJldmlzaW9uIDIxNjg0OCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvQ2FjaGVkSFRN
TENvbGxlY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtOTcsMTUgKzk3LDIyIEBAIGJvb2wgQ2Fj
aGVkSFRNTENvbGxlY3Rpb248SFRNTENvbGxlY3Rpb24KIAogc3RhdGljIGlubGluZSBib29sIG5h
bWVTaG91bGRCZVZpc2libGVJbkRvY3VtZW50QWxsKEhUTUxFbGVtZW50JiBlbGVtZW50KQogewot
ICAgIC8vIFRoZSBkb2N1bWVudC5hbGwgY29sbGVjdGlvbiByZXR1cm5zIG9ubHkgY2VydGFpbiB0
eXBlcyBvZiBlbGVtZW50cyBieSBuYW1lLAotICAgIC8vIGFsdGhvdWdoIGl0IHJldHVybnMgYW55
IHR5cGUgb2YgZWxlbWVudCBieSBpZC4KLSAgICByZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKEhU
TUxOYW1lczo6YXBwbGV0VGFnKQorICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcv
bXVsdGlwYWdlL2luZnJhc3RydWN0dXJlLmh0bWwjYWxsLW5hbWVkLWVsZW1lbnRzCisgICAgcmV0
dXJuIGVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6OmFUYWcpCisgICAgICAgIHx8IGVsZW1l
bnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6OmFwcGxldFRhZykKKyAgICAgICAgfHwgZWxlbWVudC5o
YXNUYWdOYW1lKEhUTUxOYW1lczo6YnV0dG9uVGFnKQogICAgICAgICB8fCBlbGVtZW50Lmhhc1Rh
Z05hbWUoSFRNTE5hbWVzOjplbWJlZFRhZykKICAgICAgICAgfHwgZWxlbWVudC5oYXNUYWdOYW1l
KEhUTUxOYW1lczo6Zm9ybVRhZykKKyAgICAgICAgfHwgZWxlbWVudC5oYXNUYWdOYW1lKEhUTUxO
YW1lczo6ZnJhbWVUYWcpCisgICAgICAgIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6
OmZyYW1lc2V0VGFnKQorICAgICAgICB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpp
ZnJhbWVUYWcpCiAgICAgICAgIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6OmltZ1Rh
ZykKICAgICAgICAgfHwgZWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aW5wdXRUYWcpCisg
ICAgICAgIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6Om1hcFRhZykKKyAgICAgICAg
fHwgZWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6bWV0YVRhZykKICAgICAgICAgfHwgZWxl
bWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6b2JqZWN0VGFnKQotICAgICAgICB8fCBlbGVtZW50
Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpzZWxlY3RUYWcpOworICAgICAgICB8fCBlbGVtZW50Lmhh
c1RhZ05hbWUoSFRNTE5hbWVzOjpzZWxlY3RUYWcpCisgICAgICAgIHx8IGVsZW1lbnQuaGFzVGFn
TmFtZShIVE1MTmFtZXM6OnRleHRhcmVhVGFnKTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIG5h
bWVTaG91bGRCZVZpc2libGVJbkRvY3VtZW50QWxsKEVsZW1lbnQmIGVsZW1lbnQpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL0NvbGxlY3Rpb25UeXBlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9Db2xsZWN0aW9uVHlwZS5oCShyZXZpc2lvbiAyMTY4NDgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0NvbGxlY3Rpb25UeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYg
KzM5LDggQEAgZW51bSBDb2xsZWN0aW9uVHlwZSB7CiAgICAgV2luZG93TmFtZWRJdGVtcywKICAg
ICBEb2N1bWVudE5hbWVkSXRlbXMsCiAKKyAgICBEb2N1bWVudEFsbE5hbWVkSXRlbXMsIC8vIFN1
Yi1jb2xsZWN0aW9uIHJldHVybmVkIGJ5IHRoZSAiYWxsIiBjb2xsZWN0aW9uIHdoZW4gdGhlcmUg
YXJlIG11bHRpcGxlIGl0ZW1zIHdpdGggdGhlIHNhbWUgbmFtZQorCiAgICAgLy8gVW5uYW1lZCBI
VE1MQ29sbGVjdGlvbiB0eXBlcyBjYWNoZWQgaW4gZWxlbWVudHMuCiAgICAgTm9kZUNoaWxkcmVu
LCAvLyBmaXJzdC1sZXZlbCBjaGlsZHJlbiAoSUUpCiAgICAgVGFibGVUQm9kaWVzLCAvLyBhbGwg
PHRib2R5PiBlbGVtZW50cyBpbiB0aGlzIHRhYmxlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L0dlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9HZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uY3BwCShyZXZpc2lvbiAyMTY4
NDgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0dlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTc3LDYgKzc3LDcgQEAgYm9vbCBHZW5lcmljQ2FjaGVkSFRN
TENvbGxlY3Rpb248dHJhdmVycwogICAgIGNhc2UgQnlIVE1MVGFnOgogICAgIGNhc2UgQWxsRGVz
Y2VuZGFudHM6CiAgICAgY2FzZSBEb2NBbGw6CisgICAgY2FzZSBEb2N1bWVudEFsbE5hbWVkSXRl
bXM6CiAgICAgY2FzZSBEb2N1bWVudE5hbWVkSXRlbXM6CiAgICAgY2FzZSBGb3JtQ29udHJvbHM6
CiAgICAgY2FzZSBTZWxlY3RPcHRpb25zOgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QWxsQ29sbGVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QWxsQ29sbGVjdGlvbi5jcHAJKHJldmlzaW9uIDIxNjg0OCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEFsbENvbGxlY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw4IEBA
CiAjaW5jbHVkZSAiSFRNTEFsbENvbGxlY3Rpb24uaCIKIAogI2luY2x1ZGUgIkVsZW1lbnQuaCIK
KyNpbmNsdWRlICJOb2RlUmFyZURhdGEuaCIKKyNpbmNsdWRlIDxydW50aW1lL0lkZW50aWZpZXIu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00MCwyMyArNDIsNTAgQEAgaW5saW5lIEhU
TUxBbGxDb2xsZWN0aW9uOjpIVE1MQWxsQ29sbGVjdAogewogfQogCi1FbGVtZW50KiBIVE1MQWxs
Q29sbGVjdGlvbjo6bmFtZWRJdGVtV2l0aEluZGV4KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwg
dW5zaWduZWQgaW5kZXgpIGNvbnN0CisvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211
bHRpcGFnZS9pbmZyYXN0cnVjdHVyZS5odG1sI2RvbS1odG1sYWxsY29sbGVjdGlvbi1pdGVtCitz
dGQ6Om9wdGlvbmFsPFZhcmlhbnQ8UmVmUHRyPEhUTUxDb2xsZWN0aW9uPiwgUmVmUHRyPEVsZW1l
bnQ+Pj4gSFRNTEFsbENvbGxlY3Rpb246Om5hbWVkT3JJbmRleGVkSXRlbU9ySXRlbXMoY29uc3Qg
QXRvbWljU3RyaW5nJiBuYW1lT3JJbmRleCkgY29uc3QKIHsKLSAgICB1cGRhdGVOYW1lZEVsZW1l
bnRDYWNoZSgpOwotICAgIGNvbnN0IENvbGxlY3Rpb25OYW1lZEVsZW1lbnRDYWNoZSYgY2FjaGUg
PSBuYW1lZEl0ZW1DYWNoZXMoKTsKKyAgICBpZiAobmFtZU9ySW5kZXguaXNOdWxsKCkpCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBpZiAoY29uc3QgVmVjdG9yPEVsZW1lbnQq
PiogZWxlbWVudHMgPSBjYWNoZS5maW5kRWxlbWVudHNXaXRoSWQobmFtZSkpIHsKLSAgICAgICAg
aWYgKGluZGV4IDwgZWxlbWVudHMtPnNpemUoKSkKLSAgICAgICAgICAgIHJldHVybiBlbGVtZW50
cy0+YXQoaW5kZXgpOwotICAgICAgICBpbmRleCAtPSBlbGVtZW50cy0+c2l6ZSgpOwotICAgIH0K
LQotICAgIGlmIChjb25zdCBWZWN0b3I8RWxlbWVudCo+KiBlbGVtZW50cyA9IGNhY2hlLmZpbmRF
bGVtZW50c1dpdGhOYW1lKG5hbWUpKSB7Ci0gICAgICAgIGlmIChpbmRleCA8IGVsZW1lbnRzLT5z
aXplKCkpCi0gICAgICAgICAgICByZXR1cm4gZWxlbWVudHMtPmF0KGluZGV4KTsKLSAgICB9Cisg
ICAgaWYgKGF1dG8gaW5kZXggPSBKU0M6OnBhcnNlSW5kZXgoKm5hbWVPckluZGV4LmltcGwoKSkp
CisgICAgICAgIHJldHVybiBWYXJpYW50PFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4sIFJlZlB0cjxF
bGVtZW50Pj4geyBSZWZQdHI8RWxlbWVudD4geyBpdGVtKGluZGV4LnZhbHVlKCkpIH0gfTsKIAot
ICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBuYW1lZEl0ZW1Pckl0ZW1zKG5hbWVPcklu
ZGV4KTsKK30KKworLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvaW5m
cmFzdHJ1Y3R1cmUuaHRtbCNjb25jZXB0LWdldC1hbGwtbmFtZWQKK3N0ZDo6b3B0aW9uYWw8VmFy
aWFudDxSZWZQdHI8SFRNTENvbGxlY3Rpb24+LCBSZWZQdHI8RWxlbWVudD4+PiBIVE1MQWxsQ29s
bGVjdGlvbjo6bmFtZWRJdGVtT3JJdGVtcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0
Cit7CisgICAgYXV0byBuYW1lZEl0ZW1zID0gdGhpcy0+bmFtZWRJdGVtcyhuYW1lKTsKKworICAg
IGlmIChuYW1lZEl0ZW1zLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KyAgICBpZiAobmFtZWRJdGVtcy5zaXplKCkgPT0gMSkKKyAgICAgICAgcmV0dXJuIFZhcmlhbnQ8
UmVmUHRyPEhUTUxDb2xsZWN0aW9uPiwgUmVmUHRyPEVsZW1lbnQ+PiB7IFJlZlB0cjxFbGVtZW50
PiB7IFdURk1vdmUobmFtZWRJdGVtc1swXSkgfSB9OworCisgICAgcmV0dXJuIFZhcmlhbnQ8UmVm
UHRyPEhUTUxDb2xsZWN0aW9uPiwgUmVmUHRyPEVsZW1lbnQ+PiB7IFJlZlB0cjxIVE1MQ29sbGVj
dGlvbj4geyBkb3duY2FzdDxEb2N1bWVudD4ob3duZXJOb2RlKCkpLmFsbEZpbHRlcmVkQnlOYW1l
KG5hbWUpIH0gfTsKK30KKworSFRNTEFsbE5hbWVkU3ViQ29sbGVjdGlvbjo6fkhUTUxBbGxOYW1l
ZFN1YkNvbGxlY3Rpb24oKQoreworICAgIG93bmVyTm9kZSgpLm5vZGVMaXN0cygpLT5yZW1vdmVD
YWNoZWRDb2xsZWN0aW9uKHRoaXMsIG1fbmFtZSk7Cit9CisKK2Jvb2wgSFRNTEFsbE5hbWVkU3Vi
Q29sbGVjdGlvbjo6ZWxlbWVudE1hdGNoZXMoRWxlbWVudCYgZWxlbWVudCkgY29uc3QKK3sKKyAg
ICBjb25zdCBhdXRvJiBpZCA9IGVsZW1lbnQuZ2V0SWRBdHRyaWJ1dGUoKTsKKyAgICBpZiAoaWQg
PT0gbV9uYW1lKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmICghbmFtZVNob3VsZEJl
VmlzaWJsZUluRG9jdW1lbnRBbGwoZWxlbWVudCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGNvbnN0IGF1dG8mIG5hbWUgPSBlbGVtZW50LmdldE5hbWVBdHRyaWJ1dGUoKTsKKyAgICBp
ZiAobmFtZSA9PSBtX25hbWUpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIGZh
bHNlOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxBbGxDb2xsZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQWxsQ29sbGVjdGlvbi5oCShyZXZpc2lvbiAyMTY4NDgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxBbGxDb2xsZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMSwgMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2
LDYgKzI2LDggQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQWxsRGVzY2VuZGFudHNDb2xs
ZWN0aW9uLmgiCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL1Zhcmlh
bnQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zMywxMiArMzUsMzUgQEAgY2xhc3Mg
SFRNTEFsbENvbGxlY3Rpb24gZmluYWwgOiBwdWJsaWMgQQogcHVibGljOgogICAgIHN0YXRpYyBS
ZWY8SFRNTEFsbENvbGxlY3Rpb24+IGNyZWF0ZShEb2N1bWVudCYsIENvbGxlY3Rpb25UeXBlKTsK
IAotICAgIEVsZW1lbnQqIG5hbWVkSXRlbVdpdGhJbmRleChjb25zdCBBdG9taWNTdHJpbmcmIG5h
bWUsIHVuc2lnbmVkIGluZGV4KSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8UmVm
UHRyPEhUTUxDb2xsZWN0aW9uPiwgUmVmUHRyPEVsZW1lbnQ+Pj4gbmFtZWRPckluZGV4ZWRJdGVt
T3JJdGVtcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVPckluZGV4KSBjb25zdDsKKyAgICBzdGQ6
Om9wdGlvbmFsPFZhcmlhbnQ8UmVmUHRyPEhUTUxDb2xsZWN0aW9uPiwgUmVmUHRyPEVsZW1lbnQ+
Pj4gbmFtZWRJdGVtT3JJdGVtcyhjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdDsKIAogcHJpdmF0
ZToKICAgICBIVE1MQWxsQ29sbGVjdGlvbihEb2N1bWVudCYsIENvbGxlY3Rpb25UeXBlKTsKIH07
CiAKK2NsYXNzIEhUTUxBbGxOYW1lZFN1YkNvbGxlY3Rpb24gZmluYWwgOiBwdWJsaWMgQ2FjaGVk
SFRNTENvbGxlY3Rpb248SFRNTEFsbE5hbWVkU3ViQ29sbGVjdGlvbiwgQ29sbGVjdGlvblRyYXZl
cnNhbFR5cGU6OkRlc2NlbmRhbnRzPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxIVE1MQWxs
TmFtZWRTdWJDb2xsZWN0aW9uPiBjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBDb2xsZWN0aW9u
VHlwZSB0eXBlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCisgICAgeworICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBIVE1MQWxsTmFtZWRTdWJDb2xsZWN0aW9uKGRvY3VtZW50LCB0eXBl
LCBuYW1lKSk7CisgICAgfQorICAgIHZpcnR1YWwgfkhUTUxBbGxOYW1lZFN1YkNvbGxlY3Rpb24o
KTsKKworICAgIGJvb2wgZWxlbWVudE1hdGNoZXMoRWxlbWVudCYpIGNvbnN0OworCitwcml2YXRl
OgorICAgIEhUTUxBbGxOYW1lZFN1YkNvbGxlY3Rpb24oRG9jdW1lbnQmIGRvY3VtZW50LCBDb2xs
ZWN0aW9uVHlwZSB0eXBlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCisgICAgICAgIDogQ2Fj
aGVkSFRNTENvbGxlY3Rpb248SFRNTEFsbE5hbWVkU3ViQ29sbGVjdGlvbiwgQ29sbGVjdGlvblRy
YXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRzPihkb2N1bWVudCwgdHlwZSkKKyAgICAgICAgLCBtX25h
bWUobmFtZSkKKyAgICB7CisgICAgICAgIEFTU0VSVCh0eXBlID09IERvY3VtZW50QWxsTmFtZWRJ
dGVtcyk7CisgICAgfQorCisgICAgQXRvbWljU3RyaW5nIG1fbmFtZTsKK307CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19IVE1MQ09MTEVDVElPTihI
VE1MQWxsQ29sbGVjdGlvbiwgRG9jQWxsKQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19IVE1MQ09M
TEVDVElPTihIVE1MQWxsTmFtZWRTdWJDb2xsZWN0aW9uLCBEb2N1bWVudEFsbE5hbWVkSXRlbXMp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbGxDb2xsZWN0aW9uLmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbGxDb2xsZWN0aW9uLmlkbAkocmV2aXNp
b24gMjE2ODQ4KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTI0LDE2ICsyNCwxMyBAQAogICovCiAKIFsKLSAgICBDdXN0b21D
YWxsLAotICAgIEN1c3RvbU5hbWVkR2V0dGVyLAogICAgIExlZ2FjeVVuZW51bWVyYWJsZU5hbWVk
UHJvcGVydGllcywKICAgICBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLAogICAgIEdlbmVyYXRlSXNS
ZWFjaGFibGU9SW1wbE93bmVyTm9kZVJvb3QsCiBdIGludGVyZmFjZSBIVE1MQWxsQ29sbGVjdGlv
biB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOwogCi0gICAg
W0N1c3RvbV0gZ2V0dGVyIEVsZW1lbnQ/IGl0ZW0odW5zaWduZWQgbG9uZyBpbmRleCk7Ci0gICAg
W0N1c3RvbV0gZ2V0dGVyIChIVE1MQ29sbGVjdGlvbiBvciBFbGVtZW50KT8gbmFtZWRJdGVtKERP
TVN0cmluZyBuYW1lKTsKLSAgICAvLyBbQ3VzdG9tXSBsZWdhY3ljYWxsZXIgKEhUTUxDb2xsZWN0
aW9uIG9yIEVsZW1lbnQpPyBpdGVtKG9wdGlvbmFsIERPTVN0cmluZyBuYW1lT3JJbmRleCk7Cisg
ICAgZ2V0dGVyIEVsZW1lbnQ/ICh1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICBbSW1wbGVtZW50
ZWRBcz1uYW1lZEl0ZW1Pckl0ZW1zXSBnZXR0ZXIgKEhUTUxDb2xsZWN0aW9uIG9yIEVsZW1lbnQp
PyBuYW1lZEl0ZW0oRE9NU3RyaW5nIG5hbWUpOworICAgIFtJbXBsZW1lbnRlZEFzPW5hbWVkT3JJ
bmRleGVkSXRlbU9ySXRlbXNdIGxlZ2FjeWNhbGxlciAoSFRNTENvbGxlY3Rpb24gb3IgRWxlbWVu
dCk/IGl0ZW0ob3B0aW9uYWwgRE9NU3RyaW5nIG5hbWVPckluZGV4KTsKIH07Ci0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uY3BwCShyZXZpc2lvbiAyMTY4NDgpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDQsNiArNDQsNyBAQCBpbmxpbmUgYXV0byBIVE1MQ29sbGVjdGlvbjo6cm9vdFR5cGVGcm9tCiAg
ICAgY2FzZSBEb2NBbGw6CiAgICAgY2FzZSBXaW5kb3dOYW1lZEl0ZW1zOgogICAgIGNhc2UgRG9j
dW1lbnROYW1lZEl0ZW1zOgorICAgIGNhc2UgRG9jdW1lbnRBbGxOYW1lZEl0ZW1zOgogICAgIGNh
c2UgRm9ybUNvbnRyb2xzOgogICAgICAgICByZXR1cm4gSFRNTENvbGxlY3Rpb246OklzUm9vdGVk
QXREb2N1bWVudDsKICAgICBjYXNlIEFsbERlc2NlbmRhbnRzOgpAQCAtOTYsOCArOTcsOCBAQCBz
dGF0aWMgTm9kZUxpc3RJbnZhbGlkYXRpb25UeXBlIGludmFsaWRhCiAgICAgY2FzZSBEb2NMaW5r
czoKICAgICAgICAgcmV0dXJuIEludmFsaWRhdGVPbkhSZWZBdHRyQ2hhbmdlOwogICAgIGNhc2Ug
V2luZG93TmFtZWRJdGVtczoKLSAgICAgICAgcmV0dXJuIEludmFsaWRhdGVPbklkTmFtZUF0dHJD
aGFuZ2U7CiAgICAgY2FzZSBEb2N1bWVudE5hbWVkSXRlbXM6CisgICAgY2FzZSBEb2N1bWVudEFs
bE5hbWVkSXRlbXM6CiAgICAgICAgIHJldHVybiBJbnZhbGlkYXRlT25JZE5hbWVBdHRyQ2hhbmdl
OwogICAgIGNhc2UgRm9ybUNvbnRyb2xzOgogICAgICAgICByZXR1cm4gSW52YWxpZGF0ZUZvckZv
cm1Db250cm9sczsKQEAgLTEzMCw2ICsxMzEsNyBAQCBIVE1MQ29sbGVjdGlvbjo6fkhUTUxDb2xs
ZWN0aW9uKCkKICAgICBjYXNlIEJ5SFRNTFRhZzoKICAgICBjYXNlIFdpbmRvd05hbWVkSXRlbXM6
CiAgICAgY2FzZSBEb2N1bWVudE5hbWVkSXRlbXM6CisgICAgY2FzZSBEb2N1bWVudEFsbE5hbWVk
SXRlbXM6CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIG93bmVyTm9kZSgp
Lm5vZGVMaXN0cygpLT5yZW1vdmVDYWNoZWRDb2xsZWN0aW9uKHRoaXMpOwpJbmRleDogTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2
aXNpb24gMjE2ODQ4KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMTctMDUtMTQgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBbV2ViSURML0RPTV0gUmVtb3ZlIG5lZWQgZm9yIGN1c3RvbSBiaW5kaW5ncyBm
b3IgSFRNTEFsbENvbGxlY3Rpb24gYW5kIGJyaW5nIHVwIHRvIHNwZWMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjA5NQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9kb20vY29sbGVjdGlvbi1u
dWxsLWxpa2UtYXJndW1lbnRzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgVXBkYXRlIHJlc3VsdHMu
CisKKyAgICAgICAgKiBmYXN0L2RvbS9kb2N1bWVudC1hbGwtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2RvbS9kb2N1bWVudC1hbGwuaHRtbDogQWRkZWQuCisgICAgICAgIE5l
dyB0ZXN0IHRoYXQgY292ZXJzIGEgYnVuY2ggb2YgbWlzc2luZyBjb3ZlcmFnZS4KKwogMjAxNy0w
NS0xNCAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1Mv
bWFjT1MgRGVidWcgV0syXSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYnJ0Yy9pbnRlcmZhY2VzLmh0bWwgaXMgYSBmbGFreSBjcmFzaCBkdWUgdG8gYXNzZXJ0
aW9uIGZhaWx1cmUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2NvbGxlY3Rpb24tbnVsbC1s
aWtlLWFyZ3VtZW50cy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9kb20vY29sbGVjdGlvbi1udWxsLWxpa2UtYXJndW1lbnRzLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMjE2ODQ4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vY29sbGVjdGlvbi1udWxsLWxpa2Ut
YXJndW1lbnRzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNywxOSArNywxOSBAQCBk
b2N1bWVudC5hbGwoMCk6ICAgICAgW29iamVjdCBIVE1MSHRtbEVsCiBkb2N1bWVudC5hbGwuaXRl
bSgwKTogW29iamVjdCBIVE1MSHRtbEVsZW1lbnRdCiAKIGRvY3VtZW50LmFsbFsiIl06ICAgICAg
dW5kZWZpbmVkCi1kb2N1bWVudC5hbGwoIiIpOiAgICAgIHVuZGVmaW5lZAotZG9jdW1lbnQuYWxs
Lml0ZW0oIiIpOiB1bmRlZmluZWQKK2RvY3VtZW50LmFsbCgiIik6ICAgICAgbnVsbAorZG9jdW1l
bnQuYWxsLml0ZW0oIiIpOiBudWxsCiAKIGRvY3VtZW50LmFsbFsiMCJdOiAgICAgIFtvYmplY3Qg
SFRNTEh0bWxFbGVtZW50XQogZG9jdW1lbnQuYWxsKCIwIik6ICAgICAgW29iamVjdCBIVE1MSHRt
bEVsZW1lbnRdCiBkb2N1bWVudC5hbGwuaXRlbSgiMCIpOiBbb2JqZWN0IEhUTUxIdG1sRWxlbWVu
dF0KIAogZG9jdW1lbnQuYWxsW3VuZGVmaW5lZF06ICAgICAgdW5kZWZpbmVkCi1kb2N1bWVudC5h
bGwodW5kZWZpbmVkKTogICAgICB1bmRlZmluZWQKLWRvY3VtZW50LmFsbC5pdGVtKHVuZGVmaW5l
ZCk6IHVuZGVmaW5lZAorZG9jdW1lbnQuYWxsKHVuZGVmaW5lZCk6ICAgICAgbnVsbAorZG9jdW1l
bnQuYWxsLml0ZW0odW5kZWZpbmVkKTogbnVsbAogCiBkb2N1bWVudC5hbGxbbnVsbF06ICAgICAg
dW5kZWZpbmVkCi1kb2N1bWVudC5hbGwobnVsbCk6ICAgICAgdW5kZWZpbmVkCi1kb2N1bWVudC5h
bGwuaXRlbShudWxsKTogdW5kZWZpbmVkCitkb2N1bWVudC5hbGwobnVsbCk6ICAgICAgbnVsbAor
ZG9jdW1lbnQuYWxsLml0ZW0obnVsbCk6IG51bGwKIAogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9kb2N1bWVudC1hbGwtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZG9tL2RvY3VtZW50LWFsbC1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5
b3V0VGVzdHMvZmFzdC9kb20vZG9jdW1lbnQtYWxsLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDQ3IEBACitUZXN0cyBkb2N1bWVudC5hbGwKKworCitQQVNTIGRvY3VtZW50
LmFsbCdzIGluZGV4IGdldHRlciByZXR1cm5zIGFsbCB0aGUgZWxlbWVudHMgaW4gZG9jdW1lbnQg
b3JkZXIgCitQQVNTIGRvY3VtZW50LmFsbCdzIGluZGV4IGdldHRlciByZXR1cm5zIHVuZGVmaW5l
ZCBmb3IgaW5kZXhlcyBncmVhdGVyIHRoYW4gbGVuZ3RoIAorUEFTUyBkb2N1bWVudC5hbGwncyBp
bmRleCBnZXR0ZXIgcmV0dXJucyB1bmRlZmluZWQgZm9yIGluZGV4ZXMgbGVzcyB0aGFuIHplcm8g
CitQQVNTIGRvY3VtZW50LmFsbCdzIG5hbWUgYXR0cmlidXRlIGFjY2Vzc2luZyB3b3JrcyBmb3Ig
YSAKK1BBU1MgZG9jdW1lbnQuYWxsJ3MgbmFtZSBhdHRyaWJ1dGUgYWNjZXNzaW5nIHdvcmtzIGZv
ciBhcHBsZXQgCitQQVNTIGRvY3VtZW50LmFsbCdzIG5hbWUgYXR0cmlidXRlIGFjY2Vzc2luZyB3
b3JrcyBmb3IgYnV0dG9uIAorUEFTUyBkb2N1bWVudC5hbGwncyBuYW1lIGF0dHJpYnV0ZSBhY2Nl
c3Npbmcgd29ya3MgZm9yIGVtYmVkIAorUEFTUyBkb2N1bWVudC5hbGwncyBuYW1lIGF0dHJpYnV0
ZSBhY2Nlc3Npbmcgd29ya3MgZm9yIGZvcm0gCitQQVNTIGRvY3VtZW50LmFsbCdzIG5hbWUgYXR0
cmlidXRlIGFjY2Vzc2luZyB3b3JrcyBmb3IgZnJhbWUgCitQQVNTIGRvY3VtZW50LmFsbCdzIG5h
bWUgYXR0cmlidXRlIGFjY2Vzc2luZyB3b3JrcyBmb3IgZnJhbWVzZXQgCitQQVNTIGRvY3VtZW50
LmFsbCdzIG5hbWUgYXR0cmlidXRlIGFjY2Vzc2luZyB3b3JrcyBmb3IgaWZyYW1lIAorUEFTUyBk
b2N1bWVudC5hbGwncyBuYW1lIGF0dHJpYnV0ZSBhY2Nlc3Npbmcgd29ya3MgZm9yIGltZyAKK1BB
U1MgZG9jdW1lbnQuYWxsJ3MgbmFtZSBhdHRyaWJ1dGUgYWNjZXNzaW5nIHdvcmtzIGZvciBpbnB1
dCAKK1BBU1MgZG9jdW1lbnQuYWxsJ3MgbmFtZSBhdHRyaWJ1dGUgYWNjZXNzaW5nIHdvcmtzIGZv
ciBtYXAgCitQQVNTIGRvY3VtZW50LmFsbCdzIG5hbWUgYXR0cmlidXRlIGFjY2Vzc2luZyB3b3Jr
cyBmb3IgbWV0YSAKK1BBU1MgZG9jdW1lbnQuYWxsJ3MgbmFtZSBhdHRyaWJ1dGUgYWNjZXNzaW5n
IHdvcmtzIGZvciBvYmplY3QgCitQQVNTIGRvY3VtZW50LmFsbCdzIG5hbWUgYXR0cmlidXRlIGFj
Y2Vzc2luZyB3b3JrcyBmb3Igc2VsZWN0IAorUEFTUyBkb2N1bWVudC5hbGwncyBuYW1lIGF0dHJp
YnV0ZSBhY2Nlc3Npbmcgd29ya3MgZm9yIHRleHRhcmVhIAorUEFTUyBkb2N1bWVudC5hbGwncyBu
YW1lIGF0dHJpYnV0ZSBhY2Nlc3NpbmcgZG9lc24ndCB3b3JrIGZvciBkaXYgCitQQVNTIGRvY3Vt
ZW50LmFsbCdzIG5hbWUgYXR0cmlidXRlIGFjY2Vzc2luZyBkb2Vzbid0IHdvcmsgZm9yIHNwYW4g
CitQQVNTIGRvY3VtZW50LmFsbCdzIGlkIGF0dHJpYnV0ZSBhY2Nlc3Npbmcgd29ya3MgZm9yIGEg
CitQQVNTIGRvY3VtZW50LmFsbCdzIGlkIGF0dHJpYnV0ZSBhY2Nlc3Npbmcgd29ya3MgZm9yIGFw
cGxldCAKK1BBU1MgZG9jdW1lbnQuYWxsJ3MgaWQgYXR0cmlidXRlIGFjY2Vzc2luZyB3b3JrcyBm
b3IgYnV0dG9uIAorUEFTUyBkb2N1bWVudC5hbGwncyBpZCBhdHRyaWJ1dGUgYWNjZXNzaW5nIHdv
cmtzIGZvciBlbWJlZCAKK1BBU1MgZG9jdW1lbnQuYWxsJ3MgaWQgYXR0cmlidXRlIGFjY2Vzc2lu
ZyB3b3JrcyBmb3IgZm9ybSAKK1BBU1MgZG9jdW1lbnQuYWxsJ3MgaWQgYXR0cmlidXRlIGFjY2Vz
c2luZyB3b3JrcyBmb3IgZnJhbWUgCitQQVNTIGRvY3VtZW50LmFsbCdzIGlkIGF0dHJpYnV0ZSBh
Y2Nlc3Npbmcgd29ya3MgZm9yIGZyYW1lc2V0IAorUEFTUyBkb2N1bWVudC5hbGwncyBpZCBhdHRy
aWJ1dGUgYWNjZXNzaW5nIHdvcmtzIGZvciBpZnJhbWUgCitQQVNTIGRvY3VtZW50LmFsbCdzIGlk
IGF0dHJpYnV0ZSBhY2Nlc3Npbmcgd29ya3MgZm9yIGltZyAKK1BBU1MgZG9jdW1lbnQuYWxsJ3Mg
aWQgYXR0cmlidXRlIGFjY2Vzc2luZyB3b3JrcyBmb3IgaW5wdXQgCitQQVNTIGRvY3VtZW50LmFs
bCdzIGlkIGF0dHJpYnV0ZSBhY2Nlc3Npbmcgd29ya3MgZm9yIG1hcCAKK1BBU1MgZG9jdW1lbnQu
YWxsJ3MgaWQgYXR0cmlidXRlIGFjY2Vzc2luZyB3b3JrcyBmb3IgbWV0YSAKK1BBU1MgZG9jdW1l
bnQuYWxsJ3MgaWQgYXR0cmlidXRlIGFjY2Vzc2luZyB3b3JrcyBmb3Igb2JqZWN0IAorUEFTUyBk
b2N1bWVudC5hbGwncyBpZCBhdHRyaWJ1dGUgYWNjZXNzaW5nIHdvcmtzIGZvciBzZWxlY3QgCitQ
QVNTIGRvY3VtZW50LmFsbCdzIGlkIGF0dHJpYnV0ZSBhY2Nlc3Npbmcgd29ya3MgZm9yIHRleHRh
cmVhIAorUEFTUyBkb2N1bWVudC5hbGwncyBpZCBhdHRyaWJ1dGUgYWNjZXNzaW5nIHdvcmtzIGZv
ciBkaXYgCitQQVNTIGRvY3VtZW50LmFsbCdzIGlkIGF0dHJpYnV0ZSBhY2Nlc3Npbmcgd29ya3Mg
Zm9yIHNwYW4gCitQQVNTIGRvY3VtZW50LmFsbCB3aWxsIHJldHVybiBhIHN1Yi1jb2xsZWN0aW9u
IGlmIHRoZSBuYW1lL2lkIGlzIGZvdW5kIG1vcmUgdGhhbiBvbmNlIAorUEFTUyBkb2N1bWVudC5h
bGwgd2lsbCByZXR1cm4gYSBzdWItY29sbGVjdGlvbiBpZiB0aGUgbmFtZS9pZCBpcyBmb3VuZCBt
b3JlIHRoYW4gb25jZSwgYnV0IHN0aWxsIGFkaGVyZXMgdG8gdGhlIHJ1bGVzIGFib3V0IHdoYXQg
dGFncyBjYW4gaGF2ZSBuYW1lcyAKK1BBU1MgZG9jdW1lbnQuYWxsIHdpbGwgcmV0dXJuIGEgc3Vi
LWNvbGxlY3Rpb24gaWYgdGhlIG5hbWUvaWQgaXMgZm91bmQgbW9yZSB0aGFuIG9uY2UsIHRoYXQg
aXMgbGl2ZSAKK1BBU1MgZG9jdW1lbnQuYWxsJ3MgbmFtZWRJdGVtIGZ1bmN0aW9uIHJlcXVpcmVz
IHBhc3NpbmcgYW4gYXJndW1lbnQgCitQQVNTIGRvY3VtZW50LmFsbCdzIGl0ZW0gZnVuY3Rpb24g
YW5kIGxlZ2FjeSBjYWxsZXIgZnVuY3Rpb25hbGl0eSBhbGxvdyBwYXNzaW5nIG5vIGFyZ3VtZW50
cyAKK1BBU1MgZG9jdW1lbnQuYWxsJ3MgaXRlbSBmdW5jdGlvbiBhbmQgbGVnYWN5IGNhbGxlciBm
dW5jdGlvbmFsaXR5IHdpbGwgdHJ5IHRvIGNvbnZlcnQgdGhlaXIgRE9NU3RyaW5nIGFyZ3VtZW50
IHRvIGFuIGluZGV4IGJlZm9yZSBuYW1lIGxvb2t1cCAKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9kb20vZG9jdW1lbnQtYWxsLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9k
b20vZG9jdW1lbnQtYWxsLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9k
b20vZG9jdW1lbnQtYWxsLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNzkgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGhlYWQ+CisgICAgPHRpdGxlPmRvY3VtZW50LmFsbDwvdGl0bGU+Cis8
Ym9keT4KKzxwPlRlc3RzIGRvY3VtZW50LmFsbDwvcD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitsZXQgdmFs
aWROYW1lZEVsZW1lbnRUYWdzID0gWydhJywgJ2FwcGxldCcsICdidXR0b24nLCAnZW1iZWQnLCAn
Zm9ybScsICdmcmFtZScsICdmcmFtZXNldCcsICdpZnJhbWUnLCAnaW1nJywgJ2lucHV0JywgJ21h
cCcsICdtZXRhJywgJ29iamVjdCcsICdzZWxlY3QnLCAndGV4dGFyZWEnXTsKK2xldCBpbnZhbGlk
TmFtZWRFbGVtZW50VGFncyA9IFsnZGl2JywgJ3NwYW4nXTsKK2xldCB2YWxpZEFuSW52YWxpZE5h
bWVkRWxlbWVudFRhZ3MgPSB2YWxpZE5hbWVkRWxlbWVudFRhZ3MuY29uY2F0KGludmFsaWROYW1l
ZEVsZW1lbnRUYWdzKTsKKworbGV0IHBsYXlncm91bmQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdkaXYnKTsKK2RvY3VtZW50LmJvZHkuYXBwZW5kKHBsYXlncm91bmQpOworCit0ZXN0KGZ1bmN0
aW9uKCkgeworICAgIGFzc2VydF9lcXVhbHMoZG9jdW1lbnQuYWxsWzBdLCBkb2N1bWVudC5kb2N1
bWVudEVsZW1lbnQpOworICAgIGFzc2VydF9lcXVhbHMoZG9jdW1lbnQuYWxsWzFdLCBkb2N1bWVu
dC5oZWFkKTsKKyAgICBhc3NlcnRfZXF1YWxzKGRvY3VtZW50LmFsbFsyXSwgZG9jdW1lbnQuaGVh
ZC5maXJzdEVsZW1lbnRDaGlsZCk7Cit9LCAiZG9jdW1lbnQuYWxsJ3MgaW5kZXggZ2V0dGVyIHJl
dHVybnMgYWxsIHRoZSBlbGVtZW50cyBpbiBkb2N1bWVudCBvcmRlciIpOworCit0ZXN0KGZ1bmN0
aW9uKCkgeworICAgIGFzc2VydF9lcXVhbHMoZG9jdW1lbnQuYWxsW2RvY3VtZW50LmFsbC5sZW5n
dGggKyAxXSwgdW5kZWZpbmVkKTsKK30sICJkb2N1bWVudC5hbGwncyBpbmRleCBnZXR0ZXIgcmV0
dXJucyB1bmRlZmluZWQgZm9yIGluZGV4ZXMgZ3JlYXRlciB0aGFuIGxlbmd0aCIpOworCit0ZXN0
KGZ1bmN0aW9uKCkgeworICAgIGFzc2VydF9lcXVhbHMoZG9jdW1lbnQuYWxsWy0xXSwgdW5kZWZp
bmVkKTsKK30sICJkb2N1bWVudC5hbGwncyBpbmRleCBnZXR0ZXIgcmV0dXJucyB1bmRlZmluZWQg
Zm9yIGluZGV4ZXMgbGVzcyB0aGFuIHplcm8iKTsKKworZm9yIChsZXQgZWxlbWVudFRhZyBvZiB2
YWxpZE5hbWVkRWxlbWVudFRhZ3MpIHsKKyAgICB0ZXN0KGZ1bmN0aW9uKCkgeworICAgICAgICBs
ZXQgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoZWxlbWVudFRhZyk7CisgICAgICAg
IGVsZW1lbnQuc2V0QXR0cmlidXRlKCJuYW1lIiwgInRlc3ROYW1lIik7CisgICAgICAgIHBsYXln
cm91bmQuYXBwZW5kKGVsZW1lbnQpOworICAgIAorICAgICAgICBhc3NlcnRfZXF1YWxzKGRvY3Vt
ZW50LmFsbC5uYW1lZEl0ZW0oJ3Rlc3ROYW1lJyksIGVsZW1lbnQpOworICAgICAgICBhc3NlcnRf
ZXF1YWxzKGRvY3VtZW50LmFsbFsndGVzdE5hbWUnXSwgZWxlbWVudCk7CisgICAgICAgIGFzc2Vy
dF9lcXVhbHMoZG9jdW1lbnQuYWxsLml0ZW0oJ3Rlc3ROYW1lJyksIGVsZW1lbnQpOworICAgICAg
ICBhc3NlcnRfZXF1YWxzKGRvY3VtZW50LmFsbCgndGVzdE5hbWUnKSwgZWxlbWVudCk7CisgICAg
CisgICAgICAgIGVsZW1lbnQucmVtb3ZlKCk7CisgICAgfSwgImRvY3VtZW50LmFsbCdzIG5hbWUg
YXR0cmlidXRlIGFjY2Vzc2luZyB3b3JrcyBmb3IgIiArIGVsZW1lbnRUYWcpOworfQorCitmb3Ig
KGxldCBlbGVtZW50VGFnIG9mIGludmFsaWROYW1lZEVsZW1lbnRUYWdzKSB7CisgICAgdGVzdChm
dW5jdGlvbigpIHsKKyAgICAgICAgbGV0IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KGVsZW1lbnRUYWcpOworICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgibmFtZSIsICJ0ZXN0
TmFtZSIpOworICAgICAgICBwbGF5Z3JvdW5kLmFwcGVuZChlbGVtZW50KTsKKyAgICAKKyAgICAg
ICAgYXNzZXJ0X2VxdWFscyhkb2N1bWVudC5hbGwubmFtZWRJdGVtKCd0ZXN0TmFtZScpLCBudWxs
KTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhkb2N1bWVudC5hbGxbJ3Rlc3ROYW1lJ10sIHVuZGVm
aW5lZCk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoZG9jdW1lbnQuYWxsLml0ZW0oJ3Rlc3ROYW1l
JyksIG51bGwpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGRvY3VtZW50LmFsbCgndGVzdE5hbWUn
KSwgbnVsbCk7CisgICAgCisgICAgICAgIGVsZW1lbnQucmVtb3ZlKCk7CisgICAgfSwgImRvY3Vt
ZW50LmFsbCdzIG5hbWUgYXR0cmlidXRlIGFjY2Vzc2luZyBkb2Vzbid0IHdvcmsgZm9yICIgKyBl
bGVtZW50VGFnKTsKK30KKworZm9yIChsZXQgZWxlbWVudFRhZyBvZiB2YWxpZEFuSW52YWxpZE5h
bWVkRWxlbWVudFRhZ3MpIHsKKyAgICB0ZXN0KGZ1bmN0aW9uKCkgeworICAgICAgICBsZXQgZWxl
bWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoZWxlbWVudFRhZyk7CisgICAgICAgIGVsZW1l
bnQuc2V0QXR0cmlidXRlKCJpZCIsICJ0ZXN0SWQiKTsKKyAgICAgICAgcGxheWdyb3VuZC5hcHBl
bmQoZWxlbWVudCk7CisgICAgCisgICAgICAgIGFzc2VydF9lcXVhbHMoZG9jdW1lbnQuYWxsLm5h
bWVkSXRlbSgndGVzdElkJyksIGVsZW1lbnQpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGRvY3Vt
ZW50LmFsbFsndGVzdElkJ10sIGVsZW1lbnQpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGRvY3Vt
ZW50LmFsbC5pdGVtKCd0ZXN0SWQnKSwgZWxlbWVudCk7CisgICAgICAgIGFzc2VydF9lcXVhbHMo
ZG9jdW1lbnQuYWxsKCd0ZXN0SWQnKSwgZWxlbWVudCk7CisgICAgCisgICAgICAgIGVsZW1lbnQu
cmVtb3ZlKCk7CisgICAgfSwgImRvY3VtZW50LmFsbCdzIGlkIGF0dHJpYnV0ZSBhY2Nlc3Npbmcg
d29ya3MgZm9yICIgKyBlbGVtZW50VGFnKTsKK30KKwordGVzdChmdW5jdGlvbigpIHsKKyAgICBs
ZXQgZWxlbWVudDEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTsKKyAgICBlbGVt
ZW50MS5zZXRBdHRyaWJ1dGUoIm5hbWUiLCAidGVzdCIpOworICAgIHBsYXlncm91bmQuYXBwZW5k
KGVsZW1lbnQxKTsKKworICAgIGxldCBlbGVtZW50MiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J3NwYW4nKTsKKyAgICBlbGVtZW50Mi5zZXRBdHRyaWJ1dGUoImlkIiwgInRlc3QiKTsKKyAgICBw
bGF5Z3JvdW5kLmFwcGVuZChlbGVtZW50Mik7CisKKyAgICBhc3NlcnRfZXF1YWxzKGRvY3VtZW50
LmFsbC5uYW1lZEl0ZW0oJ3Rlc3QnKS5sZW5ndGgsIDIpOworICAgIGFzc2VydF9lcXVhbHMoZG9j
dW1lbnQuYWxsWyd0ZXN0J10ubGVuZ3RoLCAyKTsKKyAgICBhc3NlcnRfZXF1YWxzKGRvY3VtZW50
LmFsbC5pdGVtKCd0ZXN0JykubGVuZ3RoLCAyKTsKKyAgICBhc3NlcnRfZXF1YWxzKGRvY3VtZW50
LmFsbCgndGVzdCcpLmxlbmd0aCwgMik7CisgICAgYXNzZXJ0X2NsYXNzX3N0cmluZyhkb2N1bWVu
dC5hbGwubmFtZWRJdGVtKCd0ZXN0JyksICJIVE1MQ29sbGVjdGlvbiIpOworICAgIGFzc2VydF9j
bGFzc19zdHJpbmcoZG9jdW1lbnQuYWxsWyd0ZXN0J10sICJIVE1MQ29sbGVjdGlvbiIpOworICAg
IGFzc2VydF9jbGFzc19zdHJpbmcoZG9jdW1lbnQuYWxsLml0ZW0oJ3Rlc3QnKSwgIkhUTUxDb2xs
ZWN0aW9uIik7CisgICAgYXNzZXJ0X2NsYXNzX3N0cmluZyhkb2N1bWVudC5hbGwoJ3Rlc3QnKSwg
IkhUTUxDb2xsZWN0aW9uIik7CisKKyAgICBlbGVtZW50MS5yZW1vdmUoKTsKKyAgICBlbGVtZW50
Mi5yZW1vdmUoKTsKK30sICJkb2N1bWVudC5hbGwgd2lsbCByZXR1cm4gYSBzdWItY29sbGVjdGlv
biBpZiB0aGUgbmFtZS9pZCBpcyBmb3VuZCBtb3JlIHRoYW4gb25jZSIpOworCit0ZXN0KGZ1bmN0
aW9uKCkgeworICAgIGxldCBlbGVtZW50MSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRv
bicpOworICAgIGVsZW1lbnQxLnNldEF0dHJpYnV0ZSgibmFtZSIsICJ0ZXN0Iik7CisgICAgcGxh
eWdyb3VuZC5hcHBlbmQoZWxlbWVudDEpOworCisgICAgbGV0IGVsZW1lbnQyID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnc3BhbicpOworICAgIGVsZW1lbnQyLnNldEF0dHJpYnV0ZSgiaWQiLCAi
dGVzdCIpOworICAgIHBsYXlncm91bmQuYXBwZW5kKGVsZW1lbnQyKTsKKworICAgIGxldCBlbGVt
ZW50MyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTsKKyAgICBlbGVtZW50My5zZXRB
dHRyaWJ1dGUoIm5hbWUiLCAidGVzdCIpOworICAgIHBsYXlncm91bmQuYXBwZW5kKGVsZW1lbnQy
KTsKKworICAgIGFzc2VydF9lcXVhbHMoZG9jdW1lbnQuYWxsLm5hbWVkSXRlbSgndGVzdCcpLmxl
bmd0aCwgMik7CisgICAgYXNzZXJ0X2VxdWFscyhkb2N1bWVudC5hbGxbJ3Rlc3QnXS5sZW5ndGgs
IDIpOworICAgIGFzc2VydF9lcXVhbHMoZG9jdW1lbnQuYWxsLml0ZW0oJ3Rlc3QnKS5sZW5ndGgs
IDIpOworICAgIGFzc2VydF9lcXVhbHMoZG9jdW1lbnQuYWxsKCd0ZXN0JykubGVuZ3RoLCAyKTsK
KyAgICBhc3NlcnRfZXF1YWxzKGRvY3VtZW50LmFsbC5uYW1lZEl0ZW0oJ3Rlc3QnKVswXSwgZWxl
bWVudDEpOworICAgIGFzc2VydF9lcXVhbHMoZG9jdW1lbnQuYWxsLm5hbWVkSXRlbSgndGVzdCcp
WzFdLCBlbGVtZW50Mik7CisgICAgYXNzZXJ0X2VxdWFscyhkb2N1bWVudC5hbGxbJ3Rlc3QnXVsw
XSwgZWxlbWVudDEpOworICAgIGFzc2VydF9lcXVhbHMoZG9jdW1lbnQuYWxsWyd0ZXN0J11bMV0s
IGVsZW1lbnQyKTsKKyAgICBhc3NlcnRfZXF1YWxzKGRvY3VtZW50LmFsbC5pdGVtKCd0ZXN0Jylb
MF0sIGVsZW1lbnQxKTsKKyAgICBhc3NlcnRfZXF1YWxzKGRvY3VtZW50LmFsbC5pdGVtKCd0ZXN0
JylbMV0sIGVsZW1lbnQyKTsKKyAgICBhc3NlcnRfZXF1YWxzKGRvY3VtZW50LmFsbCgndGVzdCcp
WzBdLCBlbGVtZW50MSk7CisgICAgYXNzZXJ0X2VxdWFscyhkb2N1bWVudC5hbGwoJ3Rlc3QnKVsx
XSwgZWxlbWVudDIpOworCisgICAgZWxlbWVudDEucmVtb3ZlKCk7CisgICAgZWxlbWVudDIucmVt
b3ZlKCk7CisgICAgZWxlbWVudDMucmVtb3ZlKCk7Cit9LCAiZG9jdW1lbnQuYWxsIHdpbGwgcmV0
dXJuIGEgc3ViLWNvbGxlY3Rpb24gaWYgdGhlIG5hbWUvaWQgaXMgZm91bmQgbW9yZSB0aGFuIG9u
Y2UsIGJ1dCBzdGlsbCBhZGhlcmVzIHRvIHRoZSBydWxlcyBhYm91dCB3aGF0IHRhZ3MgY2FuIGhh
dmUgbmFtZXMiKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICBsZXQgZWxlbWVudDEgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTsKKyAgICBlbGVtZW50MS5zZXRBdHRyaWJ1dGUo
Im5hbWUiLCAidGVzdCIpOworICAgIHBsYXlncm91bmQuYXBwZW5kKGVsZW1lbnQxKTsKKworICAg
IGxldCBlbGVtZW50MiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTsKKyAgICBlbGVt
ZW50Mi5zZXRBdHRyaWJ1dGUoImlkIiwgInRlc3QiKTsKKyAgICBwbGF5Z3JvdW5kLmFwcGVuZChl
bGVtZW50Mik7CisKKyAgICBsZXQgY29sbGVjdGlvbiA9IGRvY3VtZW50LmFsbC5uYW1lZEl0ZW0o
J3Rlc3QnKTsKKyAgICBhc3NlcnRfZXF1YWxzKGNvbGxlY3Rpb24ubGVuZ3RoLCAyKTsKKworICAg
IGxldCBlbGVtZW50MyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2ltZycpOworICAgIGVsZW1l
bnQzLnNldEF0dHJpYnV0ZSgibmFtZSIsICJ0ZXN0Iik7CisgICAgcGxheWdyb3VuZC5hcHBlbmQo
ZWxlbWVudDMpOworCisgICAgYXNzZXJ0X2VxdWFscyhjb2xsZWN0aW9uLmxlbmd0aCwgMyk7CisK
KyAgICBlbGVtZW50MS5yZW1vdmUoKTsKKyAgICBlbGVtZW50Mi5yZW1vdmUoKTsKKworICAgIGFz
c2VydF9lcXVhbHMoY29sbGVjdGlvbi5sZW5ndGgsIDEpOworCisgICAgZWxlbWVudDMucmVtb3Zl
KCk7Cit9LCAiZG9jdW1lbnQuYWxsIHdpbGwgcmV0dXJuIGEgc3ViLWNvbGxlY3Rpb24gaWYgdGhl
IG5hbWUvaWQgaXMgZm91bmQgbW9yZSB0aGFuIG9uY2UsIHRoYXQgaXMgbGl2ZSIpOworCit0ZXN0
KGZ1bmN0aW9uKCkgeworICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlv
bigpIHsgZG9jdW1lbnQuYWxsLm5hbWVkSXRlbSgpIH0pOworfSwgImRvY3VtZW50LmFsbCdzIG5h
bWVkSXRlbSBmdW5jdGlvbiByZXF1aXJlcyBwYXNzaW5nIGFuIGFyZ3VtZW50Iik7CisKK3Rlc3Qo
ZnVuY3Rpb24oKSB7CisgICAgYXNzZXJ0X2VxdWFscyhkb2N1bWVudC5hbGwuaXRlbSgpLCBudWxs
KTsKKyAgICBhc3NlcnRfZXF1YWxzKGRvY3VtZW50LmFsbCgpLCBudWxsKTsKK30sICJkb2N1bWVu
dC5hbGwncyBpdGVtIGZ1bmN0aW9uIGFuZCBsZWdhY3kgY2FsbGVyIGZ1bmN0aW9uYWxpdHkgYWxs
b3cgcGFzc2luZyBubyBhcmd1bWVudHMiKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICBsZXQg
ZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpOworICAgIGVsZW1lbnQu
c2V0QXR0cmlidXRlKCJuYW1lIiwgIjAiKTsKKyAgICBwbGF5Z3JvdW5kLmFwcGVuZChlbGVtZW50
KTsKKworICAgIGFzc2VydF9lcXVhbHMoZG9jdW1lbnQuYWxsLml0ZW0oJzAnKSwgZG9jdW1lbnQu
ZG9jdW1lbnRFbGVtZW50KTsKKyAgICBhc3NlcnRfZXF1YWxzKGRvY3VtZW50LmFsbCgnMCcpLCBk
b2N1bWVudC5kb2N1bWVudEVsZW1lbnQpOworICAgIGFzc2VydF9lcXVhbHMoZG9jdW1lbnQuYWxs
Lm5hbWVkSXRlbSgnMCcpLCBlbGVtZW50KTsKKworICAgIGVsZW1lbnQucmVtb3ZlKCk7Cit9LCAi
ZG9jdW1lbnQuYWxsJ3MgaXRlbSBmdW5jdGlvbiBhbmQgbGVnYWN5IGNhbGxlciBmdW5jdGlvbmFs
aXR5IHdpbGwgdHJ5IHRvIGNvbnZlcnQgdGhlaXIgRE9NU3RyaW5nIGFyZ3VtZW50IHRvIGFuIGlu
ZGV4IGJlZm9yZSBuYW1lIGxvb2t1cCIpOworCitwbGF5Z3JvdW5kLnJlbW92ZSgpOworCis8L3Nj
cmlwdD4KKzwvYm9keT4KSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwkocmV2aXNp
b24gMjE2ODQ4KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE3LTA1LTE0ICBTYW0gV2VpbmlnICA8c2FtQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgW1dlYklETC9ET01dIFJlbW92ZSBuZWVkIGZvciBjdXN0b20g
YmluZGluZ3MgZm9yIEhUTUxBbGxDb2xsZWN0aW9uIGFuZCBicmluZyB1cCB0byBzcGVjCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzIwOTUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL2luZnJhc3RydWN0dXJlL2NvbW1vbi1kb20taW50ZXJmYWNlcy9jb2xsZWN0
aW9ucy9odG1sYWxsY29sbGVjdGlvbi1leHBlY3RlZC50eHQ6CisgICAgICAgIFVwZGF0ZSByZXN1
bHRzLgorCiAyMDE3LTA1LTEyICBSb21haW4gQmVsbGVzc29ydCAgPHJvbWFpbi5iZWxsZXNzb3J0
QGNyZi5jYW5vbi5mcj4KIAogICAgICAgICBbUmVhZGFibGUgU3RyZWFtcyBBUEldIEFkZCBSZWFk
YWJsZVN0cmVhbUJZT0JSZWFkZXIgY2xvc2VkIGdldHRlcgpJbmRleDogTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2luZnJhc3RydWN0dXJlL2NvbW1vbi1k
b20taW50ZXJmYWNlcy9jb2xsZWN0aW9ucy9odG1sYWxsY29sbGVjdGlvbi1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL2luZnJhc3RydWN0dXJlL2NvbW1vbi1kb20taW50ZXJmYWNlcy9jb2xsZWN0aW9ucy9o
dG1sYWxsY29sbGVjdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDIxNjg0OCkKKysrIExheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9pbmZyYXN0cnVjdHVy
ZS9jb21tb24tZG9tLWludGVyZmFjZXMvY29sbGVjdGlvbnMvaHRtbGFsbGNvbGxlY3Rpb24tZXhw
ZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMCw1ICsxMCw1IEBAIFBBU1MgVGVzdCBsb29r
dXAgSU1HIGluIGNvbGxlY3Rpb24gdXNpbmcKIFBBU1MgVGVzdCBsb29rdXAgSU1HIGluIGNvbGxl
Y3Rpb24gdXNpbmcgLiAKIFBBU1MgVGVzdCBsb29rdXAgdGFncyBpbiBjb2xsZWN0aW9uIHVzaW5n
IC4gCiBQQVNTIFNob3VsZCBmaW5kIHJvb3QgZWxlbWVudCB0b28gCi1GQUlMIFNob3VsZCBmaW5k
IGJvdGggYW5jaG9ycyBhbmQgcHJvZHVjZSBhIGxpc3QgdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmpl
Y3QgKGV2YWx1YXRpbmcgJ2RvY3VtZW50LmFsbFsiZm9vIl0ubGVuZ3RoJykKK1BBU1MgU2hvdWxk
IGZpbmQgYm90aCBhbmNob3JzIGFuZCBwcm9kdWNlIGEgbGlzdCAKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>