<?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>164535</bug_id>
          
          <creation_ts>2016-11-08 16:55:25 -0800</creation_ts>
          <short_desc>Introduce PageSchemeRegistry</short_desc>
          <delta_ts>2016-12-01 10:26:21 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>aestes</cc>
    
    <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1249184</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-11-08 16:55:25 -0800</bug_when>
    <thetext>Introduce PageSchemeRegistry</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249187</commentid>
    <comment_count>1</comment_count>
      <attachid>294202</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-11-08 16:58:20 -0800</bug_when>
    <thetext>Created attachment 294202
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249188</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-08 17:01:24 -0800</bug_when>
    <thetext>Attachment 294202 did not pass style-queue:


ERROR: Source/WebCore/page/PageSchemeRegistry.h:37:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 2 in 222 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>1249189</commentid>
    <comment_count>3</comment_count>
      <attachid>294203</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-11-08 17:02:00 -0800</bug_when>
    <thetext>Created attachment 294203
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1255284</commentid>
    <comment_count>4</comment_count>
      <attachid>294203</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2016-12-01 10:24:30 -0800</bug_when>
    <thetext>Comment on attachment 294203
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        No change in behavior. Just introduced a stub.

This description is insufficient. Neither the description for this bug nor any of the ChangeLog files describe what this change is about and its motivation. Although this change is introducing a stub it is a step towards a larger architecture change and we should describe in these ChangeLog files what is PageSchemeRegistry, who creates/owns it, and how other fundamental classes (e.g. Document) relate to it or make use of it. We should also describe the motivation for this change, including why SchemeRegistry no longer works well in the post-WebKit2/Network process world.

&gt; Source/WebCore/dom/Document.h:1305
&gt; +    Document(Frame*, const URL&amp;, const PageSchemeRegistry&amp;, unsigned = DefaultDocumentClass, unsigned constructionFlags = 0);

Can you please elaborate on this? In particular, can you please elaborate on the lifetime of the Document&apos;s PageSchemeRegistry with respect to the lifetime of the Frame object associated with the Document.

&gt; Source/WebCore/loader/DocumentLoader.cpp:1137
&gt;      m_archive = archive;

We are underutilizing the purpose of passing by rvalue reference to remove unnecessary ref count churn. This will cause ref count churn. We should WTFMove() archive into m_archive.

&gt; Source/WebCore/loader/FrameLoader.cpp:894
&gt; +void FrameLoader::loadArchive(RefPtr&lt;Archive&gt;&amp;&amp; archive)

We should WTFMove() archive into Document::setArchive() below. Otherwise, we are are underutilizing the properties of passing by rvalue reference.

&gt; Source/WebCore/page/SecurityOrigin.cpp:273
&gt; +bool SecurityOrigin::canRequest(const URL&amp; url, const PageSchemeRegistry&amp; schemeRegistry) const

How did you come to the decision to pass a scheme registry to the SecurityOrigin when invoking a member function as opposed to using the scheme registry that was used to instantiate the SecurityOrigin? Are there cases where we want to pass the scheme registry for a document B when querying the security origin of document A? (Maybe this is answered if I keep reading through this patch?)

&gt; Source/WebCore/page/SecurityOrigin.cpp:328
&gt; +bool SecurityOrigin::canDisplay(const URL&amp; url, const PageSchemeRegistry&amp; schemeRegistry) const

Ditto.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294202</attachid>
            <date>2016-11-08 16:58:20 -0800</date>
            <delta_ts>2016-11-08 17:01:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164535-20161108165412.patch</filename>
            <type>text/plain</type>
            <size>408058</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE2LTExLTA4ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW50cm9kdWNlIFBhZ2VTY2hlbWVS
ZWdpc3RyeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTY0NTM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiB3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaDoKKyAgICAgICAgKFdURjo6VGhyZWFkU2FmZVJl
ZkNvdW50ZWRCYXNlOjpyZWYpOgorICAgICAgICAoV1RGOjpUaHJlYWRTYWZlUmVmQ291bnRlZEJh
c2U6Omhhc09uZVJlZik6CisgICAgICAgIChXVEY6OlRocmVhZFNhZmVSZWZDb3VudGVkQmFzZTo6
ZGVyZWZCYXNlKToKKyAgICAgICAgKFdURjo6VGhyZWFkU2FmZVJlZkNvdW50ZWQ6OmRlcmVmKToK
KwogMjAxNi0xMS0wMyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAg
IERGRyBwbGF5cyBmYXN0IGFuZCBsb29zZSB3aXRoIHRoZSBzaGFkb3cgdmFsdWVzIG9mIGEgUGhp
CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XVEYvd3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmgJKHJldmlzaW9uIDIwODM5
OCkKKysrIFNvdXJjZS9XVEYvd3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQxLDEyICs0MSwxMiBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHZvaWQg
cmVmKCkKKyAgICB2b2lkIHJlZigpIGNvbnN0CiAgICAgewogICAgICAgICArK21fcmVmQ291bnQ7
CiAgICAgfQogCi0gICAgYm9vbCBoYXNPbmVSZWYoKQorICAgIGJvb2wgaGFzT25lUmVmKCkgY29u
c3QKICAgICB7CiAgICAgICAgIHJldHVybiByZWZDb3VudCgpID09IDE7CiAgICAgfQpAQCAtNTgs
NyArNTgsNyBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICAvLyBSZXR1cm5zIHdoZXRoZXIg
dGhlIHBvaW50ZXIgc2hvdWxkIGJlIGZyZWVkIG9yIG5vdC4KLSAgICBib29sIGRlcmVmQmFzZSgp
CisgICAgYm9vbCBkZXJlZkJhc2UoKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKC0tbV9yZWZD
b3VudCA8PSAwKSB7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTY4LDE1ICs2OCwxNSBA
QCBwcm90ZWN0ZWQ6CiAgICAgfQogCiBwcml2YXRlOgotICAgIHN0ZDo6YXRvbWljPGludD4gbV9y
ZWZDb3VudDsKKyAgICBtdXRhYmxlIHN0ZDo6YXRvbWljPGludD4gbV9yZWZDb3VudDsKIH07CiAK
IHRlbXBsYXRlPGNsYXNzIFQ+IGNsYXNzIFRocmVhZFNhZmVSZWZDb3VudGVkIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkQmFzZSB7CiBwdWJsaWM6Ci0gICAgdm9pZCBkZXJlZigpCisgICAg
dm9pZCBkZXJlZigpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoZGVyZWZCYXNlKCkpCi0gICAg
ICAgICAgICBkZWxldGUgc3RhdGljX2Nhc3Q8VCo+KHRoaXMpOworICAgICAgICAgICAgZGVsZXRl
IHN0YXRpY19jYXN0PGNvbnN0IFQqPih0aGlzKTsKICAgICB9CiAKIHByb3RlY3RlZDoKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cJKHJldmlzaW9uIDIwODQwNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5NCBAQAorMjAxNi0xMS0wOCAgQWxleCBDaHJpc3Rl
bnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIEludHJvZHVjZSBQYWdl
U2NoZW1lUmVnaXN0cnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2NDUzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6
CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6c2V0UmVmZXJyZXIpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFi
YXNlSWRlbnRpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUlkZW50aWZp
ZXI6OmRhdGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jvb3QpOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpJREJTZXJ2ZXI6OnBlcmZvcm1DbG9zZUFuZERlbGV0ZURhdGFiYXNlc0Zvck9yaWdpbnMp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6b3JpZ2lucyk6CisgICAgICAgICogTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2Nr
ZXQ6OldlYlNvY2tldCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmRpZFJlY2VpdmVN
ZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6ZGlkUmVjZWl2ZUJpbmFyeURh
dGEpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaDoKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6aGFuZGxlUG9zdE1l
c3NhZ2UpOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1N0eWxlU2hlZXQ6OmNhbkFjY2Vzc1J1bGVzKToKKyAgICAgICAgKiBjc3MvUnVsZVNl
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSdWxlU2V0OjphZGRSdWxlc0Zyb21TaGVldCk6Cisg
ICAgICAgICogY3NzL1N0eWxlU2hlZXRDb250ZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZVNoZWV0Q29udGVudHM6OnBhcnNlQXV0aG9yU3R5bGVTaGVldCk6CisgICAgICAgICogZG9t
L0RPTUltcGxlbWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVhNTERvY3Vt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlSFRNTERvY3Vt
ZW50KToKKyAgICAgICAgKiBkb20vRE9NSW1wbGVtZW50YXRpb24uaDoKKyAgICAgICAgKiBkb20v
RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OkRvY3VtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OmNsb25lRG9jdW1lbnRXaXRob3V0Q2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OmFwcGx5WFNMVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
Ojppbml0U2VjdXJpdHlDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjplbnN1
cmVUZW1wbGF0ZURvY3VtZW50KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
OmNyZWF0ZU5vblJlbmRlcmVkUGxhY2Vob2xkZXIpOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVj
dXRpb25Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OnNhbml0aXplU2NyaXB0RXJyb3IpOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25D
b250ZXh0Lmg6CisgICAgICAgICogZG9tL1NlY3VyaXR5Q29udGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTZWN1cml0eUNvbnRleHQ6OmlzU2VjdXJlVHJhbnNpdGlvblRvKToKKyAgICAgICAg
KiBkb20vU2VjdXJpdHlDb250ZXh0Lmg6CisgICAgICAgICogZG9tL1hNTERvY3VtZW50Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpYTUxEb2N1bWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OlhNTERvY3VtZW50OjpjcmVhdGVYSFRNTCk6CisgICAgICAgIChXZWJDb3JlOjpYTUxEb2N1bWVu
dDo6WE1MRG9jdW1lbnQpOgorICAgICAgICAqIGh0bWwvRE9NVVJMLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRPTVVSTDo6b3JpZ2luKToKKyAgICAgICAgKiBodG1sL0RPTVVSTC5oOgorICAgICAg
ICAqIGh0bWwvRE9NVVJMLmlkbDoKKyAgICAgICAgKiBodG1sL0ZUUERpcmVjdG9yeURvY3VtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZUUERpcmVjdG9yeURvY3VtZW50OjpGVFBEaXJlY3Rv
cnlEb2N1bWVudCk6CisgICAgICAgICogaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5oOgorICAg
ICAgICAqIGh0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEFuY2hvckVsZW1lbnQ6Om9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQW5jaG9yRWxl
bWVudDo6aGFuZGxlQ2xpY2spOgorICAgICAgICAqIGh0bWwvSFRNTERvY3VtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudDo6SFRNTERvY3VtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxEb2N1bWVudDo6Y2xvbmVEb2N1bWVudFdpdGhvdXRDaGlsZHJlbik6CisgICAg
ICAgICogaHRtbC9IVE1MRG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVu
dDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudDo6Y3JlYXRlU3ludGhl
c2l6ZWREb2N1bWVudCk6CisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OndpZHRoKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmhlaWdodCk6CisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VF
bGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmlzU2FmZVRvTG9hZFVSTCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpvcmlnaW5zSW5NZWRpYUNhY2hlKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFDb250cm9scyk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclJlZmVycmVyKToKKyAg
ICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6Omhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKToKKyAgICAgICAgKiBodG1sL0hU
TUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbklt
YWdlRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnVwZGF0ZVNuYXBzaG90KToKKyAgICAgICAgKiBodG1sL0lt
YWdlRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEb2N1bWVudDo6SW1hZ2VE
b2N1bWVudCk6CisgICAgICAgICogaHRtbC9JbWFnZURvY3VtZW50Lmg6CisgICAgICAgICogaHRt
bC9NZWRpYURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRG9jdW1lbnQ6Ok1l
ZGlhRG9jdW1lbnQpOgorICAgICAgICAqIGh0bWwvTWVkaWFEb2N1bWVudC5oOgorICAgICAgICAq
IGh0bWwvUGx1Z2luRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRG9jdW1l
bnQ6OlBsdWdpbkRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRvY3VtZW50Ojpz
ZXRQbHVnaW5FbGVtZW50KToKKyAgICAgICAgKiBodG1sL1BsdWdpbkRvY3VtZW50Lmg6CisgICAg
ICAgICogaHRtbC9UZXh0RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dERvY3Vt
ZW50OjpUZXh0RG9jdW1lbnQpOgorICAgICAgICAqIGh0bWwvVGV4dERvY3VtZW50Lmg6CisgICAg
ICAgICogaHRtbC9VUkxVdGlscy5oOgorICAgICAgICAoV2ViQ29yZTo6VVJMVXRpbHM8VD46Om9y
aWdpbik6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9VUkxVdGlscy5pZGw6CisgICAgICAgICog
aHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDYW52YXNSZW5kZXJpbmdDb250ZXh0Ojp3b3VsZFRhaW50T3JpZ2luKToKKyAgICAgICAgKFdl
YkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OmNoZWNrT3JpZ2luKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0OjpjaGVja09yaWdpbik6CisgICAgICAgICog
aHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y3JlYXRlUGF0dGVybik6CisgICAgICAgICog
aHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0ZXhTdWJJbWFnZTJEKToKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0Ojp0ZXhTdWJJbWFnZTJEKToKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OnRleEltYWdlMkQpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVIVE1MSW1hZ2VFbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlSFRNTENhbnZh
c0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
dmFsaWRhdGVIVE1MVmlkZW9FbGVtZW50KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLmg6CisgICAgICAgICogaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9y
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01QYXRjaFN1cHBvcnQ6OnBhdGNoRG9jdW1lbnQp
OgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudExvYWRlcjo6RG9jdW1lbnRMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6cmVzcG9uc2VSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExv
YWRlcjo6c2V0QXJjaGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6cG9w
QXJjaGl2ZUZvclN1YmZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpz
dWJyZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6c3RhcnRMb2Fk
aW5nTWFpblJlc291cmNlKToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXI6OnNjaGVtZVJlZ2lzdHJ5KToKKyAgICAgICAgKiBsb2FkZXIvRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlcjo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6aXNBbGxvd2VkUmVkaXJlY3QpOgorICAgICAg
ICAqIGxvYWRlci9Eb2N1bWVudFdyaXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dFdyaXRlcjo6Y3JlYXRlRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRXcml0
ZXI6OmJlZ2luKToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmZpbGxXaXRoRW1wdHlDbGllbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5
RnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZURvY3VtZW50TG9hZGVyKToKKyAgICAgICAgKiBsb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRB
cmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkRnJhbWVSZXF1ZXN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkVVJMKToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyOjpjb21taXRQcm92aXNpb25hbExvYWQpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXI6OmRpc3BhdGNoVW5sb2FkRXZlbnRzKToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyOjpzaG91bGRJbnRlcnJ1cHRMb2FkRm9yWEZyYW1lT3B0aW9ucyk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZERpZmZlcmVudERvY3VtZW50SXRl
bSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVXaW5kb3cpOgorICAgICAgICAqIGxvYWRlci9G
cmFtZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9JbWFnZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUxvYWRlcjo6dXBkYXRlRnJvbUVsZW1lbnQpOgorICAgICAgICAqIGxv
YWRlci9Mb2FkVGltaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRUaW1pbmc6OmFkZFJl
ZGlyZWN0KToKKyAgICAgICAgKiBsb2FkZXIvTG9hZFRpbWluZy5oOgorICAgICAgICAqIGxvYWRl
ci9QaW5nTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBpbmdMb2FkZXI6OmxvYWRJbWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpQaW5nTG9hZGVyOjpzZW5kUGluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpQaW5nTG9hZGVyOjpzZW5kVmlvbGF0aW9uUmVwb3J0KToKKyAgICAgICAgKiBsb2Fk
ZXIvUmVzb3VyY2VMb2FkSW5mby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRJ
bmZvOjppc1RoaXJkUGFydHkpOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nRnJhbWVO
YXZpZ2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dT
dWJyZXNvdXJjZUxvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2
ZXI6OmxvZ1dlYlNvY2tldExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6aW5pdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6aXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlh
bHMpOgorICAgICAgICAqIGxvYWRlci9TaW5rRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2lua0RvY3VtZW50OjpTaW5rRG9jdW1lbnQpOgorICAgICAgICAqIGxvYWRlci9TaW5rRG9j
dW1lbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvU3ViZnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U3ViZnJhbWVMb2FkZXI6OnBsdWdpbklzTG9hZGFibGUpOgorICAgICAgICAoV2Vi
Q29yZTo6U3ViZnJhbWVMb2FkZXI6OmNyZWF0ZUphdmFBcHBsZXRXaWRnZXQpOgorICAgICAgICAo
V2ViQ29yZTo6U3ViZnJhbWVMb2FkZXI6OmxvYWRTdWJmcmFtZSk6CisgICAgICAgICogbG9hZGVy
L1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9h
ZGVyOjp3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpTdWJyZXNv
dXJjZUxvYWRlcjo6Y2hlY2tSZWRpcmVjdGlvbkNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbCk6Cisg
ICAgICAgICogbG9hZGVyL1RleHRUcmFja0xvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGlj
YXRpb25DYWNoZUdyb3VwOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXApOgorICAgICAgICAqIGxvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaDoKKyAgICAgICAgKiBsb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGlj
YXRpb25DYWNoZUhvc3Q6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0KToKKyAgICAgICAgKFdlYkNvcmU6
OkFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojppc0FwcGxpY2F0aW9uQ2FjaGVCbG9ja2VkRm9yUmVxdWVz
dCk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0Lmg6Cisg
ICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpsb2FkQ2FjaGVHcm91cCk6
CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZmluZE9yQ3JlYXRl
Q2FjaGVHcm91cCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6
Y2FjaGVHcm91cEZvclVSTCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZTo6ZmFsbGJhY2tDYWNoZUdyb3VwRm9yVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlOjpnZXRPcmlnaW5zV2l0aENhY2hlKToKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y3JlYXRlKToKKyAgICAg
ICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaDoKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpDYWNoZWRDU1NTdHlsZVNoZWV0KToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRGb250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OkNhY2hlZEZv
bnQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250Lmg6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZEZvbnRDbGllbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OkNhY2hlZEltYWdl
KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkSW1hZ2VDbGllbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkUmF3UmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6
OkNhY2hlZFJhd1Jlc291cmNlKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVz
b3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OkNhY2hlZFJlc291cmNlKToKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFJlc291cmNlOjpzY2hlbWVSZWdpc3RyeSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVJlc291cmNlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpDYWNoZWRSZXNvdXJjZUxv
YWRlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdElt
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0VXNl
ckNTU1N0eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6
OmNhblJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNh
blJlcXVlc3RBZnRlclJlZGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291
cmNlTG9hZGVyOjpjYW5SZXF1ZXN0SW5Db250ZW50RGlzcG9zaXRpb25BdHRhY2htZW50U2FuZGJv
eCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6dXBkYXRlQ2FjaGVk
UmVzb3VyY2VXaXRoQ3VycmVudFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVz
b3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRS
ZXNvdXJjZUxvYWRlcjo6cmV2YWxpZGF0ZVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZFJlc291cmNlTG9hZGVyOjpsb2FkUmVzb3VyY2UpOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3Vy
Y2VMb2FkZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRl
cjo6c2NoZW1lUmVnaXN0cnkpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZVJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0Ojp1
cGRhdGVSZWZlcnJlck9yaWdpbkFuZFVzZXJBZ2VudEhlYWRlcnMpOgorICAgICAgICAoV2ViQ29y
ZTo6aXNSZXF1ZXN0Q3Jvc3NPcmlnaW4pOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZVJlcXVlc3QuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnQ6OkNhY2hlZFNWR0Rv
Y3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hMb2Fk
aW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaDoKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnRDbGllbnQuaDoKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRT
VkdGb250OjpDYWNoZWRTVkdGb250KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0ZvbnQ6
OmVuc3VyZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZH
Rm9udC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkU2NyaXB0OjpDYWNoZWRTY3JpcHQpOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRTY3JpcHQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU3R5
bGVTaGVldENsaWVudC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2su
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpDYWNoZWRUZXh0VHJhY2sp
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaDoKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRYU0xTdHlsZVNoZWV0OjpDYWNoZWRYU0xTdHlsZVNoZWV0KToKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9N
ZW1vcnlDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6YWRkSW1hZ2VU
b0NhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpyZW1vdmVSZXNvdXJjZXNX
aXRoT3JpZ2lucyk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6b3JpZ2luc1dpdGhD
YWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6cmVtb3ZlUmVzb3VyY2VzV2l0
aE9yaWdpbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6Z2V0T3Jp
Z2luc1dpdGhDYWNoZSk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL2NhY2hlL01lbW9yeUNh
Y2hlLmg6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RE9NV2luZG93Ojpwb3N0TWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmNy
b3NzRG9tYWluQWNjZXNzRXJyb3JNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRv
dzo6Y3JlYXRlV2luZG93KToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5oOgorICAgICAgICAq
IHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xs
ZXI6OnN0YXJ0RHJhZyk6CisgICAgICAgICogcGFnZS9FdmVudFNvdXJjZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFdmVudFNvdXJjZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBw
YWdlL0V2ZW50U291cmNlLmg6CisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZTo6RnJhbWUpOgorICAgICAgICAqIHBhZ2UvRnJhbWUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lOjpzY2hlbWVSZWdpc3RyeSk6CisgICAgICAgICogcGFnZS9IaXN0b3J5
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okhpc3Rvcnk6OnN0YXRlT2JqZWN0QWRkZWQpOgorICAg
ICAgICAqIHBhZ2UvTG9jYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TG9jYXRpb246Om9y
aWdpbik6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6
OlBhZ2UpOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6
c2NoZW1lUmVnaXN0cnkpOgorICAgICAgICAqIHBhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uY3BwOgor
ICAgICAgICAqIHBhZ2UvUGFnZVNjaGVtZVJlZ2lzdHJ5LmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpQYWdlU2NoZW1lUmVnaXN0cnk6OlBhZ2VTY2hlbWVSZWdpc3RyeSk6CisgICAgICAg
ICogcGFnZS9QYWdlU2NoZW1lUmVnaXN0cnkuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQ
YWdlU2NoZW1lUmVnaXN0cnk6OmNyZWF0ZSk6CisgICAgICAgICogcGFnZS9QZXJmb3JtYW5jZVJl
c291cmNlVGltaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhc3Nlc1RpbWluZ0FsbG93Q2hl
Y2spOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6c2hvdWxkVHJlYXRBc1VuaXF1ZU9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjYW5S
ZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjYW5EaXNwbGF5KToK
KyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjptYXliZUNyZWF0ZUZyb21EYXRhYmFzZUlk
ZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21E
YXRhYmFzZUlkZW50aWZpZXIpOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW4uaDoKKyAg
ICAgICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGE6OnNlY3VyaXR5T3JpZ2luKToKKyAgICAgICAgKiBwYWdlL1NlY3Vy
aXR5T3JpZ2luRGF0YS5oOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJyZXJIZWFkZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlQb2xpY3k6OmlzQWNjZXNzV2hpdGVMaXN0ZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlQb2xpY3k6OmlzQWNjZXNzVG9VUkxXaGl0ZUxpc3Rl
ZCk6CisgICAgICAgICogcGFnZS9TZWN1cml0eVBvbGljeS5oOgorICAgICAgICAqIHBhZ2UvY3Nw
L0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2Vj
dXJpdHlQb2xpY3k6OkNvbnRlbnRTZWN1cml0eVBvbGljeSk6CisgICAgICAgIChXZWJDb3JlOjpz
dHJpcFVSTEZvclVzZUluUmVwb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0
eVBvbGljeTo6dXBncmFkZUluc2VjdXJlUmVxdWVzdElmTmVlZGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6c2V0VXBncmFkZUluc2VjdXJlUmVxdWVzdHMpOgor
ICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oOgorICAgICAgICAqIHBs
YXRmb3JtL1NjaGVtZVJlZ2lzdHJ5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6Omhhc1NpbmdsZVNl
Y3VyaXR5T3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpvcmlnaW5zSW5N
ZWRpYUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpjbGVhck1lZGlhQ2Fj
aGVGb3JPcmlnaW5zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlOjpoYXNTaW5nbGVTZWN1
cml0eU9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVJbnRlcmZh
Y2U6OmF1ZGlvU291cmNlUHJvdmlkZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlSW50ZXJmYWNlOjpvcmlnaW5zSW5NZWRpYUNhY2hlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTo6Y2xlYXJNZWRpYUNhY2hlKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTo6
Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpvcmlnaW5zSW5NZWRpYUNhY2hlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNs
ZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6aGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9N
ZWRpYVBsYXllclByaXZhdGVRVEtpdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21h
Yy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZVFUS2l0OjpvcmlnaW5zSW5NZWRpYUNhY2hlKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U25hcHNob3R0ZWRQbHVnSW46OnVwZGF0ZVNuYXBzaG90KToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uaDoKKyAgICAgICAgKiByZXBsYXkvU2VyaWFsaXphdGlv
bk1ldGhvZHMuY3BwOgorICAgICAgICAoSlNDOjpFbmNvZGluZ1RyYWl0czxTZWN1cml0eU9yaWdp
bj46OmRlY29kZVZhbHVlKToKKyAgICAgICAgKiBzdmcvU1ZHRG9jdW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRG9jdW1lbnQ6OlNWR0RvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0RvY3VtZW50OjpjbG9uZURvY3VtZW50V2l0aG91dENoaWxkcmVuKToKKyAgICAgICAgKiBz
dmcvU1ZHRG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0RvY3VtZW50OjpjcmVhdGUp
OiBEZWxldGVkLgorICAgICAgICAqIHdvcmtlcnMvQWJzdHJhY3RXb3JrZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QWJzdHJhY3RXb3JrZXI6OnJlc29sdmVVUkwpOgorICAgICAgICAqIHdvcmtl
cnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEZWRp
Y2F0ZWRXb3JrZXJHbG9iYWxTY29wZTo6RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUpOgorICAg
ICAgICAqIHdvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaDoKKyAgICAgICAgKiB3
b3JrZXJzL0RlZGljYXRlZFdvcmtlclRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWRp
Y2F0ZWRXb3JrZXJUaHJlYWQ6OkRlZGljYXRlZFdvcmtlclRocmVhZCk6CisgICAgICAgIChXZWJD
b3JlOjpEZWRpY2F0ZWRXb3JrZXJUaHJlYWQ6OmNyZWF0ZVdvcmtlckdsb2JhbFNjb3BlKToKKyAg
ICAgICAgKiB3b3JrZXJzL0RlZGljYXRlZFdvcmtlclRocmVhZC5oOgorICAgICAgICAqIHdvcmtl
cnMvV29ya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlcjo6V29ya2VyKToKKyAgICAg
ICAgKFdlYkNvcmU6Oldvcmtlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiB3b3Jr
ZXJzL1dvcmtlci5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyR2xvYmFsU2NvcGU6Oldvcmtlckdsb2JhbFNjb3BlKToK
KyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmg6CisgICAgICAgICogd29ya2Vy
cy9Xb3JrZXJMb2NhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJMb2NhdGlvbjo6
b3JpZ2luKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckxvY2F0aW9uLmg6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJMb2NhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
ckxvY2F0aW9uOjp1cmwpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTG9jYXRpb246Oldvcmtl
ckxvY2F0aW9uKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckxvY2F0aW9uLmlkbDoKKyAgICAg
ICAgKiB3b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Oldvcmtlck1lc3NhZ2luZ1Byb3h5OjpzdGFydFdvcmtlckdsb2JhbFNjb3BlKToKKyAgICAgICAg
KiB3b3JrZXJzL1dvcmtlclRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJl
YWQ6OldvcmtlclRocmVhZCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJUaHJlYWQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZDo6c2NoZW1lUmVnaXN0cnkpOgorICAgICAgICAq
IHhtbC9ET01QYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NUGFyc2VyOjpwYXJzZUZy
b21TdHJpbmcpOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2VYTUwpOgorICAgICAgICAoV2ViQ29yZTo6
WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlcXVlc3QpOgorICAgICAgICAqIHhtbC9YU0xUUHJvY2Vz
c29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhTTFRQcm9jZXNzb3I6OmNyZWF0ZURvY3VtZW50
RnJvbVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpYU0xUUHJvY2Vzc29yOjp0cmFuc2Zvcm1U
b0RvY3VtZW50KToKKyAgICAgICAgKiB4bWwvWFNMVFByb2Nlc3Nvci5oOgorICAgICAgICAqIHht
bC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkb2NMb2FkZXJG
dW5jKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpzaG91bGRBbGxvd0V4dGVybmFsTG9hZCk6CisgICAgICAgIChX
ZWJDb3JlOjpvcGVuRnVuYyk6CisKIDIwMTYtMTEtMDQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hy
aXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBNb3ZlIGlzRGVmYXVsdFBvcnRGb3JQcm90
b2NvbCBmcm9tIFVSTFBhcnNlci5jcHAgYmFjayB0byBVUkwuY3BwCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTIwNDksNiArMjA0OSw3IEBAIHNldChXZWJDb3JlX1NPVVJD
RVMKICAgICBwYWdlL1BhZ2VHcm91cExvYWREZWZlcnJlci5jcHAKICAgICBwYWdlL1BhZ2VPdmVy
bGF5LmNwcAogICAgIHBhZ2UvUGFnZU92ZXJsYXlDb250cm9sbGVyLmNwcAorICAgIHBhZ2UvUGFn
ZVNjaGVtZVJlZ2lzdHJ5LmNwcAogICAgIHBhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCiAgICAgcGFn
ZS9QYWdlVmlzaWJpbGl0eVN0YXRlLmNwcAogICAgIHBhZ2UvUGVyZm9ybWFuY2UuY3BwCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuY3BwCShyZXZp
c2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVz
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MSw3ICsxNTEsNyBAQCBzdGF0aWMgT3B0aW9uYWw8
RXhjZXB0aW9uPiBzZXRSZWZlcnJlcihGCiAgICAgICAgIHJldHVybiBOdWxsb3B0OwogICAgIH0K
IAotICAgIGlmICghKGNvbnRleHQuc2VjdXJpdHlPcmlnaW4oKSAmJiBjb250ZXh0LnNlY3VyaXR5
T3JpZ2luKCktPmNhblJlcXVlc3QocmVmZXJyZXJVUkwpKSkKKyAgICBpZiAoIShjb250ZXh0LnNl
Y3VyaXR5T3JpZ2luKCkgJiYgY29udGV4dC5zZWN1cml0eU9yaWdpbigpLT5jYW5SZXF1ZXN0KHJl
ZmVycmVyVVJMLCBjb250ZXh0LnNjaGVtZVJlZ2lzdHJ5KCkpKSkKICAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IFR5cGVFcnJvciwgQVNDSUlMaXRlcmFsKCJSZWZlcnJlciBpcyBub3Qgc2FtZS1v
cmlnaW4uIikgfTsKIAogICAgIHJlcXVlc3QucmVmZXJyZXIgPSByZWZlcnJlclVSTC5zdHJpbmco
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRl
bnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNF
KQogCiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUgIlBhZ2VTY2hlbWVSZWdpc3Ry
eS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSA8d3RmL1JlZi5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNjMsMTMgKzY0LDEzIEBAIFN0cmlu
ZyBJREJEYXRhYmFzZUlkZW50aWZpZXI6OmRhdGFiYXNlRGkKIAogU3RyaW5nIElEQkRhdGFiYXNl
SWRlbnRpZmllcjo6ZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChjb25zdCBTZWN1cml0
eU9yaWdpbkRhdGEmIHRvcExldmVsT3JpZ2luLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9w
ZW5pbmdPcmlnaW4sIGNvbnN0IFN0cmluZyYgcm9vdERpcmVjdG9yeSkKIHsKLSAgICBTdHJpbmcg
bWFpbkZyYW1lRGlyZWN0b3J5ID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJvb3REaXJlY3Rv
cnksIHRvcExldmVsT3JpZ2luLnNlY3VyaXR5T3JpZ2luKCktPmRhdGFiYXNlSWRlbnRpZmllcigp
KTsKKyAgICBTdHJpbmcgbWFpbkZyYW1lRGlyZWN0b3J5ID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KHJvb3REaXJlY3RvcnksIHRvcExldmVsT3JpZ2luLnNlY3VyaXR5T3JpZ2luKFBhZ2VTY2hl
bWVSZWdpc3RyeTo6Y3JlYXRlKCkpLT5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CiAKICAgICAvLyBJ
ZiB0aGUgb3BlbmluZyBvcmlnaW4gYW5kIG1haW4gZnJhbWUgb3JpZ2lucyBhcmUgdGhlIHNhbWUs
IHRoZXJlIGlzIG5vIHBhcnRpdGlvbmluZy4KICAgICBpZiAob3BlbmluZ09yaWdpbiA9PSB0b3BM
ZXZlbE9yaWdpbikKICAgICAgICAgcmV0dXJuIG1haW5GcmFtZURpcmVjdG9yeTsKIAotICAgIHJl
dHVybiBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobWFpbkZyYW1lRGlyZWN0b3J5LCBvcGVuaW5n
T3JpZ2luLnNlY3VyaXR5T3JpZ2luKCktPmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICByZXR1
cm4gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1haW5GcmFtZURpcmVjdG9yeSwgb3BlbmluZ09y
aWdpbi5zZWN1cml0eU9yaWdpbihQYWdlU2NoZW1lUmVnaXN0cnk6OmNyZWF0ZSgpKS0+ZGF0YWJh
c2VJZGVudGlmaWVyKCkpOwogfQogCiAjaWYgIUxPR19ESVNBQkxFRApJbmRleDogU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAJ
KHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9JREJTZXJ2ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5j
bHVkZSAiSURCUmVzdWx0RGF0YS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJN
ZW1vcnlJREJCYWNraW5nU3RvcmUuaCIKKyNpbmNsdWRlICJQYWdlU2NoZW1lUmVnaXN0cnkuaCIK
ICNpbmNsdWRlICJTUUxpdGVGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiU1FMaXRlSURCQmFja2lu
Z1N0b3JlLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKQEAgLTY1MSw3ICs2NTIsNyBA
QCB2b2lkIElEQlNlcnZlcjo6cGVyZm9ybUNsb3NlQW5kRGVsZXRlRGF0CiB7CiAgICAgaWYgKCFt
X2RhdGFiYXNlRGlyZWN0b3J5UGF0aC5pc0VtcHR5KCkpIHsKICAgICAgICAgZm9yIChjb25zdCBh
dXRvJiBvcmlnaW4gOiBvcmlnaW5zKSB7Ci0gICAgICAgICAgICBTdHJpbmcgb3JpZ2luUGF0aCA9
IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2RhdGFiYXNlRGlyZWN0b3J5UGF0aCwgb3JpZ2lu
LnNlY3VyaXR5T3JpZ2luKCktPmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICAgICAgICAgIFN0
cmluZyBvcmlnaW5QYXRoID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fZGF0YWJhc2VEaXJl
Y3RvcnlQYXRoLCBvcmlnaW4uc2VjdXJpdHlPcmlnaW4oUGFnZVNjaGVtZVJlZ2lzdHJ5OjpjcmVh
dGUoKSktPmRhdGFiYXNlSWRlbnRpZmllcigpKTsKICAgICAgICAgICAgIHJlbW92ZUFsbERhdGFi
YXNlc0Zvck9yaWdpblBhdGgob3JpZ2luUGF0aCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6
dGltZV9wb2ludDo6bWluKCkpOwogICAgICAgICB9CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcAko
cmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZVRyYWNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBACiAjaW5j
bHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk9yaWdpbkxvY2suaCIKICNpbmNsdWRlICJQYWdl
LmgiCisjaW5jbHVkZSAiUGFnZVNjaGVtZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlP
cmlnaW4uaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbkhhc2guaCIKICNpbmNsdWRlICJTUUxp
dGVGaWxlU3lzdGVtLmgiCkBAIC00MTIsNyArNDEzLDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6
Om9yaWdpbnMoVmVjdG9yPFJlZgogCiAgICAgaW50IHJlc3VsdDsKICAgICB3aGlsZSAoKHJlc3Vs
dCA9IHN0YXRlbWVudC5zdGVwKCkpID09IFNRTElURV9ST1cpIHsKLSAgICAgICAgUmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbURhdGFiYXNl
SWRlbnRpZmllcihzdGF0ZW1lbnQuZ2V0Q29sdW1uVGV4dCgwKSk7CisgICAgICAgIFJlZlB0cjxT
ZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21EYXRhYmFz
ZUlkZW50aWZpZXIoc3RhdGVtZW50LmdldENvbHVtblRleHQoMCksIFBhZ2VTY2hlbWVSZWdpc3Ry
eTo6Y3JlYXRlKCkpOwogICAgICAgICBvcmlnaW5zUmVzdWx0LmFwcGVuZChvcmlnaW4tPmlzb2xh
dGVkQ29weSgpKTsKICAgICB9CiAgICAgb3JpZ2luc1Jlc3VsdC5zaHJpbmtUb0ZpdCgpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAJ
KHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSAi
RnJhbWUuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVzc2FnZUV2ZW50Lmgi
CisjaW5jbHVkZSAiUGFnZVNjaGVtZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIgpAQCAtMTUwLDYgKzE1MSw3IEBAIFdlYlNvY2tldDo6V2Vi
U29ja2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnQKICAgICAsIG1fc3VicHJvdG9jb2woZW1wdHlTdHJp
bmcoKSkKICAgICAsIG1fZXh0ZW5zaW9ucyhlbXB0eVN0cmluZygpKQogICAgICwgbV9yZXN1bWVU
aW1lcigqdGhpcywgJldlYlNvY2tldDo6cmVzdW1lVGltZXJGaXJlZCkKKyAgICAsIG1fc2NoZW1l
UmVnaXN0cnkoY29udGV4dC5zY2hlbWVSZWdpc3RyeSgpKQogewogfQogCkBAIC01NTksNyArNTYx
LDcgQEAgdm9pZCBXZWJTb2NrZXQ6OmRpZFJlY2VpdmVNZXNzYWdlKGNvbnN0IAogICAgIGlmICht
X3N0YXRlICE9IE9QRU4pCiAgICAgICAgIHJldHVybjsKICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpKTsKLSAgICBkaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKG1z
ZywgU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShtX3VybCktPnRvU3RyaW5nKCkpKTsKKyAgICBkaXNw
YXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKG1zZywgU2VjdXJpdHlPcmlnaW46OmNyZWF0
ZShtX3VybCwgbV9zY2hlbWVSZWdpc3RyeS5nZXQoKSktPnRvU3RyaW5nKCkpKTsKIH0KIAogdm9p
ZCBXZWJTb2NrZXQ6OmRpZFJlY2VpdmVCaW5hcnlEYXRhKFZlY3Rvcjx1aW50OF90PiYmIGJpbmFy
eURhdGEpCkBAIC01NjgsMTAgKzU3MCwxMCBAQCB2b2lkIFdlYlNvY2tldDo6ZGlkUmVjZWl2ZUJp
bmFyeURhdGEoVmVjCiAgICAgc3dpdGNoIChtX2JpbmFyeVR5cGUpIHsKICAgICBjYXNlIEJpbmFy
eVR5cGU6OkJsb2I6CiAgICAgICAgIC8vIEZJWE1FOiBXZSBqdXN0IHJlY2VpdmVkIHRoZSBkYXRh
IGZyb20gTmV0d29ya1Byb2Nlc3MsIGFuZCBhcmUgc2VuZGluZyBpdCBiYWNrLiBUaGlzIGlzIGlu
ZWZmaWNpZW50LgotICAgICAgICBkaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKEJs
b2I6OmNyZWF0ZShXVEZNb3ZlKGJpbmFyeURhdGEpLCBlbXB0eVN0cmluZygpKSwgU2VjdXJpdHlP
cmlnaW46OmNyZWF0ZShtX3VybCktPnRvU3RyaW5nKCkpKTsKKyAgICAgICAgZGlzcGF0Y2hFdmVu
dChNZXNzYWdlRXZlbnQ6OmNyZWF0ZShCbG9iOjpjcmVhdGUoV1RGTW92ZShiaW5hcnlEYXRhKSwg
ZW1wdHlTdHJpbmcoKSksIFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUobV91cmwsIG1fc2NoZW1lUmVn
aXN0cnkuZ2V0KCkpLT50b1N0cmluZygpKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQmlu
YXJ5VHlwZTo6QXJyYXlCdWZmZXI6Ci0gICAgICAgIGRpc3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50
OjpjcmVhdGUoQXJyYXlCdWZmZXI6OmNyZWF0ZShiaW5hcnlEYXRhLmRhdGEoKSwgYmluYXJ5RGF0
YS5zaXplKCkpLCBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1fdXJsKS0+dG9TdHJpbmcoKSkpOwor
ICAgICAgICBkaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKEFycmF5QnVmZmVyOjpj
cmVhdGUoYmluYXJ5RGF0YS5kYXRhKCksIGJpbmFyeURhdGEuc2l6ZSgpKSwgU2VjdXJpdHlPcmln
aW46OmNyZWF0ZShtX3VybCwgbV9zY2hlbWVSZWdpc3RyeS5nZXQoKSktPnRvU3RyaW5nKCkpKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJzb2NrZXRzL1dlYlNvY2tldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCSh3b3JraW5nIGNvcHkpCkBAIC00
OCw2ICs0OCw3IEBAIGNsYXNzIEFycmF5QnVmZmVyVmlldzsKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgQmxvYjsKK2NsYXNzIFBhZ2VTY2hlbWVSZWdpc3RyeTsKIGNsYXNzIFRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsOwogCiBjbGFzcyBXZWJTb2NrZXQgZmluYWwgOiBwdWJsaWMgUmVm
Q291bnRlZDxXZWJTb2NrZXQ+LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVi
bGljIEFjdGl2ZURPTU9iamVjdCwgcHJpdmF0ZSBXZWJTb2NrZXRDaGFubmVsQ2xpZW50IHsKQEAg
LTE0MCw2ICsxNDEsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zaG91bGREZWxheUV2ZW50Rmly
aW5nIHsgZmFsc2UgfTsKICAgICBEZXF1ZTxSZWY8RXZlbnQ+PiBtX3BlbmRpbmdFdmVudHM7CiAg
ICAgYm9vbCBtX2Rpc3BhdGNoZWRFcnJvckV2ZW50IHsgZmFsc2UgfTsKKworICAgIFJlZjxjb25z
dCBQYWdlU2NoZW1lUmVnaXN0cnk+IG1fc2NoZW1lUmVnaXN0cnk7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE1NjQs
MTAgKzE1NjQsMTAgQEAKIAkJNDE2MkE0NTcxMDExNDY0NzAwREZGM0VEIC8qIEpTRGVkaWNhdGVk
V29ya2VyR2xvYmFsU2NvcGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDE2MkE0NTUxMDExNDY0NzAwREZGM0VEIC8qIEpTRGVkaWNhdGVkV29ya2Vy
R2xvYmFsU2NvcGUuY3BwICovOyB9OwogCQk0MTYyQTQ1ODEwMTE0NjQ3MDBERkYzRUQgLyogSlNE
ZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDE2MkE0NTYxMDExNDY0NzAwREZGM0VEIC8qIEpTRGVkaWNhdGVk
V29ya2VyR2xvYmFsU2NvcGUuaCAqLzsgfTsKIAkJNDE2RTI5QTYxMDJGQTk2MjAwN0ZDMTRFIC8q
IFdvcmtlclJlcG9ydGluZ1Byb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MTZFMjlBNTEwMkZBOTYyMDA3RkMxNEUgLyogV29ya2VyUmVwb3J0aW5n
UHJveHkuaCAqLzsgfTsKKwkJNDE2RTZGRTgxQkJEMTJERjAwMEEzRjY0IC8qIFJlYWRhYmxlU3Ry
ZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDlCMDNEODA2MUJCMzExMEQwMEI3NjREOSAvKiBSZWFkYWJsZVN0cmVhbUlu
dGVybmFsc0J1aWx0aW5zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNDE2RTZGRTgxQkJEMTJERjAwMEE2MDIzIC8qIEZldGNoSW50ZXJuYWxzQnVp
bHRpbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlC
MDNEODA2MUJCMzExMEQwMEI3NjRCOSAvKiBGZXRjaEludGVybmFsc0J1aWx0aW5zLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE2RTZGRTgxQkJE
MTJERjAwMEE2MDMzIC8qIFN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFCQjMxMTBEMDBCNzY0Qzkg
LyogU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwotCQk0MTZFNkZFODFCQkQxMkRGMDAwQTNGNjQgLyogUmVhZGFi
bGVCeXRlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDNEODA2MUJCMzExMEQwMEI3NjREOSAvKiBSZWFkYWJs
ZUJ5dGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTQxNkU2RkU4MUJCRDEyREYwMDBBNjA0MyAvKiBSZWFk
YWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFCQjMxMTBEMDBCNzNGNjQgLyogUmVhZGFibGVT
dHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTQxNkU2RkU4MUJCRDEyREYwMDBBNjA0MyAvKiBSZWFkYWJsZUJ5
dGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOUIwM0Q4MDYxQkIzMTEwRDAwQjczRjY0IC8qIFJlYWRhYmxlQnl0
ZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE2RTZGRTgxQkJEMTJERjAwMEE2MDUzIC8qIFdyaXRhYmxl
U3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDlCMDNEODA2MUJCMzExMEQwMEI3NjRFOSAvKiBXcml0YWJsZVN0cmVh
bUludGVybmFsc0J1aWx0aW5zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNDE2RTZGRTkxQkJEMTJFNTAwMEE2MDQzIC8qIFJlYWRhYmxlU3RyZWFt
QnVpbHRpbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDlCMDNEODA2MUJCMzExMEQwMEI3NjREOCAvKiBSZWFkYWJsZVN0cmVhbUJ1aWx0aW5zLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE2RTZGRTkx
QkJEMTJFNTAwMEE2MDUzIC8qIFdyaXRhYmxlU3RyZWFtQnVpbHRpbnMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDNEODA2MUJCMzExMEQwMEI3NjRF
OCAvKiBXcml0YWJsZVN0cmVhbUJ1aWx0aW5zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI0MDYsNiArMjQwNiw4IEBACiAJCTVCMzA2OTVFMThC
M0QzNDUwMDk5RDVFOCAvKiBXZWJHTERyYXdCdWZmZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QjMwNjk1QjE4QjNEMzQ1MDA5OUQ1RTggLyogV2Vi
R0xEcmF3QnVmZmVycy5oICovOyB9OwogCQk1QjdBMjA4RDJFMTI5NzlCNEFFMTlERTYgLyogUmVu
ZGVyTWF0aE1MU3BhY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gREJGQ0IwRUJGRjVDRDc3RUJFQjM1Mzk1IC8qIFJlbmRlck1hdGhNTFNwYWNlLmNw
cCAqLzsgfTsKIAkJNUI3QTIwOEQyRTEyOTc5QjRBRTE5RTZGIC8qIFJlbmRlck1hdGhNTFBhZGRl
ZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQkZD
QjBFQkZGNUNENzdFQkVCMzU5NUYgLyogUmVuZGVyTWF0aE1MUGFkZGVkLmNwcCAqLzsgfTsKKwkJ
NUMyRjQ4MUExRENFNjYxQjAwQTY2MjI2IC8qIFBhZ2VTY2hlbWVSZWdpc3RyeS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzJGNDgxODFEQ0U2NTgx
MDBBNjYyMjYgLyogUGFnZVNjaGVtZVJlZ2lzdHJ5LmNwcCAqLzsgfTsKKwkJNUMyRjQ4MUIxREQx
NzRENDAwQTY2MjI2IC8qIFBhZ2VTY2hlbWVSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMyRjQ4MTkxRENFNjU4MTAwQTY2MjI2IC8qIFBh
Z2VTY2hlbWVSZWdpc3RyeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTVDM0M4NTZEMUQ1QTdBREUwMDg4QjlFQyAvKiBOZXR3b3JrU3RvcmFnZVNl
c3Npb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NUMzQzg1NkMxRDVBN0FEMzAwODhCOUVDIC8qIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAgKi87
IH07CiAJCTVDNDMwNEIwMTkxQUM5MDgwMDBFMkJDMCAvKiBFWFRTaGFkZXJUZXh0dXJlTE9ELmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDNDMwNEFE
MTkxQUM5MDgwMDBFMkJDMCAvKiBFWFRTaGFkZXJUZXh0dXJlTE9ELmNwcCAqLzsgfTsKIAkJNUM0
MzA0QjExOTFBQzkwODAwMEUyQkMwIC8qIEVYVFNoYWRlclRleHR1cmVMT0QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDNDMwNEFFMTkxQUM5MDgwMDBF
MkJDMCAvKiBFWFRTaGFkZXJUZXh0dXJlTE9ELmggKi87IH07CkBAIC0yNTkwLDggKzI1OTIsOCBA
QAogCQk2QjY5M0EyRTFDNTFBODJFMDBCMDNCRUYgLyogUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZCNjkzQTJEMUM1
MUE4MkUwMEIwM0JFRiAvKiBSZXNvdXJjZUxvYWRPYnNlcnZlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTZCNjkzQTM0MUM1MUE5NUQwMEIwM0JF
RiAvKiBSZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA2QjY5M0EzMzFDNTFBOTVEMDBCMDNCRUYgLyogUmVzb3VyY2VM
b2FkT2JzZXJ2ZXIuY3BwICovOyB9OwogCQk2QzRDOTZERTFBRDQ0ODM1MDAzNjNGNjQgLyogSlNS
ZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNEM5NkRBMUFENDQ4MzUwMDM2M0Y2NCAvKiBKU1JlYWRh
YmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIuY3BwICovOyB9OwotCQk2QzRDOTZERjFBRDQ0ODM1MDAz
NjNGNjQgLyogSlNSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzRDOTZEQjFBRDQ0ODM1MDAzNjNGNjQg
LyogSlNSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyLmggKi87IH07CiAJCTZDNEM5NkRFMUFE
NDQ4MzUwMDM2NUE1MCAvKiBKU1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0Qzk2REExQUQ0
NDgzNTAwMzY1QTUwIC8qIEpTUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5jcHAgKi87
IH07CisJCTZDNEM5NkRGMUFENDQ4MzUwMDM2M0Y2NCAvKiBKU1JlYWRhYmxlQnl0ZVN0cmVhbUNv
bnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDZDNEM5NkRCMUFENDQ4MzUwMDM2M0Y2NCAvKiBKU1JlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xs
ZXIuaCAqLzsgfTsKIAkJNkM0Qzk2REYxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTUmVhZGFibGVTdHJl
YW1EZWZhdWx0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNkM0Qzk2REIxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTUmVhZGFibGVTdHJlYW1E
ZWZhdWx0Q29udHJvbGxlci5oICovOyB9OwogCQk2QzYzODg5NUE5NkNDRUU1MEM4Qzk0NkMgLyog
Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM2Mzg4OTNBOTZDQ0VFNTBDOEM5NDZDIC8qIENhY2hl
ZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk2QzYzODg5NkE5NkNDRUU1MEM4Qzk0NkMgLyogQ2FjaGVk
UmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA2QzYzODg5NEE5NkNDRUU1MEM4Qzk0NkMgLyogQ2FjaGVkUmVz
b3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5jcHAgKi87IH07CkBAIC05NTcxLDYgKzk1NzMsOCBAQAog
CQk1QjMwNjk1QTE4QjNEMzQ1MDA5OUQ1RTggLyogV2ViR0xEcmF3QnVmZmVycy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHTERyYXdCdWZmZXJzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUIzMDY5NUIxOEIzRDM0NTAwOTlENUU4IC8qIFdl
YkdMRHJhd0J1ZmZlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR0xE
cmF3QnVmZmVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QjMwNjk1QzE4QjNE
MzQ1MDA5OUQ1RTggLyogV2ViR0xEcmF3QnVmZmVycy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gV2ViR0xEcmF3QnVmZmVycy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVD
MkY0ODE4MURDRTY1ODEwMEE2NjIyNiAvKiBQYWdlU2NoZW1lUmVnaXN0cnkuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFnZVNjaGVtZVJlZ2lzdHJ5LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUMyRjQ4MTkxRENFNjU4MTAwQTY2MjI2IC8qIFBh
Z2VTY2hlbWVSZWdpc3RyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWdl
U2NoZW1lUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUMzOTMwNUQx
QUEwRjZBOTAwMjlDODE2IC8qIERGQUJ5dGVjb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IERGQUJ5dGVjb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVD
MzkzMDVFMUFBMEY2QTkwMDI5QzgxNiAvKiBERkFCeXRlY29kZUNvbXBpbGVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERGQUJ5dGVjb2RlQ29tcGlsZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzM5MzA1RjFBQTBGNkE5MDAyOUM4MTYgLyog
REZBQnl0ZWNvZGVDb21waWxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
RkFCeXRlY29kZUNvbXBpbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05Nzgy
LDggKzk3ODYsOCBAQAogCQk2QjY5M0EyRDFDNTFBODJFMDBCMDNCRUYgLyogUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkI2OTNBMzMxQzUxQTk1
RDAwQjAzQkVGIC8qIFJlc291cmNlTG9hZE9ic2VydmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJlc291cmNlTG9hZE9ic2VydmVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNkM0Qzk2REExQUQ0NDgzNTAwMzYzRjY0IC8qIEpTUmVhZGFibGVC
eXRlU3RyZWFtQ29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU1JlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk2QzRDOTZEQjFBRDQ0ODM1MDAzNjNGNjQgLyogSlNSZWFkYWJsZUJ5dGVT
dHJlYW1Db250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUmVh
ZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk2QzRDOTZEQTFBRDQ0ODM1MDAzNjVBNTAgLyogSlNSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250
cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUmVhZGFi
bGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTZDNEM5NkRCMUFENDQ4MzUwMDM2M0Y2NCAvKiBKU1JlYWRhYmxlQnl0ZVN0cmVhbUNvbnRy
b2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNSZWFkYWJsZUJ5dGVT
dHJlYW1Db250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZDNEM5NkRC
MUFENDQ4MzUwMDM2NUE1MCAvKiBKU1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNSZWFkYWJsZVN0cmVhbURlZmF1bHRD
b250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZDNjM4ODkzQTk2Q0NF
RTUwQzhDOTQ2QyAvKiBDYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3Jz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZDNjM4ODk0QTk2Q0NFRTUwQzhDOTQ2
QyAvKiBDYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTExMTc1LDggKzExMTc5LDggQEAKIAkJ
OTkwOEIwRjAxQkNBQ0Y5MTAwRUQzRjY0IC8qIFJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIu
anMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBSZWFkYWJsZUJ5dGVT
dHJlYW1Db250cm9sbGVyLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTA4QjBG
MTFCQ0FDRjkxMDBFRDBGNTUgLyogU3RyZWFtSW50ZXJuYWxzLmpzICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5qYXZhc2NyaXB0OyBwYXRoID0gU3RyZWFtSW50ZXJuYWxzLmpzOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5OTA4QjBGMTFCQ0FDRjkxMDBFRDBGNjUgLyogUmVhZGFibGVTdHJl
YW1JbnRlcm5hbHMuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBS
ZWFkYWJsZVN0cmVhbUludGVybmFscy5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
OTkwOEIwRjExQkNBQ0Y5MTAwRUQzRjY0IC8qIFJlYWRhYmxlQnl0ZVN0cmVhbUludGVybmFscy5q
cyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IFJlYWRhYmxlQnl0ZVN0
cmVhbUludGVybmFscy5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTkwOEIwRjEx
QkNBQ0Y5MTAwRUQwRjc1IC8qIFdyaXRhYmxlU3RyZWFtSW50ZXJuYWxzLmpzICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gV3JpdGFibGVTdHJlYW1JbnRlcm5hbHMuanM7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5MDhCMEYxMUJDQUNGOTEwMEVEM0Y2NCAv
KiBSZWFkYWJsZUJ5dGVTdHJlYW1JbnRlcm5hbHMuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmph
dmFzY3JpcHQ7IHBhdGggPSBSZWFkYWJsZUJ5dGVTdHJlYW1JbnRlcm5hbHMuanM7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5MDhCMEYyMUJDQUNGOTEwMEVEMEY2NSAvKiBSZWFkYWJs
ZVN0cmVhbURlZmF1bHRSZWFkZXIuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7
IHBhdGggPSBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIuanM7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTk5MDhCMEYzMUJDQUNGRkUwMEVEMEY2NSAvKiBCeXRlTGVuZ3RoUXVldWlu
Z1N0cmF0ZWd5QnVpbHRpbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5zLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOTkwOEIwRjUxQkNBRDA3RDAwRUQwRjY1IC8qIEJ5dGVMZW5ndGhRdWV1
aW5nU3RyYXRlZ3lCdWlsdGlucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBC
eXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5QnVpbHRpbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTExMTg0LDE1ICsxMTE4OCwxMyBAQAogCQk5OTA4QjBGNzFCQ0FEMDdEMDBFRDBG
NjUgLyogQ291bnRRdWV1aW5nU3RyYXRlZ3lCdWlsdGlucy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDb3VudFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5zLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTk5MDhCMEY5MUJDQUQwN0QwMEVEMEY2NSAvKiBSZWFkYWJsZVN0
cmVhbUJ1aWx0aW5zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJl
YWRhYmxlU3RyZWFtQnVpbHRpbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
OTA4QjBGOTFCQ0FEMDdEMDBFRDBGNzUgLyogV3JpdGFibGVTdHJlYW1CdWlsdGlucy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXcml0YWJsZVN0cmVhbUJ1aWx0aW5z
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTkwOEIwRkExQkNBRDA3RDAwRUQz
RjY0IC8qIFJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXJCdWlsdGlucy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVy
QnVpbHRpbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5OTA4QjBGQjFCQ0FE
MDdEMDBFRDNGNjQgLyogUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlckJ1aWx0aW5zLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xs
ZXJCdWlsdGlucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTA4QjBGQTFCQ0FE
MDdEMDBFRDBGNjUgLyogUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlckJ1aWx0aW5zLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtRGVm
YXVsdENvbnRyb2xsZXJCdWlsdGlucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTk5MDhCMEZCMUJDQUQwN0QwMEVEMEY2NSAvKiBSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9s
bGVyQnVpbHRpbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVhZGFibGVT
dHJlYW1EZWZhdWx0Q29udHJvbGxlckJ1aWx0aW5zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTk5MDhCMEZEMUJDQUQwN0QwMEVEMEY0NSAvKiBGZXRjaEludGVybmFsc0J1aWx0aW5z
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZldGNoSW50ZXJuYWxz
QnVpbHRpbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTA4QjBGRDFCQ0FE
MDdEMDBFRDBGNTUgLyogU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5OTA4QjBGRDFCQ0FEMDdEMDBFRDNGNjQgLyogUmVh
ZGFibGVCeXRlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUmVhZGFibGVCeXRlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTA4QjBGRDFCQ0FEMDdEMDBFRDBGNjUg
LyogUmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSZWFkYWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTkwOEIwRkQxQkNBRDA3RDAwRUQwRjc1IC8q
IFdyaXRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV3JpdGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5MDhCMEZEMUJDQUQwN0QwMEVEM0Y2NCAvKiBS
ZWFkYWJsZUJ5dGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSZWFkYWJsZUJ5dGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5MDhCMEZFMUJDQUQwN0QwMEVEMEY2
NSAvKiBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXJCdWlsdGlucy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXJCdWls
dGlucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5MDhCMEZGMUJDQUQwN0Qw
MEVEMEY2NSAvKiBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXJCdWlsdGlucy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXJCdWls
dGlucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTIwMzk4MDE4Qjk1QkM2MDBC
MzlBRjkgLyogVXNlcklucHV0QnJpZGdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFVzZXJJbnB1dEJyaWRnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xMTIzMCwxMCArMTEyMzIsMTAgQEAKIAkJOUE1MjhFODIxN0Q3RjUyRjAwQUE5NTE4IC8q
IEZsb2F0aW5nT2JqZWN0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGbG9h
dGluZ09iamVjdHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUFCMUYzN0UxOEUy
NDg5QTAwNTM0NzQzIC8qIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5QUIxRjM3RjE4RTI0ODlBMDA1MzQ3NDMgLyogQ1NTVG9M
ZW5ndGhDb252ZXJzaW9uRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOUIwM0Q4MDYxQkIzMTEwRDAwQjczRjY0IC8qIFJlYWRhYmxlQnl0ZVN0cmVhbUlu
dGVybmFsc0J1aWx0aW5zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlYWRh
YmxlQnl0ZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTlCMDNEODA2MUJCMzExMEQwMEI3NjRCOSAvKiBGZXRjaEludGVybmFsc0J1aWx0aW5z
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZldGNoSW50ZXJuYWxzQnVpbHRp
bnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIwM0Q4MDYxQkIzMTEwRDAwQjc2
NEM5IC8qIFN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFN0cmVhbUludGVybmFsc0J1aWx0aW5zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTlCMDNEODA2MUJCMzExMEQwMEI3NjREOCAvKiBSZWFkYWJsZVN0cmVhbUJ1aWx0
aW5zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtQnVp
bHRpbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOUIwM0Q4MDYxQkIzMTEwRDAw
QjczRjY0IC8qIFJlYWRhYmxlQnl0ZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlYWRhYmxlQnl0ZVN0cmVhbUludGVybmFsc0J1aWx0
aW5zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMDNEODA2MUJCMzExMEQwMEI3
NjREOSAvKiBSZWFkYWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIwM0Q4MDYxQkIzMTEwRDAwQjc2NEU4IC8qIFdy
aXRhYmxlU3RyZWFtQnVpbHRpbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V3JpdGFibGVTdHJlYW1CdWlsdGlucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
QjAzRDgwNjFCQjMxMTBEMDBCNzY0RTkgLyogV3JpdGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlu
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXcml0YWJsZVN0cmVhbUludGVy
bmFsc0J1aWx0aW5zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzMzMyw4ICsx
NzMzNSw2IEBACiAJCQkJNDRBMjhBQUUxMkRGQjhCRjAwQUU5MjNCIC8qIE1hdGhNTE5hbWVzLmgg
Ki8sCiAJCQkJNzFFMjE4MzgxNzM1OUZCODAwNkU2RTREIC8qIFBsdWdJbnNSZXNvdXJjZXMuaCAq
LywKIAkJCQk3MUUyMTgzOTE3MzU5RkI4MDA2RTZFNEQgLyogUGx1Z0luc1Jlc291cmNlc0RhdGEu
Y3BwICovLAotCQkJCTk5MDhCMEZBMUJDQUQwN0QwMDc2M0Y2NCAvKiBSZWFkYWJsZUJ5dGVTdHJl
YW1Db250cm9sbGVyQnVpbHRpbnMuY3BwICovLAotCQkJCTk5MDhCMEZCMUJDQUQwN0QwMDc2M0Y2
NCAvKiBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyQnVpbHRpbnMuaCAqLywKIAkJCQk5OTA4
QjBGRDFCQ0FEMDdEMDBFRDNGNjQgLyogUmVhZGFibGVCeXRlU3RyZWFtSW50ZXJuYWxzQnVpbHRp
bnMuY3BwICovLAogCQkJCTlCMDNEODA2MUJCMzExMEQwMEI3M0Y2NCAvKiBSZWFkYWJsZUJ5dGVT
dHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oICovLAogCQkJCTk5MDhCMEY5MUJDQUQwN0QwMEVEMEY2
NSAvKiBSZWFkYWJsZVN0cmVhbUJ1aWx0aW5zLmNwcCAqLywKQEAgLTE3NjIwLDYgKzE3NjIwLDgg
QEAKIAkJNjVCRjAyMTgwOTc0ODA2MzAwQzQzMTk2IC8qIHBhZ2UgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTVDMkY0ODE4MURDRTY1ODEwMEE2NjIyNiAv
KiBQYWdlU2NoZW1lUmVnaXN0cnkuY3BwICovLAorCQkJCTVDMkY0ODE5MURDRTY1ODEwMEE2NjIy
NiAvKiBQYWdlU2NoZW1lUmVnaXN0cnkuaCAqLywKIAkJCQkzMTZGRTEwNjBFNkUxRDg0MDBCRjYw
ODggLyogYW5pbWF0aW9uICovLAogCQkJCTVENTk3NUI1MTk2MzYyQkUwMEQwMDg3OCAvKiBjb2Nv
YSAqLywKIAkJCQlDRTE3QUQxNDFDNTg1MjJGMDA1RjQ3OTkgLyogY3NwICovLApAQCAtMjUwNzcs
NyArMjUwNzksNiBAQAogCQkJCUJDMUJERjI1MTU2QzE4QzcwMDFDMTI0MyAvKiBET01FcnJvci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMkVENjA5QkQxMTQ1QjA3MTAwQzg2ODRFIC8qIERPTUZvcm1E
YXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODE4NUYzQjA5NzY1NzY2MDA1ODI2RDkgLyogRE9N
SW1wbGVtZW50YXRpb24uaCBpbiBIZWFkZXJzICovLAotCQkJCUUzNUNBMTRFMURCQzNBNDIwMEY4
MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlFMzE1MEVBNzFEQTcyMTkzMDAxOTQwMTIgLyogRE9NSklUSGVscGVycy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTlDNkU0RTQwRDc0NUUwNTAwNjQ0MkU5IC8qIERPTU1pbWVUeXBlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBOUM2RTRFODBENzQ1RTE4MDA2NDQyRTkgLyogRE9NTWltZVR5cGVBcnJh
eS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjc5MSw5ICsyNjc5Miw5IEBACiAJCQkJRjU1QjNEQ0Ux
MjUxRjEyRDAwM0VGMjY5IC8qIFJhbmdlSW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2
RTg0RTlFMTE3NjY4QkYxMDA4MTVCNjggLyogUmFzdGVyU2hhcGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE4NEQ4MjdDMTFEMzMzRUQwMDk3Mjk5MCAvKiBSYXdEYXRhRG9jdW1lbnRQYXJzZXIuaCBp
biBIZWFkZXJzICovLAotCQkJCTQxNkU2RkU4MUJCRDEyREYwMDBBM0Y2NCAvKiBSZWFkYWJsZUJ5
dGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE2RTZGRTgx
QkJEMTJERjAwMEEzRjY0IC8qIFJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQxNkU2RkU5MUJCRDEyRTUwMDBBNjA0MyAvKiBSZWFkYWJsZVN0cmVh
bUJ1aWx0aW5zLmggaW4gSGVhZGVycyAqLywKLQkJCQk0MTZFNkZFODFCQkQxMkRGMDAwQTYwNDMg
LyogUmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NDE2RTZGRTgxQkJEMTJERjAwMEE2MDQzIC8qIFJlYWRhYmxlQnl0ZVN0cmVhbUludGVybmFsc0J1
aWx0aW5zLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjAzQzEyQjAyNjc2MDBDMUEzNTkgLyog
UmVhbHRpbWVBbmFseXNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEE0RjY1NzExQUE5OTdGMTAw
RTM4Q0REIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTRBNEY2
NTcyMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzLmgg
aW4gSGVhZGVycyAqLywKQEAgLTI3OTU2LDYgKzI3OTU3LDcgQEAKIAkJCQk0MTZFNkZFODFCQkQx
MkRGMDAwQTYwNTMgLyogV3JpdGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOUJBRjNCMjQxMkMxQTM5ODAwMDE0QkYxIC8qIFdyaXRpbmdEaXJlY3Rpb24u
aCBpbiBIZWFkZXJzICovLAogCQkJCTE0NDc2QUE4MTVEQzRCQjEwMDMwNURCMiAvKiBXcml0aW5n
TW9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNUMyRjQ4MUIxREQxNzRENDAwQTY2MjI2IC8qIFBh
Z2VTY2hlbWVSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjU2NTgyMDIwOUQxNTA4RDAw
MEU2MUQ3IC8qIFhMaW5rTmFtZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzMDc4NEIyMUM1MkVF
MkMwMDEwNEQxRCAvKiBYTUxEb2N1bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDBCOTMxODgx
M0JBOERCQTAwMzVBOTQ4IC8qIFhNTERvY3VtZW50UGFyc2VyLmggaW4gSGVhZGVycyAqLywKQEAg
LTI4ODM0LDcgKzI4ODM2LDYgQEAKIAkJCQlCQzFCREYyNDE1NkMxODgzMDAxQzEyNDMgLyogRE9N
RXJyb3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkVENjA5QkMxMTQ1QjA3MTAwQzg2ODRFIC8q
IERPTUZvcm1EYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MTg1RjNFMDk3NjU3NjYwMDU4
MjZEOSAvKiBET01JbXBsZW1lbnRhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlFMzVDQTE0
RDFEQkMzQTNGMDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBOUM2RTRFMzBENzQ1RTA1MDA2NDQyRTkgLyogRE9NTWltZVR5cGUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTlDNkU0RTcwRDc0NUUxODAwNjQ0MkU5IC8qIERPTU1p
bWVUeXBlQXJyYXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTJCNkM5QzIxNUUzRjRERjAwNjkw
QjA1IC8qIERPTU5hbWVkRmxvd0NvbGxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMDgz
OCw2ICszMDgzOSw3IEBACiAJCQkJOTdCQzZBNDExNTA1RjA4MTAwMUI3NEFDIC8qIFNRTFJlc3Vs
dFNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5N0JDNkE0NDE1MDVGMDgxMDAxQjc0QUMgLyog
U1FMUmVzdWx0U2V0Um93TGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRThBNjc0NzE2Q0RE
MTlFMDA5MzBCRjggLyogU1FMU3RhdGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTVDMkY0
ODFBMURDRTY2MUIwMEE2NjIyNiAvKiBQYWdlU2NoZW1lUmVnaXN0cnkuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJOTdCQzZBNEYxNTA1RjA4MTAwMUI3NEFDIC8qIFNRTFRyYW5zYWN0aW9uLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUZFRTE4MTEzMTZDMzE5RTgwMDA4NDg0OSAvKiBTUUxUcmFuc2Fj
dGlvbkJhY2tlbmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdCQzZBNTQxNTA1RjA4MTAwMUI3
NEFDIC8qIFNRTFRyYW5zYWN0aW9uQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAkocmV2
aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dD
dXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MjMsNyArNTIzLDEwIEBAIHN0YXRpYyBKU1Zh
bHVlIGhhbmRsZVBvc3RNZXNzYWdlKERPTVdpbmQKICAgICBTdHJpbmcgdGFyZ2V0T3JpZ2luID0g
Y29udmVydDxJRExOdWxsYWJsZTxJRExVU1ZTdHJpbmc+PihzdGF0ZSwgc3RhdGUudW5jaGVja2Vk
QXJndW1lbnQodGFyZ2V0T3JpZ2luQXJnSW5kZXgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBKU1ZhbHVlKCkpOwogCi0gICAgcHJvcGFnYXRlRXhjZXB0aW9uKHN0YXRlLCBzY29w
ZSwgaW1wbC5wb3N0TWVzc2FnZShtZXNzYWdlLnJlbGVhc2VOb25OdWxsKCksIFdURk1vdmUobWVz
c2FnZVBvcnRzKSwgdGFyZ2V0T3JpZ2luLCBjYWxsZXJET01XaW5kb3coJnN0YXRlKSkpOworICAg
IGF1dG8qIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3Qq
PihzdGF0ZS5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7
CisgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KQorICAgICAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKKyAgICBwcm9wYWdhdGVFeGNlcHRpb24oc3RhdGUsIHNjb3BlLCBpbXBsLnBvc3RN
ZXNzYWdlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBtZXNzYWdlLnJlbGVhc2VOb25OdWxsKCks
IFdURk1vdmUobWVzc2FnZVBvcnRzKSwgdGFyZ2V0T3JpZ2luLCBjYWxsZXJET01XaW5kb3coJnN0
YXRlKSkpOwogCiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1N0eWxlU2hlZXQuY3BwCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2MCw3ICsyNjAsNyBA
QCBib29sIENTU1N0eWxlU2hlZXQ6OmNhbkFjY2Vzc1J1bGVzKCkgY29uCiAgICAgRG9jdW1lbnQq
IGRvY3VtZW50ID0gb3duZXJEb2N1bWVudCgpOwogICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAg
IHJldHVybiB0cnVlOwotICAgIHJldHVybiBkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS0+Y2Fu
UmVxdWVzdChiYXNlVVJMKTsKKyAgICByZXR1cm4gZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkt
PmNhblJlcXVlc3QoYmFzZVVSTCwgZG9jdW1lbnQtPnNjaGVtZVJlZ2lzdHJ5KCkpOwogfQogCiBS
ZWZQdHI8Q1NTUnVsZUxpc3Q+IENTU1N0eWxlU2hlZXQ6OnJ1bGVzKCkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3Mv
UnVsZVNldC5jcHAJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9SdWxl
U2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAxLDcgKzQwMSw3IEBAIHZvaWQgUnVsZVNldDo6
YWRkUnVsZXNGcm9tU2hlZXQoU3R5bGVTaGUKICAgICAgICAgICAgIGFkZFJ1bGVzRnJvbVNoZWV0
KCpydWxlLT5zdHlsZVNoZWV0KCksIG1lZGl1bSwgcmVzb2x2ZXIpOwogICAgIH0KIAotICAgIGJv
b2wgaGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbiA9IHJlc29sdmVyICYmIHJlc29sdmVyLT5kb2N1
bWVudCgpLnNlY3VyaXR5T3JpZ2luKCktPmNhblJlcXVlc3Qoc2hlZXQuYmFzZVVSTCgpKTsKKyAg
ICBib29sIGhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4gPSByZXNvbHZlciAmJiByZXNvbHZlci0+
ZG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpLT5jYW5SZXF1ZXN0KHNoZWV0LmJhc2VVUkwoKSwg
cmVzb2x2ZXItPmRvY3VtZW50KCkuc2NoZW1lUmVnaXN0cnkoKSk7CiAgICAgQWRkUnVsZUZsYWdz
IGFkZFJ1bGVGbGFncyA9IHN0YXRpY19jYXN0PEFkZFJ1bGVGbGFncz4oKGhhc0RvY3VtZW50U2Vj
dXJpdHlPcmlnaW4gPyBSdWxlSGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbiA6IDApKTsKIAogICAg
IC8vIEZJWE1FOiBTa2lwIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGNoZWNrIHdoZW4gc3R5bGVz
aGVldCBpcyBpbiBhIHVzZXIgYWdlbnQgc2hhZG93IHRyZWUuCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmNwcAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMw
LDYgKzMwLDcgQEAKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1
ZGUgIlBhZ2VDb25zb2xlQ2xpZW50LmgiCisjaW5jbHVkZSAiUGFnZVNjaGVtZVJlZ2lzdHJ5Lmgi
CiAjaW5jbHVkZSAiUnVsZVNldC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5j
bHVkZSAiU3R5bGVQcm9wZXJ0aWVzLmgiCkBAIC0zMTEsNyArMzEyLDcgQEAgY29uc3QgQXRvbWlj
U3RyaW5nJiBTdHlsZVNoZWV0Q29udGVudHM6OgogCiB2b2lkIFN0eWxlU2hlZXRDb250ZW50czo6
cGFyc2VBdXRob3JTdHlsZVNoZWV0KGNvbnN0IENhY2hlZENTU1N0eWxlU2hlZXQqIGNhY2hlZFN0
eWxlU2hlZXQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbikKIHsKLSAgICBi
b29sIGlzU2FtZU9yaWdpblJlcXVlc3QgPSBzZWN1cml0eU9yaWdpbiAmJiBzZWN1cml0eU9yaWdp
bi0+Y2FuUmVxdWVzdChiYXNlVVJMKCkpOworICAgIGJvb2wgaXNTYW1lT3JpZ2luUmVxdWVzdCA9
IHNlY3VyaXR5T3JpZ2luICYmIHNlY3VyaXR5T3JpZ2luLT5jYW5SZXF1ZXN0KGJhc2VVUkwoKSwg
UGFnZVNjaGVtZVJlZ2lzdHJ5OjpjcmVhdGUoKSk7CiAgICAgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6
TUlNRVR5cGVDaGVjayBtaW1lVHlwZUNoZWNrID0gaXNTdHJpY3RQYXJzZXJNb2RlKG1fcGFyc2Vy
Q29udGV4dC5tb2RlKSB8fCAhaXNTYW1lT3JpZ2luUmVxdWVzdCA/IENhY2hlZENTU1N0eWxlU2hl
ZXQ6Ok1JTUVUeXBlQ2hlY2s6OlN0cmljdCA6IENhY2hlZENTU1N0eWxlU2hlZXQ6Ok1JTUVUeXBl
Q2hlY2s6OkxheDsKICAgICBib29sIGhhc1ZhbGlkTUlNRVR5cGUgPSB0cnVlOwogICAgIFN0cmlu
ZyBzaGVldFRleHQgPSBjYWNoZWRTdHlsZVNoZWV0LT5zaGVldFRleHQobWltZVR5cGVDaGVjaywg
Jmhhc1ZhbGlkTUlNRVR5cGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVu
dGF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50
YXRpb24uY3BwCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1w
bGVtZW50YXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OCwxOCArOTgsMTggQEAgRXhjZXB0
aW9uT3I8UmVmPERvY3VtZW50VHlwZT4+IERPTUltcGxlbQogICAgIHJldHVybiBEb2N1bWVudFR5
cGU6OmNyZWF0ZShtX2RvY3VtZW50LCBxdWFsaWZpZWROYW1lLCBwdWJsaWNJZCwgc3lzdGVtSWQp
OwogfQogCi1zdGF0aWMgaW5saW5lIFJlZjxYTUxEb2N1bWVudD4gY3JlYXRlWE1MRG9jdW1lbnQo
Y29uc3QgU3RyaW5nJiBuYW1lc3BhY2VVUkkpCitzdGF0aWMgaW5saW5lIFJlZjxYTUxEb2N1bWVu
dD4gY3JlYXRlWE1MRG9jdW1lbnQoY29uc3QgU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IFBh
Z2VTY2hlbWVSZWdpc3RyeSYgc2NoZW1lUmVnaXN0cnkpCiB7CiAgICAgaWYgKG5hbWVzcGFjZVVS
SSA9PSBTVkdOYW1lczo6c3ZnTmFtZXNwYWNlVVJJKQotICAgICAgICByZXR1cm4gU1ZHRG9jdW1l
bnQ6OmNyZWF0ZShudWxscHRyLCBVUkwoKSk7CisgICAgICAgIHJldHVybiBTVkdEb2N1bWVudDo6
Y3JlYXRlKG51bGxwdHIsIFVSTCgpLCBzY2hlbWVSZWdpc3RyeSk7CiAgICAgaWYgKG5hbWVzcGFj
ZVVSSSA9PSBIVE1MTmFtZXM6OnhodG1sTmFtZXNwYWNlVVJJKQotICAgICAgICByZXR1cm4gWE1M
RG9jdW1lbnQ6OmNyZWF0ZVhIVE1MKG51bGxwdHIsIFVSTCgpKTsKLSAgICByZXR1cm4gWE1MRG9j
dW1lbnQ6OmNyZWF0ZShudWxscHRyLCBVUkwoKSk7CisgICAgICAgIHJldHVybiBYTUxEb2N1bWVu
dDo6Y3JlYXRlWEhUTUwobnVsbHB0ciwgVVJMKCksIHNjaGVtZVJlZ2lzdHJ5KTsKKyAgICByZXR1
cm4gWE1MRG9jdW1lbnQ6OmNyZWF0ZShudWxscHRyLCBVUkwoKSwgc2NoZW1lUmVnaXN0cnkpOwog
fQogCiBFeGNlcHRpb25PcjxSZWY8WE1MRG9jdW1lbnQ+PiBET01JbXBsZW1lbnRhdGlvbjo6Y3Jl
YXRlRG9jdW1lbnQoY29uc3QgU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IFN0cmluZyYgcXVh
bGlmaWVkTmFtZSwgRG9jdW1lbnRUeXBlKiBkb2N1bWVudFR5cGUpCiB7Ci0gICAgYXV0byBkb2N1
bWVudCA9IGNyZWF0ZVhNTERvY3VtZW50KG5hbWVzcGFjZVVSSSk7CisgICAgYXV0byBkb2N1bWVu
dCA9IGNyZWF0ZVhNTERvY3VtZW50KG5hbWVzcGFjZVVSSSwgbV9kb2N1bWVudC5zY2hlbWVSZWdp
c3RyeSgpKTsKICAgICBkb2N1bWVudC0+c2V0Q29udGV4dERvY3VtZW50KG1fZG9jdW1lbnQuY29u
dGV4dERvY3VtZW50KCkpOwogICAgIGRvY3VtZW50LT5zZXRTZWN1cml0eU9yaWdpblBvbGljeSht
X2RvY3VtZW50LnNlY3VyaXR5T3JpZ2luUG9saWN5KCkpOwogCkBAIC0xNDAsNyArMTQwLDcgQEAg
UmVmPENTU1N0eWxlU2hlZXQ+IERPTUltcGxlbWVudGF0aW9uOjpjcgogCiBSZWY8SFRNTERvY3Vt
ZW50PiBET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlSFRNTERvY3VtZW50KGNvbnN0IFN0cmluZyYg
dGl0bGUpCiB7Ci0gICAgYXV0byBkb2N1bWVudCA9IEhUTUxEb2N1bWVudDo6Y3JlYXRlKG51bGxw
dHIsIFVSTCgpKTsKKyAgICBhdXRvIGRvY3VtZW50ID0gSFRNTERvY3VtZW50OjpjcmVhdGUobnVs
bHB0ciwgVVJMKCksIG1fZG9jdW1lbnQuc2NoZW1lUmVnaXN0cnkoKSk7CiAgICAgZG9jdW1lbnQt
Pm9wZW4oKTsKICAgICBkb2N1bWVudC0+d3JpdGUoIjwhZG9jdHlwZSBodG1sPjxodG1sPjxoZWFk
PjwvaGVhZD48Ym9keT48L2JvZHk+PC9odG1sPiIpOwogICAgIGlmICghdGl0bGUuaXNOdWxsKCkp
IHsKQEAgLTE1NCwyNiArMTU0LDI2IEBAIFJlZjxIVE1MRG9jdW1lbnQ+IERPTUltcGxlbWVudGF0
aW9uOjpjcmUKICAgICByZXR1cm4gZG9jdW1lbnQ7CiB9CiAKLVJlZjxEb2N1bWVudD4gRE9NSW1w
bGVtZW50YXRpb246OmNyZWF0ZURvY3VtZW50KGNvbnN0IFN0cmluZyYgdHlwZSwgRnJhbWUqIGZy
YW1lLCBjb25zdCBVUkwmIHVybCkKK1JlZjxEb2N1bWVudD4gRE9NSW1wbGVtZW50YXRpb246OmNy
ZWF0ZURvY3VtZW50KGNvbnN0IFN0cmluZyYgdHlwZSwgRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwm
IHVybCwgY29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5JiBzY2hlbWVSZWdpc3RyeSkKIHsKICAgICAv
LyBGSVhNRTogQ29uZnVzaW5nIHRvIGhhdmUgdGhpcyBoZXJlIHdpdGggcHVibGljIERPTSBBUElz
IGZvciBjcmVhdGluZyBkb2N1bWVudHMuIFRoaXMgaXMgZGlmZmVyZW50IGVub3VnaCB0aGF0IGl0
IHNob3VsZCBwZXJoYXBzIGJlIG1vdmVkLgogICAgIC8vIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIGlz
IGRvaW5nIGNhc2UgaW5zZW5zaXRpdmUgY29tcGFyaXNvbnMgb24gTUlNRSB0eXBlcy4gU2hvdWxk
IGRvIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlIGluc3RlYWQuCiAKICAgICAvLyBQbHVn
aW5zIGNhbm5vdCB0YWtlIEhUTUwgYW5kIFhIVE1MIGZyb20gdXMsIGFuZCB3ZSBkb24ndCBldmVu
IG5lZWQgdG8gaW5pdGlhbGl6ZSB0aGUgcGx1Z2luIGRhdGFiYXNlIGZvciB0aG9zZS4KICAgICBp
ZiAodHlwZSA9PSAidGV4dC9odG1sIikKLSAgICAgICAgcmV0dXJuIEhUTUxEb2N1bWVudDo6Y3Jl
YXRlKGZyYW1lLCB1cmwpOworICAgICAgICByZXR1cm4gSFRNTERvY3VtZW50OjpjcmVhdGUoZnJh
bWUsIHVybCwgc2NoZW1lUmVnaXN0cnkpOwogICAgIGlmICh0eXBlID09ICJhcHBsaWNhdGlvbi94
aHRtbCt4bWwiKQotICAgICAgICByZXR1cm4gWE1MRG9jdW1lbnQ6OmNyZWF0ZVhIVE1MKGZyYW1l
LCB1cmwpOworICAgICAgICByZXR1cm4gWE1MRG9jdW1lbnQ6OmNyZWF0ZVhIVE1MKGZyYW1lLCB1
cmwsIHNjaGVtZVJlZ2lzdHJ5KTsKIAogI2lmIEVOQUJMRShGVFBESVIpCiAgICAgLy8gUGx1Z2lu
cyBjYW5ub3QgdGFrZSBGVFAgZnJvbSB1cyBlaXRoZXIKICAgICBpZiAodHlwZSA9PSAiYXBwbGlj
YXRpb24veC1mdHAtZGlyZWN0b3J5IikKLSAgICAgICAgcmV0dXJuIEZUUERpcmVjdG9yeURvY3Vt
ZW50OjpjcmVhdGUoZnJhbWUsIHVybCk7CisgICAgICAgIHJldHVybiBGVFBEaXJlY3RvcnlEb2N1
bWVudDo6Y3JlYXRlKGZyYW1lLCB1cmwsIHNjaGVtZVJlZ2lzdHJ5KTsKICNlbmRpZgogCiAgICAg
Ly8gSWYgd2Ugd2FudCB0byB1c2VJbWFnZURvY3VtZW50Rm9yU3ViZnJhbWVQREYsIHdlJ2xsIGxl
dCB0aGF0IG92ZXJyaWRlIHBsdWdpbiBzdXBwb3J0LgogICAgIGlmIChmcmFtZSAmJiAhZnJhbWUt
PmlzTWFpbkZyYW1lKCkgJiYgTUlNRVR5cGVSZWdpc3RyeTo6aXNQREZNSU1FVHlwZSh0eXBlKSAm
JiBmcmFtZS0+c2V0dGluZ3MoKS51c2VJbWFnZURvY3VtZW50Rm9yU3ViZnJhbWVQREYoKSkKLSAg
ICAgICAgcmV0dXJuIEltYWdlRG9jdW1lbnQ6OmNyZWF0ZSgqZnJhbWUsIHVybCk7CisgICAgICAg
IHJldHVybiBJbWFnZURvY3VtZW50OjpjcmVhdGUoKmZyYW1lLCB1cmwsIGZyYW1lLT5zY2hlbWVS
ZWdpc3RyeSgpKTsKIAogICAgIFBsdWdpbkRhdGEqIHBsdWdpbkRhdGEgPSBudWxscHRyOwogICAg
IGF1dG8gYWxsb3dlZFBsdWdpblR5cGVzID0gUGx1Z2luRGF0YTo6T25seUFwcGxpY2F0aW9uUGx1
Z2luczsKQEAgLTE4Nyw5ICsxODcsOSBAQCBSZWY8RG9jdW1lbnQ+IERPTUltcGxlbWVudGF0aW9u
OjpjcmVhdGVECiAgICAgLy8gUERGIGlzIG9uZSBpbWFnZSB0eXBlIGZvciB3aGljaCBhIHBsdWdp
biBjYW4gb3ZlcnJpZGUgYnVpbHQtaW4gc3VwcG9ydC4KICAgICAvLyBXZSBkbyBub3Qgd2FudCBR
dWlja1RpbWUgdG8gdGFrZSBvdmVyIGFsbCBpbWFnZSB0eXBlcywgb2J2aW91c2x5LgogICAgIGlm
IChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1BERk9yUG9zdFNjcmlwdE1JTUVUeXBlKHR5cGUpICYmIHBs
dWdpbkRhdGEgJiYgcGx1Z2luRGF0YS0+c3VwcG9ydHNXZWJWaXNpYmxlTWltZVR5cGUodHlwZSwg
YWxsb3dlZFBsdWdpblR5cGVzKSkKLSAgICAgICAgcmV0dXJuIFBsdWdpbkRvY3VtZW50OjpjcmVh
dGUoZnJhbWUsIHVybCk7CisgICAgICAgIHJldHVybiBQbHVnaW5Eb2N1bWVudDo6Y3JlYXRlKGZy
YW1lLCB1cmwsIHNjaGVtZVJlZ2lzdHJ5KTsKICAgICBpZiAoSW1hZ2U6OnN1cHBvcnRzVHlwZSh0
eXBlKSkKLSAgICAgICAgcmV0dXJuIEltYWdlRG9jdW1lbnQ6OmNyZWF0ZSgqZnJhbWUsIHVybCk7
CisgICAgICAgIHJldHVybiBJbWFnZURvY3VtZW50OjpjcmVhdGUoKmZyYW1lLCB1cmwsIHNjaGVt
ZVJlZ2lzdHJ5KTsKIAogI2lmIEVOQUJMRShWSURFTykKICAgICAvLyBDaGVjayB0byBzZWUgaWYg
dGhlIHR5cGUgY2FuIGJlIHBsYXllZCBieSBvdXIgTWVkaWFQbGF5ZXIsIGlmIHNvIGNyZWF0ZSBh
IE1lZGlhRG9jdW1lbnQKQEAgLTE5OSwyNCArMTk5LDI0IEBAIFJlZjxEb2N1bWVudD4gRE9NSW1w
bGVtZW50YXRpb246OmNyZWF0ZUQKICAgICBwYXJhbWV0ZXJzLnR5cGUgPSB0eXBlOwogICAgIHBh
cmFtZXRlcnMudXJsID0gdXJsOwogICAgIGlmIChNZWRpYVBsYXllcjo6c3VwcG9ydHNUeXBlKHBh
cmFtZXRlcnMsICZjbGllbnQpKQotICAgICAgICByZXR1cm4gTWVkaWFEb2N1bWVudDo6Y3JlYXRl
KGZyYW1lLCB1cmwpOworICAgICAgICByZXR1cm4gTWVkaWFEb2N1bWVudDo6Y3JlYXRlKGZyYW1l
LCB1cmwsIHNjaGVtZVJlZ2lzdHJ5KTsKICNlbmRpZgogCiAgICAgLy8gRXZlcnl0aGluZyBlbHNl
IGV4Y2VwdCB0ZXh0L3BsYWluIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHBsdWdpbnMuIEluIHBhcnRp
Y3VsYXIsIEFkb2JlIFNWRyBWaWV3ZXIgc2hvdWxkIGJlIHVzZWQgZm9yIFNWRywgaWYgaW5zdGFs
bGVkLgogICAgIC8vIERpc2FsbG93aW5nIHBsdWctaW5zIHRvIHVzZSB0ZXh0L3BsYWluIHByZXZl
bnRzIHBsdWctaW5zIGZyb20gaGlqYWNraW5nIGEgZnVuZGFtZW50YWwgdHlwZSB0aGF0IHRoZSBi
cm93c2VyIGlzIGV4cGVjdGVkIHRvIGhhbmRsZSwKICAgICAvLyBhbmQgYWxzbyBzZXJ2ZXMgYXMg
YW4gb3B0aW1pemF0aW9uIHRvIHByZXZlbnQgbG9hZGluZyB0aGUgcGx1Zy1pbiBkYXRhYmFzZSBp
biB0aGUgY29tbW9uIGNhc2UuCiAgICAgaWYgKHR5cGUgIT0gInRleHQvcGxhaW4iICYmICgocGx1
Z2luRGF0YSAmJiBwbHVnaW5EYXRhLT5zdXBwb3J0c1dlYlZpc2libGVNaW1lVHlwZSh0eXBlLCBh
bGxvd2VkUGx1Z2luVHlwZXMpKSB8fCAoZnJhbWUgJiYgZnJhbWUtPmxvYWRlcigpLmNsaWVudCgp
LnNob3VsZEFsd2F5c1VzZVBsdWdpbkRvY3VtZW50KHR5cGUpKSkpCi0gICAgICAgIHJldHVybiBQ
bHVnaW5Eb2N1bWVudDo6Y3JlYXRlKGZyYW1lLCB1cmwpOworICAgICAgICByZXR1cm4gUGx1Z2lu
RG9jdW1lbnQ6OmNyZWF0ZShmcmFtZSwgdXJsLCBzY2hlbWVSZWdpc3RyeSk7CiAgICAgaWYgKE1J
TUVUeXBlUmVnaXN0cnk6OmlzVGV4dE1JTUVUeXBlKHR5cGUpKQotICAgICAgICByZXR1cm4gVGV4
dERvY3VtZW50OjpjcmVhdGUoZnJhbWUsIHVybCk7CisgICAgICAgIHJldHVybiBUZXh0RG9jdW1l
bnQ6OmNyZWF0ZShmcmFtZSwgdXJsLCBzY2hlbWVSZWdpc3RyeSk7CiAKICAgICBpZiAodHlwZSA9
PSAiaW1hZ2Uvc3ZnK3htbCIpCi0gICAgICAgIHJldHVybiBTVkdEb2N1bWVudDo6Y3JlYXRlKGZy
YW1lLCB1cmwpOworICAgICAgICByZXR1cm4gU1ZHRG9jdW1lbnQ6OmNyZWF0ZShmcmFtZSwgdXJs
LCBzY2hlbWVSZWdpc3RyeSk7CiAKICAgICBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNYTUxNSU1F
VHlwZSh0eXBlKSkKLSAgICAgICAgcmV0dXJuIFhNTERvY3VtZW50OjpjcmVhdGUoZnJhbWUsIHVy
bCk7CisgICAgICAgIHJldHVybiBYTUxEb2N1bWVudDo6Y3JlYXRlKGZyYW1lLCB1cmwsIHNjaGVt
ZVJlZ2lzdHJ5KTsKIAotICAgIHJldHVybiBIVE1MRG9jdW1lbnQ6OmNyZWF0ZShmcmFtZSwgdXJs
KTsKKyAgICByZXR1cm4gSFRNTERvY3VtZW50OjpjcmVhdGUoZnJhbWUsIHVybCwgc2NoZW1lUmVn
aXN0cnkpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRp
b24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24u
aAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0
aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBib29sIGhhc0ZlYXR1cmUoKSB7IHJldHVybiB0cnVlOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFJlZjxDU1NTdHlsZVNoZWV0PiBjcmVhdGVDU1NTdHlsZVNoZWV0KGNvbnN0IFN0cmlu
ZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgbWVkaWEpOwogCi0gICAgc3RhdGljIFJlZjxEb2N1bWVu
dD4gY3JlYXRlRG9jdW1lbnQoY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgRnJhbWUqLCBjb25zdCBV
UkwmKTsKKyAgICBzdGF0aWMgUmVmPERvY3VtZW50PiBjcmVhdGVEb2N1bWVudChjb25zdCBTdHJp
bmcmIE1JTUVUeXBlLCBGcmFtZSosIGNvbnN0IFVSTCYsIGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3Ry
eSYpOwogCiBwcml2YXRlOgogICAgIERvY3VtZW50JiBtX2RvY3VtZW50OwpJbmRleDogU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMsNiArMTIzLDcgQEAKICNpbmNsdWRl
ICJPdmVyZmxvd0V2ZW50LmgiCiAjaW5jbHVkZSAiUGFnZUNvbnNvbGVDbGllbnQuaCIKICNpbmNs
dWRlICJQYWdlR3JvdXAuaCIKKyNpbmNsdWRlICJQYWdlU2NoZW1lUmVnaXN0cnkuaCIKICNpbmNs
dWRlICJQYWdlVHJhbnNpdGlvbkV2ZW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Mb2NhbGUuaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaCIKQEAgLTQyNyw3ICs0Mjgs
NyBAQCBIYXNoU2V0PERvY3VtZW50Kj4mIERvY3VtZW50OjphbGxEb2N1bWVuCiAgICAgcmV0dXJu
IGRvY3VtZW50czsKIH0KIAotRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3Qg
VVJMJiB1cmwsIHVuc2lnbmVkIGRvY3VtZW50Q2xhc3NlcywgdW5zaWduZWQgY29uc3RydWN0aW9u
RmxhZ3MpCitEb2N1bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCwg
Y29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5JiBzY2hlbWVSZWdpc3RyeSwgdW5zaWduZWQgZG9jdW1l
bnRDbGFzc2VzLCB1bnNpZ25lZCBjb25zdHJ1Y3Rpb25GbGFncykKICAgICA6IENvbnRhaW5lck5v
ZGUoKnRoaXMsIENyZWF0ZURvY3VtZW50KQogICAgICwgVHJlZVNjb3BlKCp0aGlzKQogI2lmIEVO
QUJMRShJT1NfVE9VQ0hfRVZFTlRTKQpAQCAtNDM5LDcgKzQ0MCw3IEBAIERvY3VtZW50OjpEb2N1
bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IFUKICAgICAsIG1faWdub3JlUGVuZGluZ1N0eWxlc2hl
ZXRzKGZhbHNlKQogICAgICwgbV9wZW5kaW5nU2hlZXRMYXlvdXQoTm9MYXlvdXRXaXRoUGVuZGlu
Z1NoZWV0cykKICAgICAsIG1fZnJhbWUoZnJhbWUpCi0gICAgLCBtX2NhY2hlZFJlc291cmNlTG9h
ZGVyKG1fZnJhbWUgPyBSZWY8Q2FjaGVkUmVzb3VyY2VMb2FkZXI+KG1fZnJhbWUtPmxvYWRlcigp
LmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPmNhY2hlZFJlc291cmNlTG9hZGVyKCkpIDogQ2FjaGVk
UmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShudWxscHRyKSkKKyAgICAsIG1fY2FjaGVkUmVzb3VyY2VM
b2FkZXIobV9mcmFtZSA/IFJlZjxDYWNoZWRSZXNvdXJjZUxvYWRlcj4obV9mcmFtZS0+bG9hZGVy
KCkuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKSkgOiBDYWNo
ZWRSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKG51bGxwdHIsIHNjaGVtZVJlZ2lzdHJ5KSkKICAgICAs
IG1fYWN0aXZlUGFyc2VyQ291bnQoMCkKICAgICAsIG1fd2VsbEZvcm1lZChmYWxzZSkKICAgICAs
IG1fcHJpbnRpbmcoZmFsc2UpCkBAIC01MzMsNiArNTM0LDcgQEAgRG9jdW1lbnQ6OkRvY3VtZW50
KEZyYW1lKiBmcmFtZSwgY29uc3QgVQogI2lmIEVOQUJMRShXRUJfU09DS0VUUykKICAgICAsIG1f
c29ja2V0UHJvdmlkZXIocGFnZSgpID8gJnBhZ2UoKS0+c29ja2V0UHJvdmlkZXIoKSA6IG51bGxw
dHIpCiAjZW5kaWYKKyAgICAsIG1fc2NoZW1lUmVnaXN0cnkoc2NoZW1lUmVnaXN0cnkpCiB7CiAg
ICAgYWxsRG9jdW1lbnRzKCkuYWRkKHRoaXMpOwogCkBAIC01NzYsNyArNTc4LDcgQEAgc3RhdGlj
IGJvb2wgaXNBdHRyaWJ1dGVPbkFsbE93bmVycyhjb25zdAogCiBSZWY8RG9jdW1lbnQ+IERvY3Vt
ZW50OjpjcmVhdGUoRG9jdW1lbnQmIGNvbnRleHREb2N1bWVudCkKIHsKLSAgICBhdXRvIGRvY3Vt
ZW50ID0gYWRvcHRSZWYoKm5ldyBEb2N1bWVudChudWxscHRyLCBVUkwoKSkpOworICAgIGF1dG8g
ZG9jdW1lbnQgPSBhZG9wdFJlZigqbmV3IERvY3VtZW50KG51bGxwdHIsIFVSTCgpLCBjb250ZXh0
RG9jdW1lbnQuc2NoZW1lUmVnaXN0cnkoKSkpOwogICAgIGRvY3VtZW50LT5zZXRDb250ZXh0RG9j
dW1lbnQoY29udGV4dERvY3VtZW50KTsKICAgICBkb2N1bWVudC0+c2V0U2VjdXJpdHlPcmlnaW5Q
b2xpY3koY29udGV4dERvY3VtZW50LnNlY3VyaXR5T3JpZ2luUG9saWN5KCkpOwogICAgIHJldHVy
biBkb2N1bWVudDsKQEAgLTMzOTksMTAgKzM0MDEsMTAgQEAgUmVmPERvY3VtZW50PiBEb2N1bWVu
dDo6Y2xvbmVEb2N1bWVudFdpdAogewogICAgIGlmIChpc1hNTERvY3VtZW50KCkpIHsKICAgICAg
ICAgaWYgKGlzWEhUTUxEb2N1bWVudCgpKQotICAgICAgICAgICAgcmV0dXJuIFhNTERvY3VtZW50
OjpjcmVhdGVYSFRNTChudWxscHRyLCB1cmwoKSk7Ci0gICAgICAgIHJldHVybiBYTUxEb2N1bWVu
dDo6Y3JlYXRlKG51bGxwdHIsIHVybCgpKTsKKyAgICAgICAgICAgIHJldHVybiBYTUxEb2N1bWVu
dDo6Y3JlYXRlWEhUTUwobnVsbHB0ciwgdXJsKCksIHNjaGVtZVJlZ2lzdHJ5KCkpOworICAgICAg
ICByZXR1cm4gWE1MRG9jdW1lbnQ6OmNyZWF0ZShudWxscHRyLCB1cmwoKSwgc2NoZW1lUmVnaXN0
cnkoKSk7CiAgICAgfQotICAgIHJldHVybiBjcmVhdGUobnVsbHB0ciwgdXJsKCkpOworICAgIHJl
dHVybiBjcmVhdGUobnVsbHB0ciwgdXJsKCksIHNjaGVtZVJlZ2lzdHJ5KCkpOwogfQogCiB2b2lk
IERvY3VtZW50OjpjbG9uZURhdGFGcm9tRG9jdW1lbnQoY29uc3QgRG9jdW1lbnQmIG90aGVyKQpA
QCAtNDgxMiw3ICs0ODE0LDcgQEAgdm9pZCBEb2N1bWVudDo6YXBwbHlYU0xUcmFuc2Zvcm0oUHJv
Y2VzcwogICAgICAgICByZXR1cm47CiAgICAgLy8gRklYTUU6IElmIHRoZSB0cmFuc2Zvcm0gZmFp
bGVkIHdlIHNob3VsZCBwcm9iYWJseSByZXBvcnQgYW4gZXJyb3IgKGxpa2UgTW96aWxsYSBkb2Vz
KS4KICAgICBGcmFtZSogb3duZXJGcmFtZSA9IGZyYW1lKCk7Ci0gICAgcHJvY2Vzc29yLT5jcmVh
dGVEb2N1bWVudEZyb21Tb3VyY2UobmV3U291cmNlLCByZXN1bHRFbmNvZGluZywgcmVzdWx0TUlN
RVR5cGUsIHRoaXMsIG93bmVyRnJhbWUpOworICAgIHByb2Nlc3Nvci0+Y3JlYXRlRG9jdW1lbnRG
cm9tU291cmNlKG5ld1NvdXJjZSwgcmVzdWx0RW5jb2RpbmcsIHJlc3VsdE1JTUVUeXBlLCB0aGlz
LCBvd25lckZyYW1lLCBzY2hlbWVSZWdpc3RyeSgpKTsKIH0KIAogdm9pZCBEb2N1bWVudDo6c2V0
VHJhbnNmb3JtU291cmNlKHN0ZDo6dW5pcXVlX3B0cjxUcmFuc2Zvcm1Tb3VyY2U+IHNvdXJjZSkK
QEAgLTUxMTQsNyArNTExNiw3IEBAIHZvaWQgRG9jdW1lbnQ6OmluaXRTZWN1cml0eUNvbnRleHQo
KQogICAgIGlmIChzaG91bGRFbmZvcmNlQ29udGVudERpc3Bvc2l0aW9uQXR0YWNobWVudFNhbmRi
b3goKSkKICAgICAgICAgYXBwbHlDb250ZW50RGlzcG9zaXRpb25BdHRhY2htZW50U2FuZGJveCgp
OwogCi0gICAgc2V0U2VjdXJpdHlPcmlnaW5Qb2xpY3koU2VjdXJpdHlPcmlnaW5Qb2xpY3k6OmNy
ZWF0ZShpc1NhbmRib3hlZChTYW5kYm94T3JpZ2luKSA/IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVV
bmlxdWUoKSA6IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUobV91cmwpKSk7CisgICAgc2V0U2VjdXJp
dHlPcmlnaW5Qb2xpY3koU2VjdXJpdHlPcmlnaW5Qb2xpY3k6OmNyZWF0ZShpc1NhbmRib3hlZChT
YW5kYm94T3JpZ2luKSA/IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVVbmlxdWUoKSA6IFNlY3VyaXR5
T3JpZ2luOjpjcmVhdGUobV91cmwsIHNjaGVtZVJlZ2lzdHJ5KCkpKSk7CiAgICAgc2V0Q29udGVu
dFNlY3VyaXR5UG9saWN5KHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5Pigq
dGhpcykpOwogCiAjaWYgVVNFKFFVSUNLX0xPT0spCkBAIC02NjU3LDkgKzY2NTksOSBAQCBEb2N1
bWVudCYgRG9jdW1lbnQ6OmVuc3VyZVRlbXBsYXRlRG9jdW1lCiAgICAgICAgIHJldHVybiBjb25z
dF9jYXN0PERvY3VtZW50Jj4oKmRvY3VtZW50KTsKIAogICAgIGlmIChpc0hUTUxEb2N1bWVudCgp
KQotICAgICAgICBtX3RlbXBsYXRlRG9jdW1lbnQgPSBIVE1MRG9jdW1lbnQ6OmNyZWF0ZShudWxs
cHRyLCBibGFua1VSTCgpKTsKKyAgICAgICAgbV90ZW1wbGF0ZURvY3VtZW50ID0gSFRNTERvY3Vt
ZW50OjpjcmVhdGUobnVsbHB0ciwgYmxhbmtVUkwoKSwgc2NoZW1lUmVnaXN0cnkoKSk7CiAgICAg
ZWxzZQotICAgICAgICBtX3RlbXBsYXRlRG9jdW1lbnQgPSBEb2N1bWVudDo6Y3JlYXRlKG51bGxw
dHIsIGJsYW5rVVJMKCkpOworICAgICAgICBtX3RlbXBsYXRlRG9jdW1lbnQgPSBEb2N1bWVudDo6
Y3JlYXRlKG51bGxwdHIsIGJsYW5rVVJMKCksIHNjaGVtZVJlZ2lzdHJ5KCkpOwogCiAgICAgbV90
ZW1wbGF0ZURvY3VtZW50LT5zZXRDb250ZXh0RG9jdW1lbnQoY29udGV4dERvY3VtZW50KCkpOwog
ICAgIG1fdGVtcGxhdGVEb2N1bWVudC0+c2V0VGVtcGxhdGVEb2N1bWVudEhvc3QodGhpcyk7IC8v
IGJhbGFuY2VkIGluIGR0b3IuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkocmV2aXNpb24gMjA4
Mzk4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTI5MCwxNCArMjkwLDE0IEBAIGNsYXNzIERvY3VtZW50CiAgICAgLCBwdWJsaWMgRm9udFNlbGVj
dG9yQ2xpZW50CiAgICAgLCBwdWJsaWMgU3VwcGxlbWVudGFibGU8RG9jdW1lbnQ+IHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPERvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBjb25zdCBV
UkwmIHVybCkKKyAgICBzdGF0aWMgUmVmPERvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBj
b25zdCBVUkwmIHVybCwgY29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5JiBzY2hlbWVSZWdpc3RyeSkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERvY3VtZW50KGZyYW1lLCB1cmwp
KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRG9jdW1lbnQoZnJhbWUsIHVybCwgc2No
ZW1lUmVnaXN0cnkpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmPERvY3VtZW50PiBjcmVhdGVO
b25SZW5kZXJlZFBsYWNlaG9sZGVyKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCisgICAg
c3RhdGljIFJlZjxEb2N1bWVudD4gY3JlYXRlTm9uUmVuZGVyZWRQbGFjZWhvbGRlcihGcmFtZSog
ZnJhbWUsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnkmIHNjaGVtZVJl
Z2lzdHJ5KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRG9jdW1lbnQoZnJh
bWUsIHVybCwgRGVmYXVsdERvY3VtZW50Q2xhc3MsIE5vblJlbmRlcmVkUGxhY2Vob2xkZXIpKTsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRG9jdW1lbnQoZnJhbWUsIHVybCwgc2NoZW1l
UmVnaXN0cnksIERlZmF1bHREb2N1bWVudENsYXNzLCBOb25SZW5kZXJlZFBsYWNlaG9sZGVyKSk7
CiAgICAgfQogICAgIHN0YXRpYyBSZWY8RG9jdW1lbnQ+IGNyZWF0ZShEb2N1bWVudCYpOwogCkBA
IC02MzYsNiArNjM2LDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShXRUJfU09DS0VUUykKICAgICBT
b2NrZXRQcm92aWRlciogc29ja2V0UHJvdmlkZXIoKSBmaW5hbDsKICNlbmRpZgorICAgIGNvbnN0
IFBhZ2VTY2hlbWVSZWdpc3RyeSYgc2NoZW1lUmVnaXN0cnkoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX3NjaGVtZVJlZ2lzdHJ5LmdldCgpOyB9CiAKICAgICBib29sIGNhbk5hdmlnYXRlKEZyYW1l
KiB0YXJnZXRGcmFtZSk7CiAgICAgRnJhbWUqIGZpbmRVbnNhZmVQYXJlbnRTY3JvbGxQcm9wYWdh
dGlvbkJvdW5kYXJ5KCk7CkBAIC0xMzAxLDcgKzEzMDIsNyBAQCBwdWJsaWM6CiAKIHByb3RlY3Rl
ZDoKICAgICBlbnVtIENvbnN0cnVjdGlvbkZsYWdzIHsgU3ludGhlc2l6ZWQgPSAxLCBOb25SZW5k
ZXJlZFBsYWNlaG9sZGVyID0gMSA8PCAxIH07Ci0gICAgRG9jdW1lbnQoRnJhbWUqLCBjb25zdCBV
UkwmLCB1bnNpZ25lZCA9IERlZmF1bHREb2N1bWVudENsYXNzLCB1bnNpZ25lZCBjb25zdHJ1Y3Rp
b25GbGFncyA9IDApOworICAgIERvY3VtZW50KEZyYW1lKiwgY29uc3QgVVJMJiwgY29uc3QgUGFn
ZVNjaGVtZVJlZ2lzdHJ5JiwgdW5zaWduZWQgPSBEZWZhdWx0RG9jdW1lbnRDbGFzcywgdW5zaWdu
ZWQgY29uc3RydWN0aW9uRmxhZ3MgPSAwKTsKIAogICAgIHZvaWQgY2xlYXJYTUxWZXJzaW9uKCkg
eyBtX3htbFZlcnNpb24gPSBTdHJpbmcoKTsgfQogCkBAIC0xNzY0LDYgKzE3NjUsNyBAQCBwcml2
YXRlOgogI2lmIEVOQUJMRShXRUJfU09DS0VUUykKICAgICBSZWZQdHI8U29ja2V0UHJvdmlkZXI+
IG1fc29ja2V0UHJvdmlkZXI7CiAjZW5kaWYKKyAgICBSZWY8Y29uc3QgUGFnZVNjaGVtZVJlZ2lz
dHJ5PiBtX3NjaGVtZVJlZ2lzdHJ5OwogfTsKIAogaW5saW5lIHZvaWQgRG9jdW1lbnQ6Om5vdGlm
eVJlbW92ZVBlbmRpbmdTaGVldElmTmVlZGVkKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9T
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9k
b20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzU4LDcgKzM1OCw3IEBAIGJvb2wgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6c2FuaXRpemVT
Y3IKICAgICAgICAgQVNTRVJUKHNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5nKCkgPT0gY2FjaGVk
U2NyaXB0LT5vcmlnaW4oKS0+dG9TdHJpbmcoKSk7CiAgICAgICAgIGlmIChjYWNoZWRTY3JpcHQt
PmlzQ09SU1NhbWVPcmlnaW4oKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9IGVs
c2UgaWYgKHNlY3VyaXR5T3JpZ2luKCktPmNhblJlcXVlc3QoY29tcGxldGVVUkwoc291cmNlVVJM
KSkpCisgICAgfSBlbHNlIGlmIChzZWN1cml0eU9yaWdpbigpLT5jYW5SZXF1ZXN0KGNvbXBsZXRl
VVJMKHNvdXJjZVVSTCksIHNjaGVtZVJlZ2lzdHJ5KCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBlcnJvck1lc3NhZ2UgPSAiU2NyaXB0IGVycm9yLiI7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgJKHJldmlzaW9uIDIwODM5OCkKKysr
IFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTU3LDYgKzU3LDcgQEAgY2xhc3MgRGF0YWJhc2VDb250ZXh0OwogY2xhc3MgRXZlbnRR
dWV1ZTsKIGNsYXNzIEV2ZW50VGFyZ2V0OwogY2xhc3MgTWVzc2FnZVBvcnQ7CitjbGFzcyBQYWdl
U2NoZW1lUmVnaXN0cnk7CiBjbGFzcyBQdWJsaWNVUkxNYW5hZ2VyOwogY2xhc3MgUmVzb3VyY2VS
ZXF1ZXN0OwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CkBAIC05MSw2ICs5Miw3IEBAIHB1YmxpYzoK
ICNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCiAgICAgdmlydHVhbCBTb2NrZXRQcm92aWRlciogc29j
a2V0UHJvdmlkZXIoKSA9IDA7CiAjZW5kaWYKKyAgICB2aXJ0dWFsIGNvbnN0IFBhZ2VTY2hlbWVS
ZWdpc3RyeSYgc2NoZW1lUmVnaXN0cnkoKSBjb25zdCA9IDA7CiAKICAgICBib29sIHNhbml0aXpl
U2NyaXB0RXJyb3IoU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCYgbGluZU51bWJlciwgaW50JiBj
b2x1bW5OdW1iZXIsIFN0cmluZyYgc291cmNlVVJMLCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYg
ZXJyb3IsIENhY2hlZFNjcmlwdCogPSBudWxscHRyKTsKICAgICB2b2lkIHJlcG9ydEV4Y2VwdGlv
bihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5O
dW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBKU0M6OkV4Y2VwdGlvbiosIFJlZlB0cjxJ
bnNwZWN0b3I6OlNjcmlwdENhbGxTdGFjaz4mJiwgQ2FjaGVkU2NyaXB0KiA9IG51bGxwdHIpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL1NlY3VyaXR5Q29udGV4dC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZG9tL1NlY3VyaXR5Q29udGV4dC5jcHAJKHJldmlzaW9uIDIwODM5
OCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TZWN1cml0eUNvbnRleHQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgU2VjdXJpdHlDb250ZXh0OjpzZXRDb250ZW50U2Vj
dXJpdHkKICAgICBtX2NvbnRlbnRTZWN1cml0eVBvbGljeSA9IFdURk1vdmUoY29udGVudFNlY3Vy
aXR5UG9saWN5KTsKIH0KIAotYm9vbCBTZWN1cml0eUNvbnRleHQ6OmlzU2VjdXJlVHJhbnNpdGlv
blRvKGNvbnN0IFVSTCYgdXJsKSBjb25zdAorYm9vbCBTZWN1cml0eUNvbnRleHQ6OmlzU2VjdXJl
VHJhbnNpdGlvblRvKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnkmIHNj
aGVtZVJlZ2lzdHJ5KSBjb25zdAogewogICAgIC8vIElmIHdlIGhhdmVuJ3QgaW5pdGlhbGl6ZWQg
b3VyIHNlY3VyaXR5IG9yaWdpbiBieSBub3csIHRoaXMgaXMgcHJvYmFibHkKICAgICAvLyBhIG5l
dyB3aW5kb3cgY3JlYXRlZCB2aWEgdGhlIEFQSSAoaS5lLiwgdGhhdCBsYWNrcyBhbiBvcmlnaW4g
YW5kIGxhY2tzCkBAIC03Myw3ICs3Myw3IEBAIGJvb2wgU2VjdXJpdHlDb250ZXh0Ojppc1NlY3Vy
ZVRyYW5zaXRpb24KICAgICBpZiAoIWhhdmVJbml0aWFsaXplZFNlY3VyaXR5T3JpZ2luKCkpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgcmV0dXJuIHNlY3VyaXR5T3JpZ2luUG9saWN5KCkt
Pm9yaWdpbigpLmNhbkFjY2VzcyhTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHVybCkucHRyKCkpOwor
ICAgIHJldHVybiBzZWN1cml0eU9yaWdpblBvbGljeSgpLT5vcmlnaW4oKS5jYW5BY2Nlc3MoU2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZSh1cmwsIHNjaGVtZVJlZ2lzdHJ5KS5wdHIoKSk7CiB9CiAKIHZv
aWQgU2VjdXJpdHlDb250ZXh0OjplbmZvcmNlU2FuZGJveEZsYWdzKFNhbmRib3hGbGFncyBtYXNr
KQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1NlY3VyaXR5Q29udGV4dC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9TZWN1cml0eUNvbnRleHQuaAkocmV2aXNpb24gMjA4Mzk4
KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1NlY3VyaXR5Q29udGV4dC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMiw5ICszMiwxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvbnRl
bnRTZWN1cml0eVBvbGljeTsKK2NsYXNzIFBhZ2VTY2hlbWVSZWdpc3RyeTsKIGNsYXNzIFNlY3Vy
aXR5T3JpZ2luOwogY2xhc3MgU2VjdXJpdHlPcmlnaW5Qb2xpY3k7Ci1jbGFzcyBDb250ZW50U2Vj
dXJpdHlQb2xpY3k7CiBjbGFzcyBVUkw7CiAKIGVudW0gU2FuZGJveEZsYWcgewpAQCAtNTksNyAr
NjAsNyBAQCBwdWJsaWM6CiAgICAgU2FuZGJveEZsYWdzIHNhbmRib3hGbGFncygpIGNvbnN0IHsg
cmV0dXJuIG1fc2FuZGJveEZsYWdzOyB9CiAgICAgQ29udGVudFNlY3VyaXR5UG9saWN5KiBjb250
ZW50U2VjdXJpdHlQb2xpY3koKSB7IHJldHVybiBtX2NvbnRlbnRTZWN1cml0eVBvbGljeS5nZXQo
KTsgfQogCi0gICAgYm9vbCBpc1NlY3VyZVRyYW5zaXRpb25Ubyhjb25zdCBVUkwmKSBjb25zdDsK
KyAgICBib29sIGlzU2VjdXJlVHJhbnNpdGlvblRvKGNvbnN0IFVSTCYsIGNvbnN0IFBhZ2VTY2hl
bWVSZWdpc3RyeSYpIGNvbnN0OwogCiAgICAgdm9pZCBlbmZvcmNlU2FuZGJveEZsYWdzKFNhbmRi
b3hGbGFncyBtYXNrKTsKICAgICBib29sIGlzU2FuZGJveGVkKFNhbmRib3hGbGFncyBtYXNrKSBj
b25zdCB7IHJldHVybiBtX3NhbmRib3hGbGFncyAmIG1hc2s7IH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9YTUxEb2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Y
TUxEb2N1bWVudC5oCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vWE1M
RG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTkgKzMxLDE5IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgWE1MRG9jdW1lbnQgOiBwdWJsaWMgRG9jdW1lbnQgewogcHVibGlj
OgotICAgIHN0YXRpYyBSZWY8WE1MRG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0
IFVSTCYgdXJsKQorICAgIHN0YXRpYyBSZWY8WE1MRG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJh
bWUsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnkmIHNjaGVtZVJlZ2lz
dHJ5KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgWE1MRG9jdW1lbnQoZnJh
bWUsIHVybCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBYTUxEb2N1bWVudChmcmFt
ZSwgdXJsLCBzY2hlbWVSZWdpc3RyeSkpOwogICAgIH0KIAotICAgIHN0YXRpYyBSZWY8WE1MRG9j
dW1lbnQ+IGNyZWF0ZVhIVE1MKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCisgICAgc3Rh
dGljIFJlZjxYTUxEb2N1bWVudD4gY3JlYXRlWEhUTUwoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwm
IHVybCwgY29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5JiBzY2hlbWVSZWdpc3RyeSkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFhNTERvY3VtZW50KGZyYW1lLCB1cmwsIFhIVE1M
RG9jdW1lbnRDbGFzcykpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBYTUxEb2N1bWVu
dChmcmFtZSwgdXJsLCBzY2hlbWVSZWdpc3RyeSwgWEhUTUxEb2N1bWVudENsYXNzKSk7CiAgICAg
fQogCiBwcm90ZWN0ZWQ6Ci0gICAgWE1MRG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwm
IHVybCwgdW5zaWduZWQgZG9jdW1lbnRDbGFzc2VzID0gRGVmYXVsdERvY3VtZW50Q2xhc3MpCi0g
ICAgICAgIDogRG9jdW1lbnQoZnJhbWUsIHVybCwgWE1MRG9jdW1lbnRDbGFzcyB8IGRvY3VtZW50
Q2xhc3NlcykKKyAgICBYTUxEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsLCBj
b25zdCBQYWdlU2NoZW1lUmVnaXN0cnkmIHNjaGVtZVJlZ2lzdHJ5LCB1bnNpZ25lZCBkb2N1bWVu
dENsYXNzZXMgPSBEZWZhdWx0RG9jdW1lbnRDbGFzcykKKyAgICAgICAgOiBEb2N1bWVudChmcmFt
ZSwgdXJsLCBzY2hlbWVSZWdpc3RyeSwgWE1MRG9jdW1lbnRDbGFzcyB8IGRvY3VtZW50Q2xhc3Nl
cykKICAgICB7IH0KIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5jcHAJKHJldmlzaW9uIDIw
ODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtOTMsNiArOTMsMTEgQEAgdm9pZCBET01VUkw6OnNldFF1ZXJ5KGNvbnN0IFN0cmluZyYgcXVl
cgogICAgIG1fdXJsLnNldFF1ZXJ5KHF1ZXJ5KTsKIH0KIAorU3RyaW5nIERPTVVSTDo6b3JpZ2lu
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCit7CisgICAg
cmV0dXJuIFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUobV91cmwsIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuc2NoZW1lUmVnaXN0cnkoKSktPnRvU3RyaW5nKCk7Cit9CisKIFN0cmluZyBET01VUkw6OmNy
ZWF0ZU9iamVjdFVSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0LCBCbG9iJiBibG9iKQogewogICAgIHJldHVybiBjcmVhdGVQdWJsaWNVUkwoc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCwgYmxvYik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmgJKHJldmlzaW9uIDIw
ODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmgJKHdvcmtpbmcgY29weSkKQEAg
LTUxLDYgKzUxLDggQEAgcHVibGljOgogCiAgICAgVVJMU2VhcmNoUGFyYW1zJiBzZWFyY2hQYXJh
bXMoKTsKIAorICAgIFN0cmluZyBvcmlnaW4oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOworCiAg
ICAgc3RhdGljIFN0cmluZyBjcmVhdGVPYmplY3RVUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYs
IEJsb2ImKTsKICAgICBzdGF0aWMgdm9pZCByZXZva2VPYmplY3RVUkwoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYsIGNvbnN0IFN0cmluZyYpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0RP
TVVSTC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuaWRsCShy
ZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAKIF0gaW50ZXJmYWNlIERPTVVSTCB7CiAgICAgW0Nh
bGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIHN0YXRpYyBET01TdHJpbmcgY3JlYXRlT2Jq
ZWN0VVJMKEJsb2IgYmxvYik7CiAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRd
IHN0YXRpYyB2b2lkIHJldm9rZU9iamVjdFVSTChET01TdHJpbmcgdXJsKTsKKyAgICBbQ2FsbFdp
dGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gcmVhZG9ubHkgYXR0cmlidXRlIFVTVlN0cmluZyBv
cmlnaW47CiB9OwogCiBET01VUkwgaW1wbGVtZW50cyBVUkxVdGlsczsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCShyZXZpc2lvbiAyMDgzOTgp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDE4LDggKzQxOCw4IEBAIHZvaWQgRlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJz
ZXI6OmZpbmlzaCgKICAgICBIVE1MRG9jdW1lbnRQYXJzZXI6OmZpbmlzaCgpOwogfQogCi1GVFBE
aXJlY3RvcnlEb2N1bWVudDo6RlRQRGlyZWN0b3J5RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25z
dCBVUkwmIHVybCkKLSAgICA6IEhUTUxEb2N1bWVudChmcmFtZSwgdXJsKQorRlRQRGlyZWN0b3J5
RG9jdW1lbnQ6OkZUUERpcmVjdG9yeURvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1
cmwsIGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3RyeSYgc2NoZW1lUmVnaXN0cnkpCisgICAgOiBIVE1M
RG9jdW1lbnQoZnJhbWUsIHVybCwgc2NoZW1lUmVnaXN0cnkpCiB7CiAjaWYgIUxPR19ESVNBQkxF
RAogICAgIExvZ0ZUUC5zdGF0ZSA9IFdURkxvZ0NoYW5uZWxPbjsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmgJKHJldmlzaW9uIDIwODM5OCkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMzAsMTMgKzMwLDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRlRQRGlyZWN0
b3J5RG9jdW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTERvY3VtZW50IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmPEZUUERpcmVjdG9yeURvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBjb25z
dCBVUkwmIHVybCkKKyAgICBzdGF0aWMgUmVmPEZUUERpcmVjdG9yeURvY3VtZW50PiBjcmVhdGUo
RnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCwgY29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5JiBz
Y2hlbWVSZWdpc3RyeSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZUUERp
cmVjdG9yeURvY3VtZW50KGZyYW1lLCB1cmwpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgRlRQRGlyZWN0b3J5RG9jdW1lbnQoZnJhbWUsIHVybCwgc2NoZW1lUmVnaXN0cnkpKTsKICAg
ICB9CiAKIHByaXZhdGU6Ci0gICAgRlRQRGlyZWN0b3J5RG9jdW1lbnQoRnJhbWUqLCBjb25zdCBV
UkwmKTsKKyAgICBGVFBEaXJlY3RvcnlEb2N1bWVudChGcmFtZSosIGNvbnN0IFVSTCYsIGNvbnN0
IFBhZ2VTY2hlbWVSZWdpc3RyeSYpOwogICAgIFJlZjxEb2N1bWVudFBhcnNlcj4gY3JlYXRlUGFy
c2VyKCkgb3ZlcnJpZGU7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNo
b3JFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNo
b3JFbGVtZW50LmNwcAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQW5jaG9yRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzMyw3ICszMzMsNyBAQCBT
dHJpbmcgSFRNTEFuY2hvckVsZW1lbnQ6OnRhcmdldCgpIGNvbnN0CiAKIFN0cmluZyBIVE1MQW5j
aG9yRWxlbWVudDo6b3JpZ2luKCkgY29uc3QKIHsKLSAgICByZXR1cm4gU2VjdXJpdHlPcmlnaW46
OmNyZWF0ZShocmVmKCkpLmdldCgpLnRvU3RyaW5nKCk7CisgICAgcmV0dXJuIFNlY3VyaXR5T3Jp
Z2luOjpjcmVhdGUoaHJlZigpLCBkb2N1bWVudCgpLnNjaGVtZVJlZ2lzdHJ5KCkpLmdldCgpLnRv
U3RyaW5nKCk7CiB9CiAKIFN0cmluZyBIVE1MQW5jaG9yRWxlbWVudDo6dGV4dCgpCkBAIC0zNzgs
NyArMzc4LDcgQEAgdm9pZCBIVE1MQW5jaG9yRWxlbWVudDo6aGFuZGxlQ2xpY2soRXZlbgogI2lm
IEVOQUJMRShET1dOTE9BRF9BVFRSSUJVVEUpCiAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OnNoYXJlZEZlYXR1cmVzKCkuZG93bmxvYWRBdHRyaWJ1dGVFbmFibGVkKCkpIHsKICAgICAg
ICAgLy8gSWdub3JlIHRoZSBkb3dubG9hZCBhdHRyaWJ1dGUgY29tcGxldGVseSBpZiB0aGUgaHJl
ZiBVUkwgaXMgY3Jvc3Mgb3JpZ2luLgotICAgICAgICBib29sIGlzU2FtZU9yaWdpbiA9IGNvbXBs
ZXRlZFVSTC5wcm90b2NvbElzRGF0YSgpIHx8IGRvY3VtZW50KCkuc2VjdXJpdHlPcmlnaW4oKS0+
Y2FuUmVxdWVzdChjb21wbGV0ZWRVUkwpOworICAgICAgICBib29sIGlzU2FtZU9yaWdpbiA9IGNv
bXBsZXRlZFVSTC5wcm90b2NvbElzRGF0YSgpIHx8IGRvY3VtZW50KCkuc2VjdXJpdHlPcmlnaW4o
KS0+Y2FuUmVxdWVzdChjb21wbGV0ZWRVUkwsIGRvY3VtZW50KCkuc2NoZW1lUmVnaXN0cnkoKSk7
CiAgICAgICAgIGlmIChpc1NhbWVPcmlnaW4pCiAgICAgICAgICAgICBkb3dubG9hZEF0dHJpYnV0
ZSA9IGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oZG93bmxvYWRBdHRyKTsKICAgICAg
ICAgZWxzZSBpZiAoaGFzQXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihkb3dubG9hZEF0
dHIpKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcAkocmV2aXNpb24gMjA4
Mzk4KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04Miw4ICs4Miw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNw
YWNlIEhUTUxOYW1lczsKIAotSFRNTERvY3VtZW50OjpIVE1MRG9jdW1lbnQoRnJhbWUqIGZyYW1l
LCBjb25zdCBVUkwmIHVybCwgRG9jdW1lbnRDbGFzc0ZsYWdzIGRvY3VtZW50Q2xhc3NlcywgdW5z
aWduZWQgY29uc3RydWN0aW9uRmxhZ3MpCi0gICAgOiBEb2N1bWVudChmcmFtZSwgdXJsLCBkb2N1
bWVudENsYXNzZXMgfCBIVE1MRG9jdW1lbnRDbGFzcywgY29uc3RydWN0aW9uRmxhZ3MpCitIVE1M
RG9jdW1lbnQ6OkhUTUxEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBQYWdlU2NoZW1lUmVnaXN0cnkmIHNjaGVtZVJlZ2lzdHJ5LCBEb2N1bWVudENsYXNzRmxhZ3Mg
ZG9jdW1lbnRDbGFzc2VzLCB1bnNpZ25lZCBjb25zdHJ1Y3Rpb25GbGFncykKKyAgICA6IERvY3Vt
ZW50KGZyYW1lLCB1cmwsIHNjaGVtZVJlZ2lzdHJ5LCBkb2N1bWVudENsYXNzZXMgfCBIVE1MRG9j
dW1lbnRDbGFzcywgY29uc3RydWN0aW9uRmxhZ3MpCiB7CiAgICAgY2xlYXJYTUxWZXJzaW9uKCk7
CiB9CkBAIC0yOTcsNyArMjk3LDcgQEAgYm9vbCBIVE1MRG9jdW1lbnQ6OmlzRnJhbWVTZXQoKSBj
b25zdAogCiBSZWY8RG9jdW1lbnQ+IEhUTUxEb2N1bWVudDo6Y2xvbmVEb2N1bWVudFdpdGhvdXRD
aGlsZHJlbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNyZWF0ZShudWxscHRyLCB1cmwoKSk7Cisg
ICAgcmV0dXJuIGNyZWF0ZShudWxscHRyLCB1cmwoKSwgc2NoZW1lUmVnaXN0cnkoKSk7CiB9CiAK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuaAkocmV2aXNpb24gMjA4Mzk4KQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MjgsMTQgKzI4LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFRNTERvY3VtZW50
IDogcHVibGljIERvY3VtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEhUTUxEb2N1bWVu
dD4gY3JlYXRlKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCisgICAgc3RhdGljIFJlZjxI
VE1MRG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBQ
YWdlU2NoZW1lUmVnaXN0cnkmIHNjaGVtZVJlZ2lzdHJ5KQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgSFRNTERvY3VtZW50KGZyYW1lLCB1cmwsIEhUTUxEb2N1bWVudENsYXNz
KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEhUTUxEb2N1bWVudChmcmFtZSwgdXJs
LCBzY2hlbWVSZWdpc3RyeSwgSFRNTERvY3VtZW50Q2xhc3MpKTsKICAgICB9CiAKLSAgICBzdGF0
aWMgUmVmPEhUTUxEb2N1bWVudD4gY3JlYXRlU3ludGhlc2l6ZWREb2N1bWVudChGcmFtZSogZnJh
bWUsIGNvbnN0IFVSTCYgdXJsKQorICAgIHN0YXRpYyBSZWY8SFRNTERvY3VtZW50PiBjcmVhdGVT
eW50aGVzaXplZERvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFBh
Z2VTY2hlbWVSZWdpc3RyeSYgc2NoZW1lUmVnaXN0cnkpCiAgICAgewotICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBIVE1MRG9jdW1lbnQoZnJhbWUsIHVybCwgSFRNTERvY3VtZW50Q2xhc3Ms
IFN5bnRoZXNpemVkKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEhUTUxEb2N1bWVu
dChmcmFtZSwgdXJsLCBzY2hlbWVSZWdpc3RyeSwgSFRNTERvY3VtZW50Q2xhc3MsIFN5bnRoZXNp
emVkKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+SFRNTERvY3VtZW50KCk7CkBAIC03NCw3ICs3
NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBpc0Nhc2VTZW5zaXRpdmVBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgSFRNTERvY3VtZW50KEZy
YW1lKiwgY29uc3QgVVJMJiwgRG9jdW1lbnRDbGFzc0ZsYWdzID0gMCwgdW5zaWduZWQgY29uc3Ry
dWN0aW9uRmxhZ3MgPSAwKTsKKyAgICBIVE1MRG9jdW1lbnQoRnJhbWUqLCBjb25zdCBVUkwmLCBj
b25zdCBQYWdlU2NoZW1lUmVnaXN0cnkmLCBEb2N1bWVudENsYXNzRmxhZ3MgPSAwLCB1bnNpZ25l
ZCBjb25zdHJ1Y3Rpb25GbGFncyA9IDApOwogCiBwcml2YXRlOgogICAgIGJvb2wgaXNGcmFtZVNl
dCgpIGNvbnN0IG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VF
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVs
ZW1lbnQuY3BwCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
bWFnZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzYsNyArMzc2LDcgQEAgdm9pZCBI
VE1MSW1hZ2VFbGVtZW50OjpzZXRQaWN0dXJlRWxlbWVudAogICAgIGdQaWN0dXJlT3duZXJNYXAt
PmFkZCh0aGlzLCBwaWN0dXJlRWxlbWVudC0+Y3JlYXRlV2Vha1B0cigpKTsKIH0KICAgICAKLXVu
c2lnbmVkIEhUTUxJbWFnZUVsZW1lbnQ6OndpZHRoKGJvb2wgaWdub3JlUGVuZGluZ1N0eWxlc2hl
ZXRzKQordW5zaWduZWQgSFRNTEltYWdlRWxlbWVudDo6d2lkdGgoYm9vbCBpZ25vcmVQZW5kaW5n
U3R5bGVzaGVldHMpIGNvbnN0CiB7CiAgICAgaWYgKCFyZW5kZXJlcigpKSB7CiAgICAgICAgIC8v
IGNoZWNrIHRoZSBhdHRyaWJ1dGUgZmlyc3QgZm9yIGFuIGV4cGxpY2l0IHBpeGVsIHZhbHVlCkBA
IC00MDEsNyArNDAxLDcgQEAgdW5zaWduZWQgSFRNTEltYWdlRWxlbWVudDo6d2lkdGgoYm9vbCBp
ZwogICAgIHJldHVybiBhZGp1c3RGb3JBYnNvbHV0ZVpvb20oc25hcHBlZEludFJlY3QoY29udGVu
dFJlY3QpLndpZHRoKCksICpib3gpOwogfQogCi11bnNpZ25lZCBIVE1MSW1hZ2VFbGVtZW50Ojpo
ZWlnaHQoYm9vbCBpZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMpCit1bnNpZ25lZCBIVE1MSW1hZ2VF
bGVtZW50OjpoZWlnaHQoYm9vbCBpZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMpIGNvbnN0CiB7CiAg
ICAgaWYgKCFyZW5kZXJlcigpKSB7CiAgICAgICAgIC8vIGNoZWNrIHRoZSBhdHRyaWJ1dGUgZmly
c3QgZm9yIGFuIGV4cGxpY2l0IHBpeGVsIHZhbHVlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJbWFnZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbWFnZUVsZW1lbnQuaAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW1hZ2VFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDggKzQzLDggQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCB+SFRNTEltYWdlRWxlbWVudCgpOwogCi0gICAgV0VCQ09SRV9F
WFBPUlQgdW5zaWduZWQgd2lkdGgoYm9vbCBpZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMgPSBmYWxz
ZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdW5zaWduZWQgaGVpZ2h0KGJvb2wgaWdub3JlUGVuZGlu
Z1N0eWxlc2hlZXRzID0gZmFsc2UpOworICAgIFdFQkNPUkVfRVhQT1JUIHVuc2lnbmVkIHdpZHRo
KGJvb2wgaWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzID0gZmFsc2UpIGNvbnN0OworICAgIFdFQkNP
UkVfRVhQT1JUIHVuc2lnbmVkIGhlaWdodChib29sIGlnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cyA9
IGZhbHNlKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGludCBuYXR1cmFsV2lkdGgoKSBj
b25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQgbmF0dXJhbEhlaWdodCgpIGNvbnN0OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMDgz
OTgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03NCw2ICs3NCw3IEBACiAjaW5jbHVkZSAiTm9FdmVudERpc3BhdGNoQXNzZXJ0
aW9uLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgorI2luY2x1
ZGUgIlBhZ2VTY2hlbWVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9u
TWFuYWdlci5oIgogI2luY2x1ZGUgIlByb2dyZXNzVHJhY2tlci5oIgogI2luY2x1ZGUgIlJlbmRl
ckxheWVyQ29tcG9zaXRvci5oIgpAQCAtMTk0NCw3ICsxOTQ1LDcgQEAgYm9vbCBIVE1MTWVkaWFF
bGVtZW50Ojppc1NhZmVUb0xvYWRVUkwoYwogICAgIH0KIAogICAgIEZyYW1lKiBmcmFtZSA9IGRv
Y3VtZW50KCkuZnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lIHx8ICFkb2N1bWVudCgpLnNlY3VyaXR5
T3JpZ2luKCktPmNhbkRpc3BsYXkodXJsKSkgeworICAgIGlmICghZnJhbWUgfHwgIWRvY3VtZW50
KCkuc2VjdXJpdHlPcmlnaW4oKS0+Y2FuRGlzcGxheSh1cmwsIGZyYW1lLT5zY2hlbWVSZWdpc3Ry
eSgpKSkgewogICAgICAgICBpZiAoYWN0aW9uSWZJbnZhbGlkID09IENvbXBsYWluKQogICAgICAg
ICAgICAgRnJhbWVMb2FkZXI6OnJlcG9ydExvY2FsTG9hZEZhaWxlZChmcmFtZSwgdXJsLnN0cmlu
Z0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpKTsKICAgICAgICAgTE9HKE1lZGlhLCAiSFRNTE1l
ZGlhRWxlbWVudDo6aXNTYWZlVG9Mb2FkVVJMKCVwKSAtICVzIC0+IEZBTFNFIHJlamVjdGVkIGJ5
IFNlY3VyaXR5T3JpZ2luIiwgdGhpcywgdXJsRm9yTG9nZ2luZ01lZGlhKHVybCkudXRmOCgpLmRh
dGEoKSk7CkBAIC01Njk4LDkgKzU2OTksOSBAQCBjb25zdCBTdHJpbmcmIEhUTUxNZWRpYUVsZW1l
bnQ6Om1lZGlhQ2FjCiAgICAgcmV0dXJuIHNoYXJlZE1lZGlhQ2FjaGVEaXJlY3RvcnkoKTsKIH0K
IAotSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBIVE1MTWVkaWFFbGVtZW50Ojpvcmln
aW5zSW5NZWRpYUNhY2hlKGNvbnN0IFN0cmluZyYgcGF0aCkKK0hhc2hTZXQ8UmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPj4gSFRNTE1lZGlhRWxlbWVudDo6b3JpZ2luc0luTWVkaWFDYWNoZShjb25zdCBT
dHJpbmcmIHBhdGgsIGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3RyeSYgc2NoZW1lUmVnaXN0cnkpCiB7
Ci0gICAgcmV0dXJuIE1lZGlhUGxheWVyOjpvcmlnaW5zSW5NZWRpYUNhY2hlKHBhdGgpOworICAg
IHJldHVybiBNZWRpYVBsYXllcjo6b3JpZ2luc0luTWVkaWFDYWNoZShwYXRoLCBzY2hlbWVSZWdp
c3RyeSk7CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y2xlYXJNZWRpYUNhY2hlKGNvbnN0
IFN0cmluZyYgcGF0aCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2Rp
ZmllZFNpbmNlKQpAQCAtNTcwOCw5ICs1NzA5LDkgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpj
bGVhck1lZGlhQ2FjaGUoYwogICAgIE1lZGlhUGxheWVyOjpjbGVhck1lZGlhQ2FjaGUocGF0aCwg
bW9kaWZpZWRTaW5jZSk7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y2xlYXJNZWRpYUNh
Y2hlRm9yT3JpZ2lucyhjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPj4mIG9yaWdpbnMpCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNsZWFyTWVk
aWFDYWNoZUZvck9yaWdpbnMoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBIYXNoU2V0PFJlZlB0
cjxTZWN1cml0eU9yaWdpbj4+JiBvcmlnaW5zLCBjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnkmIHNj
aGVtZVJlZ2lzdHJ5KQogewotICAgIE1lZGlhUGxheWVyOjpjbGVhck1lZGlhQ2FjaGVGb3JPcmln
aW5zKHBhdGgsIG9yaWdpbnMpOworICAgIE1lZGlhUGxheWVyOjpjbGVhck1lZGlhQ2FjaGVGb3JP
cmlnaW5zKHBhdGgsIG9yaWdpbnMsIHNjaGVtZVJlZ2lzdHJ5KTsKIH0KIAogdm9pZCBIVE1MTWVk
aWFFbGVtZW50OjpyZXNldE1lZGlhRW5naW5lcygpCkBAIC01NzMxLDcgKzU3MzIsNyBAQCB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OnByaXZhdGVCcm93c2luZ1N0CiBNZWRpYUNvbnRyb2xzKiBIVE1M
TWVkaWFFbGVtZW50OjptZWRpYUNvbnRyb2xzKCkgY29uc3QKIHsKICNpZiBFTkFCTEUoTUVESUFf
Q09OVFJPTFNfU0NSSVBUKQotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogI2Vs
c2UKICAgICByZXR1cm4gdG9NZWRpYUNvbnRyb2xzKHVzZXJBZ2VudFNoYWRvd1Jvb3QoKS0+Zmly
c3RDaGlsZCgpKTsKICNlbmRpZgpAQCAtNjE0MCw3ICs2MTQxLDcgQEAgU3RyaW5nIEhUTUxNZWRp
YUVsZW1lbnQ6Om1lZGlhUGxheWVyUmVmZQogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKIAotICAgIHJldHVybiBTZWN1cml0eVBvbGljeTo6Z2VuZXJhdGVSZWZlcnJl
ckhlYWRlcihkb2N1bWVudCgpLnJlZmVycmVyUG9saWN5KCksIG1fY3VycmVudFNyYywgZnJhbWUt
PmxvYWRlcigpLm91dGdvaW5nUmVmZXJyZXIoKSk7CisgICAgcmV0dXJuIFNlY3VyaXR5UG9saWN5
OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVyKGRvY3VtZW50KCkucmVmZXJyZXJQb2xpY3koKSwgbV9j
dXJyZW50U3JjLCBmcmFtZS0+bG9hZGVyKCkub3V0Z29pbmdSZWZlcnJlcigpLCBmcmFtZS0+c2No
ZW1lUmVnaXN0cnkoKSk7CiB9CiAKIFN0cmluZyBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXll
clVzZXJBZ2VudCgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuaAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2MSw3ICszNjEsNyBAQCBwdWJsaWM6CiAgICAg
Ly8gb2Ygb25lIG9mIHRoZW0gaGVyZS4KICAgICB1c2luZyBIVE1MRWxlbWVudDo6c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDsKIAotICAgIGJvb2wgaGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4oKSBjb25z
dCB7IHJldHVybiAhbV9wbGF5ZXIgfHwgbV9wbGF5ZXItPmhhc1NpbmdsZVNlY3VyaXR5T3JpZ2lu
KCk7IH0KKyAgICBib29sIGhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKGNvbnN0IFBhZ2VTY2hlbWVS
ZWdpc3RyeSYgc2NoZW1lUmVnaXN0cnkpIGNvbnN0IHsgcmV0dXJuICFtX3BsYXllciB8fCBtX3Bs
YXllci0+aGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4oc2NoZW1lUmVnaXN0cnkpOyB9CiAgICAgCiAg
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0Z1bGxzY3JlZW4oKSBjb25zdCBvdmVycmlkZTsKICAg
ICBib29sIGlzU3RhbmRhcmRGdWxsc2NyZWVuKCkgY29uc3Q7CkBAIC0zODksOSArMzg5LDkgQEAg
cHVibGljOgogICAgIC8vIE1lZGlhIGNhY2hlIG1hbmFnZW1lbnQuCiAgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIHZvaWQgc2V0TWVkaWFDYWNoZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgY29uc3QgU3RyaW5nJiBtZWRpYUNhY2hlRGlyZWN0b3J5
KCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPj4gb3JpZ2luc0luTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBvcmlnaW5zSW5NZWRp
YUNhY2hlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3RyeSYpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGNsZWFyTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmLCBz
dGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UgPSB7IH0p
OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGNsZWFyTWVkaWFDYWNoZUZvck9yaWdp
bnMoY29uc3QgU3RyaW5nJiwgY29uc3QgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiYp
OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGNsZWFyTWVkaWFDYWNoZUZvck9yaWdp
bnMoY29uc3QgU3RyaW5nJiwgY29uc3QgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiYs
IGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3RyeSYpOwogICAgIHN0YXRpYyB2b2lkIHJlc2V0TWVkaWFF
bmdpbmVzKCk7CiAKICAgICBib29sIGlzUGxheWluZygpIGNvbnN0IHsgcmV0dXJuIG1fcGxheWlu
ZzsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1l
bnQuY3BwCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVn
SW5JbWFnZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTIsNyArMjEyLDcgQEAgUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxQbHVnSW5JbWFnZQogCiAgICAgaWYgKGRpc3BsYXlT
dGF0ZSgpID09IERpc3BsYXlpbmdTbmFwc2hvdCkgewogICAgICAgICBhdXRvIHJlbmRlclNuYXBz
aG90dGVkUGx1Z0luID0gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU25hcHNob3R0ZWRQbHVnSW4+KCp0
aGlzLCBXVEZNb3ZlKHN0eWxlKSk7Ci0gICAgICAgIHJlbmRlclNuYXBzaG90dGVkUGx1Z0luLT51
cGRhdGVTbmFwc2hvdChtX3NuYXBzaG90SW1hZ2UpOworICAgICAgICByZW5kZXJTbmFwc2hvdHRl
ZFBsdWdJbi0+dXBkYXRlU25hcHNob3QobV9zbmFwc2hvdEltYWdlLmdldCgpKTsKICAgICAgICAg
cmV0dXJuIFdURk1vdmUocmVuZGVyU25hcHNob3R0ZWRQbHVnSW4pOwogICAgIH0KIApAQCAtMzU2
LDcgKzM1Niw3IEBAIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6dXBkYXRlU25hcHMKICAg
ICBhdXRvJiByZW5kZXJlciA9ICp0aGlzLT5yZW5kZXJlcigpOwogCiAgICAgaWYgKGlzPFJlbmRl
clNuYXBzaG90dGVkUGx1Z0luPihyZW5kZXJlcikpIHsKLSAgICAgICAgZG93bmNhc3Q8UmVuZGVy
U25hcHNob3R0ZWRQbHVnSW4+KHJlbmRlcmVyKS51cGRhdGVTbmFwc2hvdChpbWFnZSk7CisgICAg
ICAgIGRvd25jYXN0PFJlbmRlclNuYXBzaG90dGVkUGx1Z0luPihyZW5kZXJlcikudXBkYXRlU25h
cHNob3QoaW1hZ2UuZ2V0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MCw4
ICsxOTAsOCBAQCB2b2lkIEltYWdlRG9jdW1lbnRQYXJzZXI6OmZpbmlzaCgpCiAgICAgZG9jdW1l
bnQoKS5maW5pc2hlZFBhcnNpbmcoKTsKIH0KIAotSW1hZ2VEb2N1bWVudDo6SW1hZ2VEb2N1bWVu
dChGcmFtZSYgZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQotICAgIDogSFRNTERvY3VtZW50KCZmcmFt
ZSwgdXJsLCBJbWFnZURvY3VtZW50Q2xhc3MpCitJbWFnZURvY3VtZW50OjpJbWFnZURvY3VtZW50
KEZyYW1lJiBmcmFtZSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3RyeSYg
c2NoZW1lUmVnaXN0cnkpCisgICAgOiBIVE1MRG9jdW1lbnQoJmZyYW1lLCB1cmwsIHNjaGVtZVJl
Z2lzdHJ5LCBJbWFnZURvY3VtZW50Q2xhc3MpCiAgICAgLCBtX2ltYWdlRWxlbWVudChudWxscHRy
KQogICAgICwgbV9pbWFnZVNpemVJc0tub3duKGZhbHNlKQogI2lmICFQTEFURk9STShJT1MpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuaAkocmV2aXNpb24gMjA4Mzk4KQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMz
LDkgKzMzLDkgQEAgY2xhc3MgSFRNTEltYWdlRWxlbWVudDsKIAogY2xhc3MgSW1hZ2VEb2N1bWVu
dCBmaW5hbCA6IHB1YmxpYyBIVE1MRG9jdW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8
SW1hZ2VEb2N1bWVudD4gY3JlYXRlKEZyYW1lJiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCisgICAg
c3RhdGljIFJlZjxJbWFnZURvY3VtZW50PiBjcmVhdGUoRnJhbWUmIGZyYW1lLCBjb25zdCBVUkwm
IHVybCwgY29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5JiBzY2hlbWVSZWdpc3RyeSkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlRG9jdW1lbnQoZnJhbWUsIHVybCkpOwor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURvY3VtZW50KGZyYW1lLCB1cmwsIHNj
aGVtZVJlZ2lzdHJ5KSk7CiAgICAgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgSFRNTEltYWdlRWxl
bWVudCogaW1hZ2VFbGVtZW50KCkgY29uc3Q7CkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICNl
bmRpZgogCiBwcml2YXRlOgotICAgIEltYWdlRG9jdW1lbnQoRnJhbWUmLCBjb25zdCBVUkwmKTsK
KyAgICBJbWFnZURvY3VtZW50KEZyYW1lJiwgY29uc3QgVVJMJiwgY29uc3QgUGFnZVNjaGVtZVJl
Z2lzdHJ5Jik7CiAKICAgICBSZWY8RG9jdW1lbnRQYXJzZXI+IGNyZWF0ZVBhcnNlcigpIG92ZXJy
aWRlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAJKHJldmlzaW9u
IDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE0Myw4ICsxNDMsOCBAQCB2b2lkIE1lZGlhRG9jdW1lbnRQYXJzZXI6OmFw
cGVuZEJ5dGVzKERvCiAgICAgZmluaXNoKCk7CiB9CiAgICAgCi1NZWRpYURvY3VtZW50OjpNZWRp
YURvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCi0gICAgOiBIVE1MRG9jdW1l
bnQoZnJhbWUsIHVybCwgTWVkaWFEb2N1bWVudENsYXNzKQorTWVkaWFEb2N1bWVudDo6TWVkaWFE
b2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBQYWdlU2NoZW1lUmVn
aXN0cnkmIHNjaGVtZVJlZ2lzdHJ5KQorICAgIDogSFRNTERvY3VtZW50KGZyYW1lLCB1cmwsIHNj
aGVtZVJlZ2lzdHJ5LCBNZWRpYURvY3VtZW50Q2xhc3MpCiAgICAgLCBtX3JlcGxhY2VNZWRpYUVs
ZW1lbnRUaW1lcigqdGhpcywgJk1lZGlhRG9jdW1lbnQ6OnJlcGxhY2VNZWRpYUVsZW1lbnRUaW1l
ckZpcmVkKQogewogICAgIHNldENvbXBhdGliaWxpdHlNb2RlKERvY3VtZW50Q29tcGF0aWJpbGl0
eU1vZGU6OlF1aXJrc01vZGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURvY3Vt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURvY3VtZW50LmgJ
KHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMyw5ICszMyw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgTWVkaWFEb2N1bWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRG9jdW1lbnQgewogcHVibGlj
OgotICAgIHN0YXRpYyBSZWY8TWVkaWFEb2N1bWVudD4gY3JlYXRlKEZyYW1lKiBmcmFtZSwgY29u
c3QgVVJMJiB1cmwpCisgICAgc3RhdGljIFJlZjxNZWRpYURvY3VtZW50PiBjcmVhdGUoRnJhbWUq
IGZyYW1lLCBjb25zdCBVUkwmIHVybCwgY29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5JiBzY2hlbWVS
ZWdpc3RyeSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhRG9jdW1l
bnQoZnJhbWUsIHVybCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYURvY3Vt
ZW50KGZyYW1lLCB1cmwsIHNjaGVtZVJlZ2lzdHJ5KSk7CiAgICAgfQogICAgIHZpcnR1YWwgfk1l
ZGlhRG9jdW1lbnQoKTsKIApAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIG91
dGdvaW5nUmVmZXJyZXIoKSBjb25zdCB7IHJldHVybiBtX291dGdvaW5nUmVmZXJyZXI7IH0KIAog
cHJpdmF0ZToKLSAgICBNZWRpYURvY3VtZW50KEZyYW1lKiwgY29uc3QgVVJMJik7CisgICAgTWVk
aWFEb2N1bWVudChGcmFtZSosIGNvbnN0IFVSTCYsIGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3RyeSYp
OwogCiAgICAgUmVmPERvY3VtZW50UGFyc2VyPiBjcmVhdGVQYXJzZXIoKSBvdmVycmlkZTsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDIwODM5
OCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMzksOCArMTM5LDggQEAgdm9pZCBQbHVnaW5Eb2N1bWVudFBhcnNlcjo6YXBwZW5k
Qnl0ZXMoRAogICAgIH0KIH0KIAotUGx1Z2luRG9jdW1lbnQ6OlBsdWdpbkRvY3VtZW50KEZyYW1l
KiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCi0gICAgOiBIVE1MRG9jdW1lbnQoZnJhbWUsIHVybCwg
UGx1Z2luRG9jdW1lbnRDbGFzcykKK1BsdWdpbkRvY3VtZW50OjpQbHVnaW5Eb2N1bWVudChGcmFt
ZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnkmIHNjaGVt
ZVJlZ2lzdHJ5KQorICAgIDogSFRNTERvY3VtZW50KGZyYW1lLCB1cmwsIHNjaGVtZVJlZ2lzdHJ5
LCBQbHVnaW5Eb2N1bWVudENsYXNzKQogICAgICwgbV9zaG91bGRMb2FkUGx1Z2luTWFudWFsbHko
dHJ1ZSkKIHsKICAgICBzZXRDb21wYXRpYmlsaXR5TW9kZShEb2N1bWVudENvbXBhdGliaWxpdHlN
b2RlOjpRdWlya3NNb2RlKTsKQEAgLTE1OSw5ICsxNTksOSBAQCBXaWRnZXQqIFBsdWdpbkRvY3Vt
ZW50OjpwbHVnaW5XaWRnZXQoKQogICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lkIFBsdWdp
bkRvY3VtZW50OjpzZXRQbHVnaW5FbGVtZW50KFBhc3NSZWZQdHI8SFRNTFBsdWdJbkVsZW1lbnQ+
IGVsZW1lbnQpCit2b2lkIFBsdWdpbkRvY3VtZW50OjpzZXRQbHVnaW5FbGVtZW50KFJlZlB0cjxI
VE1MUGx1Z0luRWxlbWVudD4mJiBlbGVtZW50KQogewotICAgIG1fcGx1Z2luRWxlbWVudCA9IGVs
ZW1lbnQ7CisgICAgbV9wbHVnaW5FbGVtZW50ID0gV1RGTW92ZShlbGVtZW50KTsKIH0KIAogdm9p
ZCBQbHVnaW5Eb2N1bWVudDo6ZGV0YWNoRnJvbVBsdWdpbkVsZW1lbnQoKQpJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQuaAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMiArMzMs
MTIgQEAgY2xhc3MgV2lkZ2V0OwogCiBjbGFzcyBQbHVnaW5Eb2N1bWVudCBmaW5hbCA6IHB1Ymxp
YyBIVE1MRG9jdW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UGx1Z2luRG9jdW1lbnQ+
IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQorICAgIHN0YXRpYyBSZWY8UGx1
Z2luRG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBQ
YWdlU2NoZW1lUmVnaXN0cnkmIHNjaGVtZVJlZ2lzdHJ5KQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgUGx1Z2luRG9jdW1lbnQoZnJhbWUsIHVybCkpOworICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBQbHVnaW5Eb2N1bWVudChmcmFtZSwgdXJsLCBzY2hlbWVSZWdpc3Ry
eSkpOwogICAgIH0KIAotICAgIHZvaWQgc2V0UGx1Z2luRWxlbWVudChQYXNzUmVmUHRyPEhUTUxQ
bHVnSW5FbGVtZW50Pik7CisgICAgdm9pZCBzZXRQbHVnaW5FbGVtZW50KFJlZlB0cjxIVE1MUGx1
Z0luRWxlbWVudD4mJik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBXaWRnZXQqIHBsdWdpbldpZGdl
dCgpOwogICAgIEhUTUxQbHVnSW5FbGVtZW50KiBwbHVnaW5FbGVtZW50KCkgeyByZXR1cm4gbV9w
bHVnaW5FbGVtZW50LmdldCgpOyB9CkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICBib29s
IHNob3VsZExvYWRQbHVnaW5NYW51YWxseSgpIHsgcmV0dXJuIG1fc2hvdWxkTG9hZFBsdWdpbk1h
bnVhbGx5OyB9CiAKIHByaXZhdGU6Ci0gICAgUGx1Z2luRG9jdW1lbnQoRnJhbWUqLCBjb25zdCBV
UkwmKTsKKyAgICBQbHVnaW5Eb2N1bWVudChGcmFtZSosIGNvbnN0IFVSTCYsIGNvbnN0IFBhZ2VT
Y2hlbWVSZWdpc3RyeSYpOwogCiAgICAgUmVmPERvY3VtZW50UGFyc2VyPiBjcmVhdGVQYXJzZXIo
KSBvdmVycmlkZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RG9jdW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dERvY3VtZW50LmNwcAkocmV2
aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RG9jdW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yOSw4ICsyOSw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
VGV4dERvY3VtZW50OjpUZXh0RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkK
LSAgICA6IEhUTUxEb2N1bWVudChmcmFtZSwgdXJsLCBUZXh0RG9jdW1lbnRDbGFzcykKK1RleHRE
b2N1bWVudDo6VGV4dERvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0
IFBhZ2VTY2hlbWVSZWdpc3RyeSYgc2NoZW1lUmVnaXN0cnkpCisgICAgOiBIVE1MRG9jdW1lbnQo
ZnJhbWUsIHVybCwgc2NoZW1lUmVnaXN0cnksIFRleHREb2N1bWVudENsYXNzKQogewogICAgIHNl
dENvbXBhdGliaWxpdHlNb2RlKERvY3VtZW50Q29tcGF0aWJpbGl0eU1vZGU6OlF1aXJrc01vZGUp
OwogICAgIGxvY2tDb21wYXRpYmlsaXR5TW9kZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9UZXh0RG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRE
b2N1bWVudC5oCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRE
b2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxMyArMzAsMTMgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBUZXh0RG9jdW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTERvY3VtZW50
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFRleHREb2N1bWVudD4gY3JlYXRlKEZyYW1lKiBm
cmFtZSwgY29uc3QgVVJMJiB1cmwpCisgICAgc3RhdGljIFJlZjxUZXh0RG9jdW1lbnQ+IGNyZWF0
ZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnkm
IHNjaGVtZVJlZ2lzdHJ5KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4
dERvY3VtZW50KGZyYW1lLCB1cmwpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4
dERvY3VtZW50KGZyYW1lLCB1cmwsIHNjaGVtZVJlZ2lzdHJ5KSk7CiAgICAgfQogCiBwcml2YXRl
OgotICAgIFRleHREb2N1bWVudChGcmFtZSosIGNvbnN0IFVSTCYpOworICAgIFRleHREb2N1bWVu
dChGcmFtZSosIGNvbnN0IFVSTCYsIGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3RyeSYpOwogICAgIAog
ICAgIFJlZjxEb2N1bWVudFBhcnNlcj4gY3JlYXRlUGFyc2VyKCkgb3ZlcnJpZGU7CiB9OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9VUkxVdGlscy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvVVJMVXRpbHMuaAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9VUkxVdGlscy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw4ICsyNSw2IEBACiAKICNw
cmFnbWEgb25jZQogCi0jaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKLQogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KQEAgLTM3LDggKzM1LDYgQEAgcHVibGlj
OgogCiAgICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7CiAKLSAgICBTdHJpbmcgb3JpZ2luKCkg
Y29uc3Q7Ci0KICAgICBTdHJpbmcgcHJvdG9jb2woKSBjb25zdDsKICAgICB2b2lkIHNldFByb3Rv
Y29sKGNvbnN0IFN0cmluZyYpOwogCkBAIC03NCwxMyArNzAsNiBAQCBTdHJpbmcgVVJMVXRpbHM8
VD46OnRvU3RyaW5nKCkgY29uc3QKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1TdHJpbmcg
VVJMVXRpbHM8VD46Om9yaWdpbigpIGNvbnN0Ci17Ci0gICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2lu
PiBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKGhyZWYoKSk7Ci0gICAgcmV0dXJuIG9y
aWdpbi0+dG9TdHJpbmcoKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBTdHJpbmcgVVJM
VXRpbHM8VD46OnByb3RvY29sKCkgY29uc3QKIHsKICAgICByZXR1cm4gbWFrZVN0cmluZyhocmVm
KCkucHJvdG9jb2woKSwgJzonKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvVVJMVXRpbHMu
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvVVJMVXRpbHMuaWRsCShyZXZp
c2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL1VSTFV0aWxzLmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMjgsOCArMjgsNiBAQAogCiAgICAgW05vdEVudW1lcmFibGVdIERPTVN0cmlu
ZyB0b1N0cmluZygpOwogCi0gICAgcmVhZG9ubHkgYXR0cmlidXRlIFVTVlN0cmluZyBvcmlnaW47
Ci0KICAgICBhdHRyaWJ1dGUgVVNWU3RyaW5nIHByb3RvY29sOwogICAgIGF0dHJpYnV0ZSBVU1ZT
dHJpbmcgdXNlcm5hbWU7CiAgICAgYXR0cmlidXRlIFVTVlN0cmluZyBwYXNzd29yZDsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJELmNwcAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ0
Miw3ICsxNDQyLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dAog
ICAgIGlmIChpbWFnZS0+aXNTVkdJbWFnZSgpKQogICAgICAgICBpbWFnZS0+c2V0SW1hZ2VPYnNl
cnZlcihvYnNlcnZlcik7CiAKLSAgICBjaGVja09yaWdpbigmaW1hZ2VFbGVtZW50KTsKKyAgICBj
aGVja09yaWdpbihpbWFnZUVsZW1lbnQpOwogCiAgICAgcmV0dXJuIHsgfTsKIH0KQEAgLTE0ODYs
NyArMTQ4Niw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQKICAg
ICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGNoZWNrT3JpZ2luKCZz
b3VyY2VDYW52YXMpOworICAgIGNoZWNrT3JpZ2luKHNvdXJjZUNhbnZhcyk7CiAKICNpZiBFTkFC
TEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQogICAgIC8vIElmIHdlJ3JlIGRyYXdpbmcgZnJvbSBv
bmUgYWNjZWxlcmF0ZWQgY2FudmFzIDJkIHRvIGFub3RoZXIsIGF2b2lkIGNhbGxpbmcgc291cmNl
Q2FudmFzLm1ha2VSZW5kZXJpbmdSZXN1bHRzQXZhaWxhYmxlKCkKQEAgLTE1NTQsNyArMTU1NCw3
IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQKICAgICBpZiAoIXN0
YXRlKCkuaGFzSW52ZXJ0aWJsZVRyYW5zZm9ybSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAg
IGNoZWNrT3JpZ2luKCZ2aWRlbyk7CisgICAgY2hlY2tPcmlnaW4odmlkZW8pOwogCiAjaWYgVVNF
KENHKSB8fCAoRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJiYgVVNFKEdTVFJFQU1FUl9H
TCkgJiYgVVNFKENBSVJPKSkKICAgICBpZiAoTmF0aXZlSW1hZ2VQdHIgaW1hZ2UgPSB2aWRlby5u
YXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkpIHsKQEAgLTE4MDEsNyArMTgwMSw3IEBAIEV4Y2Vw
dGlvbk9yPFJlZlB0cjxDYW52YXNQYXR0ZXJuPj4gQ2FudmEKICAgICBpZiAoIUNhbnZhc1BhdHRl
cm46OnBhcnNlUmVwZXRpdGlvblR5cGUocmVwZXRpdGlvblR5cGUsIHJlcGVhdFgsIHJlcGVhdFkp
KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU1lOVEFYX0VSUiB9OwogCi0gICAgY2hlY2tP
cmlnaW4oJnZpZGVvRWxlbWVudCk7CisgICAgY2hlY2tPcmlnaW4odmlkZW9FbGVtZW50KTsKICAg
ICBib29sIG9yaWdpbkNsZWFuID0gY2FudmFzKCkub3JpZ2luQ2xlYW4oKTsKIAogI2lmIFVTRShD
RykgfHwgKEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICYmIFVTRShHU1RSRUFNRVJfR0wp
ICYmIFVTRShDQUlSTykpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ4LDE5ICs0OCwxOSBAQCBib29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6
OndvdWxkVGFpbnRPCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQ6OndvdWxkVGFpbnRPcmlnaW4oY29uc3QgSFRNTENhbnZhc0VsZW1lbnQqIHNvdXJj
ZUNhbnZhcykKK2Jvb2wgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6d291bGRUYWludE9yaWdpbihj
b25zdCBIVE1MQ2FudmFzRWxlbWVudCYgc291cmNlQ2FudmFzKQogewotICAgIGlmIChjYW52YXMo
KS5vcmlnaW5DbGVhbigpICYmIHNvdXJjZUNhbnZhcyAmJiAhc291cmNlQ2FudmFzLT5vcmlnaW5D
bGVhbigpKQorICAgIGlmIChjYW52YXMoKS5vcmlnaW5DbGVhbigpICYmICFzb3VyY2VDYW52YXMu
b3JpZ2luQ2xlYW4oKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi1ib29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OndvdWxkVGFpbnRPcmlnaW4oY29uc3Qg
SFRNTEltYWdlRWxlbWVudCogZWxlbWVudCkKK2Jvb2wgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6
d291bGRUYWludE9yaWdpbihjb25zdCBIVE1MSW1hZ2VFbGVtZW50JiBlbGVtZW50KQogewotICAg
IGlmICghZWxlbWVudCB8fCAhY2FudmFzKCkub3JpZ2luQ2xlYW4oKSkKKyAgICBpZiAoIWNhbnZh
cygpLm9yaWdpbkNsZWFuKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8qIGNh
Y2hlZEltYWdlID0gZWxlbWVudC0+Y2FjaGVkSW1hZ2UoKTsKKyAgICBhdXRvKiBjYWNoZWRJbWFn
ZSA9IGVsZW1lbnQuY2FjaGVkSW1hZ2UoKTsKICAgICBpZiAoIWNhY2hlZEltYWdlKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKQEAgLTgwLDIwICs4MCwyMSBAQCBib29sIENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQ6OndvdWxkVGFpbnRPCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIENhbnZh
c1JlbmRlcmluZ0NvbnRleHQ6OndvdWxkVGFpbnRPcmlnaW4oY29uc3QgSFRNTFZpZGVvRWxlbWVu
dCogdmlkZW8pCitib29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OndvdWxkVGFpbnRPcmlnaW4o
Y29uc3QgSFRNTFZpZGVvRWxlbWVudCYgdmlkZW8pCiB7CiAjaWYgRU5BQkxFKFZJREVPKQogICAg
IC8vIEZJWE1FOiBUaGlzIGNoZWNrIGlzIGxpa2VseSB3cm9uZyB3aGVuIGEgcmVkaXJlY3QgaXMg
aW52b2x2ZWQuIFdlIG5lZWQKICAgICAvLyB0byB0ZXN0IHRoZSBmaW5hbFVSTC4gUGxlYXNlIGJl
IGNhcmVmdWwgd2hlbiBmaXhpbmcgdGhpcyBpc3N1ZSBub3QgdG8KICAgICAvLyBtYWtlIGN1cnJl
bnRTcmMgYmUgdGhlIGZpbmFsIFVSTCBiZWNhdXNlIHRoZW4gdGhlCiAgICAgLy8gSFRNTE1lZGlh
RWxlbWVudC5jdXJyZW50U3JjIERPTSBBUEkgd291bGQgbGVhayByZWRpcmVjdCBkZXN0aW5hdGlv
bnMhCi0gICAgaWYgKCF2aWRlbyB8fCAhY2FudmFzKCkub3JpZ2luQ2xlYW4oKSkKKyAgICBpZiAo
IWNhbnZhcygpLm9yaWdpbkNsZWFuKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlm
ICghdmlkZW8tPmhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkpCisgICAgYXV0byYgc2NoZW1lUmVn
aXN0cnkgPSB2aWRlby5kb2N1bWVudCgpLnNjaGVtZVJlZ2lzdHJ5KCk7CisgICAgaWYgKCF2aWRl
by5oYXNTaW5nbGVTZWN1cml0eU9yaWdpbihzY2hlbWVSZWdpc3RyeSkpCiAgICAgICAgIHJldHVy
biB0cnVlOwogCi0gICAgaWYgKCEodmlkZW8tPnBsYXllcigpICYmIHZpZGVvLT5wbGF5ZXIoKS0+
ZGlkUGFzc0NPUlNBY2Nlc3NDaGVjaygpKSAmJiB3b3VsZFRhaW50T3JpZ2luKHZpZGVvLT5jdXJy
ZW50U3JjKCkpKQorICAgIGlmICghKHZpZGVvLnBsYXllcigpICYmIHZpZGVvLnBsYXllcigpLT5k
aWRQYXNzQ09SU0FjY2Vzc0NoZWNrKCkpICYmIHdvdWxkVGFpbnRPcmlnaW4odmlkZW8uY3VycmVu
dFNyYygpLCBzY2hlbWVSZWdpc3RyeSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAjZWxzZQpA
QCAtMTAzLDcgKzEwNCw3IEBAIGJvb2wgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6d291bGRUYWlu
dE8KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6
d291bGRUYWludE9yaWdpbihjb25zdCBVUkwmIHVybCkKK2Jvb2wgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDo6d291bGRUYWludE9yaWdpbihjb25zdCBVUkwmIHVybCwgY29uc3QgUGFnZVNjaGVtZVJl
Z2lzdHJ5JiBzY2hlbWVSZWdpc3RyeSkKIHsKICAgICBpZiAoIWNhbnZhcygpLm9yaWdpbkNsZWFu
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTExMSwxMyArMTEyLDcgQEAgYm9vbCBDYW52
YXNSZW5kZXJpbmdDb250ZXh0Ojp3b3VsZFRhaW50TwogICAgIGlmICh1cmwucHJvdG9jb2xJc0Rh
dGEoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuICFjYW52YXMoKS5zZWN1
cml0eU9yaWdpbigpLT5jYW5SZXF1ZXN0KHVybCk7Ci19Ci0KLXZvaWQgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDo6Y2hlY2tPcmlnaW4oY29uc3QgVVJMJiB1cmwpCi17Ci0gICAgaWYgKHdvdWxkVGFp
bnRPcmlnaW4odXJsKSkKLSAgICAgICAgY2FudmFzKCkuc2V0T3JpZ2luVGFpbnRlZCgpOworICAg
IHJldHVybiAhY2FudmFzKCkuc2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdCh1cmwsIHNjaGVt
ZVJlZ2lzdHJ5KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaAkocmV2
aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MiwxNyArNjIsMTYgQEAgcHVibGljOgog
cHJvdGVjdGVkOgogICAgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQoSFRNTENhbnZhc0VsZW1lbnQm
KTsKICAgICBib29sIHdvdWxkVGFpbnRPcmlnaW4oY29uc3QgQ2FudmFzUGF0dGVybiopOwotICAg
IGJvb2wgd291bGRUYWludE9yaWdpbihjb25zdCBIVE1MQ2FudmFzRWxlbWVudCopOwotICAgIGJv
b2wgd291bGRUYWludE9yaWdpbihjb25zdCBIVE1MSW1hZ2VFbGVtZW50Kik7Ci0gICAgYm9vbCB3
b3VsZFRhaW50T3JpZ2luKGNvbnN0IEhUTUxWaWRlb0VsZW1lbnQqKTsKLSAgICBib29sIHdvdWxk
VGFpbnRPcmlnaW4oY29uc3QgVVJMJik7CisgICAgYm9vbCB3b3VsZFRhaW50T3JpZ2luKGNvbnN0
IEhUTUxDYW52YXNFbGVtZW50Jik7CisgICAgYm9vbCB3b3VsZFRhaW50T3JpZ2luKGNvbnN0IEhU
TUxJbWFnZUVsZW1lbnQmKTsKKyAgICBib29sIHdvdWxkVGFpbnRPcmlnaW4oY29uc3QgSFRNTFZp
ZGVvRWxlbWVudCYpOworICAgIGJvb2wgd291bGRUYWludE9yaWdpbihjb25zdCBVUkwmLCBjb25z
dCBQYWdlU2NoZW1lUmVnaXN0cnkmKTsKIAotICAgIHRlbXBsYXRlPGNsYXNzIFQ+IHZvaWQgY2hl
Y2tPcmlnaW4oY29uc3QgVCogYXJnKQorICAgIHRlbXBsYXRlPGNsYXNzLi4uIFQ+IHZvaWQgY2hl
Y2tPcmlnaW4oVCYmLi4uIGFyZ3MpCiAgICAgewotICAgICAgICBpZiAod291bGRUYWludE9yaWdp
bihhcmcpKQorICAgICAgICBpZiAod291bGRUYWludE9yaWdpbihhcmdzLi4uKSkKICAgICAgICAg
ICAgIGNhbnZhcygpLnNldE9yaWdpblRhaW50ZWQoKTsKICAgICB9Ci0gICAgdm9pZCBjaGVja09y
aWdpbihjb25zdCBVUkwmKTsKIAogcHJpdmF0ZToKICAgICBIVE1MQ2FudmFzRWxlbWVudCYgbV9j
YW52YXM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdD
b250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TDJSZW5kZXJpbmdDb250ZXh0LmNwcAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEzMTQsNyArMTMxNCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFdlYkdMMlJlbmRlcmluZ0Nv
bnRleHQKIAogICAgICAgICByZXR1cm4geyB9OwogICAgIH0sIFsmXShjb25zdCBSZWZQdHI8SFRN
TEltYWdlRWxlbWVudD4mIGltYWdlKSAtPiBFeGNlcHRpb25Pcjx2b2lkPiB7Ci0gICAgICAgIGlm
ICh3b3VsZFRhaW50T3JpZ2luKGltYWdlLmdldCgpKSkKKyAgICAgICAgaWYgKCFpbWFnZSB8fCB3
b3VsZFRhaW50T3JpZ2luKCppbWFnZSkpCiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
U0VDVVJJVFlfRVJSIH07CiAgICAgICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwg
IXZhbGlkYXRlSFRNTEltYWdlRWxlbWVudCgidGV4U3ViSW1hZ2UyRCIsIGltYWdlLmdldCgpKSkK
ICAgICAgICAgICAgIHJldHVybiB7IH07CkBAIC0xMzMyLDcgKzEzMzIsNyBAQCBFeGNlcHRpb25P
cjx2b2lkPiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0CiAgICAgICAgIHRleFN1YkltYWdlMkRJbXBs
KHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIGZvcm1hdCwgdHlwZSwgaW1hZ2VGb3JS
ZW5kZXIuZ2V0KCksIEdyYXBoaWNzQ29udGV4dDNEOjpIdG1sRG9tSW1hZ2UsIG1fdW5wYWNrRmxp
cFksIG1fdW5wYWNrUHJlbXVsdGlwbHlBbHBoYSk7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAg
fSwgWyZdKGNvbnN0IFJlZlB0cjxIVE1MQ2FudmFzRWxlbWVudD4mIGNhbnZhcykgLT4gRXhjZXB0
aW9uT3I8dm9pZD4gewotICAgICAgICBpZiAod291bGRUYWludE9yaWdpbihjYW52YXMuZ2V0KCkp
KQorICAgICAgICBpZiAoIWNhbnZhcyB8fCB3b3VsZFRhaW50T3JpZ2luKCpjYW52YXMpKQogICAg
ICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNFQ1VSSVRZX0VSUiB9OwogICAgICAgICBpZiAo
aXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZUhUTUxDYW52YXNFbGVtZW50KCJ0
ZXhTdWJJbWFnZTJEIiwgY2FudmFzLmdldCgpKQogICAgICAgICAgICAgfHwgIXZhbGlkYXRlVGV4
RnVuYygidGV4U3ViSW1hZ2UyRCIsIFRleFN1YkltYWdlLCBTb3VyY2VIVE1MQ2FudmFzRWxlbWVu
dCwgdGFyZ2V0LCBsZXZlbCwgR3JhcGhpY3NDb250ZXh0M0Q6Ok5PTkUsIGNhbnZhcy0+d2lkdGgo
KSwgY2FudmFzLT5oZWlnaHQoKSwgMCwgZm9ybWF0LCB0eXBlLCB4b2Zmc2V0LCB5b2Zmc2V0KSkK
QEAgLTEzNDUsNyArMTM0NSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFdlYkdMMlJlbmRlcmluZ0Nv
bnRleHQKICAgICAgICAgICAgIHRleFN1YkltYWdlMkRJbXBsKHRhcmdldCwgbGV2ZWwsIHhvZmZz
ZXQsIHlvZmZzZXQsIGZvcm1hdCwgdHlwZSwgY2FudmFzLT5jb3BpZWRJbWFnZSgpLCBHcmFwaGlj
c0NvbnRleHQzRDo6SHRtbERvbUNhbnZhcywgbV91bnBhY2tGbGlwWSwgbV91bnBhY2tQcmVtdWx0
aXBseUFscGhhKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9LCBbJl0oY29uc3QgUmVmUHRy
PEhUTUxWaWRlb0VsZW1lbnQ+JiB2aWRlbykgLT4gRXhjZXB0aW9uT3I8dm9pZD4gewotICAgICAg
ICBpZiAod291bGRUYWludE9yaWdpbih2aWRlby5nZXQoKSkpCisgICAgICAgIGlmICghdmlkZW8g
fHwgd291bGRUYWludE9yaWdpbigqdmlkZW8pKQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IFNFQ1VSSVRZX0VSUiB9OwogICAgICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygp
IHx8ICF2YWxpZGF0ZUhUTUxWaWRlb0VsZW1lbnQoInRleFN1YkltYWdlMkQiLCB2aWRlby5nZXQo
KSkKICAgICAgICAgICAgIHx8ICF2YWxpZGF0ZVRleEZ1bmMoInRleFN1YkltYWdlMkQiLCBUZXhT
dWJJbWFnZSwgU291cmNlSFRNTFZpZGVvRWxlbWVudCwgdGFyZ2V0LCBsZXZlbCwgR3JhcGhpY3ND
b250ZXh0M0Q6Ok5PTkUsIHZpZGVvLT52aWRlb1dpZHRoKCksIHZpZGVvLT52aWRlb0hlaWdodCgp
LCAwLCBmb3JtYXQsIHR5cGUsIHhvZmZzZXQsIHlvZmZzZXQpKQpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCShyZXZp
c2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MTgsNyArNjE4LDcgQEAgRXhjZXB0aW9u
T3I8dm9pZD4gV2ViR0xSZW5kZXJpbmdDb250ZXh0OgogCiAgICAgICAgIHJldHVybiB7IH07CiAg
ICAgfSAsIFsmXShjb25zdCBSZWZQdHI8SFRNTEltYWdlRWxlbWVudD4mIGltYWdlKSAtPiBFeGNl
cHRpb25Pcjx2b2lkPiB7Ci0gICAgICAgIGlmICh3b3VsZFRhaW50T3JpZ2luKGltYWdlLmdldCgp
KSkKKyAgICAgICAgaWYgKCFpbWFnZSB8fCB3b3VsZFRhaW50T3JpZ2luKCppbWFnZSkpCiAgICAg
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU0VDVVJJVFlfRVJSIH07CiAgICAgICAgIGlmIChp
c0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlSFRNTEltYWdlRWxlbWVudCgidGV4
U3ViSW1hZ2UyRCIsIGltYWdlLmdldCgpKSkKICAgICAgICAgICAgIHJldHVybiB7IH07CkBAIC02
MzYsNyArNjM2LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gV2ViR0xSZW5kZXJpbmdDb250ZXh0Ogog
ICAgICAgICB0ZXhTdWJJbWFnZTJESW1wbCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0
LCBmb3JtYXQsIHR5cGUsIGltYWdlRm9yUmVuZGVyLmdldCgpLCBHcmFwaGljc0NvbnRleHQzRDo6
SHRtbERvbUltYWdlLCBtX3VucGFja0ZsaXBZLCBtX3VucGFja1ByZW11bHRpcGx5QWxwaGEpOwog
ICAgICAgICByZXR1cm4geyB9OwogICAgIH0sIFsmXShjb25zdCBSZWZQdHI8SFRNTENhbnZhc0Vs
ZW1lbnQ+JiBjYW52YXMpIC0+IEV4Y2VwdGlvbk9yPHZvaWQ+IHsKLSAgICAgICAgaWYgKHdvdWxk
VGFpbnRPcmlnaW4oY2FudmFzLmdldCgpKSkKKyAgICAgICAgaWYgKCFjYW52YXMgfHwgd291bGRU
YWludE9yaWdpbigqY2FudmFzKSkKICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTRUNV
UklUWV9FUlIgfTsKICAgICAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFs
aWRhdGVIVE1MQ2FudmFzRWxlbWVudCgidGV4U3ViSW1hZ2UyRCIsIGNhbnZhcy5nZXQoKSkKICAg
ICAgICAgICAgIHx8ICF2YWxpZGF0ZVRleEZ1bmMoInRleFN1YkltYWdlMkQiLCBUZXhTdWJJbWFn
ZSwgU291cmNlSFRNTENhbnZhc0VsZW1lbnQsIHRhcmdldCwgbGV2ZWwsIGZvcm1hdCwgY2FudmFz
LT53aWR0aCgpLCBjYW52YXMtPmhlaWdodCgpLCAwLCBmb3JtYXQsIHR5cGUsIHhvZmZzZXQsIHlv
ZmZzZXQpKQpAQCAtNjQ5LDcgKzY0OSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFdlYkdMUmVuZGVy
aW5nQ29udGV4dDoKICAgICAgICAgICAgIHRleFN1YkltYWdlMkRJbXBsKHRhcmdldCwgbGV2ZWws
IHhvZmZzZXQsIHlvZmZzZXQsIGZvcm1hdCwgdHlwZSwgY2FudmFzLT5jb3BpZWRJbWFnZSgpLCBH
cmFwaGljc0NvbnRleHQzRDo6SHRtbERvbUNhbnZhcywgbV91bnBhY2tGbGlwWSwgbV91bnBhY2tQ
cmVtdWx0aXBseUFscGhhKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9LCBbJl0oY29uc3Qg
UmVmUHRyPEhUTUxWaWRlb0VsZW1lbnQ+JiB2aWRlbykgLT4gRXhjZXB0aW9uT3I8dm9pZD4gewot
ICAgICAgICBpZiAod291bGRUYWludE9yaWdpbih2aWRlby5nZXQoKSkpCisgICAgICAgIGlmICgh
dmlkZW8gfHwgd291bGRUYWludE9yaWdpbigqdmlkZW8pKQogICAgICAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IFNFQ1VSSVRZX0VSUiB9OwogICAgICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVu
ZGluZygpIHx8ICF2YWxpZGF0ZUhUTUxWaWRlb0VsZW1lbnQoInRleFN1YkltYWdlMkQiLCB2aWRl
by5nZXQoKSkKICAgICAgICAgICAgIHx8ICF2YWxpZGF0ZVRleEZ1bmMoInRleFN1YkltYWdlMkQi
LCBUZXhTdWJJbWFnZSwgU291cmNlSFRNTFZpZGVvRWxlbWVudCwgdGFyZ2V0LCBsZXZlbCwgZm9y
bWF0LCB2aWRlby0+dmlkZW9XaWR0aCgpLCB2aWRlby0+dmlkZW9IZWlnaHQoKSwgMCwgZm9ybWF0
LCB0eXBlLCB4b2Zmc2V0LCB5b2Zmc2V0KSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCShyZXZpc2lv
biAyMDgzOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE4Miw3ICszMTgyLDcgQEAgRXhjZXB0
aW9uT3I8dm9pZD4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QgogICAgICAgICAgICAgbV9jb250ZXh0
LT5waXhlbFN0b3JlaShHcmFwaGljc0NvbnRleHQzRDo6VU5QQUNLX0FMSUdOTUVOVCwgbV91bnBh
Y2tBbGlnbm1lbnQpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0sIFsmXShjb25zdCBSZWZQ
dHI8SFRNTEltYWdlRWxlbWVudD4mIGltYWdlKSAtPiBFeGNlcHRpb25Pcjx2b2lkPiB7Ci0gICAg
ICAgIGlmICh3b3VsZFRhaW50T3JpZ2luKGltYWdlLmdldCgpKSkKKyAgICAgICAgaWYgKCFpbWFn
ZSB8fCB3b3VsZFRhaW50T3JpZ2luKCppbWFnZSkpCiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgU0VDVVJJVFlfRVJSIH07CiAgICAgICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5n
KCkgfHwgIXZhbGlkYXRlSFRNTEltYWdlRWxlbWVudCgidGV4SW1hZ2UyRCIsIGltYWdlLmdldCgp
KSkKICAgICAgICAgICAgIHJldHVybiB7IH07CkBAIC0zMjAwLDcgKzMyMDAsNyBAQCBFeGNlcHRp
b25Pcjx2b2lkPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCCiAgICAgICAgIHRleEltYWdlMkRJbXBs
KHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCBmb3JtYXQsIHR5cGUsIGltYWdlRm9yUmVu
ZGVyLmdldCgpLCBHcmFwaGljc0NvbnRleHQzRDo6SHRtbERvbUltYWdlLCBtX3VucGFja0ZsaXBZ
LCBtX3VucGFja1ByZW11bHRpcGx5QWxwaGEpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0s
IFsmXShjb25zdCBSZWZQdHI8SFRNTENhbnZhc0VsZW1lbnQ+JiBjYW52YXMpIC0+IEV4Y2VwdGlv
bk9yPHZvaWQ+IHsKLSAgICAgICAgaWYgKHdvdWxkVGFpbnRPcmlnaW4oY2FudmFzLmdldCgpKSkK
KyAgICAgICAgaWYgKCFjYW52YXMgfHwgd291bGRUYWludE9yaWdpbigqY2FudmFzKSkKICAgICAg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTRUNVUklUWV9FUlIgfTsKICAgICAgICAgaWYgKGlz
Q29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVIVE1MQ2FudmFzRWxlbWVudCgidGV4
SW1hZ2UyRCIsIGNhbnZhcy5nZXQoKSkgfHwgIXZhbGlkYXRlVGV4RnVuYygidGV4SW1hZ2UyRCIs
IFRleEltYWdlLCBTb3VyY2VIVE1MQ2FudmFzRWxlbWVudCwgdGFyZ2V0LCBsZXZlbCwgaW50ZXJu
YWxmb3JtYXQsIGNhbnZhcy0+d2lkdGgoKSwgY2FudmFzLT5oZWlnaHQoKSwgMCwgZm9ybWF0LCB0
eXBlLCAwLCAwKSkKICAgICAgICAgICAgIHJldHVybiB7IH07CkBAIC0zMjI5LDcgKzMyMjksNyBA
QCBFeGNlcHRpb25Pcjx2b2lkPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCCiAgICAgICAgICAgICB0
ZXhJbWFnZTJESW1wbCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgZm9ybWF0LCB0eXBl
LCBjYW52YXMtPmNvcGllZEltYWdlKCksIEdyYXBoaWNzQ29udGV4dDNEOjpIdG1sRG9tQ2FudmFz
LCBtX3VucGFja0ZsaXBZLCBtX3VucGFja1ByZW11bHRpcGx5QWxwaGEpOwogICAgICAgICByZXR1
cm4geyB9OwogICAgIH0sIFsmXShjb25zdCBSZWZQdHI8SFRNTFZpZGVvRWxlbWVudD4mIHZpZGVv
KSAtPiBFeGNlcHRpb25Pcjx2b2lkPiB7Ci0gICAgICAgIGlmICh3b3VsZFRhaW50T3JpZ2luKHZp
ZGVvLmdldCgpKSkKKyAgICAgICAgaWYgKCF2aWRlbyB8fCB3b3VsZFRhaW50T3JpZ2luKCp2aWRl
bykpCiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU0VDVVJJVFlfRVJSIH07CiAgICAg
ICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlSFRNTFZpZGVvRWxl
bWVudCgidGV4SW1hZ2UyRCIsIHZpZGVvLmdldCgpKQogICAgICAgICAgICAgfHwgIXZhbGlkYXRl
VGV4RnVuYygidGV4SW1hZ2UyRCIsIFRleEltYWdlLCBTb3VyY2VIVE1MVmlkZW9FbGVtZW50LCB0
YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgdmlkZW8tPnZpZGVvV2lkdGgoKSwgdmlkZW8t
PnZpZGVvSGVpZ2h0KCksIDAsIGZvcm1hdCwgdHlwZSwgMCwgMCkpCkBAIC00NTUxLDcgKzQ1NTEs
NyBAQCBXZWJHTEJ1ZmZlciogV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6CiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKLWJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVI
VE1MSW1hZ2VFbGVtZW50KGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgSFRNTEltYWdlRWxlbWVu
dCogaW1hZ2UpCitib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlSFRNTElt
YWdlRWxlbWVudChjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IEhUTUxJbWFnZUVsZW1l
bnQqIGltYWdlKQogewogICAgIGlmICghaW1hZ2UgfHwgIWltYWdlLT5jYWNoZWRJbWFnZSgpKSB7
CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZB
TFVFLCBmdW5jdGlvbk5hbWUsICJubyBpbWFnZSIpOwpAQCAtNDU2NSw3ICs0NTY1LDcgQEAgYm9v
bCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZQogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlSFRNTENhbnZhc0Vs
ZW1lbnQoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBIVE1MQ2FudmFzRWxlbWVudCogY2FudmFz
KQorYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUhUTUxDYW52YXNFbGVt
ZW50KGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgSFRNTENhbnZhc0VsZW1lbnQqIGNh
bnZhcykKIHsKICAgICBpZiAoIWNhbnZhcyB8fCAhY2FudmFzLT5idWZmZXIoKSkgewogICAgICAg
ICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSwgZnVu
Y3Rpb25OYW1lLCAibm8gY2FudmFzIik7CkBAIC00NTc2LDcgKzQ1NzYsNyBAQCBib29sIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlCiAKICNpZiBFTkFCTEUoVklERU8pCiAKLWJv
b2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVIVE1MVmlkZW9FbGVtZW50KGNv
bnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgSFRNTFZpZGVvRWxlbWVudCogdmlkZW8pCitib29sIFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlSFRNTFZpZGVvRWxlbWVudChjb25zdCBj
aGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IEhUTUxWaWRlb0VsZW1lbnQqIHZpZGVvKQogewogICAg
IGlmICghdmlkZW8gfHwgIXZpZGVvLT52aWRlb1dpZHRoKCkgfHwgIXZpZGVvLT52aWRlb0hlaWdo
dCgpKSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZB
TElEX1ZBTFVFLCBmdW5jdGlvbk5hbWUsICJubyB2aWRlbyIpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAko
cmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03NDksMTAgKzc0OSwxMCBAQCBw
cm90ZWN0ZWQ6CiAgICAgV2ViR0xCdWZmZXIqIHZhbGlkYXRlQnVmZmVyRGF0YVBhcmFtZXRlcnMo
Y29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHVzYWdl
KTsKIAogICAgIC8vIEhlbHBlciBmdW5jdGlvbiBmb3IgdGV4e1N1Yn1JbWFnZTJEIHRvIG1ha2Ug
c3VyZSBpbWFnZSBpcyByZWFkeS4KLSAgICBib29sIHZhbGlkYXRlSFRNTEltYWdlRWxlbWVudChj
b25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEhUTUxJbWFnZUVsZW1lbnQqKTsKLSAgICBib29sIHZh
bGlkYXRlSFRNTENhbnZhc0VsZW1lbnQoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBIVE1MQ2Fu
dmFzRWxlbWVudCopOworICAgIGJvb2wgdmFsaWRhdGVIVE1MSW1hZ2VFbGVtZW50KGNvbnN0IGNo
YXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgSFRNTEltYWdlRWxlbWVudCopOworICAgIGJvb2wgdmFs
aWRhdGVIVE1MQ2FudmFzRWxlbWVudChjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IEhU
TUxDYW52YXNFbGVtZW50Kik7CiAjaWYgRU5BQkxFKFZJREVPKQotICAgIGJvb2wgdmFsaWRhdGVI
VE1MVmlkZW9FbGVtZW50KGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgSFRNTFZpZGVvRWxlbWVu
dCopOworICAgIGJvb2wgdmFsaWRhdGVIVE1MVmlkZW9FbGVtZW50KGNvbnN0IGNoYXIqIGZ1bmN0
aW9uTmFtZSwgY29uc3QgSFRNTFZpZGVvRWxlbWVudCopOwogI2VuZGlmCiAKICAgICAvLyBIZWxw
ZXIgZnVuY3Rpb25zIGZvciB2ZXJ0ZXhBdHRyaWJOZnt2fS4KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwCShyZXZpc2lvbiAyMDgzOTgpCisrKyBT
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODYsMTIgKzg2LDEzIEBAIERPTVBhdGNoU3VwcG9ydDo6fkRPTVBhdGNoU3VwcG9ydCgp
IHsgfQogdm9pZCBET01QYXRjaFN1cHBvcnQ6OnBhdGNoRG9jdW1lbnQoY29uc3QgU3RyaW5nJiBt
YXJrdXApCiB7CiAgICAgUmVmUHRyPERvY3VtZW50PiBuZXdEb2N1bWVudDsKKyAgICBjb25zdCBh
dXRvJiBzY2hlbWVSZWdpc3RyeSA9IG1fZG9jdW1lbnQtPnNjaGVtZVJlZ2lzdHJ5KCk7CiAgICAg
aWYgKG1fZG9jdW1lbnQtPmlzSFRNTERvY3VtZW50KCkpCi0gICAgICAgIG5ld0RvY3VtZW50ID0g
SFRNTERvY3VtZW50OjpjcmVhdGUobnVsbHB0ciwgVVJMKCkpOworICAgICAgICBuZXdEb2N1bWVu
dCA9IEhUTUxEb2N1bWVudDo6Y3JlYXRlKG51bGxwdHIsIFVSTCgpLCBzY2hlbWVSZWdpc3RyeSk7
CiAgICAgZWxzZSBpZiAobV9kb2N1bWVudC0+aXNYSFRNTERvY3VtZW50KCkpCi0gICAgICAgIG5l
d0RvY3VtZW50ID0gWE1MRG9jdW1lbnQ6OmNyZWF0ZVhIVE1MKG51bGxwdHIsIFVSTCgpKTsKKyAg
ICAgICAgbmV3RG9jdW1lbnQgPSBYTUxEb2N1bWVudDo6Y3JlYXRlWEhUTUwobnVsbHB0ciwgVVJM
KCksIHNjaGVtZVJlZ2lzdHJ5KTsKICAgICBlbHNlIGlmIChtX2RvY3VtZW50LT5pc1NWR0RvY3Vt
ZW50KCkpCi0gICAgICAgIG5ld0RvY3VtZW50ID0gWE1MRG9jdW1lbnQ6OmNyZWF0ZShudWxscHRy
LCBVUkwoKSk7CisgICAgICAgIG5ld0RvY3VtZW50ID0gWE1MRG9jdW1lbnQ6OmNyZWF0ZShudWxs
cHRyLCBVUkwoKSwgc2NoZW1lUmVnaXN0cnkpOwogCiAgICAgQVNTRVJUKG5ld0RvY3VtZW50KTsK
ICAgICBSZWZQdHI8RG9jdW1lbnRQYXJzZXI+IHBhcnNlcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgsNiAr
NTgsNyBAQAogI2luY2x1ZGUgIk1haW5GcmFtZS5oIgogI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgi
CiAjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlBhZ2VTY2hlbWVSZWdpc3RyeS5oIgogI2lu
Y2x1ZGUgIlBvbGljeUNoZWNrZXIuaCIKICNpbmNsdWRlICJQcm9ncmVzc1RyYWNrZXIuaCIKICNp
bmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgpAQCAtMTI1LDEwICsxMjYsMTAgQEAgc3RhdGljIGJv
b2wgYXJlQWxsTG9hZGVyc1BhZ2VDYWNoZUFjY2VwdAogICAgIHJldHVybiB0cnVlOwogfQogCi1E
b2N1bWVudExvYWRlcjo6RG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXEs
IGNvbnN0IFN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkKK0RvY3VtZW50TG9hZGVyOjpE
b2N1bWVudExvYWRlcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcSwgY29uc3QgU3Vic3RpdHV0
ZURhdGEmIHN1YnN0aXR1dGVEYXRhLCBjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnkmIHNjaGVtZVJl
Z2lzdHJ5KQogICAgIDogbV9kZWZlck1haW5SZXNvdXJjZURhdGFMb2FkKHRydWUpCiAgICAgLCBt
X2ZyYW1lKG51bGxwdHIpCi0gICAgLCBtX2NhY2hlZFJlc291cmNlTG9hZGVyKENhY2hlZFJlc291
cmNlTG9hZGVyOjpjcmVhdGUodGhpcykpCisgICAgLCBtX2NhY2hlZFJlc291cmNlTG9hZGVyKENh
Y2hlZFJlc291cmNlTG9hZGVyOjpjcmVhdGUodGhpcywgc2NoZW1lUmVnaXN0cnkpKQogICAgICwg
bV93cml0ZXIobV9mcmFtZSkKICAgICAsIG1fb3JpZ2luYWxSZXF1ZXN0KHJlcSkKICAgICAsIG1f
c3Vic3RpdHV0ZURhdGEoc3Vic3RpdHV0ZURhdGEpCkBAIC0xNDksNyArMTUwLDggQEAgRG9jdW1l
bnRMb2FkZXI6OkRvY3VtZW50TG9hZGVyKGNvbnN0IFJlcwogICAgICwgbV9pZGVudGlmaWVyRm9y
TG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlcigwKQogICAgICwgbV9kYXRhTG9hZFRpbWVyKCp0aGlz
LCAmRG9jdW1lbnRMb2FkZXI6OmhhbmRsZVN1YnN0aXR1dGVEYXRhTG9hZE5vdykKICAgICAsIG1f
c3VicmVzb3VyY2VMb2FkZXJzQXJlUGFnZUNhY2hlQWNjZXB0YWJsZShmYWxzZSkKLSAgICAsIG1f
YXBwbGljYXRpb25DYWNoZUhvc3Qoc3RkOjptYWtlX3VuaXF1ZTxBcHBsaWNhdGlvbkNhY2hlSG9z
dD4oKnRoaXMpKQorICAgICwgbV9hcHBsaWNhdGlvbkNhY2hlSG9zdChzdGQ6Om1ha2VfdW5pcXVl
PEFwcGxpY2F0aW9uQ2FjaGVIb3N0PigqdGhpcywgc2NoZW1lUmVnaXN0cnkpKQorICAgICwgbV9z
Y2hlbWVSZWdpc3RyeShzY2hlbWVSZWdpc3RyeSkKIHsKIH0KIApAQCAtNTI1LDggKzUyNyw4IEBA
IHZvaWQgRG9jdW1lbnRMb2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXMKICAgICBpZiAoZGlkUmVj
ZWl2ZVJlZGlyZWN0UmVzcG9uc2UpIHsKICAgICAgICAgLy8gSWYgdGhlIHJlZGlyZWN0aW5nIHVy
bCBpcyBub3QgYWxsb3dlZCB0byBkaXNwbGF5IGNvbnRlbnQgZnJvbSB0aGUgdGFyZ2V0IG9yaWdp
biwKICAgICAgICAgLy8gdGhlbiBibG9jayB0aGUgcmVkaXJlY3QuCi0gICAgICAgIFJlZjxTZWN1
cml0eU9yaWdpbj4gcmVkaXJlY3RpbmdPcmlnaW4oU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShyZWRp
cmVjdFJlc3BvbnNlLnVybCgpKSk7Ci0gICAgICAgIGlmICghcmVkaXJlY3RpbmdPcmlnaW4uZ2V0
KCkuY2FuRGlzcGxheShuZXdSZXF1ZXN0LnVybCgpKSkgeworICAgICAgICBSZWY8U2VjdXJpdHlP
cmlnaW4+IHJlZGlyZWN0aW5nT3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUocmVkaXJlY3RS
ZXNwb25zZS51cmwoKSwgbV9zY2hlbWVSZWdpc3RyeS5nZXQoKSkpOworICAgICAgICBpZiAoIXJl
ZGlyZWN0aW5nT3JpZ2luLmdldCgpLmNhbkRpc3BsYXkobmV3UmVxdWVzdC51cmwoKSwgbV9zY2hl
bWVSZWdpc3RyeS5nZXQoKSkpIHsKICAgICAgICAgICAgIEZyYW1lTG9hZGVyOjpyZXBvcnRMb2Nh
bExvYWRGYWlsZWQobV9mcmFtZSwgbmV3UmVxdWVzdC51cmwoKS5zdHJpbmcoKSk7CiAgICAgICAg
ICAgICBjYW5jZWxNYWluUmVzb3VyY2VMb2FkKGZyYW1lTG9hZGVyKCktPmNhbmNlbGxlZEVycm9y
KG5ld1JlcXVlc3QpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTUzNiw3ICs1MzgsNyBAQCB2
b2lkIERvY3VtZW50TG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzCiAgICAgICAgICAgICBjYW5j
ZWxNYWluUmVzb3VyY2VMb2FkKGZyYW1lTG9hZGVyKCktPmJsb2NrZWRFcnJvcihuZXdSZXF1ZXN0
KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgdGltaW5nKCkuYWRk
UmVkaXJlY3QocmVkaXJlY3RSZXNwb25zZS51cmwoKSwgbmV3UmVxdWVzdC51cmwoKSk7CisgICAg
ICAgIHRpbWluZygpLmFkZFJlZGlyZWN0KHJlZGlyZWN0UmVzcG9uc2UudXJsKCksIG5ld1JlcXVl
c3QudXJsKCksIG1fc2NoZW1lUmVnaXN0cnkuZ2V0KCkpOwogICAgIH0KIAogICAgIEFTU0VSVCht
X2ZyYW1lKTsKQEAgLTY3MSw3ICs2NzMsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpyZXNwb25z
ZVJlY2VpdmVkKGNvCiAgICAgCiAgICAgYXV0byB1cmwgPSByZXNwb25zZS51cmwoKTsKIAotICAg
IENvbnRlbnRTZWN1cml0eVBvbGljeSBjb250ZW50U2VjdXJpdHlQb2xpY3koU2VjdXJpdHlPcmln
aW46OmNyZWF0ZSh1cmwpLCBtX2ZyYW1lKTsKKyAgICBDb250ZW50U2VjdXJpdHlQb2xpY3kgY29u
dGVudFNlY3VyaXR5UG9saWN5KFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodXJsLCBtX3NjaGVtZVJl
Z2lzdHJ5LmdldCgpKSwgbV9mcmFtZSk7CiAgICAgY29udGVudFNlY3VyaXR5UG9saWN5LmRpZFJl
Y2VpdmVIZWFkZXJzKENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyhyZXNwb25z
ZSkpOwogICAgIGlmICghY29udGVudFNlY3VyaXR5UG9saWN5LmFsbG93RnJhbWVBbmNlc3RvcnMo
Km1fZnJhbWUsIHVybCkpIHsKICAgICAgICAgc3RvcExvYWRpbmdBZnRlclhGcmFtZU9wdGlvbnNP
ckNvbnRlbnRTZWN1cml0eVBvbGljeURlbmllZChpZGVudGlmaWVyLCByZXNwb25zZSk7CkBAIC0x
MTMwLDcgKzExMzIsNyBAQCBib29sIERvY3VtZW50TG9hZGVyOjptYXliZUNyZWF0ZUFyY2hpdmUo
CiAKICNpZiBFTkFCTEUoV0VCX0FSQ0hJVkUpIHx8IEVOQUJMRShNSFRNTCkKIAotdm9pZCBEb2N1
bWVudExvYWRlcjo6c2V0QXJjaGl2ZShQYXNzUmVmUHRyPEFyY2hpdmU+IGFyY2hpdmUpCit2b2lk
IERvY3VtZW50TG9hZGVyOjpzZXRBcmNoaXZlKFJlZlB0cjxBcmNoaXZlPiYmIGFyY2hpdmUpCiB7
CiAgICAgbV9hcmNoaXZlID0gYXJjaGl2ZTsKICAgICBhZGRBbGxBcmNoaXZlUmVzb3VyY2VzKG1f
YXJjaGl2ZS5nZXQoKSk7CkBAIC0xMTU4LDkgKzExNjAsOSBAQCB2b2lkIERvY3VtZW50TG9hZGVy
OjphZGRBcmNoaXZlUmVzb3VyY2UoCiAgICAgbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLT5h
ZGRSZXNvdXJjZShXVEZNb3ZlKHJlc291cmNlKSk7CiB9CiAKLVBhc3NSZWZQdHI8QXJjaGl2ZT4g
RG9jdW1lbnRMb2FkZXI6OnBvcEFyY2hpdmVGb3JTdWJmcmFtZShjb25zdCBTdHJpbmcmIGZyYW1l
TmFtZSwgY29uc3QgVVJMJiB1cmwpCitSZWZQdHI8QXJjaGl2ZT4gRG9jdW1lbnRMb2FkZXI6OnBv
cEFyY2hpdmVGb3JTdWJmcmFtZShjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgVVJMJiB1
cmwpCiB7Ci0gICAgcmV0dXJuIG1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbiA/IG1fYXJjaGl2
ZVJlc291cmNlQ29sbGVjdGlvbi0+cG9wU3ViZnJhbWVBcmNoaXZlKGZyYW1lTmFtZSwgdXJsKSA6
IFBhc3NSZWZQdHI8QXJjaGl2ZT4obnVsbHB0cik7CisgICAgcmV0dXJuIG1fYXJjaGl2ZVJlc291
cmNlQ29sbGVjdGlvbiA/IG1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbi0+cG9wU3ViZnJhbWVB
cmNoaXZlKGZyYW1lTmFtZSwgdXJsKSA6IG51bGxwdHI7CiB9CiAKIHZvaWQgRG9jdW1lbnRMb2Fk
ZXI6OmNsZWFyQXJjaGl2ZVJlc291cmNlcygpCkBAIC0xMTk2LDcgKzExOTgsNyBAQCBSZWZQdHI8
QXJjaGl2ZVJlc291cmNlPiBEb2N1bWVudExvYWRlcjo6CiAgICAgcmV0dXJuIEFyY2hpdmVSZXNv
dXJjZTo6Y3JlYXRlKFdURk1vdmUoZGF0YSksIHJlc3BvbnNlLnVybCgpLCByZXNwb25zZS5taW1l
VHlwZSgpLCByZXNwb25zZS50ZXh0RW5jb2RpbmdOYW1lKCksIGZyYW1lKCktPnRyZWUoKS51bmlx
dWVOYW1lKCkpOwogfQogCi1QYXNzUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gRG9jdW1lbnRMb2Fk
ZXI6OnN1YnJlc291cmNlKGNvbnN0IFVSTCYgdXJsKSBjb25zdAorUmVmUHRyPEFyY2hpdmVSZXNv
dXJjZT4gRG9jdW1lbnRMb2FkZXI6OnN1YnJlc291cmNlKGNvbnN0IFVSTCYgdXJsKSBjb25zdAog
ewogICAgIGlmICghaXNDb21taXR0ZWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0x
NTc4LDcgKzE1ODAsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFydExvYWRpbmdNYWluUmVz
CiAgICAgICAgIC8vIElmIHRoZSBsb2FkIHdhcyBhYm9ydGVkIGJ5IGNsZWFyaW5nIG1fcmVxdWVz
dCwgaXQncyBwb3NzaWJsZSB0aGUgQXBwbGljYXRpb25DYWNoZUhvc3QKICAgICAgICAgLy8gaXMg
bm93IGluIGEgc3RhdGUgd2hlcmUgc3RhcnRpbmcgYW4gZW1wdHkgbG9hZCB3aWxsIGJlIGluY29u
c2lzdGVudC4gUmVwbGFjZSBpdCB3aXRoCiAgICAgICAgIC8vIGEgbmV3IEFwcGxpY2F0aW9uQ2Fj
aGVIb3N0LgotICAgICAgICBtX2FwcGxpY2F0aW9uQ2FjaGVIb3N0ID0gc3RkOjptYWtlX3VuaXF1
ZTxBcHBsaWNhdGlvbkNhY2hlSG9zdD4oKnRoaXMpOworICAgICAgICBtX2FwcGxpY2F0aW9uQ2Fj
aGVIb3N0ID0gc3RkOjptYWtlX3VuaXF1ZTxBcHBsaWNhdGlvbkNhY2hlSG9zdD4oKnRoaXMsIG1f
c2NoZW1lUmVnaXN0cnkuZ2V0KCkpOwogICAgICAgICBtYXliZUxvYWRFbXB0eSgpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmgJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC03MSw3ICs3MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICBjbGFzcyBGb3JtU3RhdGU7CiAgICAgY2xhc3MgRnJhbWU7CiAgICAgY2xhc3MgRnJh
bWVMb2FkZXI7Ci0gICAgY2xhc3MgUGFnZTsKKyAgICBjbGFzcyBQYWdlU2NoZW1lUmVnaXN0cnk7
CiAgICAgY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiAgICAgY2xhc3MgU2hhcmVkQnVmZmVyOwogICAg
IGNsYXNzIFN1YnJlc291cmNlTG9hZGVyOwpAQCAtODQsOSArODQsOSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBmcmllbmQg
Y2xhc3MgQ29udGVudEZpbHRlcjsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBSZWY8RG9j
dW1lbnRMb2FkZXI+IGNyZWF0ZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0
IFN1YnN0aXR1dGVEYXRhJiBkYXRhKQorICAgICAgICBzdGF0aWMgUmVmPERvY3VtZW50TG9hZGVy
PiBjcmVhdGUoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdWJzdGl0dXRl
RGF0YSYgZGF0YSwgY29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5JiBzY2hlbWVSZWdpc3RyeSkKICAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRG9jdW1lbnRMb2FkZXIo
cmVxdWVzdCwgZGF0YSkpOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRG9jdW1l
bnRMb2FkZXIocmVxdWVzdCwgZGF0YSwgc2NoZW1lUmVnaXN0cnkpKTsKICAgICAgICAgfQogICAg
ICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5Eb2N1bWVudExvYWRlcigpOwogCkBAIC05OCw2
ICs5OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgRnJh
bWVMb2FkZXIqIGZyYW1lTG9hZGVyKCkgY29uc3Q7CiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIFN1
YnJlc291cmNlTG9hZGVyKiBtYWluUmVzb3VyY2VMb2FkZXIoKSBjb25zdDsKICAgICAgICAgV0VC
Q09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSgpIGNvbnN0
OworICAgICAgICBjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnkmIHNjaGVtZVJlZ2lzdHJ5KCkgY29u
c3QgeyByZXR1cm4gbV9zY2hlbWVSZWdpc3RyeS5nZXQoKTsgfQogICAgICAgICAKICAgICAgICAg
RG9jdW1lbnRXcml0ZXImIHdyaXRlcigpIGNvbnN0IHsgcmV0dXJuIG1fd3JpdGVyOyB9CiAKQEAg
LTE1MSwxMCArMTUyLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgogCiAjaWYgRU5B
QkxFKFdFQl9BUkNISVZFKSB8fCBFTkFCTEUoTUhUTUwpCi0gICAgICAgIHZvaWQgc2V0QXJjaGl2
ZShQYXNzUmVmUHRyPEFyY2hpdmU+KTsKKyAgICAgICAgdm9pZCBzZXRBcmNoaXZlKFJlZlB0cjxB
cmNoaXZlPiYmKTsKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRBbGxBcmNoaXZlUmVz
b3VyY2VzKEFyY2hpdmUqKTsKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRBcmNoaXZl
UmVzb3VyY2UoUmVmPEFyY2hpdmVSZXNvdXJjZT4mJik7Ci0gICAgICAgIFBhc3NSZWZQdHI8QXJj
aGl2ZT4gcG9wQXJjaGl2ZUZvclN1YmZyYW1lKGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25z
dCBVUkwmKTsKKyAgICAgICAgUmVmUHRyPEFyY2hpdmU+IHBvcEFyY2hpdmVGb3JTdWJmcmFtZShj
b25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgVVJMJik7CiAgICAgICAgIFdFQkNPUkVfRVhQ
T1JUIFNoYXJlZEJ1ZmZlciogcGFyc2VkQXJjaGl2ZURhdGEoKSBjb25zdDsKIAogICAgICAgICBX
RUJDT1JFX0VYUE9SVCBib29sIHNjaGVkdWxlQXJjaGl2ZUxvYWQoUmVzb3VyY2VMb2FkZXImLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKQEAgLTE2OCw3ICsxNjksNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKICAgICAgICAgLy8gUmV0dXJuIGFuIEFyY2hpdmVSZXNvdXJjZSBmb3IgdGhlIFVS
TCwgZWl0aGVyIGNyZWF0aW5nIGZyb20gbGl2ZSBkYXRhIG9yCiAgICAgICAgIC8vIHB1bGxpbmcg
ZnJvbSB0aGUgQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbgotICAgICAgICBXRUJDT1JFX0VYUE9S
VCBQYXNzUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gc3VicmVzb3VyY2UoY29uc3QgVVJMJikgY29u
c3Q7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IHN1YnJl
c291cmNlKGNvbnN0IFVSTCYpIGNvbnN0OwogICAgICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8
UmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4+IHN1YnJlc291cmNlcygpIGNvbnN0OwogCiAjaWZuZGVm
IE5ERUJVRwpAQCAtMjkwLDcgKzI5MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
Ym9vbCBpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSBjb25zdDsKIAogICAgIHByb3RlY3RlZDoK
LSAgICAgICAgV0VCQ09SRV9FWFBPUlQgRG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgU3Vic3RpdHV0ZURhdGEmKTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgRG9j
dW1lbnRMb2FkZXIoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3Vic3RpdHV0ZURhdGEm
LCBjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnkmKTsKIAogICAgICAgICBXRUJDT1JFX0VYUE9SVCB2
aXJ0dWFsIHZvaWQgYXR0YWNoVG9GcmFtZSgpOwogCkBAIC0zODMsNyArMzg0LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICBSZXNvdXJjZVJlcXVlc3QgbV9yZXF1ZXN0OwogCiAgICAg
ICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKLSAgICAKKwogICAgICAgICBSZXNvdXJj
ZUVycm9yIG1fbWFpbkRvY3VtZW50RXJyb3I7ICAgIAogCiAgICAgICAgIGJvb2wgbV9vcmlnaW5h
bFN1YnN0aXR1dGVEYXRhV2FzVmFsaWQ7CkBAIC00NDgsNiArNDQ5LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IG1fc2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeSB7IFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3Vs
ZE5vdEFsbG93IH07CiAKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEFwcGxpY2F0aW9uQ2FjaGVI
b3N0PiBtX2FwcGxpY2F0aW9uQ2FjaGVIb3N0OworICAgICAgICBSZWY8Y29uc3QgUGFnZVNjaGVt
ZVJlZ2lzdHJ5PiBtX3NjaGVtZVJlZ2lzdHJ5OwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HKQogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudEZpbHRlcj4gbV9jb250ZW50Rmls
dGVyOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFk
YWJsZUxvYWRlci5jcHAJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Niw3ICs4
Niw3IEBAIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6RG9jdW1lbnRUaHJlYWQKICAgICAsIG1f
b3B0aW9ucyhvcHRpb25zKQogICAgICwgbV9vcmlnaW4oV1RGTW92ZShvcmlnaW4pKQogICAgICwg
bV9yZWZlcnJlcihXVEZNb3ZlKHJlZmVycmVyKSkKLSAgICAsIG1fc2FtZU9yaWdpblJlcXVlc3Qo
c2VjdXJpdHlPcmlnaW4oKS5jYW5SZXF1ZXN0KHJlcXVlc3QudXJsKCkpKQorICAgICwgbV9zYW1l
T3JpZ2luUmVxdWVzdChzZWN1cml0eU9yaWdpbigpLmNhblJlcXVlc3QocmVxdWVzdC51cmwoKSwg
ZG9jdW1lbnQuc2NoZW1lUmVnaXN0cnkoKSkpCiAgICAgLCBtX3NpbXBsZVJlcXVlc3QodHJ1ZSkK
ICAgICAsIG1fYXN5bmMoYmxvY2tpbmdCZWhhdmlvciA9PSBMb2FkQXN5bmNocm9ub3VzbHkpCiAg
ICAgLCBtX2NvbnRlbnRTZWN1cml0eVBvbGljeShXVEZNb3ZlKGNvbnRlbnRTZWN1cml0eVBvbGlj
eSkpCkBAIC00ODQsNyArNDg0LDcgQEAgYm9vbCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6Omlz
QWxsb3dlZAogICAgIGlmIChtX29wdGlvbnMubW9kZSA9PSBGZXRjaE9wdGlvbnM6Ok1vZGU6Ok5v
Q29ycykKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICByZXR1cm4gbV9zYW1lT3JpZ2luUmVx
dWVzdCAmJiBzZWN1cml0eU9yaWdpbigpLmNhblJlcXVlc3QodXJsKTsKKyAgICByZXR1cm4gbV9z
YW1lT3JpZ2luUmVxdWVzdCAmJiBzZWN1cml0eU9yaWdpbigpLmNhblJlcXVlc3QodXJsLCBtX2Rv
Y3VtZW50LnNjaGVtZVJlZ2lzdHJ5KCkpOwogfQogCiBib29sIERvY3VtZW50VGhyZWFkYWJsZUxv
YWRlcjo6aXNYTUxIdHRwUmVxdWVzdCgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRXcml0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudFdyaXRlci5jcHAJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudFdyaXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMSwxNCArMTEx
LDE0IEBAIHZvaWQgRG9jdW1lbnRXcml0ZXI6OmJlZ2luKCkKIFJlZjxEb2N1bWVudD4gRG9jdW1l
bnRXcml0ZXI6OmNyZWF0ZURvY3VtZW50KGNvbnN0IFVSTCYgdXJsKQogewogICAgIGlmICghbV9m
cmFtZS0+bG9hZGVyKCkuc3RhdGVNYWNoaW5lKCkuaXNEaXNwbGF5aW5nSW5pdGlhbEVtcHR5RG9j
dW1lbnQoKSAmJiBtX2ZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5zaG91bGRBbHdheXNVc2VQbHVn
aW5Eb2N1bWVudChtX21pbWVUeXBlKSkKLSAgICAgICAgcmV0dXJuIFBsdWdpbkRvY3VtZW50Ojpj
cmVhdGUobV9mcmFtZSwgdXJsKTsKKyAgICAgICAgcmV0dXJuIFBsdWdpbkRvY3VtZW50OjpjcmVh
dGUobV9mcmFtZSwgdXJsLCBtX2ZyYW1lLT5zY2hlbWVSZWdpc3RyeSgpKTsKICNpZiBQTEFURk9S
TShJT1MpCiAgICAgaWYgKE1JTUVUeXBlUmVnaXN0cnk6OmlzUERGTUlNRVR5cGUobV9taW1lVHlw
ZSkgJiYgKG1fZnJhbWUtPmlzTWFpbkZyYW1lKCkgfHwgIW1fZnJhbWUtPnNldHRpbmdzKCkudXNl
SW1hZ2VEb2N1bWVudEZvclN1YmZyYW1lUERGKCkpKQotICAgICAgICByZXR1cm4gU2lua0RvY3Vt
ZW50OjpjcmVhdGUobV9mcmFtZSwgdXJsKTsKKyAgICAgICAgcmV0dXJuIFNpbmtEb2N1bWVudDo6
Y3JlYXRlKG1fZnJhbWUsIHVybCwgbV9mcmFtZS0+c2NoZW1lUmVnaXN0cnkoKSk7CiAjZW5kaWYK
ICAgICBpZiAoIW1fZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmhhc0hUTUxWaWV3KCkpCi0gICAg
ICAgIHJldHVybiBEb2N1bWVudDo6Y3JlYXRlTm9uUmVuZGVyZWRQbGFjZWhvbGRlcihtX2ZyYW1l
LCB1cmwpOwotICAgIHJldHVybiBET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQobV9t
aW1lVHlwZSwgbV9mcmFtZSwgdXJsKTsKKyAgICAgICAgcmV0dXJuIERvY3VtZW50OjpjcmVhdGVO
b25SZW5kZXJlZFBsYWNlaG9sZGVyKG1fZnJhbWUsIHVybCwgbV9mcmFtZS0+c2NoZW1lUmVnaXN0
cnkoKSk7CisgICAgcmV0dXJuIERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVudChtX21p
bWVUeXBlLCBtX2ZyYW1lLCB1cmwsIG1fZnJhbWUtPnNjaGVtZVJlZ2lzdHJ5KCkpOwogfQogCiB2
b2lkIERvY3VtZW50V3JpdGVyOjpiZWdpbihjb25zdCBVUkwmIHVybFJlZmVyZW5jZSwgYm9vbCBk
aXNwYXRjaCwgRG9jdW1lbnQqIG93bmVyRG9jdW1lbnQpCkBAIC0xMzUsMTEgKzEzNSwxMSBAQCB2
b2lkIERvY3VtZW50V3JpdGVyOjpiZWdpbihjb25zdCBVUkwmIHVyCiAgICAgLy8gSWYgdGhlIG5l
dyBkb2N1bWVudCBpcyBmb3IgYSBQbHVnaW4gYnV0IHdlJ3JlIHN1cHBvc2VkIHRvIGJlIHNhbmRi
b3hlZCBmcm9tIFBsdWdpbnMsCiAgICAgLy8gdGhlbiByZXBsYWNlIHRoZSBkb2N1bWVudCB3aXRo
IG9uZSB3aG9zZSBwYXJzZXIgd2lsbCBpZ25vcmUgdGhlIGluY29taW5nIGRhdGEgKGJ1ZyAzOTMy
MykKICAgICBpZiAoZG9jdW1lbnQtPmlzUGx1Z2luRG9jdW1lbnQoKSAmJiBkb2N1bWVudC0+aXNT
YW5kYm94ZWQoU2FuZGJveFBsdWdpbnMpKQotICAgICAgICBkb2N1bWVudCA9IFNpbmtEb2N1bWVu
dDo6Y3JlYXRlKG1fZnJhbWUsIHVybCk7CisgICAgICAgIGRvY3VtZW50ID0gU2lua0RvY3VtZW50
OjpjcmVhdGUobV9mcmFtZSwgdXJsLCBkb2N1bWVudC0+c2NoZW1lUmVnaXN0cnkoKSk7CiAKICAg
ICAvLyBGSVhNRTogRG8gd2UgbmVlZCB0byBjb25zdWx0IHRoZSBjb250ZW50IHNlY3VyaXR5IHBv
bGljeSBoZXJlIGFib3V0IGJsb2NrZWQgcGx1Zy1pbnM/CiAKLSAgICBib29sIHNob3VsZFJldXNl
RGVmYXVsdFZpZXcgPSBtX2ZyYW1lLT5sb2FkZXIoKS5zdGF0ZU1hY2hpbmUoKS5pc0Rpc3BsYXlp
bmdJbml0aWFsRW1wdHlEb2N1bWVudCgpICYmIG1fZnJhbWUtPmRvY3VtZW50KCktPmlzU2VjdXJl
VHJhbnNpdGlvblRvKHVybCk7CisgICAgYm9vbCBzaG91bGRSZXVzZURlZmF1bHRWaWV3ID0gbV9m
cmFtZS0+bG9hZGVyKCkuc3RhdGVNYWNoaW5lKCkuaXNEaXNwbGF5aW5nSW5pdGlhbEVtcHR5RG9j
dW1lbnQoKSAmJiBtX2ZyYW1lLT5kb2N1bWVudCgpLT5pc1NlY3VyZVRyYW5zaXRpb25Ubyh1cmws
IG1fZnJhbWUtPnNjaGVtZVJlZ2lzdHJ5KCkpOwogICAgIGlmIChzaG91bGRSZXVzZURlZmF1bHRW
aWV3KQogICAgICAgICBkb2N1bWVudC0+dGFrZURPTVdpbmRvd0Zyb20obV9mcmFtZS0+ZG9jdW1l
bnQoKSk7CiAgICAgZWxzZQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5j
cHAJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVu
dHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiSW5Qcm9j
ZXNzSURCU2VydmVyLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VDb25maWd1
cmF0aW9uLmgiCisjaW5jbHVkZSAiUGFnZVNjaGVtZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiUGF5
bWVudENvb3JkaW5hdG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAiUGx1Z2luSW5mb1Byb3ZpZGVyLmgi
CiAjaW5jbHVkZSAiU3RvcmFnZUFyZWEuaCIKQEAgLTE4Miw3ICsxODMsNyBAQCB2b2lkIGZpbGxX
aXRoRW1wdHlDbGllbnRzKFBhZ2VDb25maWd1cmF0CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uYmFj
a0ZvcndhcmRDbGllbnQgPSBhZG9wdFJlZihuZXcgRW1wdHlCYWNrRm9yd2FyZENsaWVudCk7CiAg
ICAgcGFnZUNvbmZpZ3VyYXRpb24uZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEVtcHR5RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ+KCk7CiAKLSAgICBwYWdlQ29uZmln
dXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSA9IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
OjpjcmVhdGUoU3RyaW5nKCksIFN0cmluZygpKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi5hcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZSA9IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjcmVhdGUoU3Ry
aW5nKCksIFN0cmluZygpLCBQYWdlU2NoZW1lUmVnaXN0cnk6OmNyZWF0ZSgpKTsKICAgICBwYWdl
Q29uZmlndXJhdGlvbi5kYXRhYmFzZVByb3ZpZGVyID0gYWRvcHRSZWYobmV3IEVtcHR5RGF0YWJh
c2VQcm92aWRlcik7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24ucGx1Z2luSW5mb1Byb3ZpZGVyID0g
YWRvcHRSZWYobmV3IEVtcHR5UGx1Z2luSW5mb1Byb3ZpZGVyKTsKICAgICBwYWdlQ29uZmlndXJh
dGlvbi5zdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgPSBhZG9wdFJlZihuZXcgRW1wdHlTdG9yYWdl
TmFtZXNwYWNlUHJvdmlkZXIpOwpAQCAtMjQ4LDcgKzI0OSw3IEBAIHZvaWQgRW1wdHlGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hXaWwKIAogUmVmPERvY3VtZW50TG9hZGVyPiBFbXB0eUZyYW1l
TG9hZGVyQ2xpZW50OjpjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkKIHsKLSAgICBy
ZXR1cm4gRG9jdW1lbnRMb2FkZXI6OmNyZWF0ZShyZXF1ZXN0LCBzdWJzdGl0dXRlRGF0YSk7Cisg
ICAgcmV0dXJuIERvY3VtZW50TG9hZGVyOjpjcmVhdGUocmVxdWVzdCwgc3Vic3RpdHV0ZURhdGEs
IFBhZ2VTY2hlbWVSZWdpc3RyeTo6Y3JlYXRlKCkpOwogfQogCiBSZWZQdHI8RnJhbWU+IEVtcHR5
RnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUZyYW1lKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYs
IEhUTUxGcmFtZU93bmVyRWxlbWVudCosIGNvbnN0IFN0cmluZyYsIGJvb2wsIGludCwgaW50KQpJ
bmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZpc2lvbiAyMDgzOTgp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC04OTEsNyArODkxLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFVSTEludG9DaGlsZEZy
YW1lKAogfQogCiAjaWYgRU5BQkxFKFdFQl9BUkNISVZFKSB8fCBFTkFCTEUoTUhUTUwpCi12b2lk
IEZyYW1lTG9hZGVyOjpsb2FkQXJjaGl2ZShQYXNzUmVmUHRyPEFyY2hpdmU+IGFyY2hpdmUpCit2
b2lkIEZyYW1lTG9hZGVyOjpsb2FkQXJjaGl2ZShSZWZQdHI8QXJjaGl2ZT4mJiBhcmNoaXZlKQog
ewogICAgIEFyY2hpdmVSZXNvdXJjZSogbWFpblJlc291cmNlID0gYXJjaGl2ZS0+bWFpblJlc291
cmNlKCk7CiAgICAgQVNTRVJUKG1haW5SZXNvdXJjZSk7CkBAIC0xMTE3LDcgKzExMTcsNyBAQCB2
b2lkIEZyYW1lTG9hZGVyOjpsb2FkRnJhbWVSZXF1ZXN0KGNvbnN0CiAgICAgVVJMIHVybCA9IHJl
cXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCk7CiAKICAgICBBU1NFUlQobV9mcmFtZS5kb2N1
bWVudCgpKTsKLSAgICBpZiAoIXJlcXVlc3QucmVxdWVzdGVyKCktPmNhbkRpc3BsYXkodXJsKSkg
eworICAgIGlmICghcmVxdWVzdC5yZXF1ZXN0ZXIoKS0+Y2FuRGlzcGxheSh1cmwsIG1fZnJhbWUu
c2NoZW1lUmVnaXN0cnkoKSkpIHsKICAgICAgICAgcmVwb3J0TG9jYWxMb2FkRmFpbGVkKCZtX2Zy
YW1lLCB1cmwuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkpOwogICAgICAgICByZXR1
cm47CiAgICAgfQpAQCAtMTEyNiw3ICsxMTI2LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZEZy
YW1lUmVxdWVzdChjb25zdAogICAgIGlmIChhcmdzUmVmZXJyZXIuaXNFbXB0eSgpKQogICAgICAg
ICBhcmdzUmVmZXJyZXIgPSBvdXRnb2luZ1JlZmVycmVyKCk7CiAKLSAgICBTdHJpbmcgcmVmZXJy
ZXIgPSBTZWN1cml0eVBvbGljeTo6Z2VuZXJhdGVSZWZlcnJlckhlYWRlcihtX2ZyYW1lLmRvY3Vt
ZW50KCktPnJlZmVycmVyUG9saWN5KCksIHVybCwgYXJnc1JlZmVycmVyKTsKKyAgICBTdHJpbmcg
cmVmZXJyZXIgPSBTZWN1cml0eVBvbGljeTo6Z2VuZXJhdGVSZWZlcnJlckhlYWRlcihtX2ZyYW1l
LmRvY3VtZW50KCktPnJlZmVycmVyUG9saWN5KCksIHVybCwgYXJnc1JlZmVycmVyLCBtX2ZyYW1l
LnNjaGVtZVJlZ2lzdHJ5KCkpOwogICAgIGlmIChyZXF1ZXN0LnNob3VsZFNlbmRSZWZlcnJlcigp
ID09IE5ldmVyU2VuZFJlZmVycmVyKQogICAgICAgICByZWZlcnJlciA9IFN0cmluZygpOwogCkBA
IC0xMTgyLDcgKzExODIsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkVVJMKGNvbnN0IEZyYW1l
TG9hCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QobmV3VVJMKTsKICAgICBpZiAoIXJlZmVy
cmVyLmlzRW1wdHkoKSkgewogICAgICAgICByZXF1ZXN0LnNldEhUVFBSZWZlcnJlcihyZWZlcnJl
cik7Ci0gICAgICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gcmVmZXJyZXJPcmlnaW4gPSBTZWN1
cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhyZWZlcnJlcik7CisgICAgICAgIFJlZlB0cjxT
ZWN1cml0eU9yaWdpbj4gcmVmZXJyZXJPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJv
bVN0cmluZyhyZWZlcnJlciwgbV9mcmFtZS5zY2hlbWVSZWdpc3RyeSgpKTsKICAgICAgICAgYWRk
SFRUUE9yaWdpbklmTmVlZGVkKHJlcXVlc3QsIHJlZmVycmVyT3JpZ2luLT50b1N0cmluZygpKTsK
ICAgICB9CiAjaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElPTklORykKQEAgLTE3ODgsOCArMTc4OCw4
IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNvbW1pdFByb3Zpc2lvbmFsTG9hZCgKIAogICAgIGlmIChw
ZGwgJiYgbV9kb2N1bWVudExvYWRlcikgewogICAgICAgICAvLyBDaGVjayBpZiB0aGUgZGVzdGlu
YXRpb24gcGFnZSBpcyBhbGxvd2VkIHRvIGFjY2VzcyB0aGUgcHJldmlvdXMgcGFnZSdzIHRpbWlu
ZyBpbmZvcm1hdGlvbi4KLSAgICAgICAgUmVmPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdp
bihTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHBkbC0+cmVxdWVzdCgpLnVybCgpKSk7Ci0gICAgICAg
IG1fZG9jdW1lbnRMb2FkZXItPnRpbWluZygpLnNldEhhc1NhbWVPcmlnaW5Bc1ByZXZpb3VzRG9j
dW1lbnQoc2VjdXJpdHlPcmlnaW4uZ2V0KCkuY2FuUmVxdWVzdChtX3ByZXZpb3VzVVJMKSk7Cisg
ICAgICAgIFJlZjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4oU2VjdXJpdHlPcmlnaW46
OmNyZWF0ZShwZGwtPnJlcXVlc3QoKS51cmwoKSwgbV9mcmFtZS5zY2hlbWVSZWdpc3RyeSgpKSk7
CisgICAgICAgIG1fZG9jdW1lbnRMb2FkZXItPnRpbWluZygpLnNldEhhc1NhbWVPcmlnaW5Bc1By
ZXZpb3VzRG9jdW1lbnQoc2VjdXJpdHlPcmlnaW4uZ2V0KCkuY2FuUmVxdWVzdChtX3ByZXZpb3Vz
VVJMLCBtX2ZyYW1lLnNjaGVtZVJlZ2lzdHJ5KCkpKTsKICAgICB9CiAKICAgICAvLyBDYWxsIGNs
aWVudFJlZGlyZWN0Q2FuY2VsbGVkT3JGaW5pc2hlZCgpIGhlcmUgc28gdGhhdCB0aGUgZnJhbWUg
bG9hZCBkZWxlZ2F0ZSBpcyBub3RpZmllZCB0aGF0IHRoZSByZWRpcmVjdCdzCkBAIC0yNzIxLDcg
KzI3MjEsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkUG9zdFJlcXVlc3QoY29uc3QgCiB1bnNp
Z25lZCBsb25nIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU3RvcmVkQ3JlZGVudGlhbHMgc3RvcmVkQ3JlZGVudGlh
bHMsIENsaWVudENyZWRlbnRpYWxQb2xpY3kgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiYgZGF0YSkKIHsKICAgICBBU1NFUlQobV9mcmFtZS5kb2N1bWVudCgpKTsKLSAgICBT
dHJpbmcgcmVmZXJyZXIgPSBTZWN1cml0eVBvbGljeTo6Z2VuZXJhdGVSZWZlcnJlckhlYWRlciht
X2ZyYW1lLmRvY3VtZW50KCktPnJlZmVycmVyUG9saWN5KCksIHJlcXVlc3QudXJsKCksIG91dGdv
aW5nUmVmZXJyZXIoKSk7CisgICAgU3RyaW5nIHJlZmVycmVyID0gU2VjdXJpdHlQb2xpY3k6Omdl
bmVyYXRlUmVmZXJyZXJIZWFkZXIobV9mcmFtZS5kb2N1bWVudCgpLT5yZWZlcnJlclBvbGljeSgp
LCByZXF1ZXN0LnVybCgpLCBvdXRnb2luZ1JlZmVycmVyKCksIG1fZnJhbWUuc2NoZW1lUmVnaXN0
cnkoKSk7CiAgICAgCiAgICAgUmVzb3VyY2VSZXF1ZXN0IGluaXRpYWxSZXF1ZXN0ID0gcmVxdWVz
dDsKICAgICBpbml0aWFsUmVxdWVzdC5zZXRUaW1lb3V0SW50ZXJ2YWwoMTApOwpAQCAtMjk1OSw3
ICsyOTU5LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hVbmxvYWRFdmVudHMoVQogCiAg
ICAgLy8gRG9uJ3QgcmVtb3ZlIGV2ZW50IGxpc3RlbmVycyBmcm9tIGEgdHJhbnNpdGlvbmFsIGVt
cHR5IGRvY3VtZW50IChzZWUgYnVnIDI4NzE2IGZvciBtb3JlIGluZm9ybWF0aW9uKS4KICAgICBi
b29sIGtlZXBFdmVudExpc3RlbmVycyA9IG1fc3RhdGVNYWNoaW5lLmlzRGlzcGxheWluZ0luaXRp
YWxFbXB0eURvY3VtZW50KCkgJiYgbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyCi0gICAgICAg
ICYmIG1fZnJhbWUuZG9jdW1lbnQoKS0+aXNTZWN1cmVUcmFuc2l0aW9uVG8obV9wcm92aXNpb25h
bERvY3VtZW50TG9hZGVyLT51cmwoKSk7CisgICAgICAgICYmIG1fZnJhbWUuZG9jdW1lbnQoKS0+
aXNTZWN1cmVUcmFuc2l0aW9uVG8obV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLT51cmwoKSwg
bV9mcmFtZS5zY2hlbWVSZWdpc3RyeSgpKTsKIAogICAgIGlmICgha2VlcEV2ZW50TGlzdGVuZXJz
KQogICAgICAgICBtX2ZyYW1lLmRvY3VtZW50KCktPnJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzKCk7
CkBAIC0zMjAyLDcgKzMyMDIsNyBAQCBib29sIEZyYW1lTG9hZGVyOjpzaG91bGRJbnRlcnJ1cHRM
b2FkRm9yCiAKICAgICBzd2l0Y2ggKGRpc3Bvc2l0aW9uKSB7CiAgICAgY2FzZSBYRnJhbWVPcHRp
b25zU2FtZU9yaWdpbjogewotICAgICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9
IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodXJsKTsKKyAgICAgICAgUmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPiBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHVybCwgbV9mcmFtZS5zY2hlbWVS
ZWdpc3RyeSgpKTsKICAgICAgICAgaWYgKCFvcmlnaW4tPmlzU2FtZVNjaGVtZUhvc3RQb3J0KHRv
cEZyYW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpKQogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbV9mcmFtZS50cmVlKCkucGFyZW50
KCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkucGFyZW50KCkpIHsKQEAgLTMzNDEsNyAr
MzM0MSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWREaWZmZXJlbnREb2N1bWVudEkKICAgICAg
ICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJQT1NUIik7CiAgICAgICAgIHJlcXVlc3Quc2V0SFRU
UEJvZHkoV1RGTW92ZShmb3JtRGF0YSkpOwogICAgICAgICByZXF1ZXN0LnNldEhUVFBDb250ZW50
VHlwZShpdGVtLmZvcm1Db250ZW50VHlwZSgpKTsKLSAgICAgICAgUmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPiBzZWN1cml0eU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKGl0
ZW0ucmVmZXJyZXIoKSk7CisgICAgICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlP
cmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhpdGVtLnJlZmVycmVyKCks
IG1fZnJhbWUuc2NoZW1lUmVnaXN0cnkoKSk7CiAgICAgICAgIGFkZEhUVFBPcmlnaW5JZk5lZWRl
ZChyZXF1ZXN0LCBzZWN1cml0eU9yaWdpbi0+dG9TdHJpbmcoKSk7CiAgICAgICAgIGFkZEhUVFBV
cGdyYWRlSW5zZWN1cmVSZXF1ZXN0c0lmTmVlZGVkKHJlcXVlc3QpOwogCkBAIC0zNjM5LDcgKzM2
MzksNyBAQCBSZWZQdHI8RnJhbWU+IGNyZWF0ZVdpbmRvdyhGcmFtZSYgb3BlbmVyCiAKICAgICAv
LyBGSVhNRTogU2V0dGluZyB0aGUgcmVmZXJyZXIgc2hvdWxkIGJlIHRoZSBjYWxsZXIncyByZXNw
b25zaWJpbGl0eS4KICAgICBGcmFtZUxvYWRSZXF1ZXN0IHJlcXVlc3RXaXRoUmVmZXJyZXIgPSBy
ZXF1ZXN0OwotICAgIFN0cmluZyByZWZlcnJlciA9IFNlY3VyaXR5UG9saWN5OjpnZW5lcmF0ZVJl
ZmVycmVySGVhZGVyKG9wZW5lckZyYW1lLmRvY3VtZW50KCktPnJlZmVycmVyUG9saWN5KCksIHJl
cXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCksIG9wZW5lckZyYW1lLmxvYWRlcigpLm91dGdv
aW5nUmVmZXJyZXIoKSk7CisgICAgU3RyaW5nIHJlZmVycmVyID0gU2VjdXJpdHlQb2xpY3k6Omdl
bmVyYXRlUmVmZXJyZXJIZWFkZXIob3BlbmVyRnJhbWUuZG9jdW1lbnQoKS0+cmVmZXJyZXJQb2xp
Y3koKSwgcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKSwgb3BlbmVyRnJhbWUubG9hZGVy
KCkub3V0Z29pbmdSZWZlcnJlcigpLCBvcGVuZXJGcmFtZS5zY2hlbWVSZWdpc3RyeSgpKTsKICAg
ICBpZiAoIXJlZmVycmVyLmlzRW1wdHkoKSkKICAgICAgICAgcmVxdWVzdFdpdGhSZWZlcnJlci5y
ZXNvdXJjZVJlcXVlc3QoKS5zZXRIVFRQUmVmZXJyZXIocmVmZXJyZXIpOwogICAgIEZyYW1lTG9h
ZGVyOjphZGRIVFRQT3JpZ2luSWZOZWVkZWQocmVxdWVzdFdpdGhSZWZlcnJlci5yZXNvdXJjZVJl
cXVlc3QoKSwgb3BlbmVyRnJhbWUubG9hZGVyKCkub3V0Z29pbmdPcmlnaW4oKSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTExMyw3ICsx
MTMsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBsb2FkKGNvbnN0IEZyYW1l
TG9hZFJlcXVlc3QmKTsKIAogI2lmIEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1M
KQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbG9hZEFyY2hpdmUoUGFzc1JlZlB0cjxBcmNoaXZl
Pik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBsb2FkQXJjaGl2ZShSZWZQdHI8QXJjaGl2ZT4m
Jik7CiAjZW5kaWYKICAgICB1bnNpZ25lZCBsb25nIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHko
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgU3RvcmVkQ3JlZGVudGlhbHMsIENsaWVudENyZWRlbnRp
YWxQb2xpY3ksIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4mIGRhdGEpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2Fk
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5j
cHAJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4NSw3ICsxODUsNyBAQCB2b2lkIEltYWdlTG9hZGVy
Ojp1cGRhdGVGcm9tRWxlbWVudCgpCiAgICAgICAgIGlmIChtX2xvYWRNYW51YWxseSkgewogICAg
ICAgICAgICAgYm9vbCBhdXRvTG9hZE90aGVySW1hZ2VzID0gZG9jdW1lbnQuY2FjaGVkUmVzb3Vy
Y2VMb2FkZXIoKS5hdXRvTG9hZEltYWdlcygpOwogICAgICAgICAgICAgZG9jdW1lbnQuY2FjaGVk
UmVzb3VyY2VMb2FkZXIoKS5zZXRBdXRvTG9hZEltYWdlcyhmYWxzZSk7Ci0gICAgICAgICAgICBu
ZXdJbWFnZSA9IG5ldyBDYWNoZWRJbWFnZShXVEZNb3ZlKHJlcXVlc3QpLCBtX2VsZW1lbnQuZG9j
dW1lbnQoKS5wYWdlKCktPnNlc3Npb25JRCgpKTsKKyAgICAgICAgICAgIG5ld0ltYWdlID0gbmV3
IENhY2hlZEltYWdlKFdURk1vdmUocmVxdWVzdCksIG1fZWxlbWVudC5kb2N1bWVudCgpLnBhZ2Uo
KS0+c2Vzc2lvbklEKCksIGRvY3VtZW50LnNjaGVtZVJlZ2lzdHJ5KCkpOwogICAgICAgICAgICAg
bmV3SW1hZ2UtPnNldFN0YXR1cyhDYWNoZWRSZXNvdXJjZTo6UGVuZGluZyk7CiAgICAgICAgICAg
ICBuZXdJbWFnZS0+c2V0TG9hZGluZyh0cnVlKTsKICAgICAgICAgICAgIG5ld0ltYWdlLT5zZXRP
d25pbmdDYWNoZWRSZXNvdXJjZUxvYWRlcigmZG9jdW1lbnQuY2FjaGVkUmVzb3VyY2VMb2FkZXIo
KSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZFRpbWluZy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRUaW1pbmcuY3BwCShyZXZpc2lvbiAyMDgz
OTgpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZFRpbWluZy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU4LDE1ICs1OCwxNSBAQCB2b2lkIExvYWRUaW1pbmc6Om1hcmtTdGFydFRpbWUoKQog
ICAgIG1fcmVmZXJlbmNlV2FsbFRpbWUgPSBjdXJyZW50VGltZSgpOwogfQogCi12b2lkIExvYWRU
aW1pbmc6OmFkZFJlZGlyZWN0KGNvbnN0IFVSTCYgcmVkaXJlY3RpbmdVcmwsIGNvbnN0IFVSTCYg
cmVkaXJlY3RlZFVybCkKK3ZvaWQgTG9hZFRpbWluZzo6YWRkUmVkaXJlY3QoY29uc3QgVVJMJiBy
ZWRpcmVjdGluZ1VybCwgY29uc3QgVVJMJiByZWRpcmVjdGVkVXJsLCBjb25zdCBQYWdlU2NoZW1l
UmVnaXN0cnkmIHNjaGVtZVJlZ2lzdHJ5KQogewogICAgIG1fcmVkaXJlY3RDb3VudCsrOwogICAg
IGlmICghbV9yZWRpcmVjdFN0YXJ0KQogICAgICAgICBtX3JlZGlyZWN0U3RhcnQgPSBtX2ZldGNo
U3RhcnQ7CiAgICAgbV9yZWRpcmVjdEVuZCA9IG1fZmV0Y2hTdGFydCA9IG1vbm90b25pY2FsbHlJ
bmNyZWFzaW5nVGltZSgpOwogICAgIC8vIENoZWNrIGlmIHRoZSByZWRpcmVjdGVkIHVybCBpcyBh
bGxvd2VkIHRvIGFjY2VzcyB0aGUgcmVkaXJlY3RpbmcgdXJsJ3MgdGltaW5nIGluZm9ybWF0aW9u
LgotICAgIFJlZjxTZWN1cml0eU9yaWdpbj4gcmVkaXJlY3RlZFNlY3VyaXR5T3JpZ2luKFNlY3Vy
aXR5T3JpZ2luOjpjcmVhdGUocmVkaXJlY3RlZFVybCkpOwotICAgIG1faGFzQ3Jvc3NPcmlnaW5S
ZWRpcmVjdCA9ICFyZWRpcmVjdGVkU2VjdXJpdHlPcmlnaW4uZ2V0KCkuY2FuUmVxdWVzdChyZWRp
cmVjdGluZ1VybCk7CisgICAgUmVmPFNlY3VyaXR5T3JpZ2luPiByZWRpcmVjdGVkU2VjdXJpdHlP
cmlnaW4oU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShyZWRpcmVjdGVkVXJsLCBzY2hlbWVSZWdpc3Ry
eSkpOworICAgIG1faGFzQ3Jvc3NPcmlnaW5SZWRpcmVjdCA9ICFyZWRpcmVjdGVkU2VjdXJpdHlP
cmlnaW4uZ2V0KCkuY2FuUmVxdWVzdChyZWRpcmVjdGluZ1VybCwgc2NoZW1lUmVnaXN0cnkpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TG9hZFRpbWluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkVGlt
aW5nLmgJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkVGlt
aW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgRnJhbWU7CitjbGFzcyBQYWdlU2NoZW1lUmVnaXN0cnk7CiBjbGFzcyBVUkw7
CiAKIGNsYXNzIExvYWRUaW1pbmcgewpAQCAtMzksNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgZG91
YmxlIG1vbm90b25pY1RpbWVUb1BzZXVkb1dhbGxUaW1lKGRvdWJsZSkgY29uc3Q7CiAKICAgICB2
b2lkIG1hcmtTdGFydFRpbWUoKTsKLSAgICB2b2lkIGFkZFJlZGlyZWN0KGNvbnN0IFVSTCYgcmVk
aXJlY3RpbmdVcmwsIGNvbnN0IFVSTCYgcmVkaXJlY3RlZFVybCk7CisgICAgdm9pZCBhZGRSZWRp
cmVjdChjb25zdCBVUkwmIHJlZGlyZWN0aW5nVXJsLCBjb25zdCBVUkwmIHJlZGlyZWN0ZWRVcmws
IGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3RyeSYpOwogCiAgICAgdm9pZCBtYXJrU3RhcnRUaW1lQW5k
RmV0Y2hTdGFydCgpIHsgbWFya1N0YXJ0VGltZSgpOyBtX2ZldGNoU3RhcnQgPSBtX3N0YXJ0VGlt
ZTsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuY3BwCShyZXZpc2lvbiAy
MDgzOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTcwLDcgKzcwLDcgQEAgc3RhdGljIENvbnRlbnRFeHRlbnNpb25zOjpCbG9ja2Vk
U3RhdHVzIAogCiB2b2lkIFBpbmdMb2FkZXI6OmxvYWRJbWFnZShGcmFtZSYgZnJhbWUsIGNvbnN0
IFVSTCYgdXJsKQogewotICAgIGlmICghZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4o
KS0+Y2FuRGlzcGxheSh1cmwpKSB7CisgICAgaWYgKCFmcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0
eU9yaWdpbigpLT5jYW5EaXNwbGF5KHVybCwgZnJhbWUuc2NoZW1lUmVnaXN0cnkoKSkpIHsKICAg
ICAgICAgRnJhbWVMb2FkZXI6OnJlcG9ydExvY2FsTG9hZEZhaWxlZCgmZnJhbWUsIHVybCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CkBAIC04OCw3ICs4OCw3IEBAIHZvaWQgUGluZ0xvYWRlcjo6
bG9hZEltYWdlKEZyYW1lJiBmcmFtZSwKICAgICAgICAgZG9jdW1lbnQtPmNvbnRlbnRTZWN1cml0
eVBvbGljeSgpLT51cGdyYWRlSW5zZWN1cmVSZXF1ZXN0SWZOZWVkZWQocmVxdWVzdCwgQ29udGVu
dFNlY3VyaXR5UG9saWN5OjpJbnNlY3VyZVJlcXVlc3RUeXBlOjpMb2FkKTsKIAogICAgIHJlcXVl
c3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDYWNoZUNvbnRyb2wsICJtYXgt
YWdlPTAiKTsKLSAgICBTdHJpbmcgcmVmZXJyZXIgPSBTZWN1cml0eVBvbGljeTo6Z2VuZXJhdGVS
ZWZlcnJlckhlYWRlcihmcmFtZS5kb2N1bWVudCgpLT5yZWZlcnJlclBvbGljeSgpLCByZXF1ZXN0
LnVybCgpLCBmcmFtZS5sb2FkZXIoKS5vdXRnb2luZ1JlZmVycmVyKCkpOworICAgIFN0cmluZyBy
ZWZlcnJlciA9IFNlY3VyaXR5UG9saWN5OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVyKGZyYW1lLmRv
Y3VtZW50KCktPnJlZmVycmVyUG9saWN5KCksIHJlcXVlc3QudXJsKCksIGZyYW1lLmxvYWRlcigp
Lm91dGdvaW5nUmVmZXJyZXIoKSwgZnJhbWUuc2NoZW1lUmVnaXN0cnkoKSk7CiAgICAgaWYgKCFy
ZWZlcnJlci5pc0VtcHR5KCkpCiAgICAgICAgIHJlcXVlc3Quc2V0SFRUUFJlZmVycmVyKHJlZmVy
cmVyKTsKICAgICBmcmFtZS5sb2FkZXIoKS5hZGRFeHRyYUZpZWxkc1RvU3VicmVzb3VyY2VSZXF1
ZXN0KHJlcXVlc3QpOwpAQCAtMTIwLDEzICsxMjAsMTMgQEAgdm9pZCBQaW5nTG9hZGVyOjpzZW5k
UGluZyhGcmFtZSYgZnJhbWUsIAogICAgIGZyYW1lLmxvYWRlcigpLmFkZEV4dHJhRmllbGRzVG9T
dWJyZXNvdXJjZVJlcXVlc3QocmVxdWVzdCk7CiAKICAgICBTZWN1cml0eU9yaWdpbiogc291cmNl
T3JpZ2luID0gZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKTsKLSAgICBSZWY8U2Vj
dXJpdHlPcmlnaW4+IHBpbmdPcmlnaW4oU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShwaW5nVVJMKSk7
CisgICAgUmVmPFNlY3VyaXR5T3JpZ2luPiBwaW5nT3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVh
dGUocGluZ1VSTCwgZnJhbWUuc2NoZW1lUmVnaXN0cnkoKSkpOwogICAgIEZyYW1lTG9hZGVyOjph
ZGRIVFRQT3JpZ2luSWZOZWVkZWQocmVxdWVzdCwgc291cmNlT3JpZ2luLT50b1N0cmluZygpKTsK
ICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6UGluZ1RvLCBk
ZXN0aW5hdGlvblVSTCk7CiAgICAgaWYgKCFTZWN1cml0eVBvbGljeTo6c2hvdWxkSGlkZVJlZmVy
cmVyKHBpbmdVUkwsIGZyYW1lLmxvYWRlcigpLm91dGdvaW5nUmVmZXJyZXIoKSkpIHsKICAgICAg
ICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OlBpbmdGcm9tLCBm
cmFtZS5kb2N1bWVudCgpLT51cmwoKSk7CiAgICAgICAgIGlmICghc291cmNlT3JpZ2luLT5pc1Nh
bWVTY2hlbWVIb3N0UG9ydCgmcGluZ09yaWdpbi5nZXQoKSkpIHsKLSAgICAgICAgICAgIFN0cmlu
ZyByZWZlcnJlciA9IFNlY3VyaXR5UG9saWN5OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVyKGZyYW1l
LmRvY3VtZW50KCktPnJlZmVycmVyUG9saWN5KCksIHBpbmdVUkwsIGZyYW1lLmxvYWRlcigpLm91
dGdvaW5nUmVmZXJyZXIoKSk7CisgICAgICAgICAgICBTdHJpbmcgcmVmZXJyZXIgPSBTZWN1cml0
eVBvbGljeTo6Z2VuZXJhdGVSZWZlcnJlckhlYWRlcihmcmFtZS5kb2N1bWVudCgpLT5yZWZlcnJl
clBvbGljeSgpLCBwaW5nVVJMLCBmcmFtZS5sb2FkZXIoKS5vdXRnb2luZ1JlZmVycmVyKCksIGZy
YW1lLnNjaGVtZVJlZ2lzdHJ5KCkpOwogICAgICAgICAgICAgaWYgKCFyZWZlcnJlci5pc0VtcHR5
KCkpCiAgICAgICAgICAgICAgICAgcmVxdWVzdC5zZXRIVFRQUmVmZXJyZXIocmVmZXJyZXIpOwog
ICAgICAgICB9CkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBQaW5nTG9hZGVyOjpzZW5kVmlvbGF0
aW9uUmVwb3J0KEZyYQogICAgIGJvb2wgcmVtb3ZlQ29va2llcyA9IHRydWU7CiAgICAgaWYgKERv
Y3VtZW50KiBkb2N1bWVudCA9IGZyYW1lLmRvY3VtZW50KCkpIHsKICAgICAgICAgaWYgKFNlY3Vy
aXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbiA9IGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpKSB7
Ci0gICAgICAgICAgICBpZiAoc2VjdXJpdHlPcmlnaW4tPmlzU2FtZVNjaGVtZUhvc3RQb3J0KFNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGUocmVwb3J0VVJMKS5wdHIoKSkpCisgICAgICAgICAgICBpZiAo
c2VjdXJpdHlPcmlnaW4tPmlzU2FtZVNjaGVtZUhvc3RQb3J0KFNlY3VyaXR5T3JpZ2luOjpjcmVh
dGUocmVwb3J0VVJMLCBkb2N1bWVudC0+c2NoZW1lUmVnaXN0cnkoKSkucHRyKCkpKQogICAgICAg
ICAgICAgICAgIHJlbW92ZUNvb2tpZXMgPSBmYWxzZTsKICAgICAgICAgfQogICAgIH0KQEAgLTE3
Miw3ICsxNzIsNyBAQCB2b2lkIFBpbmdMb2FkZXI6OnNlbmRWaW9sYXRpb25SZXBvcnQoRnJhCiAK
ICAgICBmcmFtZS5sb2FkZXIoKS5hZGRFeHRyYUZpZWxkc1RvU3VicmVzb3VyY2VSZXF1ZXN0KHJl
cXVlc3QpOwogCi0gICAgU3RyaW5nIHJlZmVycmVyID0gU2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRl
UmVmZXJyZXJIZWFkZXIoZnJhbWUuZG9jdW1lbnQoKS0+cmVmZXJyZXJQb2xpY3koKSwgcmVwb3J0
VVJMLCBmcmFtZS5sb2FkZXIoKS5vdXRnb2luZ1JlZmVycmVyKCkpOworICAgIFN0cmluZyByZWZl
cnJlciA9IFNlY3VyaXR5UG9saWN5OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVyKGZyYW1lLmRvY3Vt
ZW50KCktPnJlZmVycmVyUG9saWN5KCksIHJlcG9ydFVSTCwgZnJhbWUubG9hZGVyKCkub3V0Z29p
bmdSZWZlcnJlcigpLCBmcmFtZS5zY2hlbWVSZWdpc3RyeSgpKTsKICAgICBpZiAoIXJlZmVycmVy
LmlzRW1wdHkoKSkKICAgICAgICAgcmVxdWVzdC5zZXRIVFRQUmVmZXJyZXIocmVmZXJyZXIpOwog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkSW5mby5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZEluZm8uY3BwCShyZXZp
c2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkSW5mby5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZUxv
YWRJbmZvLmgiCiAKICNpbmNsdWRlICJDb250ZW50RXh0ZW5zaW9uQWN0aW9ucy5oIgorI2luY2x1
ZGUgIlBhZ2VTY2hlbWVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTEwNSw4ICsxMDYsOCBAQCB1aW50MTZfdCByZWFkTG9h
ZFR5cGUoY29uc3QgU3RyaW5nJiBuYW1lCiAKIGJvb2wgUmVzb3VyY2VMb2FkSW5mbzo6aXNUaGly
ZFBhcnR5KCkgY29uc3QKIHsKLSAgICBSZWY8U2VjdXJpdHlPcmlnaW4+IG1haW5Eb2N1bWVudFNl
Y3VyaXR5T3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShtYWluRG9jdW1lbnRVUkwpOwot
ICAgIFJlZjxTZWN1cml0eU9yaWdpbj4gcmVzb3VyY2VTZWN1cml0eU9yaWdpbiA9IFNlY3VyaXR5
T3JpZ2luOjpjcmVhdGUocmVzb3VyY2VVUkwpOworICAgIFJlZjxTZWN1cml0eU9yaWdpbj4gbWFp
bkRvY3VtZW50U2VjdXJpdHlPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1haW5Eb2N1
bWVudFVSTCwgUGFnZVNjaGVtZVJlZ2lzdHJ5OjpjcmVhdGUoKSk7CisgICAgUmVmPFNlY3VyaXR5
T3JpZ2luPiByZXNvdXJjZVNlY3VyaXR5T3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShy
ZXNvdXJjZVVSTCwgUGFnZVNjaGVtZVJlZ2lzdHJ5OjpjcmVhdGUoKSk7CiAKICAgICByZXR1cm4g
IW1haW5Eb2N1bWVudFNlY3VyaXR5T3JpZ2luLT5jYW5BY2Nlc3MoJnJlc291cmNlU2VjdXJpdHlP
cmlnaW4uZ2V0KCkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZE9ic2VydmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXIuY3BwCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNyAr
MTA0LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nRnJhbWVOYXZpZwogICAgIGlm
ICh0YXJnZXRQcmltYXJ5RG9tYWluID09IG1haW5GcmFtZVByaW1hcnlEb21haW4gfHwgdGFyZ2V0
UHJpbWFyeURvbWFpbiA9PSBzb3VyY2VQcmltYXJ5RG9tYWluKQogICAgICAgICByZXR1cm47CiAg
ICAgCi0gICAgYXV0byB0YXJnZXRPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHRhcmdl
dFVSTCk7CisgICAgYXV0byB0YXJnZXRPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHRh
cmdldFVSTCwgZnJhbWUuc2NoZW1lUmVnaXN0cnkoKSk7CiAgICAgYXV0byB0YXJnZXRTdGF0aXN0
aWNzID0gbV9zdG9yZS0+ZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbih0
YXJnZXRQcmltYXJ5RG9tYWluKTsKICAgICAKICAgICBpZiAoaXNNYWluRnJhbWUpCkBAIC0xMTIs
NyArMTEyLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nRnJhbWVOYXZpZwogICAg
IGVsc2UgewogICAgICAgICB0YXJnZXRTdGF0aXN0aWNzLnN1YmZyYW1lSGFzQmVlbkxvYWRlZEJl
Zm9yZSA9IHRydWU7CiAKLSAgICAgICAgYXV0byBtYWluRnJhbWVPcmlnaW4gPSBTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlKG1haW5GcmFtZVVSTCk7CisgICAgICAgIGF1dG8gbWFpbkZyYW1lT3JpZ2lu
ID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShtYWluRnJhbWVVUkwsIGZyYW1lLnNjaGVtZVJlZ2lz
dHJ5KCkpOwogICAgICAgICB0YXJnZXRTdGF0aXN0aWNzLnN1YmZyYW1lVW5kZXJUb3BGcmFtZU9y
aWdpbnMuYWRkKG1haW5GcmFtZVByaW1hcnlEb21haW4pOwogICAgIH0KICAgICAKQEAgLTE1Nyw3
ICsxNTcsMTAgQEAgdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nRnJhbWVOYXZpZwogICAg
IAogdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nU3VicmVzb3VyY2VMb2FkaW5nKGNvbnN0
IEZyYW1lKiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0LCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQogeworICAgIEFTU0VSVChmcmFtZSk7
CiAgICAgQVNTRVJUKGZyYW1lLT5wYWdlKCkpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJl
dHVybjsKIAogICAgIGlmICghc2hvdWxkTG9nKGZyYW1lLT5wYWdlKCkpKQogICAgICAgICByZXR1
cm47CkBAIC0xNjUsNyArMTY4LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nU3Vi
cmVzb3VyYwogICAgIGJvb2wgaXNSZWRpcmVjdCA9IGlzM3h4UmVkaXJlY3QocmVkaXJlY3RSZXNw
b25zZSk7CiAgICAgY29uc3QgVVJMJiBzb3VyY2VVUkwgPSByZWRpcmVjdFJlc3BvbnNlLnVybCgp
OwogICAgIGNvbnN0IFVSTCYgdGFyZ2V0VVJMID0gbmV3UmVxdWVzdC51cmwoKTsKLSAgICBjb25z
dCBVUkwmIG1haW5GcmFtZVVSTCA9IGZyYW1lID8gZnJhbWUtPm1haW5GcmFtZSgpLmRvY3VtZW50
KCktPnVybCgpIDogVVJMKCk7CisgICAgY29uc3QgVVJMJiBtYWluRnJhbWVVUkwgPSBmcmFtZS0+
bWFpbkZyYW1lKCkuZG9jdW1lbnQoKS0+dXJsKCk7CiAgICAgCiAgICAgYXV0byB0YXJnZXRIb3N0
ID0gdGFyZ2V0VVJMLmhvc3QoKTsKICAgICBhdXRvIG1haW5GcmFtZUhvc3QgPSBtYWluRnJhbWVV
UkwuaG9zdCgpOwpAQCAtMTg1LDcgKzE4OCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6
OmxvZ1N1YnJlc291cmMKIAogICAgIGF1dG8mIHRhcmdldFN0YXRpc3RpY3MgPSBtX3N0b3JlLT5l
bnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHRhcmdldFByaW1hcnlEb21h
aW4pOwogCi0gICAgYXV0byBtYWluRnJhbWVPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
KG1haW5GcmFtZVVSTCk7CisgICAgYXV0byBtYWluRnJhbWVPcmlnaW4gPSBTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlKG1haW5GcmFtZVVSTCwgZnJhbWUtPnNjaGVtZVJlZ2lzdHJ5KCkpOwogICAgIHRh
cmdldFN0YXRpc3RpY3Muc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2lucy5hZGQobWFpbkZy
YW1lUHJpbWFyeURvbWFpbik7CiAKICAgICBpZiAoaXNSZWRpcmVjdCkgewpAQCAtMjQ2LDcgKzI0
OSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ1dlYlNvY2tldEwKIAogICAgIGF1
dG8mIHRhcmdldFN0YXRpc3RpY3MgPSBtX3N0b3JlLT5lbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NG
b3JQcmltYXJ5RG9tYWluKHRhcmdldFByaW1hcnlEb21haW4pOwogICAgIAotICAgIGF1dG8gbWFp
bkZyYW1lT3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShtYWluRnJhbWVVUkwpOworICAg
IGF1dG8gbWFpbkZyYW1lT3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShtYWluRnJhbWVV
UkwsIGZyYW1lLT5zY2hlbWVSZWdpc3RyeSgpKTsKICAgICB0YXJnZXRTdGF0aXN0aWNzLnN1YnJl
c291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbnMuYWRkKG1haW5GcmFtZVByaW1hcnlEb21haW4pOwog
ICAgIAogICAgICsrdGFyZ2V0U3RhdGlzdGljcy5zdWJyZXNvdXJjZUhhc0JlZW5TdWJyZXNvdXJj
ZUNvdW50OwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCShy
ZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsNyArMTI4LDcgQEAgYm9vbCBSZXNvdXJjZUxvYWRl
cjo6aW5pdChjb25zdCBSZXNvdXJjZQogICAgIAogICAgIG1fZGVmZXJzTG9hZGluZyA9IG1fb3B0
aW9ucy5kZWZlcnNMb2FkaW5nUG9saWN5ID09IERlZmVyc0xvYWRpbmdQb2xpY3k6OkFsbG93RGVm
ZXJzTG9hZGluZyAmJiBtX2ZyYW1lLT5wYWdlKCktPmRlZmVyc0xvYWRpbmcoKTsKIAotICAgIGlm
IChtX29wdGlvbnMuc2VjdXJpdHlDaGVjayA9PSBEb1NlY3VyaXR5Q2hlY2sgJiYgIW1fZnJhbWUt
PmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhbkRpc3BsYXkoY2xpZW50UmVxdWVzdC51
cmwoKSkpIHsKKyAgICBpZiAobV9vcHRpb25zLnNlY3VyaXR5Q2hlY2sgPT0gRG9TZWN1cml0eUNo
ZWNrICYmICFtX2ZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5EaXNwbGF5
KGNsaWVudFJlcXVlc3QudXJsKCksIG1fZnJhbWUtPnNjaGVtZVJlZ2lzdHJ5KCkpKSB7CiAgICAg
ICAgIEZyYW1lTG9hZGVyOjpyZXBvcnRMb2NhbExvYWRGYWlsZWQobV9mcmFtZS5nZXQoKSwgY2xp
ZW50UmVxdWVzdC51cmwoKS5zdHJpbmcoKSk7CiAgICAgICAgIHJlbGVhc2VSZXNvdXJjZXMoKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjk1LDcgKzY5NSw3IEBAIGJvb2wgUmVzb3VyY2VM
b2FkZXI6OmlzQWxsb3dlZFRvQXNrVXNlckYKIHsKICAgICBpZiAobV9vcHRpb25zLmNsaWVudENy
ZWRlbnRpYWxQb2xpY3kgPT0gQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6Q2Fubm90QXNrQ2xpZW50
Rm9yQ3JlZGVudGlhbHMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gbV9vcHRp
b25zLmNyZWRlbnRpYWxzID09IEZldGNoT3B0aW9uczo6Q3JlZGVudGlhbHM6OkluY2x1ZGUgfHwg
KG1fb3B0aW9ucy5jcmVkZW50aWFscyA9PSBGZXRjaE9wdGlvbnM6OkNyZWRlbnRpYWxzOjpTYW1l
T3JpZ2luICYmIG1fZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhblJlcXVl
c3Qob3JpZ2luYWxSZXF1ZXN0KCkudXJsKCkpKTsKKyAgICByZXR1cm4gbV9vcHRpb25zLmNyZWRl
bnRpYWxzID09IEZldGNoT3B0aW9uczo6Q3JlZGVudGlhbHM6OkluY2x1ZGUgfHwgKG1fb3B0aW9u
cy5jcmVkZW50aWFscyA9PSBGZXRjaE9wdGlvbnM6OkNyZWRlbnRpYWxzOjpTYW1lT3JpZ2luICYm
IG1fZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhblJlcXVlc3Qob3JpZ2lu
YWxSZXF1ZXN0KCkudXJsKCksIG1fZnJhbWUtPnNjaGVtZVJlZ2lzdHJ5KCkpKTsKIH0KIAogdm9p
ZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU2lua0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvU2lua0RvY3VtZW50LmNwcAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYkNv
cmUvbG9hZGVyL1NpbmtEb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDggKzQ5LDgg
QEAgcHJpdmF0ZToKICAgICB9CiB9OwogCi1TaW5rRG9jdW1lbnQ6OlNpbmtEb2N1bWVudChGcmFt
ZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQotICAgIDogSFRNTERvY3VtZW50KGZyYW1lLCB1cmwp
CitTaW5rRG9jdW1lbnQ6OlNpbmtEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnkmIHNjaGVtZVJlZ2lzdHJ5KQorICAgIDogSFRNTERv
Y3VtZW50KGZyYW1lLCB1cmwsIHNjaGVtZVJlZ2lzdHJ5KQogewogICAgIHNldENvbXBhdGliaWxp
dHlNb2RlKERvY3VtZW50Q29tcGF0aWJpbGl0eU1vZGU6OlF1aXJrc01vZGUpOwogICAgIGxvY2tD
b21wYXRpYmlsaXR5TW9kZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1NpbmtEb2N1
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TaW5rRG9jdW1lbnQu
aAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1NpbmtEb2N1bWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAq
LwogCi0jaWZuZGVmIFNpbmtEb2N1bWVudF9oCi0jZGVmaW5lIFNpbmtEb2N1bWVudF9oCisjcHJh
Z21hIG9uY2UKIAogI2luY2x1ZGUgIkhUTUxEb2N1bWVudC5oIgogCkBAIC0zMiwxOCArMzEsMTYg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTaW5rRG9jdW1lbnQgZmluYWwgOiBwdWJs
aWMgSFRNTERvY3VtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNpbmtEb2N1bWVudD4g
Y3JlYXRlKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCisgICAgc3RhdGljIFJlZjxTaW5r
RG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBQYWdl
U2NoZW1lUmVnaXN0cnkmIHNjaGVtZVJlZ2lzdHJ5KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU2lua0RvY3VtZW50KGZyYW1lLCB1cmwpKTsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU2lua0RvY3VtZW50KGZyYW1lLCB1cmwsIHNjaGVtZVJlZ2lzdHJ5KSk7CiAg
ICAgfQogCiBwcml2YXRlOgotICAgIFNpbmtEb2N1bWVudChGcmFtZSosIGNvbnN0IFVSTCYpOwor
ICAgIFNpbmtEb2N1bWVudChGcmFtZSosIGNvbnN0IFVSTCYsIGNvbnN0IFBhZ2VTY2hlbWVSZWdp
c3RyeSYpOwogICAgIAogICAgIHZpcnR1YWwgUmVmPERvY3VtZW50UGFyc2VyPiBjcmVhdGVQYXJz
ZXIoKTsKIH07CiAKIAogfTsgLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFNpbmtE
b2N1bWVudF9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5jcHAJ
KHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMCw3ICsxMjAsNyBAQCBib29sIFN1YmZyYW1lTG9h
ZGVyOjpwbHVnaW5Jc0xvYWRhYmxlKGNvCiAgICAgICAgIGlmIChkb2N1bWVudCgpLT5pc1NhbmRi
b3hlZChTYW5kYm94UGx1Z2lucykpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAg
ICAgaWYgKCFkb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5EaXNwbGF5KHVybCkpIHsK
KyAgICAgICAgaWYgKCFkb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5EaXNwbGF5KHVy
bCwgZG9jdW1lbnQoKS0+c2NoZW1lUmVnaXN0cnkoKSkpIHsKICAgICAgICAgICAgIEZyYW1lTG9h
ZGVyOjpyZXBvcnRMb2NhbExvYWRGYWlsZWQoJm1fZnJhbWUsIHVybC5zdHJpbmcoKSk7CiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KQEAgLTI0MSw3ICsyNDEsNyBAQCBQYXNz
UmVmUHRyPFdpZGdldD4gU3ViZnJhbWVMb2FkZXI6OmNyZWF0CiAKICAgICBpZiAoIWNvZGVCYXNl
VVJMU3RyaW5nLmlzRW1wdHkoKSkgewogICAgICAgICBVUkwgY29kZUJhc2VVUkwgPSBjb21wbGV0
ZVVSTChjb2RlQmFzZVVSTFN0cmluZyk7Ci0gICAgICAgIGlmICghZWxlbWVudC5kb2N1bWVudCgp
LnNlY3VyaXR5T3JpZ2luKCktPmNhbkRpc3BsYXkoY29kZUJhc2VVUkwpKSB7CisgICAgICAgIGlm
ICghZWxlbWVudC5kb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCktPmNhbkRpc3BsYXkoY29kZUJh
c2VVUkwsIG1fZnJhbWUuc2NoZW1lUmVnaXN0cnkoKSkpIHsKICAgICAgICAgICAgIEZyYW1lTG9h
ZGVyOjpyZXBvcnRMb2NhbExvYWRGYWlsZWQoJm1fZnJhbWUsIGNvZGVCYXNlVVJMLnN0cmluZygp
KTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CkBAIC0zMDksNyArMzA5
LDcgQEAgRnJhbWUqIFN1YmZyYW1lTG9hZGVyOjpsb2FkU3ViZnJhbWUoSFRNTAogICAgICAgICBt
YXJnaW5IZWlnaHQgPSBmcmFtZUVsZW1lbnRCYXNlLm1hcmdpbkhlaWdodCgpOwogICAgIH0KIAot
ICAgIGlmICghb3duZXJFbGVtZW50LmRvY3VtZW50KCkuc2VjdXJpdHlPcmlnaW4oKS0+Y2FuRGlz
cGxheSh1cmwpKSB7CisgICAgaWYgKCFvd25lckVsZW1lbnQuZG9jdW1lbnQoKS5zZWN1cml0eU9y
aWdpbigpLT5jYW5EaXNwbGF5KHVybCwgbV9mcmFtZS5zY2hlbWVSZWdpc3RyeSgpKSkgewogICAg
ICAgICBGcmFtZUxvYWRlcjo6cmVwb3J0TG9jYWxMb2FkRmFpbGVkKCZtX2ZyYW1lLCB1cmwuc3Ry
aW5nKCkpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC0zMTcsNyArMzE3LDcg
QEAgRnJhbWUqIFN1YmZyYW1lTG9hZGVyOjpsb2FkU3ViZnJhbWUoSFRNTAogICAgIGlmICghU3Vi
ZnJhbWVMb2FkaW5nRGlzYWJsZXI6OmNhbkxvYWRGcmFtZShvd25lckVsZW1lbnQpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFN0cmluZyByZWZlcnJlclRvVXNlID0gU2VjdXJpdHlQ
b2xpY3k6OmdlbmVyYXRlUmVmZXJyZXJIZWFkZXIob3duZXJFbGVtZW50LmRvY3VtZW50KCkucmVm
ZXJyZXJQb2xpY3koKSwgdXJsLCByZWZlcnJlcik7CisgICAgU3RyaW5nIHJlZmVycmVyVG9Vc2Ug
PSBTZWN1cml0eVBvbGljeTo6Z2VuZXJhdGVSZWZlcnJlckhlYWRlcihvd25lckVsZW1lbnQuZG9j
dW1lbnQoKS5yZWZlcnJlclBvbGljeSgpLCB1cmwsIHJlZmVycmVyLCBvd25lckVsZW1lbnQuZG9j
dW1lbnQoKS5zY2hlbWVSZWdpc3RyeSgpKTsKIAogICAgIC8vIFByZXZlbnQgaW5pdGlhbCBlbXB0
eSBkb2N1bWVudCBsb2FkIGZyb20gdHJpZ2dlcmluZyBsb2FkIGV2ZW50cy4KICAgICBtX2ZyYW1l
LmRvY3VtZW50KCktPmluY3JlbWVudExvYWRFdmVudERlbGF5Q291bnQoKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMjA4Mzk4
KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjIzLDcgKzIyMyw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OndpbGxT
ZW5kUmVxdWVzdEkKICAgICAgICAgICAgIGNhbmNlbCgpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9Ci0gICAgICAgIG1fbG9hZFRpbWluZy5hZGRSZWRpcmVjdChyZWRpcmVjdFJlc3Bv
bnNlLnVybCgpLCBuZXdSZXF1ZXN0LnVybCgpKTsKKyAgICAgICAgbV9sb2FkVGltaW5nLmFkZFJl
ZGlyZWN0KHJlZGlyZWN0UmVzcG9uc2UudXJsKCksIG5ld1JlcXVlc3QudXJsKCksIG1fZG9jdW1l
bnRMb2FkZXItPnNjaGVtZVJlZ2lzdHJ5KCkpOwogICAgICAgICBtX3Jlc291cmNlLT5yZWRpcmVj
dFJlY2VpdmVkKG5ld1JlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOwogICAgIH0KIApAQCAtNDM0
LDcgKzQzNCw3IEBAIGJvb2wgU3VicmVzb3VyY2VMb2FkZXI6OmNoZWNrUmVzcG9uc2VDcm8KIGJv
b2wgU3VicmVzb3VyY2VMb2FkZXI6OmNoZWNrUmVkaXJlY3Rpb25Dcm9zc09yaWdpbkFjY2Vzc0Nv
bnRyb2woY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBwcmV2aW91c1JlcXVlc3QsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIFJlc291cmNlUmVxdWVzdCYgbmV3UmVxdWVz
dCwgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCiB7CiAgICAgYm9vbCBjcm9zc09yaWdpbkZsYWcgPSBt
X3Jlc291cmNlLT5pc0Nyb3NzT3JpZ2luKCk7Ci0gICAgYm9vbCBpc05leHRSZXF1ZXN0Q3Jvc3NP
cmlnaW4gPSBtX29yaWdpbiAmJiAhbV9vcmlnaW4tPmNhblJlcXVlc3QobmV3UmVxdWVzdC51cmwo
KSk7CisgICAgYm9vbCBpc05leHRSZXF1ZXN0Q3Jvc3NPcmlnaW4gPSBtX29yaWdpbiAmJiAhbV9v
cmlnaW4tPmNhblJlcXVlc3QobmV3UmVxdWVzdC51cmwoKSwgbV9yZXNvdXJjZS0+c2NoZW1lUmVn
aXN0cnkoKSk7CiAKICAgICBpZiAoaXNOZXh0UmVxdWVzdENyb3NzT3JpZ2luKQogICAgICAgICBt
X3Jlc291cmNlLT5zZXRDcm9zc09yaWdpbigpOwpAQCAtNDU5LDcgKzQ1OSw3IEBAIGJvb2wgU3Vi
cmVzb3VyY2VMb2FkZXI6OmNoZWNrUmVkaXJlY3Rpb24KICAgICAgICAgaWYgKCFjcm9zc09yaWdp
bkZsYWcgJiYgaXNOZXh0UmVxdWVzdENyb3NzT3JpZ2luKQogICAgICAgICAgICAgcmVkaXJlY3Rp
bmdUb05ld09yaWdpbiA9IHRydWU7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlZGlyZWN0
aW5nVG9OZXdPcmlnaW4gPSAhU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShwcmV2aW91c1JlcXVlc3Qu
dXJsKCkpLT5jYW5SZXF1ZXN0KG5ld1JlcXVlc3QudXJsKCkpOworICAgICAgICAgICAgcmVkaXJl
Y3RpbmdUb05ld09yaWdpbiA9ICFTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHByZXZpb3VzUmVxdWVz
dC51cmwoKSwgbV9yZXNvdXJjZS0+c2NoZW1lUmVnaXN0cnkoKSktPmNhblJlcXVlc3QobmV3UmVx
dWVzdC51cmwoKSwgbV9yZXNvdXJjZS0+c2NoZW1lUmVnaXN0cnkoKSk7CiAgICAgfQogCiAgICAg
Ly8gSW1wbGVtZW50aW5nIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNjb25jZXB0LWh0
dHAtcmVkaXJlY3QtZmV0Y2ggc3RlcCAxMC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9U
ZXh0VHJhY2tMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4
dFRyYWNrTG9hZGVyLmgJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9UZXh0VHJhY2tMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsNyBAQAogICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgVGV4dFRyYWNr
TG9hZGVyX2gKLSNkZWZpbmUgVGV4dFRyYWNrTG9hZGVyX2gKKyNwcmFnbWEgb25jZQogCiAjaWYg
RU5BQkxFKFZJREVPX1RSQUNLKQogCkBAIC05MSw0ICs5MCwzIEBAIHByaXZhdGU6CiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAko
cmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVHcm91cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDcgQEAKICNp
bmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJNYW5pZmVzdFBh
cnNlci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQYWdlU2NoZW1lUmVnaXN0cnku
aCIKICNpbmNsdWRlICJQcm9ncmVzc1RyYWNrZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRs
ZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCkBAIC01MCwxMCArNTEsMTAgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1BcHBsaWNhdGlvbkNhY2hlR3JvdXA6OkFwcGxpY2F0aW9u
Q2FjaGVHcm91cChSZWY8QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U+JiYgc3RvcmFnZSwgY29uc3Qg
VVJMJiBtYW5pZmVzdFVSTCkKK0FwcGxpY2F0aW9uQ2FjaGVHcm91cDo6QXBwbGljYXRpb25DYWNo
ZUdyb3VwKFJlZjxBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZT4mJiBzdG9yYWdlLCBjb25zdCBVUkwm
IG1hbmlmZXN0VVJMLCBjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnkmIHNjaGVtZVJlZ2lzdHJ5KQog
ICAgIDogbV9zdG9yYWdlKFdURk1vdmUoc3RvcmFnZSkpCiAgICAgLCBtX21hbmlmZXN0VVJMKG1h
bmlmZXN0VVJMKQotICAgICwgbV9vcmlnaW4oU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShtYW5pZmVz
dFVSTCkpCisgICAgLCBtX29yaWdpbihTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1hbmlmZXN0VVJM
LCBzY2hlbWVSZWdpc3RyeSkpCiAgICAgLCBtX3VwZGF0ZVN0YXR1cyhJZGxlKQogICAgICwgbV9k
b3dubG9hZGluZ1BlbmRpbmdNYXN0ZXJSZXNvdXJjZUxvYWRlcnNDb3VudCgwKQogICAgICwgbV9w
cm9ncmVzc1RvdGFsKDApCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZUdyb3VwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oCShyZXZpc2lvbiAyMDgzOTgpCisrKyBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmgJKHdv
cmtpbmcgY29weSkKQEAgLTIzLDggKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNp
Zm5kZWYgQXBwbGljYXRpb25DYWNoZUdyb3VwX2gKLSNkZWZpbmUgQXBwbGljYXRpb25DYWNoZUdy
b3VwX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRE9NQXBwbGljYXRpb25DYWNoZS5oIgog
I2luY2x1ZGUgIlVSTC5oIgpAQCAtNDIsNiArNDEsNyBAQCBjbGFzcyBBcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZTsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CiBjbGFzcyBG
cmFtZTsKK2NsYXNzIFBhZ2VTY2hlbWVSZWdpc3RyeTsKIGNsYXNzIFJlc291cmNlSGFuZGxlOwog
Y2xhc3MgU2VjdXJpdHlPcmlnaW47CiAKQEAgLTUzLDcgKzUzLDcgQEAgZW51bSBBcHBsaWNhdGlv
bkNhY2hlVXBkYXRlT3B0aW9uIHsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCA6IFJlc291
cmNlSGFuZGxlQ2xpZW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBcHBsaWNhdGlvbkNh
Y2hlR3JvdXApOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBleHBsaWNp
dCBBcHBsaWNhdGlvbkNhY2hlR3JvdXAoUmVmPEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlPiYmLCBj
b25zdCBVUkwmIG1hbmlmZXN0VVJMKTsKKyAgICBleHBsaWNpdCBBcHBsaWNhdGlvbkNhY2hlR3Jv
dXAoUmVmPEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlPiYmLCBjb25zdCBVUkwmIG1hbmlmZXN0VVJM
LCBjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnkmKTsKICAgICB2aXJ0dWFsIH5BcHBsaWNhdGlvbkNh
Y2hlR3JvdXAoKTsKICAgICAKICAgICBlbnVtIFVwZGF0ZVN0YXR1cyB7IElkbGUsIENoZWNraW5n
LCBEb3dubG9hZGluZyB9OwpAQCAtMjAwLDUgKzIwMCwzIEBAIHByaXZhdGU6CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBBcHBsaWNhdGlvbkNhY2hlR3JvdXBfaApJ
bmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZUhvc3QuY3BwCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAj
aW5jbHVkZSAiTWFpbkZyYW1lLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlBhZ2VT
Y2hlbWVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlByb2dyZXNzRXZlbnQuaCIKICNpbmNsdWRlICJS
ZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgpAQCAtNDcsMTEg
KzQ4LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQXBwbGljYXRpb25DYWNoZUhvc3Q6
OkFwcGxpY2F0aW9uQ2FjaGVIb3N0KERvY3VtZW50TG9hZGVyJiBkb2N1bWVudExvYWRlcikKK0Fw
cGxpY2F0aW9uQ2FjaGVIb3N0OjpBcHBsaWNhdGlvbkNhY2hlSG9zdChEb2N1bWVudExvYWRlciYg
ZG9jdW1lbnRMb2FkZXIsIGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3RyeSYgc2NoZW1lUmVnaXN0cnkp
CiAgICAgOiBtX2RvbUFwcGxpY2F0aW9uQ2FjaGUobnVsbHB0cikKICAgICAsIG1fZG9jdW1lbnRM
b2FkZXIoZG9jdW1lbnRMb2FkZXIpCiAgICAgLCBtX2RlZmVyc0V2ZW50cyh0cnVlKQogICAgICwg
bV9jYW5kaWRhdGVBcHBsaWNhdGlvbkNhY2hlR3JvdXAobnVsbHB0cikKKyAgICAsIG1fc2NoZW1l
UmVnaXN0cnkoc2NoZW1lUmVnaXN0cnkpCiB7CiB9CiAKQEAgLTUyNyw3ICs1MjksNyBAQCBib29s
IEFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojppc0FwcGxpY2F0aW9uCiAgICAgaWYgKGZyYW1lLT5pc01h
aW5GcmFtZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBSZWY8U2VjdXJpdHlPcmln
aW4+IG9yaWdpbihTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHJlcXVlc3QudXJsKCkpKTsKKyAgICBS
ZWY8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbihTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHJlcXVlc3Qu
dXJsKCksIG1fc2NoZW1lUmVnaXN0cnkuZ2V0KCkpKTsKICAgICByZXR1cm4gIW9yaWdpbi5nZXQo
KS5jYW5BY2Nlc3NBcHBsaWNhdGlvbkNhY2hlKGZyYW1lLT5kb2N1bWVudCgpLT50b3BPcmlnaW4o
KSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlSG9zdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAkod29ya2luZyBjb3B5
KQpAQCAtMjgsOCArMjgsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIEFwcGxp
Y2F0aW9uQ2FjaGVIb3N0X2gKLSNkZWZpbmUgQXBwbGljYXRpb25DYWNoZUhvc3RfaAorI3ByYWdt
YSBvbmNlCiAKICNpbmNsdWRlICJQbGF0Zm9ybUV4cG9ydE1hY3Jvcy5oIgogI2luY2x1ZGUgIlVS
TC5oIgpAQCAtMzksOSArMzgsMTEgQEAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKKwogICAgIGNsYXNzIERPTUFwcGxpY2F0aW9uQ2FjaGU7CiAgICAgY2xh
c3MgRG9jdW1lbnRMb2FkZXI7CiAgICAgY2xhc3MgRnJhbWU7CisgICAgY2xhc3MgUGFnZVNjaGVt
ZVJlZ2lzdHJ5OwogICAgIGNsYXNzIFJlc291cmNlRXJyb3I7CiAgICAgY2xhc3MgUmVzb3VyY2VM
b2FkZXI7CiAgICAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwpAQCAtMTA5LDcgKzExMCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB0eXBlZGVmIFZlY3RvcjxSZXNvdXJjZUluZm8+
IFJlc291cmNlSW5mb0xpc3Q7CiAKLSAgICAgICAgZXhwbGljaXQgQXBwbGljYXRpb25DYWNoZUhv
c3QoRG9jdW1lbnRMb2FkZXImKTsKKyAgICAgICAgZXhwbGljaXQgQXBwbGljYXRpb25DYWNoZUhv
c3QoRG9jdW1lbnRMb2FkZXImLCBjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnkmKTsKICAgICAgICAg
fkFwcGxpY2F0aW9uQ2FjaGVIb3N0KCk7CiAKICAgICAgICAgc3RhdGljIFVSTCBjcmVhdGVGaWxl
VVJMKGNvbnN0IFN0cmluZyYpOwpAQCAtMTkwLDggKzE5MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogICAgICAgICAvLyBUaGlzIGlzIHRoZSBhcHBsaWNhdGlvbiBjYWNoZSB0aGUgbWFpbiBy
ZXNvdXJjZSB3YXMgbG9hZGVkIGZyb20gKGlmIGFueSkuCiAgICAgICAgIFJlZlB0cjxBcHBsaWNh
dGlvbkNhY2hlPiBtX21haW5SZXNvdXJjZUFwcGxpY2F0aW9uQ2FjaGU7CisgICAgICAgIAorICAg
ICAgICBSZWY8Y29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5PiBtX3NjaGVtZVJlZ2lzdHJ5OwogICAg
IH07CiAKIH0gIC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAgLy8gQXBwbGljYXRpb25D
YWNoZUhvc3RfaApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCShyZXZpc2lvbiAyMDgzOTgpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQXBwbGljYXRp
b25DYWNoZUhvc3QuaCIKICNpbmNsdWRlICJBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuaCIKICNp
bmNsdWRlICJGaWxlU3lzdGVtLmgiCisjaW5jbHVkZSAiUGFnZVNjaGVtZVJlZ2lzdHJ5LmgiCiAj
aW5jbHVkZSAiU1FMaXRlRGF0YWJhc2VUcmFja2VyLmgiCiAjaW5jbHVkZSAiU1FMaXRlU3RhdGVt
ZW50LmgiCiAjaW5jbHVkZSAiU1FMaXRlVHJhbnNhY3Rpb24uaCIKQEAgLTEyNSw3ICsxMjYsNyBA
QCBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIEFwcGxpY2F0aW9uQ2FjaGVTCiAgICAgaWYgKCFjYWNo
ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIAotICAgIEFwcGxpY2F0aW9uQ2Fj
aGVHcm91cCogZ3JvdXAgPSBuZXcgQXBwbGljYXRpb25DYWNoZUdyb3VwKCp0aGlzLCBtYW5pZmVz
dFVSTCk7CisgICAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBncm91cCA9IG5ldyBBcHBsaWNhdGlv
bkNhY2hlR3JvdXAoKnRoaXMsIG1hbmlmZXN0VVJMLCBtX3NjaGVtZVJlZ2lzdHJ5LmdldCgpKTsK
ICAgICAgIAogICAgIGdyb3VwLT5zZXRTdG9yYWdlSUQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0
YXRlbWVudC5nZXRDb2x1bW5JbnQ2NCgwKSkpOwogICAgIGdyb3VwLT5zZXROZXdlc3RDYWNoZShX
VEZNb3ZlKGNhY2hlKSk7CkBAIC0xNDksNyArMTUwLDcgQEAgQXBwbGljYXRpb25DYWNoZUdyb3Vw
KiBBcHBsaWNhdGlvbkNhY2hlUwogICAgIAogICAgIC8vIElmIHRoZSBncm91cCB3YXMgbm90IGZv
dW5kIHdlIG5lZWQgdG8gY3JlYXRlIGl0CiAgICAgaWYgKCFncm91cCkgewotICAgICAgICBncm91
cCA9IG5ldyBBcHBsaWNhdGlvbkNhY2hlR3JvdXAoKnRoaXMsIG1hbmlmZXN0VVJMKTsKKyAgICAg
ICAgZ3JvdXAgPSBuZXcgQXBwbGljYXRpb25DYWNoZUdyb3VwKCp0aGlzLCBtYW5pZmVzdFVSTCwg
bV9zY2hlbWVSZWdpc3RyeS5nZXQoKSk7CiAgICAgICAgIG1fY2FjaGVIb3N0U2V0LmFkZCh1cmxI
b3N0SGFzaChtYW5pZmVzdFVSTCkpOwogICAgIH0KICAgICAKQEAgLTI0OSw3ICsyNTAsNyBAQCBB
cHBsaWNhdGlvbkNhY2hlR3JvdXAqIEFwcGxpY2F0aW9uQ2FjaGVTCiAgICAgICAgIGlmIChyZXNv
dXJjZS0+dHlwZSgpICYgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpGb3JlaWduKQogICAgICAg
ICAgICAgY29udGludWU7CiAKLSAgICAgICAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBncm91cCA9
IG5ldyBBcHBsaWNhdGlvbkNhY2hlR3JvdXAoKnRoaXMsIG1hbmlmZXN0VVJMKTsKKyAgICAgICAg
QXBwbGljYXRpb25DYWNoZUdyb3VwKiBncm91cCA9IG5ldyBBcHBsaWNhdGlvbkNhY2hlR3JvdXAo
KnRoaXMsIG1hbmlmZXN0VVJMLCBtX3NjaGVtZVJlZ2lzdHJ5LmdldCgpKTsKICAgICAgICAgCiAg
ICAgICAgIGdyb3VwLT5zZXRTdG9yYWdlSUQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXRlbWVu
dC5nZXRDb2x1bW5JbnQ2NCgwKSkpOwogICAgICAgICBncm91cC0+c2V0TmV3ZXN0Q2FjaGUoV1RG
TW92ZShjYWNoZSkpOwpAQCAtMzE5LDcgKzMyMCw3IEBAIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCog
QXBwbGljYXRpb25DYWNoZVMKICAgICAgICAgaWYgKGNhY2hlLT5yZXNvdXJjZUZvclVSTChmYWxs
YmFja1VSTCktPnR5cGUoKSAmIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6Rm9yZWlnbikKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogZ3Jv
dXAgPSBuZXcgQXBwbGljYXRpb25DYWNoZUdyb3VwKCp0aGlzLCBtYW5pZmVzdFVSTCk7CisgICAg
ICAgIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogZ3JvdXAgPSBuZXcgQXBwbGljYXRpb25DYWNoZUdy
b3VwKCp0aGlzLCBtYW5pZmVzdFVSTCwgbV9zY2hlbWVSZWdpc3RyeS5nZXQoKSk7CiAgICAgICAg
IAogICAgICAgICBncm91cC0+c2V0U3RvcmFnZUlEKHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGF0
ZW1lbnQuZ2V0Q29sdW1uSW50NjQoMCkpKTsKICAgICAgICAgZ3JvdXAtPnNldE5ld2VzdENhY2hl
KFdURk1vdmUoY2FjaGUpKTsKQEAgLTE1MTksNyArMTUyMCw3IEBAIHZvaWQgQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2U6OmdldE9yaWdpbnMKICAgICAvLyBNdWx0aXBsZSBtYW5pZmVzdCBVUkxzIG1p
Z2h0IHNoYXJlIHRoZSBzYW1lIFNlY3VyaXR5T3JpZ2luLCBzbyB3ZSBtaWdodCBiZSBjcmVhdGlu
ZyBleHRyYSwgd2FzdGVkIG9yaWdpbnMgaGVyZS4KICAgICAvLyBUaGUgY3VycmVudCBzY2hlbWEg
ZG9lc24ndCBhbGxvdyBmb3IgYSBtb3JlIGVmZmljaWVudCB3YXkgb2YgYnVpbGRpbmcgdGhpcyBs
aXN0LgogICAgIGZvciAoYXV0byYgdXJsIDogdXJscykKLSAgICAgICAgb3JpZ2lucy5hZGQoU2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZSh1cmwpKTsKKyAgICAgICAgb3JpZ2lucy5hZGQoU2VjdXJpdHlP
cmlnaW46OmNyZWF0ZSh1cmwsIG1fc2NoZW1lUmVnaXN0cnkuZ2V0KCkpKTsKIH0KIAogdm9pZCBB
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZGVsZXRlQWxsRW50cmllcygpCkBAIC0xNTY3LDE4ICsx
NTY4LDE5IEBAIGludDY0X3QgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmRpc2tVc2EKICAgICBy
ZXR1cm4gdXNhZ2U7CiB9CiAKLUFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpBcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZShjb25zdCBTdHJpbmcmIGNhY2hlRGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIGZs
YXRGaWxlU3ViZGlyZWN0b3J5TmFtZSkKK0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZShjb25zdCBTdHJpbmcmIGNhY2hlRGlyZWN0b3J5LCBjb25zdCBTdHJp
bmcmIGZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSwgUmVmPGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3Ry
eT4mJiBzY2hlbWVSZWdpc3RyeSkKICAgICA6IG1fY2FjaGVEaXJlY3RvcnkoY2FjaGVEaXJlY3Rv
cnkpCiAgICAgLCBtX2ZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZShmbGF0RmlsZVN1YmRpcmVjdG9y
eU5hbWUpCiAgICAgLCBtX21heGltdW1TaXplKEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpub1F1
b3RhKCkpCiAgICAgLCBtX2lzTWF4aW11bVNpemVSZWFjaGVkKGZhbHNlKQogICAgICwgbV9kZWZh
dWx0T3JpZ2luUXVvdGEoQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6Om5vUXVvdGEoKSkKKyAgICAs
IG1fc2NoZW1lUmVnaXN0cnkoV1RGTW92ZShzY2hlbWVSZWdpc3RyeSkpCiB7CiB9CiAKLVJlZjxB
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZT4gQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNyZWF0ZShj
b25zdCBTdHJpbmcmIGNhY2hlRGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIGZsYXRGaWxlU3ViZGly
ZWN0b3J5TmFtZSkKK1JlZjxBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZT4gQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2U6OmNyZWF0ZShjb25zdCBTdHJpbmcmIGNhY2hlRGlyZWN0b3J5LCBjb25zdCBTdHJp
bmcmIGZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSwgUmVmPGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3Ry
eT4mJiBzY2hlbWVSZWdpc3RyeSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZShjYWNoZURpcmVjdG9yeSwgZmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1l
KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UoY2Fj
aGVEaXJlY3RvcnksIGZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSwgV1RGTW92ZShzY2hlbWVSZWdp
c3RyeSkpKTsKIH0KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgJKHJldmlzaW9uIDIwODM5OCkK
KysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAq
LwogCi0jaWZuZGVmIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlX2gKLSNkZWZpbmUgQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2VfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdp
bkhhc2guaCIKICNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZS5oIgpAQCAtMzksOSArMzgsMTAgQEAg
Y2xhc3MgQXBwbGljYXRpb25DYWNoZTsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDsKIGNs
YXNzIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OwogY2xhc3MgQXBwbGljYXRpb25DYWNoZVJlc291cmNl
OwotY2xhc3MgVVJMOworY2xhc3MgUGFnZVNjaGVtZVJlZ2lzdHJ5OwogY2xhc3MgU2VjdXJpdHlP
cmlnaW47CiBjbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBVUkw7CiB0ZW1wbGF0ZSA8Y2xhc3Mg
VD4gY2xhc3MgU3RvcmFnZUlESm91cm5hbDsKIAogY2xhc3MgQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2UgOiBwdWJsaWMgUmVmQ291bnRlZDxBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZT4gewpAQCAtNTIs
NyArNTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIERpc2tPck9wZXJhdGlvbkZhaWx1cmUKICAgICB9
OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxBcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgY2FjaGVEaXJlY3RvcnksIGNvbnN0IFN0cmluZyYgZmxh
dEZpbGVTdWJkaXJlY3RvcnlOYW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBjYWNoZURpcmVjdG9y
eSwgY29uc3QgU3RyaW5nJiBmbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUsIFJlZjxjb25zdCBQYWdl
U2NoZW1lUmVnaXN0cnk+JiYpOwogCiAgICAgY29uc3QgU3RyaW5nJiBjYWNoZURpcmVjdG9yeSgp
IGNvbnN0OwogICAgIApAQCAtMTA3LDcgKzEwNyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgaW50
NjRfdCB1bmtub3duUXVvdGEoKSB7IHJldHVybiAtMTsgfQogICAgIHN0YXRpYyBpbnQ2NF90IG5v
UXVvdGEoKSB7IHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgoKTsgfQog
cHJpdmF0ZToKLSAgICBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZShjb25zdCBTdHJpbmcmIGNhY2hl
RGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIGZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSk7CisgICAg
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2UoY29uc3QgU3RyaW5nJiBjYWNoZURpcmVjdG9yeSwgY29u
c3QgU3RyaW5nJiBmbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUsIFJlZjxjb25zdCBQYWdlU2NoZW1l
UmVnaXN0cnk+JiYpOwogCiAgICAgUGFzc1JlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBsb2FkQ2Fj
aGUodW5zaWduZWQgc3RvcmFnZUlEKTsKICAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIGxvYWRD
YWNoZUdyb3VwKGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwpOwpAQCAtMTU1LDEwICsxNTUsOSBAQCBw
cml2YXRlOgogICAgIAogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIEFwcGxpY2F0aW9uQ2Fj
aGVHcm91cCo+IENhY2hlR3JvdXBNYXA7CiAgICAgQ2FjaGVHcm91cE1hcCBtX2NhY2hlc0luTWVt
b3J5OyAvLyBFeGNsdWRlcyBvYnNvbGV0ZSBjYWNoZSBncm91cHMuCisgICAgUmVmPGNvbnN0IFBh
Z2VTY2hlbWVSZWdpc3RyeT4gbV9zY2hlbWVSZWdpc3RyeTsKIAogICAgIGZyaWVuZCBjbGFzcyBX
VEY6Ok5ldmVyRGVzdHJveWVkPEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlPjsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlX2gK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5
bGVTaGVldC5jcHAJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsOCArNDEs
OCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNhY2hlZENTU1N0eWxlU2hlZXQ6OkNhY2hl
ZENTU1N0eWxlU2hlZXQoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2Vzc2lvbklE
IHNlc3Npb25JRCkKLSAgICA6IENhY2hlZFJlc291cmNlKFdURk1vdmUocmVxdWVzdCksIENTU1N0
eWxlU2hlZXQsIHNlc3Npb25JRCkKK0NhY2hlZENTU1N0eWxlU2hlZXQ6OkNhY2hlZENTU1N0eWxl
U2hlZXQoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2Vzc2lvbklEIHNlc3Npb25J
RCwgY29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5JiBzY2hlbWVSZWdpc3RyeSkKKyAgICA6IENhY2hl
ZFJlc291cmNlKFdURk1vdmUocmVxdWVzdCksIENTU1N0eWxlU2hlZXQsIHNlc3Npb25JRCwgc2No
ZW1lUmVnaXN0cnkpCiAgICAgLCBtX2RlY29kZXIoVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRl
KCJ0ZXh0L2NzcyIsIHJlcXVlc3QuY2hhcnNldCgpKSkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaAkocmV2aXNpb24g
MjA4Mzk4KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hl
ZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsNyBAQAogICAgIHBhZ2VzIGZyb20gdGhl
IHdlYi4gSXQgaGFzIGEgbWVtb3J5IGNhY2hlIGZvciB0aGVzZSBvYmplY3RzLgogKi8KIAotI2lm
bmRlZiBDYWNoZWRDU1NTdHlsZVNoZWV0X2gKLSNkZWZpbmUgQ2FjaGVkQ1NTU3R5bGVTaGVldF9o
CisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlLmgiCiAKQEAgLTM3LDcg
KzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgQ2FjaGVkQ1NTU3R5bGVT
aGVldCBmaW5hbCA6IHB1YmxpYyBDYWNoZWRSZXNvdXJjZSB7CiAgICAgcHVibGljOgotICAgICAg
ICBDYWNoZWRDU1NTdHlsZVNoZWV0KENhY2hlZFJlc291cmNlUmVxdWVzdCYmLCBTZXNzaW9uSUQp
OworICAgICAgICBDYWNoZWRDU1NTdHlsZVNoZWV0KENhY2hlZFJlc291cmNlUmVxdWVzdCYmLCBT
ZXNzaW9uSUQsIGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3RyeSYpOwogICAgICAgICB2aXJ0dWFsIH5D
YWNoZWRDU1NTdHlsZVNoZWV0KCk7CiAKICAgICAgICAgZW51bSBjbGFzcyBNSU1FVHlwZUNoZWNr
IHsgU3RyaWN0LCBMYXggfTsKQEAgLTcyLDUgKzcxLDMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0NBQ0hFRF9S
RVNPVVJDRShDYWNoZWRDU1NTdHlsZVNoZWV0LCBDYWNoZWRSZXNvdXJjZTo6Q1NTU3R5bGVTaGVl
dCkKLQotI2VuZGlmIC8vIENhY2hlZENTU1N0eWxlU2hlZXRfaApJbmRleDogU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00Niw4ICs0Niw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ2FjaGVkRm9udDo6Q2Fj
aGVkRm9udChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTZXNzaW9uSUQgc2Vzc2lv
bklELCBUeXBlIHR5cGUpCi0gICAgOiBDYWNoZWRSZXNvdXJjZShXVEZNb3ZlKHJlcXVlc3QpLCB0
eXBlLCBzZXNzaW9uSUQpCitDYWNoZWRGb250OjpDYWNoZWRGb250KENhY2hlZFJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsIFNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFBhZ2VTY2hlbWVSZWdp
c3RyeSYgc2NoZW1lUmVnaXN0cnksIFR5cGUgdHlwZSkKKyAgICA6IENhY2hlZFJlc291cmNlKFdU
Rk1vdmUocmVxdWVzdCksIHR5cGUsIHNlc3Npb25JRCwgc2NoZW1lUmVnaXN0cnkpCiAgICAgLCBt
X2xvYWRJbml0aWF0ZWQoZmFsc2UpCiAgICAgLCBtX2hhc0NyZWF0ZWRGb250RGF0YVdyYXBwaW5n
UmVzb3VyY2UoZmFsc2UpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkRm9udC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRGb250LmgJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRGb250LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDggKzIzLDcgQEAKICAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAogICovCiAKLSNpZm5kZWYgQ2FjaGVkRm9udF9oCi0jZGVmaW5lIENhY2hlZEZvbnRf
aAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZS5oIgogI2luY2x1ZGUg
IkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCkBAIC00NSw3ICs0NCw3IEBAIHR5cGVkZWYgRm9udFRh
Z2dlZFNldHRpbmdzPGludD4gRm9udEZlYXQKIAogY2xhc3MgQ2FjaGVkRm9udCA6IHB1YmxpYyBD
YWNoZWRSZXNvdXJjZSB7CiBwdWJsaWM6Ci0gICAgQ2FjaGVkRm9udChDYWNoZWRSZXNvdXJjZVJl
cXVlc3QmJiwgU2Vzc2lvbklELCBUeXBlID0gRm9udFJlc291cmNlKTsKKyAgICBDYWNoZWRGb250
KENhY2hlZFJlc291cmNlUmVxdWVzdCYmLCBTZXNzaW9uSUQsIGNvbnN0IFBhZ2VTY2hlbWVSZWdp
c3RyeSYsIFR5cGUgPSBGb250UmVzb3VyY2UpOwogICAgIHZpcnR1YWwgfkNhY2hlZEZvbnQoKTsK
IAogICAgIHZvaWQgYmVnaW5Mb2FkSWZOZWVkZWQoQ2FjaGVkUmVzb3VyY2VMb2FkZXImKTsKQEAg
LTg0LDUgKzgzLDMgQEAgcHJpdmF0ZToKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19DQUNIRURfUkVTT1VSQ0UoQ2FjaGVkRm9udCwgQ2FjaGVkUmVzb3Vy
Y2U6OkZvbnRSZXNvdXJjZSkKLQotI2VuZGlmIC8vIENhY2hlZEZvbnRfaApJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnRDbGllbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udENsaWVudC5oCShyZXZpc2lvbiAy
MDgzOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udENsaWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBDYWNoZWRGb250Q2xpZW50X2gKLSNkZWZpbmUg
Q2FjaGVkRm9udENsaWVudF9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNhY2hlZFJlc291
cmNlQ2xpZW50LmgiCiAKQEAgLTQxLDUgKzQwLDMgQEAgcHVibGljOgogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gQ2FjaGVkRm9udENsaWVudF9oCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAJKHJldmlzaW9uIDIwODM5
OCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU2LDIwICs1NiwyMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNh
Y2hlZEltYWdlOjpDYWNoZWRJbWFnZShDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBT
ZXNzaW9uSUQgc2Vzc2lvbklEKQotICAgIDogQ2FjaGVkUmVzb3VyY2UoV1RGTW92ZShyZXF1ZXN0
KSwgSW1hZ2VSZXNvdXJjZSwgc2Vzc2lvbklEKQorQ2FjaGVkSW1hZ2U6OkNhY2hlZEltYWdlKENh
Y2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFBhZ2VTY2hlbWVSZWdpc3RyeSYgc2NoZW1lUmVnaXN0cnkpCisgICAgOiBDYWNoZWRSZXNvdXJj
ZShXVEZNb3ZlKHJlcXVlc3QpLCBJbWFnZVJlc291cmNlLCBzZXNzaW9uSUQsIHNjaGVtZVJlZ2lz
dHJ5KQogewogICAgIHNldFN0YXR1cyhVbmtub3duKTsKIH0KIAotQ2FjaGVkSW1hZ2U6OkNhY2hl
ZEltYWdlKEltYWdlKiBpbWFnZSwgU2Vzc2lvbklEIHNlc3Npb25JRCkKLSAgICA6IENhY2hlZFJl
c291cmNlKFVSTCgpLCBJbWFnZVJlc291cmNlLCBzZXNzaW9uSUQpCitDYWNoZWRJbWFnZTo6Q2Fj
aGVkSW1hZ2UoSW1hZ2UqIGltYWdlLCBTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBQYWdlU2No
ZW1lUmVnaXN0cnkmIHNjaGVtZVJlZ2lzdHJ5KQorICAgIDogQ2FjaGVkUmVzb3VyY2UoVVJMKCks
IEltYWdlUmVzb3VyY2UsIHNlc3Npb25JRCwgc2NoZW1lUmVnaXN0cnkpCiAgICAgLCBtX2ltYWdl
KGltYWdlKQogewogfQogCi1DYWNoZWRJbWFnZTo6Q2FjaGVkSW1hZ2UoY29uc3QgVVJMJiB1cmws
IEltYWdlKiBpbWFnZSwgU2Vzc2lvbklEIHNlc3Npb25JRCkKLSAgICA6IENhY2hlZFJlc291cmNl
KHVybCwgSW1hZ2VSZXNvdXJjZSwgc2Vzc2lvbklEKQorQ2FjaGVkSW1hZ2U6OkNhY2hlZEltYWdl
KGNvbnN0IFVSTCYgdXJsLCBJbWFnZSogaW1hZ2UsIFNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFBhZ2VTY2hlbWVSZWdpc3RyeSYgc2NoZW1lUmVnaXN0cnkpCisgICAgOiBDYWNoZWRSZXNvdXJj
ZSh1cmwsIEltYWdlUmVzb3VyY2UsIHNlc3Npb25JRCwgc2NoZW1lUmVnaXN0cnkpCiAgICAgLCBt
X2ltYWdlKGltYWdlKQogICAgICwgbV9pc01hbnVhbGx5Q2FjaGVkKHRydWUpCiB7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAkocmV2aXNpb24gMjA4Mzk4
KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTIwLDggKzIwLDcgQEAKICAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
ICovCiAKLSNpZm5kZWYgQ2FjaGVkSW1hZ2VfaAotI2RlZmluZSBDYWNoZWRJbWFnZV9oCisjcHJh
Z21hIG9uY2UKIAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlLmgiCiAjaW5jbHVkZSAiSW1hZ2Uu
aCIKQEAgLTQ4LDEwICs0NywxMCBAQCBjbGFzcyBDYWNoZWRJbWFnZSBmaW5hbCA6IHB1YmxpYyBD
YWNoZWRSCiAgICAgZnJpZW5kIGNsYXNzIE1lbW9yeUNhY2hlOwogCiBwdWJsaWM6Ci0gICAgQ2Fj
aGVkSW1hZ2UoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYsIFNlc3Npb25JRCk7Ci0gICAgQ2FjaGVk
SW1hZ2UoSW1hZ2UqLCBTZXNzaW9uSUQpOworICAgIENhY2hlZEltYWdlKENhY2hlZFJlc291cmNl
UmVxdWVzdCYmLCBTZXNzaW9uSUQsIGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3RyeSYpOworICAgIENh
Y2hlZEltYWdlKEltYWdlKiwgU2Vzc2lvbklELCBjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnkmKTsK
ICAgICAvLyBDb25zdHJ1Y3RvciB0byB1c2UgZm9yIG1hbnVhbGx5IGNhY2hlZCBpbWFnZXMuCi0g
ICAgQ2FjaGVkSW1hZ2UoY29uc3QgVVJMJiwgSW1hZ2UqLCBTZXNzaW9uSUQpOworICAgIENhY2hl
ZEltYWdlKGNvbnN0IFVSTCYsIEltYWdlKiwgU2Vzc2lvbklELCBjb25zdCBQYWdlU2NoZW1lUmVn
aXN0cnkmKTsKICAgICB2aXJ0dWFsIH5DYWNoZWRJbWFnZSgpOwogCiAgICAgV0VCQ09SRV9FWFBP
UlQgSW1hZ2UqIGltYWdlKCk7IC8vIFJldHVybnMgdGhlIG51bGxJbWFnZSgpIGlmIHRoZSBpbWFn
ZSBpcyBub3QgYXZhaWxhYmxlIHlldC4KQEAgLTE0MSw1ICsxNDAsMyBAQCBwcml2YXRlOgogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0NBQ0hFRF9SRVNP
VVJDRShDYWNoZWRJbWFnZSwgQ2FjaGVkUmVzb3VyY2U6OkltYWdlUmVzb3VyY2UpCi0KLSNlbmRp
ZiAvLyBDYWNoZWRJbWFnZV9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2VDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkSW1hZ2VDbGllbnQuaAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTIw
LDggKzIwLDcgQEAKICAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KICovCiAKLSNpZm5k
ZWYgQ2FjaGVkSW1hZ2VDbGllbnRfaAotI2RlZmluZSBDYWNoZWRJbWFnZUNsaWVudF9oCisjcHJh
Z21hIG9uY2UKIAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCiAKQEAgLTQ1LDUg
KzQ0LDMgQEAgcHVibGljOgogfTsKIAogfQotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAkocmV2aXNpb24gMjA4
Mzk4KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzYsOCArMzYsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLUNhY2hlZFJhd1Jlc291cmNlOjpDYWNoZWRSYXdSZXNvdXJjZShDYWNoZWRSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0LCBUeXBlIHR5cGUsIFNlc3Npb25JRCBzZXNzaW9uSUQpCi0gICAgOiBD
YWNoZWRSZXNvdXJjZShXVEZNb3ZlKHJlcXVlc3QpLCB0eXBlLCBzZXNzaW9uSUQpCitDYWNoZWRS
YXdSZXNvdXJjZTo6Q2FjaGVkUmF3UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgVHlwZSB0eXBlLCBTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBQYWdlU2NoZW1lUmVn
aXN0cnkmIHNjaGVtZVJlZ2lzdHJ5KQorICAgIDogQ2FjaGVkUmVzb3VyY2UoV1RGTW92ZShyZXF1
ZXN0KSwgdHlwZSwgc2Vzc2lvbklELCBzY2hlbWVSZWdpc3RyeSkKICAgICAsIG1faWRlbnRpZmll
cigwKQogICAgICwgbV9hbGxvd0VuY29kZWREYXRhUmVwbGFjZW1lbnQodHJ1ZSkKIHsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCShy
ZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3
UmVzb3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjAsOCArMjAsNyBAQAogICAgIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgogKi8KIAotI2lmbmRlZiBDYWNoZWRSYXdSZXNvdXJjZV9oCi0j
ZGVmaW5lIENhY2hlZFJhd1Jlc291cmNlX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ2Fj
aGVkUmVzb3VyY2UuaCIKIApAQCAtMzIsNyArMzEsNyBAQCBjbGFzcyBTdWJyZXNvdXJjZUxvYWRl
cjsKIAogY2xhc3MgQ2FjaGVkUmF3UmVzb3VyY2UgZmluYWwgOiBwdWJsaWMgQ2FjaGVkUmVzb3Vy
Y2UgewogcHVibGljOgotICAgIENhY2hlZFJhd1Jlc291cmNlKENhY2hlZFJlc291cmNlUmVxdWVz
dCYmLCBUeXBlLCBTZXNzaW9uSUQpOworICAgIENhY2hlZFJhd1Jlc291cmNlKENhY2hlZFJlc291
cmNlUmVxdWVzdCYmLCBUeXBlLCBTZXNzaW9uSUQsIGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3RyeSYp
OwogCiAgICAgLy8gRklYTUU6IEFzc29jaWF0ZWRVUkxMb2FkZXIgc2hvdWxkbid0IGJlIGEgRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyIGFuZCB0aGVyZWZvcmUgc2hvdWxkbid0CiAgICAgLy8gdXNl
IENhY2hlZFJhd1Jlc291cmNlLiBIb3dldmVyLCBpdCBpcywgYW5kIGl0IG5lZWRzIHRvIGJlIGFi
bGUgdG8gZGVmZXIgbG9hZGluZy4KQEAgLTk3LDUgKzk2LDMgQEAgcHJpdmF0ZToKIFNQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2UpCiAgICAgc3Rh
dGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkNhY2hlZFJlc291cmNlJiByZXNvdXJjZSkg
eyByZXR1cm4gcmVzb3VyY2UuaXNNYWluT3JNZWRpYU9yUmF3UmVzb3VyY2UoKTsgfQogU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19FTkQoKQotCi0jZW5kaWYgLy8gQ2FjaGVkUmF3UmVzb3VyY2VfaApJ
bmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3Bw
CShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAi
TWFpbkZyYW1lLmgiCiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKICNpbmNsdWRlICJQYWdlLmgi
CisjaW5jbHVkZSAiUGFnZVNjaGVtZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJh
dGVnaWVzLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJTY2hlbWVS
ZWdpc3RyeS5oIgpAQCAtMTEzLDcgKzExNCw3IEBAIHN0YXRpYyBzdGQ6OmNocm9ubzo6bWlsbGlz
ZWNvbmRzIGRlYWREZWMKIAogREVGSU5FX0RFQlVHX09OTFlfR0xPQkFMKFJlZkNvdW50ZWRMZWFr
Q291bnRlciwgY2FjaGVkUmVzb3VyY2VMZWFrQ291bnRlciwgKCJDYWNoZWRSZXNvdXJjZSIpKTsK
IAotQ2FjaGVkUmVzb3VyY2U6OkNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsIFR5cGUgdHlwZSwgU2Vzc2lvbklEIHNlc3Npb25JRCkKK0NhY2hlZFJlc291cmNl
OjpDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBUeXBlIHR5
cGUsIFNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3RyeSYgc2NoZW1l
UmVnaXN0cnkpCiAgICAgOiBtX3Jlc291cmNlUmVxdWVzdChyZXF1ZXN0LnJlbGVhc2VSZXNvdXJj
ZVJlcXVlc3QoKSkKICAgICAsIG1fb3B0aW9ucyhyZXF1ZXN0Lm9wdGlvbnMoKSkKICAgICAsIG1f
ZGVjb2RlZERhdGFEZWxldGlvblRpbWVyKCp0aGlzLCAmQ2FjaGVkUmVzb3VyY2U6OmRlc3Ryb3lE
ZWNvZGVkRGF0YSwgZGVhZERlY29kZWREYXRhRGVsZXRpb25JbnRlcnZhbEZvclJlc291cmNlVHlw
ZSh0eXBlKSkKQEAgLTEyMiw2ICsxMjMsNyBAQCBDYWNoZWRSZXNvdXJjZTo6Q2FjaGVkUmVzb3Vy
Y2UoQ2FjaGVkUmVzCiAgICAgLCBtX3Jlc3BvbnNlVGltZXN0YW1wKHN0ZDo6Y2hyb25vOjpzeXN0
ZW1fY2xvY2s6Om5vdygpKQogICAgICwgbV9mcmFnbWVudElkZW50aWZpZXJGb3JSZXF1ZXN0KHJl
cXVlc3QucmVsZWFzZUZyYWdtZW50SWRlbnRpZmllcigpKQogICAgICwgbV9vcmlnaW4ocmVxdWVz
dC5yZWxlYXNlT3JpZ2luKCkpCisgICAgLCBtX3NjaGVtZVJlZ2lzdHJ5KHNjaGVtZVJlZ2lzdHJ5
KQogICAgICwgbV90eXBlKHR5cGUpCiB7CiAgICAgQVNTRVJUKHNlc3Npb25JRC5pc1ZhbGlkKCkp
OwpAQCAtMTM0LDE3ICsxMzYsMTggQEAgQ2FjaGVkUmVzb3VyY2U6OkNhY2hlZFJlc291cmNlKENh
Y2hlZFJlcwogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgaGF2ZSBhIGJldHRlciB3YXkgb2YgY2hl
Y2tpbmcgZm9yIE5hdmlnYXRpb24gbG9hZHMsIG1heWJlIEZldGNoTW9kZTo6T3B0aW9uczo6TmF2
aWdhdGUuCiAgICAgQVNTRVJUKG1fb3JpZ2luIHx8IG1fdHlwZSA9PSBDYWNoZWRSZXNvdXJjZTo6
TWFpblJlc291cmNlKTsKIAotICAgIGlmIChpc1JlcXVlc3RDcm9zc09yaWdpbihtX29yaWdpbi5n
ZXQoKSwgbV9yZXNvdXJjZVJlcXVlc3QudXJsKCksIG1fb3B0aW9ucykpCisgICAgaWYgKGlzUmVx
dWVzdENyb3NzT3JpZ2luKG1fb3JpZ2luLmdldCgpLCBtX3Jlc291cmNlUmVxdWVzdC51cmwoKSwg
bV9vcHRpb25zLCBzY2hlbWVSZWdpc3RyeSkpCiAgICAgICAgIHNldENyb3NzT3JpZ2luKCk7CiB9
CiAKIC8vIEZJWE1FOiBGb3IgdGhpcyBjb25zdHJ1Y3Rvciwgd2Ugc2hvdWxkIHByb2JhYmx5IG1h
bmRhdGUgdGhhdCB0aGUgVVJMIGhhcyBubyBmcmFnbWVudCBpZGVudGlmaWVyLgotQ2FjaGVkUmVz
b3VyY2U6OkNhY2hlZFJlc291cmNlKGNvbnN0IFVSTCYgdXJsLCBUeXBlIHR5cGUsIFNlc3Npb25J
RCBzZXNzaW9uSUQpCitDYWNoZWRSZXNvdXJjZTo6Q2FjaGVkUmVzb3VyY2UoY29uc3QgVVJMJiB1
cmwsIFR5cGUgdHlwZSwgU2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUGFnZVNjaGVtZVJlZ2lz
dHJ5JiBzY2hlbWVSZWdpc3RyeSkKICAgICA6IG1fcmVzb3VyY2VSZXF1ZXN0KHVybCkKICAgICAs
IG1fZGVjb2RlZERhdGFEZWxldGlvblRpbWVyKCp0aGlzLCAmQ2FjaGVkUmVzb3VyY2U6OmRlc3Ry
b3lEZWNvZGVkRGF0YSwgZGVhZERlY29kZWREYXRhRGVsZXRpb25JbnRlcnZhbEZvclJlc291cmNl
VHlwZSh0eXBlKSkKICAgICAsIG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKICAgICAsIG1fcmVzcG9u
c2VUaW1lc3RhbXAoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6bm93KCkpCiAgICAgLCBtX2Zy
YWdtZW50SWRlbnRpZmllckZvclJlcXVlc3QoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0OjpzcGxpdEZy
YWdtZW50SWRlbnRpZmllckZyb21SZXF1ZXN0VVJMKG1fcmVzb3VyY2VSZXF1ZXN0KSkKKyAgICAs
IG1fc2NoZW1lUmVnaXN0cnkoc2NoZW1lUmVnaXN0cnkpCiAgICAgLCBtX3R5cGUodHlwZSkKICAg
ICAsIG1fc3RhdHVzKENhY2hlZCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZS5oCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiAr
NDcsNyBAQCBjbGFzcyBDYWNoZWRSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIENhY2hlZFJlc291cmNl
UmVxdWVzdDsKIGNsYXNzIEluc3BlY3RvclJlc291cmNlOwogY2xhc3MgTWVtb3J5Q2FjaGU7Citj
bGFzcyBQYWdlU2NoZW1lUmVnaXN0cnk7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFNo
YXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnJlc291cmNlTG9hZGVyOwpAQCAtOTMsNyArOTQsNyBAQCBw
dWJsaWM6CiAgICAgICAgIERlY29kZUVycm9yCiAgICAgfTsKIAotICAgIENhY2hlZFJlc291cmNl
KENhY2hlZFJlc291cmNlUmVxdWVzdCYmLCBUeXBlLCBTZXNzaW9uSUQpOworICAgIENhY2hlZFJl
c291cmNlKENhY2hlZFJlc291cmNlUmVxdWVzdCYmLCBUeXBlLCBTZXNzaW9uSUQsIGNvbnN0IFBh
Z2VTY2hlbWVSZWdpc3RyeSYpOwogICAgIHZpcnR1YWwgfkNhY2hlZFJlc291cmNlKCk7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgbG9hZChDYWNoZWRSZXNvdXJjZUxvYWRlciYpOwpAQCAtMjA4LDYgKzIw
OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGxvYWRGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJik7
CiAKICAgICBTZWN1cml0eU9yaWdpbiogb3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW4u
Z2V0KCk7IH0KKyAgICBjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnkmIHNjaGVtZVJlZ2lzdHJ5KCkg
eyByZXR1cm4gbV9zY2hlbWVSZWdpc3RyeS5nZXQoKTsgfQogCiAgICAgYm9vbCBjYW5EZWxldGUo
KSBjb25zdCB7IHJldHVybiAhaGFzQ2xpZW50cygpICYmICFtX2xvYWRlciAmJiAhbV9wcmVsb2Fk
Q291bnQgJiYgIW1faGFuZGxlQ291bnQgJiYgIW1fcmVzb3VyY2VUb1JldmFsaWRhdGUgJiYgIW1f
cHJveHlSZXNvdXJjZTsgfQogICAgIGJvb2wgaGFzT25lSGFuZGxlKCkgY29uc3QgeyByZXR1cm4g
bV9oYW5kbGVDb3VudCA9PSAxOyB9CkBAIC0yNzQsNyArMjc2LDcgQEAgcHVibGljOgogCiBwcm90
ZWN0ZWQ6CiAgICAgLy8gQ2FjaGVkUmVzb3VyY2UgY29uc3RydWN0b3IgdGhhdCBtYXkgYmUgdXNl
ZCB3aGVuIHRoZSBDYWNoZWRSZXNvdXJjZSBjYW4gYWxyZWFkeSBiZSBmaWxsZWQgd2l0aCByZXNw
b25zZSBkYXRhLgotICAgIENhY2hlZFJlc291cmNlKGNvbnN0IFVSTCYsIFR5cGUsIFNlc3Npb25J
RCk7CisgICAgQ2FjaGVkUmVzb3VyY2UoY29uc3QgVVJMJiwgVHlwZSwgU2Vzc2lvbklELCBjb25z
dCBQYWdlU2NoZW1lUmVnaXN0cnkmKTsKIAogICAgIHZvaWQgc2V0RW5jb2RlZFNpemUodW5zaWdu
ZWQpOwogICAgIHZvaWQgc2V0RGVjb2RlZFNpemUodW5zaWduZWQpOwpAQCAtMzE4LDYgKzMyMCw3
IEBAIHByaXZhdGU6CiAKICAgICBSZXNvdXJjZUVycm9yIG1fZXJyb3I7CiAgICAgUmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPiBtX29yaWdpbjsKKyAgICBSZWY8Y29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5
PiBtX3NjaGVtZVJlZ2lzdHJ5OwogCiAgICAgZG91YmxlIG1fbGFzdERlY29kZWRBY2Nlc3NUaW1l
IHsgMCB9OyAvLyBVc2VkIGFzIGEgInRocmFzaCBndWFyZCIgaW4gdGhlIGNhY2hlCiAgICAgZG91
YmxlIG1fbG9hZEZpbmlzaFRpbWUgeyAwIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDIwODM5
OCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTU3LDYgKzU3LDcgQEAKICNpbmNsdWRlICJNYWluRnJhbWUu
aCIKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRl
ICJQYWdlU2NoZW1lUmVnaXN0cnkuaCIKICNpbmNsdWRlICJQZXJmb3JtYW5jZS5oIgogI2luY2x1
ZGUgIlBpbmdMb2FkZXIuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKQEAgLTg1
LDUwICs4Niw1MSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBDYWNoZWRSZXNv
dXJjZSogY3JlYXRlUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwgQ2FjaGVkUmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2Vzc2lvbklEIHNlc3Npb25JRCkKK3N0YXRpYyBDYWNo
ZWRSZXNvdXJjZSogY3JlYXRlUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwgQ2Fj
aGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
UGFnZVNjaGVtZVJlZ2lzdHJ5JiBzY2hlbWVSZWdpc3RyeSkKIHsKICAgICBzd2l0Y2ggKHR5cGUp
IHsKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpJbWFnZVJlc291cmNlOgotICAgICAgICByZXR1
cm4gbmV3IENhY2hlZEltYWdlKFdURk1vdmUocmVxdWVzdCksIHNlc3Npb25JRCk7CisgICAgICAg
IHJldHVybiBuZXcgQ2FjaGVkSW1hZ2UoV1RGTW92ZShyZXF1ZXN0KSwgc2Vzc2lvbklELCBzY2hl
bWVSZWdpc3RyeSk7CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6Q1NTU3R5bGVTaGVldDoKLSAg
ICAgICAgcmV0dXJuIG5ldyBDYWNoZWRDU1NTdHlsZVNoZWV0KFdURk1vdmUocmVxdWVzdCksIHNl
c3Npb25JRCk7CisgICAgICAgIHJldHVybiBuZXcgQ2FjaGVkQ1NTU3R5bGVTaGVldChXVEZNb3Zl
KHJlcXVlc3QpLCBzZXNzaW9uSUQsIHNjaGVtZVJlZ2lzdHJ5KTsKICAgICBjYXNlIENhY2hlZFJl
c291cmNlOjpTY3JpcHQ6Ci0gICAgICAgIHJldHVybiBuZXcgQ2FjaGVkU2NyaXB0KFdURk1vdmUo
cmVxdWVzdCksIHNlc3Npb25JRCk7CisgICAgICAgIHJldHVybiBuZXcgQ2FjaGVkU2NyaXB0KFdU
Rk1vdmUocmVxdWVzdCksIHNlc3Npb25JRCwgc2NoZW1lUmVnaXN0cnkpOwogICAgIGNhc2UgQ2Fj
aGVkUmVzb3VyY2U6OlNWR0RvY3VtZW50UmVzb3VyY2U6Ci0gICAgICAgIHJldHVybiBuZXcgQ2Fj
aGVkU1ZHRG9jdW1lbnQoV1RGTW92ZShyZXF1ZXN0KSwgc2Vzc2lvbklEKTsKKyAgICAgICAgcmV0
dXJuIG5ldyBDYWNoZWRTVkdEb2N1bWVudChXVEZNb3ZlKHJlcXVlc3QpLCBzZXNzaW9uSUQsIHNj
aGVtZVJlZ2lzdHJ5KTsKICNpZiBFTkFCTEUoU1ZHX0ZPTlRTKQogICAgIGNhc2UgQ2FjaGVkUmVz
b3VyY2U6OlNWR0ZvbnRSZXNvdXJjZToKLSAgICAgICAgcmV0dXJuIG5ldyBDYWNoZWRTVkdGb250
KFdURk1vdmUocmVxdWVzdCksIHNlc3Npb25JRCk7CisgICAgICAgIHJldHVybiBuZXcgQ2FjaGVk
U1ZHRm9udChXVEZNb3ZlKHJlcXVlc3QpLCBzZXNzaW9uSUQsIHNjaGVtZVJlZ2lzdHJ5KTsKICNl
bmRpZgogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkZvbnRSZXNvdXJjZToKLSAgICAgICAgcmV0
dXJuIG5ldyBDYWNoZWRGb250KFdURk1vdmUocmVxdWVzdCksIHNlc3Npb25JRCk7CisgICAgICAg
IHJldHVybiBuZXcgQ2FjaGVkRm9udChXVEZNb3ZlKHJlcXVlc3QpLCBzZXNzaW9uSUQsIHNjaGVt
ZVJlZ2lzdHJ5KTsKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpNZWRpYVJlc291cmNlOgogICAg
IGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlJhd1Jlc291cmNlOgogICAgIGNhc2UgQ2FjaGVkUmVzb3Vy
Y2U6Ok1haW5SZXNvdXJjZToKLSAgICAgICAgcmV0dXJuIG5ldyBDYWNoZWRSYXdSZXNvdXJjZShX
VEZNb3ZlKHJlcXVlc3QpLCB0eXBlLCBzZXNzaW9uSUQpOworICAgICAgICByZXR1cm4gbmV3IENh
Y2hlZFJhd1Jlc291cmNlKFdURk1vdmUocmVxdWVzdCksIHR5cGUsIHNlc3Npb25JRCwgc2NoZW1l
UmVnaXN0cnkpOwogI2lmIEVOQUJMRShYU0xUKQogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlhT
TFN0eWxlU2hlZXQ6Ci0gICAgICAgIHJldHVybiBuZXcgQ2FjaGVkWFNMU3R5bGVTaGVldChXVEZN
b3ZlKHJlcXVlc3QpLCBzZXNzaW9uSUQpOworICAgICAgICByZXR1cm4gbmV3IENhY2hlZFhTTFN0
eWxlU2hlZXQoV1RGTW92ZShyZXF1ZXN0KSwgc2Vzc2lvbklELCBzY2hlbWVSZWdpc3RyeSk7CiAj
ZW5kaWYKICNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKICAgICBjYXNlIENhY2hlZFJlc291cmNl
OjpMaW5rUHJlZmV0Y2g6Ci0gICAgICAgIHJldHVybiBuZXcgQ2FjaGVkUmVzb3VyY2UoV1RGTW92
ZShyZXF1ZXN0KSwgQ2FjaGVkUmVzb3VyY2U6OkxpbmtQcmVmZXRjaCwgc2Vzc2lvbklEKTsKKyAg
ICAgICAgcmV0dXJuIG5ldyBDYWNoZWRSZXNvdXJjZShXVEZNb3ZlKHJlcXVlc3QpLCBDYWNoZWRS
ZXNvdXJjZTo6TGlua1ByZWZldGNoLCBzZXNzaW9uSUQsIHNjaGVtZVJlZ2lzdHJ5KTsKICAgICBj
YXNlIENhY2hlZFJlc291cmNlOjpMaW5rU3VicmVzb3VyY2U6Ci0gICAgICAgIHJldHVybiBuZXcg
Q2FjaGVkUmVzb3VyY2UoV1RGTW92ZShyZXF1ZXN0KSwgQ2FjaGVkUmVzb3VyY2U6OkxpbmtTdWJy
ZXNvdXJjZSwgc2Vzc2lvbklEKTsKKyAgICAgICAgcmV0dXJuIG5ldyBDYWNoZWRSZXNvdXJjZShX
VEZNb3ZlKHJlcXVlc3QpLCBDYWNoZWRSZXNvdXJjZTo6TGlua1N1YnJlc291cmNlLCBzZXNzaW9u
SUQsIHNjaGVtZVJlZ2lzdHJ5KTsKICNlbmRpZgogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAg
ICBjYXNlIENhY2hlZFJlc291cmNlOjpUZXh0VHJhY2tSZXNvdXJjZToKLSAgICAgICAgcmV0dXJu
IG5ldyBDYWNoZWRUZXh0VHJhY2soV1RGTW92ZShyZXF1ZXN0KSwgc2Vzc2lvbklEKTsKKyAgICAg
ICAgcmV0dXJuIG5ldyBDYWNoZWRUZXh0VHJhY2soV1RGTW92ZShyZXF1ZXN0KSwgc2Vzc2lvbklE
LCBzY2hlbWVSZWdpc3RyeSk7CiAjZW5kaWYKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUNhY2hlZFJlc291cmNlTG9hZGVyOjpDYWNo
ZWRSZXNvdXJjZUxvYWRlcihEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIpCitDYWNoZWRS
ZXNvdXJjZUxvYWRlcjo6Q2FjaGVkUmVzb3VyY2VMb2FkZXIoRG9jdW1lbnRMb2FkZXIqIGRvY3Vt
ZW50TG9hZGVyLCBjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnkmIHNjaGVtZVJlZ2lzdHJ5KQogICAg
IDogbV9kb2N1bWVudChudWxscHRyKQogICAgICwgbV9kb2N1bWVudExvYWRlcihkb2N1bWVudExv
YWRlcikKICAgICAsIG1fcmVxdWVzdENvdW50KDApCisgICAgLCBtX3NjaGVtZVJlZ2lzdHJ5KHNj
aGVtZVJlZ2lzdHJ5KQogICAgICwgbV9nYXJiYWdlQ29sbGVjdERvY3VtZW50UmVzb3VyY2VzVGlt
ZXIoKnRoaXMsICZDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Z2FyYmFnZUNvbGxlY3REb2N1bWVudFJl
c291cmNlcykKICAgICAsIG1fYXV0b0xvYWRJbWFnZXModHJ1ZSkKICAgICAsIG1faW1hZ2VzRW5h
YmxlZCh0cnVlKQpAQCAtMTgzLDcgKzE4NSw3IEBAIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hl
ZEltYWdlPiBDYWNoZWQKICAgICAgICAgICAgIGlmIChEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFt
ZS0+ZG9jdW1lbnQoKSkKICAgICAgICAgICAgICAgICByZXF1ZXN0LnVwZ3JhZGVJbnNlY3VyZVJl
cXVlc3RJZk5lZWRlZCgqZG9jdW1lbnQpOwogICAgICAgICAgICAgVVJMIHJlcXVlc3RVUkwgPSBy
ZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnVybCgpOwotICAgICAgICAgICAgaWYgKHJlcXVlc3RV
UkwuaXNWYWxpZCgpICYmIGNhblJlcXVlc3QoQ2FjaGVkUmVzb3VyY2U6OkltYWdlUmVzb3VyY2Us
IHJlcXVlc3RVUkwsIHJlcXVlc3QsIEZvclByZWxvYWQ6Ok5vKSkKKyAgICAgICAgICAgIGlmIChy
ZXF1ZXN0VVJMLmlzVmFsaWQoKSAmJiBjYW5SZXF1ZXN0KENhY2hlZFJlc291cmNlOjpJbWFnZVJl
c291cmNlLCByZXF1ZXN0VVJMLCByZXF1ZXN0LCBGb3JQcmVsb2FkOjpObywgbV9zY2hlbWVSZWdp
c3RyeS5nZXQoKSkpCiAgICAgICAgICAgICAgICAgUGluZ0xvYWRlcjo6bG9hZEltYWdlKCpmcmFt
ZSwgcmVxdWVzdFVSTCk7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQpA
QCAtMjM0LDcgKzIzNiw3IEBAIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZENTU1N0eWxlU2hl
ZXQKIAogICAgIHJlcXVlc3QucmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVySWZOZWVkZWQoKTsKIAot
ICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZENTU1N0eWxlU2hlZXQ+IHVzZXJTaGVldCA9
IG5ldyBDYWNoZWRDU1NTdHlsZVNoZWV0KFdURk1vdmUocmVxdWVzdCksIHNlc3Npb25JRCgpKTsK
KyAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRDU1NTdHlsZVNoZWV0PiB1c2VyU2hlZXQg
PSBuZXcgQ2FjaGVkQ1NTU3R5bGVTaGVldChXVEZNb3ZlKHJlcXVlc3QpLCBzZXNzaW9uSUQoKSwg
bV9zY2hlbWVSZWdpc3RyeS5nZXQoKSk7CiAKICAgICBpZiAodXNlclNoZWV0LT5hbGxvd3NDYWNo
aW5nKCkpCiAgICAgICAgIG1lbW9yeUNhY2hlLmFkZCgqdXNlclNoZWV0KTsKQEAgLTQzNSwxOCAr
NDM3LDE4IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1NhbWVPcmlnaW5EYXRhVVJMKGMKICAgICBy
ZXR1cm4gdXJsLnByb3RvY29sSXNEYXRhKCkgJiYgb3B0aW9ucy5zYW1lT3JpZ2luRGF0YVVSTEZs
YWcgPT0gU2FtZU9yaWdpbkRhdGFVUkxGbGFnOjpTZXQ7CiB9CiAKLWJvb2wgQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXI6OmNhblJlcXVlc3QoQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgVVJM
JiB1cmwsIGNvbnN0IENhY2hlZFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgRm9yUHJlbG9hZCBm
b3JQcmVsb2FkKQorYm9vbCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2FuUmVxdWVzdChDYWNoZWRS
ZXNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBVUkwmIHVybCwgY29uc3QgQ2FjaGVkUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBGb3JQcmVsb2FkIGZvclByZWxvYWQsIGNvbnN0IFBhZ2VTY2hlbWVS
ZWdpc3RyeSYgc2NoZW1lUmVnaXN0cnkpCiB7CiAgICAgYXV0byYgb3B0aW9ucyA9IHJlcXVlc3Qu
b3B0aW9ucygpOwogCi0gICAgaWYgKGRvY3VtZW50KCkgJiYgIWRvY3VtZW50KCktPnNlY3VyaXR5
T3JpZ2luKCktPmNhbkRpc3BsYXkodXJsKSkgeworICAgIGlmIChkb2N1bWVudCgpICYmICFkb2N1
bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5EaXNwbGF5KHVybCwgc2NoZW1lUmVnaXN0cnkp
KSB7CiAgICAgICAgIGlmIChmb3JQcmVsb2FkID09IEZvclByZWxvYWQ6Ok5vKQogICAgICAgICAg
ICAgRnJhbWVMb2FkZXI6OnJlcG9ydExvY2FsTG9hZEZhaWxlZChmcmFtZSgpLCB1cmwuc3RyaW5n
Q2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkpOwogICAgICAgICBMT0coUmVzb3VyY2VMb2FkaW5n
LCAiQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZSBVUkwgd2FzIG5vdCBhbGxv
d2VkIGJ5IFNlY3VyaXR5T3JpZ2luOjpjYW5EaXNwbGF5Iik7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKLSAgICBpZiAob3B0aW9ucy5tb2RlID09IEZldGNoT3B0aW9uczo6TW9kZTo6
U2FtZU9yaWdpbiAmJiAhbV9kb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdCh1
cmwpICYmICFpc1NhbWVPcmlnaW5EYXRhVVJMKHVybCwgb3B0aW9ucykpIHsKKyAgICBpZiAob3B0
aW9ucy5tb2RlID09IEZldGNoT3B0aW9uczo6TW9kZTo6U2FtZU9yaWdpbiAmJiAhbV9kb2N1bWVu
dC0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdCh1cmwsIHNjaGVtZVJlZ2lzdHJ5KSAmJiAh
aXNTYW1lT3JpZ2luRGF0YVVSTCh1cmwsIG9wdGlvbnMpKSB7CiAgICAgICAgIHByaW50QWNjZXNz
RGVuaWVkTWVzc2FnZSh1cmwpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtNDcz
LDcgKzQ3NSw3IEBAIGJvb2wgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNhblJlcXVlc3QoQ2EKIC8v
IEZJWE1FOiBTaG91bGQgd2UgZmluZCBhIHdheSB0byBrbm93IHdoZXRoZXIgdGhlIHJlZGlyZWN0
aW9uIGlzIGZvciBhIHByZWxvYWQgcmVxdWVzdCBsaWtlIHdlIGRvIGZvciBDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6Y2FuUmVxdWVzdD8KIGJvb2wgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNhblJlcXVl
c3RBZnRlclJlZGlyZWN0aW9uKENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpIGNvbnN0CiB7Ci0gICAg
aWYgKGRvY3VtZW50KCkgJiYgIWRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhbkRpc3Bs
YXkodXJsKSkgeworICAgIGlmIChkb2N1bWVudCgpICYmICFkb2N1bWVudCgpLT5zZWN1cml0eU9y
aWdpbigpLT5jYW5EaXNwbGF5KHVybCwgbV9zY2hlbWVSZWdpc3RyeS5nZXQoKSkpIHsKICAgICAg
ICAgRnJhbWVMb2FkZXI6OnJlcG9ydExvY2FsTG9hZEZhaWxlZChmcmFtZSgpLCB1cmwuc3RyaW5n
Q2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkpOwogICAgICAgICBMT0coUmVzb3VyY2VMb2FkaW5n
LCAiQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZSBVUkwgd2FzIG5vdCBhbGxv
d2VkIGJ5IFNlY3VyaXR5T3JpZ2luOjpjYW5EaXNwbGF5Iik7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTQ4Miw3ICs0ODQsNyBAQCBib29sIENhY2hlZFJlc291cmNlTG9hZGVyOjpjYW5SZXF1
ZXN0QWZ0CiAgICAgLy8gRklYTUU6IEFjY29yZGluZyB0byBodHRwczovL2ZldGNoLnNwZWMud2hh
dHdnLm9yZy8jaHR0cC1yZWRpcmVjdC1mZXRjaCwgd2Ugc2hvdWxkIGNoZWNrIHRoYXQgdGhlIFVS
TCBpcyBIVFRQKHMpIGV4Y2VwdCBpZiBpbiBuYXZpZ2F0aW9uIG1vZGUuCiAgICAgLy8gQnV0IHdl
IGN1cnJlbnRseSBhbGxvdyBhdCBsZWFzdCBkYXRhIFVSTHMgdG8gYmUgbG9hZGVkLgogCi0gICAg
aWYgKG9wdGlvbnMubW9kZSA9PSBGZXRjaE9wdGlvbnM6Ok1vZGU6OlNhbWVPcmlnaW4gJiYgIW1f
ZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCktPmNhblJlcXVlc3QodXJsKSkgeworICAgIGlmIChv
cHRpb25zLm1vZGUgPT0gRmV0Y2hPcHRpb25zOjpNb2RlOjpTYW1lT3JpZ2luICYmICFtX2RvY3Vt
ZW50LT5zZWN1cml0eU9yaWdpbigpLT5jYW5SZXF1ZXN0KHVybCwgbV9zY2hlbWVSZWdpc3RyeS5n
ZXQoKSkpIHsKICAgICAgICAgcHJpbnRBY2Nlc3NEZW5pZWRNZXNzYWdlKHVybCk7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CkBAIC01MjgsNyArNTMwLDcgQEAgYm9vbCBDYWNoZWRSZXNv
dXJjZUxvYWRlcjo6Y2FuUmVxdWVzdEluQwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAK
LSAgICBpZiAoIWRvY3VtZW50LT5zaG91bGRFbmZvcmNlQ29udGVudERpc3Bvc2l0aW9uQXR0YWNo
bWVudFNhbmRib3goKSB8fCBkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdCh1
cmwpKQorICAgIGlmICghZG9jdW1lbnQtPnNob3VsZEVuZm9yY2VDb250ZW50RGlzcG9zaXRpb25B
dHRhY2htZW50U2FuZGJveCgpIHx8IGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLT5jYW5SZXF1
ZXN0KHVybCwgbV9zY2hlbWVSZWdpc3RyeS5nZXQoKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwog
CiAgICAgU3RyaW5nIG1lc3NhZ2UgPSAiVW5zYWZlIGF0dGVtcHQgdG8gbG9hZCBVUkwgIiArIHVy
bC5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSArICIgZnJvbSBkb2N1bWVudCB3aXRo
IENvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQgYXQgVVJMICIgKyBkb2N1bWVudC0+dXJs
KCkuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkgKyAiLiI7CkBAIC02MjQsNyArNjI2
LDcgQEAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IENhYwogICAgICAgICBy
ZXR1cm4gbG9hZFJlc291cmNlKHJlc291cmNlLnR5cGUoKSwgV1RGTW92ZShyZXF1ZXN0KSk7CiAg
ICAgfQogCi0gICAgYXV0byByZXNvdXJjZUhhbmRsZSA9IGNyZWF0ZVJlc291cmNlKHJlc291cmNl
LnR5cGUoKSwgV1RGTW92ZShyZXF1ZXN0KSwgc2Vzc2lvbklEKCkpOworICAgIGF1dG8gcmVzb3Vy
Y2VIYW5kbGUgPSBjcmVhdGVSZXNvdXJjZShyZXNvdXJjZS50eXBlKCksIFdURk1vdmUocmVxdWVz
dCksIHNlc3Npb25JRCgpLCBtX3NjaGVtZVJlZ2lzdHJ5LmdldCgpKTsKICAgICByZXNvdXJjZUhh
bmRsZS0+bG9hZEZyb20ocmVzb3VyY2UpOwogICAgIHJldHVybiByZXNvdXJjZUhhbmRsZTsKIH0K
QEAgLTY4NCw3ICs2ODYsNyBAQCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4g
Q2FjCiAgICAgcHJlcGFyZUZldGNoKHR5cGUsIHJlcXVlc3QpOwogCiAgICAgLy8gV2UgYXJlIHBh
c3NpbmcgdXJsIGFzIHdlbGwgYXMgcmVxdWVzdCwgYXMgcmVxdWVzdCB1cmwgbWF5IGNvbnRhaW4g
YSBmcmFnbWVudCBpZGVudGlmaWVyLgotICAgIGlmICghY2FuUmVxdWVzdCh0eXBlLCB1cmwsIHJl
cXVlc3QsIGZvclByZWxvYWQpKSB7CisgICAgaWYgKCFjYW5SZXF1ZXN0KHR5cGUsIHVybCwgcmVx
dWVzdCwgZm9yUHJlbG9hZCwgbV9zY2hlbWVSZWdpc3RyeS5nZXQoKSkpIHsKICAgICAgICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRCgicmVxdWVzdFJlc291cmNlOiBOb3QgYWxsb3dlZCB0byByZXF1
ZXN0IHJlc291cmNlIChmcmFtZSA9ICVwKSIsIGZyYW1lKCkpOwogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CkBAIC02OTcsNyArNjk5LDcgQEAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2Fj
aGVkUmVzb3VyY2U+IENhYwogICAgICAgICBpZiAoYmxvY2tlZFN0YXR1cy5ibG9ja2VkTG9hZCkg
ewogICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmVxdWVzdFJlc291cmNlOiBS
ZXNvdXJjZSBibG9ja2VkIGJ5IGNvbnRlbnQgYmxvY2tlciAoZnJhbWUgPSAlcCkiLCBmcmFtZSgp
KTsKICAgICAgICAgICAgIGlmICh0eXBlID09IENhY2hlZFJlc291cmNlOjpUeXBlOjpNYWluUmVz
b3VyY2UpIHsKLSAgICAgICAgICAgICAgICBhdXRvIHJlc291cmNlID0gY3JlYXRlUmVzb3VyY2Uo
dHlwZSwgV1RGTW92ZShyZXF1ZXN0KSwgc2Vzc2lvbklEKCkpOworICAgICAgICAgICAgICAgIGF1
dG8gcmVzb3VyY2UgPSBjcmVhdGVSZXNvdXJjZSh0eXBlLCBXVEZNb3ZlKHJlcXVlc3QpLCBzZXNz
aW9uSUQoKSwgbV9zY2hlbWVSZWdpc3RyeS5nZXQoKSk7CiAgICAgICAgICAgICAgICAgQVNTRVJU
KHJlc291cmNlKTsKICAgICAgICAgICAgICAgICByZXNvdXJjZS0+ZXJyb3IoQ2FjaGVkUmVzb3Vy
Y2U6OlN0YXR1czo6TG9hZEVycm9yKTsKICAgICAgICAgICAgICAgICByZXNvdXJjZS0+c2V0UmVz
b3VyY2VFcnJvcihSZXNvdXJjZUVycm9yKENvbnRlbnRFeHRlbnNpb25zOjpXZWJLaXRDb250ZW50
QmxvY2tlckRvbWFpbiwgMCwgcmVzb3VyY2VSZXF1ZXN0LnVybCgpLCBXRUJfVUlfU1RSSU5HKCJU
aGUgVVJMIHdhcyBibG9ja2VkIGJ5IGEgY29udGVudCBibG9ja2VyIiwgIldlYktpdEVycm9yQmxv
Y2tlZEJ5Q29udGVudEJsb2NrZXIgZGVzY3JpcHRpb24iKSkpOwpAQCAtODMxLDcgKzgzMyw3IEBA
IENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBDYWMKICNpZiBFTkFCTEUoV0VC
X1RJTUlORykKICAgICBBdG9taWNTdHJpbmcgaW5pdGlhdG9yTmFtZSA9IHJlcXVlc3QuaW5pdGlh
dG9yTmFtZSgpOwogI2VuZGlmCi0gICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3Vy
Y2U+IG5ld1Jlc291cmNlID0gY3JlYXRlUmVzb3VyY2UocmVzb3VyY2UudHlwZSgpLCBXVEZNb3Zl
KHJlcXVlc3QpLCByZXNvdXJjZS5zZXNzaW9uSUQoKSk7CisgICAgQ2FjaGVkUmVzb3VyY2VIYW5k
bGU8Q2FjaGVkUmVzb3VyY2U+IG5ld1Jlc291cmNlID0gY3JlYXRlUmVzb3VyY2UocmVzb3VyY2Uu
dHlwZSgpLCBXVEZNb3ZlKHJlcXVlc3QpLCByZXNvdXJjZS5zZXNzaW9uSUQoKSwgbV9zY2hlbWVS
ZWdpc3RyeS5nZXQoKSk7CiAKICAgICBMT0coUmVzb3VyY2VMb2FkaW5nLCAiUmVzb3VyY2UgJXAg
Y3JlYXRlZCB0byByZXZhbGlkYXRlICVwIiwgbmV3UmVzb3VyY2UuZ2V0KCksICZyZXNvdXJjZSk7
CiAgICAgbmV3UmVzb3VyY2UtPnNldFJlc291cmNlVG9SZXZhbGlkYXRlKCZyZXNvdXJjZSk7CkBA
IC04NTYsNyArODU4LDcgQEAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IENh
YwogI2lmIEVOQUJMRShXRUJfVElNSU5HKQogICAgIEF0b21pY1N0cmluZyBpbml0aWF0b3JOYW1l
ID0gcmVxdWVzdC5pbml0aWF0b3JOYW1lKCk7CiAjZW5kaWYKLSAgICBDYWNoZWRSZXNvdXJjZUhh
bmRsZTxDYWNoZWRSZXNvdXJjZT4gcmVzb3VyY2UgPSBjcmVhdGVSZXNvdXJjZSh0eXBlLCBXVEZN
b3ZlKHJlcXVlc3QpLCBzZXNzaW9uSUQoKSk7CisgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2Fj
aGVkUmVzb3VyY2U+IHJlc291cmNlID0gY3JlYXRlUmVzb3VyY2UodHlwZSwgV1RGTW92ZShyZXF1
ZXN0KSwgc2Vzc2lvbklEKCksIG1fc2NoZW1lUmVnaXN0cnkuZ2V0KCkpOwogCiAgICAgaWYgKHJl
c291cmNlLT5hbGxvd3NDYWNoaW5nKCkgJiYgIW1lbW9yeUNhY2hlLmFkZCgqcmVzb3VyY2UpKQog
ICAgICAgICByZXNvdXJjZS0+c2V0T3duaW5nQ2FjaGVkUmVzb3VyY2VMb2FkZXIodGhpcyk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VM
b2FkZXIuaAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDggKzIzLDcgQEAK
ICAgICBwYWdlcyBmcm9tIHRoZSB3ZWIuIEl0IGhhcyBhIG1lbW9yeSBjYWNoZSBmb3IgdGhlc2Ug
b2JqZWN0cy4KICovCiAKLSNpZm5kZWYgQ2FjaGVkUmVzb3VyY2VMb2FkZXJfaAotI2RlZmluZSBD
YWNoZWRSZXNvdXJjZUxvYWRlcl9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNhY2hlUG9s
aWN5LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2UuaCIKQEAgLTcwLDcgKzY5LDcgQEAgZnJp
ZW5kIGNsYXNzIEltYWdlTG9hZGVyOwogZnJpZW5kIGNsYXNzIFJlc291cmNlQ2FjaGVWYWxpZGF0
aW9uU3VwcHJlc3NvcjsKIAogcHVibGljOgotICAgIHN0YXRpYyBSZWY8Q2FjaGVkUmVzb3VyY2VM
b2FkZXI+IGNyZWF0ZShEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIpIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgQ2FjaGVkUmVzb3VyY2VMb2FkZXIoZG9jdW1lbnRMb2FkZXIpKTsgfQorICAg
IHN0YXRpYyBSZWY8Q2FjaGVkUmVzb3VyY2VMb2FkZXI+IGNyZWF0ZShEb2N1bWVudExvYWRlciog
ZG9jdW1lbnRMb2FkZXIsIGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3RyeSYgc2NoZW1lUmVnaXN0cnkp
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ2FjaGVkUmVzb3VyY2VMb2FkZXIoZG9jdW1lbnRMb2Fk
ZXIsIHNjaGVtZVJlZ2lzdHJ5KSk7IH0KICAgICB+Q2FjaGVkUmVzb3VyY2VMb2FkZXIoKTsKIAog
ICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZEltYWdlPiByZXF1ZXN0SW1hZ2UoQ2FjaGVk
UmVzb3VyY2VSZXF1ZXN0JiYpOwpAQCAtMTE3LDYgKzExNiw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldERvY3VtZW50KERvY3VtZW50KiBkb2N1bWVudCkgeyBtX2RvY3VtZW50ID0gZG9jdW1lbnQ7
IH0KICAgICB2b2lkIGNsZWFyRG9jdW1lbnRMb2FkZXIoKSB7IG1fZG9jdW1lbnRMb2FkZXIgPSBu
dWxscHRyOyB9CiAgICAgU2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0OworICAgIGNvbnN0IFBh
Z2VTY2hlbWVSZWdpc3RyeSYgc2NoZW1lUmVnaXN0cnkoKSB7IHJldHVybiBtX3NjaGVtZVJlZ2lz
dHJ5LmdldCgpOyB9CiAKICAgICB2b2lkIHJlbW92ZUNhY2hlZFJlc291cmNlKENhY2hlZFJlc291
cmNlJik7CiAKQEAgLTE0Niw3ICsxNDYsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0Fsd2F5c09u
TG9nZ2luZ0FsbG93ZWQoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBDYWNoZWRS
ZXNvdXJjZUxvYWRlcihEb2N1bWVudExvYWRlciopOworICAgIGV4cGxpY2l0IENhY2hlZFJlc291
cmNlTG9hZGVyKERvY3VtZW50TG9hZGVyKiwgY29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5Jik7CiAK
ICAgICBlbnVtIGNsYXNzIEZvclByZWxvYWQgeyBZZXMsIE5vIH07CiAgICAgZW51bSBjbGFzcyBE
ZWZlck9wdGlvbiB7IE5vRGVmZXIsIERlZmVycmVkQnlDbGllbnQgfTsKQEAgLTE1OSw3ICsxNTks
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlSFRUUFJlcXVlc3RIZWFkZXJzKENhY2hlZFJl
c291cmNlOjpUeXBlLCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2b2lkIHVwZGF0ZVJl
ZmVycmVyT3JpZ2luQW5kVXNlckFnZW50SGVhZGVycyhDYWNoZWRSZXNvdXJjZVJlcXVlc3QmKTsK
IAotICAgIGJvb2wgY2FuUmVxdWVzdChDYWNoZWRSZXNvdXJjZTo6VHlwZSwgY29uc3QgVVJMJiwg
Y29uc3QgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiwgRm9yUHJlbG9hZCk7CisgICAgYm9vbCBjYW5S
ZXF1ZXN0KENhY2hlZFJlc291cmNlOjpUeXBlLCBjb25zdCBVUkwmLCBjb25zdCBDYWNoZWRSZXNv
dXJjZVJlcXVlc3QmLCBGb3JQcmVsb2FkLCBjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnkmKTsKIAog
ICAgIGVudW0gUmV2YWxpZGF0aW9uUG9saWN5IHsgVXNlLCBSZXZhbGlkYXRlLCBSZWxvYWQsIExv
YWQgfTsKICAgICBSZXZhbGlkYXRpb25Qb2xpY3kgZGV0ZXJtaW5lUmV2YWxpZGF0aW9uUG9saWN5
KENhY2hlZFJlc291cmNlOjpUeXBlLCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QmLCBDYWNoZWRSZXNv
dXJjZSogZXhpc3RpbmdSZXNvdXJjZSwgRm9yUHJlbG9hZCwgRGVmZXJPcHRpb24pIGNvbnN0OwpA
QCAtMTg3LDYgKzE4Nyw3IEBAIHByaXZhdGU6CiAgICAgaW50IG1fcmVxdWVzdENvdW50OwogICAg
IAogICAgIHN0ZDo6dW5pcXVlX3B0cjxMaXN0SGFzaFNldDxDYWNoZWRSZXNvdXJjZSo+PiBtX3By
ZWxvYWRzOworICAgIFJlZjxjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnk+IG1fc2NoZW1lUmVnaXN0
cnk7CiAKICAgICBUaW1lciBtX2dhcmJhZ2VDb2xsZWN0RG9jdW1lbnRSZXNvdXJjZXNUaW1lcjsK
IApAQCAtMjIwLDUgKzIyMSwzIEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlUmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5jcHAJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMSw5ICszMSwxMSBAQAogI2luY2x1ZGUgIkNyb3NzT3JpZ2luQWNjZXNzQ29u
dHJvbC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgorI2lu
Y2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJIVFRQ
SGVhZGVyVmFsdWVzLmgiCiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKKyNpbmNsdWRlICJQYWdl
U2NoZW1lUmVnaXN0cnkuaCIKICNpbmNsdWRlICJTZWN1cml0eVBvbGljeS5oIgogI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCkBAIC0yMTgsMjkgKzIyMCwzMCBAQCB2b2lkIENhY2hl
ZFJlc291cmNlUmVxdWVzdDo6dXBkYXRlUmVmZXJyCiAgICAgU3RyaW5nIG91dGdvaW5nT3JpZ2lu
OwogICAgIFN0cmluZyBvdXRnb2luZ1JlZmVycmVyID0gbV9yZXNvdXJjZVJlcXVlc3QuaHR0cFJl
ZmVycmVyKCk7CiAgICAgaWYgKCFvdXRnb2luZ1JlZmVycmVyLmlzTnVsbCgpKQotICAgICAgICBv
dXRnb2luZ09yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKG91dGdvaW5n
UmVmZXJyZXIpLT50b1N0cmluZygpOworICAgICAgICBvdXRnb2luZ09yaWdpbiA9IFNlY3VyaXR5
T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKG91dGdvaW5nUmVmZXJyZXIsIGZyYW1lTG9hZGVyLmZy
YW1lKCkuc2NoZW1lUmVnaXN0cnkoKSktPnRvU3RyaW5nKCk7CiAgICAgZWxzZSB7CiAgICAgICAg
IG91dGdvaW5nUmVmZXJyZXIgPSBmcmFtZUxvYWRlci5vdXRnb2luZ1JlZmVycmVyKCk7CiAgICAg
ICAgIG91dGdvaW5nT3JpZ2luID0gZnJhbWVMb2FkZXIub3V0Z29pbmdPcmlnaW4oKTsKICAgICB9
CiAKICAgICAvLyBGSVhNRTogUmVmYWN0b3IgU2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJy
ZXJIZWFkZXIgdG8gYWxpZ24gd2l0aCBuZXcgdGVybWlub2xvZ3kgdXNlZCBpbiBodHRwczovL3cz
Yy5naXRodWIuaW8vd2ViYXBwc2VjLXJlZmVycmVyLXBvbGljeS4KKyAgICBhdXRvJiBzY2hlbWVS
ZWdpc3RyeSA9IGZyYW1lTG9hZGVyLmZyYW1lKCkuc2NoZW1lUmVnaXN0cnkoKTsKICAgICBzd2l0
Y2ggKG1fb3B0aW9ucy5yZWZlcnJlclBvbGljeSkgewogICAgIGNhc2UgRmV0Y2hPcHRpb25zOjpS
ZWZlcnJlclBvbGljeTo6RW1wdHlTdHJpbmc6IHsKLSAgICAgICAgb3V0Z29pbmdSZWZlcnJlciA9
IFNlY3VyaXR5UG9saWN5OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVyKGRlZmF1bHRQb2xpY3ksIG1f
cmVzb3VyY2VSZXF1ZXN0LnVybCgpLCBvdXRnb2luZ1JlZmVycmVyKTsKKyAgICAgICAgb3V0Z29p
bmdSZWZlcnJlciA9IFNlY3VyaXR5UG9saWN5OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVyKGRlZmF1
bHRQb2xpY3ksIG1fcmVzb3VyY2VSZXF1ZXN0LnVybCgpLCBvdXRnb2luZ1JlZmVycmVyLCBzY2hl
bWVSZWdpc3RyeSk7CiAgICAgICAgIGJyZWFrOyB9CiAgICAgY2FzZSBGZXRjaE9wdGlvbnM6OlJl
ZmVycmVyUG9saWN5OjpOb1JlZmVycmVyV2hlbkRvd25ncmFkZToKLSAgICAgICAgb3V0Z29pbmdS
ZWZlcnJlciA9IFNlY3VyaXR5UG9saWN5OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVyKFJlZmVycmVy
UG9saWN5OjpEZWZhdWx0LCBtX3Jlc291cmNlUmVxdWVzdC51cmwoKSwgb3V0Z29pbmdSZWZlcnJl
cik7CisgICAgICAgIG91dGdvaW5nUmVmZXJyZXIgPSBTZWN1cml0eVBvbGljeTo6Z2VuZXJhdGVS
ZWZlcnJlckhlYWRlcihSZWZlcnJlclBvbGljeTo6RGVmYXVsdCwgbV9yZXNvdXJjZVJlcXVlc3Qu
dXJsKCksIG91dGdvaW5nUmVmZXJyZXIsIHNjaGVtZVJlZ2lzdHJ5KTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBGZXRjaE9wdGlvbnM6OlJlZmVycmVyUG9saWN5OjpOb1JlZmVycmVyOgogICAg
ICAgICBvdXRnb2luZ1JlZmVycmVyID0gU3RyaW5nKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgRmV0Y2hPcHRpb25zOjpSZWZlcnJlclBvbGljeTo6T3JpZ2luOgotICAgICAgICBvdXRnb2lu
Z1JlZmVycmVyID0gU2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJyZXJIZWFkZXIoUmVmZXJy
ZXJQb2xpY3k6Ok9yaWdpbiwgbV9yZXNvdXJjZVJlcXVlc3QudXJsKCksIG91dGdvaW5nUmVmZXJy
ZXIpOworICAgICAgICBvdXRnb2luZ1JlZmVycmVyID0gU2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRl
UmVmZXJyZXJIZWFkZXIoUmVmZXJyZXJQb2xpY3k6Ok9yaWdpbiwgbV9yZXNvdXJjZVJlcXVlc3Qu
dXJsKCksIG91dGdvaW5nUmVmZXJyZXIsIHNjaGVtZVJlZ2lzdHJ5KTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBGZXRjaE9wdGlvbnM6OlJlZmVycmVyUG9saWN5OjpPcmlnaW5XaGVuQ3Jvc3NP
cmlnaW46Ci0gICAgICAgIGlmIChpc1JlcXVlc3RDcm9zc09yaWdpbihtX29yaWdpbi5nZXQoKSwg
bV9yZXNvdXJjZVJlcXVlc3QudXJsKCksIG1fb3B0aW9ucykpCi0gICAgICAgICAgICBvdXRnb2lu
Z1JlZmVycmVyID0gU2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJyZXJIZWFkZXIoUmVmZXJy
ZXJQb2xpY3k6Ok9yaWdpbiwgbV9yZXNvdXJjZVJlcXVlc3QudXJsKCksIG91dGdvaW5nUmVmZXJy
ZXIpOworICAgICAgICBpZiAoaXNSZXF1ZXN0Q3Jvc3NPcmlnaW4obV9vcmlnaW4uZ2V0KCksIG1f
cmVzb3VyY2VSZXF1ZXN0LnVybCgpLCBtX29wdGlvbnMsIHNjaGVtZVJlZ2lzdHJ5KSkKKyAgICAg
ICAgICAgIG91dGdvaW5nUmVmZXJyZXIgPSBTZWN1cml0eVBvbGljeTo6Z2VuZXJhdGVSZWZlcnJl
ckhlYWRlcihSZWZlcnJlclBvbGljeTo6T3JpZ2luLCBtX3Jlc291cmNlUmVxdWVzdC51cmwoKSwg
b3V0Z29pbmdSZWZlcnJlciwgc2NoZW1lUmVnaXN0cnkpOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIEZldGNoT3B0aW9uczo6UmVmZXJyZXJQb2xpY3k6OlVuc2FmZVVybDoKICAgICAgICAgYnJl
YWs7CkBAIC0yNTUsNyArMjU4LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6OnVwZGF0
ZVJlZmVycgogICAgIGZyYW1lTG9hZGVyLmFwcGx5VXNlckFnZW50KG1fcmVzb3VyY2VSZXF1ZXN0
KTsKIH0KIAotYm9vbCBpc1JlcXVlc3RDcm9zc09yaWdpbihTZWN1cml0eU9yaWdpbiogb3JpZ2lu
LCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0
aW9ucykKK2Jvb2wgaXNSZXF1ZXN0Q3Jvc3NPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwg
Y29uc3QgVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlv
bnMsIGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3RyeSYgc2NoZW1lUmVnaXN0cnkpCiB7CiAgICAgaWYg
KCFvcmlnaW4pCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI2OCw3ICsyNzEsNyBAQCBib29s
IGlzUmVxdWVzdENyb3NzT3JpZ2luKFNlY3VyaXR5T3JpZ2luCiAgICAgaWYgKHJlcXVlc3RVUkwu
cHJvdG9jb2xJc0RhdGEoKSAmJiBvcHRpb25zLnNhbWVPcmlnaW5EYXRhVVJMRmxhZyA9PSBTYW1l
T3JpZ2luRGF0YVVSTEZsYWc6OlNldCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0
dXJuICFvcmlnaW4tPmNhblJlcXVlc3QocmVxdWVzdFVSTCk7CisgICAgcmV0dXJuICFvcmlnaW4t
PmNhblJlcXVlc3QocmVxdWVzdFVSTCwgc2NoZW1lUmVnaXN0cnkpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2VSZXF1ZXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlUmVxdWVzdC5oCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBGcmFtZUxvYWRlcjsKIGVu
dW0gY2xhc3MgUmVmZXJyZXJQb2xpY3k7CiAKLWJvb2wgaXNSZXF1ZXN0Q3Jvc3NPcmlnaW4oU2Vj
dXJpdHlPcmlnaW4qLCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFJlc291cmNlTG9hZGVy
T3B0aW9ucyYpOworYm9vbCBpc1JlcXVlc3RDcm9zc09yaWdpbihTZWN1cml0eU9yaWdpbiosIGNv
bnN0IFVSTCYgcmVxdWVzdFVSTCwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiwgY29uc3Qg
UGFnZVNjaGVtZVJlZ2lzdHJ5Jik7CiAKIGNsYXNzIENhY2hlZFJlc291cmNlUmVxdWVzdCB7CiBw
dWJsaWM6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRT
VkdEb2N1bWVudC5jcHAJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDggKzI3
LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DYWNoZWRTVkdEb2N1bWVudDo6Q2FjaGVk
U1ZHRG9jdW1lbnQoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2Vzc2lvbklEIHNl
c3Npb25JRCkKLSAgICA6IENhY2hlZFJlc291cmNlKFdURk1vdmUocmVxdWVzdCksIFNWR0RvY3Vt
ZW50UmVzb3VyY2UsIHNlc3Npb25JRCkKK0NhY2hlZFNWR0RvY3VtZW50OjpDYWNoZWRTVkdEb2N1
bWVudChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnkmIHNjaGVtZVJlZ2lzdHJ5KQorICAgIDogQ2FjaGVk
UmVzb3VyY2UoV1RGTW92ZShyZXF1ZXN0KSwgU1ZHRG9jdW1lbnRSZXNvdXJjZSwgc2Vzc2lvbklE
LCBzY2hlbWVSZWdpc3RyeSkKICAgICAsIG1fZGVjb2RlcihUZXh0UmVzb3VyY2VEZWNvZGVyOjpj
cmVhdGUoImFwcGxpY2F0aW9uL3htbCIpKQogewogfQpAQCAtNTEsNyArNTEsNyBAQCB2b2lkIENh
Y2hlZFNWR0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKFNoCiB7CiAgICAgaWYgKGRhdGEpIHsKICAg
ICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBjcmVhdGUgYSBuZXcgZnJhbWUgYmVjYXVzZSB0aGUg
bmV3IGRvY3VtZW50IGJlbG9uZ3MgdG8gdGhlIHBhcmVudCBVc2VFbGVtZW50LgotICAgICAgICBt
X2RvY3VtZW50ID0gU1ZHRG9jdW1lbnQ6OmNyZWF0ZShudWxscHRyLCByZXNwb25zZSgpLnVybCgp
KTsKKyAgICAgICAgbV9kb2N1bWVudCA9IFNWR0RvY3VtZW50OjpjcmVhdGUobnVsbHB0ciwgcmVz
cG9uc2UoKS51cmwoKSwgc2NoZW1lUmVnaXN0cnkoKSk7CiAgICAgICAgIG1fZG9jdW1lbnQtPnNl
dENvbnRlbnQobV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNp
emUoKSkpOwogICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVu
dC5oCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkU1ZHRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjAsOCArMjAsNyBAQAogICAgIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgogKi8KIAotI2lmbmRlZiBDYWNoZWRTVkdEb2N1bWVu
dF9oCi0jZGVmaW5lIENhY2hlZFNWR0RvY3VtZW50X2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSAiQ2FjaGVkUmVzb3VyY2UuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgpA
QCAtMzIsNyArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENhY2hlZFNWR0Rv
Y3VtZW50IGZpbmFsIDogcHVibGljIENhY2hlZFJlc291cmNlIHsKIHB1YmxpYzoKLSAgICBleHBs
aWNpdCBDYWNoZWRTVkdEb2N1bWVudChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiwgU2Vzc2lvbklE
KTsKKyAgICBleHBsaWNpdCBDYWNoZWRTVkdEb2N1bWVudChDYWNoZWRSZXNvdXJjZVJlcXVlc3Qm
JiwgU2Vzc2lvbklELCBjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnkmKTsKICAgICB2aXJ0dWFsIH5D
YWNoZWRTVkdEb2N1bWVudCgpOwogCiAgICAgU1ZHRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3Qg
eyByZXR1cm4gbV9kb2N1bWVudC5nZXQoKTsgfQpAQCAtNTEsNSArNTAsMyBAQCBwcml2YXRlOgog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0NBQ0hFRF9S
RVNPVVJDRShDYWNoZWRTVkdEb2N1bWVudCwgQ2FjaGVkUmVzb3VyY2U6OlNWR0RvY3VtZW50UmVz
b3VyY2UpCi0KLSNlbmRpZiAvLyBDYWNoZWRTVkdEb2N1bWVudF9oCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnRDbGllbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnRDbGllbnQuaAko
cmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNW
R0RvY3VtZW50Q2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTIwLDggKzIwLDcgQEAKICAgICBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KICovCiAKLSNpZm5kZWYgQ2FjaGVkU1ZHRG9jdW1l
bnRDbGllbnRfaAotI2RlZmluZSBDYWNoZWRTVkdEb2N1bWVudENsaWVudF9oCisjcHJhZ21hIG9u
Y2UKIAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCiAKQEAgLTM1LDUgKzM0LDMg
QEAgcHVibGljOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gQ2Fj
aGVkU1ZHRG9jdW1lbnRDbGllbnRfaApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFNWR0ZvbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRTVkdGb250LmNwcAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw4
ICs0Niw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ2FjaGVkU1ZHRm9udDo6Q2FjaGVk
U1ZHRm9udChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTZXNzaW9uSUQgc2Vzc2lv
bklEKQotICAgIDogQ2FjaGVkRm9udChXVEZNb3ZlKHJlcXVlc3QpLCBzZXNzaW9uSUQsIFNWR0Zv
bnRSZXNvdXJjZSkKK0NhY2hlZFNWR0ZvbnQ6OkNhY2hlZFNWR0ZvbnQoQ2FjaGVkUmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCwgU2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUGFnZVNjaGVtZVJl
Z2lzdHJ5JiBzY2hlbWVSZWdpc3RyeSkKKyAgICA6IENhY2hlZEZvbnQoV1RGTW92ZShyZXF1ZXN0
KSwgc2Vzc2lvbklELCBzY2hlbWVSZWdpc3RyeSwgU1ZHRm9udFJlc291cmNlKQogICAgICwgbV9l
eHRlcm5hbFNWR0ZvbnRFbGVtZW50KG51bGxwdHIpCiB7CiB9CkBAIC03Myw3ICs3Myw3IEBAIGJv
b2wgQ2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEKICAgICAgICAgLy8gRnJhbWVs
ZXNzIGRvY3VtZW50IGNhbid0IHJ1biBzY3JpcHRzIG9yIGNhbGwgYmFjayB0byB0aGUgY2xpZW50
IHNvIHRoaXMgaXMgc2FmZS4KICAgICAgICAgYXV0byBjb3VudCA9IE5vRXZlbnREaXNwYXRjaEFz
c2VydGlvbjo6ZHJvcFRlbXBvcmFyaWx5KCk7CiAKLSAgICAgICAgbV9leHRlcm5hbFNWR0RvY3Vt
ZW50ID0gU1ZHRG9jdW1lbnQ6OmNyZWF0ZShudWxscHRyLCBVUkwoKSk7CisgICAgICAgIG1fZXh0
ZXJuYWxTVkdEb2N1bWVudCA9IFNWR0RvY3VtZW50OjpjcmVhdGUobnVsbHB0ciwgVVJMKCksIHNj
aGVtZVJlZ2lzdHJ5KCkpOwogICAgICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gZGVj
b2RlciA9IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgiYXBwbGljYXRpb24veG1sIik7CiAg
ICAgICAgIG1fZXh0ZXJuYWxTVkdEb2N1bWVudC0+c2V0Q29udGVudChkZWNvZGVyLT5kZWNvZGVB
bmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpKTsKIApJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oCShyZXZpc2lvbiAyMDgzOTgp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVm
IENhY2hlZFNWR0ZvbnRfaAotI2RlZmluZSBDYWNoZWRTVkdGb250X2gKKyNwcmFnbWEgb25jZQog
CiAjaWYgRU5BQkxFKFNWR19GT05UUykKIApAQCAtMzYsNyArMzUsNyBAQCBjbGFzcyBTVkdGb250
RmFjZUVsZW1lbnQ7CiAKIGNsYXNzIENhY2hlZFNWR0ZvbnQgZmluYWwgOiBwdWJsaWMgQ2FjaGVk
Rm9udCB7CiBwdWJsaWM6Ci0gICAgQ2FjaGVkU1ZHRm9udChDYWNoZWRSZXNvdXJjZVJlcXVlc3Qm
JiwgU2Vzc2lvbklEKTsKKyAgICBDYWNoZWRTVkdGb250KENhY2hlZFJlc291cmNlUmVxdWVzdCYm
LCBTZXNzaW9uSUQsIGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3RyeSYpOwogCiAgICAgYm9vbCBlbnN1
cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9taWNTdHJpbmcmIHJlbW90ZVVSSSkgb3ZlcnJpZGU7
CiAKQEAgLTYwLDUgKzU5LDMgQEAgcHJpdmF0ZToKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQ0FD
SEVEX1JFU09VUkNFKENhY2hlZFNWR0ZvbnQsIENhY2hlZFJlc291cmNlOjpTVkdGb250UmVzb3Vy
Y2UpCiAKICNlbmRpZgotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRTY3JpcHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRTY3JpcHQuY3BwCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsOCAr
NDAsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNhY2hlZFNjcmlwdDo6Q2FjaGVkU2Ny
aXB0KENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNlc3Npb25JRCBzZXNzaW9uSUQp
Ci0gICAgOiBDYWNoZWRSZXNvdXJjZShXVEZNb3ZlKHJlcXVlc3QpLCBTY3JpcHQsIHNlc3Npb25J
RCkKK0NhY2hlZFNjcmlwdDo6Q2FjaGVkU2NyaXB0KENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIFNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3RyeSYgc2No
ZW1lUmVnaXN0cnkpCisgICAgOiBDYWNoZWRSZXNvdXJjZShXVEZNb3ZlKHJlcXVlc3QpLCBTY3Jp
cHQsIHNlc3Npb25JRCwgc2NoZW1lUmVnaXN0cnkpCiAgICAgLCBtX2RlY29kZXIoVGV4dFJlc291
cmNlRGVjb2Rlcjo6Y3JlYXRlKEFTQ0lJTGl0ZXJhbCgiYXBwbGljYXRpb24vamF2YXNjcmlwdCIp
LCByZXF1ZXN0LmNoYXJzZXQoKSkpCiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU2NyaXB0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFNjcmlwdC5oCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDggKzIz
LDcgQEAKICAgICBwYWdlcyBmcm9tIHRoZSB3ZWIuIEl0IGhhcyBhIG1lbW9yeSBjYWNoZSBmb3Ig
dGhlc2Ugb2JqZWN0cy4KICovCiAKLSNpZm5kZWYgQ2FjaGVkU2NyaXB0X2gKLSNkZWZpbmUgQ2Fj
aGVkU2NyaXB0X2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2UuaCIK
IApAQCAtMzQsNyArMzMsNyBAQCBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwogCiBjbGFzcyBD
YWNoZWRTY3JpcHQgZmluYWwgOiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2UgewogcHVibGljOgotICAg
IENhY2hlZFNjcmlwdChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiwgU2Vzc2lvbklEKTsKKyAgICBD
YWNoZWRTY3JpcHQoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYsIFNlc3Npb25JRCwgY29uc3QgUGFn
ZVNjaGVtZVJlZ2lzdHJ5Jik7CiAgICAgdmlydHVhbCB+Q2FjaGVkU2NyaXB0KCk7CiAKICAgICBT
dHJpbmdWaWV3IHNjcmlwdCgpOwpAQCAtNzIsNSArNzEsMyBAQCBwcml2YXRlOgogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0NBQ0hFRF9SRVNPVVJDRShD
YWNoZWRTY3JpcHQsIENhY2hlZFJlc291cmNlOjpTY3JpcHQpCi0KLSNlbmRpZiAvLyBDYWNoZWRT
Y3JpcHRfaApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFN0eWxlU2hl
ZXRDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkU3R5bGVTaGVldENsaWVudC5oCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU3R5bGVTaGVldENsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yMyw4ICsyMyw3IEBACiAgcGFnZXMgZnJvbSB0aGUgd2ViLiBJdCBoYXMgYSBtZW1vcnkgY2Fj
aGUgZm9yIHRoZXNlIG9iamVjdHMuCiAgKi8KIAotI2lmbmRlZiBDYWNoZWRTdHlsZVNoZWV0Q2xp
ZW50X2gKLSNkZWZpbmUgQ2FjaGVkU3R5bGVTaGVldENsaWVudF9oCisjcHJhZ21hIG9uY2UKIAog
I2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KQEAgLTQ0LDUgKzQzLDMgQEAgcHVibGljOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gQ2FjaGVkU3R5bGVTaGVldENsaWVudF9oCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAkocmV2aXNpb24gMjA4
Mzk4KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM3LDggKzM3LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1DYWNoZWRUZXh0VHJhY2s6OkNhY2hlZFRleHRUcmFjayhDYWNoZWRSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0LCBTZXNzaW9uSUQgc2Vzc2lvbklEKQotICAgIDogQ2FjaGVkUmVzb3VyY2UoV1RG
TW92ZShyZXF1ZXN0KSwgVGV4dFRyYWNrUmVzb3VyY2UsIHNlc3Npb25JRCkKK0NhY2hlZFRleHRU
cmFjazo6Q2FjaGVkVGV4dFRyYWNrKENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3RyeSYgc2NoZW1lUmVnaXN0
cnkpCisgICAgOiBDYWNoZWRSZXNvdXJjZShXVEZNb3ZlKHJlcXVlc3QpLCBUZXh0VHJhY2tSZXNv
dXJjZSwgc2Vzc2lvbklELCBzY2hlbWVSZWdpc3RyeSkKIHsKIH0KIApJbmRleDogU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaAkocmV2aXNpb24gMjA4Mzk4
KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KIAotI2lmbmRlZiBDYWNoZWRUZXh0VHJhY2tfaAotI2RlZmluZSBDYWNoZWRU
ZXh0VHJhY2tfaAorI3ByYWdtYSBvbmNlCiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAKQEAg
LTM1LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYWNoZWRUZXh0VHJh
Y2sgZmluYWwgOiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2UgewogcHVibGljOgotICAgIENhY2hlZFRl
eHRUcmFjayhDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiwgU2Vzc2lvbklEKTsKKyAgICBDYWNoZWRU
ZXh0VHJhY2soQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYsIFNlc3Npb25JRCwgY29uc3QgUGFnZVNj
aGVtZVJlZ2lzdHJ5Jik7CiAKIHByaXZhdGU6CiAgICAgYm9vbCBtYXlUcnlSZXBsYWNlRW5jb2Rl
ZERhdGEoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CkBAIC01MCw1ICs0OSwzIEBA
IHByaXZhdGU6CiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0NBQ0hFRF9SRVNPVVJDRShDYWNoZWRU
ZXh0VHJhY2ssIENhY2hlZFJlc291cmNlOjpUZXh0VHJhY2tSZXNvdXJjZSkKIAogI2VuZGlmIC8v
IEVOQUJMRShWSURFT19UUkFDSykKLQotI2VuZGlmIC8vIENhY2hlZFRleHRUcmFja19oCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hl
ZXQuY3BwCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkWFNMU3R5bGVTaGVldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDggKzM2LDggQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgRU5BQkxFKFhTTFQpCiAKLUNhY2hlZFhTTFN0eWxl
U2hlZXQ6OkNhY2hlZFhTTFN0eWxlU2hlZXQoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVz
dCwgU2Vzc2lvbklEIHNlc3Npb25JRCkKLSAgICA6IENhY2hlZFJlc291cmNlKFdURk1vdmUocmVx
dWVzdCksIFhTTFN0eWxlU2hlZXQsIHNlc3Npb25JRCkKK0NhY2hlZFhTTFN0eWxlU2hlZXQ6OkNh
Y2hlZFhTTFN0eWxlU2hlZXQoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5JiBzY2hlbWVSZWdpc3RyeSkK
KyAgICA6IENhY2hlZFJlc291cmNlKFdURk1vdmUocmVxdWVzdCksIFhTTFN0eWxlU2hlZXQsIHNl
c3Npb25JRCwgc2NoZW1lUmVnaXN0cnkpCiAgICAgLCBtX2RlY29kZXIoVGV4dFJlc291cmNlRGVj
b2Rlcjo6Y3JlYXRlKCJ0ZXh0L3hzbCIpKQogewogfQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oCShyZXZpc2lvbiAyMDgzOTgp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIFRleHRSZXNvdXJjZURlY29kZXI7
CiAKIGNsYXNzIENhY2hlZFhTTFN0eWxlU2hlZXQgZmluYWwgOiBwdWJsaWMgQ2FjaGVkUmVzb3Vy
Y2UgewogcHVibGljOgotICAgIENhY2hlZFhTTFN0eWxlU2hlZXQoQ2FjaGVkUmVzb3VyY2VSZXF1
ZXN0JiYsIFNlc3Npb25JRCk7CisgICAgQ2FjaGVkWFNMU3R5bGVTaGVldChDYWNoZWRSZXNvdXJj
ZVJlcXVlc3QmJiwgU2Vzc2lvbklELCBjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnkmKTsKICAgICB2
aXJ0dWFsIH5DYWNoZWRYU0xTdHlsZVNoZWV0KCk7CiAKICAgICBjb25zdCBTdHJpbmcmIHNoZWV0
KCkgY29uc3QgeyByZXR1cm4gbV9zaGVldDsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL01lbW9yeUNhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2
ICszNCw3IEBACiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNp
bmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiUGFnZVNjaGVtZVJlZ2lzdHJ5LmgiCiAjaW5j
bHVkZSAiUHVibGljU3VmZml4LmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVk
ZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKQEAgLTIxOCw3ICsyMTksNyBAQCBzdGF0aWMgQ2FjaGVk
SW1hZ2VDbGllbnQmIGR1bW15Q2FjaGVkSW1hCiAgICAgcmV0dXJuIGNsaWVudDsKIH0KIAotYm9v
bCBNZW1vcnlDYWNoZTo6YWRkSW1hZ2VUb0NhY2hlKE5hdGl2ZUltYWdlUHRyJiYgaW1hZ2UsIGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGRvbWFpbkZvckNhY2hlUGFydGl0aW9uKQorYm9v
bCBNZW1vcnlDYWNoZTo6YWRkSW1hZ2VUb0NhY2hlKE5hdGl2ZUltYWdlUHRyJiYgaW1hZ2UsIGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGRvbWFpbkZvckNhY2hlUGFydGl0aW9uLCBjb25z
dCBQYWdlU2NoZW1lUmVnaXN0cnkmIHNjaGVtZVJlZ2lzdHJ5KQogewogICAgIEFTU0VSVChpbWFn
ZSk7CiAgICAgU2Vzc2lvbklEIHNlc3Npb25JRCA9IFNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25J
RCgpOwpAQCAtMjI4LDcgKzIyOSw4IEBAIGJvb2wgTWVtb3J5Q2FjaGU6OmFkZEltYWdlVG9DYWNo
ZShOYXRpdmUKICAgICBpZiAoIWJpdG1hcEltYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBhdXRvIGNhY2hlZEltYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRJbWFnZT4odXJs
LCBiaXRtYXBJbWFnZS5nZXQoKSwgc2Vzc2lvbklEKTsKKyAgICAvLyBGSVhNRTogTWFrZSB0aGUg
CisgICAgYXV0byBjYWNoZWRJbWFnZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FjaGVkSW1hZ2U+KHVy
bCwgYml0bWFwSW1hZ2UuZ2V0KCksIHNlc3Npb25JRCwgc2NoZW1lUmVnaXN0cnkpOwogCiAgICAg
Y2FjaGVkSW1hZ2UtPmFkZENsaWVudChkdW1teUNhY2hlZEltYWdlQ2xpZW50KCkpOwogICAgIGNh
Y2hlZEltYWdlLT5zZXREZWNvZGVkU2l6ZShiaXRtYXBJbWFnZS0+ZGVjb2RlZFNpemUoKSk7CkBA
IC01MjUsMzQgKzUyNyw3IEBAIHZvaWQgTWVtb3J5Q2FjaGU6OnJlc291cmNlQWNjZXNzZWQoQ2Fj
aGUKICAgICBpbnNlcnRJbkxSVUxpc3QocmVzb3VyY2UpOwogfQogCi12b2lkIE1lbW9yeUNhY2hl
OjpyZW1vdmVSZXNvdXJjZXNXaXRoT3JpZ2luKFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pCi17Ci0j
aWYgRU5BQkxFKENBQ0hFX1BBUlRJVElPTklORykKLSAgICBTdHJpbmcgb3JpZ2luUGFydGl0aW9u
ID0gUmVzb3VyY2VSZXF1ZXN0OjpwYXJ0aXRpb25OYW1lKG9yaWdpbi5ob3N0KCkpOwotI2VuZGlm
Ci0KLSAgICBWZWN0b3I8Q2FjaGVkUmVzb3VyY2UqPiByZXNvdXJjZXNXaXRoT3JpZ2luOwotICAg
IGZvciAoYXV0byYgcmVzb3VyY2VzIDogbV9zZXNzaW9uUmVzb3VyY2VzLnZhbHVlcygpKSB7Ci0g
ICAgICAgIGZvciAoYXV0byYga2V5VmFsdWUgOiAqcmVzb3VyY2VzKSB7Ci0gICAgICAgICAgICBh
dXRvJiByZXNvdXJjZSA9ICprZXlWYWx1ZS52YWx1ZTsKLSNpZiBFTkFCTEUoQ0FDSEVfUEFSVElU
SU9OSU5HKQotICAgICAgICAgICAgYXV0byYgcGFydGl0aW9uTmFtZSA9IGtleVZhbHVlLmtleS5z
ZWNvbmQ7Ci0gICAgICAgICAgICBpZiAocGFydGl0aW9uTmFtZSA9PSBvcmlnaW5QYXJ0aXRpb24p
IHsKLSAgICAgICAgICAgICAgICByZXNvdXJjZXNXaXRoT3JpZ2luLmFwcGVuZCgmcmVzb3VyY2Up
OwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotI2VuZGlmCi0gICAg
ICAgICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHJlc291cmNlT3JpZ2luID0gU2VjdXJpdHlP
cmlnaW46OmNyZWF0ZShyZXNvdXJjZS51cmwoKSk7Ci0gICAgICAgICAgICBpZiAocmVzb3VyY2VP
cmlnaW4tPmVxdWFsKCZvcmlnaW4pKQotICAgICAgICAgICAgICAgIHJlc291cmNlc1dpdGhPcmln
aW4uYXBwZW5kKCZyZXNvdXJjZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBmb3IgKGF1dG8q
IHJlc291cmNlIDogcmVzb3VyY2VzV2l0aE9yaWdpbikKLSAgICAgICAgcmVtb3ZlKCpyZXNvdXJj
ZSk7Ci19Ci0KLXZvaWQgTWVtb3J5Q2FjaGU6OnJlbW92ZVJlc291cmNlc1dpdGhPcmlnaW5zKFNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4m
IG9yaWdpbnMpCit2b2lkIE1lbW9yeUNhY2hlOjpyZW1vdmVSZXNvdXJjZXNXaXRoT3JpZ2lucyhT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+
JiBvcmlnaW5zLCBjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnkmIHNjaGVtZVJlZ2lzdHJ5KQogewog
ICAgIGF1dG8qIHJlc291cmNlTWFwID0gc2Vzc2lvblJlc291cmNlTWFwKHNlc3Npb25JRCk7CiAg
ICAgaWYgKCFyZXNvdXJjZU1hcCkKQEAgLTU3Nyw3ICs1NTIsNyBAQCB2b2lkIE1lbW9yeUNhY2hl
OjpyZW1vdmVSZXNvdXJjZXNXaXRoT3JpCiAgICAgICAgIH0KICNlbmRpZgogCi0gICAgICAgIGlm
IChvcmlnaW5zLmNvbnRhaW5zKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUocmVzb3VyY2UudXJsKCkp
LnB0cigpKSkKKyAgICAgICAgaWYgKG9yaWdpbnMuY29udGFpbnMoU2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZShyZXNvdXJjZS51cmwoKSwgc2NoZW1lUmVnaXN0cnkpLnB0cigpKSkKICAgICAgICAgICAg
IHJlc291cmNlc1RvUmVtb3ZlLmFwcGVuZCgmcmVzb3VyY2UpOwogICAgIH0KIApAQCAtNTg1LDI2
ICs1NjAsNyBAQCB2b2lkIE1lbW9yeUNhY2hlOjpyZW1vdmVSZXNvdXJjZXNXaXRoT3JpCiAgICAg
ICAgIHJlbW92ZSgqcmVzb3VyY2UpOwogfQogCi12b2lkIE1lbW9yeUNhY2hlOjpnZXRPcmlnaW5z
V2l0aENhY2hlKFNlY3VyaXR5T3JpZ2luU2V0JiBvcmlnaW5zKQotewotI2lmIEVOQUJMRShDQUNI
RV9QQVJUSVRJT05JTkcpCi0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gaHR0cFN0
cmluZygiaHR0cCIpOwotI2VuZGlmCi0gICAgZm9yIChhdXRvJiByZXNvdXJjZXMgOiBtX3Nlc3Np
b25SZXNvdXJjZXMudmFsdWVzKCkpIHsKLSAgICAgICAgZm9yIChhdXRvJiBrZXlWYWx1ZSA6ICpy
ZXNvdXJjZXMpIHsKLSAgICAgICAgICAgIGF1dG8mIHJlc291cmNlID0gKmtleVZhbHVlLnZhbHVl
OwotI2lmIEVOQUJMRShDQUNIRV9QQVJUSVRJT05JTkcpCi0gICAgICAgICAgICBhdXRvJiBwYXJ0
aXRpb25OYW1lID0ga2V5VmFsdWUua2V5LnNlY29uZDsKLSAgICAgICAgICAgIGlmICghcGFydGl0
aW9uTmFtZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgb3JpZ2lucy5hZGQoU2VjdXJpdHlP
cmlnaW46OmNyZWF0ZShodHRwU3RyaW5nLCBwYXJ0aXRpb25OYW1lLCAwKSk7Ci0gICAgICAgICAg
ICBlbHNlCi0jZW5kaWYKLSAgICAgICAgICAgIG9yaWdpbnMuYWRkKFNlY3VyaXR5T3JpZ2luOjpj
cmVhdGUocmVzb3VyY2UudXJsKCkpKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotSGFzaFNldDxS
ZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBNZW1vcnlDYWNoZTo6b3JpZ2luc1dpdGhDYWNoZShTZXNz
aW9uSUQgc2Vzc2lvbklEKSBjb25zdAorSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBN
ZW1vcnlDYWNoZTo6b3JpZ2luc1dpdGhDYWNoZShTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBQ
YWdlU2NoZW1lUmVnaXN0cnkmIHNjaGVtZVJlZ2lzdHJ5KSBjb25zdAogewogICAgIEhhc2hTZXQ8
UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gb3JpZ2luczsKIApAQCAtNjE1LDEwICs1NzEsMTAgQEAg
SGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBNZW1vcnlDYQogI2lmIEVOQUJMRShDQUNI
RV9QQVJUSVRJT05JTkcpCiAgICAgICAgICAgICBhdXRvJiBwYXJ0aXRpb25OYW1lID0ga2V5VmFs
dWUua2V5LnNlY29uZDsKICAgICAgICAgICAgIGlmICghcGFydGl0aW9uTmFtZS5pc0VtcHR5KCkp
Ci0gICAgICAgICAgICAgICAgb3JpZ2lucy5hZGQoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSgiaHR0
cCIsIHBhcnRpdGlvbk5hbWUsIDApKTsKKyAgICAgICAgICAgICAgICBvcmlnaW5zLmFkZChTZWN1
cml0eU9yaWdpbjo6Y3JlYXRlKCJodHRwIiwgcGFydGl0aW9uTmFtZSwgTnVsbG9wdCwgc2NoZW1l
UmVnaXN0cnkpKTsKICAgICAgICAgICAgIGVsc2UKICNlbmRpZgotICAgICAgICAgICAgb3JpZ2lu
cy5hZGQoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShyZXNvdXJjZS51cmwoKSkpOworICAgICAgICAg
ICAgb3JpZ2lucy5hZGQoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShyZXNvdXJjZS51cmwoKSwgc2No
ZW1lUmVnaXN0cnkpKTsKICAgICAgICAgfQogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmgJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTIs
MTIgKzE1MiwxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpbkxpdmVEZWNvZGVkUmVzb3VyY2VzTGlz
dChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpIGNvbnN0IHsgcmV0dXJuIG1fbGl2ZURlY29kZWRS
ZXNvdXJjZXMuY29udGFpbnMoJnJlc291cmNlKTsgfQogCiAgICAgdHlwZWRlZiBIYXNoU2V0PFJl
ZlB0cjxTZWN1cml0eU9yaWdpbj4+IFNlY3VyaXR5T3JpZ2luU2V0OwotICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgcmVtb3ZlUmVzb3VyY2VzV2l0aE9yaWdpbihTZWN1cml0eU9yaWdpbiYpOwotICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlUmVzb3VyY2VzV2l0aE9yaWdpbnMoU2Vzc2lvbklE
LCBjb25zdCBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+Jik7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBnZXRPcmlnaW5zV2l0aENhY2hlKFNlY3VyaXR5T3JpZ2luU2V0JiBvcmlnaW5z
KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IG9y
aWdpbnNXaXRoQ2FjaGUoU2Vzc2lvbklEKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHJlbW92ZVJlc291cmNlc1dpdGhPcmlnaW5zKFNlc3Npb25JRCwgY29uc3QgSGFzaFNldDxSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+PiYsIGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3RyeSYpOworICAgIFdF
QkNPUkVfRVhQT1JUIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gb3JpZ2luc1dpdGhD
YWNoZShTZXNzaW9uSUQsIGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3RyeSYpIGNvbnN0OwogCi0gICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBhZGRJbWFnZVRvQ2FjaGUoTmF0aXZlSW1hZ2VQdHImJiwgY29u
c3QgVVJMJiwgY29uc3QgU3RyaW5nJiBkb21haW5Gb3JDYWNoZVBhcnRpdGlvbik7CisgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBhZGRJbWFnZVRvQ2FjaGUoTmF0aXZlSW1hZ2VQdHImJiwgY29uc3Qg
VVJMJiwgY29uc3QgU3RyaW5nJiBkb21haW5Gb3JDYWNoZVBhcnRpdGlvbiwgY29uc3QgUGFnZVNj
aGVtZVJlZ2lzdHJ5Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVJbWFnZUZyb21D
YWNoZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGRvbWFpbkZvckNhY2hlUGFydGl0aW9uKTsK
IAogICAgIC8vIHBydW5lRGVhZCooKSAtIEZsdXNoIGRlY29kZWQgYW5kIGVuY29kZWQgZGF0YSBm
cm9tIHJlc291cmNlcyBub3QgcmVmZXJlbmNlZCBieSBXZWIgcGFnZXMuCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3cuY3BwCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDYgKzc5LDcgQEAKICNpbmNs
dWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZUNvbnNvbGVDbGllbnQuaCIKICNpbmNsdWRlICJQ
YWdlR3JvdXAuaCIKKyNpbmNsdWRlICJQYWdlU2NoZW1lUmVnaXN0cnkuaCIKICNpbmNsdWRlICJQ
YWdlVHJhbnNpdGlvbkV2ZW50LmgiCiAjaW5jbHVkZSAiUGVyZm9ybWFuY2UuaCIKICNpbmNsdWRl
ICJSZXNvdXJjZUxvYWRJbmZvLmgiCkBAIC04ODksNyArODkwLDcgQEAgRXhjZXB0aW9uT3I8U3Rv
cmFnZSo+IERPTVdpbmRvdzo6bG9jYWxTdAogICAgIHJldHVybiBtX2xvY2FsU3RvcmFnZS5nZXQo
KTsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gRE9NV2luZG93Ojpwb3N0TWVzc2FnZShSZWY8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiYmIG1lc3NhZ2UsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+
PiYmIHBvcnRzLCBjb25zdCBTdHJpbmcmIHRhcmdldE9yaWdpbiwgRE9NV2luZG93JiBzb3VyY2Up
CitFeGNlcHRpb25Pcjx2b2lkPiBET01XaW5kb3c6OnBvc3RNZXNzYWdlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+JiYgbWVzc2FnZSwgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiYgcG9ydHMsIGNvbnN0
IFN0cmluZyYgdGFyZ2V0T3JpZ2luLCBET01XaW5kb3cmIHNvdXJjZSkKIHsKICAgICBpZiAoIWlz
Q3VycmVudGx5RGlzcGxheWVkSW5GcmFtZSgpKQogICAgICAgICByZXR1cm4geyB9OwpAQCAtOTA0
LDcgKzkwNSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTVdpbmRvdzo6cG9zdE1lc3NhZ2UKICAg
ICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgIHRhcmdldCA9IHNvdXJjZURvY3VtZW50LT5z
ZWN1cml0eU9yaWdpbigpOwogICAgIH0gZWxzZSBpZiAodGFyZ2V0T3JpZ2luICE9ICIqIikgewot
ICAgICAgICB0YXJnZXQgPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyh0YXJnZXRP
cmlnaW4pOworICAgICAgICB0YXJnZXQgPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmlu
Zyh0YXJnZXRPcmlnaW4sIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuc2NoZW1lUmVnaXN0cnkoKSk7
CiAgICAgICAgIC8vIEl0IGRvZXNuJ3QgbWFrZSBzZW5zZSB0YXJnZXQgYSBwb3N0TWVzc2FnZSBh
dCBhIHVuaXF1ZSBvcmlnaW4KICAgICAgICAgLy8gYmVjYXVzZSB0aGVyZSdzIG5vIHdheSB0byBy
ZXByZXNlbnQgYSB1bmlxdWUgb3JpZ2luIGluIGEgc3RyaW5nLgogICAgICAgICBpZiAodGFyZ2V0
LT5pc1VuaXF1ZSgpKQpAQCAtMjA2Myw3ICsyMDY0LDcgQEAgU3RyaW5nIERPTVdpbmRvdzo6Y3Jv
c3NEb21haW5BY2Nlc3NFcnJvcgogICAgIFVSTCBhY3RpdmVVUkwgPSBhY3RpdmVXaW5kb3cuZG9j
dW1lbnQoKS0+dXJsKCk7CiAgICAgVVJMIHRhcmdldFVSTCA9IGRvY3VtZW50KCktPnVybCgpOwog
ICAgIGlmIChkb2N1bWVudCgpLT5pc1NhbmRib3hlZChTYW5kYm94T3JpZ2luKSB8fCBhY3RpdmVX
aW5kb3cuZG9jdW1lbnQoKS0+aXNTYW5kYm94ZWQoU2FuZGJveE9yaWdpbikpIHsKLSAgICAgICAg
bWVzc2FnZSA9ICJCbG9ja2VkIGEgZnJhbWUgYXQgXCIiICsgU2VjdXJpdHlPcmlnaW46OmNyZWF0
ZShhY3RpdmVVUkwpLmdldCgpLnRvU3RyaW5nKCkgKyAiXCIgZnJvbSBhY2Nlc3NpbmcgYSBmcmFt
ZSBhdCBcIiIgKyBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHRhcmdldFVSTCkuZ2V0KCkudG9TdHJp
bmcoKSArICJcIi4gIjsKKyAgICAgICAgbWVzc2FnZSA9ICJCbG9ja2VkIGEgZnJhbWUgYXQgXCIi
ICsgU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShhY3RpdmVVUkwsIFBhZ2VTY2hlbWVSZWdpc3RyeTo6
Y3JlYXRlKCkpLmdldCgpLnRvU3RyaW5nKCkgKyAiXCIgZnJvbSBhY2Nlc3NpbmcgYSBmcmFtZSBh
dCBcIiIgKyBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHRhcmdldFVSTCwgUGFnZVNjaGVtZVJlZ2lz
dHJ5OjpjcmVhdGUoKSkuZ2V0KCkudG9TdHJpbmcoKSArICJcIi4gIjsKICAgICAgICAgaWYgKGRv
Y3VtZW50KCktPmlzU2FuZGJveGVkKFNhbmRib3hPcmlnaW4pICYmIGFjdGl2ZVdpbmRvdy5kb2N1
bWVudCgpLT5pc1NhbmRib3hlZChTYW5kYm94T3JpZ2luKSkKICAgICAgICAgICAgIHJldHVybiAi
U2FuZGJveCBhY2Nlc3MgdmlvbGF0aW9uOiAiICsgbWVzc2FnZSArICIgQm90aCBmcmFtZXMgYXJl
IHNhbmRib3hlZCBhbmQgbGFjayB0aGUgXCJhbGxvdy1zYW1lLW9yaWdpblwiIGZsYWcuIjsKICAg
ICAgICAgaWYgKGRvY3VtZW50KCktPmlzU2FuZGJveGVkKFNhbmRib3hPcmlnaW4pKQpAQCAtMjEy
OSw3ICsyMTMwLDcgQEAgUmVmUHRyPEZyYW1lPiBET01XaW5kb3c6OmNyZWF0ZVdpbmRvdyhjbwog
ICAgIH0KIAogICAgIC8vIEZvciB3aGF0ZXZlciByZWFzb24sIEZpcmVmb3ggdXNlcyB0aGUgZmly
c3QgZnJhbWUgdG8gZGV0ZXJtaW5lIHRoZSBvdXRnb2luZ1JlZmVycmVyLiBXZSByZXBsaWNhdGUg
dGhhdCBiZWhhdmlvciBoZXJlLgotICAgIFN0cmluZyByZWZlcnJlciA9IFNlY3VyaXR5UG9saWN5
OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVyKGZpcnN0RnJhbWUuZG9jdW1lbnQoKS0+cmVmZXJyZXJQ
b2xpY3koKSwgY29tcGxldGVkVVJMLCBmaXJzdEZyYW1lLmxvYWRlcigpLm91dGdvaW5nUmVmZXJy
ZXIoKSk7CisgICAgU3RyaW5nIHJlZmVycmVyID0gU2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVm
ZXJyZXJIZWFkZXIoZmlyc3RGcmFtZS5kb2N1bWVudCgpLT5yZWZlcnJlclBvbGljeSgpLCBjb21w
bGV0ZWRVUkwsIGZpcnN0RnJhbWUubG9hZGVyKCkub3V0Z29pbmdSZWZlcnJlcigpLCBmaXJzdEZy
YW1lLnNjaGVtZVJlZ2lzdHJ5KCkpOwogCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoY29t
cGxldGVkVVJMLCByZWZlcnJlcik7CiAgICAgRnJhbWVMb2FkZXI6OmFkZEhUVFBPcmlnaW5JZk5l
ZWRlZChyZXF1ZXN0LCBmaXJzdEZyYW1lLmxvYWRlcigpLm91dGdvaW5nT3JpZ2luKCkpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0RPTVdpbmRvdy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMzMsNyArMjMzLDcgQEAg
cHVibGljOgogICAgIHZvaWQgcHJpbnRFcnJvck1lc3NhZ2UoY29uc3QgU3RyaW5nJik7CiAgICAg
U3RyaW5nIGNyb3NzRG9tYWluQWNjZXNzRXJyb3JNZXNzYWdlKGNvbnN0IERPTVdpbmRvdyYgYWN0
aXZlV2luZG93KTsKIAotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHBvc3RNZXNzYWdlKFJlZjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+JiYgbWVzc2FnZSwgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+
JiYsIGNvbnN0IFN0cmluZyYgdGFyZ2V0T3JpZ2luLCBET01XaW5kb3cmIHNvdXJjZSk7CisgICAg
RXhjZXB0aW9uT3I8dm9pZD4gcG9zdE1lc3NhZ2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJl
ZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgbWVzc2FnZSwgVmVjdG9yPFJlZlB0cjxNZXNzYWdl
UG9ydD4+JiYsIGNvbnN0IFN0cmluZyYgdGFyZ2V0T3JpZ2luLCBET01XaW5kb3cmIHNvdXJjZSk7
CiAgICAgdm9pZCBwb3N0TWVzc2FnZVRpbWVyRmlyZWQoUG9zdE1lc3NhZ2VUaW1lciYpOwogICAg
IHZvaWQgZGlzcGF0Y2hNZXNzYWdlRXZlbnRXaXRoT3JpZ2luQ2hlY2soU2VjdXJpdHlPcmlnaW4q
IGludGVuZGVkVGFyZ2V0T3JpZ2luLCBFdmVudCYsIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpTY3Jp
cHRDYWxsU3RhY2s+KTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5j
cHAJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xs
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NDYsNyArODQ2LDcgQEAgYm9vbCBEcmFnQ29udHJv
bGxlcjo6c3RhcnREcmFnKEZyYW1lJiBzcgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgICAgIGRvU3lzdGVtRHJhZyhkcmFnSW1hZ2UsIGRyYWdMb2MsIGRyYWdPcmlnaW4sIGRhdGFU
cmFuc2Zlciwgc3JjLCBmYWxzZSk7Ci0gICAgfSBlbHNlIGlmICghc3JjLmRvY3VtZW50KCktPnNl
Y3VyaXR5T3JpZ2luKCktPmNhbkRpc3BsYXkobGlua1VSTCkpIHsKKyAgICB9IGVsc2UgaWYgKCFz
cmMuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuRGlzcGxheShsaW5rVVJMLCBzcmMu
c2NoZW1lUmVnaXN0cnkoKSkpIHsKICAgICAgICAgc3JjLmRvY3VtZW50KCktPmFkZENvbnNvbGVN
ZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAiTm90
IGFsbG93ZWQgdG8gZHJhZyBsb2NhbCByZXNvdXJjZTogIiArIGxpbmtVUkwuc3RyaW5nQ2VudGVy
RWxsaXBzaXplZFRvTGVuZ3RoKCkpOwogICAgICAgICBzdGFydGVkRHJhZyA9IGZhbHNlOwogICAg
IH0gZWxzZSBpZiAoIWltYWdlVVJMLmlzRW1wdHkoKSAmJiBpbWFnZSAmJiAhaW1hZ2UtPmlzTnVs
bCgpICYmIChtX2RyYWdTb3VyY2VBY3Rpb24gJiBEcmFnU291cmNlQWN0aW9uSW1hZ2UpKSB7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcAkocmV2aXNpb24gMjA4Mzk4KQorKysg
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3
LDYgKzM3LDcgQEAKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9u
Q29kZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgorI2luY2x1ZGUgIlBhZ2VTY2hlbWVS
ZWdpc3RyeS5oIgogI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNsdWRlICJSZXNvdXJj
ZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCkBAIC0xOTksNyArMjAw
LDggQEAgdm9pZCBFdmVudFNvdXJjZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVucwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgbV9ldmVudFN0cmVhbU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2lu
OjpjcmVhdGUocmVzcG9uc2UudXJsKCkpLT50b1N0cmluZygpOworICAgIC8vIEZJWE1FOiBHZXQg
dGhlIFBhZ2VTY2hlbWVSZWdpc3RyeSBmcm9tIHRoZSBwYWdlLgorICAgIG1fZXZlbnRTdHJlYW1P
cmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHJlc3BvbnNlLnVybCgpLCBQYWdlU2NoZW1l
UmVnaXN0cnk6OmNyZWF0ZSgpKS0+dG9TdHJpbmcoKTsKICAgICBtX3N0YXRlID0gT1BFTjsKICAg
ICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLm9wZW5FdmVudCwgZmFs
c2UsIGZhbHNlKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5oCShyZXZpc2lv
biAyMDgzOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQyLDYgKzQyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVz
c2FnZUV2ZW50OworY2xhc3MgUGFnZVNjaGVtZVJlZ2lzdHJ5OwogY2xhc3MgVGV4dFJlc291cmNl
RGVjb2RlcjsKIGNsYXNzIFRocmVhZGFibGVMb2FkZXI7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUu
Y3BwCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzYsNiArNzYsNyBAQAogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNs
dWRlICJQYWdlQ2FjaGUuaCIKICNpbmNsdWRlICJQYWdlR3JvdXAuaCIKKyNpbmNsdWRlICJQYWdl
U2NoZW1lUmVnaXN0cnkuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllckNvbXBvc2l0b3IuaCIKICNp
bmNsdWRlICJSZW5kZXJUYWJsZUNlbGwuaCIKICNpbmNsdWRlICJSZW5kZXJUZXh0LmgiCkBAIC0x
NTMsNiArMTU0LDcgQEAgc3RhdGljIGlubGluZSBmbG9hdCBwYXJlbnRUZXh0Wm9vbUZhY3Rvcgog
RnJhbWU6OkZyYW1lKFBhZ2UmIHBhZ2UsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVt
ZW50LCBGcmFtZUxvYWRlckNsaWVudCYgZnJhbWVMb2FkZXJDbGllbnQpCiAgICAgOiBtX21haW5G
cmFtZShvd25lckVsZW1lbnQgPyBwYWdlLm1haW5GcmFtZSgpIDogc3RhdGljX2Nhc3Q8TWFpbkZy
YW1lJj4oKnRoaXMpKQogICAgICwgbV9wYWdlKCZwYWdlKQorICAgICwgbV9zY2hlbWVSZWdpc3Ry
eShwYWdlLnNjaGVtZVJlZ2lzdHJ5KCkpCiAgICAgLCBtX3NldHRpbmdzKCZwYWdlLnNldHRpbmdz
KCkpCiAgICAgLCBtX3RyZWVOb2RlKCp0aGlzLCBwYXJlbnRGcm9tT3duZXJFbGVtZW50KG93bmVy
RWxlbWVudCkpCiAgICAgLCBtX2xvYWRlcigqdGhpcywgZnJhbWVMb2FkZXJDbGllbnQpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZS5oCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTc3LDYgKzc3LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIGNsYXNzIEludFJlY3Q7CiAgICAgY2xhc3MgTWFpbkZyYW1lOwogICAgIGNsYXNz
IE5vZGU7CisgICAgY2xhc3MgUGFnZVNjaGVtZVJlZ2lzdHJ5OwogICAgIGNsYXNzIFJhbmdlOwog
ICAgIGNsYXNzIFJlbmRlckxheWVyOwogICAgIGNsYXNzIFJlbmRlclZpZXc7CkBAIC0xNTEsNiAr
MTUyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBGcmFtZVRyZWUmIHRyZWUoKSBj
b25zdDsKICAgICAgICAgQW5pbWF0aW9uQ29udHJvbGxlciYgYW5pbWF0aW9uKCkgY29uc3Q7CiAg
ICAgICAgIFNjcmlwdENvbnRyb2xsZXImIHNjcmlwdCgpOworICAgICAgICBjb25zdCBQYWdlU2No
ZW1lUmVnaXN0cnkmIHNjaGVtZVJlZ2lzdHJ5KCkgY29uc3QgeyByZXR1cm4gbV9zY2hlbWVSZWdp
c3RyeS5nZXQoKTsgfQogICAgICAgICAKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgUmVuZGVyVmll
dyogY29udGVudFJlbmRlcmVyKCkgY29uc3Q7IC8vIFJvb3Qgb2YgdGhlIHJlbmRlciB0cmVlIGZv
ciB0aGUgZG9jdW1lbnQgY29udGFpbmVkIGluIHRoaXMgZnJhbWUuCiAgICAgICAgIFdFQkNPUkVf
RVhQT1JUIFJlbmRlcldpZGdldCogb3duZXJSZW5kZXJlcigpIGNvbnN0OyAvLyBSZW5kZXJlciBm
b3IgdGhlIGVsZW1lbnQgdGhhdCBjb250YWlucyB0aGlzIGZyYW1lLgpAQCAtMjc2LDYgKzI3OCw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBNYWluRnJhbWUmIG1fbWFpbkZyYW1l
OwogICAgICAgICBQYWdlKiBtX3BhZ2U7CisgICAgICAgIFJlZjxjb25zdCBQYWdlU2NoZW1lUmVn
aXN0cnk+IG1fc2NoZW1lUmVnaXN0cnk7CiAgICAgICAgIGNvbnN0IFJlZlB0cjxTZXR0aW5ncz4g
bV9zZXR0aW5nczsKICAgICAgICAgbXV0YWJsZSBGcmFtZVRyZWUgbV90cmVlTm9kZTsKICAgICAg
ICAgbXV0YWJsZSBGcmFtZUxvYWRlciBtX2xvYWRlcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvSGlzdG9yeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5
LmNwcAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTQ1LDcgKzE0NSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEhp
c3Rvcnk6OnN0YXRlT2JqZWN0QWQKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIFVSTCBmdWxs
VVJMID0gdXJsRm9yU3RhdGUodXJsU3RyaW5nKTsKLSAgICBpZiAoIWZ1bGxVUkwuaXNWYWxpZCgp
IHx8ICFtX2ZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5SZXF1ZXN0KGZ1
bGxVUkwpKQorICAgIGlmICghZnVsbFVSTC5pc1ZhbGlkKCkgfHwgIW1fZnJhbWUtPmRvY3VtZW50
KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhblJlcXVlc3QoZnVsbFVSTCwgbV9mcmFtZS0+c2NoZW1l
UmVnaXN0cnkoKSkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTRUNVUklUWV9FUlIgfTsK
IAogICAgIGlmIChmdWxsVVJMLmhhc1VzZXJuYW1lKCkgfHwgZnVsbFVSTC5oYXNQYXNzd29yZCgp
KSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcAkocmV2aXNpb24gMjA4Mzk4KQorKysg
U291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyOSw3
ICsxMjksNyBAQCBTdHJpbmcgTG9jYXRpb246Om9yaWdpbigpIGNvbnN0CiB7CiAgICAgaWYgKCFt
X2ZyYW1lKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgcmV0dXJuIFNlY3VyaXR5T3Jp
Z2luOjpjcmVhdGUodXJsKCkpLT50b1N0cmluZygpOworICAgIHJldHVybiBTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlKHVybCgpLCBtX2ZyYW1lLT5zY2hlbWVSZWdpc3RyeSgpKS0+dG9TdHJpbmcoKTsK
IH0KIAogVmVjdG9yPFN0cmluZz4gTG9jYXRpb246OmFuY2VzdG9yT3JpZ2lucygpIGNvbnN0Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDYgKzY3LDcgQEAKICNpbmNsdWRl
ICJQYWdlRGVidWdnYWJsZS5oIgogI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIlBh
Z2VPdmVybGF5Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIlBhZ2VTY2hlbWVSZWdpc3RyeS5oIgog
I2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIlBsdWdJ
bkNsaWVudC5oIgogI2luY2x1ZGUgIlBsdWdpbkRhdGEuaCIKQEAgLTIzMCw2ICsyMzEsNyBAQCBQ
YWdlOjpQYWdlKFBhZ2VDb25maWd1cmF0aW9uJiYgcGFnZUNvbmZpCiAjZW5kaWYKICAgICAsIG1f
bGFzdFNwYXRpYWxOYXZpZ2F0aW9uQ2FuZGlkYXRlc0NvdW50KDApIC8vIE5PVEU6IE9ubHkgY2Fs
bGVkIGZyb20gSW50ZXJuYWxzIGZvciBTcGF0aWFsIE5hdmlnYXRpb24gdGVzdGluZy4KICAgICAs
IG1fZm9yYmlkUHJvbXB0c0RlcHRoKDApCisgICAgLCBtX3NjaGVtZVJlZ2lzdHJ5KFBhZ2VTY2hl
bWVSZWdpc3RyeTo6Y3JlYXRlKCkpCiAgICAgLCBtX3NvY2tldFByb3ZpZGVyKFdURk1vdmUocGFn
ZUNvbmZpZ3VyYXRpb24uc29ja2V0UHJvdmlkZXIpKQogICAgICwgbV9hcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZSgqV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZSkpCiAgICAgLCBtX2RhdGFiYXNlUHJvdmlkZXIoKldURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24u
ZGF0YWJhc2VQcm92aWRlcikpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkocmV2aXNpb24gMjA4Mzk4KQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNCw2ICsx
MDQsNyBAQCBjbGFzcyBQYWdlQ29uZmlndXJhdGlvbjsKIGNsYXNzIFBhZ2VDb25zb2xlQ2xpZW50
OwogY2xhc3MgUGFnZURlYnVnZ2FibGU7CiBjbGFzcyBQYWdlR3JvdXA7CitjbGFzcyBQYWdlU2No
ZW1lUmVnaXN0cnk7CiBjbGFzcyBQbHVnSW5DbGllbnQ7CiBjbGFzcyBQbHVnaW5EYXRhOwogY2xh
c3MgUGx1Z2luSW5mb1Byb3ZpZGVyOwpAQCAtNDU2LDYgKzQ1Nyw3IEBAIHB1YmxpYzoKICAgICBB
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZSYgYXBwbGljYXRpb25DYWNoZVN0b3JhZ2UoKSB7IHJldHVy
biBtX2FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOyB9CiAgICAgRGF0YWJhc2VQcm92aWRlciYgZGF0
YWJhc2VQcm92aWRlcigpIHsgcmV0dXJuIG1fZGF0YWJhc2VQcm92aWRlcjsgfQogICAgIFNvY2tl
dFByb3ZpZGVyJiBzb2NrZXRQcm92aWRlcigpIHsgcmV0dXJuIG1fc29ja2V0UHJvdmlkZXI7IH0K
KyAgICBjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnkmIHNjaGVtZVJlZ2lzdHJ5KCkgY29uc3QgeyBy
ZXR1cm4gbV9zY2hlbWVSZWdpc3RyeS5nZXQoKTsgfQogCiAgICAgU3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyJiBzdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIoKSB7IHJldHVybiBtX3N0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlci5nZXQoKTsgfQogICAgIHZvaWQgc2V0U3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyKFJlZjxTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI+JiYpOwpAQCAtNjk1LDYgKzY5Nyw3IEBA
IHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9sYXN0U3BhdGlhbE5hdmlnYXRpb25DYW5kaWRhdGVz
Q291bnQ7CiAgICAgdW5zaWduZWQgbV9mb3JiaWRQcm9tcHRzRGVwdGg7CiAKKyAgICBSZWY8UGFn
ZVNjaGVtZVJlZ2lzdHJ5PiBtX3NjaGVtZVJlZ2lzdHJ5OwogICAgIFJlZjxTb2NrZXRQcm92aWRl
cj4gbV9zb2NrZXRQcm92aWRlcjsKICAgICBSZWY8QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U+IG1f
YXBwbGljYXRpb25DYWNoZVN0b3JhZ2U7CiAgICAgUmVmPERhdGFiYXNlUHJvdmlkZXI+IG1fZGF0
YWJhc2VQcm92aWRlcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRp
b24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRp
b24uY3BwCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25m
aWd1cmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUg
IkRhdGFiYXNlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5o
IgogI2luY2x1ZGUgIkVkaXRvckNsaWVudC5oIgorI2luY2x1ZGUgIlBhZ2VTY2hlbWVSZWdpc3Ry
eS5oIgogI2luY2x1ZGUgIlBsdWdpbkluZm9Qcm92aWRlci5oIgogI2luY2x1ZGUgIlNvY2tldFBy
b3ZpZGVyLmgiCiAjaW5jbHVkZSAiU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmgiCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTY2hlbWVSZWdpc3RyeS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2NoZW1lUmVnaXN0cnkuY3BwCShub25leGlzdGVudCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNjaGVtZVJlZ2lzdHJ5LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIElu
Yy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGFnZVNjaGVt
ZVJlZ2lzdHJ5LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFnZVNjaGVtZVJlZ2lzdHJ5
OjpQYWdlU2NoZW1lUmVnaXN0cnkoKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTY2hlbWVSZWdpc3RyeS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNjaGVtZVJlZ2lzdHJ5LmgJKG5vbmV4aXN0ZW50
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2NoZW1lUmVnaXN0cnkuaAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIElu
Yy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICoKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IFBhZ2VTY2hlbWVSZWdpc3RyeSA6IHB1YmxpYyBSZWZDb3VudGVkPFBhZ2VTY2hlbWVSZWdpc3Ry
eT4geworcHVibGljOgorICAgIC8vIEZJWE1FOiBNYWtlIHRoaXMgcHJpdmF0ZSBhbmQgYmVmcmll
bmQgdGhlIGZldyBjbGFzc2VzIGFsbG93ZWQgdG8gbWFrZSBhIFBhZ2VTY2hlbWVSZWdpc3RyeSwK
KyAgICAvLyBpZGVhbGx5IGp1c3QgYSBQYWdlLiAgVGhpcyBjbGFzcyBzaG91bGQgbm90IGJlIHVz
ZWQgZm9yIGFueXRoaW5nIHVudGlsIHdlIG9ubHkgY3JlYXRlIG9uZQorICAgIC8vIGluIHRoZSBQ
YWdlIGFuZCBpbiBhIGZldyBvbGQgU1BJIGxvY2F0aW9ucyB3aGVyZSB3ZSBoYXZlIG5vIFBhZ2Uu
CisgICAgc3RhdGljIFJlZjxQYWdlU2NoZW1lUmVnaXN0cnk+IGNyZWF0ZSgpIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgUGFnZVNjaGVtZVJlZ2lzdHJ5KTsgfQorcHJpdmF0ZToKKyAgICBXRUJDT1JF
X0VYUE9SVCBQYWdlU2NoZW1lUmVnaXN0cnkoKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVJlc291cmNl
VGltaW5nLmNwcAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QZXJm
b3JtYW5jZVJlc291cmNlVGltaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsMTAg
QEAgc3RhdGljIGRvdWJsZSBtb25vdG9uaWNUaW1lVG9Eb2N1bWVudE1pbAogCiBzdGF0aWMgYm9v
bCBwYXNzZXNUaW1pbmdBbGxvd0NoZWNrKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
LCBEb2N1bWVudCogcmVxdWVzdGluZ0RvY3VtZW50KQogewotICAgIFJlZlB0cjxTZWN1cml0eU9y
aWdpbj4gcmVzb3VyY2VPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHJlc3BvbnNlLnVy
bCgpKTsKKyAgICBpZiAoIXJlcXVlc3RpbmdEb2N1bWVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgUmVmPFNlY3VyaXR5T3JpZ2luPiByZXNvdXJjZU9yaWdpbiA9IFNlY3VyaXR5T3Jp
Z2luOjpjcmVhdGUocmVzcG9uc2UudXJsKCksIHJlcXVlc3RpbmdEb2N1bWVudC0+c2NoZW1lUmVn
aXN0cnkoKSk7CiAgICAgaWYgKHJlc291cmNlT3JpZ2luLT5pc1NhbWVTY2hlbWVIb3N0UG9ydChy
ZXF1ZXN0aW5nRG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAJKHJldmlzaW9u
IDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03OCw3ICs3OCw3IEBAIHN0YXRpYyBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+
IGdldENhY2hlZE8KICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotc3RhdGljIGJvb2wgc2hvdWxk
VHJlYXRBc1VuaXF1ZU9yaWdpbihjb25zdCBVUkwmIHVybCkKK3N0YXRpYyBib29sIHNob3VsZFRy
ZWF0QXNVbmlxdWVPcmlnaW4oY29uc3QgVVJMJiB1cmwsIGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3Ry
eSYpCiB7CiAgICAgaWYgKCF1cmwuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAg
LTk0LDYgKzk0LDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkVHJlYXRBc1VuaXF1ZU9yaWdpbihjbwog
ICAgIGlmIChzY2hlbWVSZXF1aXJlc0hvc3QoaW5uZXJVUkwpICYmIGlubmVyVVJMLmhvc3QoKS5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCisgICAgLy8gRklYTUU6IFVzZSB0aGUg
UGFnZVNjaGVtZVJlZ2lzdHJ5IGluc3RlYWQgb2YgdGhlIGdsb2JhbCBTY2hlbWVSZWdpc3RyeS4K
ICAgICBpZiAoU2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNOb0FjY2Vzcyhp
bm5lclVSTC5wcm90b2NvbCgpLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSkpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogCkBAIC0xNTUsMTIgKzE1NiwxMiBAQCBTZWN1cml0eU9yaWdpbjo6U2VjdXJp
dHlPcmlnaW4oY29uc3QgU2VjCiB7CiB9CiAKLVJlZjxTZWN1cml0eU9yaWdpbj4gU2VjdXJpdHlP
cmlnaW46OmNyZWF0ZShjb25zdCBVUkwmIHVybCkKK1JlZjxTZWN1cml0eU9yaWdpbj4gU2VjdXJp
dHlPcmlnaW46OmNyZWF0ZShjb25zdCBVUkwmIHVybCwgY29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5
JiByZWdpc3RyeSkKIHsKICAgICBpZiAoUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBjYWNoZWRPcmln
aW4gPSBnZXRDYWNoZWRPcmlnaW4odXJsKSkKICAgICAgICAgcmV0dXJuIGNhY2hlZE9yaWdpbi5y
ZWxlYXNlTm9uTnVsbCgpOwogCi0gICAgaWYgKHNob3VsZFRyZWF0QXNVbmlxdWVPcmlnaW4odXJs
KSkgeworICAgIGlmIChzaG91bGRUcmVhdEFzVW5pcXVlT3JpZ2luKHVybCwgcmVnaXN0cnkpKSB7
CiAgICAgICAgIFJlZjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luKGFkb3B0UmVmKCpuZXcgU2VjdXJp
dHlPcmlnaW4pKTsKIAogICAgICAgICBpZiAodXJsLnByb3RvY29sSXMoImZpbGUiKSkgewpAQCAt
MjY5LDcgKzI3MCw3IEBAIGJvb2wgU2VjdXJpdHlPcmlnaW46OnBhc3Nlc0ZpbGVDaGVjayhjb24K
ICAgICByZXR1cm4gKG1fZmlsZVBhdGggPT0gb3RoZXItPm1fZmlsZVBhdGgpOwogfQogCi1ib29s
IFNlY3VyaXR5T3JpZ2luOjpjYW5SZXF1ZXN0KGNvbnN0IFVSTCYgdXJsKSBjb25zdAorYm9vbCBT
ZWN1cml0eU9yaWdpbjo6Y2FuUmVxdWVzdChjb25zdCBVUkwmIHVybCwgY29uc3QgUGFnZVNjaGVt
ZVJlZ2lzdHJ5JiBzY2hlbWVSZWdpc3RyeSkgY29uc3QKIHsKICAgICBpZiAobV91bml2ZXJzYWxB
Y2Nlc3MpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjgwLDcgKzI4MSw3IEBAIGJvb2wgU2Vj
dXJpdHlPcmlnaW46OmNhblJlcXVlc3QoY29uc3QgVVIKICAgICBpZiAoaXNVbmlxdWUoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgUmVmPFNlY3VyaXR5T3JpZ2luPiB0YXJnZXRPcmln
aW4oU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh1cmwpKTsKKyAgICBSZWY8U2VjdXJpdHlPcmlnaW4+
IHRhcmdldE9yaWdpbihTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHVybCwgc2NoZW1lUmVnaXN0cnkp
KTsKIAogICAgIGlmICh0YXJnZXRPcmlnaW4tPmlzVW5pcXVlKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTI5MCw3ICsyOTEsNyBAQCBib29sIFNlY3VyaXR5T3JpZ2luOjpjYW5SZXF1ZXN0
KGNvbnN0IFVSCiAgICAgaWYgKGlzU2FtZVNjaGVtZUhvc3RQb3J0KCZ0YXJnZXRPcmlnaW4uZ2V0
KCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChTZWN1cml0eVBvbGljeTo6aXNB
Y2Nlc3NXaGl0ZUxpc3RlZCh0aGlzLCAmdGFyZ2V0T3JpZ2luLmdldCgpKSkKKyAgICBpZiAoU2Vj
dXJpdHlQb2xpY3k6OmlzQWNjZXNzV2hpdGVMaXN0ZWQoKnRoaXMsICZ0YXJnZXRPcmlnaW4uZ2V0
KCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiBmYWxzZTsKQEAgLTMyNCw3
ICszMjUsNyBAQCBzdGF0aWMgYm9vbCBpc0ZlZWRXaXRoTmVzdGVkUHJvdG9jb2xJbkhUCiAgICAg
ICAgIHx8IHVybFN0cmluZy5zdGFydHNXaXRoKCJmZWVkc2VhcmNoOmh0dHA6IiwgZmFsc2UpIHx8
IHVybFN0cmluZy5zdGFydHNXaXRoKCJmZWVkc2VhcmNoOmh0dHBzOiIsIGZhbHNlKTsKIH0KIAot
Ym9vbCBTZWN1cml0eU9yaWdpbjo6Y2FuRGlzcGxheShjb25zdCBVUkwmIHVybCkgY29uc3QKK2Jv
b2wgU2VjdXJpdHlPcmlnaW46OmNhbkRpc3BsYXkoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFBhZ2VT
Y2hlbWVSZWdpc3RyeSYgc2NoZW1lUmVnaXN0cnkpIGNvbnN0CiB7CiAgICAgaWYgKG1fdW5pdmVy
c2FsQWNjZXNzKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTMzNSwxMyArMzM2LDEzIEBAIGJv
b2wgU2VjdXJpdHlPcmlnaW46OmNhbkRpc3BsYXkoY29uc3QgVVIKICAgICBTdHJpbmcgcHJvdG9j
b2wgPSB1cmwucHJvdG9jb2woKS50b1N0cmluZygpOwogCiAgICAgaWYgKFNjaGVtZVJlZ2lzdHJ5
OjpjYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdChwcm90b2NvbCkpCi0gICAgICAgIHJldHVybiBj
YW5SZXF1ZXN0KHVybCk7CisgICAgICAgIHJldHVybiBjYW5SZXF1ZXN0KHVybCwgc2NoZW1lUmVn
aXN0cnkpOwogCiAgICAgaWYgKFNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFz
RGlzcGxheUlzb2xhdGVkKHByb3RvY29sKSkKLSAgICAgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdB
U0NJSUNhc2UobV9wcm90b2NvbCwgcHJvdG9jb2wpIHx8IFNlY3VyaXR5UG9saWN5Ojppc0FjY2Vz
c1RvVVJMV2hpdGVMaXN0ZWQodGhpcywgdXJsKTsKKyAgICAgICAgcmV0dXJuIGVxdWFsSWdub3Jp
bmdBU0NJSUNhc2UobV9wcm90b2NvbCwgcHJvdG9jb2wpIHx8IFNlY3VyaXR5UG9saWN5Ojppc0Fj
Y2Vzc1RvVVJMV2hpdGVMaXN0ZWQoKnRoaXMsIHVybCwgc2NoZW1lUmVnaXN0cnkpOwogCiAgICAg
aWYgKFNlY3VyaXR5UG9saWN5OjpyZXN0cmljdEFjY2Vzc1RvTG9jYWwoKSAmJiBTY2hlbWVSZWdp
c3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0xvY2FsKHByb3RvY29sKSkKLSAgICAgICAgcmV0
dXJuIGNhbkxvYWRMb2NhbFJlc291cmNlcygpIHx8IFNlY3VyaXR5UG9saWN5Ojppc0FjY2Vzc1Rv
VVJMV2hpdGVMaXN0ZWQodGhpcywgdXJsKTsKKyAgICAgICAgcmV0dXJuIGNhbkxvYWRMb2NhbFJl
c291cmNlcygpIHx8IFNlY3VyaXR5UG9saWN5Ojppc0FjY2Vzc1RvVVJMV2hpdGVMaXN0ZWQoKnRo
aXMsIHVybCwgc2NoZW1lUmVnaXN0cnkpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC00OTgs
MTQgKzQ5OSwxNCBAQCBib29sIG9yaWdpbnNNYXRjaChjb25zdCBTZWN1cml0eU9yaWdpbiogCiAg
ICAgcmV0dXJuIG9yaWdpbnNNYXRjaCgqb3JpZ2luMSwgKm9yaWdpbjIpOwogfQogCi1SZWY8U2Vj
dXJpdHlPcmlnaW4+IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgb3JpZ2luU3RyaW5nKQorUmVmPFNlY3VyaXR5T3JpZ2luPiBTZWN1cml0eU9yaWdpbjo6Y3Jl
YXRlRnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIG9yaWdpblN0cmluZywgY29uc3QgUGFnZVNjaGVt
ZVJlZ2lzdHJ5JiBzY2hlbWVSZWdpc3RyeSkKIHsKLSAgICByZXR1cm4gU2VjdXJpdHlPcmlnaW46
OmNyZWF0ZShVUkwoVVJMKCksIG9yaWdpblN0cmluZykpOworICAgIHJldHVybiBTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlKFVSTChVUkwoKSwgb3JpZ2luU3RyaW5nKSwgc2NoZW1lUmVnaXN0cnkpOwog
fQogCiBzdGF0aWMgY29uc3QgY2hhciBzZXBhcmF0b3JDaGFyYWN0ZXIgPSAnXyc7CiAKLVJlZlB0
cjxTZWN1cml0eU9yaWdpbj4gU2VjdXJpdHlPcmlnaW46Om1heWJlQ3JlYXRlRnJvbURhdGFiYXNl
SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGRhdGFiYXNlSWRlbnRpZmllcikKK1JlZlB0cjxTZWN1
cml0eU9yaWdpbj4gU2VjdXJpdHlPcmlnaW46Om1heWJlQ3JlYXRlRnJvbURhdGFiYXNlSWRlbnRp
Zmllcihjb25zdCBTdHJpbmcmIGRhdGFiYXNlSWRlbnRpZmllciwgY29uc3QgUGFnZVNjaGVtZVJl
Z2lzdHJ5JiBzY2hlbWVSZWdpc3RyeSkKIHsKICAgICAvLyBNYWtlIHN1cmUgdGhlcmUncyBhIGZp
cnN0IHNlcGFyYXRvcgogICAgIHNpemVfdCBzZXBhcmF0b3IxID0gZGF0YWJhc2VJZGVudGlmaWVy
LmZpbmQoc2VwYXJhdG9yQ2hhcmFjdGVyKTsKQEAgLTUzNywyMiArNTM4LDIyIEBAIFJlZlB0cjxT
ZWN1cml0eU9yaWdpbj4gU2VjdXJpdHlPcmlnaW46Om0KICAgICBTdHJpbmcgaG9zdCA9IGRhdGFi
YXNlSWRlbnRpZmllci5zdWJzdHJpbmcoc2VwYXJhdG9yMSArIDEsIHNlcGFyYXRvcjIgLSBzZXBh
cmF0b3IxIC0gMSk7CiAgICAgCiAgICAgaG9zdCA9IGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyho
b3N0KTsKLSAgICBhdXRvIG9yaWdpbiA9IGNyZWF0ZShVUkwoVVJMKCksIHByb3RvY29sICsgIjov
LyIgKyBob3N0ICsgIi8iKSk7CisgICAgYXV0byBvcmlnaW4gPSBjcmVhdGUoVVJMKFVSTCgpLCBw
cm90b2NvbCArICI6Ly8iICsgaG9zdCArICIvIiksIHNjaGVtZVJlZ2lzdHJ5KTsKICAgICBvcmln
aW4tPm1fcG9ydCA9IHBvcnQ7CiAgICAgcmV0dXJuIFdURk1vdmUob3JpZ2luKTsKIH0KIAotUmVm
PFNlY3VyaXR5T3JpZ2luPiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbURhdGFiYXNlSWRlbnRp
Zmllcihjb25zdCBTdHJpbmcmIGRhdGFiYXNlSWRlbnRpZmllcikKK1JlZjxTZWN1cml0eU9yaWdp
bj4gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21EYXRhYmFzZUlkZW50aWZpZXIoY29uc3QgU3Ry
aW5nJiBkYXRhYmFzZUlkZW50aWZpZXIsIGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3RyeSYgc2NoZW1l
UmVnaXN0cnkpCiB7Ci0gICAgaWYgKFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gbWF5
YmVDcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyKGRhdGFiYXNlSWRlbnRpZmllcikpCisgICAg
aWYgKFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gbWF5YmVDcmVhdGVGcm9tRGF0YWJh
c2VJZGVudGlmaWVyKGRhdGFiYXNlSWRlbnRpZmllciwgc2NoZW1lUmVnaXN0cnkpKQogICAgICAg
ICByZXR1cm4gb3JpZ2luLnJlbGVhc2VOb25OdWxsKCk7Ci0gICAgcmV0dXJuIGNyZWF0ZShVUkwo
KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VjdXJpdHlPcmlnaW4pOwogfQogCi1SZWY8
U2VjdXJpdHlPcmlnaW4+IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBwcm90
b2NvbCwgY29uc3QgU3RyaW5nJiBob3N0LCBPcHRpb25hbDx1aW50MTZfdD4gcG9ydCkKK1JlZjxT
ZWN1cml0eU9yaWdpbj4gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShjb25zdCBTdHJpbmcmIHByb3Rv
Y29sLCBjb25zdCBTdHJpbmcmIGhvc3QsIE9wdGlvbmFsPHVpbnQxNl90PiBwb3J0LCBjb25zdCBQ
YWdlU2NoZW1lUmVnaXN0cnkmIHNjaGVtZVJlZ2lzdHJ5KQogewogICAgIFN0cmluZyBkZWNvZGVk
SG9zdCA9IGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyhob3N0KTsKLSAgICBhdXRvIG9yaWdpbiA9
IGNyZWF0ZShVUkwoVVJMKCksIHByb3RvY29sICsgIjovLyIgKyBob3N0ICsgIi8iKSk7CisgICAg
YXV0byBvcmlnaW4gPSBjcmVhdGUoVVJMKFVSTCgpLCBwcm90b2NvbCArICI6Ly8iICsgaG9zdCAr
ICIvIiksIHNjaGVtZVJlZ2lzdHJ5KTsKICAgICBvcmlnaW4tPm1fcG9ydCA9IHBvcnQ7CiAgICAg
cmV0dXJuIG9yaWdpbjsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmln
aW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgJ
KHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4u
aAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKK2NsYXNzIFBhZ2VTY2hlbWVSZWdpc3RyeTsKIGNsYXNzIFVSTDsKIAogY2xhc3MgU2VjdXJp
dHlPcmlnaW4gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2VjdXJpdHlPcmlnaW4+IHsK
QEAgLTQ5LDE3ICs1MCwxNyBAQCBwdWJsaWM6CiAgICAgICAgIEJsb2NrQWxsU3RvcmFnZQogICAg
IH07CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNlY3VyaXR5T3JpZ2luPiBjcmVh
dGUoY29uc3QgVVJMJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTZWN1cml0eU9y
aWdpbj4gY3JlYXRlKGNvbnN0IFVSTCYsIGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3RyeSYpOwogICAg
IHN0YXRpYyBSZWY8U2VjdXJpdHlPcmlnaW4+IGNyZWF0ZVVuaXF1ZSgpOwogCi0gICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFJlZjxTZWN1cml0eU9yaWdpbj4gY3JlYXRlRnJvbURhdGFiYXNlSWRl
bnRpZmllcihjb25zdCBTdHJpbmcmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNl
Y3VyaXR5T3JpZ2luPiBjcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYs
IGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3RyeSYpOwogICAgIC8vIEFsdGVybmF0ZSBmb3JtIG9mIGNy
ZWF0ZUZyb21EYXRhYmFzZUlkZW50aWZpZXIgdGhhdCByZXR1cm5zIGEgbnVsbHB0ciBvbiBmYWls
dXJlLCBpbnN0ZWFkIG9mIGFuIGVtcHR5IG9yaWdpbi4KICAgICAvLyBGSVhNRTogTWFueSB1c2Vy
cyBvZiBjcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyIHNlZW0gdG8gZXhwZWN0IG1heWJlQ3Jl
YXRlRnJvbURhdGFiYXNlSWRlbnRpZmllciBiZWhhdmlvciwKICAgICAvLyBidXQgdGhleSBhcmVu
J3QgZ2V0dGluZyBpdCBzbyB0aGV5IG1pZ2h0IGJlIGJ1Z2d5LgotICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG1heWJlQ3JlYXRlRnJvbURhdGFiYXNlSWRl
bnRpZmllcihjb25zdCBTdHJpbmcmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRy
PFNlY3VyaXR5T3JpZ2luPiBtYXliZUNyZWF0ZUZyb21EYXRhYmFzZUlkZW50aWZpZXIoY29uc3Qg
U3RyaW5nJiwgY29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5Jik7CiAKLSAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVmPFNlY3VyaXR5T3JpZ2luPiBjcmVhdGVGcm9tU3RyaW5nKGNvbnN0IFN0cmlu
ZyYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2VjdXJpdHlPcmlnaW4+IGNyZWF0
ZShjb25zdCBTdHJpbmcmIHByb3RvY29sLCBjb25zdCBTdHJpbmcmIGhvc3QsIE9wdGlvbmFsPHVp
bnQxNl90PiBwb3J0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNlY3VyaXR5T3Jp
Z2luPiBjcmVhdGVGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYsIGNvbnN0IFBhZ2VTY2hlbWVSZWdp
c3RyeSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2VjdXJpdHlPcmlnaW4+IGNy
ZWF0ZShjb25zdCBTdHJpbmcmIHByb3RvY29sLCBjb25zdCBTdHJpbmcmIGhvc3QsIE9wdGlvbmFs
PHVpbnQxNl90PiBwb3J0LCBjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnkmKTsKIAogICAgIC8vIFNv
bWUgVVJMIHNjaGVtZXMgdXNlIG5lc3RlZCBVUkxzIGZvciB0aGVpciBzZWN1cml0eSBjb250ZXh0
LiBGb3IgZXhhbXBsZSwKICAgICAvLyBmaWxlc3lzdGVtIFVSTHMgbG9vayBsaWtlIHRoZSBmb2xs
b3dpbmc6CkBAIC0xMDMsNyArMTA0LDcgQEAgcHVibGljOgogICAgIC8vIFJldHVybnMgdHJ1ZSBp
ZiB0aGlzIFNlY3VyaXR5T3JpZ2luIGNhbiByZWFkIGNvbnRlbnQgcmV0cmlldmVkIGZyb20KICAg
ICAvLyB0aGUgZ2l2ZW4gVVJMLiBGb3IgZXhhbXBsZSwgY2FsbCB0aGlzIGZ1bmN0aW9uIGJlZm9y
ZSBpc3N1aW5nCiAgICAgLy8gWE1MSHR0cFJlcXVlc3RzLgotICAgIGJvb2wgY2FuUmVxdWVzdChj
b25zdCBVUkwmKSBjb25zdDsKKyAgICBib29sIGNhblJlcXVlc3QoY29uc3QgVVJMJiwgY29uc3Qg
UGFnZVNjaGVtZVJlZ2lzdHJ5JikgY29uc3Q7CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhp
cyBTZWN1cml0eU9yaWdpbiBjYW4gcmVjZWl2ZSBkcmFnIGNvbnRlbnQgZnJvbSB0aGUKICAgICAv
LyBpbml0aWF0b3IuIEZvciBleGFtcGxlLCBjYWxsIHRoaXMgZnVuY3Rpb24gYmVmb3JlIGFsbG93
aW5nIGNvbnRlbnQgdG8gYmUKQEAgLTExMyw3ICsxMTQsNyBAQCBwdWJsaWM6CiAgICAgLy8gUmV0
dXJucyB0cnVlIGlmIHxkb2N1bWVudHwgY2FuIGRpc3BsYXkgY29udGVudCBmcm9tIHRoZSBnaXZl
biBVUkwgKGUuZy4sCiAgICAgLy8gaW4gYW4gaWZyYW1lIG9yIGFzIGFuIGltYWdlKS4gRm9yIGV4
YW1wbGUsIHdlYiBzaXRlcyBnZW5lcmFsbHkgY2Fubm90CiAgICAgLy8gZGlzcGxheSBjb250ZW50
IGZyb20gdGhlIHVzZXIncyBmaWxlcyBzeXN0ZW0uCi0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBj
YW5EaXNwbGF5KGNvbnN0IFVSTCYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY2Fu
RGlzcGxheShjb25zdCBVUkwmLCBjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnkmKSBjb25zdDsKIAog
ICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIFNlY3VyaXR5T3JpZ2luIGNhbiBsb2FkIGxvY2Fs
IHJlc291cmNlcywgc3VjaAogICAgIC8vIGFzIGltYWdlcywgaWZyYW1lcywgYW5kIHN0eWxlIHNo
ZWV0cywgYW5kIGNhbiBsaW5rIHRvIGxvY2FsIFVSTHMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
YWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5
LDkgKzY5LDkgQEAgU2VjdXJpdHlPcmlnaW5EYXRhIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZgogICAg
IHJldHVybiBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqb3JpZ2luKTsK
IH0KIAotUmVmPFNlY3VyaXR5T3JpZ2luPiBTZWN1cml0eU9yaWdpbkRhdGE6OnNlY3VyaXR5T3Jp
Z2luKCkgY29uc3QKK1JlZjxTZWN1cml0eU9yaWdpbj4gU2VjdXJpdHlPcmlnaW5EYXRhOjpzZWN1
cml0eU9yaWdpbihjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnkmIHNjaGVtZVJlZ2lzdHJ5KSBjb25z
dAogewotICAgIHJldHVybiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHByb3RvY29sLmlzb2xhdGVk
Q29weSgpLCBob3N0Lmlzb2xhdGVkQ29weSgpLCBwb3J0KTsKKyAgICByZXR1cm4gU2VjdXJpdHlP
cmlnaW46OmNyZWF0ZShwcm90b2NvbC5pc29sYXRlZENvcHkoKSwgaG9zdC5pc29sYXRlZENvcHko
KSwgcG9ydCwgc2NoZW1lUmVnaXN0cnkpOwogfQogCiBTZWN1cml0eU9yaWdpbkRhdGEgU2VjdXJp
dHlPcmlnaW5EYXRhOjppc29sYXRlZENvcHkoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUv
cGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
YWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5oCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxMyAr
MzAsMTQgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRnJhbWU7CitjbGFzcyBQYWdl
U2NoZW1lUmVnaXN0cnk7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIAogc3RydWN0IFNlY3VyaXR5
T3JpZ2luRGF0YSB7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFNlY3VyaXR5T3JpZ2luRGF0
YSBmcm9tU2VjdXJpdHlPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mKTsKICAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgU2VjdXJpdHlPcmlnaW5EYXRhIGZyb21GcmFtZShGcmFtZSopOwogCi0g
ICAgV0VCQ09SRV9FWFBPUlQgUmVmPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbigpIGNv
bnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmln
aW4oY29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5JikgY29uc3Q7CiAKICAgICAvLyBGSVhNRSA8cmRh
cjovLzkwMTgzODY+OiBXZSBzaG91bGQgYmUgc2VuZGluZyBtb3JlIHN0YXRlIGFjcm9zcyB0aGUg
d2lyZSB0aGFuIGp1c3QgdGhlIHByb3RvY29sLAogICAgIC8vIGhvc3QsIGFuZCBwb3J0LgpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAJKHJldmlzaW9uIDIwODM5OCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02Nyw3ICs2Nyw3IEBAIGJvb2wgU2VjdXJpdHlQb2xpY3k6OnNob3VsZEhpZGVSZWZlcnJl
cigKICAgICByZXR1cm4gIVVSTElzU2VjdXJlVVJMOwogfQogCi1TdHJpbmcgU2VjdXJpdHlQb2xp
Y3k6OmdlbmVyYXRlUmVmZXJyZXJIZWFkZXIoUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xpY3ks
IGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKQorU3RyaW5nIFNlY3VyaXR5
UG9saWN5OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVyKFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9s
aWN5LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgY29uc3QgUGFnZVNj
aGVtZVJlZ2lzdHJ5JiBzY2hlbWVSZWdpc3RyeSkKIHsKICAgICBBU1NFUlQocmVmZXJyZXIgPT0g
VVJMKFVSTCgpLCByZWZlcnJlcikuc3RyaXBwZWRGb3JVc2VBc1JlZmVycmVyKCkpOwogCkBAIC04
Myw3ICs4Myw3IEBAIFN0cmluZyBTZWN1cml0eVBvbGljeTo6Z2VuZXJhdGVSZWZlcnJlckgKICAg
ICBjYXNlIFJlZmVycmVyUG9saWN5OjpBbHdheXM6CiAgICAgICAgIHJldHVybiByZWZlcnJlcjsK
ICAgICBjYXNlIFJlZmVycmVyUG9saWN5OjpPcmlnaW46IHsKLSAgICAgICAgU3RyaW5nIG9yaWdp
biA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHJlZmVycmVyKS0+dG9TdHJpbmco
KTsKKyAgICAgICAgU3RyaW5nIG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3Ry
aW5nKHJlZmVycmVyLCBzY2hlbWVSZWdpc3RyeSktPnRvU3RyaW5nKCk7CiAgICAgICAgIGlmIChv
cmlnaW4gPT0gIm51bGwiKQogICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgICAgICAv
LyBBIHNlY3VyaXR5IG9yaWdpbiBpcyBub3QgYSBjYW5vbmljYWwgVVJMIGFzIGl0IGxhY2tzIGEg
cGF0aC4gQWRkIC8KQEAgLTExMiw5ICsxMTIsOSBAQCBib29sIFNlY3VyaXR5UG9saWN5OjphbGxv
d1N1YnN0aXR1dGVEYXRhCiAgICAgcmV0dXJuIGxvY2FsTG9hZFBvbGljeSAhPSBTZWN1cml0eVBv
bGljeTo6QWxsb3dMb2NhbExvYWRzRm9yTG9jYWxPbmx5OwogfQogCi1ib29sIFNlY3VyaXR5UG9s
aWN5Ojppc0FjY2Vzc1doaXRlTGlzdGVkKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBhY3RpdmVPcmln
aW4sIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0YXJnZXRPcmlnaW4pCitib29sIFNlY3VyaXR5UG9s
aWN5Ojppc0FjY2Vzc1doaXRlTGlzdGVkKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBhY3RpdmVPcmln
aW4sIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0YXJnZXRPcmlnaW4pCiB7Ci0gICAgaWYgKE9yaWdp
bkFjY2Vzc1doaXRlTGlzdCogbGlzdCA9IG9yaWdpbkFjY2Vzc01hcCgpLmdldChhY3RpdmVPcmln
aW4tPnRvU3RyaW5nKCkpKSB7CisgICAgaWYgKE9yaWdpbkFjY2Vzc1doaXRlTGlzdCogbGlzdCA9
IG9yaWdpbkFjY2Vzc01hcCgpLmdldChhY3RpdmVPcmlnaW4udG9TdHJpbmcoKSkpIHsKICAgICAg
ICAgZm9yIChhdXRvJiBlbnRyeSA6ICpsaXN0KSB7CiAgICAgICAgICAgICBpZiAoZW50cnkubWF0
Y2hlc09yaWdpbigqdGFyZ2V0T3JpZ2luKSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
QEAgLTEyMyw5ICsxMjMsOSBAQCBib29sIFNlY3VyaXR5UG9saWN5Ojppc0FjY2Vzc1doaXRlTGlz
dGVkCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFNlY3VyaXR5UG9saWN5Ojppc0FjY2Vz
c1RvVVJMV2hpdGVMaXN0ZWQoY29uc3QgU2VjdXJpdHlPcmlnaW4qIGFjdGl2ZU9yaWdpbiwgY29u
c3QgVVJMJiB1cmwpCitib29sIFNlY3VyaXR5UG9saWN5Ojppc0FjY2Vzc1RvVVJMV2hpdGVMaXN0
ZWQoY29uc3QgU2VjdXJpdHlPcmlnaW4mIGFjdGl2ZU9yaWdpbiwgY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFBhZ2VTY2hlbWVSZWdpc3RyeSYgc2NoZW1lUmVnaXN0cnkpCiB7Ci0gICAgUmVmPFNlY3Vy
aXR5T3JpZ2luPiB0YXJnZXRPcmlnaW4oU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh1cmwpKTsKKyAg
ICBSZWY8U2VjdXJpdHlPcmlnaW4+IHRhcmdldE9yaWdpbihTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
KHVybCwgc2NoZW1lUmVnaXN0cnkpKTsKICAgICByZXR1cm4gaXNBY2Nlc3NXaGl0ZUxpc3RlZChh
Y3RpdmVPcmlnaW4sICZ0YXJnZXRPcmlnaW4uZ2V0KCkpOwogfQogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9TZWN1cml0eVBvbGljeS5oCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1NlY3VyaXR5UG9saWN5LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBQYWdlU2NoZW1lUmVnaXN0cnk7CiBjbGFz
cyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFVSTDsKIApAQCAtNDUsNyArNDYsNyBAQCBwdWJsaWM6
CiAgICAgLy8gUmV0dXJucyB0aGUgcmVmZXJyZXIgbW9kaWZpZWQgYWNjb3JkaW5nIHRvIHRoZSBy
ZWZlcnJlciBwb2xpY3kgZm9yIGEKICAgICAvLyBuYXZpZ2F0aW9uIHRvIGEgZ2l2ZW4gVVJMLiBJ
ZiB0aGUgcmVmZXJyZXIgcmV0dXJuZWQgaXMgZW1wdHksIHRoZQogICAgIC8vIHJlZmVycmVyIGhl
YWRlciBzaG91bGQgYmUgb21pdHRlZC4KLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5n
IGdlbmVyYXRlUmVmZXJyZXJIZWFkZXIoUmVmZXJyZXJQb2xpY3ksIGNvbnN0IFVSTCYsIGNvbnN0
IFN0cmluZyYgcmVmZXJyZXIpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgZ2Vu
ZXJhdGVSZWZlcnJlckhlYWRlcihSZWZlcnJlclBvbGljeSwgY29uc3QgVVJMJiwgY29uc3QgU3Ry
aW5nJiByZWZlcnJlciwgY29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5Jik7CiAKICAgICBlbnVtIExv
Y2FsTG9hZFBvbGljeSB7CiAgICAgICAgIEFsbG93TG9jYWxMb2Fkc0ZvckFsbCwgLy8gTm8gcmVz
dHJpY3Rpb24gb24gbG9jYWwgbG9hZHMuCkBAIC02MSw4ICs2Miw4IEBAIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCByZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRy
eShjb25zdCBTZWN1cml0eU9yaWdpbiYgc291cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIGRlc3Rp
bmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Eb21haW4sIGJvb2wgYWxs
b3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lk
IHJlc2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0cygpOwogCi0gICAgc3RhdGljIGJvb2wgaXNBY2Nl
c3NXaGl0ZUxpc3RlZChjb25zdCBTZWN1cml0eU9yaWdpbiogYWN0aXZlT3JpZ2luLCBjb25zdCBT
ZWN1cml0eU9yaWdpbiogdGFyZ2V0T3JpZ2luKTsKLSAgICBzdGF0aWMgYm9vbCBpc0FjY2Vzc1Rv
VVJMV2hpdGVMaXN0ZWQoY29uc3QgU2VjdXJpdHlPcmlnaW4qIGFjdGl2ZU9yaWdpbiwgY29uc3Qg
VVJMJik7CisgICAgc3RhdGljIGJvb2wgaXNBY2Nlc3NXaGl0ZUxpc3RlZChjb25zdCBTZWN1cml0
eU9yaWdpbiYgYWN0aXZlT3JpZ2luLCBjb25zdCBTZWN1cml0eU9yaWdpbiogdGFyZ2V0T3JpZ2lu
KTsKKyAgICBzdGF0aWMgYm9vbCBpc0FjY2Vzc1RvVVJMV2hpdGVMaXN0ZWQoY29uc3QgU2VjdXJp
dHlPcmlnaW4mIGFjdGl2ZU9yaWdpbiwgY29uc3QgVVJMJiwgY29uc3QgUGFnZVNjaGVtZVJlZ2lz
dHJ5Jik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAJKHJldmlzaW9uIDIw
ODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvd1NoZWxsLmgiCiAjaW5jbHVk
ZSAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCisjaW5jbHVkZSAiUGFnZVNjaGVtZVJlZ2lzdHJ5
LmgiCiAjaW5jbHVkZSAiUGFyc2luZ1V0aWxpdGllcy5oIgogI2luY2x1ZGUgIlBpbmdMb2FkZXIu
aCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKQEAgLTkyLDYgKzkzLDcgQEAgc3RhdGlj
IFN0cmluZyBjb25zb2xlTWVzc2FnZUZvclZpb2xhdGlvbgogQ29udGVudFNlY3VyaXR5UG9saWN5
OjpDb250ZW50U2VjdXJpdHlQb2xpY3koU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCkKICAgICA6IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgmc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCkKICAgICAsIG1fc2FuZGJveEZsYWdzKFNhbmRib3hOb25lKQorICAgICwg
bV9zY2hlbWVSZWdpc3RyeShzY3JpcHRFeGVjdXRpb25Db250ZXh0LnNjaGVtZVJlZ2lzdHJ5KCkp
CiB7CiAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuc2VjdXJpdHlPcmlnaW4oKSk7
CiAgICAgdXBkYXRlU291cmNlU2VsZigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5zZWN1cml0eU9y
aWdpbigpKTsKQEAgLTEwMCw2ICsxMDIsNyBAQCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkNvbnRl
bnRTZWN1cml0eVBvCiBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkNvbnRlbnRTZWN1cml0eVBvbGlj
eShjb25zdCBTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IEZyYW1lKiBmcmFt
ZSkKICAgICA6IG1fZnJhbWUoZnJhbWUpCiAgICAgLCBtX3NhbmRib3hGbGFncyhTYW5kYm94Tm9u
ZSkKKyAgICAsIG1fc2NoZW1lUmVnaXN0cnkoZnJhbWUgJiYgZnJhbWUtPnBhZ2UoKSA/IGZyYW1l
LT5wYWdlKCktPnNjaGVtZVJlZ2lzdHJ5KCkgOiBQYWdlU2NoZW1lUmVnaXN0cnk6OmNyZWF0ZSgp
KQogewogICAgIHVwZGF0ZVNvdXJjZVNlbGYoc2VjdXJpdHlPcmlnaW4pOwogfQpAQCAtNTYzLDcg
KzU2Niw4IEBAIHN0YXRpYyBTdHJpbmcgc3RyaXBVUkxGb3JVc2VJblJlcG9ydChEb2MKICAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwogICAgIGlmICghdXJsLmlzSGllcmFyY2hpY2FsKCkgfHwgdXJs
LnByb3RvY29sSXMoImZpbGUiKSkKICAgICAgICAgcmV0dXJuIHVybC5wcm90b2NvbCgpLnRvU3Ry
aW5nKCk7Ci0gICAgcmV0dXJuIGRvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCktPmNhblJlcXVlc3Qo
dXJsKSA/IHVybC5zdHJpcHBlZEZvclVzZUFzUmVmZXJyZXIoKSA6IFNlY3VyaXR5T3JpZ2luOjpj
cmVhdGUodXJsKS5nZXQoKS50b1N0cmluZygpOworICAgIGNvbnN0IGF1dG8mIHNjaGVtZVJlZ2lz
dHJ5ID0gZG9jdW1lbnQuc2NoZW1lUmVnaXN0cnkoKTsKKyAgICByZXR1cm4gZG9jdW1lbnQuc2Vj
dXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdCh1cmwsIHNjaGVtZVJlZ2lzdHJ5KSA/IHVybC5zdHJp
cHBlZEZvclVzZUFzUmVmZXJyZXIoKSA6IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodXJsLCBzY2hl
bWVSZWdpc3RyeSkuZ2V0KCkudG9TdHJpbmcoKTsKIH0KIAogdm9pZCBDb250ZW50U2VjdXJpdHlQ
b2xpY3k6OnJlcG9ydFZpb2xhdGlvbihjb25zdCBTdHJpbmcmIHZpb2xhdGVkRGlyZWN0aXZlLCBj
b25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUmIGVmZmVjdGl2ZVZpb2xhdGVkRGly
ZWN0aXZlLCBjb25zdCBVUkwmIGJsb2NrZWRVUkwsIGNvbnN0IFN0cmluZyYgY29uc29sZU1lc3Nh
Z2UsIEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSkgY29uc3QKQEAgLTc4Myw3ICs3ODcsNyBAQCB2b2lk
IENvbnRlbnRTZWN1cml0eVBvbGljeTo6dXBncmFkZUluc2VjCiAgICAgaWYgKCF1cmwucHJvdG9j
b2xJcygiaHR0cCIpICYmICF1cmwucHJvdG9jb2xJcygid3MiKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgYm9vbCB1cGdyYWRlUmVxdWVzdCA9IG1faW5zZWN1cmVOYXZpZ2F0aW9uUmVxdWVzdHNU
b1VwZ3JhZGUuY29udGFpbnMoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh1cmwpKTsKKyAgICBib29s
IHVwZ3JhZGVSZXF1ZXN0ID0gbV9pbnNlY3VyZU5hdmlnYXRpb25SZXF1ZXN0c1RvVXBncmFkZS5j
b250YWlucyhTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHVybCwgbV9zY2hlbWVSZWdpc3RyeS5nZXQo
KSkpOwogICAgIGlmIChyZXF1ZXN0VHlwZSA9PSBJbnNlY3VyZVJlcXVlc3RUeXBlOjpMb2FkIHx8
IHJlcXVlc3RUeXBlID09IEluc2VjdXJlUmVxdWVzdFR5cGU6OkZvcm1TdWJtaXNzaW9uKQogICAg
ICAgICB1cGdyYWRlUmVxdWVzdCB8PSBtX3VwZ3JhZGVJbnNlY3VyZVJlcXVlc3RzOwogICAgIApA
QCAtODE4LDcgKzgyMiw3IEBAIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5OjpzZXRVcGdyYWRl
SW4KICAgICBlbHNlIGlmICh1cGdyYWRlVVJMLnByb3RvY29sSXMoIndzcyIpKQogICAgICAgICB1
cGdyYWRlVVJMLnNldFByb3RvY29sKCJ3cyIpOwogICAgIAotICAgIG1faW5zZWN1cmVOYXZpZ2F0
aW9uUmVxdWVzdHNUb1VwZ3JhZGUuYWRkKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodXBncmFkZVVS
TCkpOworICAgIG1faW5zZWN1cmVOYXZpZ2F0aW9uUmVxdWVzdHNUb1VwZ3JhZGUuYWRkKFNlY3Vy
aXR5T3JpZ2luOjpjcmVhdGUodXBncmFkZVVSTCwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5z
Y2hlbWVSZWdpc3RyeSgpKSk7CiB9CiAKIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5Ojppbmhl
cml0SW5zZWN1cmVOYXZpZ2F0aW9uUmVxdWVzdHNUb1VwZ3JhZGVGcm9tT3BlbmVyKGNvbnN0IENv
bnRlbnRTZWN1cml0eVBvbGljeSYgb3RoZXIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL2Nz
cC9Db250ZW50U2VjdXJpdHlQb2xpY3kuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
YWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuaAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTUwLDYgKzUwLDcgQEAgY2xhc3MgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlOwog
Y2xhc3MgRE9NU3RyaW5nTGlzdDsKIGNsYXNzIEZyYW1lOwogY2xhc3MgSlNET01XaW5kb3dTaGVs
bDsKK2NsYXNzIFBhZ2VTY2hlbWVSZWdpc3RyeTsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNs
YXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKQEAgLTIx
MSw2ICsyMTIsNyBAQCBwcml2YXRlOgogICAgIE9wdGlvblNldDxDb250ZW50U2VjdXJpdHlQb2xp
Y3lIYXNoQWxnb3JpdGhtPiBtX2hhc2hBbGdvcml0aG1zRm9ySW5saW5lU2NyaXB0czsKICAgICBP
cHRpb25TZXQ8Q29udGVudFNlY3VyaXR5UG9saWN5SGFzaEFsZ29yaXRobT4gbV9oYXNoQWxnb3Jp
dGhtc0ZvcklubGluZVN0eWxlc2hlZXRzOwogICAgIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPj4gbV9pbnNlY3VyZU5hdmlnYXRpb25SZXF1ZXN0c1RvVXBncmFkZTsKKyAgICBSZWY8Y29u
c3QgUGFnZVNjaGVtZVJlZ2lzdHJ5PiBtX3NjaGVtZVJlZ2lzdHJ5OwogfTsKIAogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NoZW1lUmVnaXN0cnkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY2hlbWVSZWdpc3RyeS5oCShyZXZpc2lvbiAyMDgzOTgp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY2hlbWVSZWdpc3RyeS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNSw2ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIEZJWE1FOiBNYWtl
IEhhc2hTZXQ8U3RyaW5nPjo6Y29udGFpbnMoU3RyaW5nVmlldykgd29yayBhbmQgdXNlIFN0cmlu
Z1ZpZXdzIGhlcmUuCiB1c2luZyBVUkxTY2hlbWVzTWFwID0gSGFzaFNldDxTdHJpbmcsIEFTQ0lJ
Q2FzZUluc2Vuc2l0aXZlSGFzaD47CiAKKy8vIEZJWE1FOiBNb3ZlIHRoZXNlIHRvIFBhZ2VTY2hl
bWVSZWdpc3RyeSBhbmQgc3RvcCB1c2luZyBhIGdsb2JhbCBTY2hlbWVSZWdpc3RyeS4KIGNsYXNz
IFNjaGVtZVJlZ2lzdHJ5IHsKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9p
ZCByZWdpc3RlclVSTFNjaGVtZUFzTG9jYWwoY29uc3QgU3RyaW5nJik7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCShyZXZpc2lv
biAyMDgzOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OCw3ICsxNTgsNyBAQCBwdWJsaWM6CiAgICAgYm9v
bCBjYW5Mb2FkUG9zdGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2
b2lkIHNldFBvc3Rlcihjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IH0KIAotICAgIGJvb2wgaGFz
U2luZ2xlU2VjdXJpdHlPcmlnaW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Cisg
ICAgYm9vbCBoYXNTaW5nbGVTZWN1cml0eU9yaWdpbihjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnkm
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiB9OwogCiAvLyBlbmdpbmUgc3VwcG9y
dApAQCAtOTg4LDkgKzk4OCw5IEBAIHZvaWQgTWVkaWFQbGF5ZXI6OnNldFNob3VsZE1haW50YWlu
QXNwZWMKICAgICBtX3ByaXZhdGUtPnNldFNob3VsZE1haW50YWluQXNwZWN0UmF0aW8obWFpbnRh
aW5Bc3BlY3RSYXRpbyk7CiB9CiAKLWJvb2wgTWVkaWFQbGF5ZXI6Omhhc1NpbmdsZVNlY3VyaXR5
T3JpZ2luKCkgY29uc3QKK2Jvb2wgTWVkaWFQbGF5ZXI6Omhhc1NpbmdsZVNlY3VyaXR5T3JpZ2lu
KGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3RyeSYgc2NoZW1lUmVnaXN0cnkpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIG1fcHJpdmF0ZS0+aGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4oKTsKKyAgICByZXR1cm4g
bV9wcml2YXRlLT5oYXNTaW5nbGVTZWN1cml0eU9yaWdpbihzY2hlbWVSZWdpc3RyeSk7CiB9CiAK
IGJvb2wgTWVkaWFQbGF5ZXI6OmRpZFBhc3NDT1JTQWNjZXNzQ2hlY2soKSBjb25zdApAQCAtMTA0
OCwxMyArMTA0OCwxMyBAQCBzdGF0aWMgdm9pZCBhZGRUb0hhc2goSGFzaFNldDxUPiYgdG9IYXNo
CiAgICAgICAgIHRvSGFzaC5hZGQoZnJvbUhhc2guYmVnaW4oKSwgZnJvbUhhc2guZW5kKCkpOwog
fQogICAgIAotSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBNZWRpYVBsYXllcjo6b3Jp
Z2luc0luTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmIHBhdGgpCitIYXNoU2V0PFJlZlB0cjxTZWN1
cml0eU9yaWdpbj4+IE1lZGlhUGxheWVyOjpvcmlnaW5zSW5NZWRpYUNhY2hlKGNvbnN0IFN0cmlu
ZyYgcGF0aCwgY29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5JiBzY2hlbWVSZWdpc3RyeSkKIHsKICAg
ICBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnM7CiAgICAgZm9yIChhdXRv
JiBlbmdpbmUgOiBpbnN0YWxsZWRNZWRpYUVuZ2luZXMoKSkgewogICAgICAgICBpZiAoIWVuZ2lu
ZS5vcmlnaW5zSW5NZWRpYUNhY2hlKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGFk
ZFRvSGFzaChvcmlnaW5zLCBlbmdpbmUub3JpZ2luc0luTWVkaWFDYWNoZShwYXRoKSk7CisgICAg
ICAgIGFkZFRvSGFzaChvcmlnaW5zLCBlbmdpbmUub3JpZ2luc0luTWVkaWFDYWNoZShwYXRoLCBz
Y2hlbWVSZWdpc3RyeSkpOwogICAgIH0KICAgICByZXR1cm4gb3JpZ2luczsKIH0KQEAgLTEwNjcs
MTEgKzEwNjcsMTEgQEAgdm9pZCBNZWRpYVBsYXllcjo6Y2xlYXJNZWRpYUNhY2hlKGNvbnN0IAog
ICAgIH0KIH0KIAotdm9pZCBNZWRpYVBsYXllcjo6Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhj
b25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4m
IG9yaWdpbnMpCit2b2lkIE1lZGlhUGxheWVyOjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKGNv
bnN0IFN0cmluZyYgcGF0aCwgY29uc3QgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiYg
b3JpZ2lucywgY29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5JiBzY2hlbWVSZWdpc3RyeSkKIHsKICAg
ICBmb3IgKGF1dG8mIGVuZ2luZSA6IGluc3RhbGxlZE1lZGlhRW5naW5lcygpKSB7CiAgICAgICAg
IGlmIChlbmdpbmUuY2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucykKLSAgICAgICAgICAgIGVuZ2lu
ZS5jbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKHBhdGgsIG9yaWdpbnMpOworICAgICAgICAgICAg
ZW5naW5lLmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMocGF0aCwgb3JpZ2lucywgc2NoZW1lUmVn
aXN0cnkpOwogICAgIH0KIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5oCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOTIs
OSArMjkyLDkgQEAgcHVibGljOgogICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBl
IHN1cHBvcnRzVHlwZShjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiwgY29uc3Qg
TWVkaWFQbGF5ZXJTdXBwb3J0c1R5cGVDbGllbnQqKTsKICAgICBzdGF0aWMgdm9pZCBnZXRTdXBw
b3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYpOwog
ICAgIHN0YXRpYyBib29sIGlzQXZhaWxhYmxlKCk7Ci0gICAgc3RhdGljIEhhc2hTZXQ8UmVmUHRy
PFNlY3VyaXR5T3JpZ2luPj4gb3JpZ2luc0luTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmIHBhdGgp
OworICAgIHN0YXRpYyBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnNJbk1l
ZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnkmKTsK
ICAgICBzdGF0aWMgdm9pZCBjbGVhck1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiBwYXRoLCBzdGQ6
OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UpOwotICAgIHN0
YXRpYyB2b2lkIGNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMoY29uc3QgU3RyaW5nJiBwYXRoLCBj
b25zdCBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+Jik7CisgICAgc3RhdGljIHZvaWQg
Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEhhc2hT
ZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4mLCBjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnkmKTsK
ICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3Rl
bSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAKICAgICBib29sIHN1cHBvcnRzRnVsbHNjcmVl
bigpIGNvbnN0OwpAQCAtNDk1LDcgKzQ5NSw3IEBAIHB1YmxpYzoKICAgICBHcmFwaGljc0Rldmlj
ZUFkYXB0ZXIqIGdyYXBoaWNzRGV2aWNlQWRhcHRlcigpIGNvbnN0OwogI2VuZGlmCiAKLSAgICBi
b29sIGhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkgY29uc3Q7CisgICAgYm9vbCBoYXNTaW5nbGVT
ZWN1cml0eU9yaWdpbihjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnkmKSBjb25zdDsKIAogICAgIGJv
b2wgZGlkUGFzc0NPUlNBY2Nlc3NDaGVjaygpIGNvbnN0OwogCkBAIC02MTgsOSArNjE4LDkgQEAg
cHJpdmF0ZToKIHR5cGVkZWYgc3RkOjpmdW5jdGlvbjxzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5
ZXJQcml2YXRlSW50ZXJmYWNlPiAoTWVkaWFQbGF5ZXIqKT4gQ3JlYXRlTWVkaWFFbmdpbmVQbGF5
ZXI7CiB0eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2luZVN1cHBvcnRlZFR5cGVzKShIYXNoU2V0PFN0
cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgdHlwZXMpOwogdHlwZWRlZiBNZWRpYVBs
YXllcjo6U3VwcG9ydHNUeXBlICgqTWVkaWFFbmdpbmVTdXBwb3J0c1R5cGUpKGNvbnN0IE1lZGlh
RW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpOwotdHlwZWRlZiBIYXNoU2V0PFJl
ZlB0cjxTZWN1cml0eU9yaWdpbj4+ICgqTWVkaWFFbmdpbmVPcmlnaW5zSW5NZWRpYUNhY2hlKShj
b25zdCBTdHJpbmcmIHBhdGgpOwordHlwZWRlZiBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdp
bj4+ICgqTWVkaWFFbmdpbmVPcmlnaW5zSW5NZWRpYUNhY2hlKShjb25zdCBTdHJpbmcmIHBhdGgs
IGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3RyeSYpOwogdHlwZWRlZiB2b2lkICgqTWVkaWFFbmdpbmVD
bGVhck1lZGlhQ2FjaGUpKGNvbnN0IFN0cmluZyYgcGF0aCwgc3RkOjpjaHJvbm86OnN5c3RlbV9j
bG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlKTsKLXR5cGVkZWYgdm9pZCAoKk1lZGlhRW5n
aW5lQ2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucykoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBI
YXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+Jik7Cit0eXBlZGVmIHZvaWQgKCpNZWRpYUVu
Z2luZUNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMpKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3Qg
SGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiYsIGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3Ry
eSYpOwogdHlwZWRlZiBib29sICgqTWVkaWFFbmdpbmVTdXBwb3J0c0tleVN5c3RlbSkoY29uc3Qg
U3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogCiB0eXBlZGVmIHZv
aWQgKCpNZWRpYUVuZ2luZVJlZ2lzdHJhcikoQ3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIsIE1lZGlh
RW5naW5lU3VwcG9ydGVkVHlwZXMsIE1lZGlhRW5naW5lU3VwcG9ydHNUeXBlLApJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2
YXRlLmgJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw3IEBA
CiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVmIE1lZGlhUGxheWVyUHJpdmF0ZV9oCi0j
ZGVmaW5lIE1lZGlhUGxheWVyUHJpdmF0ZV9oCisjcHJhZ21hIG9uY2UKIAogI2lmIEVOQUJMRShW
SURFTykKIApAQCAtMTkyLDcgKzE5MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2hv
dWxkTWFpbnRhaW5Bc3BlY3RSYXRpbygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0
dWFsIHZvaWQgc2V0U2hvdWxkTWFpbnRhaW5Bc3BlY3RSYXRpbyhib29sKSB7IH0KIAotICAgIHZp
cnR1YWwgYm9vbCBoYXNTaW5nbGVTZWN1cml0eU9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgdmlydHVhbCBib29sIGhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKGNvbnN0IFBhZ2VT
Y2hlbWVSZWdpc3RyeSYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2aXJ0dWFsIGJv
b2wgZGlkUGFzc0NPUlNBY2Nlc3NDaGVjaygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKQEAg
LTIxNCwxNiArMjEzLDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGF1ZGlvRGVj
b2RlZEJ5dGVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIHVuc2lnbmVk
IHZpZGVvRGVjb2RlZEJ5dGVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KIAotICAgIEhhc2hT
ZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gb3JpZ2luc0luTWVkaWFDYWNoZShjb25zdCBTdHJp
bmcmKSB7IHJldHVybiB7IH07IH0KLSAgICB2b2lkIGNsZWFyTWVkaWFDYWNoZShjb25zdCBTdHJp
bmcmLCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50KSB7IH0KLSAgICB2b2lk
IGNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMoY29uc3QgU3RyaW5nJiwgY29uc3QgSGFzaFNldDxS
ZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiYpIHsgfQotCiAgICAgdmlydHVhbCB2b2lkIHNldFByaXZh
dGVCcm93c2luZ01vZGUoYm9vbCkgeyB9CiAKICAgICB2aXJ0dWFsIFN0cmluZyBlbmdpbmVEZXNj
cmlwdGlvbigpIGNvbnN0IHsgcmV0dXJuIGVtcHR5U3RyaW5nKCk7IH0KIAogI2lmIEVOQUJMRShX
RUJfQVVESU8pCi0gICAgdmlydHVhbCBBdWRpb1NvdXJjZVByb3ZpZGVyKiBhdWRpb1NvdXJjZVBy
b3ZpZGVyKCkgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgQXVkaW9Tb3VyY2VQcm92aWRlciog
YXVkaW9Tb3VyY2VQcm92aWRlcigpIHsgcmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgogCiAjaWYg
RU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCkBAIC0yNzgsNCArMjczLDMgQEAgcHVibGlj
OgogfQogCiAjZW5kaWYKLSNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAkocmV2aXNp
b24gMjA4Mzk4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCSh3b3JraW5nIGNv
cHkpCkBAIC03MSw2ICs3MSw3IEBAIGNsYXNzIENETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDOwog
Y2xhc3MgSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGOwogY2xhc3MgSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWRk9iakM7CiBjbGFzcyBNZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQzsK
K2NsYXNzIFBhZ2VTY2hlbWVSZWdpc3RyeTsKIGNsYXNzIFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y7
CiBjbGFzcyBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM7CiBjbGFzcyBXZWJDb3JlQVZGUmVzb3Vy
Y2VMb2FkZXI7CkBAIC04OCw5ICs4OSw5IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIHJl
Z2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIpOwogCi0gICAgc3RhdGljIEhh
c2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gb3JpZ2luc0luTWVkaWFDYWNoZShjb25zdCBT
dHJpbmcmKTsKKyAgICBzdGF0aWMgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBvcmln
aW5zSW5NZWRpYUNhY2hlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3RyeSYp
OwogICAgIHN0YXRpYyB2b2lkIGNsZWFyTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmLCBzdGQ6OmNo
cm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UpOwotICAgIHN0YXRp
YyB2b2lkIGNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMoY29uc3QgU3RyaW5nJiwgY29uc3QgSGFz
aFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiYpOworICAgIHN0YXRpYyB2b2lkIGNsZWFyTWVk
aWFDYWNoZUZvck9yaWdpbnMoY29uc3QgU3RyaW5nJiwgY29uc3QgSGFzaFNldDxSZWZQdHI8U2Vj
dXJpdHlPcmlnaW4+PiYsIGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3RyeSYpOwogCiAgICAgdm9pZCBz
ZXRBc3NldChSZXRhaW5QdHI8aWQ+KTsKICAgICB2b2lkIHRyYWNrc0NoYW5nZWQoKSBvdmVycmlk
ZTsKQEAgLTIzNiw3ICsyMzcsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB1cGRhdGVWaWRlb0xh
eWVyR3Jhdml0eSgpIG92ZXJyaWRlOwogCi0gICAgYm9vbCBoYXNTaW5nbGVTZWN1cml0eU9yaWdp
bigpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4oY29u
c3QgUGFnZVNjaGVtZVJlZ2lzdHJ5JikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBkaWRQYXNz
Q09SU0FjY2Vzc0NoZWNrKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBNZWRpYVRpbWUgZ2V0U3Rh
cnREYXRlKCkgY29uc3Qgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0JKHJl
dmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0JKHdvcmtp
bmcgY29weSkKQEAgLTQ0NiwxMyArNDQ2LDEzIEBAIHN0YXRpYyBBVkFzc2V0Q2FjaGVUeXBlICph
c3NldENhY2hlRm9yUGEKICAgICByZXR1cm4gW2luaXRBVkFzc2V0Q2FjaGUoKSBhc3NldENhY2hl
V2l0aFVSTDphc3NldENhY2hlVVJMXTsKIH0KIAotSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmln
aW4+PiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpvcmlnaW5zSW5NZWRpYUNh
Y2hlKGNvbnN0IFN0cmluZyYgcGF0aCkKK0hhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4g
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6b3JpZ2luc0luTWVkaWFDYWNoZShj
b25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3RyeSYgc2NoZW1lUmVnaXN0
cnkpCiB7CiAgICAgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBvcmlnaW5zOwogICAg
IGZvciAoTlNTdHJpbmcgKmtleSBpbiBbYXNzZXRDYWNoZUZvclBhdGgocGF0aCkgYWxsS2V5c10p
IHsKICAgICAgICAgVVJMIGtleUFzVVJMID0gVVJMKFVSTCgpLCBrZXkpOwogICAgICAgICBpZiAo
a2V5QXNVUkwuaXNWYWxpZCgpKQotICAgICAgICAgICAgb3JpZ2lucy5hZGQoU2VjdXJpdHlPcmln
aW46OmNyZWF0ZShrZXlBc1VSTCkpOworICAgICAgICAgICAgb3JpZ2lucy5hZGQoU2VjdXJpdHlP
cmlnaW46OmNyZWF0ZShrZXlBc1VSTCwgc2NoZW1lUmVnaXN0cnkpKTsKICAgICB9CiAgICAgcmV0
dXJuIG9yaWdpbnM7CiB9CkBAIC01MDksMTQgKzUwOSwxNCBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6CiAgICAgICAgIFtmaWxlTWFuYWdlciByZW1vdmVJdGVtQXRV
Ukw6ZmlsZVVSTCBlcnJvcjpuaWxdOwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMoY29uc3QgU3RyaW5nJiBwYXRo
LCBjb25zdCBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+JiBvcmlnaW5zKQordm9pZCBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjbGVhck1lZGlhQ2FjaGVGb3JPcmln
aW5zKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmln
aW4+PiYgb3JpZ2lucywgY29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5JiBzY2hlbWVSZWdpc3RyeSkK
IHsKICAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpj
bGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKCkiKTsKICAgICBBVkFzc2V0Q2FjaGVUeXBlKiBhc3Nl
dENhY2hlID0gYXNzZXRDYWNoZUZvclBhdGgocGF0aCk7CiAgICAgZm9yIChOU1N0cmluZyAqa2V5
IGluIFthc3NldENhY2hlIGFsbEtleXNdKSB7CiAgICAgICAgIFVSTCBrZXlBc1VSTCA9IFVSTChV
UkwoKSwga2V5KTsKICAgICAgICAgaWYgKGtleUFzVVJMLmlzVmFsaWQoKSkgewotICAgICAgICAg
ICAgaWYgKG9yaWdpbnMuY29udGFpbnMoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShrZXlBc1VSTCkp
KQorICAgICAgICAgICAgaWYgKG9yaWdpbnMuY29udGFpbnMoU2VjdXJpdHlPcmlnaW46OmNyZWF0
ZShrZXlBc1VSTCwgc2NoZW1lUmVnaXN0cnkpKSkKICAgICAgICAgICAgICAgICBbYXNzZXRDYWNo
ZSByZW1vdmVFbnRyeUZvcktleTprZXldOwogICAgICAgICB9CiAgICAgfQpAQCAtMjIxNywxMyAr
MjIxNywxMyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6CiAgICAg
c2V0TmF0dXJhbFNpemUobV9jYWNoZWRQcmVzZW50YXRpb25TaXplKTsKIH0KICAgICAKLWJvb2wg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6aGFzU2luZ2xlU2VjdXJpdHlPcmln
aW4oKSBjb25zdCAKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6aGFz
U2luZ2xlU2VjdXJpdHlPcmlnaW4oY29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5JiBzY2hlbWVSZWdp
c3RyeSkgY29uc3QKIHsKICAgICBpZiAoIW1fYXZBc3NldCB8fCBbbV9hdkFzc2V0IHN0YXR1c09m
VmFsdWVGb3JLZXk6QCJyZXNvbHZlZFVSTCIgZXJyb3I6bnVsbHB0cl0gIT0gQVZLZXlWYWx1ZVN0
YXR1c0xvYWRlZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIFJlZjxTZWN1cml0
eU9yaWdpbj4gcmVzb2x2ZWRPcmlnaW4oU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShyZXNvbHZlZFVS
TCgpKSk7Ci0gICAgUmVmPFNlY3VyaXR5T3JpZ2luPiByZXF1ZXN0ZWRPcmlnaW4oU2VjdXJpdHlP
cmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoYXNzZXRVUkwoKSkpOworICAgIFJlZjxTZWN1cml0eU9y
aWdpbj4gcmVzb2x2ZWRPcmlnaW4oU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShyZXNvbHZlZFVSTCgp
LCBzY2hlbWVSZWdpc3RyeSkpOworICAgIFJlZjxTZWN1cml0eU9yaWdpbj4gcmVxdWVzdGVkT3Jp
Z2luKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKGFzc2V0VVJMKCksIHNjaGVtZVJl
Z2lzdHJ5KSk7CiAgICAgcmV0dXJuIHJlc29sdmVkT3JpZ2luLmdldCgpLmlzU2FtZVNjaGVtZUhv
c3RQb3J0KCZyZXF1ZXN0ZWRPcmlnaW4uZ2V0KCkpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakMuaAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNCw3ICsxMzQsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgYWNjZWxlcmF0ZWRSZW5kZXJpbmdTdGF0ZUNoYW5nZWQoKSBvdmVycmlkZTsKICAgICBi
b29sIHN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5kZXJpbmcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9CiAKLSAgICBib29sIGhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgaGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4o
Y29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQogCiAgICAgTWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5cGUgbW92aWVMb2FkVHlwZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIE1lZGlhUGxheWVyOjpMaXZlU3RyZWFtOyB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtp
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9N
ZWRpYVBsYXllclByaXZhdGVRVEtpdC5oCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQuaAkod29y
a2luZyBjb3B5KQpAQCAtNjgsNyArNjgsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGdl
dFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+
JiB0eXBlcyk7CiAgICAgc3RhdGljIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNU
eXBlKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmKTsKIAotICAgIHN0YXRpYyBI
YXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnNJbk1lZGlhQ2FjaGUoY29uc3Qg
U3RyaW5nJik7CisgICAgc3RhdGljIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gb3Jp
Z2luc0luTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmLCBjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnkm
KTsKICAgICBzdGF0aWMgdm9pZCBjbGVhck1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiwgc3RkOjpj
aHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlKTsKICAgICBzdGF0
aWMgdm9pZCBjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKGNvbnN0IFN0cmluZyYsIGNvbnN0IEhh
c2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4mKTsKICAgICBzdGF0aWMgYm9vbCBpc0F2YWls
YWJsZSgpOwpAQCAtMTM0LDcgKzEzNCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzdXBwb3J0c0Fj
Y2VsZXJhdGVkUmVuZGVyaW5nKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBhY2NlbGVyYXRl
ZFJlbmRlcmluZ1N0YXRlQ2hhbmdlZCgpIG92ZXJyaWRlOwogCi0gICAgYm9vbCBoYXNTaW5nbGVT
ZWN1cml0eU9yaWdpbigpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaGFzU2luZ2xlU2VjdXJp
dHlPcmlnaW4oY29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5JikgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
TWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5cGUgbW92aWVMb2FkVHlwZSgpIGNvbnN0IG92ZXJyaWRl
OwogCiAgICAgYm9vbCBjYW5TYXZlTWVkaWFEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRL
aXQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0J
KHdvcmtpbmcgY29weSkKQEAgLTEzMzMsNyArMTMzMyw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2
YXRlUVRLaXQ6OmlzQXZhaWxhYmwKICAgICByZXR1cm4gUVRLaXRMaWJyYXJ5KCk7CiB9CiAKLUhh
c2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6Om9y
aWdpbnNJbk1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJikKK0hhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5
T3JpZ2luPj4gTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6Om9yaWdpbnNJbk1lZGlhQ2FjaGUoY29u
c3QgU3RyaW5nJiwgY29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5JiBzY2hlbWVSZWdpc3RyeSkKIHsK
ICAgICBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnM7CiAgICAgTlNBcnJh
eSAqbWVkaWFTaXRlcyA9IHdrUVRHZXRTaXRlc0luTWVkaWFEb3dubG9hZENhY2hlKCk7CkBAIC0x
MzQxLDcgKzEzNDEsNyBAQCBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IE1lZGlhUGxh
CiAgICAgZm9yIChOU1N0cmluZyAqc2l0ZSBpbiBtZWRpYVNpdGVzKSB7CiAgICAgICAgIFVSTCBz
aXRlQXNVUkwgPSBVUkwoVVJMKCksIHNpdGUpOwogICAgICAgICBpZiAoc2l0ZUFzVVJMLmlzVmFs
aWQoKSkKLSAgICAgICAgICAgIG9yaWdpbnMuYWRkKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoc2l0
ZUFzVVJMKSk7CisgICAgICAgICAgICBvcmlnaW5zLmFkZChTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
KHNpdGVBc1VSTCwgc2NoZW1lUmVnaXN0cnkpKTsKICAgICB9CiAgICAgcmV0dXJuIG9yaWdpbnM7
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVn
SW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFw
c2hvdHRlZFBsdWdJbi5jcHAJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgy
LDEzICs4MiwxMyBAQCB2b2lkIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpsYXlvdXQoKQogICAg
IHZpZXcoKS5mcmFtZVZpZXcoKS5hZGRFbWJlZGRlZE9iamVjdFRvVXBkYXRlKCp0aGlzKTsKIH0K
IAotdm9pZCBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6dXBkYXRlU25hcHNob3QoUGFzc1JlZlB0
cjxJbWFnZT4gaW1hZ2UpCit2b2lkIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjp1cGRhdGVTbmFw
c2hvdChJbWFnZSogaW1hZ2UpCiB7CiAgICAgLy8gWmVyby1zaXplIHBsdWdpbnMgd2lsbCBoYXZl
IG5vIGltYWdlLgogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fc25h
cHNob3RSZXNvdXJjZS0+c2V0Q2FjaGVkSW1hZ2UobmV3IENhY2hlZEltYWdlKGltYWdlLmdldCgp
LCB2aWV3KCkuZnJhbWVWaWV3KCkuZnJhbWUoKS5wYWdlKCktPnNlc3Npb25JRCgpKSk7CisgICAg
bV9zbmFwc2hvdFJlc291cmNlLT5zZXRDYWNoZWRJbWFnZShuZXcgQ2FjaGVkSW1hZ2UoaW1hZ2Us
IHZpZXcoKS5mcmFtZVZpZXcoKS5mcmFtZSgpLnBhZ2UoKS0+c2Vzc2lvbklEKCksIHZpZXcoKS5m
cmFtZVZpZXcoKS5mcmFtZSgpLnNjaGVtZVJlZ2lzdHJ5KCkpKTsKICAgICByZXBhaW50KCk7CiB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJ
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hv
dHRlZFBsdWdJbi5oCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMs
NyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYg
UmVuZGVyU25hcHNob3R0ZWRQbHVnSW5faAotI2RlZmluZSBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJ
bl9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlJlbmRlckVtYmVkZGVkT2JqZWN0LmgiCiAj
aW5jbHVkZSAiUmVuZGVySW1hZ2VSZXNvdXJjZS5oIgpAQCAtNDEsNyArNDAsNyBAQCBwdWJsaWM6
CiAKICAgICBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50JiBwbHVnSW5JbWFnZUVsZW1lbnQoKSBjb25z
dDsKIAotICAgIHZvaWQgdXBkYXRlU25hcHNob3QoUGFzc1JlZlB0cjxJbWFnZT4pOworICAgIHZv
aWQgdXBkYXRlU25hcHNob3QoSW1hZ2UqKTsKIAogICAgIHZvaWQgaGFuZGxlRXZlbnQoRXZlbnQq
KTsKIApAQCAtNjYsNSArNjUsMyBAQCBwcml2YXRlOgogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1JFTkRFUl9PQkpFQ1QoUmVuZGVyU25hcHNob3R0ZWRQ
bHVnSW4sIGlzU25hcHNob3R0ZWRQbHVnSW4oKSkKLQotI2VuZGlmIC8vIFJlbmRlclNuYXBzaG90
dGVkUGx1Z0luX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlcGxheS9TZXJpYWxpemF0aW9uTWV0
aG9kcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVwbGF5L1NlcmlhbGl6YXRp
b25NZXRob2RzLmNwcAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYkNvcmUvcmVwbGF5
L1NlcmlhbGl6YXRpb25NZXRob2RzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBA
QAogI2luY2x1ZGUgIkZyYW1lVHJlZS5oIgogI2luY2x1ZGUgIk1haW5GcmFtZS5oIgogI2luY2x1
ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQYWdlU2NoZW1lUmVnaXN0cnkuaCIKICNpbmNsdWRlICJQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZlbnQuaCIKQEAgLTUxOCw3ICs1MTksNyBAQCBFbmNv
ZGVkVmFsdWUgRW5jb2RpbmdUcmFpdHM8U2VjdXJpdHlPcmlnCiAKIGJvb2wgRW5jb2RpbmdUcmFp
dHM8U2VjdXJpdHlPcmlnaW4+OjpkZWNvZGVWYWx1ZShFbmNvZGVkVmFsdWUmIGVuY29kZWRWYWx1
ZSwgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiYgaW5wdXQpCiB7Ci0gICAgaW5wdXQgPSBTZWN1cml0
eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhlbmNvZGVkVmFsdWUuY29udmVydFRvPFN0cmluZz4o
KSk7CisgICAgaW5wdXQgPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhlbmNvZGVk
VmFsdWUuY29udmVydFRvPFN0cmluZz4oKSwgV2ViQ29yZTo6UGFnZVNjaGVtZVJlZ2lzdHJ5Ojpj
cmVhdGUoKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdEb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Rv
Y3VtZW50LmNwcAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Rv
Y3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsOCArMjcsOCBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVNWR0RvY3VtZW50OjpTVkdEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0
IFVSTCYgdXJsKQotICAgIDogWE1MRG9jdW1lbnQoZnJhbWUsIHVybCwgU1ZHRG9jdW1lbnRDbGFz
cykKK1NWR0RvY3VtZW50OjpTVkdEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnkmIHNjaGVtZVJlZ2lzdHJ5KQorICAgIDogWE1MRG9j
dW1lbnQoZnJhbWUsIHVybCwgc2NoZW1lUmVnaXN0cnksIFNWR0RvY3VtZW50Q2xhc3MpCiB7CiB9
CiAKQEAgLTY2LDcgKzY2LDcgQEAgdm9pZCBTVkdEb2N1bWVudDo6dXBkYXRlUGFuKGNvbnN0IEZs
b2F0UAogCiBSZWY8RG9jdW1lbnQ+IFNWR0RvY3VtZW50OjpjbG9uZURvY3VtZW50V2l0aG91dENo
aWxkcmVuKCkgY29uc3QKIHsKLSAgICByZXR1cm4gY3JlYXRlKG51bGxwdHIsIHVybCgpKTsKKyAg
ICByZXR1cm4gY3JlYXRlKG51bGxwdHIsIHVybCgpLCBzY2hlbWVSZWdpc3RyeSgpKTsKIH0KIAog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50LmgJKHJldmlzaW9uIDIwODM5OCkKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOSw4ICsx
OSw3IEBACiAgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KICAqLwogCi0jaWZuZGVmIFNW
R0RvY3VtZW50X2gKLSNkZWZpbmUgU1ZHRG9jdW1lbnRfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNs
dWRlICJYTUxEb2N1bWVudC5oIgogCkBAIC0zMCw3ICsyOSwxMCBAQCBjbGFzcyBTVkdTVkdFbGVt
ZW50OwogCiBjbGFzcyBTVkdEb2N1bWVudCBmaW5hbCA6IHB1YmxpYyBYTUxEb2N1bWVudCB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTVkdEb2N1bWVudD4gY3JlYXRlKEZyYW1lKiwgY29uc3Qg
VVJMJik7CisgICAgc3RhdGljIFJlZjxTVkdEb2N1bWVudD4gY3JlYXRlKEZyYW1lKiBmcmFtZSwg
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3RyeSYgc2NoZW1lUmVnaXN0cnkp
CisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdEb2N1bWVudChmcmFtZSwg
dXJsLCBzY2hlbWVSZWdpc3RyeSkpOworICAgIH0KIAogICAgIHN0YXRpYyBTVkdTVkdFbGVtZW50
KiByb290RWxlbWVudChjb25zdCBEb2N1bWVudCYpOwogCkBAIC0zOSwyMyArNDEsMTYgQEAgcHVi
bGljOgogICAgIHZvaWQgdXBkYXRlUGFuKGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uKSBjb25z
dDsKIAogcHJpdmF0ZToKLSAgICBTVkdEb2N1bWVudChGcmFtZSosIGNvbnN0IFVSTCYpOworICAg
IFNWR0RvY3VtZW50KEZyYW1lKiwgY29uc3QgVVJMJiwgY29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5
Jik7CiAKICAgICBSZWY8RG9jdW1lbnQ+IGNsb25lRG9jdW1lbnRXaXRob3V0Q2hpbGRyZW4oKSBj
b25zdCBvdmVycmlkZTsKIAogICAgIEZsb2F0U2l6ZSBtX3Bhbm5pbmdPZmZzZXQ7CiB9OwogCi1p
bmxpbmUgUmVmPFNWR0RvY3VtZW50PiBTVkdEb2N1bWVudDo6Y3JlYXRlKEZyYW1lKiBmcmFtZSwg
Y29uc3QgVVJMJiB1cmwpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHRG9jdW1lbnQo
ZnJhbWUsIHVybCkpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKIFNQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6U1ZHRG9jdW1lbnQpCiAgICAgc3RhdGljIGJvb2wg
aXNUeXBlKGNvbnN0IFdlYkNvcmU6OkRvY3VtZW50JiBkb2N1bWVudCkgeyByZXR1cm4gZG9jdW1l
bnQuaXNTVkdEb2N1bWVudCgpOyB9CiAgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNv
cmU6Ok5vZGUmIG5vZGUpIHsgcmV0dXJuIGlzPFdlYkNvcmU6OkRvY3VtZW50Pihub2RlKSAmJiBp
c1R5cGUoZG93bmNhc3Q8V2ViQ29yZTo6RG9jdW1lbnQ+KG5vZGUpKTsgfQogU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19FTkQoKQotCi0jZW5kaWYgLy8gU1ZHRG9jdW1lbnRfaApJbmRleDogU291cmNl
L1dlYkNvcmUvd29ya2Vycy9BYnN0cmFjdFdvcmtlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvd29ya2Vycy9BYnN0cmFjdFdvcmtlci5jcHAJKHJldmlzaW9uIDIwODM5OCkKKysr
IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvQWJzdHJhY3RXb3JrZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01MCw3ICs1MCw3IEBAIEV4Y2VwdGlvbk9yPFVSTD4gQWJzdHJhY3RXb3JrZXI6OnJlc29s
dmUKICAgICBpZiAoIXNjcmlwdFVSTC5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBTWU5UQVhfRVJSIH07CiAKLSAgICBpZiAoIWNvbnRleHQuc2VjdXJpdHlPcmlnaW4oKS0+
Y2FuUmVxdWVzdChzY3JpcHRVUkwpKQorICAgIGlmICghY29udGV4dC5zZWN1cml0eU9yaWdpbigp
LT5jYW5SZXF1ZXN0KHNjcmlwdFVSTCwgY29udGV4dC5zY2hlbWVSZWdpc3RyeSgpKSkKICAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNFQ1VSSVRZX0VSUiB9OwogCiAgICAgQVNTRVJUKGNvbnRl
eHQuY29udGVudFNlY3VyaXR5UG9saWN5KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAJKHJldmlzaW9uIDIw
ODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2Nv
cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSwxNiArNDEsMTYgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1SZWY8RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU+IERlZGljYXRlZFdvcmtl
ckdsb2JhbFNjb3BlOjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdXNlckFn
ZW50LCBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQmIHRocmVhZCwgY29uc3QgQ29udGVudFNlY3VyaXR5
UG9saWN5UmVzcG9uc2VIZWFkZXJzJiBjb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRl
cnMsIGJvb2wgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Q
cm94eSogY29ubmVjdGlvblByb3h5LCBTb2NrZXRQcm92aWRlciogc29ja2V0UHJvdmlkZXIpCitS
ZWY8RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU+IERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3Bl
OjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBEZWRpY2F0
ZWRXb3JrZXJUaHJlYWQmIHRocmVhZCwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9u
c2VIZWFkZXJzJiBjb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMsIGJvb2wgc2hv
dWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBSZWZQdHI8U2VjdXJpdHlP
cmlnaW4+JiYgdG9wT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSogY29ubmVj
dGlvblByb3h5LCBTb2NrZXRQcm92aWRlciogc29ja2V0UHJvdmlkZXIsIFJlZjxjb25zdCBQYWdl
U2NoZW1lUmVnaXN0cnk+JiYgc2NoZW1lUmVnaXN0cnkpCiB7Ci0gICAgYXV0byBjb250ZXh0ID0g
YWRvcHRSZWYoKm5ldyBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSh1cmwsIHVzZXJBZ2VudCwg
dGhyZWFkLCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIFdURk1v
dmUodG9wT3JpZ2luKSwgY29ubmVjdGlvblByb3h5LCBzb2NrZXRQcm92aWRlcikpOworICAgIGF1
dG8gY29udGV4dCA9IGFkb3B0UmVmKCpuZXcgRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUodXJs
LCB1c2VyQWdlbnQsIHRocmVhZCwgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5
UG9saWN5LCBXVEZNb3ZlKHRvcE9yaWdpbiksIGNvbm5lY3Rpb25Qcm94eSwgc29ja2V0UHJvdmlk
ZXIsIFdURk1vdmUoc2NoZW1lUmVnaXN0cnkpKSk7CiAgICAgaWYgKCFzaG91bGRCeXBhc3NNYWlu
V29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3kpCiAgICAgICAgIGNvbnRleHQtPmFwcGx5Q29udGVu
dFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzKGNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3Bv
bnNlSGVhZGVycyk7CiAgICAgcmV0dXJuIGNvbnRleHQ7CiB9CiAKLURlZGljYXRlZFdvcmtlckds
b2JhbFNjb3BlOjpEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiB1c2VyQWdlbnQsIERlZGljYXRlZFdvcmtlclRocmVhZCYgdGhyZWFkLCBib29s
IHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgUmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPiYmIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqIGNv
bm5lY3Rpb25Qcm94eSwgU29ja2V0UHJvdmlkZXIqIHNvY2tldFByb3ZpZGVyKQotICAgIDogV29y
a2VyR2xvYmFsU2NvcGUodXJsLCB1c2VyQWdlbnQsIHRocmVhZCwgc2hvdWxkQnlwYXNzTWFpbldv
cmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBXVEZNb3ZlKHRvcE9yaWdpbiksIGNvbm5lY3Rpb25Q
cm94eSwgc29ja2V0UHJvdmlkZXIpCitEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZTo6RGVkaWNh
dGVkV29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdXNlckFn
ZW50LCBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQmIHRocmVhZCwgYm9vbCBzaG91bGRCeXBhc3NNYWlu
V29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4mJiB0b3BP
cmlnaW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiBjb25uZWN0aW9uUHJveHksIFNv
Y2tldFByb3ZpZGVyKiBzb2NrZXRQcm92aWRlciwgUmVmPGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3Ry
eT4mJiBzY2hlbWVSZWdpc3RyeSkKKyAgICA6IFdvcmtlckdsb2JhbFNjb3BlKHVybCwgdXNlckFn
ZW50LCB0aHJlYWQsIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwg
V1RGTW92ZSh0b3BPcmlnaW4pLCBjb25uZWN0aW9uUHJveHksIHNvY2tldFByb3ZpZGVyLCBXVEZN
b3ZlKHNjaGVtZVJlZ2lzdHJ5KSkKIHsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaAkocmV2aXNpb24gMjA4Mzk4
KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTsKIAogY2xhc3MgRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUgZmluYWwgOiBwdWJsaWMg
V29ya2VyR2xvYmFsU2NvcGUgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RGVkaWNhdGVkV29y
a2VyR2xvYmFsU2NvcGU+IGNyZWF0ZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2Vu
dCwgRGVkaWNhdGVkV29ya2VyVGhyZWFkJiwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVz
cG9uc2VIZWFkZXJzJiwgYm9vbCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQ
b2xpY3ksIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4sIElEQkNsaWVudDo6SURC
Q29ubmVjdGlvblByb3h5KiwgU29ja2V0UHJvdmlkZXIqKTsKKyAgICBzdGF0aWMgUmVmPERlZGlj
YXRlZFdvcmtlckdsb2JhbFNjb3BlPiBjcmVhdGUoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB1
c2VyQWdlbnQsIERlZGljYXRlZFdvcmtlclRocmVhZCYsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBv
bGljeVJlc3BvbnNlSGVhZGVycyYsIGJvb2wgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNl
Y3VyaXR5UG9saWN5LCBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBJREJDbGll
bnQ6OklEQkNvbm5lY3Rpb25Qcm94eSosIFNvY2tldFByb3ZpZGVyKiwgUmVmPGNvbnN0IFBhZ2VT
Y2hlbWVSZWdpc3RyeT4mJik7CiAgICAgdmlydHVhbCB+RGVkaWNhdGVkV29ya2VyR2xvYmFsU2Nv
cGUoKTsKIAogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHBvc3RNZXNzYWdlKFJlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+JiYsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYmKTsKQEAgLTUy
LDcgKzUyLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB1c2luZyBCYXNlID0gV29ya2VyR2xv
YmFsU2NvcGU7CiAKLSAgICBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmLCBj
b25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgRGVkaWNhdGVkV29ya2VyVGhyZWFkJiwgYm9vbCBzaG91
bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIFJlZlB0cjxTZWN1cml0eU9y
aWdpbj4mJiB0b3BPcmlnaW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiwgU29ja2V0
UHJvdmlkZXIqKTsKKyAgICBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmLCBj
b25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgRGVkaWNhdGVkV29ya2VyVGhyZWFkJiwgYm9vbCBzaG91
bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIFJlZlB0cjxTZWN1cml0eU9y
aWdpbj4mJiB0b3BPcmlnaW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiwgU29ja2V0
UHJvdmlkZXIqLCBSZWY8Y29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5PiYmKTsKIAogICAgIGJvb2wg
aXNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7
IH0KICAgICBFeGNlcHRpb25Pcjx2b2lkPiBpbXBvcnRTY3JpcHRzKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiB1cmxzKSBmaW5hbDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVk
V29ya2VyVGhyZWFkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL0Rl
ZGljYXRlZFdvcmtlclRocmVhZC5jcHAJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyVGhyZWFkLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzMsMTMgKzMzLDE0IEBACiAjaW5jbHVkZSAiRGVkaWNhdGVkV29ya2VyVGhyZWFkLmgiCiAKICNp
bmNsdWRlICJEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIlBhZ2VTY2hl
bWVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiV29y
a2VyT2JqZWN0UHJveHkuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1EZWRpY2F0ZWRXb3Jr
ZXJUaHJlYWQ6OkRlZGljYXRlZFdvcmtlclRocmVhZChjb25zdCBVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiB1c2VyQWdlbnQsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29ya2VyTG9hZGVyUHJv
eHkmIHdvcmtlckxvYWRlclByb3h5LCBXb3JrZXJPYmplY3RQcm94eSYgd29ya2VyT2JqZWN0UHJv
eHksIFdvcmtlclRocmVhZFN0YXJ0TW9kZSBzdGFydE1vZGUsIGNvbnN0IENvbnRlbnRTZWN1cml0
eVBvbGljeVJlc3BvbnNlSGVhZGVycyYgY29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFk
ZXJzLCBib29sIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgY29u
c3QgU2VjdXJpdHlPcmlnaW4qIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJv
eHkqIGNvbm5lY3Rpb25Qcm94eSwgU29ja2V0UHJvdmlkZXIqIHNvY2tldFByb3ZpZGVyLCBKU0M6
OlJ1bnRpbWVGbGFncyBydW50aW1lRmxhZ3MpCi0gICAgOiBXb3JrZXJUaHJlYWQodXJsLCB1c2Vy
QWdlbnQsIHNvdXJjZUNvZGUsIHdvcmtlckxvYWRlclByb3h5LCB3b3JrZXJPYmplY3RQcm94eSwg
c3RhcnRNb2RlLCBjb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMsIHNob3VsZEJ5
cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgdG9wT3JpZ2luLCBjb25uZWN0aW9u
UHJveHksIHNvY2tldFByb3ZpZGVyLCBydW50aW1lRmxhZ3MpCitEZWRpY2F0ZWRXb3JrZXJUaHJl
YWQ6OkRlZGljYXRlZFdvcmtlclRocmVhZChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1
c2VyQWdlbnQsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29ya2VyTG9hZGVyUHJveHkmIHdv
cmtlckxvYWRlclByb3h5LCBXb3JrZXJPYmplY3RQcm94eSYgd29ya2VyT2JqZWN0UHJveHksIFdv
cmtlclRocmVhZFN0YXJ0TW9kZSBzdGFydE1vZGUsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGlj
eVJlc3BvbnNlSGVhZGVycyYgY29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLCBi
b29sIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgY29uc3QgU2Vj
dXJpdHlPcmlnaW4qIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqIGNv
bm5lY3Rpb25Qcm94eSwgU29ja2V0UHJvdmlkZXIqIHNvY2tldFByb3ZpZGVyLCBSZWY8Y29uc3Qg
UGFnZVNjaGVtZVJlZ2lzdHJ5PiYmIHNjaGVtZVJlZ2lzdHJ5LCBKU0M6OlJ1bnRpbWVGbGFncyBy
dW50aW1lRmxhZ3MpCisgICAgOiBXb3JrZXJUaHJlYWQodXJsLCB1c2VyQWdlbnQsIHNvdXJjZUNv
ZGUsIHdvcmtlckxvYWRlclByb3h5LCB3b3JrZXJPYmplY3RQcm94eSwgc3RhcnRNb2RlLCBjb250
ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMsIHNob3VsZEJ5cGFzc01haW5Xb3JsZENv
bnRlbnRTZWN1cml0eVBvbGljeSwgdG9wT3JpZ2luLCBjb25uZWN0aW9uUHJveHksIHNvY2tldFBy
b3ZpZGVyLCBXVEZNb3ZlKHNjaGVtZVJlZ2lzdHJ5KSwgcnVudGltZUZsYWdzKQogICAgICwgbV93
b3JrZXJPYmplY3RQcm94eSh3b3JrZXJPYmplY3RQcm94eSkKIHsKIH0KQEAgLTQ4LDkgKzQ5LDkg
QEAgRGVkaWNhdGVkV29ya2VyVGhyZWFkOjp+RGVkaWNhdGVkV29ya2VyVAogewogfQogCi1SZWY8
V29ya2VyR2xvYmFsU2NvcGU+IERlZGljYXRlZFdvcmtlclRocmVhZDo6Y3JlYXRlV29ya2VyR2xv
YmFsU2NvcGUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBD
b250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmIGNvbnRlbnRTZWN1cml0eVBvbGlj
eVJlc3BvbnNlSGVhZGVycywgYm9vbCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJp
dHlQb2xpY3ksIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHRvcE9yaWdpbikKK1JlZjxXb3Jr
ZXJHbG9iYWxTY29wZT4gRGVkaWNhdGVkV29ya2VyVGhyZWFkOjpjcmVhdGVXb3JrZXJHbG9iYWxT
Y29wZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IENvbnRl
bnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYgY29udGVudFNlY3VyaXR5UG9saWN5UmVz
cG9uc2VIZWFkZXJzLCBib29sIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBv
bGljeSwgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbikKIHsKLSAgICByZXR1cm4g
RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU6OmNyZWF0ZSh1cmwsIHVzZXJBZ2VudCwgKnRoaXMs
IGNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycywgc2hvdWxkQnlwYXNzTWFpbldv
cmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCB0b3BPcmlnaW4sIGlkYkNvbm5lY3Rpb25Qcm94eSgp
LCBzb2NrZXRQcm92aWRlcigpKTsKKyAgICByZXR1cm4gRGVkaWNhdGVkV29ya2VyR2xvYmFsU2Nv
cGU6OmNyZWF0ZSh1cmwsIHVzZXJBZ2VudCwgKnRoaXMsIGNvbnRlbnRTZWN1cml0eVBvbGljeVJl
c3BvbnNlSGVhZGVycywgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5
LCBXVEZNb3ZlKHRvcE9yaWdpbiksIGlkYkNvbm5lY3Rpb25Qcm94eSgpLCBzb2NrZXRQcm92aWRl
cigpLCBtYWtlUmVmKHNjaGVtZVJlZ2lzdHJ5KCkpKTsKIH0KIAogdm9pZCBEZWRpY2F0ZWRXb3Jr
ZXJUaHJlYWQ6OnJ1bkV2ZW50TG9vcCgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL0Rl
ZGljYXRlZFdvcmtlclRocmVhZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvRGVkaWNhdGVkV29ya2VyVGhyZWFkLmgJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyVGhyZWFkLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ5LDExICs0OSwxMSBAQCBwdWJsaWM6CiAgICAgV29ya2VyT2JqZWN0UHJveHkmIHdvcmtlck9i
amVjdFByb3h5KCkgY29uc3QgeyByZXR1cm4gbV93b3JrZXJPYmplY3RQcm94eTsgfQogCiBwcm90
ZWN0ZWQ6Ci0gICAgUmVmPFdvcmtlckdsb2JhbFNjb3BlPiBjcmVhdGVXb3JrZXJHbG9iYWxTY29w
ZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3QgQ29udGVudFNlY3Vy
aXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgYm9vbCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250
ZW50U2VjdXJpdHlQb2xpY3ksIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHRvcE9yaWdpbikg
b3ZlcnJpZGU7CisgICAgUmVmPFdvcmtlckdsb2JhbFNjb3BlPiBjcmVhdGVXb3JrZXJHbG9iYWxT
Y29wZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3QgQ29udGVudFNl
Y3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgYm9vbCBzaG91bGRCeXBhc3NNYWluV29ybGRD
b250ZW50U2VjdXJpdHlQb2xpY3ksIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4p
IG92ZXJyaWRlOwogICAgIHZvaWQgcnVuRXZlbnRMb29wKCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6
Ci0gICAgRGVkaWNhdGVkV29ya2VyVGhyZWFkKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdXNl
ckFnZW50LCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlckxvYWRlclByb3h5JiwgV29y
a2VyT2JqZWN0UHJveHkmLCBXb3JrZXJUaHJlYWRTdGFydE1vZGUsIGNvbnN0IENvbnRlbnRTZWN1
cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYsIGJvb2wgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29u
dGVudFNlY3VyaXR5UG9saWN5LCBjb25zdCBTZWN1cml0eU9yaWdpbiogdG9wT3JpZ2luLCBJREJD
bGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSosIFNvY2tldFByb3ZpZGVyKiwgSlNDOjpSdW50aW1l
RmxhZ3MpOworICAgIERlZGljYXRlZFdvcmtlclRocmVhZChjb25zdCBVUkwmLCBjb25zdCBTdHJp
bmcmIHVzZXJBZ2VudCwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94
eSYsIFdvcmtlck9iamVjdFByb3h5JiwgV29ya2VyVGhyZWFkU3RhcnRNb2RlLCBjb25zdCBDb250
ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmLCBib29sIHNob3VsZEJ5cGFzc01haW5X
b3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgY29uc3QgU2VjdXJpdHlPcmlnaW4qIHRvcE9yaWdp
biwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqLCBTb2NrZXRQcm92aWRlciosIFJlZjxj
b25zdCBQYWdlU2NoZW1lUmVnaXN0cnk+JiYsIEpTQzo6UnVudGltZUZsYWdzKTsKIAogICAgIFdv
cmtlck9iamVjdFByb3h5JiBtX3dvcmtlck9iamVjdFByb3h5OwogfTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlci5jcHAJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1
ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
aCIKICNpbmNsdWRlICJOZXR3b3JrU3RhdGVOb3RpZmllci5oIgorI2luY2x1ZGUgIlBhZ2VTY2hl
bWVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlICJT
ZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlUHJveHkuaCIKQEAg
LTU1LDYgKzU2LDcgQEAgaW5saW5lIFdvcmtlcjo6V29ya2VyKFNjcmlwdEV4ZWN1dGlvbkNvbgog
ICAgIDogQWN0aXZlRE9NT2JqZWN0KCZjb250ZXh0KQogICAgICwgbV9jb250ZXh0UHJveHkoV29y
a2VyR2xvYmFsU2NvcGVQcm94eTo6Y3JlYXRlKHRoaXMpKQogICAgICwgbV9ydW50aW1lRmxhZ3Mo
cnVudGltZUZsYWdzKQorICAgICwgbV9zY2hlbWVSZWdpc3RyeShjb250ZXh0LnNjaGVtZVJlZ2lz
dHJ5KCkpCiB7CiAgICAgaWYgKCFhbGxXb3JrZXJzKSB7CiAgICAgICAgIGFsbFdvcmtlcnMgPSBu
ZXcgSGFzaFNldDxXb3JrZXIqPjsKQEAgLTE0NCw3ICsxNDYsNyBAQCB2b2lkIFdvcmtlcjo6bm90
aWZ5TmV0d29ya1N0YXRlQ2hhbmdlKGJvCiB2b2lkIFdvcmtlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UpCiB7CiAgICAgY29uc3QgVVJMJiByZXNwb25zZVVSTCA9IHJlc3BvbnNlLnVybCgpOwotICAg
IGlmICghcmVzcG9uc2VVUkwucHJvdG9jb2xJc0Jsb2IoKSAmJiAhcmVzcG9uc2VVUkwucHJvdG9j
b2xJcygiZmlsZSIpICYmICFTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHJlc3BvbnNlVVJMKS0+aXNV
bmlxdWUoKSkKKyAgICBpZiAoIXJlc3BvbnNlVVJMLnByb3RvY29sSXNCbG9iKCkgJiYgIXJlc3Bv
bnNlVVJMLnByb3RvY29sSXMoImZpbGUiKSAmJiAhU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShyZXNw
b25zZVVSTCwgbV9zY2hlbWVSZWdpc3RyeS5nZXQoKSktPmlzVW5pcXVlKCkpCiAgICAgICAgIG1f
Y29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzID0gQ29udGVudFNlY3VyaXR5UG9s
aWN5UmVzcG9uc2VIZWFkZXJzKHJlc3BvbnNlKTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZFJlY2VpdmVTY3JpcHRSZXNwb25zZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGlk
ZW50aWZpZXIpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5oCShyZXZpc2lvbiAyMDgz
OTgpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNyw2ICszNyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgUGFnZVNjaGVt
ZVJlZ2lzdHJ5OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFdvcmtlckds
b2JhbFNjb3BlUHJveHk7CiBjbGFzcyBXb3JrZXJTY3JpcHRMb2FkZXI7CkBAIC03NSw2ICs3Niw3
IEBAIHByaXZhdGU6CiAgICAgT3B0aW9uYWw8Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VI
ZWFkZXJzPiBtX2NvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVyczsKICAgICBib29s
IG1fc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5IHsgZmFsc2UgfTsK
ICAgICBKU0M6OlJ1bnRpbWVGbGFncyBtX3J1bnRpbWVGbGFnczsKKyAgICBSZWY8Y29uc3QgUGFn
ZVNjaGVtZVJlZ2lzdHJ5PiBtX3NjaGVtZVJlZ2lzdHJ5OwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29w
ZS5jcHAJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
R2xvYmFsU2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVk
ZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIklEQkNvbm5lY3Rpb25Qcm94eS5oIgogI2lu
Y2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgorI2luY2x1ZGUgIlBhZ2VTY2hlbWVS
ZWdpc3RyeS5oIgogI2luY2x1ZGUgIlNjaGVkdWxlZEFjdGlvbi5oIgogI2luY2x1ZGUgIlNjcmlw
dFNvdXJjZUNvZGUuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgpAQCAtNTIsNyArNTMs
NyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVdvcmtlckdsb2JhbFNjb3BlOjpXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiB1c2VyQWdlbnQsIFdvcmtlclRocmVhZCYgdGhyZWFkLCBib29sIHNob3VsZEJ5
cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgUmVmUHRyPFNlY3VyaXR5T3JpZ2lu
PiYmIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqIGNvbm5lY3Rpb25Q
cm94eSwgU29ja2V0UHJvdmlkZXIqIHNvY2tldFByb3ZpZGVyKQorV29ya2VyR2xvYmFsU2NvcGU6
Oldvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2Vu
dCwgV29ya2VyVGhyZWFkJiB0aHJlYWQsIGJvb2wgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVu
dFNlY3VyaXR5UG9saWN5LCBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBJREJD
bGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSogY29ubmVjdGlvblByb3h5LCBTb2NrZXRQcm92aWRl
ciogc29ja2V0UHJvdmlkZXIsIFJlZjxjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnk+JiYgc2NoZW1l
UmVnaXN0cnkpCiAgICAgOiBtX3VybCh1cmwpCiAgICAgLCBtX3VzZXJBZ2VudCh1c2VyQWdlbnQp
CiAgICAgLCBtX3RocmVhZCh0aHJlYWQpCkBAIC02Nyw2ICs2OCw3IEBAIFdvcmtlckdsb2JhbFNj
b3BlOjpXb3JrZXJHbG9iYWxTY29wZShjb24KICNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCiAgICAg
LCBtX3NvY2tldFByb3ZpZGVyKHNvY2tldFByb3ZpZGVyKQogI2VuZGlmCisgICAgLCBtX3NjaGVt
ZVJlZ2lzdHJ5KFdURk1vdmUoc2NoZW1lUmVnaXN0cnkpKQogewogI2lmICFFTkFCTEUoSU5ERVhF
RF9EQVRBQkFTRSkKICAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvblByb3h5KTsKQEAgLTc1LDcg
Kzc3LDcgQEAgV29ya2VyR2xvYmFsU2NvcGU6Oldvcmtlckdsb2JhbFNjb3BlKGNvbgogICAgIFVO
VVNFRF9QQVJBTShzb2NrZXRQcm92aWRlcik7CiAjZW5kaWYKIAotICAgIGF1dG8gb3JpZ2luID0g
U2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh1cmwpOworICAgIGF1dG8gb3JpZ2luID0gU2VjdXJpdHlP
cmlnaW46OmNyZWF0ZSh1cmwsIG1fc2NoZW1lUmVnaXN0cnkuZ2V0KCkpOwogICAgIGlmIChtX3Rv
cE9yaWdpbi0+aGFzVW5pdmVyc2FsQWNjZXNzKCkpCiAgICAgICAgIG9yaWdpbi0+Z3JhbnRVbml2
ZXJzYWxBY2Nlc3MoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9i
YWxTY29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xv
YmFsU2NvcGUuaAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJHbG9iYWxTY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNyArMTAwLDcgQEAgcHVi
bGljOgogICAgIENyeXB0byYgY3J5cHRvKCk7CiAKIHByb3RlY3RlZDoKLSAgICBXb3JrZXJHbG9i
YWxTY29wZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgV29ya2VyVGhyZWFk
JiwgYm9vbCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIFJlZlB0
cjxTZWN1cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblBy
b3h5KiwgU29ja2V0UHJvdmlkZXIqKTsKKyAgICBXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwm
LCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgV29ya2VyVGhyZWFkJiwgYm9vbCBzaG91bGRCeXBh
c3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4m
JiB0b3BPcmlnaW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiwgU29ja2V0UHJvdmlk
ZXIqLCBSZWY8Y29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5PiYmKTsKIAogICAgIHZvaWQgYXBwbHlD
b250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMoY29uc3QgQ29udGVudFNlY3VyaXR5
UG9saWN5UmVzcG9uc2VIZWFkZXJzJik7CiAKQEAgLTEyNyw2ICsxMjcsNyBAQCBwcml2YXRlOgog
I2lmIEVOQUJMRShXRUJfU09DS0VUUykKICAgICBTb2NrZXRQcm92aWRlciogc29ja2V0UHJvdmlk
ZXIoKSBmaW5hbDsKICNlbmRpZgorICAgIGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3RyeSYgc2NoZW1l
UmVnaXN0cnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3NjaGVtZVJlZ2lzdHJ5LmdldCgpOyB9
CiAKICAgICBib29sIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3Vy
aXR5UG9saWN5OyB9CiAgICAgYm9vbCBpc0pTRXhlY3V0aW9uRm9yYmlkZGVuKCkgY29uc3QgZmlu
YWw7CkBAIC0xNjgsNiArMTY5LDcgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMp
CiAgICAgUmVmUHRyPFNvY2tldFByb3ZpZGVyPiBtX3NvY2tldFByb3ZpZGVyOwogI2VuZGlmCisg
ICAgUmVmPGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3RyeT4gbV9zY2hlbWVSZWdpc3RyeTsKIAogICAg
IG11dGFibGUgUmVmUHRyPENyeXB0bz4gbV9jcnlwdG87CiB9OwpJbmRleDogU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJMb2NhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJMb2NhdGlvbi5jcHAJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTG9jYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
Niw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV29ya2VyTG9jYXRp
b24uaCIKIAorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJT
ZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC03
MSw5ICs3Miw5IEBAIFN0cmluZyBXb3JrZXJMb2NhdGlvbjo6aGFzaCgpIGNvbnN0CiAgICAgcmV0
dXJuIG1fdXJsLmZyYWdtZW50SWRlbnRpZmllcigpLmlzRW1wdHkoKSA/IGVtcHR5U3RyaW5nKCkg
OiAiIyIgKyBtX3VybC5mcmFnbWVudElkZW50aWZpZXIoKTsKIH0KIAotU3RyaW5nIFdvcmtlckxv
Y2F0aW9uOjpvcmlnaW4oKSBjb25zdAorU3RyaW5nIFdvcmtlckxvY2F0aW9uOjpvcmlnaW4oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgY29uc3QKIHsKLSAgICByZXR1cm4gU2VjdXJp
dHlPcmlnaW46OmNyZWF0ZShtX3VybCktPnRvU3RyaW5nKCk7CisgICAgcmV0dXJuIFNlY3VyaXR5
T3JpZ2luOjpjcmVhdGUobV91cmwsIGNvbnRleHQuc2NoZW1lUmVnaXN0cnkoKSktPnRvU3RyaW5n
KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyTG9jYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckxvY2F0aW9uLmgJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyTG9jYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzEsMzEgKzMxLDM0
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGNsYXNzIFdvcmtlckxvY2F0aW9uIDog
cHVibGljIFJlZkNvdW50ZWQ8V29ya2VyTG9jYXRpb24+IHsKLSAgICBwdWJsaWM6Ci0gICAgICAg
IHN0YXRpYyBSZWY8V29ya2VyTG9jYXRpb24+IGNyZWF0ZShjb25zdCBVUkwmIHVybCkKLSAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV29ya2VyTG9jYXRpb24odXJs
KSk7Ci0gICAgICAgIH0KLQotICAgICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJu
IG1fdXJsOyB9Ci0KLSAgICAgICAgU3RyaW5nIGhyZWYoKSBjb25zdDsKLQotICAgICAgICAvLyBV
UkkgZGVjb21wb3NpdGlvbiBhdHRyaWJ1dGVzCi0gICAgICAgIFN0cmluZyBwcm90b2NvbCgpIGNv
bnN0OwotICAgICAgICBTdHJpbmcgaG9zdCgpIGNvbnN0OwotICAgICAgICBTdHJpbmcgaG9zdG5h
bWUoKSBjb25zdDsKLSAgICAgICAgU3RyaW5nIHBvcnQoKSBjb25zdDsKLSAgICAgICAgU3RyaW5n
IHBhdGhuYW1lKCkgY29uc3Q7Ci0gICAgICAgIFN0cmluZyBzZWFyY2goKSBjb25zdDsKLSAgICAg
ICAgU3RyaW5nIGhhc2goKSBjb25zdDsKLSAgICAgICAgU3RyaW5nIG9yaWdpbigpIGNvbnN0Owor
Y2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAotICAgIHByaXZhdGU6Ci0gICAgICAgIGV4
cGxpY2l0IFdvcmtlckxvY2F0aW9uKGNvbnN0IFVSTCYgdXJsKSA6IG1fdXJsKHVybCkgeyB9Citj
bGFzcyBXb3JrZXJMb2NhdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFdvcmtlckxvY2F0aW9uPiB7
CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxXb3JrZXJMb2NhdGlvbj4gY3JlYXRlKGNvbnN0IFVS
TCYgdXJsKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV29ya2VyTG9jYXRp
b24odXJsKSk7CisgICAgfQorCisgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBt
X3VybDsgfQorCisgICAgU3RyaW5nIGhyZWYoKSBjb25zdDsKKworICAgIC8vIFVSSSBkZWNvbXBv
c2l0aW9uIGF0dHJpYnV0ZXMKKyAgICBTdHJpbmcgcHJvdG9jb2woKSBjb25zdDsKKyAgICBTdHJp
bmcgaG9zdCgpIGNvbnN0OworICAgIFN0cmluZyBob3N0bmFtZSgpIGNvbnN0OworICAgIFN0cmlu
ZyBwb3J0KCkgY29uc3Q7CisgICAgU3RyaW5nIHBhdGhuYW1lKCkgY29uc3Q7CisgICAgU3RyaW5n
IHNlYXJjaCgpIGNvbnN0OworICAgIFN0cmluZyBoYXNoKCkgY29uc3Q7CisgICAgU3RyaW5nIG9y
aWdpbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgZXhw
bGljaXQgV29ya2VyTG9jYXRpb24oY29uc3QgVVJMJiB1cmwpCisgICAgICAgIDogbV91cmwodXJs
KSB7IH0KIAotICAgICAgICBVUkwgbV91cmw7Ci0gICAgfTsKKyAgICBVUkwgbV91cmw7Cit9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckxvY2F0aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckxvY2F0aW9uLmlkbAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJMb2NhdGlvbi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDYgQEAK
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgVVNWU3RyaW5nIHBhdGhuYW1lOwogICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBVU1ZTdHJpbmcgc2VhcmNoOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBVU1ZT
dHJpbmcgaGFzaDsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgVVNWU3RyaW5nIG9yaWdpbjsKKyAg
ICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gcmVhZG9ubHkgYXR0cmlidXRlIFVT
VlN0cmluZyBvcmlnaW47CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ck1lc3NhZ2luZ1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiTWVz
c2FnZUV2ZW50LmgiCiAjaW5jbHVkZSAiUGFnZUdyb3VwLmgiCisjaW5jbHVkZSAiUGFnZVNjaGVt
ZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1
ZGUgIldvcmtlci5oIgogI2luY2x1ZGUgIldvcmtlckluc3BlY3RvclByb3h5LmgiCkBAIC05Myw3
ICs5NCw3IEBAIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnN0YXJ0V29ya2VyR2wKICAgICBT
b2NrZXRQcm92aWRlciogc29ja2V0UHJvdmlkZXIgPSBudWxscHRyOwogI2VuZGlmCiAKLSAgICBS
ZWZQdHI8RGVkaWNhdGVkV29ya2VyVGhyZWFkPiB0aHJlYWQgPSBEZWRpY2F0ZWRXb3JrZXJUaHJl
YWQ6OmNyZWF0ZShzY3JpcHRVUkwsIHVzZXJBZ2VudCwgc291cmNlQ29kZSwgKnRoaXMsICp0aGlz
LCBzdGFydE1vZGUsIGNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycywgc2hvdWxk
QnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBkb2N1bWVudC50b3BPcmlnaW4o
KSwgcHJveHksIHNvY2tldFByb3ZpZGVyLCBydW50aW1lRmxhZ3MpOworICAgIFJlZlB0cjxEZWRp
Y2F0ZWRXb3JrZXJUaHJlYWQ+IHRocmVhZCA9IERlZGljYXRlZFdvcmtlclRocmVhZDo6Y3JlYXRl
KHNjcmlwdFVSTCwgdXNlckFnZW50LCBzb3VyY2VDb2RlLCAqdGhpcywgKnRoaXMsIHN0YXJ0TW9k
ZSwgY29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLCBzaG91bGRCeXBhc3NNYWlu
V29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIGRvY3VtZW50LnRvcE9yaWdpbigpLCBwcm94eSwg
c29ja2V0UHJvdmlkZXIsIGRvY3VtZW50LnNjaGVtZVJlZ2lzdHJ5KCksIHJ1bnRpbWVGbGFncyk7
CiAKICAgICB3b3JrZXJUaHJlYWRDcmVhdGVkKHRocmVhZCk7CiAgICAgdGhyZWFkLT5zdGFydCgp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAkocmV2aXNpb24g
MjA4Mzk4KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQ
b2xpY3lSZXNwb25zZUhlYWRlcnMuaCIKICNpbmNsdWRlICJJREJDb25uZWN0aW9uUHJveHkuaCIK
KyNpbmNsdWRlICJQYWdlU2NoZW1lUmVnaXN0cnkuaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VD
b2RlLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTb2NrZXRQcm92
aWRlci5oIgpAQCAtOTQsNyArOTUsNyBAQCBXb3JrZXJUaHJlYWRTdGFydHVwRGF0YTo6V29ya2Vy
VGhyZWFkU3RhCiB7CiB9CiAKLVdvcmtlclRocmVhZDo6V29ya2VyVGhyZWFkKGNvbnN0IFVSTCYg
c2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3QgU3RyaW5nJiBzb3VyY2VD
b2RlLCBXb3JrZXJMb2FkZXJQcm94eSYgd29ya2VyTG9hZGVyUHJveHksIFdvcmtlclJlcG9ydGlu
Z1Byb3h5JiB3b3JrZXJSZXBvcnRpbmdQcm94eSwgV29ya2VyVGhyZWFkU3RhcnRNb2RlIHN0YXJ0
TW9kZSwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiBjb250ZW50
U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMsIGJvb2wgc2hvdWxkQnlwYXNzTWFpbldvcmxk
Q29udGVudFNlY3VyaXR5UG9saWN5LCBjb25zdCBTZWN1cml0eU9yaWdpbiogdG9wT3JpZ2luLCBJ
REJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSogY29ubmVjdGlvblByb3h5LCBTb2NrZXRQcm92
aWRlciogc29ja2V0UHJvdmlkZXIsIEpTQzo6UnVudGltZUZsYWdzIHJ1bnRpbWVGbGFncykKK1dv
cmtlclRocmVhZDo6V29ya2VyVGhyZWFkKGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJp
bmcmIHVzZXJBZ2VudCwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94
eSYgd29ya2VyTG9hZGVyUHJveHksIFdvcmtlclJlcG9ydGluZ1Byb3h5JiB3b3JrZXJSZXBvcnRp
bmdQcm94eSwgV29ya2VyVGhyZWFkU3RhcnRNb2RlIHN0YXJ0TW9kZSwgY29uc3QgQ29udGVudFNl
Y3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiBjb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25z
ZUhlYWRlcnMsIGJvb2wgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5
LCBjb25zdCBTZWN1cml0eU9yaWdpbiogdG9wT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rp
b25Qcm94eSogY29ubmVjdGlvblByb3h5LCBTb2NrZXRQcm92aWRlciogc29ja2V0UHJvdmlkZXIs
IFJlZjxjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnk+JiYgc2NoZW1lUmVnaXN0cnksIEpTQzo6UnVu
dGltZUZsYWdzIHJ1bnRpbWVGbGFncykKICAgICA6IG1fdGhyZWFkSUQoMCkKICAgICAsIG1fd29y
a2VyTG9hZGVyUHJveHkod29ya2VyTG9hZGVyUHJveHkpCiAgICAgLCBtX3dvcmtlclJlcG9ydGlu
Z1Byb3h5KHdvcmtlclJlcG9ydGluZ1Byb3h5KQpAQCAtMTA2LDYgKzEwNyw3IEBAIFdvcmtlclRo
cmVhZDo6V29ya2VyVGhyZWFkKGNvbnN0IFVSTCYgc2MKICNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMp
CiAgICAgLCBtX3NvY2tldFByb3ZpZGVyKHNvY2tldFByb3ZpZGVyKQogI2VuZGlmCisgICAgLCBt
X3NjaGVtZVJlZ2lzdHJ5KFdURk1vdmUoc2NoZW1lUmVnaXN0cnkpKQogewogI2lmICFFTkFCTEUo
SU5ERVhFRF9EQVRBQkFTRSkKICAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvblByb3h5KTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaAkocmV2aXNpb24gMjA4Mzk4KQor
KysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaAkod29ya2luZyBjb3B5KQpA
QCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDxydW50aW1lL1J1
bnRpbWVGbGFncy5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC04MSwxMCArODAsMTAgQEAgcHVibGljOgogICAgIEpTQzo6UnVudGltZUZsYWdz
IHJ1bnRpbWVGbGFncygpIGNvbnN0IHsgcmV0dXJuIG1fcnVudGltZUZsYWdzOyB9CiAKIHByb3Rl
Y3RlZDoKLSAgICBXb3JrZXJUaHJlYWQoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB1c2VyQWdl
bnQsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29ya2VyTG9hZGVyUHJveHkmLCBXb3JrZXJS
ZXBvcnRpbmdQcm94eSYsIFdvcmtlclRocmVhZFN0YXJ0TW9kZSwgY29uc3QgQ29udGVudFNlY3Vy
aXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgYm9vbCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250
ZW50U2VjdXJpdHlQb2xpY3ksIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0b3BPcmlnaW4sIElEQkNs
aWVudDo6SURCQ29ubmVjdGlvblByb3h5KiwgU29ja2V0UHJvdmlkZXIqLCBKU0M6OlJ1bnRpbWVG
bGFncyk7CisgICAgV29ya2VyVGhyZWFkKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdXNlckFn
ZW50LCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlckxvYWRlclByb3h5JiwgV29ya2Vy
UmVwb3J0aW5nUHJveHkmLCBXb3JrZXJUaHJlYWRTdGFydE1vZGUsIGNvbnN0IENvbnRlbnRTZWN1
cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYsIGJvb2wgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29u
dGVudFNlY3VyaXR5UG9saWN5LCBjb25zdCBTZWN1cml0eU9yaWdpbiogdG9wT3JpZ2luLCBJREJD
bGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSosIFNvY2tldFByb3ZpZGVyKiwgUmVmPGNvbnN0IFBh
Z2VTY2hlbWVSZWdpc3RyeT4mJiwgSlNDOjpSdW50aW1lRmxhZ3MpOwogCiAgICAgLy8gRmFjdG9y
eSBtZXRob2QgZm9yIGNyZWF0aW5nIGEgbmV3IHdvcmtlciBjb250ZXh0IGZvciB0aGUgdGhyZWFk
LgotICAgIHZpcnR1YWwgUmVmPFdvcmtlckdsb2JhbFNjb3BlPiBjcmVhdGVXb3JrZXJHbG9iYWxT
Y29wZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3QgQ29udGVudFNl
Y3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgYm9vbCBzaG91bGRCeXBhc3NNYWluV29ybGRD
b250ZW50U2VjdXJpdHlQb2xpY3ksIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHRvcE9yaWdp
bikgPSAwOworICAgIHZpcnR1YWwgUmVmPFdvcmtlckdsb2JhbFNjb3BlPiBjcmVhdGVXb3JrZXJH
bG9iYWxTY29wZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3QgQ29u
dGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgYm9vbCBzaG91bGRCeXBhc3NNYWlu
V29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4mJiB0b3BP
cmlnaW4pID0gMDsKIAogICAgIC8vIEV4ZWN1dGVzIHRoZSBldmVudCBsb29wIGZvciB0aGUgd29y
a2VyIHRocmVhZC4gRGVyaXZlZCBjbGFzc2VzIGNhbiBvdmVycmlkZSB0byBwZXJmb3JtIGFjdGlv
bnMgYmVmb3JlL2FmdGVyIGVudGVyaW5nIHRoZSBldmVudCBsb29wLgogICAgIHZpcnR1YWwgdm9p
ZCBydW5FdmVudExvb3AoKTsKQEAgLTkzLDYgKzkyLDcgQEAgcHJvdGVjdGVkOgogCiAgICAgSURC
Q2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqIGlkYkNvbm5lY3Rpb25Qcm94eSgpOwogICAgIFNv
Y2tldFByb3ZpZGVyKiBzb2NrZXRQcm92aWRlcigpOworICAgIGNvbnN0IFBhZ2VTY2hlbWVSZWdp
c3RyeSYgc2NoZW1lUmVnaXN0cnkoKSBjb25zdCB7IHJldHVybiBtX3NjaGVtZVJlZ2lzdHJ5Lmdl
dCgpOyB9CiAKIHByaXZhdGU6CiAgICAgLy8gU3RhdGljIGZ1bmN0aW9uIGV4ZWN1dGVkIGFzIHRo
ZSBjb3JlIHJvdXRpbmUgb24gdGhlIG5ldyB0aHJlYWQuIFBhc3NlZCBhIHBvaW50ZXIgdG8gYSBX
b3JrZXJUaHJlYWQgb2JqZWN0LgpAQCAtMTIxLDYgKzEyMSw3IEBAIHByaXZhdGU6CiAjaWYgRU5B
QkxFKFdFQl9TT0NLRVRTKQogICAgIFJlZlB0cjxTb2NrZXRQcm92aWRlcj4gbV9zb2NrZXRQcm92
aWRlcjsKICNlbmRpZgorICAgIFJlZjxjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnk+IG1fc2NoZW1l
UmVnaXN0cnk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS94bWwvRE9NUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS94bWwv
RE9NUGFyc2VyLmNwcAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYkNvcmUveG1sL0RP
TVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDkgKzM4LDEwIEBAIEV4Y2VwdGlvbk9y
PFJlZjxEb2N1bWVudD4+IERPTVBhcnNlcjo6cGEKIHsKICAgICBpZiAoY29udGVudFR5cGUgIT0g
InRleHQvaHRtbCIgJiYgY29udGVudFR5cGUgIT0gInRleHQveG1sIiAmJiBjb250ZW50VHlwZSAh
PSAiYXBwbGljYXRpb24veG1sIiAmJiBjb250ZW50VHlwZSAhPSAiYXBwbGljYXRpb24veGh0bWwr
eG1sIiAmJiBjb250ZW50VHlwZSAhPSAiaW1hZ2Uvc3ZnK3htbCIpCiAgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBUeXBlRXJyb3IgfTsKLSAgICBhdXRvIGRvY3VtZW50ID0gRE9NSW1wbGVtZW50
YXRpb246OmNyZWF0ZURvY3VtZW50KGNvbnRlbnRUeXBlLCBudWxscHRyLCBVUkwgeyB9KTsKLSAg
ICBpZiAobV9jb250ZXh0RG9jdW1lbnQpCi0gICAgICAgIGRvY3VtZW50LT5zZXRDb250ZXh0RG9j
dW1lbnQoKm1fY29udGV4dERvY3VtZW50LmdldCgpKTsKKyAgICBpZiAoIW1fY29udGV4dERvY3Vt
ZW50KQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSU5WQUxJRF9TVEFURV9FUlIgfTsKKyAg
ICBhdXRvIGRvY3VtZW50ID0gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZURvY3VtZW50KGNvbnRl
bnRUeXBlLCBudWxscHRyLCBVUkwoKSwgbV9jb250ZXh0RG9jdW1lbnQtPnNjaGVtZVJlZ2lzdHJ5
KCkpOworICAgIGRvY3VtZW50LT5zZXRDb250ZXh0RG9jdW1lbnQoKm1fY29udGV4dERvY3VtZW50
LmdldCgpKTsKICAgICBkb2N1bWVudC0+c2V0Q29udGVudChzdHJpbmcpOwogICAgIHJldHVybiBX
VEZNb3ZlKGRvY3VtZW50KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVx
dWVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0
LmNwcAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1
ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg5LDEwICsxODksMTEgQEAgRXhjZXB0aW9uT3I8
RG9jdW1lbnQqPiBYTUxIdHRwUmVxdWVzdDo6cgogICAgICAgICAgICAgfHwgc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLT5pc1dvcmtlckdsb2JhbFNjb3BlKCkpIHsKICAgICAgICAgICAgIG1fcmVz
cG9uc2VEb2N1bWVudCA9IG51bGxwdHI7CiAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBj
b25zdCBhdXRvJiBzY2hlbWVSZWdpc3RyeSA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2No
ZW1lUmVnaXN0cnkoKTsKICAgICAgICAgICAgIGlmIChpc0hUTUwpCi0gICAgICAgICAgICAgICAg
bV9yZXNwb25zZURvY3VtZW50ID0gSFRNTERvY3VtZW50OjpjcmVhdGUoMCwgbV91cmwpOworICAg
ICAgICAgICAgICAgIG1fcmVzcG9uc2VEb2N1bWVudCA9IEhUTUxEb2N1bWVudDo6Y3JlYXRlKG51
bGxwdHIsIG1fdXJsLCBzY2hlbWVSZWdpc3RyeSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgbV9yZXNwb25zZURvY3VtZW50ID0gWE1MRG9jdW1lbnQ6OmNyZWF0ZSgwLCBtX3Vy
bCk7CisgICAgICAgICAgICAgICAgbV9yZXNwb25zZURvY3VtZW50ID0gWE1MRG9jdW1lbnQ6OmNy
ZWF0ZShudWxscHRyLCBtX3VybCwgc2NoZW1lUmVnaXN0cnkpOwogICAgICAgICAgICAgLy8gRklY
TUU6IFNldCBMYXN0LU1vZGlmaWVkLgogICAgICAgICAgICAgbV9yZXNwb25zZURvY3VtZW50LT5z
ZXRDb250ZW50KG1fcmVzcG9uc2VCdWlsZGVyLnRvU3RyaW5nUHJlc2VydmVDYXBhY2l0eSgpKTsK
ICAgICAgICAgICAgIG1fcmVzcG9uc2VEb2N1bWVudC0+c2V0Q29udGV4dERvY3VtZW50KGRvd25j
YXN0PERvY3VtZW50Pigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSk7CkBAIC02NDEsNyArNjQy
LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZQogICAgICAgICB9
CiAgICAgfQogCi0gICAgbV9zYW1lT3JpZ2luUmVxdWVzdCA9IHNlY3VyaXR5T3JpZ2luKCktPmNh
blJlcXVlc3QobV91cmwpOworICAgIG1fc2FtZU9yaWdpblJlcXVlc3QgPSBzZWN1cml0eU9yaWdp
bigpLT5jYW5SZXF1ZXN0KG1fdXJsLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNjaGVtZVJl
Z2lzdHJ5KCkpOwogCiAgICAgLy8gV2UgYWxzbyByZW1lbWJlciB3aGV0aGVyIHVwbG9hZCBldmVu
dHMgc2hvdWxkIGJlIGFsbG93ZWQgZm9yIHRoaXMgcmVxdWVzdCBpbiBjYXNlIHRoZSB1cGxvYWQg
bGlzdGVuZXJzIGFyZQogICAgIC8vIGFkZGVkIGFmdGVyIHRoZSByZXF1ZXN0IGlzIHN0YXJ0ZWQu
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nvci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuY3BwCShyZXZpc2lvbiAyMDgzOTgp
CisrKyBTb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTY3LDcgKzY3LDcgQEAgWFNMVFByb2Nlc3Nvcjo6flhTTFRQcm9jZXNzb3IoKQogfQogCiBS
ZWY8RG9jdW1lbnQ+IFhTTFRQcm9jZXNzb3I6OmNyZWF0ZURvY3VtZW50RnJvbVNvdXJjZShjb25z
dCBTdHJpbmcmIHNvdXJjZVN0cmluZywKLSAgICBjb25zdCBTdHJpbmcmIHNvdXJjZUVuY29kaW5n
LCBjb25zdCBTdHJpbmcmIHNvdXJjZU1JTUVUeXBlLCBOb2RlKiBzb3VyY2VOb2RlLCBGcmFtZSog
ZnJhbWUpCisgICAgY29uc3QgU3RyaW5nJiBzb3VyY2VFbmNvZGluZywgY29uc3QgU3RyaW5nJiBz
b3VyY2VNSU1FVHlwZSwgTm9kZSogc291cmNlTm9kZSwgRnJhbWUqIGZyYW1lLCBjb25zdCBQYWdl
U2NoZW1lUmVnaXN0cnkmIHNjaGVtZVJlZ2lzdHJ5KQogewogICAgIFJlZjxEb2N1bWVudD4gb3du
ZXJEb2N1bWVudChzb3VyY2VOb2RlLT5kb2N1bWVudCgpKTsKICAgICBib29sIHNvdXJjZUlzRG9j
dW1lbnQgPSAoc291cmNlTm9kZSA9PSAmb3duZXJEb2N1bWVudC5nZXQoKSk7CkBAIC03NSwxMCAr
NzUsMTAgQEAgUmVmPERvY3VtZW50PiBYU0xUUHJvY2Vzc29yOjpjcmVhdGVEb2N1bQogCiAgICAg
UmVmUHRyPERvY3VtZW50PiByZXN1bHQ7CiAgICAgaWYgKHNvdXJjZU1JTUVUeXBlID09ICJ0ZXh0
L3BsYWluIikgewotICAgICAgICByZXN1bHQgPSBYTUxEb2N1bWVudDo6Y3JlYXRlWEhUTUwoZnJh
bWUsIHNvdXJjZUlzRG9jdW1lbnQgPyBvd25lckRvY3VtZW50LT51cmwoKSA6IFVSTCgpKTsKKyAg
ICAgICAgcmVzdWx0ID0gWE1MRG9jdW1lbnQ6OmNyZWF0ZVhIVE1MKGZyYW1lLCBzb3VyY2VJc0Rv
Y3VtZW50ID8gb3duZXJEb2N1bWVudC0+dXJsKCkgOiBVUkwoKSwgc2NoZW1lUmVnaXN0cnkpOwog
ICAgICAgICB0cmFuc2Zvcm1UZXh0U3RyaW5nVG9YSFRNTERvY3VtZW50U3RyaW5nKGRvY3VtZW50
U291cmNlKTsKICAgICB9IGVsc2UKLSAgICAgICAgcmVzdWx0ID0gRE9NSW1wbGVtZW50YXRpb246
OmNyZWF0ZURvY3VtZW50KHNvdXJjZU1JTUVUeXBlLCBmcmFtZSwgc291cmNlSXNEb2N1bWVudCA/
IG93bmVyRG9jdW1lbnQtPnVybCgpIDogVVJMKCkpOworICAgICAgICByZXN1bHQgPSBET01JbXBs
ZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQoc291cmNlTUlNRVR5cGUsIGZyYW1lLCBzb3VyY2VJ
c0RvY3VtZW50ID8gb3duZXJEb2N1bWVudC0+dXJsKCkgOiBVUkwoKSwgc2NoZW1lUmVnaXN0cnkp
OwogCiAgICAgLy8gQmVmb3JlIHBhcnNpbmcsIHdlIG5lZWQgdG8gc2F2ZSAmIGRldGFjaCB0aGUg
b2xkIGRvY3VtZW50IGFuZCBnZXQgdGhlIG5ldyBkb2N1bWVudAogICAgIC8vIGluIHBsYWNlLiBX
ZSBoYXZlIHRvIGRvIHRoaXMgb25seSBpZiB3ZSdyZSByZW5kZXJpbmcgdGhlIHJlc3VsdCBkb2N1
bWVudC4KQEAgLTExNyw3ICsxMTcsNyBAQCBSZWZQdHI8RG9jdW1lbnQ+IFhTTFRQcm9jZXNzb3I6
OnRyYW5zZm9yCiAgICAgU3RyaW5nIHJlc3VsdEVuY29kaW5nOwogICAgIGlmICghdHJhbnNmb3Jt
VG9TdHJpbmcoKnNvdXJjZU5vZGUsIHJlc3VsdE1JTUVUeXBlLCByZXN1bHRTdHJpbmcsIHJlc3Vs
dEVuY29kaW5nKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIGNyZWF0ZURv
Y3VtZW50RnJvbVNvdXJjZShyZXN1bHRTdHJpbmcsIHJlc3VsdEVuY29kaW5nLCByZXN1bHRNSU1F
VHlwZSwgc291cmNlTm9kZSwgMCk7CisgICAgcmV0dXJuIGNyZWF0ZURvY3VtZW50RnJvbVNvdXJj
ZShyZXN1bHRTdHJpbmcsIHJlc3VsdEVuY29kaW5nLCByZXN1bHRNSU1FVHlwZSwgc291cmNlTm9k
ZSwgbnVsbHB0ciwgc291cmNlTm9kZS0+ZG9jdW1lbnQoKS5zY2hlbWVSZWdpc3RyeSgpKTsKIH0K
IAogUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IFhTTFRQcm9jZXNzb3I6OnRyYW5zZm9ybVRvRnJh
Z21lbnQoTm9kZSogc291cmNlTm9kZSwgRG9jdW1lbnQqIG91dHB1dERvYykKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUveG1sL1hTTFRQcm9jZXNzb3IuaAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYkNv
cmUveG1sL1hTTFRQcm9jZXNzb3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIERvY3VtZW50OwogY2xhc3Mg
RG9jdW1lbnRGcmFnbWVudDsKK2NsYXNzIFBhZ2VTY2hlbWVSZWdpc3RyeTsKIAogY2xhc3MgWFNM
VFByb2Nlc3NvciA6IHB1YmxpYyBSZWZDb3VudGVkPFhTTFRQcm9jZXNzb3I+IHsKIHB1YmxpYzoK
QEAgLTQ2LDcgKzQ3LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRYU0xTdHlsZVNoZWV0KFJl
ZlB0cjxYU0xTdHlsZVNoZWV0PiYmIHN0eWxlU2hlZXQpIHsgbV9zdHlsZXNoZWV0ID0gV1RGTW92
ZShzdHlsZVNoZWV0KTsgfQogICAgIGJvb2wgdHJhbnNmb3JtVG9TdHJpbmcoTm9kZSYgc291cmNl
LCBTdHJpbmcmIHJlc3VsdE1JTUVUeXBlLCBTdHJpbmcmIHJlc3VsdFN0cmluZywgU3RyaW5nJiBy
ZXN1bHRFbmNvZGluZyk7Ci0gICAgUmVmPERvY3VtZW50PiBjcmVhdGVEb2N1bWVudEZyb21Tb3Vy
Y2UoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgc291cmNlRW5jb2RpbmcsIGNv
bnN0IFN0cmluZyYgc291cmNlTUlNRVR5cGUsIE5vZGUqIHNvdXJjZU5vZGUsIEZyYW1lKiBmcmFt
ZSk7CisgICAgUmVmPERvY3VtZW50PiBjcmVhdGVEb2N1bWVudEZyb21Tb3VyY2UoY29uc3QgU3Ry
aW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgc291cmNlRW5jb2RpbmcsIGNvbnN0IFN0cmluZyYg
c291cmNlTUlNRVR5cGUsIE5vZGUqIHNvdXJjZU5vZGUsIEZyYW1lKiwgY29uc3QgUGFnZVNjaGVt
ZVJlZ2lzdHJ5Jik7CiAgICAgCiAgICAgLy8gRE9NIG1ldGhvZHMKICAgICB2b2lkIGltcG9ydFN0
eWxlc2hlZXQoUmVmUHRyPE5vZGU+JiYgc3R5bGUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS94bWwv
WFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3ht
bC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEy
NCwxMSArMTI0LDEzIEBAIHN0YXRpYyB4bWxEb2NQdHIgZG9jTG9hZGVyRnVuYyhjb25zdCB4bWwK
IAogICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOwogCi0gICAgICAgIGJvb2wgcmVx
dWVzdEFsbG93ZWQgPSBnbG9iYWxDYWNoZWRSZXNvdXJjZUxvYWRlci0+ZnJhbWUoKSAmJiBnbG9i
YWxDYWNoZWRSZXNvdXJjZUxvYWRlci0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2Fu
UmVxdWVzdCh1cmwpOworICAgICAgICBEb2N1bWVudCogb3duZXJEb2N1bWVudCA9IGdsb2JhbFBy
b2Nlc3Nvci0+eHNsU3R5bGVzaGVldCgpLT5vd25lckRvY3VtZW50KCk7CisgICAgICAgIGNvbnN0
IFBhZ2VTY2hlbWVSZWdpc3RyeSYgc2NoZW1lUmVnaXN0cnkgPSBvd25lckRvY3VtZW50LT5zY2hl
bWVSZWdpc3RyeSgpOworICAgICAgICBib29sIHJlcXVlc3RBbGxvd2VkID0gZ2xvYmFsQ2FjaGVk
UmVzb3VyY2VMb2FkZXItPmZyYW1lKCkgJiYgZ2xvYmFsQ2FjaGVkUmVzb3VyY2VMb2FkZXItPmRv
Y3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhblJlcXVlc3QodXJsLCBzY2hlbWVSZWdpc3Ry
eSk7CiAgICAgICAgIGlmIChyZXF1ZXN0QWxsb3dlZCkgewogICAgICAgICAgICAgZ2xvYmFsQ2Fj
aGVkUmVzb3VyY2VMb2FkZXItPmZyYW1lKCktPmxvYWRlcigpLmxvYWRSZXNvdXJjZVN5bmNocm9u
b3VzbHkodXJsLCBBbGxvd1N0b3JlZENyZWRlbnRpYWxzLCBDbGllbnRDcmVkZW50aWFsUG9saWN5
OjpNYXlBc2tDbGllbnRGb3JDcmVkZW50aWFscywgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKTsKICAg
ICAgICAgICAgIGlmIChlcnJvci5pc051bGwoKSkKLSAgICAgICAgICAgICAgICByZXF1ZXN0QWxs
b3dlZCA9IGdsb2JhbENhY2hlZFJlc291cmNlTG9hZGVyLT5kb2N1bWVudCgpLT5zZWN1cml0eU9y
aWdpbigpLT5jYW5SZXF1ZXN0KHJlc3BvbnNlLnVybCgpKTsKKyAgICAgICAgICAgICAgICByZXF1
ZXN0QWxsb3dlZCA9IGdsb2JhbENhY2hlZFJlc291cmNlTG9hZGVyLT5kb2N1bWVudCgpLT5zZWN1
cml0eU9yaWdpbigpLT5jYW5SZXF1ZXN0KHJlc3BvbnNlLnVybCgpLCBzY2hlbWVSZWdpc3RyeSk7
CiAgICAgICAgICAgICBlbHNlIGlmIChkYXRhKQogICAgICAgICAgICAgICAgIGRhdGEgPSBudWxs
cHRyOwogICAgICAgICB9CkBAIC0xMzksNyArMTQxLDcgQEAgc3RhdGljIHhtbERvY1B0ciBkb2NM
b2FkZXJGdW5jKGNvbnN0IHhtbAogICAgICAgICB9CiAKICAgICAgICAgUGFnZUNvbnNvbGVDbGll
bnQqIGNvbnNvbGUgPSBudWxscHRyOwotICAgICAgICBGcmFtZSogZnJhbWUgPSBnbG9iYWxQcm9j
ZXNzb3ItPnhzbFN0eWxlc2hlZXQoKS0+b3duZXJEb2N1bWVudCgpLT5mcmFtZSgpOworICAgICAg
ICBGcmFtZSogZnJhbWUgPSBvd25lckRvY3VtZW50LT5mcmFtZSgpOwogICAgICAgICBpZiAoZnJh
bWUgJiYgZnJhbWUtPnBhZ2UoKSkKICAgICAgICAgICAgIGNvbnNvbGUgPSAmZnJhbWUtPnBhZ2Uo
KS0+Y29uc29sZSgpOwogICAgICAgICB4bWxTZXRTdHJ1Y3R1cmVkRXJyb3JGdW5jKGNvbnNvbGUs
IFhTTFRQcm9jZXNzb3I6OnBhcnNlRXJyb3JGdW5jKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3ht
bC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAJKHJldmlz
aW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJz
ZXJMaWJ4bWwyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDA4LDcgKzQwOCw3IEBAIHN0YXRpYyB2
b2lkIHN3aXRjaFRvVVRGMTYoeG1sUGFyc2VyQ3R4dFAKICAgICB4bWxTd2l0Y2hFbmNvZGluZyhj
dHh0LCBCT01IaWdoQnl0ZSA9PSAweEZGID8gWE1MX0NIQVJfRU5DT0RJTkdfVVRGMTZMRSA6IFhN
TF9DSEFSX0VOQ09ESU5HX1VURjE2QkUpOwogfQogCi1zdGF0aWMgYm9vbCBzaG91bGRBbGxvd0V4
dGVybmFsTG9hZChjb25zdCBVUkwmIHVybCkKK3N0YXRpYyBib29sIHNob3VsZEFsbG93RXh0ZXJu
YWxMb2FkKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnkmIHNjaGVtZVJl
Z2lzdHJ5KQogewogICAgIFN0cmluZyB1cmxTdHJpbmcgPSB1cmwuc3RyaW5nKCk7CiAKQEAgLTQz
Niw3ICs0MzYsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRBbGxvd0V4dGVybmFsTG9hZChjb25zCiAg
ICAgLy8gcmV0cmlldmVkIGNvbnRlbnQuICBJZiB3ZSBoYWQgbW9yZSBjb250ZXh0LCB3ZSBjb3Vs
ZCBwb3RlbnRpYWxseSBhbGxvdwogICAgIC8vIHRoZSBwYXJzZXIgdG8gbG9hZCBhIERURC4gIEFz
IHRoaW5ncyBzdGFuZCwgd2UgdGFrZSB0aGUgY29uc2VydmF0aXZlCiAgICAgLy8gcm91dGUgYW5k
IGFsbG93IHNhbWUtb3JpZ2luIHJlcXVlc3RzIG9ubHkuCi0gICAgaWYgKCFYTUxEb2N1bWVudFBh
cnNlclNjb3BlOjpjdXJyZW50Q2FjaGVkUmVzb3VyY2VMb2FkZXItPmRvY3VtZW50KCktPnNlY3Vy
aXR5T3JpZ2luKCktPmNhblJlcXVlc3QodXJsKSkgeworICAgIGlmICghWE1MRG9jdW1lbnRQYXJz
ZXJTY29wZTo6Y3VycmVudENhY2hlZFJlc291cmNlTG9hZGVyLT5kb2N1bWVudCgpLT5zZWN1cml0
eU9yaWdpbigpLT5jYW5SZXF1ZXN0KHVybCwgc2NoZW1lUmVnaXN0cnkpKSB7CiAgICAgICAgIFhN
TERvY3VtZW50UGFyc2VyU2NvcGU6OmN1cnJlbnRDYWNoZWRSZXNvdXJjZUxvYWRlci0+cHJpbnRB
Y2Nlc3NEZW5pZWRNZXNzYWdlKHVybCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBA
IC00NTEsNyArNDUxLDExIEBAIHN0YXRpYyB2b2lkKiBvcGVuRnVuYyhjb25zdCBjaGFyKiB1cmkp
CiAKICAgICBVUkwgdXJsKFVSTCgpLCB1cmkpOwogCi0gICAgaWYgKCFzaG91bGRBbGxvd0V4dGVy
bmFsTG9hZCh1cmwpKQorICAgIGF1dG8qIGNhY2hlZFJlc291cmNlTG9hZGVyID0gWE1MRG9jdW1l
bnRQYXJzZXJTY29wZTo6Y3VycmVudENhY2hlZFJlc291cmNlTG9hZGVyOworICAgIGlmICghY2Fj
aGVkUmVzb3VyY2VMb2FkZXIpCisgICAgICAgIHJldHVybiAmZ2xvYmFsRGVzY3JpcHRvcjsKKyAg
ICBhdXRvJiBzY2hlbWVSZWdpc3RyeSA9IGNhY2hlZFJlc291cmNlTG9hZGVyLT5zY2hlbWVSZWdp
c3RyeSgpOworICAgIGlmICghc2hvdWxkQWxsb3dFeHRlcm5hbExvYWQodXJsLCBzY2hlbWVSZWdp
c3RyeSkpCiAgICAgICAgIHJldHVybiAmZ2xvYmFsRGVzY3JpcHRvcjsKIAogICAgIFJlc291cmNl
RXJyb3IgZXJyb3I7CkBAIC00NjAsNyArNDY0LDYgQEAgc3RhdGljIHZvaWQqIG9wZW5GdW5jKGNv
bnN0IGNoYXIqIHVyaSkKIAogCiAgICAgewotICAgICAgICBDYWNoZWRSZXNvdXJjZUxvYWRlciog
Y2FjaGVkUmVzb3VyY2VMb2FkZXIgPSBYTUxEb2N1bWVudFBhcnNlclNjb3BlOjpjdXJyZW50Q2Fj
aGVkUmVzb3VyY2VMb2FkZXI7CiAgICAgICAgIFhNTERvY3VtZW50UGFyc2VyU2NvcGUgc2NvcGUo
bnVsbHB0cik7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgcmVzdG9yZSB0aGUgb3JpZ2lu
YWwgZ2xvYmFsIGVycm9yIGhhbmRsZXIgYXMgd2VsbC4KIApAQCAtNDcwLDcgKzQ3Myw3IEBAIHN0
YXRpYyB2b2lkKiBvcGVuRnVuYyhjb25zdCBjaGFyKiB1cmkpCiAKICAgICAvLyBXZSBoYXZlIHRv
IGNoZWNrIHRoZSBVUkwgYWdhaW4gYWZ0ZXIgdGhlIGxvYWQgdG8gY2F0Y2ggcmVkaXJlY3RzLgog
ICAgIC8vIFNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTYz
Pi4KLSAgICBpZiAoIXNob3VsZEFsbG93RXh0ZXJuYWxMb2FkKHJlc3BvbnNlLnVybCgpKSkKKyAg
ICBpZiAoIXNob3VsZEFsbG93RXh0ZXJuYWxMb2FkKHJlc3BvbnNlLnVybCgpLCBzY2hlbWVSZWdp
c3RyeSkpCiAgICAgICAgIHJldHVybiAmZ2xvYmFsRGVzY3JpcHRvcjsKICAgICBWZWN0b3I8Y2hh
cj4gYnVmZmVyOwogICAgIGlmIChkYXRhKQpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMjA4NDAw
KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTE3IEBACisyMDE2LTExLTA4ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgSW50cm9kdWNlIFBhZ2VTY2hlbWVSZWdpc3RyeQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0NTM1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3Mv
RGF0YWJhc2VQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RGF0YWJhc2VQcm9jZXNzOjpp
bmRleGVkRGF0YWJhc2VPcmlnaW5zKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OmZldGNoRGlza0NhY2hlRW50cmllcyk6Cisg
ICAgICAgIChXZWJLaXQ6OmNsZWFyRGlza0NhY2hlRW50cmllcyk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpwYXJ0aXRpb25OYW1l
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNmVVJMQ2FjaGVP
cmlnaW5zKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNsZWFy
Q0ZVUkxDYWNoZUZvck9yaWdpbnMpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9BUEkvQVBJ
U2VjdXJpdHlPcmlnaW4uaDoKKyAgICAgICAgKEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZy
b21TdHJpbmcpOgorICAgICAgICAoQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKToKKyAgICAg
ICAgKEFQSTo6U2VjdXJpdHlPcmlnaW46OnNlY3VyaXR5T3JpZ2luKToKKyAgICAgICAgKEFQSTo6
U2VjdXJpdHlPcmlnaW46OlNlY3VyaXR5T3JpZ2luKToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2Mv
V0tTZWN1cml0eU9yaWdpblJlZi5jcHA6CisgICAgICAgIChXS1NlY3VyaXR5T3JpZ2luQ3JlYXRl
RnJvbVN0cmluZyk6CisgICAgICAgIChXS1NlY3VyaXR5T3JpZ2luQ3JlYXRlRnJvbURhdGFiYXNl
SWRlbnRpZmllcik6CisgICAgICAgIChXS1NlY3VyaXR5T3JpZ2luQ3JlYXRlKToKKyAgICAgICAg
KiBTaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0Lmg6CisgICAgICAgIChXZWJLaXQ6OnRvQ29w
aWVkQVBJKToKKyAgICAgICAgKiBTaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YTo6RW50cnk6OmRlY29kZSk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9BUElGcmFtZUluZm8uY3BwOgorICAgICAgICAoQVBJOjpGcmFtZUluZm86
OkZyYW1lSW5mbyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oOgorICAg
ICAgICAoQVBJOjpVSUNsaWVudDo6Y3JlYXRlTmV3UGFnZSk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLRnJhbWUuY3BwOgorICAgICAgICAoV0tGcmFtZUNyZWF0ZUZyYW1lSW5mbyk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5jcHA6Cisg
ICAgICAgIChXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2lu
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdLUGFn
ZVNldFBhZ2VVSUNsaWVudCk6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlTmF2aWdhdGlvbkNsaWVu
dCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAg
ICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGYWlsUHJv
dmlzaW9uYWxMb2FkSW5TdWJmcmFtZVdpdGhFcnJvcik6CisgICAgICAgICogVUlQcm9jZXNzL0Nv
Y29hL1VJRGVsZWdhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5t
bToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmNyZWF0ZU5ld1BhZ2Up
OgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuSmF2YVNjcmlwdEFs
ZXJ0KToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bkphdmFTY3Jp
cHRDb25maXJtKToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bkph
dmFTY3JpcHRQcm9tcHQpOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6
cnVuT3BlblBhbmVsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3Rp
ZmljYXRpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb246OldlYk5vdGlm
aWNhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0
aW9uTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFu
YWdlclByb3h5Ojpwcm92aWRlckRpZFVwZGF0ZU5vdGlmaWNhdGlvblBvbGljeSk6CisgICAgICAg
ICogVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL1N0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2Vy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpkZWxl
dGVEYXRhYmFzZXNNb2RpZmllZFNpbmNlKToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxTdG9yYWdl
RGF0YWJhc2VUcmFja2VyOjpvcmlnaW5zKToKKyAgICAgICAgKiBVSVByb2Nlc3MvU3RvcmFnZS9T
dG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpjcmVh
dGVMb2NhbFN0b3JhZ2VNYXApOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6Y3Jl
YXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTWFwKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1h
bmFnZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTWFwKToKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6cmVxdWVzdFVzZXJNZWRp
YVBlcm1pc3Npb25Gb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlclByb3h5OjplbnVtZXJhdGVNZWRpYURldmljZXNGb3JGcmFtZSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZXhjZWVkZWREYXRhYmFzZVF1b3RhKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdp
blF1b3RhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0R2VvbG9jYXRp
b25QZXJtaXNzaW9uRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJl
cXVlc3ROb3RpZmljYXRpb25QZXJtaXNzaW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmU6OmZldGNoRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnJl
bW92ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjptZWRpYUtleU9y
aWdpbnMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGUuY3BwOgorICAgICAgICAoV0tCdW5kbGVBZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSk6
CisgICAgICAgIChXS0J1bmRsZVJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KToKKyAg
ICAgICAgKFdLQnVuZGxlU2V0RGF0YWJhc2VRdW90YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwOgorICAgICAgICAoV0tCdW5kbGVQ
YWdlQ2xlYXJBcHBsaWNhdGlvbkNhY2hlRm9yT3JpZ2luKToKKyAgICAgICAgKFdLQnVuZGxlUGFn
ZUdldEFwcENhY2hlVXNhZ2VGb3JPcmlnaW4pOgorICAgICAgICAoV0tCdW5kbGVQYWdlU2V0QXBw
bGljYXRpb25DYWNoZU9yaWdpblF1b3RhKToKKyAgICAgICAgKFdLQnVuZGxlUGFnZVJlc2V0QXBw
bGljYXRpb25DYWNoZU9yaWdpblF1b3RhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5k
bGU6OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KToKKyAgICAgICAgKFdlYktpdDo6SW5q
ZWN0ZWRCdW5kbGU6OnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyOjptZWRpYUtleVN0b3JhZ2VE
aXJlY3RvcnlGb3JPcmlnaW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYUtleVN0b3JhZ2VN
YW5hZ2VyOjpnZXRNZWRpYUtleU9yaWdpbnMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6cGVyZm9ybUZy
YW1lTG9hZFVSTFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3Ojpsb2FkVVJM
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6ZXhjZWVkZWREYXRhYmFzZVF1
b3RhKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpyZWFjaGVkQXBwbGljYXRp
b25DYWNoZU9yaWdpblF1b3RhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRG9j
dW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJEb2N1bWVudExvYWRlcjo6V2Vi
RG9jdW1lbnRMb2FkZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJEb2N1bWVu
dExvYWRlci5oOgorICAgICAgICAoV2ViS2l0OjpXZWJEb2N1bWVudExvYWRlcjo6Y3JlYXRlKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJGcmFtZTo6YWxsb3dzRm9sbG93aW5nTGluayk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjcmVhdGVE
b2N1bWVudExvYWRlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpmZXRjaFdlYnNpdGVEYXRhKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6b3Jp
Z2luKToKKwogMjAxNi0xMS0wNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMDgyOTMuCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNz
LmNwcAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNz
L0RhdGFiYXNlUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKICNp
bmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0lEQktleURh
dGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9QYWdlU2NoZW1lUmVnaXN0cnkuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Nlc3Npb25JRC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dEVuY29kaW5nLmg+CiAjaW5jbHVkZSA8d3RmL0Nyb3Nz
VGhyZWFkVGFzay5oPgpAQCAtMjc3LDcgKzI3OCw3IEBAIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW4+PiAKICAgICBmb3IgKGF1dG8mIG9yaWdpblBhdGggOiBsaXN0RGlyZWN0
b3J5KG1faW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5LCAiKiIpKSB7CiAgICAgICAgIFN0cmluZyBk
YXRhYmFzZUlkZW50aWZpZXIgPSBwYXRoR2V0RmlsZU5hbWUob3JpZ2luUGF0aCk7CiAKLSAgICAg
ICAgaWYgKGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6bWF5YmVDcmVhdGVG
cm9tRGF0YWJhc2VJZGVudGlmaWVyKGRhdGFiYXNlSWRlbnRpZmllcikpCisgICAgICAgIGlmIChh
dXRvIHNlY3VyaXR5T3JpZ2luID0gU2VjdXJpdHlPcmlnaW46Om1heWJlQ3JlYXRlRnJvbURhdGFi
YXNlSWRlbnRpZmllcihkYXRhYmFzZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VTY2hlbWVSZWdp
c3RyeTo6Y3JlYXRlKCkpKQogICAgICAgICAgICAgc2VjdXJpdHlPcmlnaW5zLmFwcGVuZChXVEZN
b3ZlKHNlY3VyaXR5T3JpZ2luKSk7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCShyZXZpc2lvbiAyMDgzOTgpCisr
KyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU0LDYgKzU0LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0RpYWdub3N0aWNM
b2dnaW5nQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Mb2dJbml0aWFsaXphdGlvbi5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9QYWdlU2NoZW1lUmVnaXN0cnkuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtQ29v
a2llSmFyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgpAQCAtMzI2LDcgKzMyNyw3IEBA
IHN0YXRpYyB2b2lkIGZldGNoRGlza0NhY2hlRW50cmllcyhTZXNzaW8KICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gb3Jp
Z2luc0FuZFNpemVzLmFkZChTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHRyYXZlcnNhbEVudHJ5LT5l
bnRyeS5yZXNwb25zZSgpLnVybCgpKSwgMCk7CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IG9y
aWdpbnNBbmRTaXplcy5hZGQoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh0cmF2ZXJzYWxFbnRyeS0+
ZW50cnkucmVzcG9uc2UoKS51cmwoKSwgUGFnZVNjaGVtZVJlZ2lzdHJ5OjpjcmVhdGUoKSksIDAp
OwogCiAgICAgICAgICAgICBpZiAoZmV0Y2hPcHRpb25zLmNvbnRhaW5zKFdlYnNpdGVEYXRhRmV0
Y2hPcHRpb246OkNvbXB1dGVTaXplcykpCiAgICAgICAgICAgICAgICAgcmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZSArPSB0cmF2ZXJzYWxFbnRyeS0+ZW50cnkuc291cmNlU3RvcmFnZVJlY29yZCgpLmhl
YWRlci5zaXplKCkgKyB0cmF2ZXJzYWxFbnRyeS0+cmVjb3JkSW5mby5ib2R5U2l6ZTsKQEAgLTMz
NSwxNyArMzM2LDYgQEAgc3RhdGljIHZvaWQgZmV0Y2hEaXNrQ2FjaGVFbnRyaWVzKFNlc3Npbwog
ICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCi0KLSAgICBWZWN0b3I8V2Vic2l0ZURhdGE6
OkVudHJ5PiBlbnRyaWVzOwotCi0jaWYgVVNFKENGVVJMQ0FDSEUpCi0gICAgZm9yIChhdXRvJiBv
cmlnaW4gOiBOZXR3b3JrUHJvY2Vzczo6Y2ZVUkxDYWNoZU9yaWdpbnMoKSkKLSAgICAgICAgZW50
cmllcy5hcHBlbmQoV2Vic2l0ZURhdGE6OkVudHJ5IHsgV1RGTW92ZShvcmlnaW4pLCBXZWJzaXRl
RGF0YVR5cGU6OkRpc2tDYWNoZSwgMCB9KTsKLSNlbmRpZgotCi0gICAgUnVuTG9vcDo6bWFpbigp
LmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
LCBlbnRyaWVzID0gV1RGTW92ZShlbnRyaWVzKV0gewotICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihlbnRyaWVzKTsKLSAgICB9KTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZmV0Y2hXZWJz
aXRlRGF0YShTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB3
ZWJzaXRlRGF0YVR5cGVzLCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4gZmV0Y2hP
cHRpb25zLCB1aW50NjRfdCBjYWxsYmFja0lEKQpAQCAtNDE3LDEyICs0MDcsMTIgQEAgc3RhdGlj
IHZvaWQgY2xlYXJEaXNrQ2FjaGVFbnRyaWVzKGNvbnN0IAogICAgIGlmIChOZXR3b3JrQ2FjaGU6
OnNpbmdsZXRvbigpLmlzRW5hYmxlZCgpKSB7CiAgICAgICAgIEhhc2hTZXQ8UmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPj4gb3JpZ2luc1RvRGVsZXRlOwogICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6
IG9yaWdpbnMpCi0gICAgICAgICAgICBvcmlnaW5zVG9EZWxldGUuYWRkKG9yaWdpbi5zZWN1cml0
eU9yaWdpbigpKTsKKyAgICAgICAgICAgIG9yaWdpbnNUb0RlbGV0ZS5hZGQob3JpZ2luLnNlY3Vy
aXR5T3JpZ2luKFBhZ2VTY2hlbWVSZWdpc3RyeTo6Y3JlYXRlKCkpKTsKIAogICAgICAgICBWZWN0
b3I8TmV0d29ya0NhY2hlOjpLZXk+IGNhY2hlS2V5c1RvRGVsZXRlOwogICAgICAgICBOZXR3b3Jr
Q2FjaGU6OnNpbmdsZXRvbigpLnRyYXZlcnNlKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpLCBvcmlnaW5zVG9EZWxldGUgPSBXVEZNb3ZlKG9yaWdpbnNUb0Rl
bGV0ZSksIGNhY2hlS2V5c1RvRGVsZXRlID0gV1RGTW92ZShjYWNoZUtleXNUb0RlbGV0ZSldKGF1
dG8qIHRyYXZlcnNhbEVudHJ5KSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICh0cmF2ZXJzYWxF
bnRyeSkgewotICAgICAgICAgICAgICAgIGlmIChvcmlnaW5zVG9EZWxldGUuY29udGFpbnMoU2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZSh0cmF2ZXJzYWxFbnRyeS0+ZW50cnkucmVzcG9uc2UoKS51cmwo
KSkpKQorICAgICAgICAgICAgICAgIGlmIChvcmlnaW5zVG9EZWxldGUuY29udGFpbnMoU2VjdXJp
dHlPcmlnaW46OmNyZWF0ZSh0cmF2ZXJzYWxFbnRyeS0+ZW50cnkucmVzcG9uc2UoKS51cmwoKSwg
UGFnZVNjaGVtZVJlZ2lzdHJ5OjpjcmVhdGUoKSkpKQogICAgICAgICAgICAgICAgICAgICBjYWNo
ZUtleXNUb0RlbGV0ZS5hcHBlbmQodHJhdmVyc2FsRW50cnktPmVudHJ5LmtleSgpKTsKICAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CkBAIC00MzgsMTAgKzQyOCw2IEBAIHN0
YXRpYyB2b2lkIGNsZWFyRGlza0NhY2hlRW50cmllcyhjb25zdCAKICAgICB9CiAjZW5kaWYKIAot
I2lmIFVTRShDRlVSTENBQ0hFKQotICAgIE5ldHdvcmtQcm9jZXNzOjpjbGVhckNGVVJMQ2FjaGVG
b3JPcmlnaW5zKG9yaWdpbnMpOwotI2VuZGlmCi0KICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0
Y2goV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgJKHJldmlzaW9uIDIwODM5OCkK
KysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTk2LDExICs5Niw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGxvZ0RpYWdub3N0
aWNNZXNzYWdlV2l0aFJlc3VsdCh1aW50NjRfdCB3ZWJQYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dp
bmdSZXN1bHRUeXBlLCBXZWJDb3JlOjpTaG91bGRTYW1wbGUpOwogICAgIHZvaWQgbG9nRGlhZ25v
c3RpY01lc3NhZ2VXaXRoVmFsdWUodWludDY0X3Qgd2ViUGFnZUlELCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIGNvbnN0IFN0cmluZyYgdmFsdWUsIFdl
YkNvcmU6OlNob3VsZFNhbXBsZSk7CiAKLSNpZiBVU0UoQ0ZVUkxDQUNIRSkKLSAgICBzdGF0aWMg
VmVjdG9yPFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4+IGNmVVJMQ2FjaGVPcmlnaW5zKCk7
Ci0gICAgc3RhdGljIHZvaWQgY2xlYXJDRlVSTENhY2hlRm9yT3JpZ2lucyhjb25zdCBWZWN0b3I8
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYpOwotI2VuZGlmCi0KICNpZiBQTEFURk9STShD
T0NPQSkKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBzb3VyY2VBcHBsaWNhdGlvbkF1ZGl0RGF0
YSgpIGNvbnN0OwogICAgIHZvaWQgY2xlYXJIU1RTQ2FjaGUoV2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmll
ZFNpbmNlKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtQcm9jZXNzQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQkocmV2aXNpb24gMjA4Mzk4KQorKysg
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5t
bQkod29ya2luZyBjb3B5KQpAQCAtMTQ3LDE5ICsxNDcsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
OjpwbGF0Zm9ybVNldFVSTENhY2hlCiAgICAgICAgIFtuc3VybENhY2hlIHNldERpc2tDYXBhY2l0
eTpzdGQ6Om1heDx1aW50NjRfdD4odXJsQ2FjaGVEaXNrQ2FwYWNpdHksIFtuc3VybENhY2hlIGRp
c2tDYXBhY2l0eV0pXTsgLy8gRG9uJ3Qgc2hyaW5rIGEgYmlnIGRpc2sgY2FjaGUsIHNpbmNlIHRo
YXQgd291bGQgY2F1c2UgY2h1cm4uCiB9CiAKLXN0YXRpYyBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IHBhcnRpdGlvbk5hbWUoQ0ZTdHJpbmdSZWYgZG9tYWluKQotewotI2lmIEVOQUJMRShQVUJMSUNf
U1VGRklYX0xJU1QpCi0gICAgU3RyaW5nIGhpZ2hMZXZlbCA9IFdlYkNvcmU6OnRvcFByaXZhdGVs
eUNvbnRyb2xsZWREb21haW4oZG9tYWluKTsKLSAgICBpZiAoaGlnaExldmVsLmlzTnVsbCgpKQot
ICAgICAgICByZXR1cm4gMDsKLSAgICBDU3RyaW5nIHV0ZjhTdHJpbmcgPSBoaWdoTGV2ZWwudXRm
OCgpOwotICAgIHJldHVybiBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEJ5dGVzKDAsIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPih1dGY4U3RyaW5nLmRhdGEoKSksIHV0ZjhTdHJpbmcu
bGVuZ3RoKCksIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwgZmFsc2UpKTsKLSNlbHNlCi0gICAgcmV0
dXJuIGRvbWFpbjsKLSNlbmRpZgotfQotCiBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBOZXR3b3JrUHJv
Y2Vzczo6c291cmNlQXBwbGljYXRpb25BdWRpdERhdGEoKSBjb25zdAogewogI2lmIFBMQVRGT1JN
KElPUykKQEAgLTE3Myw0MyArMTYwLDYgQEAgUmV0YWluUHRyPENGRGF0YVJlZj4gTmV0d29ya1By
b2Nlc3M6OnNvdQogI2VuZGlmCiB9CiAKLVZlY3RvcjxSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmln
aW4+PiBOZXR3b3JrUHJvY2Vzczo6Y2ZVUkxDYWNoZU9yaWdpbnMoKQotewotICAgIFZlY3RvcjxS
ZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+PiByZXN1bHQ7Ci0KLSAgICBXS0NGVVJMQ2FjaGVD
b3B5QWxsUGFydGl0aW9uTmFtZXMoWyZyZXN1bHRdKENGQXJyYXlSZWYgcGFydGl0aW9uTmFtZXMp
IHsKLSAgICAgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGhvc3ROYW1lc0luUGVyc2lzdGVudFN0
b3JlID0gYWRvcHRDRihXS0NGVVJMQ2FjaGVDb3B5QWxsSG9zdE5hbWVzSW5QZXJzaXN0ZW50U3Rv
cmVGb3JQYXJ0aXRpb24oQ0ZTVFIoIiIpKSk7Ci0gICAgICAgIFJldGFpblB0cjxDRk11dGFibGVB
cnJheVJlZj4gaG9zdE5hbWVzID0gYWRvcHRDRihDRkFycmF5Q3JlYXRlTXV0YWJsZUNvcHkoMCwg
MCwgaG9zdE5hbWVzSW5QZXJzaXN0ZW50U3RvcmUuZ2V0KCkpKTsKLSAgICAgICAgaWYgKHBhcnRp
dGlvbk5hbWVzKSB7Ci0gICAgICAgICAgICBDRkFycmF5QXBwZW5kQXJyYXkoaG9zdE5hbWVzLmdl
dCgpLCBwYXJ0aXRpb25OYW1lcywgQ0ZSYW5nZU1ha2UoMCwgQ0ZBcnJheUdldENvdW50KHBhcnRp
dGlvbk5hbWVzKSkpOwotICAgICAgICAgICAgQ0ZSZWxlYXNlKHBhcnRpdGlvbk5hbWVzKTsKLSAg
ICAgICAgfQotCi0gICAgICAgIGZvciAoQ0ZJbmRleCBpID0gMCwgc2l6ZSA9IENGQXJyYXlHZXRD
b3VudChob3N0TmFtZXMuZ2V0KCkpOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgICAgICBDRlN0
cmluZ1JlZiBob3N0ID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGQXJyYXlHZXRWYWx1ZUF0
SW5kZXgoaG9zdE5hbWVzLmdldCgpLCBpKSk7Ci0KLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZSgiaHR0cCIsIGhvc3QsIDApKTsKLSAgICAg
ICAgfQotICAgIH0pOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6Y2xlYXJDRlVSTENhY2hlRm9yT3JpZ2lucyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhPiYgb3JpZ2lucykKLXsKLSAgICBhdXRvIGhvc3ROYW1lcyA9IGFkb3B0
Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgJmtDRlR5cGVB
cnJheUNhbGxCYWNrcykpOwotICAgIGZvciAoYXV0byYgb3JpZ2luIDogb3JpZ2lucykKLSAgICAg
ICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGhvc3ROYW1lcy5nZXQoKSwgb3JpZ2luLmhvc3QuY3JlYXRl
Q0ZTdHJpbmcoKS5nZXQoKSk7Ci0KLSAgICBXS0NGVVJMQ2FjaGVEZWxldGVIb3N0TmFtZXNJblBl
cnNpc3RlbnRTdG9yZShob3N0TmFtZXMuZ2V0KCkpOwotCi0gICAgZm9yIChDRkluZGV4IGkgPSAw
LCBzaXplID0gQ0ZBcnJheUdldENvdW50KGhvc3ROYW1lcy5nZXQoKSk7IGkgPCBzaXplOyArK2kp
IHsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBwYXJ0aXRpb24gPSBwYXJ0aXRpb25O
YW1lKHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KGhvc3RO
YW1lcy5nZXQoKSwgaSkpKTsKLSAgICAgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IHBhcnRpdGlv
bkhvc3ROYW1lcyA9IGFkb3B0Q0YoV0tDRlVSTENhY2hlQ29weUFsbEhvc3ROYW1lc0luUGVyc2lz
dGVudFN0b3JlRm9yUGFydGl0aW9uKHBhcnRpdGlvbi5nZXQoKSkpOwotICAgICAgICBXS0NGVVJM
Q2FjaGVEZWxldGVIb3N0TmFtZXNJblBlcnNpc3RlbnRTdG9yZUZvclBhcnRpdGlvbihwYXJ0aXRp
b25Ib3N0TmFtZXMuZ2V0KCksIHBhcnRpdGlvbi5nZXQoKSk7Ci0gICAgfQotfQotCiB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpjbGVhckhTVFNDYWNoZShXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b24mIHNlc3Npb24sIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZp
ZWRTaW5jZSkKIHsKICAgICBOU1RpbWVJbnRlcnZhbCB0aW1lSW50ZXJ2YWwgPSBzdGQ6OmNocm9u
bzo6ZHVyYXRpb25fY2FzdDxzdGQ6OmNocm9ubzo6ZHVyYXRpb248ZG91YmxlPj4obW9kaWZpZWRT
aW5jZS50aW1lX3NpbmNlX2Vwb2NoKCkpLmNvdW50KCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQVBJL0FQSVNlY3VyaXR5T3JpZ2luLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvU2hhcmVkL0FQSS9BUElTZWN1cml0eU9yaWdpbi5oCShyZXZpc2lvbiAyMDgzOTgpCisrKyBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSVNlY3VyaXR5T3JpZ2luLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDMzICsyNiwzMyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBUElPYmpl
Y3QuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VTY2hlbWVSZWdpc3RyeS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgog
CiBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgU2VjdXJpdHlPcmlnaW4gOiBwdWJsaWMgQVBJOjpP
YmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpTZWN1cml0eU9yaWdpbj4gewogcHVibGljOgot
ICAgIHN0YXRpYyBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IGNyZWF0ZUZyb21TdHJpbmcoY29uc3Qg
V1RGOjpTdHJpbmcmIHN0cmluZykKKyAgICBzdGF0aWMgUmVmPFNlY3VyaXR5T3JpZ2luPiBjcmVh
dGVGcm9tU3RyaW5nKGNvbnN0IFdURjo6U3RyaW5nJiBzdHJpbmcsIGNvbnN0IFdlYkNvcmU6OlBh
Z2VTY2hlbWVSZWdpc3RyeSYgc2NoZW1lUmVnaXN0cnkpCiAgICAgewotICAgICAgICByZXR1cm4g
Y3JlYXRlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHN0cmluZykp
OworICAgICAgICByZXR1cm4gY3JlYXRlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVG
cm9tU3RyaW5nKHN0cmluZywgc2NoZW1lUmVnaXN0cnkpKTsKICAgICB9CiAKLSAgICBzdGF0aWMg
UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBjcmVhdGUoY29uc3QgV1RGOjpTdHJpbmcmIHByb3RvY29s
LCBjb25zdCBXVEY6OlN0cmluZyYgaG9zdCwgT3B0aW9uYWw8dWludDE2X3Q+IHBvcnQpCisgICAg
c3RhdGljIFJlZjxTZWN1cml0eU9yaWdpbj4gY3JlYXRlKGNvbnN0IFdURjo6U3RyaW5nJiBwcm90
b2NvbCwgY29uc3QgV1RGOjpTdHJpbmcmIGhvc3QsIE9wdGlvbmFsPHVpbnQxNl90PiBwb3J0LCBj
b25zdCBXZWJDb3JlOjpQYWdlU2NoZW1lUmVnaXN0cnkmIHNjaGVtZVJlZ2lzdHJ5KQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGNyZWF0ZShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHBy
b3RvY29sLCBob3N0LCBwb3J0KSk7CisgICAgICAgIHJldHVybiBjcmVhdGUoV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZShwcm90b2NvbCwgaG9zdCwgcG9ydCwgc2NoZW1lUmVnaXN0cnkp
KTsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBjcmVhdGUoY29u
c3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luKQorICAgIHN0YXRpYyBS
ZWY8U2VjdXJpdHlPcmlnaW4+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYg
c2VjdXJpdHlPcmlnaW4pCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNlY3Vy
aXR5T3JpZ2luKHNlY3VyaXR5T3JpZ2luKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFNlY3VyaXR5T3JpZ2luKHNlY3VyaXR5T3JpZ2luKSk7CiAgICAgfQogCi0gICAgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gKm1fc2VjdXJp
dHlPcmlnaW47IH0KKyAgICBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4o
KSB7IHJldHVybiBtX3NlY3VyaXR5T3JpZ2luLmdldCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgU2Vj
dXJpdHlPcmlnaW4oUGFzc1JlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlP
cmlnaW4pCi0gICAgICAgIDogbV9zZWN1cml0eU9yaWdpbihzZWN1cml0eU9yaWdpbikKKyAgICBT
ZWN1cml0eU9yaWdpbihSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYgc2VjdXJpdHlPcmln
aW4pCisgICAgICAgIDogbV9zZWN1cml0eU9yaWdpbihXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luKSkK
ICAgICB7CiAgICAgfQogCkBAIC02MSw3ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0K
IAotICAgIFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4gbV9zZWN1cml0eU9yaWdpbjsK
KyAgICBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+IG1fc2VjdXJpdHlPcmlnaW47CiB9Owog
CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tTZWN1cml0eU9yaWdpblJl
Zi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLU2VjdXJp
dHlPcmlnaW5SZWYuY3BwCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQVBJL2MvV0tTZWN1cml0eU9yaWdpblJlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDE4
ICszOCwyMSBAQCBXS1R5cGVJRCBXS1NlY3VyaXR5T3JpZ2luR2V0VHlwZUlEKCkKIAogV0tTZWN1
cml0eU9yaWdpblJlZiBXS1NlY3VyaXR5T3JpZ2luQ3JlYXRlRnJvbVN0cmluZyhXS1N0cmluZ1Jl
ZiBzdHJpbmcpCiB7Ci0gICAgcmV0dXJuIHRvQVBJKEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0
ZShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyh0b0ltcGwoc3RyaW5n
KS0+c3RyaW5nKCkpKS5sZWFrUmVmKCkpOworICAgIGF1dG8gc2NoZW1lUmVnaXN0cnkgPSBXZWJD
b3JlOjpQYWdlU2NoZW1lUmVnaXN0cnk6OmNyZWF0ZSgpOworICAgIHJldHVybiB0b0FQSSgmQVBJ
OjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVG
cm9tU3RyaW5nKHRvSW1wbChzdHJpbmcpLT5zdHJpbmcoKSwgc2NoZW1lUmVnaXN0cnkpKS5sZWFr
UmVmKCkpOwogfQogCiBXS1NlY3VyaXR5T3JpZ2luUmVmIFdLU2VjdXJpdHlPcmlnaW5DcmVhdGVG
cm9tRGF0YWJhc2VJZGVudGlmaWVyKFdLU3RyaW5nUmVmIGlkZW50aWZpZXIpCiB7Ci0gICAgcmV0
dXJuIHRvQVBJKEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmllcigodG9JbXBsKGlkZW50aWZpZXIpLT5z
dHJpbmcoKSkpKS5sZWFrUmVmKCkpOworICAgIGF1dG8gc2NoZW1lUmVnaXN0cnkgPSBXZWJDb3Jl
OjpQYWdlU2NoZW1lUmVnaXN0cnk6OmNyZWF0ZSgpOworICAgIHJldHVybiB0b0FQSSgmQVBJOjpT
ZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9t
RGF0YWJhc2VJZGVudGlmaWVyKCh0b0ltcGwoaWRlbnRpZmllciktPnN0cmluZygpKSwgc2NoZW1l
UmVnaXN0cnkpKS5sZWFrUmVmKCkpOwogfQogCiBXS1NlY3VyaXR5T3JpZ2luUmVmIFdLU2VjdXJp
dHlPcmlnaW5DcmVhdGUoV0tTdHJpbmdSZWYgcHJvdG9jb2wsIFdLU3RyaW5nUmVmIGhvc3QsIGlu
dCBwb3J0KQogewotICAgIGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2lu
OjpjcmVhdGUodG9JbXBsKHByb3RvY29sKS0+c3RyaW5nKCksIHRvSW1wbChob3N0KS0+c3RyaW5n
KCksIHBvcnQpOwotICAgIHJldHVybiB0b0FQSShzZWN1cml0eU9yaWdpbi5sZWFrUmVmKCkpOwor
ICAgIGF1dG8gc2NoZW1lUmVnaXN0cnkgPSBXZWJDb3JlOjpQYWdlU2NoZW1lUmVnaXN0cnk6OmNy
ZWF0ZSgpOworICAgIGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpj
cmVhdGUodG9JbXBsKHByb3RvY29sKS0+c3RyaW5nKCksIHRvSW1wbChob3N0KS0+c3RyaW5nKCks
IHBvcnQsIHNjaGVtZVJlZ2lzdHJ5KTsKKyAgICByZXR1cm4gdG9BUEkoJnNlY3VyaXR5T3JpZ2lu
LmxlYWtSZWYoKSk7CiB9CiAKIFdLU3RyaW5nUmVmIFdLU2VjdXJpdHlPcmlnaW5Db3B5RGF0YWJh
c2VJZGVudGlmaWVyKFdLU2VjdXJpdHlPcmlnaW5SZWYgc2VjdXJpdHlPcmlnaW4pCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5oCShyZXZpc2lv
biAyMDgzOTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIxMCw4ICsyMTAsOCBAQCBpbmxpbmUgUHJveHlpbmdSZWZQ
dHI8QVBJOjpVUkxSZXNwb25zZT4gCiBpbmxpbmUgV0tTZWN1cml0eU9yaWdpblJlZiB0b0NvcGll
ZEFQSShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiogb3JpZ2luKQogewogICAgIGlmICghb3JpZ2lu
KQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gdG9BUEkoQVBJOjpTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlKCpvcmlnaW4pLmxlYWtSZWYoKSk7CisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIHJldHVybiB0b0FQSSgmQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKCpvcmlnaW4pLmxl
YWtSZWYoKSk7CiB9CiAKIC8qIEdlb21ldHJ5IGNvbnZlcnNpb25zICovCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5jcHAJKHJldmlz
aW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJXZWJz
aXRlRGF0YS5oIgogCiAjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlIDxXZWJD
b3JlL1BhZ2VTY2hlbWVSZWdpc3RyeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmln
aW5EYXRhLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCkBAIC01MSw3ICs1
Miw3IEBAIGJvb2wgV2Vic2l0ZURhdGE6OkVudHJ5OjpkZWNvZGUoSVBDOjpEZWMKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHJlc3VsdC5zaXplKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgcmVzdWx0Lm9yaWdpbiA9IHNlY3VyaXR5T3JpZ2luRGF0YS5zZWN1cml0eU9yaWdpbigpOwor
ICAgIHJlc3VsdC5vcmlnaW4gPSBzZWN1cml0eU9yaWdpbkRhdGEuc2VjdXJpdHlPcmlnaW4oV2Vi
Q29yZTo6UGFnZVNjaGVtZVJlZ2lzdHJ5OjpjcmVhdGUoKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXJQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAkocmV2aXNpb24g
MjA4Mzk4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlclByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAog
I2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFDb25z
dHJhaW50c0ltcGwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01vY2tSZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlU2NoZW1lUmVnaXN0cnkuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1JlYWx0aW1lTWVkaWFTb3VyY2UuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CkBAIC0xODgsMTEgKzE4OSwxMSBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlclByCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBh
dXRvIHVzZXJNZWRpYU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShTZWN1cml0
eU9yaWdpbjo6Y3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmllcih1c2VyTWVkaWFEb2N1bWVudE9y
aWdpbklkZW50aWZpZXIpKTsKLSAgICAgICAgYXV0byB0b3BMZXZlbE9yaWdpbiA9IEFQSTo6U2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZShTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbURhdGFiYXNlSWRl
bnRpZmllcih0b3BMZXZlbERvY3VtZW50T3JpZ2luSWRlbnRpZmllcikpOworICAgICAgICBhdXRv
IHVzZXJNZWRpYU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmllcih1c2VyTWVkaWFEb2N1bWVudE9yaWdp
bklkZW50aWZpZXIsIFBhZ2VTY2hlbWVSZWdpc3RyeTo6Y3JlYXRlKCkpKTsKKyAgICAgICAgYXV0
byB0b3BMZXZlbE9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmllcih0b3BMZXZlbERvY3VtZW50T3JpZ2lu
SWRlbnRpZmllciwgUGFnZVNjaGVtZVJlZ2lzdHJ5OjpjcmVhdGUoKSkpOwogICAgICAgICBhdXRv
IHJlcXVlc3QgPSBjcmVhdGVSZXF1ZXN0KHVzZXJNZWRpYUlELCBhdWRpb0RldmljZVVJRHMsIHZp
ZGVvRGV2aWNlVUlEcyk7CiAKLSAgICAgICAgaWYgKCFtX3BhZ2UudWlDbGllbnQoKS5kZWNpZGVQ
b2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdChtX3BhZ2UsICptX3BhZ2UucHJvY2Vz
cygpLndlYkZyYW1lKGZyYW1lSUQpLCAqdXNlck1lZGlhT3JpZ2luLmdldCgpLCAqdG9wTGV2ZWxP
cmlnaW4uZ2V0KCksIHJlcXVlc3QuZ2V0KCkpKSB7CisgICAgICAgIGlmICghbV9wYWdlLnVpQ2xp
ZW50KCkuZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QobV9wYWdlLCAq
bV9wYWdlLnByb2Nlc3MoKS53ZWJGcmFtZShmcmFtZUlEKSwgdXNlck1lZGlhT3JpZ2luLmdldCgp
LCB0b3BMZXZlbE9yaWdpbi5nZXQoKSwgcmVxdWVzdC5nZXQoKSkpIHsKICAgICAgICAgICAgIG1f
cGVuZGluZ1VzZXJNZWRpYVJlcXVlc3RzLnRha2UodXNlck1lZGlhSUQpOwogICAgICAgICAgICAg
cmVxdWVzdC0+ZGVueShVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpVc2VyTWVkaWFB
Y2Nlc3NEZW5pYWxSZWFzb246OlVzZXJNZWRpYURpc2FibGVkKTsKICAgICAgICAgfQpAQCAtMjE5
LDEwICsyMjAsMTAgQEAgdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcgog
ICAgIGF1dG8gcmVxdWVzdCA9IFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5OjpjcmVhdGUo
KnRoaXMsIHVzZXJNZWRpYUlEKTsKICAgICBtX3BlbmRpbmdEZXZpY2VSZXF1ZXN0cy5hZGQodXNl
ck1lZGlhSUQsIHJlcXVlc3QucHRyKCkpOwogCi0gICAgYXV0byB1c2VyTWVkaWFPcmlnaW4gPSBB
UEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21EYXRh
YmFzZUlkZW50aWZpZXIodXNlck1lZGlhRG9jdW1lbnRPcmlnaW5JZGVudGlmaWVyKSk7Ci0gICAg
YXV0byB0b3BMZXZlbE9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShTZWN1cml0
eU9yaWdpbjo6Y3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmllcih0b3BMZXZlbERvY3VtZW50T3Jp
Z2luSWRlbnRpZmllcikpOworICAgIGF1dG8gdXNlck1lZGlhT3JpZ2luID0gQVBJOjpTZWN1cml0
eU9yaWdpbjo6Y3JlYXRlKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlm
aWVyKHVzZXJNZWRpYURvY3VtZW50T3JpZ2luSWRlbnRpZmllciwgUGFnZVNjaGVtZVJlZ2lzdHJ5
OjpjcmVhdGUoKSkpOworICAgIGF1dG8gdG9wTGV2ZWxPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3Jp
Z2luOjpjcmVhdGUoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21EYXRhYmFzZUlkZW50aWZpZXIo
dG9wTGV2ZWxEb2N1bWVudE9yaWdpbklkZW50aWZpZXIsIFBhZ2VTY2hlbWVSZWdpc3RyeTo6Y3Jl
YXRlKCkpKTsKIAotICAgIGlmICghbV9wYWdlLnVpQ2xpZW50KCkuY2hlY2tVc2VyTWVkaWFQZXJt
aXNzaW9uRm9yT3JpZ2luKG1fcGFnZSwgKm1fcGFnZS5wcm9jZXNzKCkud2ViRnJhbWUoZnJhbWVJ
RCksICp1c2VyTWVkaWFPcmlnaW4uZ2V0KCksICp0b3BMZXZlbE9yaWdpbi5nZXQoKSwgcmVxdWVz
dC5nZXQoKSkpIHsKKyAgICBpZiAoIW1fcGFnZS51aUNsaWVudCgpLmNoZWNrVXNlck1lZGlhUGVy
bWlzc2lvbkZvck9yaWdpbihtX3BhZ2UsICptX3BhZ2UucHJvY2VzcygpLndlYkZyYW1lKGZyYW1l
SUQpLCB1c2VyTWVkaWFPcmlnaW4uZ2V0KCksIHRvcExldmVsT3JpZ2luLmdldCgpLCByZXF1ZXN0
LmdldCgpKSkgewogICAgICAgICBtX3BlbmRpbmdEZXZpY2VSZXF1ZXN0cy50YWtlKHVzZXJNZWRp
YUlEKTsKICAgICAgICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpE
aWRDb21wbGV0ZU1lZGlhRGV2aWNlRW51bWVyYXRpb24odXNlck1lZGlhSUQsIFZlY3RvcjxXZWJD
b3JlOjpDYXB0dXJlRGV2aWNlPigpLCBlbXB0eVN0cmluZygpLCBmYWxzZSksIG1fcGFnZS5wYWdl
SUQoKSk7CiAgICAgfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjM5LDEyICszNjM5LDEyIEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2EKICAgICAgICAgUmVmUHRyPEFQSTo6
RnJhbWVJbmZvPiBzb3VyY2VGcmFtZUluZm87CiAKICAgICAgICAgaWYgKGZyYW1lKQotICAgICAg
ICAgICAgZGVzdGluYXRpb25GcmFtZUluZm8gPSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKCpmcmFt
ZSwgZnJhbWVTZWN1cml0eU9yaWdpbi5zZWN1cml0eU9yaWdpbigpKTsKKyAgICAgICAgICAgIGRl
c3RpbmF0aW9uRnJhbWVJbmZvID0gQVBJOjpGcmFtZUluZm86OmNyZWF0ZSgqZnJhbWUsIGZyYW1l
U2VjdXJpdHlPcmlnaW4uc2VjdXJpdHlPcmlnaW4oUGFnZVNjaGVtZVJlZ2lzdHJ5OjpjcmVhdGUo
KSkpOwogCiAgICAgICAgIGlmIChvcmlnaW5hdGluZ0ZyYW1lID09IGZyYW1lKQogICAgICAgICAg
ICAgc291cmNlRnJhbWVJbmZvID0gZGVzdGluYXRpb25GcmFtZUluZm87CiAgICAgICAgIGVsc2Ug
aWYgKG9yaWdpbmF0aW5nRnJhbWUpCi0gICAgICAgICAgICBzb3VyY2VGcmFtZUluZm8gPSBBUEk6
OkZyYW1lSW5mbzo6Y3JlYXRlKCpvcmlnaW5hdGluZ0ZyYW1lLCBvcmlnaW5hdGluZ0ZyYW1lU2Vj
dXJpdHlPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKSk7CisgICAgICAgICAgICBzb3VyY2VGcmFtZUlu
Zm8gPSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKCpvcmlnaW5hdGluZ0ZyYW1lLCBvcmlnaW5hdGlu
Z0ZyYW1lU2VjdXJpdHlPcmlnaW4uc2VjdXJpdHlPcmlnaW4oUGFnZVNjaGVtZVJlZ2lzdHJ5Ojpj
cmVhdGUoKSkpOwogCiAgICAgICAgIGF1dG8gdXNlckluaXRpYXRlZEFjdGl2aXR5ID0gbV9wcm9j
ZXNzLT51c2VySW5pdGlhdGVkQWN0aXZpdHkobmF2aWdhdGlvbkFjdGlvbkRhdGEudXNlckdlc3R1
cmVUb2tlbklkZW50aWZpZXIpOwogICAgICAgICBib29sIHNob3VsZE9wZW5BcHBMaW5rcyA9ICFt
X3Nob3VsZFN1cHByZXNzQXBwTGlua3NJbk5leHROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24gJiYg
KCFkZXN0aW5hdGlvbkZyYW1lSW5mbyB8fCBkZXN0aW5hdGlvbkZyYW1lSW5mby0+aXNNYWluRnJh
bWUoKSkgJiYgIWhvc3RzQXJlRXF1YWwoVVJMKFBhcnNlZFVSTFN0cmluZywgbV9tYWluRnJhbWUt
PnVybCgpKSwgcmVxdWVzdC51cmwoKSk7CkBAIC0zNjc5LDcgKzM2NzksNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luCiAgICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVu
dCkgewogICAgICAgICBSZWZQdHI8QVBJOjpGcmFtZUluZm8+IHNvdXJjZUZyYW1lSW5mbzsKICAg
ICAgICAgaWYgKGZyYW1lKQotICAgICAgICAgICAgc291cmNlRnJhbWVJbmZvID0gQVBJOjpGcmFt
ZUluZm86OmNyZWF0ZSgqZnJhbWUsIGZyYW1lU2VjdXJpdHlPcmlnaW4uc2VjdXJpdHlPcmlnaW4o
KSk7CisgICAgICAgICAgICBzb3VyY2VGcmFtZUluZm8gPSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRl
KCpmcmFtZSwgZnJhbWVTZWN1cml0eU9yaWdpbi5zZWN1cml0eU9yaWdpbihQYWdlU2NoZW1lUmVn
aXN0cnk6OmNyZWF0ZSgpKSk7CiAKICAgICAgICAgYXV0byB1c2VySW5pdGlhdGVkQWN0aXZpdHkg
PSBtX3Byb2Nlc3MtPnVzZXJJbml0aWF0ZWRBY3Rpdml0eShuYXZpZ2F0aW9uQWN0aW9uRGF0YS51
c2VyR2VzdHVyZVRva2VuSWRlbnRpZmllcik7CiAgICAgICAgIGJvb2wgc2hvdWxkT3BlbkFwcExp
bmtzID0gIWhvc3RzQXJlRXF1YWwoVVJMKFBhcnNlZFVSTFN0cmluZywgbV9tYWluRnJhbWUtPnVy
bCgpKSwgcmVxdWVzdC51cmwoKSk7CkBAIC0zNzAzLDcgKzM3MDMsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uCiAgICAgUmVmPFdlYkZyYW1lUG9saWN5TGlzdGVu
ZXJQcm94eT4gbGlzdGVuZXIgPSBmcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5KGxpc3Rl
bmVySUQpOwogCiAgICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkgewotICAgICAgICBhdXRvIG5h
dmlnYXRpb25SZXNwb25zZSA9IEFQSTo6TmF2aWdhdGlvblJlc3BvbnNlOjpjcmVhdGUoQVBJOjpG
cmFtZUluZm86OmNyZWF0ZSgqZnJhbWUsIGZyYW1lU2VjdXJpdHlPcmlnaW4uc2VjdXJpdHlPcmln
aW4oKSkuZ2V0KCksIHJlcXVlc3QsIHJlc3BvbnNlLCBjYW5TaG93TUlNRVR5cGUpOworICAgICAg
ICBhdXRvIG5hdmlnYXRpb25SZXNwb25zZSA9IEFQSTo6TmF2aWdhdGlvblJlc3BvbnNlOjpjcmVh
dGUoQVBJOjpGcmFtZUluZm86OmNyZWF0ZSgqZnJhbWUsIGZyYW1lU2VjdXJpdHlPcmlnaW4uc2Vj
dXJpdHlPcmlnaW4oUGFnZVNjaGVtZVJlZ2lzdHJ5OjpjcmVhdGUoKSkpLmdldCgpLCByZXF1ZXN0
LCByZXNwb25zZSwgY2FuU2hvd01JTUVUeXBlKTsKICAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50
LT5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UoKnRoaXMsIG5hdmlnYXRpb25SZXNw
b25zZS5nZXQoKSwgV1RGTW92ZShsaXN0ZW5lciksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxl
c1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogICAgIH0gZWxzZQogICAgICAg
ICBtX3BvbGljeUNsaWVudC0+ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoKnRoaXMsICpmcmFtZSwg
cmVzcG9uc2UsIHJlcXVlc3QsIGNhblNob3dNSU1FVHlwZSwgV1RGTW92ZShsaXN0ZW5lciksIG1f
cHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0
KCkpOwpAQCAtNTYzNCw3ICs1NjM0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmV4Y2VlZGVkRGF0
YWJhc2VRdW90YQogICAgICAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IG1fcHJvY2Vzcy0+d2Vi
RnJhbWUocmVjb3JkLT5mcmFtZUlEKTsKICAgICAgICAgTUVTU0FHRV9DSEVDSyhmcmFtZSk7CiAK
LSAgICAgICAgUmVmUHRyPEFQSTo6U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IEFQSTo6U2VjdXJp
dHlPcmlnaW46OmNyZWF0ZShTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbURhdGFiYXNlSWRlbnRp
ZmllcihyZWNvcmQtPm9yaWdpbklkZW50aWZpZXIpKTsKKyAgICAgICAgUmVmUHRyPEFQSTo6U2Vj
dXJpdHlPcmlnaW4+IG9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShTZWN1cml0
eU9yaWdpbjo6Y3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmllcihyZWNvcmQtPm9yaWdpbklkZW50
aWZpZXIsIFBhZ2VTY2hlbWVSZWdpc3RyeTo6Y3JlYXRlKCkpKTsKICAgICAgICAgYXV0byBjdXJy
ZW50UmVwbHkgPSByZWNvcmQtPnJlcGx5OwogICAgICAgICBtX3VpQ2xpZW50LT5leGNlZWRlZERh
dGFiYXNlUXVvdGEodGhpcywgZnJhbWUsIG9yaWdpbi5nZXQoKSwKICAgICAgICAgICAgIHJlY29y
ZC0+ZGF0YWJhc2VOYW1lLCByZWNvcmQtPmRpc3BsYXlOYW1lLCByZWNvcmQtPmN1cnJlbnRRdW90
YSwKQEAgLTU2NDcsNyArNTY0Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpleGNlZWRlZERhdGFi
YXNlUXVvdGEKIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3Jp
Z2luUXVvdGEoY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCB1aW50NjRfdCBjdXJyZW50
UXVvdGEsIHVpbnQ2NF90IHRvdGFsQnl0ZXNOZWVkZWQsIFBhc3NSZWZQdHI8TWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6UmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YTo6RGVsYXllZFJl
cGx5PiByZXBseSkKIHsKLSAgICBSZWY8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luID0g
U2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21EYXRhYmFzZUlkZW50aWZpZXIob3JpZ2luSWRlbnRp
Zmllcik7CisgICAgUmVmPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9IFNlY3VyaXR5
T3JpZ2luOjpjcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyKG9yaWdpbklkZW50aWZpZXIsIFBh
Z2VTY2hlbWVSZWdpc3RyeTo6Y3JlYXRlKCkpOwogICAgIG1fdWlDbGllbnQtPnJlYWNoZWRBcHBs
aWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEodGhpcywgc2VjdXJpdHlPcmlnaW4uZ2V0KCksIGN1cnJl
bnRRdW90YSwgdG90YWxCeXRlc05lZWRlZCwgW3JlcGx5XSh1bnNpZ25lZCBsb25nIGxvbmcgbmV3
UXVvdGEpIHsgcmVwbHktPnNlbmQobmV3UXVvdGEpOyB9KTsKIH0KIApAQCAtNTY1Nyw3ICs1NjU3
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RHZW9sb2NhdGlvblBlcgogICAgIE1FU1NB
R0VfQ0hFQ0soZnJhbWUpOwogCiAgICAgLy8gRklYTUU6IEdlb2xvY2F0aW9uIHNob3VsZCBwcm9i
YWJseSBiZSB1c2luZyB0b1N0cmluZygpIGFzIGl0cyBzdHJpbmcgcmVwcmVzZW50YXRpb24gaW5z
dGVhZCBvZiBkYXRhYmFzZUlkZW50aWZpZXIoKS4KLSAgICBSZWZQdHI8QVBJOjpTZWN1cml0eU9y
aWdpbj4gb3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFNlY3VyaXR5T3JpZ2lu
OjpjcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyKG9yaWdpbklkZW50aWZpZXIpKTsKKyAgICBS
ZWZQdHI8QVBJOjpTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6
Y3JlYXRlKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyKG9yaWdp
bklkZW50aWZpZXIsIFBhZ2VTY2hlbWVSZWdpc3RyeTo6Y3JlYXRlKCkpKTsKICAgICBSZWZQdHI8
R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5PiByZXF1ZXN0ID0gbV9nZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcmVhdGVSZXF1ZXN0KGdlb2xvY2F0aW9uSUQpOwog
CiAgICAgaWYgKG1fdWlDbGllbnQtPmRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3QodGhpcywgZnJhbWUsIG9yaWdpbi5nZXQoKSwgcmVxdWVzdC5nZXQoKSkpCkBAIC01
NzA2LDcgKzU3MDYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdE5vdGlmaWNhdGlvblBl
CiAgICAgaWYgKCFpc1JlcXVlc3RJRFZhbGlkKHJlcXVlc3RJRCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIFJlZlB0cjxBUEk6OlNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBBUEk6OlNlY3VyaXR5
T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKG9yaWdpblN0cmluZyk7CisgICAgUmVmUHRyPEFQSTo6
U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21T
dHJpbmcob3JpZ2luU3RyaW5nLCBQYWdlU2NoZW1lUmVnaXN0cnk6OmNyZWF0ZSgpKTsKICAgICBS
ZWZQdHI8Tm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q+IHJlcXVlc3QgPSBtX25vdGlmaWNh
dGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcmVhdGVSZXF1ZXN0KHJlcXVlc3RJRCk7CiAg
ICAgCiAgICAgaWYgKCFtX3VpQ2xpZW50LT5kZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJt
aXNzaW9uUmVxdWVzdCh0aGlzLCBvcmlnaW4uZ2V0KCksIHJlcXVlc3QuZ2V0KCkpKQpJbmRleDog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElGcmFtZUluZm8uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJRnJhbWVJbmZvLmNwcAkocmV2aXNp
b24gMjA4Mzk4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElGcmFtZUluZm8u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQVBJRnJhbWVI
YW5kbGUuaCIKICNpbmNsdWRlICJGcmFtZUluZm9EYXRhLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVQ
cm94eS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZVNjaGVtZVJlZ2lzdHJ5Lmg+CiAKIG5hbWVz
cGFjZSBBUEkgewogCkBAIC01Myw3ICs1NCw3IEBAIFJlZjxGcmFtZUluZm8+IEZyYW1lSW5mbzo6
Y3JlYXRlKGNvbnN0IFcKIEZyYW1lSW5mbzo6RnJhbWVJbmZvKGNvbnN0IFdlYktpdDo6RnJhbWVJ
bmZvRGF0YSYgZnJhbWVJbmZvRGF0YSkKICAgICA6IG1faXNNYWluRnJhbWUoZnJhbWVJbmZvRGF0
YS5pc01haW5GcmFtZSkKICAgICAsIG1fcmVxdWVzdChmcmFtZUluZm9EYXRhLnJlcXVlc3QpCi0g
ICAgLCBtX3NlY3VyaXR5T3JpZ2luKCpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKGZyYW1lSW5mb0Rh
dGEuc2VjdXJpdHlPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKSkpCisgICAgLCBtX3NlY3VyaXR5T3Jp
Z2luKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoZnJhbWVJbmZvRGF0YS5zZWN1cml0eU9yaWdpbi5z
ZWN1cml0eU9yaWdpbihXZWJDb3JlOjpQYWdlU2NoZW1lUmVnaXN0cnk6OmNyZWF0ZSgpKSkpCiAg
ICAgLCBtX2hhbmRsZShBUEk6OkZyYW1lSGFuZGxlOjpjcmVhdGUoZnJhbWVJbmZvRGF0YS5mcmFt
ZUlEKSkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGll
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xp
ZW50LmgJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
QVBJVUlDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUsNyBAQCBjbGFzcyBVSUNs
aWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+VUlDbGllbnQoKSB7IH0KIAotICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4gY3JlYXRlTmV3UGFnZShXZWJLaXQ6
OldlYlBhZ2VQcm94eSosIFdlYktpdDo6V2ViRnJhbWVQcm94eSosIGNvbnN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0
IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJiwgY29uc3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9u
RGF0YSYpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJLaXQ6Oldl
YlBhZ2VQcm94eT4gY3JlYXRlTmV3UGFnZShXZWJLaXQ6OldlYlBhZ2VQcm94eSosIFdlYktpdDo6
V2ViRnJhbWVQcm94eSosIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVz
JiwgY29uc3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSYpIHsgcmV0dXJuIG51bGxwdHI7
IH0KICAgICB2aXJ0dWFsIHZvaWQgc2hvd1BhZ2UoV2ViS2l0OjpXZWJQYWdlUHJveHkqKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgZnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lKFdlYktpdDo6V2Vi
UGFnZVByb3h5KikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEVudGVyRnVsbHNjcmVlbihXZWJL
aXQ6OldlYlBhZ2VQcm94eSopIHsgfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS0ZyYW1lLmNwcAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQsNyArMTM0LDcg
QEAgV0tGcmFtZUhhbmRsZVJlZiBXS0ZyYW1lQ3JlYXRlRnJhbWVIYW5kbAogCiBXS0ZyYW1lSW5m
b1JlZiBXS0ZyYW1lQ3JlYXRlRnJhbWVJbmZvKFdLRnJhbWVSZWYgZnJhbWVSZWYpCiB7Ci0gICAg
cmV0dXJuIHRvQVBJKCZBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKCp0b0ltcGwoZnJhbWVSZWYpLCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyh0b0ltcGwoZnJhbWVSZWYp
LT51cmwoKSkpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKCZBUEk6OkZyYW1lSW5mbzo6
Y3JlYXRlKCp0b0ltcGwoZnJhbWVSZWYpLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
RnJvbVN0cmluZyh0b0ltcGwoZnJhbWVSZWYpLT51cmwoKSwgV2ViQ29yZTo6UGFnZVNjaGVtZVJl
Z2lzdHJ5OjpjcmVhdGUoKSkpLmxlYWtSZWYoKSk7CiB9CiAKIHZvaWQgV0tGcmFtZUdldE1haW5S
ZXNvdXJjZURhdGEoV0tGcmFtZVJlZiBmcmFtZVJlZiwgV0tGcmFtZUdldFJlc291cmNlRGF0YUZ1
bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjb250ZXh0KQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5j
cHAJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Nyw3ICs5Nyw3
IEBAIHZvaWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0U3RvcmFnZUQKICAgICAgICAgZm9y
IChjb25zdCBhdXRvJiBvcmlnaW5EZXRhaWxzIDogc3RvcmFnZURldGFpbHMpIHsKICAgICAgICAg
ICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8QVBJOjpPYmplY3Q+PiBkZXRhaWxzTWFwOwogCi0g
ICAgICAgICAgICBSZWZQdHI8QVBJOjpPYmplY3Q+IG9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmln
aW46OmNyZWF0ZShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbURhdGFiYXNlSWRl
bnRpZmllcihvcmlnaW5EZXRhaWxzLm9yaWdpbklkZW50aWZpZXIpKTsKKyAgICAgICAgICAgIFJl
ZlB0cjxBUEk6Ok9iamVjdD4gb3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyKG9yaWdp
bkRldGFpbHMub3JpZ2luSWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZVNjaGVtZVJlZ2lzdHJ5Ojpj
cmVhdGUoKSkpOwogCiAgICAgICAgICAgICBkZXRhaWxzTWFwLnNldCh0b0ltcGwoV0tLZXlWYWx1
ZVN0b3JhZ2VNYW5hZ2VyR2V0T3JpZ2luS2V5KCkpLT5zdHJpbmcoKSwgb3JpZ2luKTsKICAgICAg
ICAgICAgIGlmIChvcmlnaW5EZXRhaWxzLmNyZWF0aW9uVGltZSkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzEsNiArNzEsNyBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgIldl
YlByb3RlY3Rpb25TcGFjZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvUGFnZVNjaGVtZVJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0
eU9yaWdpbkRhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcmlhbGl6ZWRDcnlwdG9LZXlXcmFw
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dGZWF0dXJlcy5oPgpAQCAtMTcwMywxMyArMTcw
NCwxMyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFnCiAgICAgICAg
IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIFBhc3NSZWZQdHI8V2ViUGFnZVByb3h5PiBjcmVh
dGVOZXdQYWdlKFdlYlBhZ2VQcm94eSogcGFnZSwgV2ViRnJhbWVQcm94eSogaW5pdGlhdGluZ0Zy
YW1lLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luRGF0YSwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiB3
aW5kb3dGZWF0dXJlcywgY29uc3QgTmF2aWdhdGlvbkFjdGlvbkRhdGEmIG5hdmlnYXRpb25BY3Rp
b25EYXRhKSBvdmVycmlkZQorICAgICAgICBSZWZQdHI8V2ViUGFnZVByb3h5PiBjcmVhdGVOZXdQ
YWdlKFdlYlBhZ2VQcm94eSogcGFnZSwgV2ViRnJhbWVQcm94eSogaW5pdGlhdGluZ0ZyYW1lLCBj
b25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luRGF0YSwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiB3aW5kb3dG
ZWF0dXJlcywgY29uc3QgTmF2aWdhdGlvbkFjdGlvbkRhdGEmIG5hdmlnYXRpb25BY3Rpb25EYXRh
KSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAobV9jbGllbnQuY3JlYXRlTmV3
UGFnZSkgewogICAgICAgICAgICAgICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IHBhZ2UtPmNvbmZp
Z3VyYXRpb24oKS5jb3B5KCk7CiAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbi0+c2V0UmVs
YXRlZFBhZ2UocGFnZSk7CiAKLSAgICAgICAgICAgICAgICBhdXRvIHNvdXJjZUZyYW1lSW5mbyA9
IEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoKmluaXRpYXRpbmdGcmFtZSwgc2VjdXJpdHlPcmlnaW5E
YXRhLnNlY3VyaXR5T3JpZ2luKCkpOworICAgICAgICAgICAgICAgIGF1dG8gc291cmNlRnJhbWVJ
bmZvID0gQVBJOjpGcmFtZUluZm86OmNyZWF0ZSgqaW5pdGlhdGluZ0ZyYW1lLCBzZWN1cml0eU9y
aWdpbkRhdGEuc2VjdXJpdHlPcmlnaW4oV2ViQ29yZTo6UGFnZVNjaGVtZVJlZ2lzdHJ5OjpjcmVh
dGUoKSkpOwogCiAgICAgICAgICAgICAgICAgYXV0byB1c2VySW5pdGlhdGVkQWN0aXZpdHkgPSBw
YWdlLT5wcm9jZXNzKCkudXNlckluaXRpYXRlZEFjdGl2aXR5KG5hdmlnYXRpb25BY3Rpb25EYXRh
LnVzZXJHZXN0dXJlVG9rZW5JZGVudGlmaWVyKTsKICAgICAgICAgICAgICAgICBib29sIHNob3Vs
ZE9wZW5BcHBMaW5rcyA9ICFob3N0c0FyZUVxdWFsKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpQYXJz
ZWRVUkxTdHJpbmcsIGluaXRpYXRpbmdGcmFtZS0+dXJsKCkpLCByZXNvdXJjZVJlcXVlc3QudXJs
KCkpOwpAQCAtMTgwNCwxMyArMTgwNSwxMyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VVSUNsaWVudChX
S1BhZ2VSZWYgcGFnCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChtX2NsaWVudC5ydW5KYXZh
U2NyaXB0QWxlcnQpIHsKICAgICAgICAgICAgICAgICBSZWZQdHI8UnVuSmF2YVNjcmlwdEFsZXJ0
UmVzdWx0TGlzdGVuZXI+IGxpc3RlbmVyID0gUnVuSmF2YVNjcmlwdEFsZXJ0UmVzdWx0TGlzdGVu
ZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgICAgICAgICAgICAg
UmVmUHRyPEFQSTo6U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luID0gQVBJOjpTZWN1cml0
eU9yaWdpbjo6Y3JlYXRlKHNlY3VyaXR5T3JpZ2luRGF0YS5wcm90b2NvbCwgc2VjdXJpdHlPcmln
aW5EYXRhLmhvc3QsIHNlY3VyaXR5T3JpZ2luRGF0YS5wb3J0KTsKKyAgICAgICAgICAgICAgICBS
ZWZQdHI8QVBJOjpTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBBUEk6OlNlY3VyaXR5
T3JpZ2luOjpjcmVhdGUoc2VjdXJpdHlPcmlnaW5EYXRhLnByb3RvY29sLCBzZWN1cml0eU9yaWdp
bkRhdGEuaG9zdCwgc2VjdXJpdHlPcmlnaW5EYXRhLnBvcnQsIFdlYkNvcmU6OlBhZ2VTY2hlbWVS
ZWdpc3RyeTo6Y3JlYXRlKCkpOwogICAgICAgICAgICAgICAgIG1fY2xpZW50LnJ1bkphdmFTY3Jp
cHRBbGVydCh0b0FQSShwYWdlKSwgdG9BUEkobWVzc2FnZS5pbXBsKCkpLCB0b0FQSShmcmFtZSks
IHRvQVBJKHNlY3VyaXR5T3JpZ2luLmdldCgpKSwgdG9BUEkobGlzdGVuZXIuZ2V0KCkpLCBtX2Ns
aWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgIH0KIAogICAgICAgICAgICAgaWYgKG1fY2xpZW50LnJ1bkphdmFTY3JpcHRBbGVydF9kZXBy
ZWNhdGVkRm9yVXNlV2l0aFY1KSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPEFQSTo6U2VjdXJp
dHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHNl
Y3VyaXR5T3JpZ2luRGF0YS5wcm90b2NvbCwgc2VjdXJpdHlPcmlnaW5EYXRhLmhvc3QsIHNlY3Vy
aXR5T3JpZ2luRGF0YS5wb3J0KTsKKyAgICAgICAgICAgICAgICBSZWZQdHI8QVBJOjpTZWN1cml0
eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoc2Vj
dXJpdHlPcmlnaW5EYXRhLnByb3RvY29sLCBzZWN1cml0eU9yaWdpbkRhdGEuaG9zdCwgc2VjdXJp
dHlPcmlnaW5EYXRhLnBvcnQsIFdlYkNvcmU6OlBhZ2VTY2hlbWVSZWdpc3RyeTo6Y3JlYXRlKCkp
OwogICAgICAgICAgICAgICAgIG1fY2xpZW50LnJ1bkphdmFTY3JpcHRBbGVydF9kZXByZWNhdGVk
Rm9yVXNlV2l0aFY1KHRvQVBJKHBhZ2UpLCB0b0FQSShtZXNzYWdlLmltcGwoKSksIHRvQVBJKGZy
YW1lKSwgdG9BUEkoc2VjdXJpdHlPcmlnaW4uZ2V0KCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudElu
Zm8pOwogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtMTgzMCwxMyArMTgzMSwxMyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VVSUNs
aWVudChXS1BhZ2VSZWYgcGFnCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChtX2NsaWVudC5y
dW5KYXZhU2NyaXB0Q29uZmlybSkgewogICAgICAgICAgICAgICAgIFJlZlB0cjxSdW5KYXZhU2Ny
aXB0Q29uZmlybVJlc3VsdExpc3RlbmVyPiBsaXN0ZW5lciA9IFJ1bkphdmFTY3JpcHRDb25maXJt
UmVzdWx0TGlzdGVuZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAg
ICAgICAgICAgICAgUmVmUHRyPEFQSTo6U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luID0g
QVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHNlY3VyaXR5T3JpZ2luRGF0YS5wcm90b2NvbCwg
c2VjdXJpdHlPcmlnaW5EYXRhLmhvc3QsIHNlY3VyaXR5T3JpZ2luRGF0YS5wb3J0KTsKKyAgICAg
ICAgICAgICAgICBSZWZQdHI8QVBJOjpTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBB
UEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoc2VjdXJpdHlPcmlnaW5EYXRhLnByb3RvY29sLCBz
ZWN1cml0eU9yaWdpbkRhdGEuaG9zdCwgc2VjdXJpdHlPcmlnaW5EYXRhLnBvcnQsIFdlYkNvcmU6
OlBhZ2VTY2hlbWVSZWdpc3RyeTo6Y3JlYXRlKCkpOwogICAgICAgICAgICAgICAgIG1fY2xpZW50
LnJ1bkphdmFTY3JpcHRDb25maXJtKHRvQVBJKHBhZ2UpLCB0b0FQSShtZXNzYWdlLmltcGwoKSks
IHRvQVBJKGZyYW1lKSwgdG9BUEkoc2VjdXJpdHlPcmlnaW4uZ2V0KCkpLCB0b0FQSShsaXN0ZW5l
ci5nZXQoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAobV9jbGllbnQucnVuSmF2YVNj
cmlwdENvbmZpcm1fZGVwcmVjYXRlZEZvclVzZVdpdGhWNSkgewotICAgICAgICAgICAgICAgIFJl
ZlB0cjxBUEk6OlNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlP
cmlnaW46OmNyZWF0ZShzZWN1cml0eU9yaWdpbkRhdGEucHJvdG9jb2wsIHNlY3VyaXR5T3JpZ2lu
RGF0YS5ob3N0LCBzZWN1cml0eU9yaWdpbkRhdGEucG9ydCk7CisgICAgICAgICAgICAgICAgUmVm
UHRyPEFQSTo6U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luID0gQVBJOjpTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlKHNlY3VyaXR5T3JpZ2luRGF0YS5wcm90b2NvbCwgc2VjdXJpdHlPcmlnaW5E
YXRhLmhvc3QsIHNlY3VyaXR5T3JpZ2luRGF0YS5wb3J0LCBXZWJDb3JlOjpQYWdlU2NoZW1lUmVn
aXN0cnk6OmNyZWF0ZSgpKTsKICAgICAgICAgICAgICAgICBib29sIHJlc3VsdCA9IG1fY2xpZW50
LnJ1bkphdmFTY3JpcHRDb25maXJtX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUodG9BUEkocGFnZSks
IHRvQVBJKG1lc3NhZ2UuaW1wbCgpKSwgdG9BUEkoZnJhbWUpLCB0b0FQSShzZWN1cml0eU9yaWdp
bi5nZXQoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmVzdWx0KTsKQEAgLTE4NTcsMTMgKzE4
NTgsMTMgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlVUlDbGllbnQoV0tQYWdlUmVmIHBhZwogICAgICAg
ICB7CiAgICAgICAgICAgICBpZiAobV9jbGllbnQucnVuSmF2YVNjcmlwdFByb21wdCkgewogICAg
ICAgICAgICAgICAgIFJlZlB0cjxSdW5KYXZhU2NyaXB0UHJvbXB0UmVzdWx0TGlzdGVuZXI+IGxp
c3RlbmVyID0gUnVuSmF2YVNjcmlwdFByb21wdFJlc3VsdExpc3RlbmVyOjpjcmVhdGUoV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgICAgICAgICAgICAgIFJlZlB0cjxBUEk6OlNlY3Vy
aXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShz
ZWN1cml0eU9yaWdpbkRhdGEucHJvdG9jb2wsIHNlY3VyaXR5T3JpZ2luRGF0YS5ob3N0LCBzZWN1
cml0eU9yaWdpbkRhdGEucG9ydCk7CisgICAgICAgICAgICAgICAgUmVmUHRyPEFQSTo6U2VjdXJp
dHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHNl
Y3VyaXR5T3JpZ2luRGF0YS5wcm90b2NvbCwgc2VjdXJpdHlPcmlnaW5EYXRhLmhvc3QsIHNlY3Vy
aXR5T3JpZ2luRGF0YS5wb3J0LCBXZWJDb3JlOjpQYWdlU2NoZW1lUmVnaXN0cnk6OmNyZWF0ZSgp
KTsKICAgICAgICAgICAgICAgICBtX2NsaWVudC5ydW5KYXZhU2NyaXB0UHJvbXB0KHRvQVBJKHBh
Z2UpLCB0b0FQSShtZXNzYWdlLmltcGwoKSksIHRvQVBJKGRlZmF1bHRWYWx1ZS5pbXBsKCkpLCB0
b0FQSShmcmFtZSksIHRvQVBJKHNlY3VyaXR5T3JpZ2luLmdldCgpKSwgdG9BUEkobGlzdGVuZXIu
Z2V0KCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKG1fY2xpZW50LnJ1bkphdmFTY3Jp
cHRQcm9tcHRfZGVwcmVjYXRlZEZvclVzZVdpdGhWNSkgewotICAgICAgICAgICAgICAgIFJlZlB0
cjxBUEk6OlNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmln
aW46OmNyZWF0ZShzZWN1cml0eU9yaWdpbkRhdGEucHJvdG9jb2wsIHNlY3VyaXR5T3JpZ2luRGF0
YS5ob3N0LCBzZWN1cml0eU9yaWdpbkRhdGEucG9ydCk7CisgICAgICAgICAgICAgICAgUmVmUHRy
PEFQSTo6U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlKHNlY3VyaXR5T3JpZ2luRGF0YS5wcm90b2NvbCwgc2VjdXJpdHlPcmlnaW5EYXRh
Lmhvc3QsIHNlY3VyaXR5T3JpZ2luRGF0YS5wb3J0LCBXZWJDb3JlOjpQYWdlU2NoZW1lUmVnaXN0
cnk6OmNyZWF0ZSgpKTsKICAgICAgICAgICAgICAgICBSZWZQdHI8QVBJOjpTdHJpbmc+IHN0cmlu
ZyA9IGFkb3B0UmVmKHRvSW1wbChtX2NsaWVudC5ydW5KYXZhU2NyaXB0UHJvbXB0X2RlcHJlY2F0
ZWRGb3JVc2VXaXRoVjUodG9BUEkocGFnZSksIHRvQVBJKG1lc3NhZ2UuaW1wbCgpKSwgdG9BUEko
ZGVmYXVsdFZhbHVlLmltcGwoKSksIHRvQVBJKGZyYW1lKSwgdG9BUEkoc2VjdXJpdHlPcmlnaW4u
Z2V0KCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pKSk7CiAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgaWYgKHN0cmluZykKQEAgLTIyOTMsNyArMjI5NCw3IEBAIHZvaWQgV0tQ
YWdlU2V0UGFnZU5hdmlnYXRpb25DbGllbnQoV0tQYWcKICAgICAgICAgewogICAgICAgICAgICAg
aWYgKCFtX2NsaWVudC5kaWRGYWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFtZSkKICAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRGYWlsUHJvdmlzaW9uYWxM
b2FkSW5TdWJmcmFtZSh0b0FQSSgmcGFnZSksIHRvQVBJKG5hdmlnYXRpb24pLCB0b0FQSShBUEk6
OkZyYW1lSW5mbzo6Y3JlYXRlKHN1YmZyYW1lLCBzZWN1cml0eU9yaWdpbkRhdGEuc2VjdXJpdHlP
cmlnaW4oKSkucHRyKCkpLCB0b0FQSShlcnJvciksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQu
YmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZEZhaWxQcm92aXNpb25h
bExvYWRJblN1YmZyYW1lKHRvQVBJKCZwYWdlKSwgdG9BUEkobmF2aWdhdGlvbiksIHRvQVBJKEFQ
STo6RnJhbWVJbmZvOjpjcmVhdGUoc3ViZnJhbWUsIHNlY3VyaXR5T3JpZ2luRGF0YS5zZWN1cml0
eU9yaWdpbihXZWJDb3JlOjpQYWdlU2NoZW1lUmVnaXN0cnk6OmNyZWF0ZSgpKSkucHRyKCkpLCB0
b0FQSShlcnJvciksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsK
ICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgZGlkRmluaXNoRG9jdW1lbnRMb2FkKFdlYlBhZ2VQ
cm94eSYgcGFnZSwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9uLCBBUEk6Ok9iamVjdCogdXNl
ckRhdGEpIG92ZXJyaWRlCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2
aWdhdGlvblN0YXRlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9D
b2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0JKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0JKHdvcmtpbmcgY29weSkKQEAg
LTYzLDYgKzYzLDcgQEAKICNpbXBvcnQgIl9XS1JlbmRlcmluZ1Byb2dyZXNzRXZlbnRzSW50ZXJu
YWwuaCIKICNpbXBvcnQgIl9XS1NhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlSW50ZXJuYWwuaCIK
ICNpbXBvcnQgPFdlYkNvcmUvQ3JlZGVudGlhbC5oPgorI2ltcG9ydCA8V2ViQ29yZS9QYWdlU2No
ZW1lUmVnaXN0cnkuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1NlcmlhbGl6ZWRDcnlwdG9LZXlXcmFwLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1VSTC5oPgpAQCAtNTAzLDcgKzUwNCw3IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZp
Z2F0aW9uQ2xpZW50OjoKICAgICBhdXRvIG5hdmlnYXRpb25EZWxlZ2F0ZSA9IG1fbmF2aWdhdGlv
blN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpOwogICAgIGF1dG8gZXJyb3JXaXRoUmVj
b3ZlcnlBdHRlbXB0ZXIgPSBjcmVhdGVFcnJvcldpdGhSZWNvdmVyeUF0dGVtcHRlcihtX25hdmln
YXRpb25TdGF0ZS5tX3dlYlZpZXcsIHdlYkZyYW1lUHJveHksIGVycm9yKTsKIAotICAgIFsoaWQg
PFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4pbmF2aWdhdGlvbkRlbGVnYXRlIF93ZWJWaWV3
Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBuYXZpZ2F0aW9uOm5pbCBkaWRGYWlsUHJvdmlz
aW9uYWxMb2FkSW5TdWJmcmFtZTp3cmFwcGVyKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUod2ViRnJh
bWVQcm94eSwgc2VjdXJpdHlPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKSkpIHdpdGhFcnJvcjplcnJv
cldpdGhSZWNvdmVyeUF0dGVtcHRlci5nZXQoKV07CisgICAgWyhpZCA8V0tOYXZpZ2F0aW9uRGVs
ZWdhdGVQcml2YXRlPiluYXZpZ2F0aW9uRGVsZWdhdGUgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3Rh
dGUubV93ZWJWaWV3IG5hdmlnYXRpb246bmlsIGRpZEZhaWxQcm92aXNpb25hbExvYWRJblN1YmZy
YW1lOndyYXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0ZSh3ZWJGcmFtZVByb3h5LCBzZWN1cml0
eU9yaWdpbi5zZWN1cml0eU9yaWdpbihQYWdlU2NoZW1lUmVnaXN0cnk6OmNyZWF0ZSgpKSkpIHdp
dGhFcnJvcjplcnJvcldpdGhSZWNvdmVyeUF0dGVtcHRlci5nZXQoKV07CiB9CiAKIHZvaWQgTmF2
aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRDb21taXROYXZpZ2F0aW9uKFdlYlBh
Z2VQcm94eSYgcGFnZSwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9uLCBBUEk6Ok9iamVjdCop
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgJKHJl
dmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVn
YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTc2LDcgKzc2LDcgQEAgcHJpdmF0ZToKIAogICAgIHBy
aXZhdGU6CiAgICAgICAgIC8vIEFQSTo6VUlDbGllbnQKLSAgICAgICAgUGFzc1JlZlB0cjxXZWJL
aXQ6OldlYlBhZ2VQcm94eT4gY3JlYXRlTmV3UGFnZShXZWJLaXQ6OldlYlBhZ2VQcm94eSosIFdl
YktpdDo6V2ViRnJhbWVQcm94eSosIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OldpbmRvd0Zl
YXR1cmVzJiwgY29uc3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSYpIG92ZXJyaWRlOwor
ICAgICAgICBSZWZQdHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+IGNyZWF0ZU5ld1BhZ2UoV2ViS2l0
OjpXZWJQYWdlUHJveHkqLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBjb25zdCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25z
dCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYsIGNvbnN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlv
bkRhdGEmKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBjbG9zZShXZWJLaXQ6OldlYlBhZ2VQcm94
eSopIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZShX
ZWJLaXQ6OldlYlBhZ2VQcm94eSopIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGRpZEVudGVyRnVs
bHNjcmVlbihXZWJLaXQ6OldlYlBhZ2VQcm94eSopIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0JKHJldmlzaW9uIDIwODM5OCkK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAjaW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKICNp
bXBvcnQgIl9XS0NvbnRleHRNZW51RWxlbWVudEluZm8uaCIKICNpbXBvcnQgIl9XS0ZyYW1lSGFu
ZGxlSW50ZXJuYWwuaCIKKyNpbXBvcnQgPFdlYkNvcmUvUGFnZVNjaGVtZVJlZ2lzdHJ5Lmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgogI2ltcG9ydCA8V2ViQ29yZS9V
UkwuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgpAQCAtMTQ5LDcgKzE1MCw3IEBAIFVJRGVs
ZWdhdGU6OlVJQ2xpZW50Ojp+VUlDbGllbnQoKQogewogfQogCi1QYXNzUmVmUHRyPFdlYktpdDo6
V2ViUGFnZVByb3h5PiBVSURlbGVnYXRlOjpVSUNsaWVudDo6Y3JlYXRlTmV3UGFnZShXZWJLaXQ6
OldlYlBhZ2VQcm94eSogcGFnZSwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiBpbml0aWF0aW5nRnJh
bWUsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW5EYXRh
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6
OldpbmRvd0ZlYXR1cmVzJiB3aW5kb3dGZWF0dXJlcywgY29uc3QgV2ViS2l0OjpOYXZpZ2F0aW9u
QWN0aW9uRGF0YSYgbmF2aWdhdGlvbkFjdGlvbkRhdGEpCitSZWZQdHI8V2ViS2l0OjpXZWJQYWdl
UHJveHk+IFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpjcmVhdGVOZXdQYWdlKFdlYktpdDo6V2ViUGFn
ZVByb3h5KiBwYWdlLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqIGluaXRpYXRpbmdGcmFtZSwgY29u
c3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbkRhdGEsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6V2luZG93
RmVhdHVyZXMmIHdpbmRvd0ZlYXR1cmVzLCBjb25zdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25E
YXRhJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSkKIHsKICAgICBpZiAoIW1fdWlEZWxlZ2F0ZS5tX2Rl
bGVnYXRlTWV0aG9kcy53ZWJWaWV3Q3JlYXRlV2ViVmlld1dpdGhDb25maWd1cmF0aW9uRm9yTmF2
aWdhdGlvbkFjdGlvbldpbmRvd0ZlYXR1cmVzKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAg
LTE2MSw3ICsxNjIsNyBAQCBQYXNzUmVmUHRyPFdlYktpdDo6V2ViUGFnZVByb3h5PiBVSURlbGVn
CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbbV91aURlbGVnYXRlLm1fd2ViVmll
dy0+X2NvbmZpZ3VyYXRpb24gY29weV0pOwogICAgIFtjb25maWd1cmF0aW9uIF9zZXRSZWxhdGVk
V2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3XTsKIAotICAgIGF1dG8gc291cmNlRnJhbWVJ
bmZvID0gQVBJOjpGcmFtZUluZm86OmNyZWF0ZSgqaW5pdGlhdGluZ0ZyYW1lLCBzZWN1cml0eU9y
aWdpbkRhdGEuc2VjdXJpdHlPcmlnaW4oKSk7CisgICAgYXV0byBzb3VyY2VGcmFtZUluZm8gPSBB
UEk6OkZyYW1lSW5mbzo6Y3JlYXRlKCppbml0aWF0aW5nRnJhbWUsIHNlY3VyaXR5T3JpZ2luRGF0
YS5zZWN1cml0eU9yaWdpbihXZWJDb3JlOjpQYWdlU2NoZW1lUmVnaXN0cnk6OmNyZWF0ZSgpKSk7
CiAKICAgICBhdXRvIHVzZXJJbml0aWF0ZWRBY3Rpdml0eSA9IHBhZ2UtPnByb2Nlc3MoKS51c2Vy
SW5pdGlhdGVkQWN0aXZpdHkobmF2aWdhdGlvbkFjdGlvbkRhdGEudXNlckdlc3R1cmVUb2tlbklk
ZW50aWZpZXIpOwogICAgIGJvb2wgc2hvdWxkT3BlbkFwcExpbmtzID0gIWhvc3RzQXJlRXF1YWwo
V2ViQ29yZTo6VVJMKFdlYkNvcmU6OlBhcnNlZFVSTFN0cmluZywgaW5pdGlhdGluZ0ZyYW1lLT51
cmwoKSksIHJlcXVlc3QudXJsKCkpOwpAQCAtMTk0LDcgKzE5NSw3IEBAIHZvaWQgVUlEZWxlZ2F0
ZTo6VUlDbGllbnQ6OnJ1bkphdmFTY3JpcHQKICAgICB9CiAKICAgICBSZWZQdHI8Q29tcGxldGlv
bkhhbmRsZXJDYWxsQ2hlY2tlcj4gY2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNr
ZXI6OmNyZWF0ZShkZWxlZ2F0ZS5nZXQoKSwgQHNlbGVjdG9yKHdlYlZpZXc6cnVuSmF2YVNjcmlw
dEFsZXJ0UGFuZWxXaXRoTWVzc2FnZTppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVy
OikpOwotICAgIFtkZWxlZ2F0ZSB3ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgcnVuSmF2
YVNjcmlwdEFsZXJ0UGFuZWxXaXRoTWVzc2FnZTptZXNzYWdlIGluaXRpYXRlZEJ5RnJhbWU6d3Jh
cHBlcihBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKCp3ZWJGcmFtZVByb3h5LCBzZWN1cml0eU9yaWdp
bkRhdGEuc2VjdXJpdHlPcmlnaW4oKSkpIGNvbXBsZXRpb25IYW5kbGVyOkJsb2NrUHRyPHZvaWQg
KCk+Ojpmcm9tQ2FsbGFibGUoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlciksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXSB7CisgICAgW2RlbGVnYXRlIHdl
YlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyBydW5KYXZhU2NyaXB0QWxlcnRQYW5lbFdpdGhN
ZXNzYWdlOm1lc3NhZ2UgaW5pdGlhdGVkQnlGcmFtZTp3cmFwcGVyKEFQSTo6RnJhbWVJbmZvOjpj
cmVhdGUoKndlYkZyYW1lUHJveHksIHNlY3VyaXR5T3JpZ2luRGF0YS5zZWN1cml0eU9yaWdpbihX
ZWJDb3JlOjpQYWdlU2NoZW1lUmVnaXN0cnk6OmNyZWF0ZSgpKSkpIGNvbXBsZXRpb25IYW5kbGVy
OkJsb2NrUHRyPHZvaWQgKCk+Ojpmcm9tQ2FsbGFibGUoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlciksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXSB7CiAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgIGNoZWNrZXItPmRpZENhbGxDb21w
bGV0aW9uSGFuZGxlcigpOwogICAgIH0pLmdldCgpXTsKQEAgLTIxNCw3ICsyMTUsNyBAQCB2b2lk
IFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5KYXZhU2NyaXB0CiAgICAgfQogCiAgICAgUmVmUHRy
PENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI+IGNoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxl
ckNhbGxDaGVja2VyOjpjcmVhdGUoZGVsZWdhdGUuZ2V0KCksIEBzZWxlY3Rvcih3ZWJWaWV3OnJ1
bkphdmFTY3JpcHRDb25maXJtUGFuZWxXaXRoTWVzc2FnZTppbml0aWF0ZWRCeUZyYW1lOmNvbXBs
ZXRpb25IYW5kbGVyOikpOwotICAgIFtkZWxlZ2F0ZSB3ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dl
YlZpZXcgcnVuSmF2YVNjcmlwdENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlOm1lc3NhZ2UgaW5pdGlh
dGVkQnlGcmFtZTp3cmFwcGVyKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoKndlYkZyYW1lUHJveHks
IHNlY3VyaXR5T3JpZ2luRGF0YS5zZWN1cml0eU9yaWdpbigpKSkgY29tcGxldGlvbkhhbmRsZXI6
QmxvY2tQdHI8dm9pZCAoQk9PTCk+Ojpmcm9tQ2FsbGFibGUoW2NvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXShC
T09MIHJlc3VsdCkgeworICAgIFtkZWxlZ2F0ZSB3ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZp
ZXcgcnVuSmF2YVNjcmlwdENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlOm1lc3NhZ2UgaW5pdGlhdGVk
QnlGcmFtZTp3cmFwcGVyKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoKndlYkZyYW1lUHJveHksIHNl
Y3VyaXR5T3JpZ2luRGF0YS5zZWN1cml0eU9yaWdpbihXZWJDb3JlOjpQYWdlU2NoZW1lUmVnaXN0
cnk6OmNyZWF0ZSgpKSkpIGNvbXBsZXRpb25IYW5kbGVyOkJsb2NrUHRyPHZvaWQoQk9PTCk+Ojpm
cm9tQ2FsbGFibGUoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
ciksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXShCT09MIHJlc3VsdCkgewogICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihyZXN1bHQpOwogICAgICAgICBjaGVja2VyLT5kaWRDYWxsQ29tcGxl
dGlvbkhhbmRsZXIoKTsKICAgICB9KS5nZXQoKV07CkBAIC0yMzQsNyArMjM1LDcgQEAgdm9pZCBV
SURlbGVnYXRlOjpVSUNsaWVudDo6cnVuSmF2YVNjcmlwdAogICAgIH0KIAogICAgIFJlZlB0cjxD
b21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyPiBjaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJD
YWxsQ2hlY2tlcjo6Y3JlYXRlKGRlbGVnYXRlLmdldCgpLCBAc2VsZWN0b3Iod2ViVmlldzpydW5K
YXZhU2NyaXB0VGV4dElucHV0UGFuZWxXaXRoUHJvbXB0OmRlZmF1bHRUZXh0OmluaXRpYXRlZEJ5
RnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6KSk7Ci0gICAgW2RlbGVnYXRlIHdlYlZpZXc6bV91aURl
bGVnYXRlLm1fd2ViVmlldyBydW5KYXZhU2NyaXB0VGV4dElucHV0UGFuZWxXaXRoUHJvbXB0Om1l
c3NhZ2UgZGVmYXVsdFRleHQ6ZGVmYXVsdFZhbHVlIGluaXRpYXRlZEJ5RnJhbWU6d3JhcHBlcihB
UEk6OkZyYW1lSW5mbzo6Y3JlYXRlKCp3ZWJGcmFtZVByb3h5LCBzZWN1cml0eU9yaWdpbkRhdGEu
c2VjdXJpdHlPcmlnaW4oKSkpIGNvbXBsZXRpb25IYW5kbGVyOkJsb2NrUHRyPHZvaWQgKE5TU3Ry
aW5nICopPjo6ZnJvbUNhbGxhYmxlKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpLCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0oTlNTdHJpbmcgKnJlc3Vs
dCkgeworICAgIFtkZWxlZ2F0ZSB3ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgcnVuSmF2
YVNjcmlwdFRleHRJbnB1dFBhbmVsV2l0aFByb21wdDptZXNzYWdlIGRlZmF1bHRUZXh0OmRlZmF1
bHRWYWx1ZSBpbml0aWF0ZWRCeUZyYW1lOndyYXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0ZSgq
d2ViRnJhbWVQcm94eSwgc2VjdXJpdHlPcmlnaW5EYXRhLnNlY3VyaXR5T3JpZ2luKFdlYkNvcmU6
OlBhZ2VTY2hlbWVSZWdpc3RyeTo6Y3JlYXRlKCkpKSkgY29tcGxldGlvbkhhbmRsZXI6QmxvY2tQ
dHI8dm9pZChOU1N0cmluZyAqKT46OmZyb21DYWxsYWJsZShbY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlcildKE5T
U3RyaW5nICpyZXN1bHQpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmVzdWx0KTsKICAg
ICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgfSkuZ2V0KCld
OwpAQCAtMjc1LDcgKzI3Niw3IEBAIGJvb2wgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bk9wZW5Q
YW5lbCgKICAgICBpZiAoIWRlbGVnYXRlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBh
dXRvIGZyYW1lID0gQVBJOjpGcmFtZUluZm86OmNyZWF0ZSgqd2ViRnJhbWVQcm94eSwgc2VjdXJp
dHlPcmlnaW5EYXRhLnNlY3VyaXR5T3JpZ2luKCkpOworICAgIGF1dG8gZnJhbWUgPSBBUEk6OkZy
YW1lSW5mbzo6Y3JlYXRlKCp3ZWJGcmFtZVByb3h5LCBzZWN1cml0eU9yaWdpbkRhdGEuc2VjdXJp
dHlPcmlnaW4oV2ViQ29yZTo6UGFnZVNjaGVtZVJlZ2lzdHJ5OjpjcmVhdGUoKSkpOwogICAgIFJl
ZlB0cjxXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5PiByZXN1bHRMaXN0ZW5lciA9IGxp
c3RlbmVyOwogCiAgICAgUmVmUHRyPENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI+IGNoZWNr
ZXIgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUoZGVsZWdhdGUuZ2V0KCks
IEBzZWxlY3Rvcih3ZWJWaWV3OnJ1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzOmluaXRpYXRlZEJ5
RnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6KSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbi5jcHAJKHJl
dmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25z
L1dlYk5vdGlmaWNhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDggQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJOb3RpZmljYXRpb24uaCIKIAorI2luY2x1
ZGUgPFdlYkNvcmUvUGFnZVNjaGVtZVJlZ2lzdHJ5Lmg+CisKIG5hbWVzcGFjZSBXZWJLaXQgewog
CiBXZWJOb3RpZmljYXRpb246OldlYk5vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIHRpdGxlLCBj
b25zdCBTdHJpbmcmIGJvZHksIGNvbnN0IFN0cmluZyYgaWNvblVSTCwgY29uc3QgU3RyaW5nJiB0
YWcsIGNvbnN0IFN0cmluZyYgbGFuZywgY29uc3QgU3RyaW5nJiBkaXIsIGNvbnN0IFN0cmluZyYg
b3JpZ2luU3RyaW5nLCB1aW50NjRfdCBub3RpZmljYXRpb25JRCkKQEAgLTM1LDcgKzM3LDcgQEAg
V2ViTm90aWZpY2F0aW9uOjpXZWJOb3RpZmljYXRpb24oY29uc3QgUwogICAgICwgbV90YWcodGFn
KQogICAgICwgbV9sYW5nKGxhbmcpCiAgICAgLCBtX2RpcihkaXIpCi0gICAgLCBtX29yaWdpbihB
UEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKG9yaWdpblN0cmluZykpCisgICAg
LCBtX29yaWdpbihBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKG9yaWdpblN0
cmluZywgV2ViQ29yZTo6UGFnZVNjaGVtZVJlZ2lzdHJ5OjpjcmVhdGUoKSkpCiAgICAgLCBtX25v
dGlmaWNhdGlvbklEKG5vdGlmaWNhdGlvbklEKQogewogfQpJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJO
b3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJv
eHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzAsNyArMjMwLDcgQEAgdm9pZCBXZWJOb3RpZmlj
YXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZAogICAgICAgICBpdC0+a2V5LT5wcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6RGlkQ2xvc2VOb3RpZmljYXRpb25z
KGl0LT52YWx1ZSksIDApOwogfQogCi12b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6
cHJvdmlkZXJEaWRVcGRhdGVOb3RpZmljYXRpb25Qb2xpY3koY29uc3QgQVBJOjpTZWN1cml0eU9y
aWdpbiogb3JpZ2luLCBib29sIGFsbG93ZWQpCit2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQ
cm94eTo6cHJvdmlkZXJEaWRVcGRhdGVOb3RpZmljYXRpb25Qb2xpY3koQVBJOjpTZWN1cml0eU9y
aWdpbiogb3JpZ2luLCBib29sIGFsbG93ZWQpCiB7CiAgICAgaWYgKCFwcm9jZXNzUG9vbCgpKQog
ICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTm90aWZpY2F0
aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJv
eHkuaAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05vdGlm
aWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAg
LTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgIHZvaWQgcHJvdmlkZXJEaWRTaG93Tm90aWZpY2F0
aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKTsKICAgICB2b2lkIHByb3ZpZGVyRGlkQ2xpY2tO
b3RpZmljYXRpb24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQpOwogICAgIHZvaWQgcHJvdmlkZXJE
aWRDbG9zZU5vdGlmaWNhdGlvbnMoQVBJOjpBcnJheSogbm90aWZpY2F0aW9uSURzKTsKLSAgICB2
b2lkIHByb3ZpZGVyRGlkVXBkYXRlTm90aWZpY2F0aW9uUG9saWN5KGNvbnN0IEFQSTo6U2VjdXJp
dHlPcmlnaW4qLCBib29sIGFsbG93ZWQpOworICAgIHZvaWQgcHJvdmlkZXJEaWRVcGRhdGVOb3Rp
ZmljYXRpb25Qb2xpY3koQVBJOjpTZWN1cml0eU9yaWdpbiosIGJvb2wgYWxsb3dlZCk7CiAgICAg
dm9pZCBwcm92aWRlckRpZFJlbW92ZU5vdGlmaWNhdGlvblBvbGljaWVzKEFQSTo6QXJyYXkqIG9y
aWdpbnMpOwogCiAgICAgdWludDY0X3Qgbm90aWZpY2F0aW9uTG9jYWxJREZvclRlc3RpbmcoV2Vi
Tm90aWZpY2F0aW9uKik7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9M
b2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9TdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5jcHAJKHJl
dmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL0xvY2Fs
U3RvcmFnZURhdGFiYXNlVHJhY2tlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcg
QEAKICNpbmNsdWRlICJMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuaCIKIAogI2luY2x1ZGUg
PFdlYkNvcmUvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZVNjaGVtZVJlZ2lz
dHJ5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVGaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TUUxpdGVTdGF0ZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3Jp
Z2luLmg+CkBAIC0xNjAsNyArMTYxLDcgQEAgVmVjdG9yPFJlZjxTZWN1cml0eU9yaWdpbj4+IExv
Y2FsU3RvcmFnZQogICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luSWRlbnRpZmllciA6IG9yaWdp
bklkZW50aWZpZXJzVG9EZWxldGUpIHsKICAgICAgICAgcmVtb3ZlRGF0YWJhc2VXaXRoT3JpZ2lu
SWRlbnRpZmllcihvcmlnaW5JZGVudGlmaWVyKTsKIAotICAgICAgICBkZWxldGVkRGF0YWJhc2VP
cmlnaW5zLnVuY2hlY2tlZEFwcGVuZChTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbURhdGFiYXNl
SWRlbnRpZmllcihvcmlnaW5JZGVudGlmaWVyKSk7CisgICAgICAgIGRlbGV0ZWREYXRhYmFzZU9y
aWdpbnMudW5jaGVja2VkQXBwZW5kKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tRGF0YWJhc2VJ
ZGVudGlmaWVyKG9yaWdpbklkZW50aWZpZXIsIFBhZ2VTY2hlbWVSZWdpc3RyeTo6Y3JlYXRlKCkp
KTsKICAgICB9CiAKICAgICByZXR1cm4gZGVsZXRlZERhdGFiYXNlT3JpZ2luczsKQEAgLTE3Miw3
ICsxNzMsNyBAQCBWZWN0b3I8UmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPj4gTG9jCiAgICAg
b3JpZ2lucy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fb3JpZ2lucy5zaXplKCkpOwogCiAgICAg
Zm9yIChjb25zdCBTdHJpbmcmIG9yaWdpbiA6IG1fb3JpZ2lucykKLSAgICAgICAgb3JpZ2lucy51
bmNoZWNrZWRBcHBlbmQoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21EYXRhYmFzZUlkZW50aWZp
ZXIob3JpZ2luKSk7CisgICAgICAgIG9yaWdpbnMudW5jaGVja2VkQXBwZW5kKFNlY3VyaXR5T3Jp
Z2luOjpjcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyKG9yaWdpbiwgUGFnZVNjaGVtZVJlZ2lz
dHJ5OjpjcmVhdGUoKSkpOwogCiAgICAgcmV0dXJuIG9yaWdpbnM7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwCShy
ZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9TdG9y
YWdlTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRl
ICJTdG9yYWdlQXJlYU1hcE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiU3RvcmFnZU1hbmFnZXJNZXNz
YWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
UGFnZVNjaGVtZVJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRh
dGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luSGFzaC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU3RvcmFnZU1hcC5oPgpAQCAtNjg2LDcgKzY4Nyw3IEBAIHZvaWQgU3RvcmFnZU1h
bmFnZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU0KICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUg
YSBtZXNzYWdlIGNoZWNrLgogICAgIEFTU0VSVChsb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOwogCi0g
ICAgYXV0byBzdG9yYWdlQXJlYSA9IGxvY2FsU3RvcmFnZU5hbWVzcGFjZS0+Z2V0T3JDcmVhdGVT
dG9yYWdlQXJlYShzZWN1cml0eU9yaWdpbkRhdGEuc2VjdXJpdHlPcmlnaW4oKSk7CisgICAgYXV0
byBzdG9yYWdlQXJlYSA9IGxvY2FsU3RvcmFnZU5hbWVzcGFjZS0+Z2V0T3JDcmVhdGVTdG9yYWdl
QXJlYShzZWN1cml0eU9yaWdpbkRhdGEuc2VjdXJpdHlPcmlnaW4oUGFnZVNjaGVtZVJlZ2lzdHJ5
OjpjcmVhdGUoKSkpOwogICAgIHN0b3JhZ2VBcmVhLT5hZGRMaXN0ZW5lcihjb25uZWN0aW9uLCBz
dG9yYWdlTWFwSUQpOwogCiAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IFdURk1vdmUoc3Rv
cmFnZUFyZWEpOwpAQCAtNjk3LDcgKzY5OCw3IEBAIHZvaWQgU3RvcmFnZU1hbmFnZXI6OmNyZWF0
ZVRyYW5zaWVudExvY2EKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgYSBtZXNzYWdlIGNo
ZWNrLgogICAgIEFTU0VSVChtX3N0b3JhZ2VBcmVhc0J5Q29ubmVjdGlvbi5pc1ZhbGlkS2V5KHsg
JmNvbm5lY3Rpb24sIHN0b3JhZ2VNYXBJRCB9KSk7CiAKLSAgICBSZWY8U2VjdXJpdHlPcmlnaW4+
IG9yaWdpbiA9IHNlY3VyaXR5T3JpZ2luRGF0YS5zZWN1cml0eU9yaWdpbigpOworICAgIFJlZjxT
ZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gc2VjdXJpdHlPcmlnaW5EYXRhLnNlY3VyaXR5T3JpZ2lu
KFBhZ2VTY2hlbWVSZWdpc3RyeTo6Y3JlYXRlKCkpOwogCiAgICAgLy8gU2VlIGlmIHdlIGFscmVh
ZHkgaGF2ZSBzZXNzaW9uIHN0b3JhZ2UgZm9yIHRoaXMgY29ubmVjdGlvbi9vcmlnaW4gY29tYm8u
CiAgICAgLy8gSWYgc28sIHVwZGF0ZSB0aGUgbWFwIHdpdGggdGhlIG5ldyBJRCwgb3RoZXJ3aXNl
IGtlZXAgb24gdHJ1Y2tpbmcuCkBAIC03MjAsOSArNzIxLDkgQEAgdm9pZCBTdG9yYWdlTWFuYWdl
cjo6Y3JlYXRlVHJhbnNpZW50TG9jYQogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBhIG1l
c3NhZ2UgY2hlY2suCiAgICAgQVNTRVJUKCFzbG90KTsKIAotICAgIFRyYW5zaWVudExvY2FsU3Rv
cmFnZU5hbWVzcGFjZSogdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlID0gZ2V0T3JDcmVh
dGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2Uoc3RvcmFnZU5hbWVzcGFjZUlELCB0b3BM
ZXZlbE9yaWdpbkRhdGEuc2VjdXJpdHlPcmlnaW4oKSk7CisgICAgVHJhbnNpZW50TG9jYWxTdG9y
YWdlTmFtZXNwYWNlKiB0cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UgPSBnZXRPckNyZWF0
ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShzdG9yYWdlTmFtZXNwYWNlSUQsIHRvcExl
dmVsT3JpZ2luRGF0YS5zZWN1cml0eU9yaWdpbihQYWdlU2NoZW1lUmVnaXN0cnk6OmNyZWF0ZSgp
KSk7CiAKLSAgICBhdXRvIHN0b3JhZ2VBcmVhID0gdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNw
YWNlLT5nZXRPckNyZWF0ZVN0b3JhZ2VBcmVhKHNlY3VyaXR5T3JpZ2luRGF0YS5zZWN1cml0eU9y
aWdpbigpKTsKKyAgICBhdXRvIHN0b3JhZ2VBcmVhID0gdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFt
ZXNwYWNlLT5nZXRPckNyZWF0ZVN0b3JhZ2VBcmVhKHNlY3VyaXR5T3JpZ2luRGF0YS5zZWN1cml0
eU9yaWdpbihQYWdlU2NoZW1lUmVnaXN0cnk6OmNyZWF0ZSgpKSk7CiAgICAgc3RvcmFnZUFyZWEt
PmFkZExpc3RlbmVyKGNvbm5lY3Rpb24sIHN0b3JhZ2VNYXBJRCk7CiAKICAgICBzbG90ID0gV1RG
TW92ZShzdG9yYWdlQXJlYSk7CkBAIC03NTEsNyArNzUyLDcgQEAgdm9pZCBTdG9yYWdlTWFuYWdl
cjo6Y3JlYXRlU2Vzc2lvblN0b3JhZwogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBhIG1l
c3NhZ2UgY2hlY2suCiAgICAgQVNTRVJUKCZjb25uZWN0aW9uID09IHNlc3Npb25TdG9yYWdlTmFt
ZXNwYWNlLT5hbGxvd2VkQ29ubmVjdGlvbigpKTsKIAotICAgIGF1dG8gc3RvcmFnZUFyZWEgPSBz
ZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS0+Z2V0T3JDcmVhdGVTdG9yYWdlQXJlYShzZWN1cml0eU9y
aWdpbkRhdGEuc2VjdXJpdHlPcmlnaW4oKSk7CisgICAgYXV0byBzdG9yYWdlQXJlYSA9IHNlc3Np
b25TdG9yYWdlTmFtZXNwYWNlLT5nZXRPckNyZWF0ZVN0b3JhZ2VBcmVhKHNlY3VyaXR5T3JpZ2lu
RGF0YS5zZWN1cml0eU9yaWdpbihQYWdlU2NoZW1lUmVnaXN0cnk6OmNyZWF0ZSgpKSk7CiAgICAg
c3RvcmFnZUFyZWEtPmFkZExpc3RlbmVyKGNvbm5lY3Rpb24sIHN0b3JhZ2VNYXBJRCk7CiAKICAg
ICBzbG90ID0gV1RGTW92ZShzdG9yYWdlQXJlYSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCShy
ZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1Nyw3ICsyNTcsNyBAQCB2
b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YShPcHRpb25TCiAgICAgaWYgKGRhdGFUeXBl
cy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkRpc2tDYWNoZSkpIHsKICAgICAgICAgY2FsbGJh
Y2tBZ2dyZWdhdG9yLT5hZGRQZW5kaW5nQ2FsbGJhY2soKTsKICAgICAgICAgbV9xdWV1ZS0+ZGlz
cGF0Y2goW2ZldGNoT3B0aW9ucywgbWVkaWFDYWNoZURpcmVjdG9yeSA9IG1fY29uZmlndXJhdGlv
bi5tZWRpYUNhY2hlRGlyZWN0b3J5Lmlzb2xhdGVkQ29weSgpLCBjYWxsYmFja0FnZ3JlZ2F0b3Jd
IHsKLSAgICAgICAgICAgIEhhc2hTZXQ8UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPj4g
b3JpZ2lucyA9IFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om9yaWdpbnNJbk1lZGlhQ2FjaGUo
bWVkaWFDYWNoZURpcmVjdG9yeSk7CisgICAgICAgICAgICBIYXNoU2V0PFJlZlB0cjxXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnMgPSBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpv
cmlnaW5zSW5NZWRpYUNhY2hlKG1lZGlhQ2FjaGVEaXJlY3RvcnksIFdlYkNvcmU6OlBhZ2VTY2hl
bWVSZWdpc3RyeTo6Y3JlYXRlKCkpOwogICAgICAgICAgICAgV2Vic2l0ZURhdGEgd2Vic2l0ZURh
dGE7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZvciAoYXV0byYgb3JpZ2luIDogb3JpZ2lu
cykgewpAQCAtMzUxLDcgKzM1MSw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRh
KE9wdGlvblMKICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5hZGRQZW5kaW5nQ2FsbGJhY2so
KTsKIAogICAgICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbZmV0Y2hPcHRpb25zLCBhcHBsaWNhdGlv
bkNhY2hlRGlyZWN0b3J5ID0gbV9jb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rv
cnkuaXNvbGF0ZWRDb3B5KCksIGFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5h
bWUgPSBtX2NvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5
TmFtZS5pc29sYXRlZENvcHkoKSwgY2FsbGJhY2tBZ2dyZWdhdG9yXSB7Ci0gICAgICAgICAgICBh
dXRvIHN0b3JhZ2UgPSBXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y3JlYXRlKGFw
cGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnksIGFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVj
dG9yeU5hbWUpOworICAgICAgICAgICAgYXV0byBzdG9yYWdlID0gV2ViQ29yZTo6QXBwbGljYXRp
b25DYWNoZVN0b3JhZ2U6OmNyZWF0ZShhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5LCBhcHBsaWNh
dGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lLCBXZWJDb3JlOjpQYWdlU2NoZW1lUmVn
aXN0cnk6OmNyZWF0ZSgpKTsKIAogICAgICAgICAgICAgV2Vic2l0ZURhdGEgd2Vic2l0ZURhdGE7
CiAKQEAgLTYyMCw3ICs2MjAsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGEo
T3B0aW9uCiAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+YWRkUGVuZGluZ0NhbGxiYWNrKCk7
CiAKICAgICAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnkg
PSBtX2NvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeS5pc29sYXRlZENvcHko
KSwgYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSA9IG1fY29uZmlndXJh
dGlvbi5hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lLmlzb2xhdGVkQ29w
eSgpLCBjYWxsYmFja0FnZ3JlZ2F0b3JdIHsKLSAgICAgICAgICAgIGF1dG8gc3RvcmFnZSA9IFdl
YkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjcmVhdGUoYXBwbGljYXRpb25DYWNoZURp
cmVjdG9yeSwgYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSk7CisgICAg
ICAgICAgICBhdXRvIHN0b3JhZ2UgPSBXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6
Y3JlYXRlKGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnksIGFwcGxpY2F0aW9uQ2FjaGVGbGF0Rmls
ZVN1YmRpcmVjdG9yeU5hbWUsIFdlYkNvcmU6OlBhZ2VTY2hlbWVSZWdpc3RyeTo6Y3JlYXRlKCkp
OwogCiAgICAgICAgICAgICBzdG9yYWdlLT5kZWxldGVBbGxDYWNoZXMoKTsKIApAQCAtNzgyLDcg
Kzc4Miw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVtb3ZlRGF0YShPcHRpb24KICNpZiBF
TkFCTEUoVklERU8pCiAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+YWRkUGVuZGluZ0NhbGxi
YWNrKCk7CiAgICAgICAgIG1fcXVldWUtPmRpc3BhdGNoKFtvcmlnaW5zID0gV1RGTW92ZShvcmln
aW5zKSwgbWVkaWFDYWNoZURpcmVjdG9yeSA9IG1fY29uZmlndXJhdGlvbi5tZWRpYUNhY2hlRGly
ZWN0b3J5Lmlzb2xhdGVkQ29weSgpLCBjYWxsYmFja0FnZ3JlZ2F0b3JdIHsKLSAgICAgICAgICAg
IFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMobWVk
aWFDYWNoZURpcmVjdG9yeSwgb3JpZ2lucyk7CisgICAgICAgICAgICBXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50OjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKG1lZGlhQ2FjaGVEaXJlY3Rvcnks
IG9yaWdpbnMsIFdlYkNvcmU6OlBhZ2VTY2hlbWVSZWdpc3RyeTo6Y3JlYXRlKCkpOwogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBXVEY6OlJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY2FsbGJh
Y2tBZ2dyZWdhdG9yXSB7CiAgICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5yZW1v
dmVQZW5kaW5nQ2FsbGJhY2soKTsKQEAgLTg3Miw3ICs4NzIsNyBAQCB2b2lkIFdlYnNpdGVEYXRh
U3RvcmU6OnJlbW92ZURhdGEoT3B0aW9uCiAKICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5h
ZGRQZW5kaW5nQ2FsbGJhY2soKTsKICAgICAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW29yaWdpbnMg
PSBXVEZNb3ZlKG9yaWdpbnMpLCBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gbV9jb25maWd1
cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkuaXNvbGF0ZWRDb3B5KCksIGFwcGxpY2F0
aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUgPSBtX2NvbmZpZ3VyYXRpb24uYXBwbGlj
YXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZS5pc29sYXRlZENvcHkoKSwgY2FsbGJh
Y2tBZ2dyZWdhdG9yXSB7Ci0gICAgICAgICAgICBhdXRvIHN0b3JhZ2UgPSBXZWJDb3JlOjpBcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZTo6Y3JlYXRlKGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnksIGFw
cGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUpOworICAgICAgICAgICAgYXV0
byBzdG9yYWdlID0gV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNyZWF0ZShhcHBs
aWNhdGlvbkNhY2hlRGlyZWN0b3J5LCBhcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3Rv
cnlOYW1lLCBXZWJDb3JlOjpQYWdlU2NoZW1lUmVnaXN0cnk6OmNyZWF0ZSgpKTsKIAogICAgICAg
ICAgICAgZm9yIChjb25zdCBhdXRvJiBvcmlnaW4gOiBvcmlnaW5zKQogICAgICAgICAgICAgICAg
IHN0b3JhZ2UtPmRlbGV0ZUNhY2hlRm9yT3JpZ2luKCpvcmlnaW4pOwpAQCAtMTA5NCw3ICsxMDk0
LDcgQEAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4+IAogCiAgICAgICAg
IGF1dG8gbWVkaWFLZXlJZGVudGlmaWVyID0gV2ViQ29yZTo6cGF0aEdldEZpbGVOYW1lKG9yaWdp
blBhdGgpOwogCi0gICAgICAgIGlmIChhdXRvIHNlY3VyaXR5T3JpZ2luID0gV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW46Om1heWJlQ3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmllcihtZWRpYUtleUlk
ZW50aWZpZXIpKQorICAgICAgICBpZiAoYXV0byBzZWN1cml0eU9yaWdpbiA9IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luOjptYXliZUNyZWF0ZUZyb21EYXRhYmFzZUlkZW50aWZpZXIobWVkaWFLZXlJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlU2NoZW1lUmVnaXN0cnk6OmNyZWF0ZSgpKSkKICAgICAg
ICAgICAgIG9yaWdpbnMuYXBwZW5kKFdURk1vdmUoc2VjdXJpdHlPcmlnaW4pKTsKICAgICB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24g
MjA4Mzk4KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtOTMsNiArOTMsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUGFnZUNhY2hlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlR3Jv
dXAuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VTY2hlbWVSZWdpc3RyeS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9SZXNvdXJjZUhhbmRsZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkT2JzZXJ2
ZXIuaD4KQEAgLTI5MCw3ICsyOTEsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQ
cm9jZXNzKFdlCiAjZW5kaWYKIAogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBjb25zdHJ1
Y3RlZCBwZXIgZGF0YSBzdG9yZSwgbm90IHBlciBwcm9jZXNzLgotICAgIG1fYXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UgPSBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y3JlYXRlKHBhcmFtZXRlcnMu
YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSwgcGFyYW1ldGVycy5hcHBsaWNhdGlvbkNhY2hlRmxh
dEZpbGVTdWJkaXJlY3RvcnlOYW1lKTsKKyAgICBtX2FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlID0g
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNyZWF0ZShwYXJhbWV0ZXJzLmFwcGxpY2F0aW9uQ2Fj
aGVEaXJlY3RvcnksIHBhcmFtZXRlcnMuYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0
b3J5TmFtZSwgUGFnZVNjaGVtZVJlZ2lzdHJ5OjpjcmVhdGUoKSk7CiAjaWYgUExBVEZPUk0oSU9T
KQogICAgIG1fYXBwbGljYXRpb25DYWNoZVN0b3JhZ2UtPnNldERlZmF1bHRPcmlnaW5RdW90YSgy
NVVMTCAqIDEwMjQgKiAxMDI0KTsKICNlbmRpZgpAQCAtMTIxMSw3ICsxMjEyLDcgQEAgdm9pZCBX
ZWJQcm9jZXNzOjpyZWxlYXNlUGFnZUNhY2hlKCkKIHZvaWQgV2ViUHJvY2Vzczo6ZmV0Y2hXZWJz
aXRlRGF0YShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURh
dGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzLCBXZWJzaXRlRGF0YSYgd2Vic2l0ZURhdGEpCiB7CiAg
ICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpNZW1vcnlD
YWNoZSkpIHsKLSAgICAgICAgZm9yIChhdXRvJiBvcmlnaW4gOiBNZW1vcnlDYWNoZTo6c2luZ2xl
dG9uKCkub3JpZ2luc1dpdGhDYWNoZShzZXNzaW9uSUQpKQorICAgICAgICBmb3IgKGF1dG8mIG9y
aWdpbiA6IE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5vcmlnaW5zV2l0aENhY2hlKHNlc3Npb25J
RCwgUGFnZVNjaGVtZVJlZ2lzdHJ5OjpjcmVhdGUoKSkpCiAgICAgICAgICAgICB3ZWJzaXRlRGF0
YS5lbnRyaWVzLmFwcGVuZChXZWJzaXRlRGF0YTo6RW50cnkgeyBvcmlnaW4sIFdlYnNpdGVEYXRh
VHlwZTo6TWVtb3J5Q2FjaGUsIDAgfSk7CiAgICAgfQogfQpAQCAtMTIzMyw5ICsxMjM0LDEwIEBA
IHZvaWQgV2ViUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmkKICAgICBpZiAod2Vic2l0
ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6Ok1lbW9yeUNhY2hlKSkgewogICAg
ICAgICBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnM7CiAgICAgICAgIGZv
ciAoYXV0byYgb3JpZ2luRGF0YSA6IG9yaWdpbkRhdGFzKQotICAgICAgICAgICAgb3JpZ2lucy5h
ZGQob3JpZ2luRGF0YS5zZWN1cml0eU9yaWdpbigpKTsKKyAgICAgICAgICAgIG9yaWdpbnMuYWRk
KG9yaWdpbkRhdGEuc2VjdXJpdHlPcmlnaW4oUGFnZVNjaGVtZVJlZ2lzdHJ5OjpjcmVhdGUoKSkp
OwogCi0gICAgICAgIE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5yZW1vdmVSZXNvdXJjZXNXaXRo
T3JpZ2lucyhzZXNzaW9uSUQsIG9yaWdpbnMpOworICAgICAgICAvLyBGSVhNRTogTWFrZSB0aGUg
TWVtb3J5Q2FjaGUgcGVyIHBhZ2UgYW5kIHVzZSB0aGF0IFBhZ2UncyBQYWdlU2NoZW1lUmVnaXN0
cnkuCisgICAgICAgIE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5yZW1vdmVSZXNvdXJjZXNXaXRo
T3JpZ2lucyhzZXNzaW9uSUQsIG9yaWdpbnMsIFBhZ2VTY2hlbWVSZWdpc3RyeTo6Y3JlYXRlKCkp
OwogICAgIH0KIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAJKHJldmlzaW9uIDIwODM5
OCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCw2ICs2NCw3IEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9NYWluRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1BhZ2VHcm91cC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZVNjaGVtZVJlZ2lzdHJ5
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QcmludENvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1Jlc291cmNlSGFuZGxlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SdW50aW1lRW5hYmxlZEZlYXR1
cmVzLmg+CkBAIC0zNTAsMTQgKzM1MSwxNCBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpzZXRTcGF0
aWFsTmF2aWdhdGlvCiAgICAgICAgICgqaXRlciktPnNldHRpbmdzKCkuc2V0U3BhdGlhbE5hdmln
YXRpb25FbmFibGVkKGVuYWJsZWQpOwogfQogCi12b2lkIEluamVjdGVkQnVuZGxlOjphZGRPcmln
aW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uSG9z
dCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucykKK3ZvaWQgSW5qZWN0ZWRCdW5kbGU6
OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2lu
LCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVzdGlu
YXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zLCBjb25zdCBQYWdlU2No
ZW1lUmVnaXN0cnkmIHNjaGVtZVJlZ2lzdHJ5KQogewotICAgIFNlY3VyaXR5UG9saWN5OjphZGRP
cmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmlu
Zyhzb3VyY2VPcmlnaW4pLmdldCgpLCBkZXN0aW5hdGlvblByb3RvY29sLCBkZXN0aW5hdGlvbkhv
c3QsIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKKyAgICBTZWN1cml0eVBvbGljeTo6YWRk
T3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJp
bmcoc291cmNlT3JpZ2luLCBzY2hlbWVSZWdpc3RyeSkuZ2V0KCksIGRlc3RpbmF0aW9uUHJvdG9j
b2wsIGRlc3RpbmF0aW9uSG9zdCwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwogfQogCi12
b2lkIEluamVjdGVkQnVuZGxlOjpyZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25z
dCBTdHJpbmcmIHNvdXJjZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29s
LCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3Vi
ZG9tYWlucykKK3ZvaWQgSW5qZWN0ZWRCdW5kbGU6OnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlz
dEVudHJ5KGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0
aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93RGVz
dGluYXRpb25TdWJkb21haW5zLCBjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnkmIHNjaGVtZVJlZ2lz
dHJ5KQogewotICAgIFNlY3VyaXR5UG9saWN5OjpyZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RF
bnRyeShTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhzb3VyY2VPcmlnaW4pLmdldCgp
LCBkZXN0aW5hdGlvblByb3RvY29sLCBkZXN0aW5hdGlvbkhvc3QsIGFsbG93RGVzdGluYXRpb25T
dWJkb21haW5zKTsKKyAgICBTZWN1cml0eVBvbGljeTo6cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVs
aXN0RW50cnkoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoc291cmNlT3JpZ2luLCBz
Y2hlbWVSZWdpc3RyeSkuZ2V0KCksIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9uSG9z
dCwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxl
OjpyZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHMoKQpJbmRleDogU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAko
cmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw3IEBACiAg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBJbmplY3Rl
ZEJ1bmRsZV9oCi0jZGVmaW5lIEluamVjdGVkQnVuZGxlX2gKKyNwcmFnbWEgb25jZQogCiAjaW5j
bHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVDbGllbnQuaCIKQEAg
LTYxLDYgKzYwLDEwIEBAIGNsYXNzIENvbm5lY3Rpb247CiBjbGFzcyBEYXRhUmVmZXJlbmNlOwog
fQogCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBQYWdlU2NoZW1lUmVnaXN0cnk7Cit9CisK
IG5hbWVzcGFjZSBXZWJLaXQgewogCiAjaWYgVVNFKEZPVU5EQVRJT04pCkBAIC0xMTEsOCArMTE0
LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0UG9wdXBCbG9ja2luZ0VuYWJsZWQoV2ViUGFnZUdy
b3VwUHJveHkqLCBib29sKTsKICAgICB2b2lkIHNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVk
KFdlYlBhZ2VHcm91cFByb3h5KiwgYm9vbCk7CiAgICAgdm9pZCBzZXRTcGF0aWFsTmF2aWdhdGlv
bkVuYWJsZWQoV2ViUGFnZUdyb3VwUHJveHkqLCBib29sKTsKLSAgICB2b2lkIGFkZE9yaWdpbkFj
Y2Vzc1doaXRlbGlzdEVudHJ5KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYsIGJvb2wpOwotICAgIHZvaWQgcmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnko
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgYm9vbCk7CisgICAg
dm9pZCBhZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmLCBib29sLCBjb25zdCBXZWJDb3JlOjpQYWdlU2NoZW1lUmVn
aXN0cnkmKTsKKyAgICB2b2lkIHJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGJvb2wsIGNvbnN0IFdlYkNv
cmU6OlBhZ2VTY2hlbWVSZWdpc3RyeSYpOwogICAgIHZvaWQgcmVzZXRPcmlnaW5BY2Nlc3NXaGl0
ZWxpc3RzKCk7CiAgICAgdm9pZCBzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChX
ZWJQYWdlR3JvdXBQcm94eSosIGJvb2wpOwogICAgIGludCBudW1iZXJPZlBhZ2VzKFdlYkZyYW1l
KiwgZG91YmxlLCBkb3VibGUpOwpAQCAtMTc2LDUgKzE3OSwzIEBAIHByaXZhdGU6CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEluamVjdGVkQnVuZGxlX2gKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGUuY3BwCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlICJX
ZWJQYWdlR3JvdXBQcm94eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VNYW5hZ2VyLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlU2NoZW1lUmVnaXN0cnkuaD4KIAogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwpAQCAtMTgyLDEyICsxODMsMTIg
QEAgdm9pZCBXS0J1bmRsZVNldFNwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZAogCiB2b2lkIFdLQnVu
ZGxlQWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoV0tCdW5kbGVSZWYgYnVuZGxlUmVmLCBX
S1N0cmluZ1JlZiBzb3VyY2VPcmlnaW4sIFdLU3RyaW5nUmVmIGRlc3RpbmF0aW9uUHJvdG9jb2ws
IFdLU3RyaW5nUmVmIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9t
YWlucykKIHsKLSAgICB0b0ltcGwoYnVuZGxlUmVmKS0+YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0
RW50cnkodG9XVEZTdHJpbmcoc291cmNlT3JpZ2luKSwgdG9XVEZTdHJpbmcoZGVzdGluYXRpb25Q
cm90b2NvbCksIHRvV1RGU3RyaW5nKGRlc3RpbmF0aW9uSG9zdCksIGFsbG93RGVzdGluYXRpb25T
dWJkb21haW5zKTsKKyAgICB0b0ltcGwoYnVuZGxlUmVmKS0+YWRkT3JpZ2luQWNjZXNzV2hpdGVs
aXN0RW50cnkodG9XVEZTdHJpbmcoc291cmNlT3JpZ2luKSwgdG9XVEZTdHJpbmcoZGVzdGluYXRp
b25Qcm90b2NvbCksIHRvV1RGU3RyaW5nKGRlc3RpbmF0aW9uSG9zdCksIGFsbG93RGVzdGluYXRp
b25TdWJkb21haW5zLCBXZWJDb3JlOjpQYWdlU2NoZW1lUmVnaXN0cnk6OmNyZWF0ZSgpKTsKIH0K
IAogdm9pZCBXS0J1bmRsZVJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KFdLQnVuZGxl
UmVmIGJ1bmRsZVJlZiwgV0tTdHJpbmdSZWYgc291cmNlT3JpZ2luLCBXS1N0cmluZ1JlZiBkZXN0
aW5hdGlvblByb3RvY29sLCBXS1N0cmluZ1JlZiBkZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dE
ZXN0aW5hdGlvblN1YmRvbWFpbnMpCiB7Ci0gICAgdG9JbXBsKGJ1bmRsZVJlZiktPnJlbW92ZU9y
aWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KHRvV1RGU3RyaW5nKHNvdXJjZU9yaWdpbiksIHRvV1RG
U3RyaW5nKGRlc3RpbmF0aW9uUHJvdG9jb2wpLCB0b1dURlN0cmluZyhkZXN0aW5hdGlvbkhvc3Qp
LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CisgICAgdG9JbXBsKGJ1bmRsZVJlZiktPnJl
bW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KHRvV1RGU3RyaW5nKHNvdXJjZU9yaWdpbiks
IHRvV1RGU3RyaW5nKGRlc3RpbmF0aW9uUHJvdG9jb2wpLCB0b1dURlN0cmluZyhkZXN0aW5hdGlv
bkhvc3QpLCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucywgV2ViQ29yZTo6UGFnZVNjaGVtZVJl
Z2lzdHJ5OjpjcmVhdGUoKSk7CiB9CiAKIHZvaWQgV0tCdW5kbGVSZXNldE9yaWdpbkFjY2Vzc1do
aXRlbGlzdHMoV0tCdW5kbGVSZWYgYnVuZGxlUmVmKQpAQCAtMjE0LDcgKzIxNSw3IEBAIHZvaWQg
V0tCdW5kbGVTZXREYXRhYmFzZVF1b3RhKFdLQnVuZGxlUmUKIHsKICAgICAvLyBIaXN0b3JpY2Fs
bHksIHdlJ3ZlIHVzZWQgdGhlIGZvbGxvd2luZyAoc29tZXdoYXQgbm9uLXNlbnNpY2FsKSBzdHJp
bmcKICAgICAvLyBmb3IgdGhlIGRhdGFiYXNlSWRlbnRpZmllciBvZiBsb2NhbCBmaWxlcy4KLSAg
ICBEYXRhYmFzZU1hbmFnZXI6OnNpbmdsZXRvbigpLnNldFF1b3RhKFNlY3VyaXR5T3JpZ2luOjpj
cmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyKCJmaWxlX18wIikucHRyKCksIHF1b3RhKTsKKyAg
ICBEYXRhYmFzZU1hbmFnZXI6OnNpbmdsZXRvbigpLnNldFF1b3RhKFNlY3VyaXR5T3JpZ2luOjpj
cmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyKCJmaWxlX18wIiwgV2ViQ29yZTo6UGFnZVNjaGVt
ZVJlZ2lzdHJ5OjpjcmVhdGUoKSkucHRyKCksIHF1b3RhKTsKIH0KIAogV0tEYXRhUmVmIFdLQnVu
ZGxlQ3JlYXRlV0tEYXRhRnJvbVVJbnQ4QXJyYXkoV0tCdW5kbGVSZWYgYnVuZGxlLCBKU0NvbnRl
eHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBkYXRhKQpJbmRleDogU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGVQYWdlLmNwcAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02NTQsNyArNjU0LDcgQEAgdm9pZCBXS0J1bmRsZVBhZ2VDbGVhckFwcGxpY2F0aW9uQ2FjaGUo
VwogCiB2b2lkIFdLQnVuZGxlUGFnZUNsZWFyQXBwbGljYXRpb25DYWNoZUZvck9yaWdpbihXS0J1
bmRsZVBhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgb3JpZ2luKQogewotICAgIHRvSW1wbChwYWdl
KS0+Y29yZVBhZ2UoKS0+YXBwbGljYXRpb25DYWNoZVN0b3JhZ2UoKS5kZWxldGVDYWNoZUZvck9y
aWdpbihXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyh0b0ltcGwob3Jp
Z2luKS0+c3RyaW5nKCkpKTsKKyAgICB0b0ltcGwocGFnZSktPmNvcmVQYWdlKCktPmFwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlKCkuZGVsZXRlQ2FjaGVGb3JPcmlnaW4oV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW46OmNyZWF0ZUZyb21TdHJpbmcodG9JbXBsKG9yaWdpbiktPnN0cmluZygpLCBXZWJDb3Jl
OjpQYWdlU2NoZW1lUmVnaXN0cnk6OmNyZWF0ZSgpKSk7CiB9CiAKIHZvaWQgV0tCdW5kbGVQYWdl
U2V0QXBwQ2FjaGVNYXhpbXVtU2l6ZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgdWludDY0X3Qgc2l6
ZSkKQEAgLTY2NCwxNyArNjY0LDE3IEBAIHZvaWQgV0tCdW5kbGVQYWdlU2V0QXBwQ2FjaGVNYXhp
bXVtU2l6ZSgKIAogdWludDY0X3QgV0tCdW5kbGVQYWdlR2V0QXBwQ2FjaGVVc2FnZUZvck9yaWdp
bihXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgb3JpZ2luKQogewotICAgIHJldHVy
biB0b0ltcGwocGFnZSktPmNvcmVQYWdlKCktPmFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlKCkuZGlz
a1VzYWdlRm9yT3JpZ2luKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5n
KHRvSW1wbChvcmlnaW4pLT5zdHJpbmcoKSkpOworICAgIHJldHVybiB0b0ltcGwocGFnZSktPmNv
cmVQYWdlKCktPmFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlKCkuZGlza1VzYWdlRm9yT3JpZ2luKFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHRvSW1wbChvcmlnaW4pLT5z
dHJpbmcoKSwgV2ViQ29yZTo6UGFnZVNjaGVtZVJlZ2lzdHJ5OjpjcmVhdGUoKSkpOwogfQogCiB2
b2lkIFdLQnVuZGxlUGFnZVNldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShXS0J1bmRsZVBh
Z2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgb3JpZ2luLCB1aW50NjRfdCBieXRlcykKIHsKLSAgICB0
b0ltcGwocGFnZSktPmNvcmVQYWdlKCktPmFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlKCkuc3RvcmVV
cGRhdGVkUXVvdGFGb3JPcmlnaW4oV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21T
dHJpbmcodG9JbXBsKG9yaWdpbiktPnN0cmluZygpKS5wdHIoKSwgYnl0ZXMpOworICAgIHRvSW1w
bChwYWdlKS0+Y29yZVBhZ2UoKS0+YXBwbGljYXRpb25DYWNoZVN0b3JhZ2UoKS5zdG9yZVVwZGF0
ZWRRdW90YUZvck9yaWdpbihXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmlu
Zyh0b0ltcGwob3JpZ2luKS0+c3RyaW5nKCksIFdlYkNvcmU6OlBhZ2VTY2hlbWVSZWdpc3RyeTo6
Y3JlYXRlKCkpLnB0cigpLCBieXRlcyk7CiB9CiAKIHZvaWQgV0tCdW5kbGVQYWdlUmVzZXRBcHBs
aWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVm
IG9yaWdpbikKIHsKLSAgICB0b0ltcGwocGFnZSktPmNvcmVQYWdlKCktPmFwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlKCkuc3RvcmVVcGRhdGVkUXVvdGFGb3JPcmlnaW4oV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW46OmNyZWF0ZUZyb21TdHJpbmcodG9JbXBsKG9yaWdpbiktPnN0cmluZygpKS5wdHIoKSwg
dG9JbXBsKHBhZ2UpLT5jb3JlUGFnZSgpLT5hcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSgpLmRlZmF1
bHRPcmlnaW5RdW90YSgpKTsKKyAgICB0b0ltcGwocGFnZSktPmNvcmVQYWdlKCktPmFwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlKCkuc3RvcmVVcGRhdGVkUXVvdGFGb3JPcmlnaW4oV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcodG9JbXBsKG9yaWdpbiktPnN0cmluZygpLCBX
ZWJDb3JlOjpQYWdlU2NoZW1lUmVnaXN0cnk6OmNyZWF0ZSgpKS5wdHIoKSwgdG9JbXBsKHBhZ2Up
LT5jb3JlUGFnZSgpLT5hcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSgpLmRlZmF1bHRPcmlnaW5RdW90
YSgpKTsKIH0KIAogV0tBcnJheVJlZiBXS0J1bmRsZVBhZ2VDb3B5T3JpZ2luc1dpdGhBcHBsaWNh
dGlvbkNhY2hlKFdLQnVuZGxlUGFnZVJlZiBwYWdlKQpJbmRleDogU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0
b3JhZ2VNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJXZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9QYWdlU2NoZW1lUmVnaXN0cnkuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5
T3JpZ2luLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1VSTC5oPgpAQCAtNTIsNyArNTMsNyBAQCBTdHJpbmcgV2ViTWVkaWFLZXlT
dG9yYWdlTWFuYWdlcjo6bWVkaWFLCiAgICAgaWYgKCFtX21lZGlhS2V5U3RvcmFnZURpcmVjdG9y
eSkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKLSAgICByZXR1cm4gcGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KG1fbWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5LCBvcmlnaW5EYXRhLnNl
Y3VyaXR5T3JpZ2luKCktPmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICByZXR1cm4gcGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KG1fbWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5LCBvcmlnaW5EYXRh
LnNlY3VyaXR5T3JpZ2luKFBhZ2VTY2hlbWVSZWdpc3RyeTo6Y3JlYXRlKCkpLT5kYXRhYmFzZUlk
ZW50aWZpZXIoKSk7CiB9CiAKIFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+IFdlYk1lZGlhS2V5
U3RvcmFnZU1hbmFnZXI6OmdldE1lZGlhS2V5T3JpZ2lucygpCkBAIC03MCw3ICs3MSw3IEBAIFZl
Y3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+IFdlYk1lZGlhS2V5U3QKIAogICAgICAgICBTdHJpbmcg
bWVkaWFLZXlJZGVudGlmaWVyID0gdXJsLmxhc3RQYXRoQ29tcG9uZW50KCk7CiAKLSAgICAgICAg
UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpt
YXliZUNyZWF0ZUZyb21EYXRhYmFzZUlkZW50aWZpZXIobWVkaWFLZXlJZGVudGlmaWVyKTsKKyAg
ICAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9IFNlY3VyaXR5T3Jp
Z2luOjptYXliZUNyZWF0ZUZyb21EYXRhYmFzZUlkZW50aWZpZXIobWVkaWFLZXlJZGVudGlmaWVy
LCBQYWdlU2NoZW1lUmVnaXN0cnk6OmNyZWF0ZSgpKTsKICAgICAgICAgaWYgKCFzZWN1cml0eU9y
aWdpbikKICAgICAgICAgICAgIGNvbnRpbnVlOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCShyZXZpc2lvbiAyMDgzOTgpCisr
KyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTExOTksNyArMTE5OSw3IEBAIHZvaWQgUGx1Z2luVmlldzo6cGVyZm9ybUZy
YW1lTG9hZFVSTFJlcXUKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBp
ZiAoIW1fcGx1Z2luRWxlbWVudC0+ZG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpLT5jYW5EaXNw
bGF5KHJlcXVlc3QtPnJlcXVlc3QoKS51cmwoKSkpIHsKKyAgICBpZiAoIW1fcGx1Z2luRWxlbWVu
dC0+ZG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpLT5jYW5EaXNwbGF5KHJlcXVlc3QtPnJlcXVl
c3QoKS51cmwoKSwgZnJhbWUtPnNjaGVtZVJlZ2lzdHJ5KCkpKSB7CiAgICAgICAgIC8vIFdlIGNh
bid0IGxvYWQgdGhlIHJlcXVlc3QsIHNlbmQgYmFjayBhIHJlcGx5IHRvIHRoZSBwbHVnLWluLgog
ICAgICAgICBtX3BsdWdpbi0+ZnJhbWVEaWRGYWlsKHJlcXVlc3QtPnJlcXVlc3RJRCgpLCBmYWxz
ZSk7CiAgICAgICAgIHJldHVybjsKQEAgLTE0MTgsNyArMTQxOCw3IEBAIHZvaWQgUGx1Z2luVmll
dzo6bG9hZFVSTCh1aW50NjRfdCByZXF1ZXMKIAogICAgIGZyYW1lTG9hZFJlcXVlc3Quc2V0RnJh
bWVOYW1lKHRhcmdldCk7CiAKLSAgICBTdHJpbmcgcmVmZXJyZXIgPSBTZWN1cml0eVBvbGljeTo6
Z2VuZXJhdGVSZWZlcnJlckhlYWRlcihmcmFtZSgpLT5kb2N1bWVudCgpLT5yZWZlcnJlclBvbGlj
eSgpLCBmcmFtZUxvYWRSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnVybCgpLCBmcmFtZSgpLT5s
b2FkZXIoKS5vdXRnb2luZ1JlZmVycmVyKCkpOworICAgIFN0cmluZyByZWZlcnJlciA9IFNlY3Vy
aXR5UG9saWN5OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVyKGZyYW1lKCktPmRvY3VtZW50KCktPnJl
ZmVycmVyUG9saWN5KCksIGZyYW1lTG9hZFJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCks
IGZyYW1lKCktPmxvYWRlcigpLm91dGdvaW5nUmVmZXJyZXIoKSwgZnJhbWUoKS0+c2NoZW1lUmVn
aXN0cnkoKSk7CiAgICAgaWYgKCFyZWZlcnJlci5pc0VtcHR5KCkpCiAgICAgICAgIGZyYW1lTG9h
ZFJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkuc2V0SFRUUFJlZmVycmVyKHJlZmVycmVyKTsKIApJ
bmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02ODIsNyArNjgyLDcgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmV4
Y2VlZGVkRGF0YWJhc2VRdQogICAgIHVpbnQ2NF90IGN1cnJlbnRRdW90YSA9IGRiTWFuYWdlci5x
dW90YUZvck9yaWdpbihvcmlnaW4pOwogICAgIHVpbnQ2NF90IGN1cnJlbnRPcmlnaW5Vc2FnZSA9
IGRiTWFuYWdlci51c2FnZUZvck9yaWdpbihvcmlnaW4pOwogICAgIHVpbnQ2NF90IG5ld1F1b3Rh
ID0gMDsKLSAgICBSZWZQdHI8QVBJOjpTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBB
UEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0
ZUZyb21EYXRhYmFzZUlkZW50aWZpZXIob3JpZ2luLT5kYXRhYmFzZUlkZW50aWZpZXIoKSkpOwor
ICAgIFJlZlB0cjxBUEk6OlNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9IEFQSTo6U2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbURh
dGFiYXNlSWRlbnRpZmllcihvcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigpLCBQYWdlU2NoZW1l
UmVnaXN0cnk6OmNyZWF0ZSgpKSk7CiAgICAgbmV3UXVvdGEgPSBtX3BhZ2UtPmluamVjdGVkQnVu
ZGxlVUlDbGllbnQoKS5kaWRFeGNlZWREYXRhYmFzZVF1b3RhKG1fcGFnZSwgc2VjdXJpdHlPcmln
aW4uZ2V0KCksIGRhdGFiYXNlTmFtZSwgZGV0YWlscy5kaXNwbGF5TmFtZSgpLCBjdXJyZW50UXVv
dGEsIGN1cnJlbnRPcmlnaW5Vc2FnZSwgZGV0YWlscy5jdXJyZW50VXNhZ2UoKSwgZGV0YWlscy5l
eHBlY3RlZFVzYWdlKCkpOwogCiAgICAgaWYgKCFuZXdRdW90YSkgewpAQCAtNzAxLDcgKzcwMSw3
IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpyZWFjaGVkTWF4QXBwQ2FjaGUKIAogdm9pZCBXZWJD
aHJvbWVDbGllbnQ6OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoU2VjdXJpdHlP
cmlnaW4qIG9yaWdpbiwgaW50NjRfdCB0b3RhbEJ5dGVzTmVlZGVkKQogewotICAgIFJlZlB0cjxB
UEk6OlNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46
OmNyZWF0ZUZyb21TdHJpbmcob3JpZ2luLT50b1N0cmluZygpKTsKKyAgICBSZWZQdHI8QVBJOjpT
ZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVh
dGVGcm9tU3RyaW5nKG9yaWdpbi0+dG9TdHJpbmcoKSwgUGFnZVNjaGVtZVJlZ2lzdHJ5OjpjcmVh
dGUoKSk7CiAgICAgaWYgKG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVVSUNsaWVudCgpLmRpZFJlYWNo
QXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKG1fcGFnZSwgc2VjdXJpdHlPcmlnaW4uZ2V0KCks
IHRvdGFsQnl0ZXNOZWVkZWQpKQogICAgICAgICByZXR1cm47CiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJEb2N1bWVudExvYWRlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkRvY3VtZW50TG9hZGVyLmNw
cAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkRvY3VtZW50TG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsOCArMzIsOCBAQCB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVdlYkRvY3Vt
ZW50TG9hZGVyOjpXZWJEb2N1bWVudExvYWRlcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkKLSAgICA6IERvY3VtZW50
TG9hZGVyKHJlcXVlc3QsIHN1YnN0aXR1dGVEYXRhKQorV2ViRG9jdW1lbnRMb2FkZXI6OldlYkRv
Y3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3Vic3Rp
dHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhLCBjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnkmIHNjaGVt
ZVJlZ2lzdHJ5KQorICAgIDogRG9jdW1lbnRMb2FkZXIocmVxdWVzdCwgc3Vic3RpdHV0ZURhdGEs
IHNjaGVtZVJlZ2lzdHJ5KQogICAgICwgbV9uYXZpZ2F0aW9uSUQoMCkKIHsKIH0KSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJEb2N1bWVudExvYWRlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJEb2N1bWVudExv
YWRlci5oCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViRG9jdW1lbnRMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsNyBA
QAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2Vi
RG9jdW1lbnRMb2FkZXJfaAotI2RlZmluZSBXZWJEb2N1bWVudExvYWRlcl9oCisjcHJhZ21hIG9u
Y2UKIAogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnRMb2FkZXIuaD4KIApAQCAtMzIsMTYgKzMx
LDE2IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJEb2N1bWVudExvYWRlciA6IHB1
YmxpYyBXZWJDb3JlOjpEb2N1bWVudExvYWRlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxX
ZWJEb2N1bWVudExvYWRlcj4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmIGRhdGEpCisgICAgc3RhdGlj
IFJlZjxXZWJEb2N1bWVudExvYWRlcj4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmIGRhdGEsIGNvbnN0
IFdlYkNvcmU6OlBhZ2VTY2hlbWVSZWdpc3RyeSYgc2NoZW1lUmVnaXN0cnkpCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJEb2N1bWVudExvYWRlcihyZXF1ZXN0LCBkYXRh
KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkRvY3VtZW50TG9hZGVyKHJlcXVl
c3QsIGRhdGEsIHNjaGVtZVJlZ2lzdHJ5KSk7CiAgICAgfQogCiAgICAgdWludDY0X3QgbmF2aWdh
dGlvbklEKCkgY29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0aW9uSUQ7IH0KICAgICB2b2lkIHNldE5h
dmlnYXRpb25JRCh1aW50NjRfdCk7CiAKIHByaXZhdGU6Ci0gICAgV2ViRG9jdW1lbnRMb2FkZXIo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0
ZURhdGEmKTsKKyAgICBXZWJEb2N1bWVudExvYWRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYsIGNvbnN0IFdlYkNvcmU6OlBh
Z2VTY2hlbWVSZWdpc3RyeSYpOwogCiAgICAgdm9pZCBkZXRhY2hGcm9tRnJhbWUoKSBvdmVycmlk
ZTsKIApAQCAtNDksNSArNDgsMyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0Ci0KLSNlbmRpZiAvLyBXZWJEb2N1bWVudExvYWRlcl9oCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAJKHJldmlzaW9uIDIwODM5OCkK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ4NCw3ICs0ODQsNyBAQCBib29sIFdlYkZyYW1lOjphbGxvd3NGb2xsb3dp
bmdMaW5rKGNvbnN0CiAgICAgaWYgKCFtX2NvcmVGcmFtZSkKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgIAotICAgIHJldHVybiBtX2NvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlP
cmlnaW4oKS0+Y2FuRGlzcGxheSh1cmwpOworICAgIHJldHVybiBtX2NvcmVGcmFtZS0+ZG9jdW1l
bnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuRGlzcGxheSh1cmwsIG1fY29yZUZyYW1lLT5zY2hl
bWVSZWdpc3RyeSgpKTsKIH0KIAogSlNHbG9iYWxDb250ZXh0UmVmIFdlYkZyYW1lOjpqc0NvbnRl
eHQoKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NDI5LDcgKzU0MjksNyBAQCB2b2lk
IFdlYlBhZ2U6OnNldFNjcm9sbGJhck92ZXJsYXlTdHlsZShXCiAKIFJlZjxEb2N1bWVudExvYWRl
cj4gV2ViUGFnZTo6Y3JlYXRlRG9jdW1lbnRMb2FkZXIoRnJhbWUmIGZyYW1lLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0
YSkKIHsKLSAgICBSZWY8V2ViRG9jdW1lbnRMb2FkZXI+IGRvY3VtZW50TG9hZGVyID0gV2ViRG9j
dW1lbnRMb2FkZXI6OmNyZWF0ZShyZXF1ZXN0LCBzdWJzdGl0dXRlRGF0YSk7CisgICAgUmVmPFdl
YkRvY3VtZW50TG9hZGVyPiBkb2N1bWVudExvYWRlciA9IFdlYkRvY3VtZW50TG9hZGVyOjpjcmVh
dGUocmVxdWVzdCwgc3Vic3RpdHV0ZURhdGEsIGZyYW1lLnNjaGVtZVJlZ2lzdHJ5KCkpOwogCiAg
ICAgaWYgKGZyYW1lLmlzTWFpbkZyYW1lKCkpIHsKICAgICAgICAgaWYgKG1fcGVuZGluZ05hdmln
YXRpb25JRCkgewpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9j
ZXNzQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2Nv
YS9XZWJQcm9jZXNzQ29jb2EubW0JKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00
OCw2ICs0OCw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPFdl
YkNvcmUvRm9udENhY2hlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZvbnRDYXNjYWRlLmg+CisjaW1w
b3J0IDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3Mu
aD4KICNpbXBvcnQgPFdlYkNvcmUvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL05TQWNjZXNzaWJpbGl0eVNQSS5oPgpAQCAtMzExLDcgKzMxMiw3IEBAIHN0YXRpYyBO
U1VSTCAqb3JpZ2luKFdlYlBhZ2UmIHBhZ2UpCiAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICBV
UkwgbWFpbkZyYW1lVVJMKFVSTCgpLCBtYWluRnJhbWUtPnVybCgpKTsKLSAgICBSZWY8U2VjdXJp
dHlPcmlnaW4+IG1haW5GcmFtZU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUobWFpbkZy
YW1lVVJMKTsKKyAgICBSZWY8U2VjdXJpdHlPcmlnaW4+IG1haW5GcmFtZU9yaWdpbiA9IFNlY3Vy
aXR5T3JpZ2luOjpjcmVhdGUobWFpbkZyYW1lVVJMLCBtYWluRnJhbWUtPmNvcmVGcmFtZSgpLT5z
Y2hlbWVSZWdpc3RyeSgpKTsKICAgICBTdHJpbmcgbWFpbkZyYW1lT3JpZ2luU3RyaW5nOwogICAg
IGlmICghbWFpbkZyYW1lT3JpZ2luLT5pc1VuaXF1ZSgpKQogICAgICAgICBtYWluRnJhbWVPcmln
aW5TdHJpbmcgPSBtYWluRnJhbWVPcmlnaW4tPnRvUmF3U3RyaW5nKCk7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwko
cmV2aXNpb24gMjA4NDIzKQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSw0OSBAQAorMjAxNi0xMS0wOCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIEludHJvZHVjZSBQYWdlU2NoZW1lUmVnaXN0
cnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDUz
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU3Rv
cmFnZS9TdG9yYWdlVHJhY2tlci5jcHA6CisgICAgICAgIChTdG9yYWdlVHJhY2tlcjo6U3RvcmFn
ZVRyYWNrZXIpOgorICAgICAgICAoU3RvcmFnZVRyYWNrZXI6Om9yaWdpbnMpOgorICAgICAgICAo
U3RvcmFnZVRyYWNrZXI6OmRlbGV0ZU9yaWdpbldpdGhJZGVudGlmaWVyKToKKyAgICAgICAgKFN0
b3JhZ2VUcmFja2VyOjpkaXNrVXNhZ2VGb3JPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6U3Rv
cmFnZVRyYWNrZXI6OmluaXRpYWxpemVUcmFja2VyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlN0b3JhZ2VUcmFja2VyOjppbnRlcm5hbEluaXRpYWxpemUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6U3RvcmFnZVRyYWNrZXI6OnRyYWNrZXIpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6U3RvcmFnZVRyYWNrZXI6OlN0b3JhZ2VUcmFja2VyKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlN0b3JhZ2VUcmFja2VyOjpzZXREYXRhYmFzZURpcmVjdG9yeVBhdGgpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZVRyYWNrZXI6OmRhdGFiYXNlRGlyZWN0
b3J5UGF0aCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlVHJhY2tlcjo6dHJh
Y2tlckRhdGFiYXNlUGF0aCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjplbnN1cmVEYXRh
YmFzZUZpbGVFeGlzdHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZVRyYWNr
ZXI6Om9wZW5UcmFja2VyRGF0YWJhc2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U3Rv
cmFnZVRyYWNrZXI6OmltcG9ydE9yaWdpbklkZW50aWZpZXJzKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlN0b3JhZ2VUcmFja2VyOjpmaW5pc2hlZEltcG9ydGluZ09yaWdpbklkZW50aWZp
ZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VUcmFja2VyOjpzeW5jSW1w
b3J0T3JpZ2luSWRlbnRpZmllcnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFn
ZVRyYWNrZXI6OnN5bmNGaWxlU3lzdGVtQW5kVHJhY2tlckRhdGFiYXNlKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VUcmFja2VyOjpzZXRPcmlnaW5EZXRhaWxzKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VUcmFja2VyOjpzeW5jU2V0T3JpZ2luRGV0YWls
cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlVHJhY2tlcjo6b3JpZ2lucyk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlVHJhY2tlcjo6ZGVsZXRlQWxsT3Jp
Z2lucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp0cnVuY2F0ZURhdGFiYXNlRmlsZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlVHJhY2tlcjo6c3luY0RlbGV0ZUFs
bE9yaWdpbnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZVRyYWNrZXI6OmRl
bGV0ZU9yaWdpbldpdGhJZGVudGlmaWVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0
b3JhZ2VUcmFja2VyOjpkZWxldGVPcmlnaW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
U3RvcmFnZVRyYWNrZXI6OnN5bmNEZWxldGVPcmlnaW4pOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6U3RvcmFnZVRyYWNrZXI6OndpbGxEZWxldGVBbGxPcmlnaW5zKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VUcmFja2VyOjp3aWxsRGVsZXRlT3JpZ2luKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VUcmFja2VyOjpjYW5EZWxldGVPcmlnaW4pOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZVRyYWNrZXI6OmNhbmNlbERlbGV0aW5n
T3JpZ2luKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VUcmFja2VyOjppc0Fj
dGl2ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlVHJhY2tlcjo6c2V0SXNB
Y3RpdmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZVRyYWNrZXI6OmRhdGFi
YXNlUGF0aEZvck9yaWdpbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlVHJh
Y2tlcjo6ZGlza1VzYWdlRm9yT3JpZ2luKTogRGVsZXRlZC4KKyAgICAgICAgKiBTdG9yYWdlL1N0
b3JhZ2VUcmFja2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlVHJhY2tlcjo6c3RvcmFn
ZURhdGFiYXNlSWRsZUludGVydmFsKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0b3Jh
Z2VUcmFja2VyOjpzZXRTdG9yYWdlRGF0YWJhc2VJZGxlSW50ZXJ2YWwpOiBEZWxldGVkLgorCiAy
MDE2LTExLTAyICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbV2luXSBDb3B5IGJ1aWxkIHJlc3VsdHMgdG8gQUFTICdQcm9ncmFtIEZpbGVzJyBmb2xkZXIu
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAJKHJldmlzaW9u
IDIwODM5OCkKKysrIFNvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJXZWJTdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1BhZ2VHcm91cC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZVNjaGVtZVJlZ2lz
dHJ5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVEYXRhYmFzZVRyYWNrZXIuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1NRTGl0ZVN0YXRlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJp
dHlPcmlnaW4uaD4KQEAgLTQzLDcgKzQ0LDcgQEAKICNpbmNsdWRlIDxzcWxpdGUzX3ByaXZhdGUu
aD4KICNlbmRpZgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAogc3RhdGljIFN0b3JhZ2VUcmFja2VyKiBzdG9yYWdlVHJhY2tlciA9IDA7CiAKQEAgLTk1
LDYgKzk2LDcgQEAgU3RvcmFnZVRyYWNrZXI6OlN0b3JhZ2VUcmFja2VyKGNvbnN0IFN0cgogICAg
ICwgbV9pc0FjdGl2ZShmYWxzZSkKICAgICAsIG1fbmVlZHNJbml0aWFsaXphdGlvbihmYWxzZSkK
ICAgICAsIG1fU3RvcmFnZURhdGFiYXNlSWRsZUludGVydmFsKERlZmF1bHRTdG9yYWdlRGF0YWJh
c2VJZGxlSW50ZXJ2YWwpCisgICAgLCBtX3NjaGVtZVJlZ2lzdHJ5KFBhZ2VTY2hlbWVSZWdpc3Ry
eTo6Y3JlYXRlKCkpIC8vIEZJWE1FOiBFYWNoIFBhZ2Ugc2hvdWxkIGhhdmUgaXRzIG93biBTdG9y
YWdlVHJhY2tlci4KIHsKIH0KIApAQCAtMzY2LDE3ICszNjgsMTkgQEAgdm9pZCBTdG9yYWdlVHJh
Y2tlcjo6c3luY1NldE9yaWdpbkRldGFpbAogICAgIH0KIH0KIAotdm9pZCBTdG9yYWdlVHJhY2tl
cjo6b3JpZ2lucyhWZWN0b3I8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4mIHJlc3VsdCkKK1ZlY3Rv
cjxSZWY8U2VjdXJpdHlPcmlnaW4+PiBTdG9yYWdlVHJhY2tlcjo6b3JpZ2lucygpCiB7CiAgICAg
QVNTRVJUKG1faXNBY3RpdmUpOwogICAgIAogICAgIGlmICghbV9pc0FjdGl2ZSkKLSAgICAgICAg
cmV0dXJuOworICAgICAgICByZXR1cm4geyB9OwogCiAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9v
cmlnaW5TZXRNdXRleCk7CiAKKyAgICBWZWN0b3I8UmVmPFNlY3VyaXR5T3JpZ2luPj4gcmVzdWx0
OwogICAgIGZvciAoT3JpZ2luU2V0Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fb3JpZ2luU2V0LmJl
Z2luKCksIGVuZCA9IG1fb3JpZ2luU2V0LmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAg
IHJlc3VsdC5hcHBlbmQoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21EYXRhYmFzZUlkZW50aWZp
ZXIoKml0KSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZy
b21EYXRhYmFzZUlkZW50aWZpZXIoKml0LCBtX3NjaGVtZVJlZ2lzdHJ5LmdldCgpKSk7CisgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIAogdm9pZCBTdG9yYWdlVHJhY2tlcjo6ZGVsZXRlQWxsT3JpZ2lu
cygpCkBAIC00NzMsNyArNDc3LDcgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6c3luY0RlbGV0ZUFs
bE9yaWdpbgogCiB2b2lkIFN0b3JhZ2VUcmFja2VyOjpkZWxldGVPcmlnaW5XaXRoSWRlbnRpZmll
cihjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIpCiB7Ci0gICAgZGVsZXRlT3JpZ2luKCZT
ZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmllcihvcmlnaW5JZGVudGlm
aWVyKS5nZXQoKSk7CisgICAgZGVsZXRlT3JpZ2luKCZTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJv
bURhdGFiYXNlSWRlbnRpZmllcihvcmlnaW5JZGVudGlmaWVyLCBtX3NjaGVtZVJlZ2lzdHJ5Lmdl
dCgpKS5nZXQoKSk7CiB9CiAKIHZvaWQgU3RvcmFnZVRyYWNrZXI6OmRlbGV0ZU9yaWdpbihTZWN1
cml0eU9yaWdpbiogb3JpZ2luKQpAQCAtNjUyLDUgKzY1NiwzIEBAIGxvbmcgbG9uZyBTdG9yYWdl
VHJhY2tlcjo6ZGlza1VzYWdlRm9yT3IKICAgICBsb25nIGxvbmcgc2l6ZTsKICAgICByZXR1cm4g
Z2V0RmlsZVNpemUocGF0aCwgc2l6ZSkgPyBzaXplIDogMDsKIH0KLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmgJKHJldmlz
aW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBTdG9yYWdlVHJhY2tlcl9oCi0jZGVmaW5lIFN0b3Jh
Z2VUcmFja2VyX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVEYXRh
YmFzZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBAIC0zMywyOSArMzIsMzIgQEAKICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotCitj
bGFzcyBQYWdlU2NoZW1lUmVnaXN0cnk7CiBjbGFzcyBTdG9yYWdlVGFzazsKIGNsYXNzIFN0b3Jh
Z2VUaHJlYWQ7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIFN0b3JhZ2VUcmFja2VyQ2xp
ZW50OyAgICAKK2NsYXNzIFN0b3JhZ2VUcmFja2VyQ2xpZW50OworfQogCiBjbGFzcyBTdG9yYWdl
VHJhY2tlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU3RvcmFnZVRyYWNrZXIpOwogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyB2b2lkIGluaXRpYWxpemVUcmFja2VyKGNvbnN0IFN0cmluZyYgc3RvcmFnZVBhdGgsIFN0
b3JhZ2VUcmFja2VyQ2xpZW50Kik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0b3JhZ2VU
cmFja2VyJiB0cmFja2VyKCk7CisgICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVRyYWNrZXIoY29u
c3QgU3RyaW5nJiBzdG9yYWdlUGF0aCwgV2ViQ29yZTo6U3RvcmFnZVRyYWNrZXJDbGllbnQqKTsK
KyAgICBzdGF0aWMgU3RvcmFnZVRyYWNrZXImIHRyYWNrZXIoKTsKIAogICAgIHZvaWQgc2V0RGF0
YWJhc2VEaXJlY3RvcnlQYXRoKGNvbnN0IFN0cmluZyYpOwogICAgIFN0cmluZyBkYXRhYmFzZURp
cmVjdG9yeVBhdGgoKSBjb25zdDsKIAogICAgIHZvaWQgc2V0T3JpZ2luRGV0YWlscyhjb25zdCBT
dHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VGaWxlKTsKICAg
ICAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUFsbE9yaWdpbnMoKTsKLSAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGRlbGV0ZU9yaWdpbihTZWN1cml0eU9yaWdpbiopOworICAgIHZvaWQg
ZGVsZXRlQWxsT3JpZ2lucygpOworICAgIHZvaWQgZGVsZXRlT3JpZ2luKFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luKik7CiAgICAgdm9pZCBkZWxldGVPcmlnaW5XaXRoSWRlbnRpZmllcihjb25zdCBT
dHJpbmcmIG9yaWdpbklkZW50aWZpZXIpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgb3JpZ2lu
cyhWZWN0b3I8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4mIHJlc3VsdCk7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgbG9uZyBsb25nIGRpc2tVc2FnZUZvck9yaWdpbihTZWN1cml0eU9yaWdpbiopOworICAg
IHZvaWQgb3JpZ2lucyhWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPj4mIHJl
c3VsdCk7CisgICAgVmVjdG9yPFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnMo
KTsKKworICAgIGxvbmcgbG9uZyBkaXNrVXNhZ2VGb3JPcmlnaW4oV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW4qKTsKICAgICAKICAgICB2b2lkIGNhbmNlbERlbGV0aW5nT3JpZ2luKGNvbnN0IFN0cmlu
ZyYgb3JpZ2luSWRlbnRpZmllcik7CiAgICAgCkBAIC02NCw3ICs2Niw3IEBAIHB1YmxpYzoKICAg
ICBkb3VibGUgc3RvcmFnZURhdGFiYXNlSWRsZUludGVydmFsKCkgeyByZXR1cm4gbV9TdG9yYWdl
RGF0YWJhc2VJZGxlSW50ZXJ2YWw7IH0KICAgICB2b2lkIHNldFN0b3JhZ2VEYXRhYmFzZUlkbGVJ
bnRlcnZhbChkb3VibGUgaW50ZXJ2YWwpIHsgbV9TdG9yYWdlRGF0YWJhc2VJZGxlSW50ZXJ2YWwg
PSBpbnRlcnZhbDsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzeW5jRmlsZVN5c3RlbUFu
ZFRyYWNrZXJEYXRhYmFzZSgpOworICAgIHZvaWQgc3luY0ZpbGVTeXN0ZW1BbmRUcmFja2VyRGF0
YWJhc2UoKTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBTdG9yYWdlVHJhY2tlcihjb25zdCBT
dHJpbmcmIHN0b3JhZ2VQYXRoKTsKQEAgLTk2LDExICs5OCwxMSBAQCBwcml2YXRlOgogCiAgICAg
Ly8gTXV0ZXggZm9yIG1fZGF0YWJhc2UgYW5kIG1fc3RvcmFnZURpcmVjdG9yeVBhdGguCiAgICAg
TG9jayBtX2RhdGFiYXNlTXV0ZXg7Ci0gICAgU1FMaXRlRGF0YWJhc2UgbV9kYXRhYmFzZTsKKyAg
ICBXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZSBtX2RhdGFiYXNlOwogICAgIFN0cmluZyBtX3N0b3Jh
Z2VEaXJlY3RvcnlQYXRoOwogCiAgICAgTG9jayBtX2NsaWVudE11dGV4OwotICAgIFN0b3JhZ2VU
cmFja2VyQ2xpZW50KiBtX2NsaWVudDsKKyAgICBXZWJDb3JlOjpTdG9yYWdlVHJhY2tlckNsaWVu
dCogbV9jbGllbnQ7CiAKICAgICAvLyBHdWFyZCBmb3IgbV9vcmlnaW5TZXQgYW5kIG1fb3JpZ2lu
c0JlaW5nRGVsZXRlZC4KICAgICBMb2NrIG1fb3JpZ2luU2V0TXV0ZXg7CkBAIC0xMDgsMTMgKzEx
MCwxMCBAQCBwcml2YXRlOgogICAgIE9yaWdpblNldCBtX29yaWdpblNldDsKICAgICBPcmlnaW5T
ZXQgbV9vcmlnaW5zQmVpbmdEZWxldGVkOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPFN0b3JhZ2VU
aHJlYWQ+IG1fdGhyZWFkOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTdG9yYWdlVGhy
ZWFkPiBtX3RocmVhZDsKICAgICAKICAgICBib29sIG1faXNBY3RpdmU7CiAgICAgYm9vbCBtX25l
ZWRzSW5pdGlhbGl6YXRpb247CiAgICAgZG91YmxlIG1fU3RvcmFnZURhdGFiYXNlSWRsZUludGVy
dmFsOworICAgIFJlZjxjb25zdCBXZWJDb3JlOjpQYWdlU2NoZW1lUmVnaXN0cnk+IG1fc2NoZW1l
UmVnaXN0cnk7CiB9OwotICAgIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8g
U3RvcmFnZVRyYWNrZXJfaApJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMjA4Mzk4KQor
KysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
NDQgQEAKKzIwMTYtMTEtMDggIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0
Lm9yZz4KKworICAgICAgICBJbnRyb2R1Y2UgUGFnZVNjaGVtZVJlZ2lzdHJ5CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ1MzUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1pc2MvV2ViQ2FjaGUubW06
CisgICAgICAgICgrW1dlYkNhY2hlIGFkZEltYWdlVG9DYWNoZTpmb3JVUkw6Zm9yRnJhbWU6XSk6
CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW06
CisgICAgICAgIChXZWJLaXQ6Okhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpIb3N0ZWROZXRz
Y2FwZVBsdWdpblN0cmVhbSk6CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVn
aW5JbnN0YW5jZVByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbkluc3Rh
bmNlUHJveHk6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBQbHVnaW5zL1dlYk5ldHNjYXBlUGx1
Z2luU3RyZWFtLm1tOgorICAgICAgICAoV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW06OldlYk5ldHNj
YXBlUGx1Z2luU3RyZWFtKToKKyAgICAgICAgKiBQbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmll
dy5tbToKKyAgICAgICAgKC1bV2ViTmV0c2NhcGVQbHVnaW5WaWV3IGxvYWRSZXF1ZXN0OmluVGFy
Z2V0OndpdGhOb3RpZnlEYXRhOnNlbmROb3RpZmljYXRpb246XSk6CisgICAgICAgICogUGx1Z2lu
cy9XZWJQbHVnaW5Db250YWluZXJDaGVjay5tbToKKyAgICAgICAgKC1bV2ViUGx1Z2luQ29udGFp
bmVyQ2hlY2sgX2lzRm9yYmlkZGVuRmlsZUxvYWRdKToKKyAgICAgICAgKiBTdG9yYWdlL1dlYlN0
b3JhZ2VNYW5hZ2VyLm1tOgorICAgICAgICAoLVtXZWJTdG9yYWdlTWFuYWdlciBvcmlnaW5zXSk6
CisgICAgICAgICogU3RvcmFnZS9XZWJTdG9yYWdlVHJhY2tlckNsaWVudC5tbToKKyAgICAgICAg
KFdlYlN0b3JhZ2VUcmFja2VyQ2xpZW50OjpkaXNwYXRjaERpZE1vZGlmeU9yaWdpbik6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQXBwbGljYXRpb25DYWNoZS5tbToKKyAgICAgICAgKHdl
YkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVh
dGVEb2N1bWVudExvYWRlcik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlP
cmlnaW4ubW06CisgICAgICAgICgtW1dlYlNlY3VyaXR5T3JpZ2luIGluaXRXaXRoVVJMOl0pOgor
ICAgICAgICAqIFdlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbToKKyAgICAgICAgKC1bV2ViRGF0YVNv
dXJjZSBpbml0V2l0aFJlcXVlc3Q6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJEb2N1bWVudExv
YWRlck1hYy5oOgorICAgICAgICAoV2ViRG9jdW1lbnRMb2FkZXJNYWM6OmNyZWF0ZSk6CisgICAg
ICAgICogV2ViVmlldy9XZWJEb2N1bWVudExvYWRlck1hYy5tbToKKyAgICAgICAgKFdlYkRvY3Vt
ZW50TG9hZGVyTWFjOjpXZWJEb2N1bWVudExvYWRlck1hYyk6CisgICAgICAgICogV2ViVmlldy9X
ZWJGcmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUgX2FsbG93c0ZvbGxvd2luZ0xpbms6XSk6
CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoK1tXZWJWaWV3IF9hZGRP
cmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeVdpdGhTb3VyY2VPcmlnaW46ZGVzdGluYXRpb25Qcm90
b2NvbDpkZXN0aW5hdGlvbkhvc3Q6YWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnM6XSk6CisgICAg
ICAgICgrW1dlYlZpZXcgX3JlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5V2l0aFNvdXJj
ZU9yaWdpbjpkZXN0aW5hdGlvblByb3RvY29sOmRlc3RpbmF0aW9uSG9zdDphbGxvd0Rlc3RpbmF0
aW9uU3ViZG9tYWluczpdKToKKwogMjAxNi0xMS0wMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSBQYXNzUmVmUHRyIGZyb20gRHVt
cFJlbmRlclRyZWUKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViQ2FjaGUubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJDYWNoZS5tbQkocmV2aXNpb24g
MjA4Mzk4KQorKysgU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJDYWNoZS5tbQkod29ya2luZyBj
b3B5KQpAQCAtMTcyLDcgKzE3Miw4IEBAICsgKGJvb2wpYWRkSW1hZ2VUb0NhY2hlOihDR0ltYWdl
UmVmKWltYWcKICAgICBpZiAoZnJhbWUpCiAgICAgICAgIHRvcE9yaWdpbiA9IGNvcmUoZnJhbWUp
LT5kb2N1bWVudCgpLT50b3BPcmlnaW4oKTsKICNlbmRpZgotICAgIHJldHVybiBXZWJDb3JlOjpN
ZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkuYWRkSW1hZ2VUb0NhY2hlKFJldGFpblB0cjxDR0ltYWdl
UmVmPihpbWFnZSksIHVybCwgdG9wT3JpZ2luID8gdG9wT3JpZ2luLT5kb21haW5Gb3JDYWNoZVBh
cnRpdGlvbigpIDogZW1wdHlTdHJpbmcoKSk7CisgICAgUmVmPFBhZ2VTY2hlbWVSZWdpc3RyeT4g
c2NoZW1lUmVnaXN0cnkgPSBmcmFtZSA/IGNvcmUoZnJhbWUpLT5zY2hlbWVSZWdpc3RyeSgpIDog
UGFnZVNjaGVtZVJlZ2lzdHJ5OjpjcmVhdGUoKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6TWVtb3J5
Q2FjaGU6OnNpbmdsZXRvbigpLmFkZEltYWdlVG9DYWNoZShSZXRhaW5QdHI8Q0dJbWFnZVJlZj4o
aW1hZ2UpLCB1cmwsIHRvcE9yaWdpbiA/IHRvcE9yaWdpbi0+ZG9tYWluRm9yQ2FjaGVQYXJ0aXRp
b24oKSA6IGVtcHR5U3RyaW5nKCksIHNjaGVtZVJlZ2lzdHJ5LmdldCgpKTsKIH0KIAogKyAodm9p
ZClyZW1vdmVJbWFnZUZyb21DYWNoZUZvclVSTDooTlNVUkwgKil1cmwKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5tbQko
cmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJOZXRzY2Fw
ZVBsdWdpblN0cmVhbS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTQ2LDE5ICsxNDYsMTkgQEAgV2Vi
TmV0c2NhcGVQbHVnaW5TdHJlYW06OldlYk5ldHNjYXBlUGx1ZwogCiBXZWJOZXRzY2FwZVBsdWdp
blN0cmVhbTo6V2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0oTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0LCBO
UFAgcGx1Z2luLCBib29sIHNlbmROb3RpZmljYXRpb24sIHZvaWQqIG5vdGlmeURhdGEpCiAgICAg
OiBtX3JlcXVlc3RVUkwoW3JlcXVlc3QgVVJMXSkKLSAgICAsIG1fcGx1Z2luKDApCisgICAgLCBt
X3BsdWdpbihudWxscHRyKQogICAgICwgbV90cmFuc2Zlck1vZGUoMCkKICAgICAsIG1fb2Zmc2V0
KDApCiAgICAgLCBtX2ZpbGVEZXNjcmlwdG9yKC0xKQogICAgICwgbV9zZW5kTm90aWZpY2F0aW9u
KHNlbmROb3RpZmljYXRpb24pCiAgICAgLCBtX25vdGlmeURhdGEobm90aWZ5RGF0YSkKLSAgICAs
IG1faGVhZGVycygwKQorICAgICwgbV9oZWFkZXJzKG51bGxwdHIpCiAgICAgLCBtX3JlYXNvbihO
UFJFU19CQVNFKQogICAgICwgbV9pc1Rlcm1pbmF0ZWQoZmFsc2UpCiAgICAgLCBtX25ld1N0cmVh
bVN1Y2Nlc3NmdWwoZmFsc2UpCi0gICAgLCBtX2ZyYW1lTG9hZGVyKDApCisgICAgLCBtX2ZyYW1l
TG9hZGVyKG51bGxwdHIpCiAgICAgLCBtX3JlcXVlc3QoYWRvcHROUyhbcmVxdWVzdCBtdXRhYmxl
Q29weV0pKQotICAgICwgbV9wbHVnaW5GdW5jcygwKQorICAgICwgbV9wbHVnaW5GdW5jcyhudWxs
cHRyKQogICAgICwgbV9kZWxpdmVyRGF0YVRpbWVyKCp0aGlzLCAmV2ViTmV0c2NhcGVQbHVnaW5T
dHJlYW06OmRlbGl2ZXJEYXRhKQogewogICAgIG1lbXNldCgmbV9zdHJlYW0sIDAsIHNpemVvZihO
UFN0cmVhbSkpOwpAQCAtMTY2LDcgKzE2Niw4IEBAIFdlYk5ldHNjYXBlUGx1Z2luU3RyZWFtOjpX
ZWJOZXRzY2FwZVBsdWcKICAgICBXZWJOZXRzY2FwZVBsdWdpblZpZXcgKnZpZXcgPSAoV2ViTmV0
c2NhcGVQbHVnaW5WaWV3ICopcGx1Z2luLT5uZGF0YTsKICAgICAKICAgICAvLyBUaGlzIGNoZWNr
IGhhcyBhbHJlYWR5IGJlZW4gZG9uZSBieSB0aGUgcGx1Zy1pbiB2aWV3LgotICAgIEFTU0VSVChj
b3JlKFt2aWV3IHdlYkZyYW1lXSktPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhbkRp
c3BsYXkoW3JlcXVlc3QgVVJMXSkpOworICAgIGF1dG8qIGZyYW1lID0gY29yZShbdmlldyB3ZWJG
cmFtZV0pOworICAgIEFTU0VSVChmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+
Y2FuRGlzcGxheShbcmVxdWVzdCBVUkxdLCBmcmFtZS0+c2NoZW1lUmVnaXN0cnkoKSkpOwogICAg
IAogICAgIEFTU0VSVChbcmVxdWVzdCBVUkxdKTsKICAgICBBU1NFUlQocGx1Z2luKTsKQEAgLTE3
NSw3ICsxNzYsNyBAQCBXZWJOZXRzY2FwZVBsdWdpblN0cmVhbTo6V2ViTmV0c2NhcGVQbHVnCiAg
ICAgCiAgICAgc3RyZWFtcygpLmFkZCgmbV9zdHJlYW0sIHBsdWdpbik7CiAgICAgCi0gICAgU3Ry
aW5nIHJlZmVycmVyID0gU2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJyZXJIZWFkZXIoY29y
ZShbdmlldyB3ZWJGcmFtZV0pLT5kb2N1bWVudCgpLT5yZWZlcnJlclBvbGljeSgpLCBbcmVxdWVz
dCBVUkxdLCBjb3JlKFt2aWV3IHdlYkZyYW1lXSktPmxvYWRlcigpLm91dGdvaW5nUmVmZXJyZXIo
KSk7CisgICAgU3RyaW5nIHJlZmVycmVyID0gU2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJy
ZXJIZWFkZXIoZnJhbWUtPmRvY3VtZW50KCktPnJlZmVycmVyUG9saWN5KCksIFtyZXF1ZXN0IFVS
TF0sIGZyYW1lLT5sb2FkZXIoKS5vdXRnb2luZ1JlZmVycmVyKCksIGZyYW1lLT5zY2hlbWVSZWdp
c3RyeSgpKTsKICAgICBpZiAocmVmZXJyZXIuaXNFbXB0eSgpKQogICAgICAgICBbbV9yZXF1ZXN0
LmdldCgpIF93ZWJfc2V0SFRUUFJlZmVycmVyOm5pbF07CiAgICAgZWxzZQpJbmRleDogU291cmNl
L1dlYktpdC9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0JKHJl
dmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQ
bHVnaW5WaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNjE0LDkgKzE2MTQsOSBAQCAtICh2b2lk
KWxvYWRQbHVnaW5SZXF1ZXN0OihXZWJQbHVnaW5SZXF1CiAKIC0gKE5QRXJyb3IpbG9hZFJlcXVl
c3Q6KE5TTXV0YWJsZVVSTFJlcXVlc3QgKilyZXF1ZXN0IGluVGFyZ2V0Oihjb25zdCBjaGFyICop
Y1RhcmdldCB3aXRoTm90aWZ5RGF0YToodm9pZCAqKW5vdGlmeURhdGEgc2VuZE5vdGlmaWNhdGlv
bjooQk9PTClzZW5kTm90aWZpY2F0aW9uCiB7Ci0gICAgTlNVUkwgKlVSTCA9IFtyZXF1ZXN0IFVS
TF07CisgICAgTlNVUkwgKnVybCA9IFtyZXF1ZXN0IFVSTF07CiAKLSAgICBpZiAoIVVSTCkgCisg
ICAgaWYgKCF1cmwpCiAgICAgICAgIHJldHVybiBOUEVSUl9JTlZBTElEX1VSTDsKIAogICAgIC8v
IERvbid0IGFsbG93IHJlcXVlc3RzIHRvIGJlIGxvYWRlZCB3aGVuIHRoZSBkb2N1bWVudCBsb2Fk
ZXIgaXMgc3RvcHBpbmcgYWxsIGxvYWRlcnMuCkBAIC0xNjM3LDcgKzE2MzcsNyBAQCAtIChOUEVy
cm9yKWxvYWRSZXF1ZXN0OihOU011dGFibGVVUkxSZXF1CiAgICAgICAgIHJldHVybiBOUEVSUl9H
RU5FUklDX0VSUk9SOyAKICAgICB9CiAgICAgCi0gICAgTlNTdHJpbmcgKkpTU3RyaW5nID0gW1VS
TCBfd2Via2l0X3NjcmlwdElmSmF2YVNjcmlwdFVSTF07CisgICAgTlNTdHJpbmcgKkpTU3RyaW5n
ID0gW3VybCBfd2Via2l0X3NjcmlwdElmSmF2YVNjcmlwdFVSTF07CiAgICAgaWYgKEpTU3RyaW5n
ICE9IG5pbCkgewogICAgICAgICBpZiAoIVtbW3NlbGYgd2ViVmlld10gcHJlZmVyZW5jZXNdIGlz
SmF2YVNjcmlwdEVuYWJsZWRdKSB7CiAgICAgICAgICAgICAvLyBSZXR1cm4gTlBFUlJfR0VORVJJ
Q19FUlJPUiBpZiBKUyBpcyBkaXNhYmxlZC4gVGhpcyBpcyB3aGF0IE1vemlsbGEgZG9lcy4KQEAg
LTE2NDgsNyArMTY0OCw4IEBAIC0gKE5QRXJyb3IpbG9hZFJlcXVlc3Q6KE5TTXV0YWJsZVVSTFJl
cXUKICAgICAgICAgICAgIHJldHVybiBOUEVSUl9JTlZBTElEX1BBUkFNOwogICAgICAgICB9CiAg
ICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKCFjb3JlKFtzZWxmIHdlYkZyYW1lXSktPmRvY3VtZW50
KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhbkRpc3BsYXkoVVJMKSkKKyAgICAgICAgYXV0byogZG9j
dW1lbnQgPSBjb3JlKGZyYW1lKS0+ZG9jdW1lbnQoKTsKKyAgICAgICAgaWYgKCFkb2N1bWVudC0+
c2VjdXJpdHlPcmlnaW4oKS0+Y2FuRGlzcGxheSh1cmwsIGRvY3VtZW50LT5zY2hlbWVSZWdpc3Ry
eSgpKSkKICAgICAgICAgICAgIHJldHVybiBOUEVSUl9HRU5FUklDX0VSUk9SOwogICAgIH0KICAg
ICAgICAgCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYlBsdWdpbkNvbnRhaW5l
ckNoZWNrLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViUGx1
Z2luQ29udGFpbmVyQ2hlY2subW0JKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJLaXQv
bWFjL1BsdWdpbnMvV2ViUGx1Z2luQ29udGFpbmVyQ2hlY2subW0JKHdvcmtpbmcgY29weSkKQEAg
LTk3LDE0ICs5NywxNCBAQCAtICh2b2lkKV9jb250aW51ZVdpdGhQb2xpY3k6KFBvbGljeUFjdGlv
CiAKIC0gKEJPT0wpX2lzRm9yYmlkZGVuRmlsZUxvYWQKIHsKLSAgIEZyYW1lKiBjb3JlRnJhbWUg
PSBjb3JlKFtfY29udHJvbGxlciB3ZWJGcmFtZV0pOwotICAgQVNTRVJUKGNvcmVGcmFtZSk7Ci0g
ICBpZiAoIWNvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuRGlzcGxh
eShbX3JlcXVlc3QgVVJMXSkpIHsKLSAgICAgICBbc2VsZiBfY29udGludWVXaXRoUG9saWN5OlBv
bGljeUlnbm9yZV07Ci0gICAgICAgcmV0dXJuIFlFUzsKLSAgIH0KKyAgICBGcmFtZSogY29yZUZy
YW1lID0gY29yZShbX2NvbnRyb2xsZXIgd2ViRnJhbWVdKTsKKyAgICBBU1NFUlQoY29yZUZyYW1l
KTsKKyAgICBpZiAoIWNvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2Fu
RGlzcGxheShbX3JlcXVlc3QgVVJMXSwgY29yZUZyYW1lLT5zY2hlbWVSZWdpc3RyeSgpKSkgewor
ICAgICAgICBbc2VsZiBfY29udGludWVXaXRoUG9saWN5OlBvbGljeUlnbm9yZV07CisgICAgICAg
IHJldHVybiBZRVM7CisgICAgfQogCi0gICByZXR1cm4gTk87CisgICAgcmV0dXJuIE5POwogfQog
CiAtIChOU0RpY3Rpb25hcnkgKilfYWN0aW9uSW5mb3JtYXRpb25XaXRoVVJMOihOU1VSTCAqKVVS
TApJbmRleDogU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvSG9zdGVkTmV0c2NhcGVQ
bHVnaW5TdHJlYW0ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9I
b3N0ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0JKHJldmlzaW9uIDIwODM5OCkKKysr
IFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL0hvc3RlZE5ldHNjYXBlUGx1Z2luU3Ry
ZWFtLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01OSw5ICs1OSwxMCBAQCBIb3N0ZWROZXRzY2FwZVBs
dWdpblN0cmVhbTo6SG9zdGVkTmV0c2NhCiAgICAgLCBtX3N0cmVhbUlEKHN0cmVhbUlEKQogICAg
ICwgbV9yZXF1ZXN0KGFkb3B0TlMoW3JlcXVlc3QgbXV0YWJsZUNvcHldKSkKICAgICAsIG1fcmVx
dWVzdFVSTChbcmVxdWVzdCBVUkxdKQotICAgICwgbV9mcmFtZUxvYWRlcigwKQorICAgICwgbV9m
cmFtZUxvYWRlcihudWxscHRyKQogewotICAgIFN0cmluZyByZWZlcnJlciA9IFNlY3VyaXR5UG9s
aWN5OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVyKGNvcmUoW2luc3RhbmNlLT5wbHVnaW5WaWV3KCkg
d2ViRnJhbWVdKS0+ZG9jdW1lbnQoKS0+cmVmZXJyZXJQb2xpY3koKSwgW3JlcXVlc3QgVVJMXSwg
Y29yZShbaW5zdGFuY2UtPnBsdWdpblZpZXcoKSB3ZWJGcmFtZV0pLT5sb2FkZXIoKS5vdXRnb2lu
Z1JlZmVycmVyKCkpOworICAgIGF1dG8gZnJhbWUgPSBjb3JlKFtpbnN0YW5jZS0+cGx1Z2luVmll
dygpIHdlYkZyYW1lXSk7CisgICAgU3RyaW5nIHJlZmVycmVyID0gU2VjdXJpdHlQb2xpY3k6Omdl
bmVyYXRlUmVmZXJyZXJIZWFkZXIoZnJhbWUtPmRvY3VtZW50KCktPnJlZmVycmVyUG9saWN5KCks
IG1fcmVxdWVzdFVSTC5nZXQoKSwgZnJhbWUtPmxvYWRlcigpLm91dGdvaW5nUmVmZXJyZXIoKSwg
ZnJhbWUtPnNjaGVtZVJlZ2lzdHJ5KCkpOwogICAgIGlmIChyZWZlcnJlci5pc0VtcHR5KCkpCiAg
ICAgICAgIFttX3JlcXVlc3QuZ2V0KCkgX3dlYl9zZXRIVFRQUmVmZXJyZXI6bmlsXTsKICAgICBl
bHNlCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdp
bkluc3RhbmNlUHJveHkubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvUGx1Z2lu
cy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCShyZXZpc2lvbiAyMDgzOTgp
CisrKyBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3Rh
bmNlUHJveHkubW0JKHdvcmtpbmcgY29weSkKQEAgLTc1NCw5ICs3NTQsOSBAQCB2b2lkIE5ldHNj
YXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6cmVxdWVzCiAgICAgCiBOUEVycm9yIE5ldHNjYXBlUGx1
Z2luSW5zdGFuY2VQcm94eTo6bG9hZFJlcXVlc3QoTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0LCBjb25z
dCBjaGFyKiBjVGFyZ2V0LCBib29sIGFsbG93UG9wdXBzLCB1aW50MzJfdCYgcmVxdWVzdElEKQog
ewotICAgIE5TVVJMICpVUkwgPSBbcmVxdWVzdCBVUkxdOworICAgIE5TVVJMICp1cmwgPSBbcmVx
dWVzdCBVUkxdOwogCi0gICAgaWYgKCFVUkwpIAorICAgIGlmICghdXJsKQogICAgICAgICByZXR1
cm4gTlBFUlJfSU5WQUxJRF9VUkw7CiAKICAgICAvLyBEb24ndCBhbGxvdyByZXF1ZXN0cyB0byBi
ZSBsb2FkZWQgd2hlbiB0aGUgZG9jdW1lbnQgbG9hZGVyIGlzIHN0b3BwaW5nIGFsbCBsb2FkZXJz
LgpAQCAtNzc4LDE0ICs3NzgsMTUgQEAgTlBFcnJvciBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJv
eHk6OmxvYQogICAgICAgICByZXR1cm4gTlBFUlJfR0VORVJJQ19FUlJPUjsgCiAgICAgfQogICAg
IAotICAgIE5TU3RyaW5nICpKU1N0cmluZyA9IFtVUkwgX3dlYmtpdF9zY3JpcHRJZkphdmFTY3Jp
cHRVUkxdOworICAgIE5TU3RyaW5nICpKU1N0cmluZyA9IFt1cmwgX3dlYmtpdF9zY3JpcHRJZkph
dmFTY3JpcHRVUkxdOwogICAgIGlmIChKU1N0cmluZyAhPSBuaWwpIHsKICAgICAgICAgaWYgKCFb
W1ttX3BsdWdpblZpZXcgd2ViVmlld10gcHJlZmVyZW5jZXNdIGlzSmF2YVNjcmlwdEVuYWJsZWRd
KSB7CiAgICAgICAgICAgICAvLyBSZXR1cm4gTlBFUlJfR0VORVJJQ19FUlJPUiBpZiBKUyBpcyBk
aXNhYmxlZC4gVGhpcyBpcyB3aGF0IE1vemlsbGEgZG9lcy4KICAgICAgICAgICAgIHJldHVybiBO
UEVSUl9HRU5FUklDX0VSUk9SOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaWYg
KCFjb3JlKFttX3BsdWdpblZpZXcgd2ViRnJhbWVdKS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmln
aW4oKS0+Y2FuRGlzcGxheShVUkwpKQorICAgICAgICBhdXRvKiBkb2N1bWVudCA9IGNvcmUoW21f
cGx1Z2luVmlldyB3ZWJGcmFtZV0pLT5kb2N1bWVudCgpOworICAgICAgICBpZiAoIWRvY3VtZW50
LT5zZWN1cml0eU9yaWdpbigpLT5jYW5EaXNwbGF5KHVybCwgZG9jdW1lbnQtPnNjaGVtZVJlZ2lz
dHJ5KCkpKQogICAgICAgICAgICAgcmV0dXJuIE5QRVJSX0dFTkVSSUNfRVJST1I7CiAgICAgfQog
ICAgIApJbmRleDogU291cmNlL1dlYktpdC9tYWMvU3RvcmFnZS9XZWJTdG9yYWdlTWFuYWdlci5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYlN0b3JhZ2VNYW5h
Z2VyLm1tCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dl
YlN0b3JhZ2VNYW5hZ2VyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02NCwxNCArNjQsMTIgQEAgLSAo
aWQpaW5pdAogCiAtIChOU0FycmF5ICopb3JpZ2lucwogewotICAgIFZlY3RvcjxSZWZQdHI8U2Vj
dXJpdHlPcmlnaW4+PiBjb3JlT3JpZ2luczsKLQotICAgIFN0b3JhZ2VUcmFja2VyOjp0cmFja2Vy
KCkub3JpZ2lucyhjb3JlT3JpZ2lucyk7CisgICAgVmVjdG9yPFJlZjxTZWN1cml0eU9yaWdpbj4+
IGNvcmVPcmlnaW5zID0gU3RvcmFnZVRyYWNrZXI6OnRyYWNrZXIoKS5vcmlnaW5zKCk7CiAKICAg
ICBOU011dGFibGVBcnJheSAqd2ViT3JpZ2lucyA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGlu
aXRXaXRoQ2FwYWNpdHk6Y29yZU9yaWdpbnMuc2l6ZSgpXTsKIAogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgY29yZU9yaWdpbnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgV2ViU2VjdXJpdHlP
cmlnaW4gKndlYk9yaWdpbiA9IFtbV2ViU2VjdXJpdHlPcmlnaW4gYWxsb2NdIF9pbml0V2l0aFdl
YkNvcmVTZWN1cml0eU9yaWdpbjpjb3JlT3JpZ2luc1tpXS5nZXQoKV07CisgICAgICAgIFdlYlNl
Y3VyaXR5T3JpZ2luICp3ZWJPcmlnaW4gPSBbW1dlYlNlY3VyaXR5T3JpZ2luIGFsbG9jXSBfaW5p
dFdpdGhXZWJDb3JlU2VjdXJpdHlPcmlnaW46Y29yZU9yaWdpbnNbaV0ucHRyKCldOwogICAgICAg
ICBbd2ViT3JpZ2lucyBhZGRPYmplY3Q6d2ViT3JpZ2luXTsKICAgICAgICAgW3dlYk9yaWdpbiBy
ZWxlYXNlXTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYlN0b3Jh
Z2VUcmFja2VyQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1N0b3Jh
Z2UvV2ViU3RvcmFnZVRyYWNrZXJDbGllbnQubW0JKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJj
ZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViU3RvcmFnZVRyYWNrZXJDbGllbnQubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2ltcG9ydCAiV2ViU2VjdXJpdHlPcmlnaW5JbnRl
cm5hbC5oIgogI2ltcG9ydCAiV2ViU3RvcmFnZU1hbmFnZXJQcml2YXRlLmgiCisjaW1wb3J0IDxX
ZWJDb3JlL1BhZ2VTY2hlbWVSZWdpc3RyeS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9y
aWdpbi5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5Q
dHIuaD4KQEAgLTU4LDcgKzU5LDcgQEAgdm9pZCBXZWJTdG9yYWdlVHJhY2tlckNsaWVudDo6ZGlz
cGF0Y2hEaQogCiB2b2lkIFdlYlN0b3JhZ2VUcmFja2VyQ2xpZW50OjpkaXNwYXRjaERpZE1vZGlm
eU9yaWdpbihjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIpCiB7Ci0gICAgYXV0byBvcmln
aW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmllcihvcmlnaW5J
ZGVudGlmaWVyKTsKKyAgICBhdXRvIG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9t
RGF0YWJhc2VJZGVudGlmaWVyKG9yaWdpbklkZW50aWZpZXIsIFBhZ2VTY2hlbWVSZWdpc3RyeTo6
Y3JlYXRlKCkpOwogCiAgICAgaWYgKGlzTWFpblRocmVhZCgpKSB7CiAgICAgICAgIGRpc3BhdGNo
RGlkTW9kaWZ5T3JpZ2luKFdURk1vdmUob3JpZ2luKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJBcHBsaWNhdGlvbkNhY2hlLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFwcGxpY2F0aW9uQ2FjaGUubW0JKHJl
dmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFw
cGxpY2F0aW9uQ2FjaGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbXBv
cnQgIldlYlNlY3VyaXR5T3JpZ2luSW50ZXJuYWwuaCIKICNpbXBvcnQgPFdlYkNvcmUvQXBwbGlj
YXRpb25DYWNoZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5o
PgorI2ltcG9ydCA8V2ViQ29yZS9QYWdlU2NoZW1lUmVnaXN0cnkuaD4KICNpbXBvcnQgPFdlYkNv
cmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIApAQCAtMTQx
LDcgKzE0Miw3IEBAICsgKE5TQXJyYXkgKilvcmlnaW5zV2l0aENhY2hlCiAKIFdlYkNvcmU6OkFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlJiB3ZWJBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSgpCiB7Ci0g
ICAgc3RhdGljIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlJiBzdG9yYWdlID0gQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2U6OmNyZWF0ZShhcHBsaWNhdGlvbkNhY2hlUGF0aCgpLCAiQXBwbGljYXRpb25D
YWNoZSIpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWMgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UmIHN0
b3JhZ2UgPSBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y3JlYXRlKGFwcGxpY2F0aW9uQ2FjaGVQ
YXRoKCksICJBcHBsaWNhdGlvbkNhY2hlIiwgUGFnZVNjaGVtZVJlZ2lzdHJ5OjpjcmVhdGUoKSku
bGVha1JlZigpOwogCiAgICAgcmV0dXJuIHN0b3JhZ2U7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5t
bQkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTEwOCw2ICsxMDgsNyBA
QAogI2ltcG9ydCA8V2ViQ29yZS9OU1VSTERvd25sb2FkU1BJLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L05TVVJMRmlsZVR5cGVNYXBwaW5nc1NQSS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYWdlLmg+Cisj
aW1wb3J0IDxXZWJDb3JlL1BhZ2VTY2hlbWVSZWdpc3RyeS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Q
bHVnaW5CbGFja2xpc3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGx1Z2luVmlld0Jhc2UuaD4KICNp
bXBvcnQgPFdlYkNvcmUvUHJvdGVjdGlvblNwYWNlLmg+CkBAIC0xMzM2LDcgKzEzMzcsNyBAQCB2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpwcmVwYXJlRm9yRGF0CiAKIFJlZjxEb2N1bWVudExv
YWRlcj4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVE
YXRhKQogewotICAgIFJlZjxXZWJEb2N1bWVudExvYWRlck1hYz4gbG9hZGVyID0gV2ViRG9jdW1l
bnRMb2FkZXJNYWM6OmNyZWF0ZShyZXF1ZXN0LCBzdWJzdGl0dXRlRGF0YSk7CisgICAgUmVmPFdl
YkRvY3VtZW50TG9hZGVyTWFjPiBsb2FkZXIgPSBXZWJEb2N1bWVudExvYWRlck1hYzo6Y3JlYXRl
KHJlcXVlc3QsIHN1YnN0aXR1dGVEYXRhLCBQYWdlU2NoZW1lUmVnaXN0cnk6OmNyZWF0ZSgpKTsK
IAogICAgIFdlYkRhdGFTb3VyY2UgKmRhdGFTb3VyY2UgPSBbW1dlYkRhdGFTb3VyY2UgYWxsb2Nd
IF9pbml0V2l0aERvY3VtZW50TG9hZGVyOmxvYWRlci5wdHIoKV07CiAgICAgbG9hZGVyLT5zZXRE
YXRhU291cmNlKGRhdGFTb3VyY2UsIGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSkpOwpJbmRl
eDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4ubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJp
dHlPcmlnaW4ubW0JKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICsz
Myw3IEBACiAjaW1wb3J0ICJXZWJRdW90YU1hbmFnZXIuaCIKICNpbXBvcnQgPFdlYkNvcmUvVVJM
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RhdGFiYXNlTWFuYWdlci5oPgorI2ltcG9ydCA8V2ViQ29y
ZS9QYWdlU2NoZW1lUmVnaXN0cnkuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4u
aD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC00MSw3ICs0Miw3IEBAIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCiArIChpZCl3ZWJTZWN1cml0eU9yaWdpbkZyb21EYXRhYmFzZUlk
ZW50aWZpZXI6KE5TU3RyaW5nICopZGF0YWJhc2VJZGVudGlmaWVyCiB7Ci0gICAgUmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6bWF5YmVDcmVhdGVGcm9tRGF0
YWJhc2VJZGVudGlmaWVyKGRhdGFiYXNlSWRlbnRpZmllcik7CisgICAgUmVmUHRyPFNlY3VyaXR5
T3JpZ2luPiBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6bWF5YmVDcmVhdGVGcm9tRGF0YWJhc2VJ
ZGVudGlmaWVyKGRhdGFiYXNlSWRlbnRpZmllciwgUGFnZVNjaGVtZVJlZ2lzdHJ5OjpjcmVhdGUo
KSk7CiAgICAgaWYgKCFvcmlnaW4pCiAgICAgICAgIHJldHVybiBuaWw7CiAKQEAgLTU0LDcgKzU1
LDcgQEAgLSAoaWQpaW5pdFdpdGhVUkw6KE5TVVJMICopdXJsCiAgICAgaWYgKCFzZWxmKQogICAg
ICAgICByZXR1cm4gbmlsOwogCi0gICAgYXV0byBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3Jl
YXRlKFVSTChbdXJsIGFic29sdXRlVVJMXSkpOworICAgIGF1dG8gb3JpZ2luID0gU2VjdXJpdHlP
cmlnaW46OmNyZWF0ZShVUkwoW3VybCBhYnNvbHV0ZVVSTF0pLCBQYWdlU2NoZW1lUmVnaXN0cnk6
OmNyZWF0ZSgpKTsKICAgICBTZWN1cml0eU9yaWdpbiogcmF3T3JpZ2luID0gJm9yaWdpbi5sZWFr
UmVmKCk7CiAgICAgX3ByaXZhdGUgPSByZWludGVycHJldF9jYXN0PFdlYlNlY3VyaXR5T3JpZ2lu
UHJpdmF0ZSAqPihyYXdPcmlnaW4pOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYkRhdGFTb3VyY2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJEYXRhU291cmNlLm1tCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTUzLDYgKzUzLDcg
QEAKICNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xlZ2FjeVdlYkFy
Y2hpdmUuaD4KICNpbXBvcnQgPFdlYkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5oPgorI2ltcG9ydCA8
V2ViQ29yZS9QYWdlU2NoZW1lUmVnaXN0cnkuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VS
ZXF1ZXN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgpAQCAtNDE3LDcgKzQxOCw3IEBAIC0gKGlkKV9pbml0
V2l0aERvY3VtZW50TG9hZGVyOihQYXNzUmVmUHQKIAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
UmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdAogewotICAgIHJldHVybiBbc2VsZiBfaW5p
dFdpdGhEb2N1bWVudExvYWRlcjpXZWJEb2N1bWVudExvYWRlck1hYzo6Y3JlYXRlKHJlcXVlc3Qs
IFN1YnN0aXR1dGVEYXRhKCkpXTsKKyAgICByZXR1cm4gW3NlbGYgX2luaXRXaXRoRG9jdW1lbnRM
b2FkZXI6V2ViRG9jdW1lbnRMb2FkZXJNYWM6OmNyZWF0ZShyZXF1ZXN0LCBTdWJzdGl0dXRlRGF0
YSgpLCBQYWdlU2NoZW1lUmVnaXN0cnk6OmNyZWF0ZSgpKV07CiB9CiAKIC0gKHZvaWQpZGVhbGxv
YwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJEb2N1bWVudExvYWRlck1hYy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRG9jdW1lbnRMb2Fk
ZXJNYWMuaAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJEb2N1bWVudExvYWRlck1hYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxNCArMzQsMTUgQEAK
IEBjbGFzcyBXZWJWaWV3OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xhc3MgUmVzb3Vy
Y2VSZXF1ZXN0OworY2xhc3MgUGFnZVNjaGVtZVJlZ2lzdHJ5OworY2xhc3MgUmVzb3VyY2VSZXF1
ZXN0OwogfQogCiBjbGFzcyBXZWJEb2N1bWVudExvYWRlck1hYyA6IHB1YmxpYyBXZWJDb3JlOjpE
b2N1bWVudExvYWRlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJEb2N1bWVudExvYWRl
ck1hYz4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29u
c3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmIGRhdGEpCisgICAgc3RhdGljIFJlZjxXZWJEb2N1
bWVudExvYWRlck1hYz4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgY29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmIGRhdGEsIGNvbnN0IFdlYkNvcmU6
OlBhZ2VTY2hlbWVSZWdpc3RyeSYgc2NoZW1lUmVnaXN0cnkpCiAgICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBXZWJEb2N1bWVudExvYWRlck1hYyhyZXF1ZXN0LCBkYXRhKSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkRvY3VtZW50TG9hZGVyTWFjKHJlcXVlc3Qs
IGRhdGEsIHNjaGVtZVJlZ2lzdHJ5KSk7CiAgICAgfQogCiAgICAgdm9pZCBzZXREYXRhU291cmNl
KFdlYkRhdGFTb3VyY2UgKiwgV2ViVmlldyopOwpAQCAtNTIsNyArNTMsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBkZWNyZWFzZUxvYWRDb3VudCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwogCiBw
cml2YXRlOgotICAgIFdlYkRvY3VtZW50TG9hZGVyTWFjKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJik7CisgICAgV2ViRG9jdW1l
bnRMb2FkZXJNYWMoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29y
ZTo6U3Vic3RpdHV0ZURhdGEmLCBjb25zdCBXZWJDb3JlOjpQYWdlU2NoZW1lUmVnaXN0cnkmKTsK
IAogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hUb0ZyYW1lKCk7CiAgICAgdmlydHVhbCB2b2lkIGRl
dGFjaEZyb21GcmFtZSgpOwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJEb2N1
bWVudExvYWRlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYkRvY3VtZW50TG9hZGVyTWFjLm1tCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYkRvY3VtZW50TG9hZGVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0zMyw4ICszMyw4IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1XZWJEb2N1bWVu
dExvYWRlck1hYzo6V2ViRG9jdW1lbnRMb2FkZXJNYWMoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBjb25zdCBTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCi0gICAgOiBEb2N1
bWVudExvYWRlcihyZXF1ZXN0LCBzdWJzdGl0dXRlRGF0YSkKK1dlYkRvY3VtZW50TG9hZGVyTWFj
OjpXZWJEb2N1bWVudExvYWRlck1hYyhjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNv
bnN0IFN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSwgY29uc3QgUGFnZVNjaGVtZVJlZ2lz
dHJ5JiBzY2hlbWVSZWdpc3RyeSkKKyAgICA6IERvY3VtZW50TG9hZGVyKHJlcXVlc3QsIHN1YnN0
aXR1dGVEYXRhLCBzY2hlbWVSZWdpc3RyeSkKICAgICAsIG1fZGF0YVNvdXJjZShuaWwpCiAgICAg
LCBtX2lzRGF0YVNvdXJjZVJldGFpbmVkKGZhbHNlKQogewpJbmRleDogU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJGcmFtZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYkZyYW1lLm1tCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYkZyYW1lLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMDgyLDExICsyMDgyLDEy
IEBAIC0gKE5TTXV0YWJsZURpY3Rpb25hcnkgKilfY2FjaGVhYmlsaXR5RGkKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCi0tIChCT09MKV9hbGxvd3NGb2xsb3dpbmdMaW5rOihOU1VSTCAqKVVSTAor
LSAoQk9PTClfYWxsb3dzRm9sbG93aW5nTGluazooTlNVUkwgKil1cmwKIHsKICAgICBpZiAoIV9w
cml2YXRlLT5jb3JlRnJhbWUpCiAgICAgICAgIHJldHVybiBZRVM7Ci0gICAgcmV0dXJuIF9wcml2
YXRlLT5jb3JlRnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhbkRpc3BsYXko
VVJMKTsKKyAgICBhdXRvKiBkb2N1bWVudCA9IF9wcml2YXRlLT5jb3JlRnJhbWUtPmRvY3VtZW50
KCk7CisgICAgcmV0dXJuIGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLT5jYW5EaXNwbGF5KHVy
bCwgZG9jdW1lbnQtPnNjaGVtZVJlZ2lzdHJ5KCkpOwogfQogCiAtIChOU1N0cmluZyAqKV9zdHJp
bmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgd2l0
aEdsb2JhbE9iamVjdDooSlNPYmplY3RSZWYpZ2xvYmFsT2JqZWN0UmVmIGluU2NyaXB0V29ybGQ6
KFdlYlNjcmlwdFdvcmxkICopd29ybGQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZp
ZXcubW0JKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
Vmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTY3LDYgKzE2Nyw3IEBACiAjaW1wb3J0IDxXZWJD
b3JlL1BhZ2VDYWNoZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYWdlQ29uZmlndXJhdGlvbi5oPgog
I2ltcG9ydCA8V2ViQ29yZS9QYWdlR3JvdXAuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUGFnZVNjaGVt
ZVJlZ2lzdHJ5Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtRXZlbnRGYWN0b3J5TWFjLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1Byb2dyZXNzVHJhY2tlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9S
ZW5kZXJWaWV3Lmg+CkBAIC00MDc0LDEyICs0MDc1LDEyIEBAIC0gKE5TUGFzdGVib2FyZCAqKV9p
bnNlcnRpb25QYXN0ZWJvYXJkCiAKICsgKHZvaWQpX2FkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVu
dHJ5V2l0aFNvdXJjZU9yaWdpbjooTlNTdHJpbmcgKilzb3VyY2VPcmlnaW4gZGVzdGluYXRpb25Q
cm90b2NvbDooTlNTdHJpbmcgKilkZXN0aW5hdGlvblByb3RvY29sIGRlc3RpbmF0aW9uSG9zdDoo
TlNTdHJpbmcgKilkZXN0aW5hdGlvbkhvc3QgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnM6KEJP
T0wpYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMKIHsKLSAgICBTZWN1cml0eVBvbGljeTo6YWRk
T3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJp
bmcoc291cmNlT3JpZ2luKS5nZXQoKSwgZGVzdGluYXRpb25Qcm90b2NvbCwgZGVzdGluYXRpb25I
b3N0LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CisgICAgU2VjdXJpdHlQb2xpY3k6OmFk
ZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3Ry
aW5nKHNvdXJjZU9yaWdpbiwgUGFnZVNjaGVtZVJlZ2lzdHJ5OjpjcmVhdGUoKSkuZ2V0KCksIGRl
c3RpbmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9uSG9zdCwgYWxsb3dEZXN0aW5hdGlvblN1YmRv
bWFpbnMpOwogfQogCiArICh2b2lkKV9yZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeVdp
dGhTb3VyY2VPcmlnaW46KE5TU3RyaW5nICopc291cmNlT3JpZ2luIGRlc3RpbmF0aW9uUHJvdG9j
b2w6KE5TU3RyaW5nICopZGVzdGluYXRpb25Qcm90b2NvbCBkZXN0aW5hdGlvbkhvc3Q6KE5TU3Ry
aW5nICopZGVzdGluYXRpb25Ib3N0IGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zOihCT09MKWFs
bG93RGVzdGluYXRpb25TdWJkb21haW5zCiB7Ci0gICAgU2VjdXJpdHlQb2xpY3k6OnJlbW92ZU9y
aWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5n
KHNvdXJjZU9yaWdpbikuZ2V0KCksIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9uSG9z
dCwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOworICAgIFNlY3VyaXR5UG9saWN5OjpyZW1v
dmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0
cmluZyhzb3VyY2VPcmlnaW4sIFBhZ2VTY2hlbWVSZWdpc3RyeTo6Y3JlYXRlKCkpLmdldCgpLCBk
ZXN0aW5hdGlvblByb3RvY29sLCBkZXN0aW5hdGlvbkhvc3QsIGFsbG93RGVzdGluYXRpb25TdWJk
b21haW5zKTsKIH0KIAogKyAodm9pZClfcmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RzCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294203</attachid>
            <date>2016-11-08 17:02:00 -0800</date>
            <delta_ts>2016-12-01 10:24:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164535-20161108165751.patch</filename>
            <type>text/plain</type>
            <size>408082</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE2LTExLTA4ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW50cm9kdWNlIFBhZ2VTY2hlbWVS
ZWdpc3RyeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTY0NTM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiB3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaDoKKyAgICAgICAgKFdURjo6VGhyZWFkU2FmZVJl
ZkNvdW50ZWRCYXNlOjpyZWYpOgorICAgICAgICAoV1RGOjpUaHJlYWRTYWZlUmVmQ291bnRlZEJh
c2U6Omhhc09uZVJlZik6CisgICAgICAgIChXVEY6OlRocmVhZFNhZmVSZWZDb3VudGVkQmFzZTo6
ZGVyZWZCYXNlKToKKyAgICAgICAgKFdURjo6VGhyZWFkU2FmZVJlZkNvdW50ZWQ6OmRlcmVmKToK
KwogMjAxNi0xMS0wMyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAg
IERGRyBwbGF5cyBmYXN0IGFuZCBsb29zZSB3aXRoIHRoZSBzaGFkb3cgdmFsdWVzIG9mIGEgUGhp
CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XVEYvd3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmgJKHJldmlzaW9uIDIwODM5
OCkKKysrIFNvdXJjZS9XVEYvd3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQxLDEyICs0MSwxMiBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHZvaWQg
cmVmKCkKKyAgICB2b2lkIHJlZigpIGNvbnN0CiAgICAgewogICAgICAgICArK21fcmVmQ291bnQ7
CiAgICAgfQogCi0gICAgYm9vbCBoYXNPbmVSZWYoKQorICAgIGJvb2wgaGFzT25lUmVmKCkgY29u
c3QKICAgICB7CiAgICAgICAgIHJldHVybiByZWZDb3VudCgpID09IDE7CiAgICAgfQpAQCAtNTgs
NyArNTgsNyBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICAvLyBSZXR1cm5zIHdoZXRoZXIg
dGhlIHBvaW50ZXIgc2hvdWxkIGJlIGZyZWVkIG9yIG5vdC4KLSAgICBib29sIGRlcmVmQmFzZSgp
CisgICAgYm9vbCBkZXJlZkJhc2UoKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKC0tbV9yZWZD
b3VudCA8PSAwKSB7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTY4LDE1ICs2OCwxNSBA
QCBwcm90ZWN0ZWQ6CiAgICAgfQogCiBwcml2YXRlOgotICAgIHN0ZDo6YXRvbWljPGludD4gbV9y
ZWZDb3VudDsKKyAgICBtdXRhYmxlIHN0ZDo6YXRvbWljPGludD4gbV9yZWZDb3VudDsKIH07CiAK
IHRlbXBsYXRlPGNsYXNzIFQ+IGNsYXNzIFRocmVhZFNhZmVSZWZDb3VudGVkIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkQmFzZSB7CiBwdWJsaWM6Ci0gICAgdm9pZCBkZXJlZigpCisgICAg
dm9pZCBkZXJlZigpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoZGVyZWZCYXNlKCkpCi0gICAg
ICAgICAgICBkZWxldGUgc3RhdGljX2Nhc3Q8VCo+KHRoaXMpOworICAgICAgICAgICAgZGVsZXRl
IHN0YXRpY19jYXN0PGNvbnN0IFQqPih0aGlzKTsKICAgICB9CiAKIHByb3RlY3RlZDoKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cJKHJldmlzaW9uIDIwODQwNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5NCBAQAorMjAxNi0xMS0wOCAgQWxleCBDaHJpc3Rl
bnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIEludHJvZHVjZSBQYWdl
U2NoZW1lUmVnaXN0cnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2NDUzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4gSnVzdCBpbnRyb2R1Y2VkIGEgc3R1Yi4KKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldFJlZmVycmVyKToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCRGF0YWJhc2VJZGVudGlmaWVyOjpkYXRhYmFzZURpcmVjdG9yeVJlbGF0aXZlVG9S
b290KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpwZXJmb3JtQ2xvc2VBbmRE
ZWxldGVEYXRhYmFzZXNGb3JPcmlnaW5zKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6
Om9yaWdpbnMpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpXZWJTb2NrZXQpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViU29ja2V0OjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJT
b2NrZXQ6OmRpZFJlY2VpdmVCaW5hcnlEYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tl
dHMvV2ViU29ja2V0Lmg6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmhhbmRsZVBvc3RNZXNzYWdlKToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVT
aGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNoZWV0OjpjYW5BY2Nlc3NSdWxl
cyk6CisgICAgICAgICogY3NzL1J1bGVTZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UnVsZVNl
dDo6YWRkUnVsZXNGcm9tU2hlZXQpOgorICAgICAgICAqIGNzcy9TdHlsZVNoZWV0Q29udGVudHMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVTaGVldENvbnRlbnRzOjpwYXJzZUF1dGhvclN0
eWxlU2hlZXQpOgorICAgICAgICAqIGRvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVYTUxEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpET01JbXBs
ZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RE9NSW1wbGVt
ZW50YXRpb246OmNyZWF0ZUhUTUxEb2N1bWVudCk6CisgICAgICAgICogZG9tL0RPTUltcGxlbWVu
dGF0aW9uLmg6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50OjpEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjbG9uZURvY3VtZW50V2l0aG91dENoaWxk
cmVuKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjphcHBseVhTTFRyYW5zZm9ybSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW5pdFNlY3VyaXR5Q29udGV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6ZW5zdXJlVGVtcGxhdGVEb2N1bWVudCk6CisgICAgICAgICog
ZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjcmVhdGVOb25SZW5kZXJlZFBsYWNlaG9sZGVyKToK
KyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpzYW5pdGl6ZVNjcmlwdEVycm9yKToKKyAgICAg
ICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oOgorICAgICAgICAqIGRvbS9TZWN1cml0
eUNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlDb250ZXh0Ojppc1NlY3Vy
ZVRyYW5zaXRpb25Ubyk6CisgICAgICAgICogZG9tL1NlY3VyaXR5Q29udGV4dC5oOgorICAgICAg
ICAqIGRvbS9YTUxEb2N1bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6WE1MRG9jdW1lbnQ6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpYTUxEb2N1bWVudDo6Y3JlYXRlWEhUTUwpOgorICAg
ICAgICAoV2ViQ29yZTo6WE1MRG9jdW1lbnQ6OlhNTERvY3VtZW50KToKKyAgICAgICAgKiBodG1s
L0RPTVVSTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6Om9yaWdpbik6CisgICAgICAg
ICogaHRtbC9ET01VUkwuaDoKKyAgICAgICAgKiBodG1sL0RPTVVSTC5pZGw6CisgICAgICAgICog
aHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGVFBEaXJl
Y3RvcnlEb2N1bWVudDo6RlRQRGlyZWN0b3J5RG9jdW1lbnQpOgorICAgICAgICAqIGh0bWwvRlRQ
RGlyZWN0b3J5RG9jdW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxBbmNob3JFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBbmNob3JFbGVtZW50OjpvcmlnaW4pOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEFuY2hvckVsZW1lbnQ6OmhhbmRsZUNsaWNrKToKKyAgICAgICAgKiBo
dG1sL0hUTUxEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnQ6OkhU
TUxEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnQ6OmNsb25lRG9jdW1l
bnRXaXRob3V0Q2hpbGRyZW4pOgorICAgICAgICAqIGh0bWwvSFRNTERvY3VtZW50Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MRG9jdW1lbnQ6OmNyZWF0ZVN5bnRoZXNpemVkRG9jdW1lbnQpOgorICAgICAgICAqIGh0bWwv
SFRNTEltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50
Ojp3aWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50OjpoZWlnaHQpOgor
ICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojppc1Nh
ZmVUb0xvYWRVUkwpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6b3JpZ2lu
c0luTWVkaWFDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpjbGVh
ck1lZGlhQ2FjaGVGb3JPcmlnaW5zKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQ6Om1lZGlhQ29udHJvbHMpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6
bWVkaWFQbGF5ZXJSZWZlcnJlcik6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpoYXNTaW5nbGVTZWN1cml0eU9y
aWdpbik6CisgICAgICAgICogaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJl
cik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojp1cGRhdGVTbmFw
c2hvdCk6CisgICAgICAgICogaHRtbC9JbWFnZURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlRG9jdW1lbnQ6OkltYWdlRG9jdW1lbnQpOgorICAgICAgICAqIGh0bWwvSW1hZ2VE
b2N1bWVudC5oOgorICAgICAgICAqIGh0bWwvTWVkaWFEb2N1bWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYURvY3VtZW50OjpNZWRpYURvY3VtZW50KToKKyAgICAgICAgKiBodG1sL01l
ZGlhRG9jdW1lbnQuaDoKKyAgICAgICAgKiBodG1sL1BsdWdpbkRvY3VtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBsdWdpbkRvY3VtZW50OjpQbHVnaW5Eb2N1bWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpQbHVnaW5Eb2N1bWVudDo6c2V0UGx1Z2luRWxlbWVudCk6CisgICAgICAgICogaHRt
bC9QbHVnaW5Eb2N1bWVudC5oOgorICAgICAgICAqIGh0bWwvVGV4dERvY3VtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHREb2N1bWVudDo6VGV4dERvY3VtZW50KToKKyAgICAgICAgKiBo
dG1sL1RleHREb2N1bWVudC5oOgorICAgICAgICAqIGh0bWwvVVJMVXRpbHMuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlVSTFV0aWxzPFQ+OjpvcmlnaW4pOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwv
VVJMVXRpbHMuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDo6d291bGRU
YWludE9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0Ojpj
aGVja09yaWdpbik6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDo6
Y2hlY2tPcmlnaW4pOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRy
YXdJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNy
ZWF0ZVBhdHRlcm4pOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dGV4U3Vi
SW1hZ2UyRCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dGV4U3ViSW1hZ2Uy
RCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0ZXhJbWFnZTJE
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRl
SFRNTEltYWdlRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjp2YWxpZGF0ZUhUTUxDYW52YXNFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlSFRNTFZpZGVvRWxlbWVudCk6CisgICAg
ICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oOgorICAgICAgICAq
IGluc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NUGF0
Y2hTdXBwb3J0OjpwYXRjaERvY3VtZW50KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OkRvY3VtZW50TG9hZGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnNldEFyY2hpdmUpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXI6OnBvcEFyY2hpdmVGb3JTdWJmcmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6c3VicmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRMb2FkZXI6OnN0YXJ0TG9hZGluZ01haW5SZXNvdXJjZSk6CisgICAgICAgICogbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpzY2hlbWVSZWdpc3Ry
eSk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OkRvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6Omlz
QWxsb3dlZFJlZGlyZWN0KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRXcml0ZXI6OmNyZWF0ZURvY3VtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50V3JpdGVyOjpiZWdpbik6CisgICAgICAgICogbG9hZGVyL0Vt
cHR5Q2xpZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaWxsV2l0aEVtcHR5Q2xpZW50cyk6
CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVEb2N1bWVu
dExvYWRlcik6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkQXJjaGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlcjo6bG9hZEZyYW1lUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
cjo6bG9hZFVSTCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y29tbWl0UHJvdmlz
aW9uYWxMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VT
eW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkaXNwYXRjaFVu
bG9hZEV2ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6c2hvdWxkSW50ZXJy
dXB0TG9hZEZvclhGcmFtZU9wdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OmxvYWREaWZmZXJlbnREb2N1bWVudEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlV2lu
ZG93KToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIv
SW1hZ2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMb2FkZXI6OnVwZGF0ZUZy
b21FbGVtZW50KToKKyAgICAgICAgKiBsb2FkZXIvTG9hZFRpbWluZy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpMb2FkVGltaW5nOjphZGRSZWRpcmVjdCk6CisgICAgICAgICogbG9hZGVyL0xvYWRU
aW1pbmcuaDoKKyAgICAgICAgKiBsb2FkZXIvUGluZ0xvYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQaW5nTG9hZGVyOjpsb2FkSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UGluZ0xvYWRl
cjo6c2VuZFBpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UGluZ0xvYWRlcjo6c2VuZFZpb2xhdGlv
blJlcG9ydCk6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZEluZm8uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkSW5mbzo6aXNUaGlyZFBhcnR5KToKKyAgICAgICAgKiBs
b2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXI6OmxvZ0ZyYW1lTmF2aWdhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nU3VicmVzb3VyY2VMb2FkaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dXZWJTb2NrZXRMb2FkaW5nKToKKyAgICAg
ICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXI6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmlzQWxs
b3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzKToKKyAgICAgICAgKiBsb2FkZXIvU2lua0RvY3Vt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbmtEb2N1bWVudDo6U2lua0RvY3VtZW50KToK
KyAgICAgICAgKiBsb2FkZXIvU2lua0RvY3VtZW50Lmg6CisgICAgICAgICogbG9hZGVyL1N1YmZy
YW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YmZyYW1lTG9hZGVyOjpwbHVnaW5J
c0xvYWRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YmZyYW1lTG9hZGVyOjpjcmVhdGVKYXZh
QXBwbGV0V2lkZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlN1YmZyYW1lTG9hZGVyOjpsb2FkU3Vi
ZnJhbWUpOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWwpOgor
ICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmNoZWNrUmVkaXJlY3Rpb25Dcm9z
c09yaWdpbkFjY2Vzc0NvbnRyb2wpOgorICAgICAgICAqIGxvYWRlci9UZXh0VHJhY2tMb2FkZXIu
aDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6QXBwbGljYXRpb25DYWNo
ZUdyb3VwKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3Vw
Lmg6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpBcHBsaWNhdGlvbkNhY2hl
SG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlSG9zdDo6aXNBcHBsaWNh
dGlvbkNhY2hlQmxvY2tlZEZvclJlcXVlc3QpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlSG9zdC5oOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZTo6bG9hZENhY2hlR3JvdXApOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25D
YWNoZVN0b3JhZ2U6OmZpbmRPckNyZWF0ZUNhY2hlR3JvdXApOgorICAgICAgICAoV2ViQ29yZTo6
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNhY2hlR3JvdXBGb3JVUkwpOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmZhbGxiYWNrQ2FjaGVHcm91cEZvclVSTCk6
CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Z2V0T3JpZ2luc1dp
dGhDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6QXBw
bGljYXRpb25DYWNoZVN0b3JhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2U6OmNyZWF0ZSk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hl
ZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkQ1NTU3R5bGVTaGVldDo6Q2FjaGVkQ1NT
U3R5bGVTaGVldCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQu
aDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRGb250OjpDYWNoZWRGb250KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkRm9udC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250Q2xpZW50Lmg6Cisg
ICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZEltYWdlOjpDYWNoZWRJbWFnZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZEltYWdlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlQ2xpZW50Lmg6Cisg
ICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjpDYWNoZWRSYXdSZXNvdXJjZSk6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpD
YWNoZWRSZXNvdXJjZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6c2NoZW1lUmVnaXN0cnkpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6Q2FjaGVkUmVzb3VyY2VMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
UmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRS
ZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFVzZXJDU1NTdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpjYW5SZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZFJlc291cmNlTG9hZGVyOjpjYW5SZXF1ZXN0QWZ0ZXJSZWRpcmVjdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2FuUmVxdWVzdEluQ29udGVudERp
c3Bvc2l0aW9uQXR0YWNobWVudFNhbmRib3gpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVz
b3VyY2VMb2FkZXI6OnVwZGF0ZUNhY2hlZFJlc291cmNlV2l0aEN1cnJlbnRSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJldmFsaWRhdGVSZXNvdXJj
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6bG9hZFJlc291cmNl
KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnNjaGVtZVJlZ2lzdHJ5KToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZFJlc291cmNlUmVxdWVzdDo6dXBkYXRlUmVmZXJyZXJPcmlnaW5BbmRVc2VyQWdlbnRI
ZWFkZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OmlzUmVxdWVzdENyb3NzT3JpZ2luKToKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0Lmg6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFNWR0RvY3VtZW50OjpDYWNoZWRTVkdEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNWR0RvY3VtZW50Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3Vt
ZW50Q2xpZW50Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRm9udDo6Q2FjaGVkU1ZHRm9udCk6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRTVkdGb250OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNjcmlwdDo6Q2FjaGVk
U2NyaXB0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0Lmg6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZFN0eWxlU2hlZXRDbGllbnQuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFRl
eHRUcmFjazo6Q2FjaGVkVGV4dFRyYWNrKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
VGV4dFRyYWNrLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkWFNMU3R5bGVTaGVldDo6Q2FjaGVkWFNMU3R5
bGVTaGVldCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaDoK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVtb3J5Q2FjaGU6OmFkZEltYWdlVG9DYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpNZW1v
cnlDYWNoZTo6cmVtb3ZlUmVzb3VyY2VzV2l0aE9yaWdpbnMpOgorICAgICAgICAoV2ViQ29yZTo6
TWVtb3J5Q2FjaGU6Om9yaWdpbnNXaXRoQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5
Q2FjaGU6OnJlbW92ZVJlc291cmNlc1dpdGhPcmlnaW4pOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TWVtb3J5Q2FjaGU6OmdldE9yaWdpbnNXaXRoQ2FjaGUpOiBEZWxldGVkLgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6cG9zdE1lc3NhZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NV2luZG93Ojpjcm9zc0RvbWFpbkFjY2Vzc0Vycm9yTWVzc2FnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgICogcGFn
ZS9ET01XaW5kb3cuaDoKKyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpzdGFydERyYWcpOgorICAgICAgICAqIHBhZ2Uv
RXZlbnRTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRTb3VyY2U6OmRpZFJlY2Vp
dmVSZXNwb25zZSk6CisgICAgICAgICogcGFnZS9FdmVudFNvdXJjZS5oOgorICAgICAgICAqIHBh
Z2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OkZyYW1lKToKKyAgICAgICAg
KiBwYWdlL0ZyYW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6c2NoZW1lUmVnaXN0cnkp
OgorICAgICAgICAqIHBhZ2UvSGlzdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5
OjpzdGF0ZU9iamVjdEFkZGVkKToKKyAgICAgICAgKiBwYWdlL0xvY2F0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpvcmlnaW4pOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpQYWdlKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNjaGVtZVJlZ2lzdHJ5KToKKyAgICAgICAgKiBwYWdl
L1BhZ2VDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKiBwYWdlL1BhZ2VTY2hlbWVSZWdpc3Ry
eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNjaGVtZVJlZ2lzdHJ5OjpQYWdl
U2NoZW1lUmVnaXN0cnkpOgorICAgICAgICAqIHBhZ2UvUGFnZVNjaGVtZVJlZ2lzdHJ5Lmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNjaGVtZVJlZ2lzdHJ5OjpjcmVhdGUpOgorICAg
ICAgICAqIHBhZ2UvUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpwYXNzZXNUaW1pbmdBbGxvd0NoZWNrKToKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5T3Jp
Z2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZFRyZWF0QXNVbmlxdWVPcmlnaW4pOgor
ICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbjo6Y2FuUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbjo6Y2FuRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlRnJvbVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6
bWF5YmVDcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyKToKKyAgICAgICAgKiBw
YWdlL1NlY3VyaXR5T3JpZ2luLmg6CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpzZWN1cml0eU9yaWdp
bik6CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuaDoKKyAgICAgICAgKiBwYWdl
L1NlY3VyaXR5UG9saWN5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5UG9saWN5Ojpn
ZW5lcmF0ZVJlZmVycmVySGVhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5UG9saWN5
Ojppc0FjY2Vzc1doaXRlTGlzdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5UG9saWN5
Ojppc0FjY2Vzc1RvVVJMV2hpdGVMaXN0ZWQpOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlQb2xp
Y3kuaDoKKyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5OjpDb250ZW50U2VjdXJpdHlQb2xp
Y3kpOgorICAgICAgICAoV2ViQ29yZTo6c3RyaXBVUkxGb3JVc2VJblJlcG9ydCk6CisgICAgICAg
IChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OnVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RJ
Zk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OnNldFVw
Z3JhZGVJbnNlY3VyZVJlcXVlc3RzKToKKyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2VjdXJp
dHlQb2xpY3kuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY2hlbWVSZWdpc3RyeS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyOjpoYXNTaW5nbGVTZWN1cml0eU9yaWdpbik6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllcjo6b3JpZ2luc0luTWVkaWFDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllcjo6Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllclByaXZhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUludGVyZmFjZTo6aGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlOjphdWRpb1NvdXJjZVByb3ZpZGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTo6b3JpZ2luc0luTWVkaWFD
YWNoZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVJbnRl
cmZhY2U6OmNsZWFyTWVkaWFDYWNoZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVJbnRlcmZhY2U6OmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMpOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6b3JpZ2luc0luTWVkaWFDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Omhhc1Npbmds
ZVNlY3VyaXR5T3JpZ2luKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW06Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6b3JpZ2luc0luTWVkaWFD
YWNoZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjp1cGRhdGVTbmFwc2hv
dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmg6CisgICAg
ICAgICogcmVwbGF5L1NlcmlhbGl6YXRpb25NZXRob2RzLmNwcDoKKyAgICAgICAgKEpTQzo6RW5j
b2RpbmdUcmFpdHM8U2VjdXJpdHlPcmlnaW4+OjpkZWNvZGVWYWx1ZSk6CisgICAgICAgICogc3Zn
L1NWR0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0RvY3VtZW50OjpTVkdEb2N1
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudDo6Y2xvbmVEb2N1bWVudFdpdGhv
dXRDaGlsZHJlbik6CisgICAgICAgICogc3ZnL1NWR0RvY3VtZW50Lmg6CisgICAgICAgIChXZWJD
b3JlOjpTVkdEb2N1bWVudDo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiB3b3JrZXJzL0Fi
c3RyYWN0V29ya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0V29ya2VyOjpyZXNv
bHZlVVJMKToKKyAgICAgICAgKiB3b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU6OkRlZGljYXRl
ZFdvcmtlckdsb2JhbFNjb3BlKToKKyAgICAgICAgKiB3b3JrZXJzL0RlZGljYXRlZFdvcmtlckds
b2JhbFNjb3BlLmg6CisgICAgICAgICogd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJUaHJlYWQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RGVkaWNhdGVkV29ya2VyVGhyZWFkOjpEZWRpY2F0ZWRXb3Jr
ZXJUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6RGVkaWNhdGVkV29ya2VyVGhyZWFkOjpjcmVh
dGVXb3JrZXJHbG9iYWxTY29wZSk6CisgICAgICAgICogd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJU
aHJlYWQuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXI6Oldvcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXI6OmRpZFJlY2VpdmVS
ZXNwb25zZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXIuaDoKKyAgICAgICAgKiB3b3JrZXJz
L1dvcmtlckdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNj
b3BlOjpXb3JrZXJHbG9iYWxTY29wZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJHbG9iYWxT
Y29wZS5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyTG9jYXRpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyTG9jYXRpb246Om9yaWdpbik6CisgICAgICAgICogd29ya2Vycy9Xb3Jr
ZXJMb2NhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTG9jYXRpb246OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJMb2NhdGlvbjo6dXJsKToKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlckxvY2F0aW9uOjpXb3JrZXJMb2NhdGlvbik6CisgICAgICAgICogd29ya2Vycy9X
b3JrZXJMb2NhdGlvbi5pZGw6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94
eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdpbmdQcm94eTo6c3RhcnRXb3Jr
ZXJHbG9iYWxTY29wZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkOjpXb3JrZXJUaHJlYWQpOgorICAgICAgICAqIHdv
cmtlcnMvV29ya2VyVGhyZWFkLmg6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWQ6OnNj
aGVtZVJlZ2lzdHJ5KToKKyAgICAgICAgKiB4bWwvRE9NUGFyc2VyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRPTVBhcnNlcjo6cGFyc2VGcm9tU3RyaW5nKToKKyAgICAgICAgKiB4bWwvWE1MSHR0
cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNl
WE1MKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXF1ZXN0KToK
KyAgICAgICAgKiB4bWwvWFNMVFByb2Nlc3Nvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYU0xU
UHJvY2Vzc29yOjpjcmVhdGVEb2N1bWVudEZyb21Tb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6
WFNMVFByb2Nlc3Nvcjo6dHJhbnNmb3JtVG9Eb2N1bWVudCk6CisgICAgICAgICogeG1sL1hTTFRQ
cm9jZXNzb3IuaDoKKyAgICAgICAgKiB4bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6ZG9jTG9hZGVyRnVuYyk6CisgICAgICAgICogeG1sL3BhcnNlci9YTUxE
b2N1bWVudFBhcnNlckxpYnhtbDIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkQWxsb3dF
eHRlcm5hbExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6b3BlbkZ1bmMpOgorCiAyMDE2LTExLTA0
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
TW92ZSBpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wgZnJvbSBVUkxQYXJzZXIuY3BwIGJhY2sgdG8g
VVJMLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIwODM5OCkKKysrIFNv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yMDQ5LDYgKzIw
NDksNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGFnZS9QYWdlR3JvdXBMb2FkRGVmZXJy
ZXIuY3BwCiAgICAgcGFnZS9QYWdlT3ZlcmxheS5jcHAKICAgICBwYWdlL1BhZ2VPdmVybGF5Q29u
dHJvbGxlci5jcHAKKyAgICBwYWdlL1BhZ2VTY2hlbWVSZWdpc3RyeS5jcHAKICAgICBwYWdlL1Bh
Z2VTZXJpYWxpemVyLmNwcAogICAgIHBhZ2UvUGFnZVZpc2liaWxpdHlTdGF0ZS5jcHAKICAgICBw
YWdlL1BlcmZvcm1hbmNlLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaFJlcXVlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hSZXF1ZXN0LmNwcAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTEsNyAr
MTUxLDcgQEAgc3RhdGljIE9wdGlvbmFsPEV4Y2VwdGlvbj4gc2V0UmVmZXJyZXIoRgogICAgICAg
ICByZXR1cm4gTnVsbG9wdDsKICAgICB9CiAKLSAgICBpZiAoIShjb250ZXh0LnNlY3VyaXR5T3Jp
Z2luKCkgJiYgY29udGV4dC5zZWN1cml0eU9yaWdpbigpLT5jYW5SZXF1ZXN0KHJlZmVycmVyVVJM
KSkpCisgICAgaWYgKCEoY29udGV4dC5zZWN1cml0eU9yaWdpbigpICYmIGNvbnRleHQuc2VjdXJp
dHlPcmlnaW4oKS0+Y2FuUmVxdWVzdChyZWZlcnJlclVSTCwgY29udGV4dC5zY2hlbWVSZWdpc3Ry
eSgpKSkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsIEFTQ0lJTGl0ZXJh
bCgiUmVmZXJyZXIgaXMgbm90IHNhbWUtb3JpZ2luLiIpIH07CiAKICAgICByZXF1ZXN0LnJlZmVy
cmVyID0gcmVmZXJyZXJVUkwuc3RyaW5nKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5jcHAJKHJl
dmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRh
dGFiYXNlSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNp
ZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKKyNp
bmNsdWRlICJQYWdlU2NoZW1lUmVnaXN0cnkuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5o
IgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
QEAgLTYzLDEzICs2NCwxMyBAQCBTdHJpbmcgSURCRGF0YWJhc2VJZGVudGlmaWVyOjpkYXRhYmFz
ZURpCiAKIFN0cmluZyBJREJEYXRhYmFzZUlkZW50aWZpZXI6OmRhdGFiYXNlRGlyZWN0b3J5UmVs
YXRpdmVUb1Jvb3QoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiB0b3BMZXZlbE9yaWdpbiwgY29u
c3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcGVuaW5nT3JpZ2luLCBjb25zdCBTdHJpbmcmIHJvb3RE
aXJlY3RvcnkpCiB7Ci0gICAgU3RyaW5nIG1haW5GcmFtZURpcmVjdG9yeSA9IHBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChyb290RGlyZWN0b3J5LCB0b3BMZXZlbE9yaWdpbi5zZWN1cml0eU9yaWdp
bigpLT5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgU3RyaW5nIG1haW5GcmFtZURpcmVjdG9y
eSA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyb290RGlyZWN0b3J5LCB0b3BMZXZlbE9yaWdp
bi5zZWN1cml0eU9yaWdpbihQYWdlU2NoZW1lUmVnaXN0cnk6OmNyZWF0ZSgpKS0+ZGF0YWJhc2VJ
ZGVudGlmaWVyKCkpOwogCiAgICAgLy8gSWYgdGhlIG9wZW5pbmcgb3JpZ2luIGFuZCBtYWluIGZy
YW1lIG9yaWdpbnMgYXJlIHRoZSBzYW1lLCB0aGVyZSBpcyBubyBwYXJ0aXRpb25pbmcuCiAgICAg
aWYgKG9wZW5pbmdPcmlnaW4gPT0gdG9wTGV2ZWxPcmlnaW4pCiAgICAgICAgIHJldHVybiBtYWlu
RnJhbWVEaXJlY3Rvcnk7CiAKLSAgICByZXR1cm4gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1h
aW5GcmFtZURpcmVjdG9yeSwgb3BlbmluZ09yaWdpbi5zZWN1cml0eU9yaWdpbigpLT5kYXRhYmFz
ZUlkZW50aWZpZXIoKSk7CisgICAgcmV0dXJuIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtYWlu
RnJhbWVEaXJlY3RvcnksIG9wZW5pbmdPcmlnaW4uc2VjdXJpdHlPcmlnaW4oUGFnZVNjaGVtZVJl
Z2lzdHJ5OjpjcmVhdGUoKSktPmRhdGFiYXNlSWRlbnRpZmllcigpKTsKIH0KIAogI2lmICFMT0df
RElTQUJMRUQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9J
REJTZXJ2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIklEQlJlc3VsdERhdGEuaCIKICNpbmNsdWRl
ICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVtb3J5SURCQmFja2luZ1N0b3JlLmgiCisjaW5jbHVk
ZSAiUGFnZVNjaGVtZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiU1FMaXRlRmlsZVN5c3RlbS5oIgog
I2luY2x1ZGUgIlNRTGl0ZUlEQkJhY2tpbmdTdG9yZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3Jp
Z2luLmgiCkBAIC02NTEsNyArNjUyLDcgQEAgdm9pZCBJREJTZXJ2ZXI6OnBlcmZvcm1DbG9zZUFu
ZERlbGV0ZURhdAogewogICAgIGlmICghbV9kYXRhYmFzZURpcmVjdG9yeVBhdGguaXNFbXB0eSgp
KSB7CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luIDogb3JpZ2lucykgewotICAgICAg
ICAgICAgU3RyaW5nIG9yaWdpblBhdGggPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9kYXRh
YmFzZURpcmVjdG9yeVBhdGgsIG9yaWdpbi5zZWN1cml0eU9yaWdpbigpLT5kYXRhYmFzZUlkZW50
aWZpZXIoKSk7CisgICAgICAgICAgICBTdHJpbmcgb3JpZ2luUGF0aCA9IHBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChtX2RhdGFiYXNlRGlyZWN0b3J5UGF0aCwgb3JpZ2luLnNlY3VyaXR5T3JpZ2lu
KFBhZ2VTY2hlbWVSZWdpc3RyeTo6Y3JlYXRlKCkpLT5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CiAg
ICAgICAgICAgICByZW1vdmVBbGxEYXRhYmFzZXNGb3JPcmlnaW5QYXRoKG9yaWdpblBhdGgsIHN0
ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ6Om1pbigpKTsKICAgICAgICAgfQog
ICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VU
cmFja2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlVHJhY2tlci5jcHAJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJPcmln
aW5Mb2NrLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlBhZ2VTY2hlbWVSZWdpc3Ry
eS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmln
aW5IYXNoLmgiCiAjaW5jbHVkZSAiU1FMaXRlRmlsZVN5c3RlbS5oIgpAQCAtNDEyLDcgKzQxMyw3
IEBAIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpvcmlnaW5zKFZlY3RvcjxSZWYKIAogICAgIGludCBy
ZXN1bHQ7CiAgICAgd2hpbGUgKChyZXN1bHQgPSBzdGF0ZW1lbnQuc3RlcCgpKSA9PSBTUUxJVEVf
Uk9XKSB7Ci0gICAgICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gU2VjdXJpdHlP
cmlnaW46OmNyZWF0ZUZyb21EYXRhYmFzZUlkZW50aWZpZXIoc3RhdGVtZW50LmdldENvbHVtblRl
eHQoMCkpOworICAgICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IFNlY3VyaXR5
T3JpZ2luOjpjcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyKHN0YXRlbWVudC5nZXRDb2x1bW5U
ZXh0KDApLCBQYWdlU2NoZW1lUmVnaXN0cnk6OmNyZWF0ZSgpKTsKICAgICAgICAgb3JpZ2luc1Jl
c3VsdC5hcHBlbmQob3JpZ2luLT5pc29sYXRlZENvcHkoKSk7CiAgICAgfQogICAgIG9yaWdpbnNS
ZXN1bHQuc2hyaW5rVG9GaXQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29j
a2V0cy9XZWJTb2NrZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDcsNiArNDcsNyBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgog
I2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgorI2luY2x1ZGUgIlBhZ2VTY2hlbWVSZWdpc3RyeS5o
IgogI2luY2x1ZGUgIlJlc291cmNlTG9hZE9ic2VydmVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29u
dHJvbGxlci5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKQEAgLTE1MCw2
ICsxNTEsNyBAQCBXZWJTb2NrZXQ6OldlYlNvY2tldChTY3JpcHRFeGVjdXRpb25Db250CiAgICAg
LCBtX3N1YnByb3RvY29sKGVtcHR5U3RyaW5nKCkpCiAgICAgLCBtX2V4dGVuc2lvbnMoZW1wdHlT
dHJpbmcoKSkKICAgICAsIG1fcmVzdW1lVGltZXIoKnRoaXMsICZXZWJTb2NrZXQ6OnJlc3VtZVRp
bWVyRmlyZWQpCisgICAgLCBtX3NjaGVtZVJlZ2lzdHJ5KGNvbnRleHQuc2NoZW1lUmVnaXN0cnko
KSkKIHsKIH0KIApAQCAtNTU5LDcgKzU2MSw3IEBAIHZvaWQgV2ViU29ja2V0OjpkaWRSZWNlaXZl
TWVzc2FnZShjb25zdCAKICAgICBpZiAobV9zdGF0ZSAhPSBPUEVOKQogICAgICAgICByZXR1cm47
CiAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Ci0gICAgZGlzcGF0Y2hFdmVu
dChNZXNzYWdlRXZlbnQ6OmNyZWF0ZShtc2csIFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUobV91cmwp
LT50b1N0cmluZygpKSk7CisgICAgZGlzcGF0Y2hFdmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZSht
c2csIFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUobV91cmwsIG1fc2NoZW1lUmVnaXN0cnkuZ2V0KCkp
LT50b1N0cmluZygpKSk7CiB9CiAKIHZvaWQgV2ViU29ja2V0OjpkaWRSZWNlaXZlQmluYXJ5RGF0
YShWZWN0b3I8dWludDhfdD4mJiBiaW5hcnlEYXRhKQpAQCAtNTY4LDEwICs1NzAsMTAgQEAgdm9p
ZCBXZWJTb2NrZXQ6OmRpZFJlY2VpdmVCaW5hcnlEYXRhKFZlYwogICAgIHN3aXRjaCAobV9iaW5h
cnlUeXBlKSB7CiAgICAgY2FzZSBCaW5hcnlUeXBlOjpCbG9iOgogICAgICAgICAvLyBGSVhNRTog
V2UganVzdCByZWNlaXZlZCB0aGUgZGF0YSBmcm9tIE5ldHdvcmtQcm9jZXNzLCBhbmQgYXJlIHNl
bmRpbmcgaXQgYmFjay4gVGhpcyBpcyBpbmVmZmljaWVudC4KLSAgICAgICAgZGlzcGF0Y2hFdmVu
dChNZXNzYWdlRXZlbnQ6OmNyZWF0ZShCbG9iOjpjcmVhdGUoV1RGTW92ZShiaW5hcnlEYXRhKSwg
ZW1wdHlTdHJpbmcoKSksIFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUobV91cmwpLT50b1N0cmluZygp
KSk7CisgICAgICAgIGRpc3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVhdGUoQmxvYjo6Y3Jl
YXRlKFdURk1vdmUoYmluYXJ5RGF0YSksIGVtcHR5U3RyaW5nKCkpLCBTZWN1cml0eU9yaWdpbjo6
Y3JlYXRlKG1fdXJsLCBtX3NjaGVtZVJlZ2lzdHJ5LmdldCgpKS0+dG9TdHJpbmcoKSkpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIEJpbmFyeVR5cGU6OkFycmF5QnVmZmVyOgotICAgICAgICBk
aXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKEFycmF5QnVmZmVyOjpjcmVhdGUoYmlu
YXJ5RGF0YS5kYXRhKCksIGJpbmFyeURhdGEuc2l6ZSgpKSwgU2VjdXJpdHlPcmlnaW46OmNyZWF0
ZShtX3VybCktPnRvU3RyaW5nKCkpKTsKKyAgICAgICAgZGlzcGF0Y2hFdmVudChNZXNzYWdlRXZl
bnQ6OmNyZWF0ZShBcnJheUJ1ZmZlcjo6Y3JlYXRlKGJpbmFyeURhdGEuZGF0YSgpLCBiaW5hcnlE
YXRhLnNpemUoKSksIFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUobV91cmwsIG1fc2NoZW1lUmVnaXN0
cnkuZ2V0KCkpLT50b1N0cmluZygpKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmgJKHJldmlz
aW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXQuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQCBjbGFzcyBBcnJheUJ1ZmZlclZp
ZXc7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJsb2I7CitjbGFzcyBQYWdlU2NoZW1l
UmVnaXN0cnk7CiBjbGFzcyBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDsKIAogY2xhc3MgV2Vi
U29ja2V0IGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViU29ja2V0PiwgcHVibGljIEV2ZW50
VGFyZ2V0V2l0aElubGluZURhdGEsIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHByaXZhdGUgV2Vi
U29ja2V0Q2hhbm5lbENsaWVudCB7CkBAIC0xNDAsNiArMTQxLDggQEAgcHJpdmF0ZToKICAgICBi
b29sIG1fc2hvdWxkRGVsYXlFdmVudEZpcmluZyB7IGZhbHNlIH07CiAgICAgRGVxdWU8UmVmPEV2
ZW50Pj4gbV9wZW5kaW5nRXZlbnRzOwogICAgIGJvb2wgbV9kaXNwYXRjaGVkRXJyb3JFdmVudCB7
IGZhbHNlIH07CisKKyAgICBSZWY8Y29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5PiBtX3NjaGVtZVJl
Z2lzdHJ5OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjA4
Mzk4KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC0xNTY0LDEwICsxNTY0LDEwIEBACiAJCTQxNjJBNDU3MTAxMTQ2
NDcwMERGRjNFRCAvKiBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNjJBNDU1MTAxMTQ2NDcwMERG
RjNFRCAvKiBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNwcCAqLzsgfTsKIAkJNDE2MkE0
NTgxMDExNDY0NzAwREZGM0VEIC8qIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNjJBNDU2MTAxMTQ2
NDcwMERGRjNFRCAvKiBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmggKi87IH07CiAJCTQx
NkUyOUE2MTAyRkE5NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBvcnRpbmdQcm94eS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2RTI5QTUxMDJGQTk2MjAw
N0ZDMTRFIC8qIFdvcmtlclJlcG9ydGluZ1Byb3h5LmggKi87IH07CisJCTQxNkU2RkU4MUJCRDEy
REYwMDBBM0Y2NCAvKiBSZWFkYWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFCQjMxMTBEMDBC
NzY0RDkgLyogUmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNkU2RkU4MUJCRDEyREYwMDBB
NjAyMyAvKiBGZXRjaEludGVybmFsc0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFCQjMxMTBEMDBCNzY0QjkgLyogRmV0Y2hJ
bnRlcm5hbHNCdWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTQxNkU2RkU4MUJCRDEyREYwMDBBNjAzMyAvKiBTdHJlYW1JbnRlcm5hbHNC
dWlsdGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OUIwM0Q4MDYxQkIzMTEwRDAwQjc2NEM5IC8qIFN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNDE2RTZGRTgx
QkJEMTJERjAwMEEzRjY0IC8qIFJlYWRhYmxlQnl0ZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFC
QjMxMTBEMDBCNzY0RDkgLyogUmVhZGFibGVCeXRlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk0MTZFNkZF
ODFCQkQxMkRGMDAwQTYwNDMgLyogUmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwM0Q4MDYxQkIz
MTEwRDAwQjczRjY0IC8qIFJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0MTZFNkZFODFCQkQx
MkRGMDAwQTYwNDMgLyogUmVhZGFibGVCeXRlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDNEODA2MUJCMzEx
MEQwMEI3M0Y2NCAvKiBSZWFkYWJsZUJ5dGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNkU2RkU4MUJC
RDEyREYwMDBBNjA1MyAvKiBXcml0YWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFCQjMxMTBE
MDBCNzY0RTkgLyogV3JpdGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNkU2RkU5MUJCRDEyRTUw
MDBBNjA0MyAvKiBSZWFkYWJsZVN0cmVhbUJ1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFCQjMxMTBEMDBCNzY0RDggLyogUmVh
ZGFibGVTdHJlYW1CdWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTQxNkU2RkU5MUJCRDEyRTUwMDBBNjA1MyAvKiBXcml0YWJsZVN0cmVh
bUJ1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5QjAzRDgwNjFCQjMxMTBEMDBCNzY0RTggLyogV3JpdGFibGVTdHJlYW1CdWlsdGlucy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yNDA2LDYg
KzI0MDYsOCBAQAogCQk1QjMwNjk1RTE4QjNEMzQ1MDA5OUQ1RTggLyogV2ViR0xEcmF3QnVmZmVy
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUIzMDY5
NUIxOEIzRDM0NTAwOTlENUU4IC8qIFdlYkdMRHJhd0J1ZmZlcnMuaCAqLzsgfTsKIAkJNUI3QTIw
OEQyRTEyOTc5QjRBRTE5REU2IC8qIFJlbmRlck1hdGhNTFNwYWNlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERCRkNCMEVCRkY1Q0Q3N0VCRUIzNTM5
NSAvKiBSZW5kZXJNYXRoTUxTcGFjZS5jcHAgKi87IH07CiAJCTVCN0EyMDhEMkUxMjk3OUI0QUUx
OUU2RiAvKiBSZW5kZXJNYXRoTUxQYWRkZWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gREJGQ0IwRUJGRjVDRDc3RUJFQjM1OTVGIC8qIFJlbmRlck1h
dGhNTFBhZGRlZC5jcHAgKi87IH07CisJCTVDMkY0ODFBMURDRTY2MUIwMEE2NjIyNiAvKiBQYWdl
U2NoZW1lUmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNUMyRjQ4MTgxRENFNjU4MTAwQTY2MjI2IC8qIFBhZ2VTY2hlbWVSZWdpc3RyeS5j
cHAgKi87IH07CisJCTVDMkY0ODFCMUREMTc0RDQwMEE2NjIyNiAvKiBQYWdlU2NoZW1lUmVnaXN0
cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMkY0
ODE5MURDRTY1ODEwMEE2NjIyNiAvKiBQYWdlU2NoZW1lUmVnaXN0cnkuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1QzNDODU2RDFENUE3QURFMDA4
OEI5RUMgLyogTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDM0M4NTZDMUQ1QTdBRDMwMDg4QjlFQyAvKiBOZXR3
b3JrU3RvcmFnZVNlc3Npb24uY3BwICovOyB9OwogCQk1QzQzMDRCMDE5MUFDOTA4MDAwRTJCQzAg
LyogRVhUU2hhZGVyVGV4dHVyZUxPRC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1QzQzMDRBRDE5MUFDOTA4MDAwRTJCQzAgLyogRVhUU2hhZGVyVGV4
dHVyZUxPRC5jcHAgKi87IH07CiAJCTVDNDMwNEIxMTkxQUM5MDgwMDBFMkJDMCAvKiBFWFRTaGFk
ZXJUZXh0dXJlTE9ELmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1QzQzMDRBRTE5MUFDOTA4MDAwRTJCQzAgLyogRVhUU2hhZGVyVGV4dHVyZUxPRC5oICov
OyB9OwpAQCAtMjU5MCw4ICsyNTkyLDggQEAKIAkJNkI2OTNBMkUxQzUxQTgyRTAwQjAzQkVGIC8q
IFJlc291cmNlTG9hZE9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA2QjY5M0EyRDFDNTFBODJFMDBCMDNCRUYgLyogUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk2QjY5M0EzNDFDNTFBOTVEMDBCMDNCRUYgLyogUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkI2OTNBMzMxQzUx
QTk1RDAwQjAzQkVGIC8qIFJlc291cmNlTG9hZE9ic2VydmVyLmNwcCAqLzsgfTsKIAkJNkM0Qzk2
REUxQUQ0NDgzNTAwMzYzRjY0IC8qIEpTUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzRDOTZEQTFB
RDQ0ODM1MDAzNjNGNjQgLyogSlNSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyLmNwcCAqLzsg
fTsKLQkJNkM0Qzk2REYxQUQ0NDgzNTAwMzYzRjY0IC8qIEpTUmVhZGFibGVCeXRlU3RyZWFtQ29u
dHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NkM0Qzk2REIxQUQ0NDgzNTAwMzYzRjY0IC8qIEpTUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxl
ci5oICovOyB9OwogCQk2QzRDOTZERTFBRDQ0ODM1MDAzNjVBNTAgLyogSlNSZWFkYWJsZVN0cmVh
bURlZmF1bHRDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDZDNEM5NkRBMUFENDQ4MzUwMDM2NUE1MCAvKiBKU1JlYWRhYmxlU3RyZWFt
RGVmYXVsdENvbnRyb2xsZXIuY3BwICovOyB9OworCQk2QzRDOTZERjFBRDQ0ODM1MDAzNjNGNjQg
LyogSlNSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzRDOTZEQjFBRDQ0ODM1MDAzNjNGNjQgLyogSlNS
ZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyLmggKi87IH07CiAJCTZDNEM5NkRGMUFENDQ4MzUw
MDM2NUE1MCAvKiBKU1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNEM5NkRCMUFENDQ4MzUwMDM2
NUE1MCAvKiBKU1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuaCAqLzsgfTsKIAkJNkM2
Mzg4OTVBOTZDQ0VFNTBDOEM5NDZDIC8qIENhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNjM4ODkz
QTk2Q0NFRTUwQzhDOTQ2QyAvKiBDYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNkM2Mzg4OTZB
OTZDQ0VFNTBDOEM5NDZDIC8qIENhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM2Mzg4OTRBOTZD
Q0VFNTBDOEM5NDZDIC8qIENhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMuY3BwICovOyB9
OwpAQCAtOTU3MSw2ICs5NTczLDggQEAKIAkJNUIzMDY5NUExOEIzRDM0NTAwOTlENUU4IC8qIFdl
YkdMRHJhd0J1ZmZlcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V2ViR0xEcmF3QnVmZmVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVCMzA2
OTVCMThCM0QzNDUwMDk5RDVFOCAvKiBXZWJHTERyYXdCdWZmZXJzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdMRHJhd0J1ZmZlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNUIzMDY5NUMxOEIzRDM0NTAwOTlENUU4IC8qIFdlYkdMRHJhd0J1ZmZlcnMu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdMRHJhd0J1ZmZlcnMuaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1QzJGNDgxODFEQ0U2NTgxMDBBNjYyMjYgLyogUGFnZVNj
aGVtZVJlZ2lzdHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBh
Z2VTY2hlbWVSZWdpc3RyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDMkY0
ODE5MURDRTY1ODEwMEE2NjIyNiAvKiBQYWdlU2NoZW1lUmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUGFnZVNjaGVtZVJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTVDMzkzMDVEMUFBMEY2QTkwMDI5QzgxNiAvKiBERkFCeXRlY29kZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBERkFCeXRlY29kZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1QzM5MzA1RTFBQTBGNkE5MDAyOUM4MTYgLyogREZBQnl0
ZWNvZGVDb21waWxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBE
RkFCeXRlY29kZUNvbXBpbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUMz
OTMwNUYxQUEwRjZBOTAwMjlDODE2IC8qIERGQUJ5dGVjb2RlQ29tcGlsZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gREZBQnl0ZWNvZGVDb21waWxlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtOTc4Miw4ICs5Nzg2LDggQEAKIAkJNkI2OTNBMkQxQzUxQTgy
RTAwQjAzQkVGIC8qIFJlc291cmNlTG9hZE9ic2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlc291cmNlTG9hZE9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTZCNjkzQTMzMUM1MUE5NUQwMEIwM0JFRiAvKiBSZXNvdXJjZUxvYWRPYnNlcnZl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXNvdXJjZUxvYWRP
YnNlcnZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZDNEM5NkRBMUFENDQ4
MzUwMDM2M0Y2NCAvKiBKU1JlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9s
bGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNkM0Qzk2REIxQUQ0NDgzNTAw
MzYzRjY0IC8qIEpTUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU1JlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkM0Qzk2REExQUQ0NDgzNTAwMzY1QTUwIC8qIEpT
UmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QzRDOTZEQjFBRDQ0ODM1MDAzNjNGNjQgLyog
SlNSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk2QzRDOTZEQjFBRDQ0ODM1MDAzNjVBNTAgLyogSlNSZWFkYWJsZVN0
cmVhbURlZmF1bHRDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk2QzYzODg5M0E5NkNDRUU1MEM4Qzk0NkMgLyogQ2FjaGVkUmVzb3VyY2VSZXF1
ZXN0SW5pdGlhdG9ycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVk
UmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk2QzYzODg5NEE5NkNDRUU1MEM4Qzk0NkMgLyogQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlh
dG9ycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FjaGVkUmVz
b3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xMTE3NSw4ICsxMTE3OSw4IEBACiAJCTk5MDhCMEYwMUJDQUNGOTEwMEVEM0Y2NCAvKiBSZWFk
YWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2Ny
aXB0OyBwYXRoID0gUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlci5qczsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTkwOEIwRjExQkNBQ0Y5MTAwRUQwRjU1IC8qIFN0cmVhbUludGVy
bmFscy5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IFN0cmVhbUlu
dGVybmFscy5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTkwOEIwRjExQkNBQ0Y5
MTAwRUQwRjY1IC8qIFJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzLmpzICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5qYXZhc2NyaXB0OyBwYXRoID0gUmVhZGFibGVTdHJlYW1JbnRlcm5hbHMuanM7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTk5MDhCMEYxMUJDQUNGOTEwMEVEM0Y2NCAvKiBSZWFk
YWJsZUJ5dGVTdHJlYW1JbnRlcm5hbHMuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3Jp
cHQ7IHBhdGggPSBSZWFkYWJsZUJ5dGVTdHJlYW1JbnRlcm5hbHMuanM7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTk5MDhCMEYxMUJDQUNGOTEwMEVEMEY3NSAvKiBXcml0YWJsZVN0cmVh
bUludGVybmFscy5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IFdy
aXRhYmxlU3RyZWFtSW50ZXJuYWxzLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5
OTA4QjBGMTFCQ0FDRjkxMDBFRDNGNjQgLyogUmVhZGFibGVCeXRlU3RyZWFtSW50ZXJuYWxzLmpz
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gUmVhZGFibGVCeXRlU3Ry
ZWFtSW50ZXJuYWxzLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTA4QjBGMjFC
Q0FDRjkxMDBFRDBGNjUgLyogUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyLmpzICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVh
ZGVyLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTA4QjBGMzFCQ0FDRkZFMDBF
RDBGNjUgLyogQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5zLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3lCdWls
dGlucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5MDhCMEY1MUJDQUQwN0Qw
MEVEMEY2NSAvKiBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5QnVpbHRpbnMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5z
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTE4NCwxNSArMTExODgsMTMgQEAK
IAkJOTkwOEIwRjcxQkNBRDA3RDAwRUQwRjY1IC8qIENvdW50UXVldWluZ1N0cmF0ZWd5QnVpbHRp
bnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ291bnRRdWV1aW5nU3RyYXRl
Z3lCdWlsdGlucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTA4QjBGOTFCQ0FE
MDdEMDBFRDBGNjUgLyogUmVhZGFibGVTdHJlYW1CdWlsdGlucy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWFkYWJsZVN0cmVhbUJ1aWx0aW5zLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTkwOEIwRjkxQkNBRDA3RDAwRUQwRjc1IC8qIFdyaXRh
YmxlU3RyZWFtQnVpbHRpbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV3JpdGFibGVTdHJlYW1CdWlsdGlucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTk5MDhCMEZBMUJDQUQwN0QwMEVEM0Y2NCAvKiBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9s
bGVyQnVpbHRpbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVh
ZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlckJ1aWx0aW5zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJOTkwOEIwRkIxQkNBRDA3RDAwRUQzRjY0IC8qIFJlYWRhYmxlQnl0ZVN0cmVh
bUNvbnRyb2xsZXJCdWlsdGlucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
ZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyQnVpbHRpbnMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTkwOEIwRkExQkNBRDA3RDAwRUQwRjY1IC8qIFJlYWRhYmxlU3RyZWFtRGVm
YXVsdENvbnRyb2xsZXJCdWlsdGlucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyQnVpbHRpbnMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTA4QjBGQjFCQ0FEMDdEMDBFRDBGNjUgLyogUmVh
ZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlckJ1aWx0aW5zLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXJCdWlsdGlucy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTA4QjBGRDFCQ0FEMDdEMDBFRDBGNDUg
LyogRmV0Y2hJbnRlcm5hbHNCdWlsdGlucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBGZXRjaEludGVybmFsc0J1aWx0aW5zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTkwOEIwRkQxQkNBRDA3RDAwRUQwRjU1IC8qIFN0cmVhbUludGVybmFsc0J1
aWx0aW5zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cmVhbUlu
dGVybmFsc0J1aWx0aW5zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTkwOEIw
RkQxQkNBRDA3RDAwRUQzRjY0IC8qIFJlYWRhYmxlQnl0ZVN0cmVhbUludGVybmFsc0J1aWx0aW5z
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlYWRhYmxlQnl0ZVN0
cmVhbUludGVybmFsc0J1aWx0aW5zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTkwOEIwRkQxQkNBRDA3RDAwRUQwRjY1IC8qIFJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRp
bnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVhZGFibGVTdHJl
YW1JbnRlcm5hbHNCdWlsdGlucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5
MDhCMEZEMUJDQUQwN0QwMEVEMEY3NSAvKiBXcml0YWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5z
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdyaXRhYmxlU3RyZWFt
SW50ZXJuYWxzQnVpbHRpbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OTA4
QjBGRDFCQ0FEMDdEMDBFRDNGNjQgLyogUmVhZGFibGVCeXRlU3RyZWFtSW50ZXJuYWxzQnVpbHRp
bnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVhZGFibGVCeXRl
U3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5OTA4QjBGRTFCQ0FEMDdEMDBFRDBGNjUgLyogUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVy
QnVpbHRpbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVhZGFi
bGVTdHJlYW1EZWZhdWx0UmVhZGVyQnVpbHRpbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5OTA4QjBGRjFCQ0FEMDdEMDBFRDBGNjUgLyogUmVhZGFibGVTdHJlYW1EZWZhdWx0
UmVhZGVyQnVpbHRpbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVhZGFi
bGVTdHJlYW1EZWZhdWx0UmVhZGVyQnVpbHRpbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTkyMDM5ODAxOEI5NUJDNjAwQjM5QUY5IC8qIFVzZXJJbnB1dEJyaWRnZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVc2VySW5wdXRCcmlkZ2UuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTEyMzAsMTAgKzExMjMyLDEwIEBACiAJCTlB
NTI4RTgyMTdEN0Y1MkYwMEFBOTUxOCAvKiBGbG9hdGluZ09iamVjdHMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRmxvYXRpbmdPYmplY3RzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTlBQjFGMzdFMThFMjQ4OUEwMDUzNDc0MyAvKiBDU1NUb0xlbmd0aENvbnZl
cnNpb25EYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU1RvTGVuZ3Ro
Q29udmVyc2lvbkRhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUFCMUYzN0Yx
OEUyNDg5QTAwNTM0NzQzIC8qIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlCMDNEODA2MUJCMzExMEQwMEI3M0Y2
NCAvKiBSZWFkYWJsZUJ5dGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZWFkYWJsZUJ5dGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjAzRDgwNjFCQjMxMTBEMDBCNzY0Qjkg
LyogRmV0Y2hJbnRlcm5hbHNCdWlsdGlucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBGZXRjaEludGVybmFsc0J1aWx0aW5zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTlCMDNEODA2MUJCMzExMEQwMEI3NjRDOSAvKiBTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJlYW1JbnRlcm5hbHNCdWlsdGlu
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjAzRDgwNjFCQjMxMTBEMDBCNzY0
RDggLyogUmVhZGFibGVTdHJlYW1CdWlsdGlucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZWFkYWJsZVN0cmVhbUJ1aWx0aW5zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTlCMDNEODA2MUJCMzExMEQwMEI3M0Y2NCAvKiBSZWFkYWJsZUJ5dGVTdHJlYW1JbnRl
cm5hbHNCdWlsdGlucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWFkYWJs
ZUJ5dGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5QjAzRDgwNjFCQjMxMTBEMDBCNzY0RDkgLyogUmVhZGFibGVTdHJlYW1JbnRlcm5hbHNC
dWlsdGlucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWFkYWJsZVN0cmVh
bUludGVybmFsc0J1aWx0aW5zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMDNE
ODA2MUJCMzExMEQwMEI3NjRFOCAvKiBXcml0YWJsZVN0cmVhbUJ1aWx0aW5zLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdyaXRhYmxlU3RyZWFtQnVpbHRpbnMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIwM0Q4MDYxQkIzMTEwRDAwQjc2NEU5IC8qIFdyaXRh
YmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV3JpdGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTczMzMsOCArMTczMzUsNiBAQAogCQkJCTQ0QTI4QUFFMTJERkI4QkYw
MEFFOTIzQiAvKiBNYXRoTUxOYW1lcy5oICovLAogCQkJCTcxRTIxODM4MTczNTlGQjgwMDZFNkU0
RCAvKiBQbHVnSW5zUmVzb3VyY2VzLmggKi8sCiAJCQkJNzFFMjE4MzkxNzM1OUZCODAwNkU2RTRE
IC8qIFBsdWdJbnNSZXNvdXJjZXNEYXRhLmNwcCAqLywKLQkJCQk5OTA4QjBGQTFCQ0FEMDdEMDA3
NjNGNjQgLyogUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlckJ1aWx0aW5zLmNwcCAqLywKLQkJ
CQk5OTA4QjBGQjFCQ0FEMDdEMDA3NjNGNjQgLyogUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxl
ckJ1aWx0aW5zLmggKi8sCiAJCQkJOTkwOEIwRkQxQkNBRDA3RDAwRUQzRjY0IC8qIFJlYWRhYmxl
Qnl0ZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmNwcCAqLywKIAkJCQk5QjAzRDgwNjFCQjMxMTBE
MDBCNzNGNjQgLyogUmVhZGFibGVCeXRlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCAqLywKIAkJ
CQk5OTA4QjBGOTFCQ0FEMDdEMDBFRDBGNjUgLyogUmVhZGFibGVTdHJlYW1CdWlsdGlucy5jcHAg
Ki8sCkBAIC0xNzYyMCw2ICsxNzYyMCw4IEBACiAJCTY1QkYwMjE4MDk3NDgwNjMwMEM0MzE5NiAv
KiBwYWdlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk1
QzJGNDgxODFEQ0U2NTgxMDBBNjYyMjYgLyogUGFnZVNjaGVtZVJlZ2lzdHJ5LmNwcCAqLywKKwkJ
CQk1QzJGNDgxOTFEQ0U2NTgxMDBBNjYyMjYgLyogUGFnZVNjaGVtZVJlZ2lzdHJ5LmggKi8sCiAJ
CQkJMzE2RkUxMDYwRTZFMUQ4NDAwQkY2MDg4IC8qIGFuaW1hdGlvbiAqLywKIAkJCQk1RDU5NzVC
NTE5NjM2MkJFMDBEMDA4NzggLyogY29jb2EgKi8sCiAJCQkJQ0UxN0FEMTQxQzU4NTIyRjAwNUY0
Nzk5IC8qIGNzcCAqLywKQEAgLTI1MDc3LDcgKzI1MDc5LDYgQEAKIAkJCQlCQzFCREYyNTE1NkMx
OEM3MDAxQzEyNDMgLyogRE9NRXJyb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTJFRDYwOUJEMTE0
NUIwNzEwMEM4Njg0RSAvKiBET01Gb3JtRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgxODVG
M0IwOTc2NTc2NjAwNTgyNkQ5IC8qIERPTUltcGxlbWVudGF0aW9uLmggaW4gSGVhZGVycyAqLywK
LQkJCQlFMzVDQTE0RTFEQkMzQTQyMDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3Np
dG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMxNTBFQTcxREE3MjE5MzAwMTk0MDEyIC8qIERP
TUpJVEhlbHBlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE5QzZFNEU0MEQ3NDVFMDUwMDY0NDJF
OSAvKiBET01NaW1lVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTlDNkU0RTgwRDc0NUUxODAw
NjQ0MkU5IC8qIERPTU1pbWVUeXBlQXJyYXkuaCBpbiBIZWFkZXJzICovLApAQCAtMjY3OTEsOSAr
MjY3OTIsOSBAQAogCQkJCUY1NUIzRENFMTI1MUYxMkQwMDNFRjI2OSAvKiBSYW5nZUlucHV0VHlw
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkU4NEU5RTExNzY2OEJGMTAwODE1QjY4IC8qIFJhc3Rl
clNoYXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODREODI3QzExRDMzM0VEMDA5NzI5OTAgLyog
UmF3RGF0YURvY3VtZW50UGFyc2VyLmggaW4gSGVhZGVycyAqLywKLQkJCQk0MTZFNkZFODFCQkQx
MkRGMDAwQTNGNjQgLyogUmVhZGFibGVCeXRlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTQxNkU2RkU4MUJCRDEyREYwMDBBM0Y2NCAvKiBSZWFkYWJsZVN0cmVh
bUludGVybmFsc0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTZFNkZFOTFCQkQxMkU1
MDAwQTYwNDMgLyogUmVhZGFibGVTdHJlYW1CdWlsdGlucy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
NDE2RTZGRTgxQkJEMTJERjAwMEE2MDQzIC8qIFJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRp
bnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxNkU2RkU4MUJCRDEyREYwMDBBNjA0MyAvKiBSZWFk
YWJsZUJ5dGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQz
MTYwM0MxMkIwMjY3NjAwQzFBMzU5IC8qIFJlYWx0aW1lQW5hbHlzZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTRBNEY2NTcxMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0QTRGNjU3MjFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVN
ZWRpYVNvdXJjZUNhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzk1Niw2ICsyNzk1
Nyw3IEBACiAJCQkJNDE2RTZGRTgxQkJEMTJERjAwMEE2MDUzIC8qIFdyaXRhYmxlU3RyZWFtSW50
ZXJuYWxzQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTlCQUYzQjI0MTJDMUEzOTgwMDAx
NEJGMSAvKiBXcml0aW5nRGlyZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDQ3NkFBODE1
REM0QkIxMDAzMDVEQjIgLyogV3JpdGluZ01vZGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTVDMkY0
ODFCMUREMTc0RDQwMEE2NjIyNiAvKiBQYWdlU2NoZW1lUmVnaXN0cnkuaCBpbiBIZWFkZXJzICov
LAogCQkJCTY1NjU4MjAyMDlEMTUwOEQwMDBFNjFENyAvKiBYTGlua05hbWVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk4MzA3ODRCMjFDNTJFRTJDMDAxMDREMUQgLyogWE1MRG9jdW1lbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTAwQjkzMTg4MTNCQThEQkEwMDM1QTk0OCAvKiBYTUxEb2N1bWVudFBh
cnNlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODgzNCw3ICsyODgzNiw2IEBACiAJCQkJQkMxQkRG
MjQxNTZDMTg4MzAwMUMxMjQzIC8qIERPTUVycm9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJF
RDYwOUJDMTE0NUIwNzEwMEM4Njg0RSAvKiBET01Gb3JtRGF0YS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBODE4NUYzRTA5NzY1NzY2MDA1ODI2RDkgLyogRE9NSW1wbGVtZW50YXRpb24uY3BwIGlu
IFNvdXJjZXMgKi8sCi0JCQkJRTM1Q0ExNEQxREJDM0EzRjAwRjgzNTE2IC8qIERPTUpJVEFic3Ry
YWN0SGVhcFJlcG9zaXRvcnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTlDNkU0RTMwRDc0NUUw
NTAwNjQ0MkU5IC8qIERPTU1pbWVUeXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE5QzZFNEU3
MEQ3NDVFMTgwMDY0NDJFOSAvKiBET01NaW1lVHlwZUFycmF5LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTUyQjZDOUMyMTVFM0Y0REYwMDY5MEIwNSAvKiBET01OYW1lZEZsb3dDb2xsZWN0aW9uLmNw
cCBpbiBTb3VyY2VzICovLApAQCAtMzA4MzgsNiArMzA4MzksNyBAQAogCQkJCTk3QkM2QTQxMTUw
NUYwODEwMDFCNzRBQyAvKiBTUUxSZXN1bHRTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdC
QzZBNDQxNTA1RjA4MTAwMUI3NEFDIC8qIFNRTFJlc3VsdFNldFJvd0xpc3QuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRkU4QTY3NDcxNkNERDE5RTAwOTMwQkY4IC8qIFNRTFN0YXRlbWVudC5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQk1QzJGNDgxQTFEQ0U2NjFCMDBBNjYyMjYgLyogUGFnZVNjaGVt
ZVJlZ2lzdHJ5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3QkM2QTRGMTUwNUYwODEwMDFCNzRB
QyAvKiBTUUxUcmFuc2FjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRUUxODExMzE2QzMx
OUU4MDAwODQ4NDkgLyogU1FMVHJhbnNhY3Rpb25CYWNrZW5kLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTk3QkM2QTU0MTUwNUYwODEwMDFCNzRBQyAvKiBTUUxUcmFuc2FjdGlvbkNsaWVudC5jcHAg
aW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0N1c3RvbS5jcHAJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIz
LDcgKzUyMywxMCBAQCBzdGF0aWMgSlNWYWx1ZSBoYW5kbGVQb3N0TWVzc2FnZShET01XaW5kCiAg
ICAgU3RyaW5nIHRhcmdldE9yaWdpbiA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMVVNWU3RyaW5n
Pj4oc3RhdGUsIHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KHRhcmdldE9yaWdpbkFyZ0luZGV4KSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKIAotICAgIHByb3Bh
Z2F0ZUV4Y2VwdGlvbihzdGF0ZSwgc2NvcGUsIGltcGwucG9zdE1lc3NhZ2UobWVzc2FnZS5yZWxl
YXNlTm9uTnVsbCgpLCBXVEZNb3ZlKG1lc3NhZ2VQb3J0cyksIHRhcmdldE9yaWdpbiwgY2FsbGVy
RE9NV2luZG93KCZzdGF0ZSkpKTsKKyAgICBhdXRvKiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0g
anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUubGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgcHJvcGFnYXRlRXhjZXB0aW9u
KHN0YXRlLCBzY29wZSwgaW1wbC5wb3N0TWVzc2FnZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwg
bWVzc2FnZS5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKG1lc3NhZ2VQb3J0cyksIHRhcmdldE9y
aWdpbiwgY2FsbGVyRE9NV2luZG93KCZzdGF0ZSkpKTsKIAogICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcAkocmV2aXNpb24g
MjA4Mzk4KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNjAsNyArMjYwLDcgQEAgYm9vbCBDU1NTdHlsZVNoZWV0OjpjYW5BY2Nlc3NS
dWxlcygpIGNvbgogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG93bmVyRG9jdW1lbnQoKTsKICAg
ICBpZiAoIWRvY3VtZW50KQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gZG9jdW1l
bnQtPnNlY3VyaXR5T3JpZ2luKCktPmNhblJlcXVlc3QoYmFzZVVSTCk7CisgICAgcmV0dXJuIGRv
Y3VtZW50LT5zZWN1cml0eU9yaWdpbigpLT5jYW5SZXF1ZXN0KGJhc2VVUkwsIGRvY3VtZW50LT5z
Y2hlbWVSZWdpc3RyeSgpKTsKIH0KIAogUmVmUHRyPENTU1J1bGVMaXN0PiBDU1NTdHlsZVNoZWV0
OjpydWxlcygpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwCShyZXZpc2lvbiAyMDgzOTgpCisr
KyBTb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwMSw3
ICs0MDEsNyBAQCB2b2lkIFJ1bGVTZXQ6OmFkZFJ1bGVzRnJvbVNoZWV0KFN0eWxlU2hlCiAgICAg
ICAgICAgICBhZGRSdWxlc0Zyb21TaGVldCgqcnVsZS0+c3R5bGVTaGVldCgpLCBtZWRpdW0sIHJl
c29sdmVyKTsKICAgICB9CiAKLSAgICBib29sIGhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4gPSBy
ZXNvbHZlciAmJiByZXNvbHZlci0+ZG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpLT5jYW5SZXF1
ZXN0KHNoZWV0LmJhc2VVUkwoKSk7CisgICAgYm9vbCBoYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2lu
ID0gcmVzb2x2ZXIgJiYgcmVzb2x2ZXItPmRvY3VtZW50KCkuc2VjdXJpdHlPcmlnaW4oKS0+Y2Fu
UmVxdWVzdChzaGVldC5iYXNlVVJMKCksIHJlc29sdmVyLT5kb2N1bWVudCgpLnNjaGVtZVJlZ2lz
dHJ5KCkpOwogICAgIEFkZFJ1bGVGbGFncyBhZGRSdWxlRmxhZ3MgPSBzdGF0aWNfY2FzdDxBZGRS
dWxlRmxhZ3M+KChoYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luID8gUnVsZUhhc0RvY3VtZW50U2Vj
dXJpdHlPcmlnaW4gOiAwKSk7CiAKICAgICAvLyBGSVhNRTogU2tpcCBDb250ZW50IFNlY3VyaXR5
IFBvbGljeSBjaGVjayB3aGVuIHN0eWxlc2hlZXQgaXMgaW4gYSB1c2VyIGFnZW50IHNoYWRvdyB0
cmVlLgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5jcHAJKHJl
dmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiTm9kZS5oIgog
I2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdlQ29uc29sZUNsaWVudC5oIgorI2luY2x1
ZGUgIlBhZ2VTY2hlbWVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlJ1bGVTZXQuaCIKICNpbmNsdWRl
ICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlN0eWxlUHJvcGVydGllcy5oIgpAQCAtMzEx
LDcgKzMxMiw3IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgU3R5bGVTaGVldENvbnRlbnRzOjoKIAog
dm9pZCBTdHlsZVNoZWV0Q29udGVudHM6OnBhcnNlQXV0aG9yU3R5bGVTaGVldChjb25zdCBDYWNo
ZWRDU1NTdHlsZVNoZWV0KiBjYWNoZWRTdHlsZVNoZWV0LCBjb25zdCBTZWN1cml0eU9yaWdpbiog
c2VjdXJpdHlPcmlnaW4pCiB7Ci0gICAgYm9vbCBpc1NhbWVPcmlnaW5SZXF1ZXN0ID0gc2VjdXJp
dHlPcmlnaW4gJiYgc2VjdXJpdHlPcmlnaW4tPmNhblJlcXVlc3QoYmFzZVVSTCgpKTsKKyAgICBi
b29sIGlzU2FtZU9yaWdpblJlcXVlc3QgPSBzZWN1cml0eU9yaWdpbiAmJiBzZWN1cml0eU9yaWdp
bi0+Y2FuUmVxdWVzdChiYXNlVVJMKCksIFBhZ2VTY2hlbWVSZWdpc3RyeTo6Y3JlYXRlKCkpOwog
ICAgIENhY2hlZENTU1N0eWxlU2hlZXQ6Ok1JTUVUeXBlQ2hlY2sgbWltZVR5cGVDaGVjayA9IGlz
U3RyaWN0UGFyc2VyTW9kZShtX3BhcnNlckNvbnRleHQubW9kZSkgfHwgIWlzU2FtZU9yaWdpblJl
cXVlc3QgPyBDYWNoZWRDU1NTdHlsZVNoZWV0OjpNSU1FVHlwZUNoZWNrOjpTdHJpY3QgOiBDYWNo
ZWRDU1NTdHlsZVNoZWV0OjpNSU1FVHlwZUNoZWNrOjpMYXg7CiAgICAgYm9vbCBoYXNWYWxpZE1J
TUVUeXBlID0gdHJ1ZTsKICAgICBTdHJpbmcgc2hlZXRUZXh0ID0gY2FjaGVkU3R5bGVTaGVldC0+
c2hlZXRUZXh0KG1pbWVUeXBlQ2hlY2ssICZoYXNWYWxpZE1JTUVUeXBlKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcAkocmV2aXNpb24gMjA4Mzk4KQorKysg
U291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtOTgsMTggKzk4LDE4IEBAIEV4Y2VwdGlvbk9yPFJlZjxEb2N1bWVudFR5cGU+PiBET01JbXBs
ZW0KICAgICByZXR1cm4gRG9jdW1lbnRUeXBlOjpjcmVhdGUobV9kb2N1bWVudCwgcXVhbGlmaWVk
TmFtZSwgcHVibGljSWQsIHN5c3RlbUlkKTsKIH0KIAotc3RhdGljIGlubGluZSBSZWY8WE1MRG9j
dW1lbnQ+IGNyZWF0ZVhNTERvY3VtZW50KGNvbnN0IFN0cmluZyYgbmFtZXNwYWNlVVJJKQorc3Rh
dGljIGlubGluZSBSZWY8WE1MRG9jdW1lbnQ+IGNyZWF0ZVhNTERvY3VtZW50KGNvbnN0IFN0cmlu
ZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnkmIHNjaGVtZVJlZ2lzdHJ5
KQogewogICAgIGlmIChuYW1lc3BhY2VVUkkgPT0gU1ZHTmFtZXM6OnN2Z05hbWVzcGFjZVVSSSkK
LSAgICAgICAgcmV0dXJuIFNWR0RvY3VtZW50OjpjcmVhdGUobnVsbHB0ciwgVVJMKCkpOworICAg
ICAgICByZXR1cm4gU1ZHRG9jdW1lbnQ6OmNyZWF0ZShudWxscHRyLCBVUkwoKSwgc2NoZW1lUmVn
aXN0cnkpOwogICAgIGlmIChuYW1lc3BhY2VVUkkgPT0gSFRNTE5hbWVzOjp4aHRtbE5hbWVzcGFj
ZVVSSSkKLSAgICAgICAgcmV0dXJuIFhNTERvY3VtZW50OjpjcmVhdGVYSFRNTChudWxscHRyLCBV
UkwoKSk7Ci0gICAgcmV0dXJuIFhNTERvY3VtZW50OjpjcmVhdGUobnVsbHB0ciwgVVJMKCkpOwor
ICAgICAgICByZXR1cm4gWE1MRG9jdW1lbnQ6OmNyZWF0ZVhIVE1MKG51bGxwdHIsIFVSTCgpLCBz
Y2hlbWVSZWdpc3RyeSk7CisgICAgcmV0dXJuIFhNTERvY3VtZW50OjpjcmVhdGUobnVsbHB0ciwg
VVJMKCksIHNjaGVtZVJlZ2lzdHJ5KTsKIH0KIAogRXhjZXB0aW9uT3I8UmVmPFhNTERvY3VtZW50
Pj4gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZURvY3VtZW50KGNvbnN0IFN0cmluZyYgbmFtZXNw
YWNlVVJJLCBjb25zdCBTdHJpbmcmIHF1YWxpZmllZE5hbWUsIERvY3VtZW50VHlwZSogZG9jdW1l
bnRUeXBlKQogewotICAgIGF1dG8gZG9jdW1lbnQgPSBjcmVhdGVYTUxEb2N1bWVudChuYW1lc3Bh
Y2VVUkkpOworICAgIGF1dG8gZG9jdW1lbnQgPSBjcmVhdGVYTUxEb2N1bWVudChuYW1lc3BhY2VV
UkksIG1fZG9jdW1lbnQuc2NoZW1lUmVnaXN0cnkoKSk7CiAgICAgZG9jdW1lbnQtPnNldENvbnRl
eHREb2N1bWVudChtX2RvY3VtZW50LmNvbnRleHREb2N1bWVudCgpKTsKICAgICBkb2N1bWVudC0+
c2V0U2VjdXJpdHlPcmlnaW5Qb2xpY3kobV9kb2N1bWVudC5zZWN1cml0eU9yaWdpblBvbGljeSgp
KTsKIApAQCAtMTQwLDcgKzE0MCw3IEBAIFJlZjxDU1NTdHlsZVNoZWV0PiBET01JbXBsZW1lbnRh
dGlvbjo6Y3IKIAogUmVmPEhUTUxEb2N1bWVudD4gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZUhU
TUxEb2N1bWVudChjb25zdCBTdHJpbmcmIHRpdGxlKQogewotICAgIGF1dG8gZG9jdW1lbnQgPSBI
VE1MRG9jdW1lbnQ6OmNyZWF0ZShudWxscHRyLCBVUkwoKSk7CisgICAgYXV0byBkb2N1bWVudCA9
IEhUTUxEb2N1bWVudDo6Y3JlYXRlKG51bGxwdHIsIFVSTCgpLCBtX2RvY3VtZW50LnNjaGVtZVJl
Z2lzdHJ5KCkpOwogICAgIGRvY3VtZW50LT5vcGVuKCk7CiAgICAgZG9jdW1lbnQtPndyaXRlKCI8
IWRvY3R5cGUgaHRtbD48aHRtbD48aGVhZD48L2hlYWQ+PGJvZHk+PC9ib2R5PjwvaHRtbD4iKTsK
ICAgICBpZiAoIXRpdGxlLmlzTnVsbCgpKSB7CkBAIC0xNTQsMjYgKzE1NCwyNiBAQCBSZWY8SFRN
TERvY3VtZW50PiBET01JbXBsZW1lbnRhdGlvbjo6Y3JlCiAgICAgcmV0dXJuIGRvY3VtZW50Owog
fQogCi1SZWY8RG9jdW1lbnQ+IERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVudChjb25z
dCBTdHJpbmcmIHR5cGUsIEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCitSZWY8RG9jdW1l
bnQ+IERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVudChjb25zdCBTdHJpbmcmIHR5cGUs
IEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3RyeSYg
c2NoZW1lUmVnaXN0cnkpCiB7CiAgICAgLy8gRklYTUU6IENvbmZ1c2luZyB0byBoYXZlIHRoaXMg
aGVyZSB3aXRoIHB1YmxpYyBET00gQVBJcyBmb3IgY3JlYXRpbmcgZG9jdW1lbnRzLiBUaGlzIGlz
IGRpZmZlcmVudCBlbm91Z2ggdGhhdCBpdCBzaG91bGQgcGVyaGFwcyBiZSBtb3ZlZC4KICAgICAv
LyBGSVhNRTogVGhpcyBmdW5jdGlvbiBpcyBkb2luZyBjYXNlIGluc2Vuc2l0aXZlIGNvbXBhcmlz
b25zIG9uIE1JTUUgdHlwZXMuIFNob3VsZCBkbyBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZSBpbnN0ZWFkLgogCiAgICAgLy8gUGx1Z2lucyBjYW5ub3QgdGFrZSBIVE1MIGFuZCBYSFRNTCBm
cm9tIHVzLCBhbmQgd2UgZG9uJ3QgZXZlbiBuZWVkIHRvIGluaXRpYWxpemUgdGhlIHBsdWdpbiBk
YXRhYmFzZSBmb3IgdGhvc2UuCiAgICAgaWYgKHR5cGUgPT0gInRleHQvaHRtbCIpCi0gICAgICAg
IHJldHVybiBIVE1MRG9jdW1lbnQ6OmNyZWF0ZShmcmFtZSwgdXJsKTsKKyAgICAgICAgcmV0dXJu
IEhUTUxEb2N1bWVudDo6Y3JlYXRlKGZyYW1lLCB1cmwsIHNjaGVtZVJlZ2lzdHJ5KTsKICAgICBp
ZiAodHlwZSA9PSAiYXBwbGljYXRpb24veGh0bWwreG1sIikKLSAgICAgICAgcmV0dXJuIFhNTERv
Y3VtZW50OjpjcmVhdGVYSFRNTChmcmFtZSwgdXJsKTsKKyAgICAgICAgcmV0dXJuIFhNTERvY3Vt
ZW50OjpjcmVhdGVYSFRNTChmcmFtZSwgdXJsLCBzY2hlbWVSZWdpc3RyeSk7CiAKICNpZiBFTkFC
TEUoRlRQRElSKQogICAgIC8vIFBsdWdpbnMgY2Fubm90IHRha2UgRlRQIGZyb20gdXMgZWl0aGVy
CiAgICAgaWYgKHR5cGUgPT0gImFwcGxpY2F0aW9uL3gtZnRwLWRpcmVjdG9yeSIpCi0gICAgICAg
IHJldHVybiBGVFBEaXJlY3RvcnlEb2N1bWVudDo6Y3JlYXRlKGZyYW1lLCB1cmwpOworICAgICAg
ICByZXR1cm4gRlRQRGlyZWN0b3J5RG9jdW1lbnQ6OmNyZWF0ZShmcmFtZSwgdXJsLCBzY2hlbWVS
ZWdpc3RyeSk7CiAjZW5kaWYKIAogICAgIC8vIElmIHdlIHdhbnQgdG8gdXNlSW1hZ2VEb2N1bWVu
dEZvclN1YmZyYW1lUERGLCB3ZSdsbCBsZXQgdGhhdCBvdmVycmlkZSBwbHVnaW4gc3VwcG9ydC4K
ICAgICBpZiAoZnJhbWUgJiYgIWZyYW1lLT5pc01haW5GcmFtZSgpICYmIE1JTUVUeXBlUmVnaXN0
cnk6OmlzUERGTUlNRVR5cGUodHlwZSkgJiYgZnJhbWUtPnNldHRpbmdzKCkudXNlSW1hZ2VEb2N1
bWVudEZvclN1YmZyYW1lUERGKCkpCi0gICAgICAgIHJldHVybiBJbWFnZURvY3VtZW50OjpjcmVh
dGUoKmZyYW1lLCB1cmwpOworICAgICAgICByZXR1cm4gSW1hZ2VEb2N1bWVudDo6Y3JlYXRlKCpm
cmFtZSwgdXJsLCBmcmFtZS0+c2NoZW1lUmVnaXN0cnkoKSk7CiAKICAgICBQbHVnaW5EYXRhKiBw
bHVnaW5EYXRhID0gbnVsbHB0cjsKICAgICBhdXRvIGFsbG93ZWRQbHVnaW5UeXBlcyA9IFBsdWdp
bkRhdGE6Ok9ubHlBcHBsaWNhdGlvblBsdWdpbnM7CkBAIC0xODcsOSArMTg3LDkgQEAgUmVmPERv
Y3VtZW50PiBET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlRAogICAgIC8vIFBERiBpcyBvbmUgaW1h
Z2UgdHlwZSBmb3Igd2hpY2ggYSBwbHVnaW4gY2FuIG92ZXJyaWRlIGJ1aWx0LWluIHN1cHBvcnQu
CiAgICAgLy8gV2UgZG8gbm90IHdhbnQgUXVpY2tUaW1lIHRvIHRha2Ugb3ZlciBhbGwgaW1hZ2Ug
dHlwZXMsIG9idmlvdXNseS4KICAgICBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNQREZPclBvc3RT
Y3JpcHRNSU1FVHlwZSh0eXBlKSAmJiBwbHVnaW5EYXRhICYmIHBsdWdpbkRhdGEtPnN1cHBvcnRz
V2ViVmlzaWJsZU1pbWVUeXBlKHR5cGUsIGFsbG93ZWRQbHVnaW5UeXBlcykpCi0gICAgICAgIHJl
dHVybiBQbHVnaW5Eb2N1bWVudDo6Y3JlYXRlKGZyYW1lLCB1cmwpOworICAgICAgICByZXR1cm4g
UGx1Z2luRG9jdW1lbnQ6OmNyZWF0ZShmcmFtZSwgdXJsLCBzY2hlbWVSZWdpc3RyeSk7CiAgICAg
aWYgKEltYWdlOjpzdXBwb3J0c1R5cGUodHlwZSkpCi0gICAgICAgIHJldHVybiBJbWFnZURvY3Vt
ZW50OjpjcmVhdGUoKmZyYW1lLCB1cmwpOworICAgICAgICByZXR1cm4gSW1hZ2VEb2N1bWVudDo6
Y3JlYXRlKCpmcmFtZSwgdXJsLCBzY2hlbWVSZWdpc3RyeSk7CiAKICNpZiBFTkFCTEUoVklERU8p
CiAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRoZSB0eXBlIGNhbiBiZSBwbGF5ZWQgYnkgb3VyIE1l
ZGlhUGxheWVyLCBpZiBzbyBjcmVhdGUgYSBNZWRpYURvY3VtZW50CkBAIC0xOTksMjQgKzE5OSwy
NCBAQCBSZWY8RG9jdW1lbnQ+IERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVECiAgICAgcGFyYW1l
dGVycy50eXBlID0gdHlwZTsKICAgICBwYXJhbWV0ZXJzLnVybCA9IHVybDsKICAgICBpZiAoTWVk
aWFQbGF5ZXI6OnN1cHBvcnRzVHlwZShwYXJhbWV0ZXJzLCAmY2xpZW50KSkKLSAgICAgICAgcmV0
dXJuIE1lZGlhRG9jdW1lbnQ6OmNyZWF0ZShmcmFtZSwgdXJsKTsKKyAgICAgICAgcmV0dXJuIE1l
ZGlhRG9jdW1lbnQ6OmNyZWF0ZShmcmFtZSwgdXJsLCBzY2hlbWVSZWdpc3RyeSk7CiAjZW5kaWYK
IAogICAgIC8vIEV2ZXJ5dGhpbmcgZWxzZSBleGNlcHQgdGV4dC9wbGFpbiBjYW4gYmUgb3ZlcnJp
ZGRlbiBieSBwbHVnaW5zLiBJbiBwYXJ0aWN1bGFyLCBBZG9iZSBTVkcgVmlld2VyIHNob3VsZCBi
ZSB1c2VkIGZvciBTVkcsIGlmIGluc3RhbGxlZC4KICAgICAvLyBEaXNhbGxvd2luZyBwbHVnLWlu
cyB0byB1c2UgdGV4dC9wbGFpbiBwcmV2ZW50cyBwbHVnLWlucyBmcm9tIGhpamFja2luZyBhIGZ1
bmRhbWVudGFsIHR5cGUgdGhhdCB0aGUgYnJvd3NlciBpcyBleHBlY3RlZCB0byBoYW5kbGUsCiAg
ICAgLy8gYW5kIGFsc28gc2VydmVzIGFzIGFuIG9wdGltaXphdGlvbiB0byBwcmV2ZW50IGxvYWRp
bmcgdGhlIHBsdWctaW4gZGF0YWJhc2UgaW4gdGhlIGNvbW1vbiBjYXNlLgogICAgIGlmICh0eXBl
ICE9ICJ0ZXh0L3BsYWluIiAmJiAoKHBsdWdpbkRhdGEgJiYgcGx1Z2luRGF0YS0+c3VwcG9ydHNX
ZWJWaXNpYmxlTWltZVR5cGUodHlwZSwgYWxsb3dlZFBsdWdpblR5cGVzKSkgfHwgKGZyYW1lICYm
IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5zaG91bGRBbHdheXNVc2VQbHVnaW5Eb2N1bWVudCh0
eXBlKSkpKQotICAgICAgICByZXR1cm4gUGx1Z2luRG9jdW1lbnQ6OmNyZWF0ZShmcmFtZSwgdXJs
KTsKKyAgICAgICAgcmV0dXJuIFBsdWdpbkRvY3VtZW50OjpjcmVhdGUoZnJhbWUsIHVybCwgc2No
ZW1lUmVnaXN0cnkpOwogICAgIGlmIChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1RleHRNSU1FVHlwZSh0
eXBlKSkKLSAgICAgICAgcmV0dXJuIFRleHREb2N1bWVudDo6Y3JlYXRlKGZyYW1lLCB1cmwpOwor
ICAgICAgICByZXR1cm4gVGV4dERvY3VtZW50OjpjcmVhdGUoZnJhbWUsIHVybCwgc2NoZW1lUmVn
aXN0cnkpOwogCiAgICAgaWYgKHR5cGUgPT0gImltYWdlL3N2Zyt4bWwiKQotICAgICAgICByZXR1
cm4gU1ZHRG9jdW1lbnQ6OmNyZWF0ZShmcmFtZSwgdXJsKTsKKyAgICAgICAgcmV0dXJuIFNWR0Rv
Y3VtZW50OjpjcmVhdGUoZnJhbWUsIHVybCwgc2NoZW1lUmVnaXN0cnkpOwogCiAgICAgaWYgKE1J
TUVUeXBlUmVnaXN0cnk6OmlzWE1MTUlNRVR5cGUodHlwZSkpCi0gICAgICAgIHJldHVybiBYTUxE
b2N1bWVudDo6Y3JlYXRlKGZyYW1lLCB1cmwpOworICAgICAgICByZXR1cm4gWE1MRG9jdW1lbnQ6
OmNyZWF0ZShmcmFtZSwgdXJsLCBzY2hlbWVSZWdpc3RyeSk7CiAKLSAgICByZXR1cm4gSFRNTERv
Y3VtZW50OjpjcmVhdGUoZnJhbWUsIHVybCk7CisgICAgcmV0dXJuIEhUTUxEb2N1bWVudDo6Y3Jl
YXRlKGZyYW1lLCB1cmwsIHNjaGVtZVJlZ2lzdHJ5KTsKIH0KIAogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmgJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0
Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBoYXNGZWF0dXJlKCkgeyByZXR1cm4gdHJ1
ZTsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8Q1NTU3R5bGVTaGVldD4gY3JlYXRl
Q1NTU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIG1lZGlhKTsK
IAotICAgIHN0YXRpYyBSZWY8RG9jdW1lbnQ+IGNyZWF0ZURvY3VtZW50KGNvbnN0IFN0cmluZyYg
TUlNRVR5cGUsIEZyYW1lKiwgY29uc3QgVVJMJik7CisgICAgc3RhdGljIFJlZjxEb2N1bWVudD4g
Y3JlYXRlRG9jdW1lbnQoY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgRnJhbWUqLCBjb25zdCBVUkwm
LCBjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnkmKTsKIAogcHJpdmF0ZToKICAgICBEb2N1bWVudCYg
bV9kb2N1bWVudDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMjA4Mzk4
KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTIzLDYgKzEyMyw3IEBACiAjaW5jbHVkZSAiT3ZlcmZsb3dFdmVudC5oIgogI2luY2x1ZGUgIlBh
Z2VDb25zb2xlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUGFnZUdyb3VwLmgiCisjaW5jbHVkZSAiUGFn
ZVNjaGVtZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiUGFnZVRyYW5zaXRpb25FdmVudC5oIgogI2lu
Y2x1ZGUgIlBsYXRmb3JtTG9jYWxlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1NZWRpYVNlc3Npb25N
YW5hZ2VyLmgiCkBAIC00MjcsNyArNDI4LDcgQEAgSGFzaFNldDxEb2N1bWVudCo+JiBEb2N1bWVu
dDo6YWxsRG9jdW1lbgogICAgIHJldHVybiBkb2N1bWVudHM7CiB9CiAKLURvY3VtZW50OjpEb2N1
bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsLCB1bnNpZ25lZCBkb2N1bWVudENsYXNz
ZXMsIHVuc2lnbmVkIGNvbnN0cnVjdGlvbkZsYWdzKQorRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1l
KiBmcmFtZSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3RyeSYgc2NoZW1l
UmVnaXN0cnksIHVuc2lnbmVkIGRvY3VtZW50Q2xhc3NlcywgdW5zaWduZWQgY29uc3RydWN0aW9u
RmxhZ3MpCiAgICAgOiBDb250YWluZXJOb2RlKCp0aGlzLCBDcmVhdGVEb2N1bWVudCkKICAgICAs
IFRyZWVTY29wZSgqdGhpcykKICNpZiBFTkFCTEUoSU9TX1RPVUNIX0VWRU5UUykKQEAgLTQzOSw3
ICs0NDAsNyBAQCBEb2N1bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBVCiAgICAg
LCBtX2lnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cyhmYWxzZSkKICAgICAsIG1fcGVuZGluZ1NoZWV0
TGF5b3V0KE5vTGF5b3V0V2l0aFBlbmRpbmdTaGVldHMpCiAgICAgLCBtX2ZyYW1lKGZyYW1lKQot
ICAgICwgbV9jYWNoZWRSZXNvdXJjZUxvYWRlcihtX2ZyYW1lID8gUmVmPENhY2hlZFJlc291cmNl
TG9hZGVyPihtX2ZyYW1lLT5sb2FkZXIoKS5hY3RpdmVEb2N1bWVudExvYWRlcigpLT5jYWNoZWRS
ZXNvdXJjZUxvYWRlcigpKSA6IENhY2hlZFJlc291cmNlTG9hZGVyOjpjcmVhdGUobnVsbHB0cikp
CisgICAgLCBtX2NhY2hlZFJlc291cmNlTG9hZGVyKG1fZnJhbWUgPyBSZWY8Q2FjaGVkUmVzb3Vy
Y2VMb2FkZXI+KG1fZnJhbWUtPmxvYWRlcigpLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPmNhY2hl
ZFJlc291cmNlTG9hZGVyKCkpIDogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShudWxscHRy
LCBzY2hlbWVSZWdpc3RyeSkpCiAgICAgLCBtX2FjdGl2ZVBhcnNlckNvdW50KDApCiAgICAgLCBt
X3dlbGxGb3JtZWQoZmFsc2UpCiAgICAgLCBtX3ByaW50aW5nKGZhbHNlKQpAQCAtNTMzLDYgKzUz
NCw3IEBAIERvY3VtZW50OjpEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IFUKICNpZiBFTkFC
TEUoV0VCX1NPQ0tFVFMpCiAgICAgLCBtX3NvY2tldFByb3ZpZGVyKHBhZ2UoKSA/ICZwYWdlKCkt
PnNvY2tldFByb3ZpZGVyKCkgOiBudWxscHRyKQogI2VuZGlmCisgICAgLCBtX3NjaGVtZVJlZ2lz
dHJ5KHNjaGVtZVJlZ2lzdHJ5KQogewogICAgIGFsbERvY3VtZW50cygpLmFkZCh0aGlzKTsKIApA
QCAtNTc2LDcgKzU3OCw3IEBAIHN0YXRpYyBib29sIGlzQXR0cmlidXRlT25BbGxPd25lcnMoY29u
c3QKIAogUmVmPERvY3VtZW50PiBEb2N1bWVudDo6Y3JlYXRlKERvY3VtZW50JiBjb250ZXh0RG9j
dW1lbnQpCiB7Ci0gICAgYXV0byBkb2N1bWVudCA9IGFkb3B0UmVmKCpuZXcgRG9jdW1lbnQobnVs
bHB0ciwgVVJMKCkpKTsKKyAgICBhdXRvIGRvY3VtZW50ID0gYWRvcHRSZWYoKm5ldyBEb2N1bWVu
dChudWxscHRyLCBVUkwoKSwgY29udGV4dERvY3VtZW50LnNjaGVtZVJlZ2lzdHJ5KCkpKTsKICAg
ICBkb2N1bWVudC0+c2V0Q29udGV4dERvY3VtZW50KGNvbnRleHREb2N1bWVudCk7CiAgICAgZG9j
dW1lbnQtPnNldFNlY3VyaXR5T3JpZ2luUG9saWN5KGNvbnRleHREb2N1bWVudC5zZWN1cml0eU9y
aWdpblBvbGljeSgpKTsKICAgICByZXR1cm4gZG9jdW1lbnQ7CkBAIC0zMzk5LDEwICszNDAxLDEw
IEBAIFJlZjxEb2N1bWVudD4gRG9jdW1lbnQ6OmNsb25lRG9jdW1lbnRXaXQKIHsKICAgICBpZiAo
aXNYTUxEb2N1bWVudCgpKSB7CiAgICAgICAgIGlmIChpc1hIVE1MRG9jdW1lbnQoKSkKLSAgICAg
ICAgICAgIHJldHVybiBYTUxEb2N1bWVudDo6Y3JlYXRlWEhUTUwobnVsbHB0ciwgdXJsKCkpOwot
ICAgICAgICByZXR1cm4gWE1MRG9jdW1lbnQ6OmNyZWF0ZShudWxscHRyLCB1cmwoKSk7CisgICAg
ICAgICAgICByZXR1cm4gWE1MRG9jdW1lbnQ6OmNyZWF0ZVhIVE1MKG51bGxwdHIsIHVybCgpLCBz
Y2hlbWVSZWdpc3RyeSgpKTsKKyAgICAgICAgcmV0dXJuIFhNTERvY3VtZW50OjpjcmVhdGUobnVs
bHB0ciwgdXJsKCksIHNjaGVtZVJlZ2lzdHJ5KCkpOwogICAgIH0KLSAgICByZXR1cm4gY3JlYXRl
KG51bGxwdHIsIHVybCgpKTsKKyAgICByZXR1cm4gY3JlYXRlKG51bGxwdHIsIHVybCgpLCBzY2hl
bWVSZWdpc3RyeSgpKTsKIH0KIAogdm9pZCBEb2N1bWVudDo6Y2xvbmVEYXRhRnJvbURvY3VtZW50
KGNvbnN0IERvY3VtZW50JiBvdGhlcikKQEAgLTQ4MTIsNyArNDgxNCw3IEBAIHZvaWQgRG9jdW1l
bnQ6OmFwcGx5WFNMVHJhbnNmb3JtKFByb2Nlc3MKICAgICAgICAgcmV0dXJuOwogICAgIC8vIEZJ
WE1FOiBJZiB0aGUgdHJhbnNmb3JtIGZhaWxlZCB3ZSBzaG91bGQgcHJvYmFibHkgcmVwb3J0IGFu
IGVycm9yIChsaWtlIE1vemlsbGEgZG9lcykuCiAgICAgRnJhbWUqIG93bmVyRnJhbWUgPSBmcmFt
ZSgpOwotICAgIHByb2Nlc3Nvci0+Y3JlYXRlRG9jdW1lbnRGcm9tU291cmNlKG5ld1NvdXJjZSwg
cmVzdWx0RW5jb2RpbmcsIHJlc3VsdE1JTUVUeXBlLCB0aGlzLCBvd25lckZyYW1lKTsKKyAgICBw
cm9jZXNzb3ItPmNyZWF0ZURvY3VtZW50RnJvbVNvdXJjZShuZXdTb3VyY2UsIHJlc3VsdEVuY29k
aW5nLCByZXN1bHRNSU1FVHlwZSwgdGhpcywgb3duZXJGcmFtZSwgc2NoZW1lUmVnaXN0cnkoKSk7
CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnNldFRyYW5zZm9ybVNvdXJjZShzdGQ6OnVuaXF1ZV9wdHI8
VHJhbnNmb3JtU291cmNlPiBzb3VyY2UpCkBAIC01MTE0LDcgKzUxMTYsNyBAQCB2b2lkIERvY3Vt
ZW50Ojppbml0U2VjdXJpdHlDb250ZXh0KCkKICAgICBpZiAoc2hvdWxkRW5mb3JjZUNvbnRlbnRE
aXNwb3NpdGlvbkF0dGFjaG1lbnRTYW5kYm94KCkpCiAgICAgICAgIGFwcGx5Q29udGVudERpc3Bv
c2l0aW9uQXR0YWNobWVudFNhbmRib3goKTsKIAotICAgIHNldFNlY3VyaXR5T3JpZ2luUG9saWN5
KFNlY3VyaXR5T3JpZ2luUG9saWN5OjpjcmVhdGUoaXNTYW5kYm94ZWQoU2FuZGJveE9yaWdpbikg
PyBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlVW5pcXVlKCkgOiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
KG1fdXJsKSkpOworICAgIHNldFNlY3VyaXR5T3JpZ2luUG9saWN5KFNlY3VyaXR5T3JpZ2luUG9s
aWN5OjpjcmVhdGUoaXNTYW5kYm94ZWQoU2FuZGJveE9yaWdpbikgPyBTZWN1cml0eU9yaWdpbjo6
Y3JlYXRlVW5pcXVlKCkgOiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1fdXJsLCBzY2hlbWVSZWdp
c3RyeSgpKSkpOwogICAgIHNldENvbnRlbnRTZWN1cml0eVBvbGljeShzdGQ6Om1ha2VfdW5pcXVl
PENvbnRlbnRTZWN1cml0eVBvbGljeT4oKnRoaXMpKTsKIAogI2lmIFVTRShRVUlDS19MT09LKQpA
QCAtNjY1Nyw5ICs2NjU5LDkgQEAgRG9jdW1lbnQmIERvY3VtZW50OjplbnN1cmVUZW1wbGF0ZURv
Y3VtZQogICAgICAgICByZXR1cm4gY29uc3RfY2FzdDxEb2N1bWVudCY+KCpkb2N1bWVudCk7CiAK
ICAgICBpZiAoaXNIVE1MRG9jdW1lbnQoKSkKLSAgICAgICAgbV90ZW1wbGF0ZURvY3VtZW50ID0g
SFRNTERvY3VtZW50OjpjcmVhdGUobnVsbHB0ciwgYmxhbmtVUkwoKSk7CisgICAgICAgIG1fdGVt
cGxhdGVEb2N1bWVudCA9IEhUTUxEb2N1bWVudDo6Y3JlYXRlKG51bGxwdHIsIGJsYW5rVVJMKCks
IHNjaGVtZVJlZ2lzdHJ5KCkpOwogICAgIGVsc2UKLSAgICAgICAgbV90ZW1wbGF0ZURvY3VtZW50
ID0gRG9jdW1lbnQ6OmNyZWF0ZShudWxscHRyLCBibGFua1VSTCgpKTsKKyAgICAgICAgbV90ZW1w
bGF0ZURvY3VtZW50ID0gRG9jdW1lbnQ6OmNyZWF0ZShudWxscHRyLCBibGFua1VSTCgpLCBzY2hl
bWVSZWdpc3RyeSgpKTsKIAogICAgIG1fdGVtcGxhdGVEb2N1bWVudC0+c2V0Q29udGV4dERvY3Vt
ZW50KGNvbnRleHREb2N1bWVudCgpKTsKICAgICBtX3RlbXBsYXRlRG9jdW1lbnQtPnNldFRlbXBs
YXRlRG9jdW1lbnRIb3N0KHRoaXMpOyAvLyBiYWxhbmNlZCBpbiBkdG9yLgpJbmRleDogU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOTAsMTQgKzI5MCwxNCBAQCBjbGFzcyBEb2N1bWVu
dAogICAgICwgcHVibGljIEZvbnRTZWxlY3RvckNsaWVudAogICAgICwgcHVibGljIFN1cHBsZW1l
bnRhYmxlPERvY3VtZW50PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxEb2N1bWVudD4gY3Jl
YXRlKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCisgICAgc3RhdGljIFJlZjxEb2N1bWVu
dD4gY3JlYXRlKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFBhZ2VTY2hlbWVS
ZWdpc3RyeSYgc2NoZW1lUmVnaXN0cnkpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBEb2N1bWVudChmcmFtZSwgdXJsKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IERvY3VtZW50KGZyYW1lLCB1cmwsIHNjaGVtZVJlZ2lzdHJ5KSk7CiAgICAgfQogCi0gICAgc3Rh
dGljIFJlZjxEb2N1bWVudD4gY3JlYXRlTm9uUmVuZGVyZWRQbGFjZWhvbGRlcihGcmFtZSogZnJh
bWUsIGNvbnN0IFVSTCYgdXJsKQorICAgIHN0YXRpYyBSZWY8RG9jdW1lbnQ+IGNyZWF0ZU5vblJl
bmRlcmVkUGxhY2Vob2xkZXIoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCwgY29uc3QgUGFn
ZVNjaGVtZVJlZ2lzdHJ5JiBzY2hlbWVSZWdpc3RyeSkKICAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IERvY3VtZW50KGZyYW1lLCB1cmwsIERlZmF1bHREb2N1bWVudENsYXNzLCBO
b25SZW5kZXJlZFBsYWNlaG9sZGVyKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERv
Y3VtZW50KGZyYW1lLCB1cmwsIHNjaGVtZVJlZ2lzdHJ5LCBEZWZhdWx0RG9jdW1lbnRDbGFzcywg
Tm9uUmVuZGVyZWRQbGFjZWhvbGRlcikpOwogICAgIH0KICAgICBzdGF0aWMgUmVmPERvY3VtZW50
PiBjcmVhdGUoRG9jdW1lbnQmKTsKIApAQCAtNjM2LDYgKzYzNiw3IEBAIHB1YmxpYzoKICNpZiBF
TkFCTEUoV0VCX1NPQ0tFVFMpCiAgICAgU29ja2V0UHJvdmlkZXIqIHNvY2tldFByb3ZpZGVyKCkg
ZmluYWw7CiAjZW5kaWYKKyAgICBjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnkmIHNjaGVtZVJlZ2lz
dHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zY2hlbWVSZWdpc3RyeS5nZXQoKTsgfQogCiAg
ICAgYm9vbCBjYW5OYXZpZ2F0ZShGcmFtZSogdGFyZ2V0RnJhbWUpOwogICAgIEZyYW1lKiBmaW5k
VW5zYWZlUGFyZW50U2Nyb2xsUHJvcGFnYXRpb25Cb3VuZGFyeSgpOwpAQCAtMTMwMSw3ICsxMzAy
LDcgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgZW51bSBDb25zdHJ1Y3Rpb25GbGFncyB7
IFN5bnRoZXNpemVkID0gMSwgTm9uUmVuZGVyZWRQbGFjZWhvbGRlciA9IDEgPDwgMSB9OwotICAg
IERvY3VtZW50KEZyYW1lKiwgY29uc3QgVVJMJiwgdW5zaWduZWQgPSBEZWZhdWx0RG9jdW1lbnRD
bGFzcywgdW5zaWduZWQgY29uc3RydWN0aW9uRmxhZ3MgPSAwKTsKKyAgICBEb2N1bWVudChGcmFt
ZSosIGNvbnN0IFVSTCYsIGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3RyeSYsIHVuc2lnbmVkID0gRGVm
YXVsdERvY3VtZW50Q2xhc3MsIHVuc2lnbmVkIGNvbnN0cnVjdGlvbkZsYWdzID0gMCk7CiAKICAg
ICB2b2lkIGNsZWFyWE1MVmVyc2lvbigpIHsgbV94bWxWZXJzaW9uID0gU3RyaW5nKCk7IH0KIApA
QCAtMTc2NCw2ICsxNzY1LDcgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCiAg
ICAgUmVmUHRyPFNvY2tldFByb3ZpZGVyPiBtX3NvY2tldFByb3ZpZGVyOwogI2VuZGlmCisgICAg
UmVmPGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3RyeT4gbV9zY2hlbWVSZWdpc3RyeTsKIH07CiAKIGlu
bGluZSB2b2lkIERvY3VtZW50Ojpub3RpZnlSZW1vdmVQZW5kaW5nU2hlZXRJZk5lZWRlZCgpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCShy
ZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1OCw3ICszNTgsNyBAQCBib29sIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OnNhbml0aXplU2NyCiAgICAgICAgIEFTU0VSVChzZWN1cml0eU9yaWdp
bigpLT50b1N0cmluZygpID09IGNhY2hlZFNjcmlwdC0+b3JpZ2luKCktPnRvU3RyaW5nKCkpOwog
ICAgICAgICBpZiAoY2FjaGVkU2NyaXB0LT5pc0NPUlNTYW1lT3JpZ2luKCkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfSBlbHNlIGlmIChzZWN1cml0eU9yaWdpbigpLT5jYW5SZXF1
ZXN0KGNvbXBsZXRlVVJMKHNvdXJjZVVSTCkpKQorICAgIH0gZWxzZSBpZiAoc2VjdXJpdHlPcmln
aW4oKS0+Y2FuUmVxdWVzdChjb21wbGV0ZVVSTChzb3VyY2VVUkwpLCBzY2hlbWVSZWdpc3RyeSgp
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgZXJyb3JNZXNzYWdlID0gIlNjcmlwdCBl
cnJvci4iOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw2ICs1Nyw3IEBAIGNsYXNzIERhdGFi
YXNlQ29udGV4dDsKIGNsYXNzIEV2ZW50UXVldWU7CiBjbGFzcyBFdmVudFRhcmdldDsKIGNsYXNz
IE1lc3NhZ2VQb3J0OworY2xhc3MgUGFnZVNjaGVtZVJlZ2lzdHJ5OwogY2xhc3MgUHVibGljVVJM
TWFuYWdlcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwpA
QCAtOTEsNiArOTIsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQogICAgIHZp
cnR1YWwgU29ja2V0UHJvdmlkZXIqIHNvY2tldFByb3ZpZGVyKCkgPSAwOwogI2VuZGlmCisgICAg
dmlydHVhbCBjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnkmIHNjaGVtZVJlZ2lzdHJ5KCkgY29uc3Qg
PSAwOwogCiAgICAgYm9vbCBzYW5pdGl6ZVNjcmlwdEVycm9yKFN0cmluZyYgZXJyb3JNZXNzYWdl
LCBpbnQmIGxpbmVOdW1iZXIsIGludCYgY29sdW1uTnVtYmVyLCBTdHJpbmcmIHNvdXJjZVVSTCwg
RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGVycm9yLCBDYWNoZWRTY3JpcHQqID0gbnVsbHB0cik7
CiAgICAgdm9pZCByZXBvcnRFeGNlcHRpb24oY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGlu
dCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwg
SlNDOjpFeGNlcHRpb24qLCBSZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRDYWxsU3RhY2s+JiYsIENh
Y2hlZFNjcmlwdCogPSBudWxscHRyKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9TZWN1cml0
eUNvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9TZWN1cml0eUNv
bnRleHQuY3BwCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vU2VjdXJp
dHlDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCB2b2lkIFNlY3Vy
aXR5Q29udGV4dDo6c2V0Q29udGVudFNlY3VyaXR5CiAgICAgbV9jb250ZW50U2VjdXJpdHlQb2xp
Y3kgPSBXVEZNb3ZlKGNvbnRlbnRTZWN1cml0eVBvbGljeSk7CiB9CiAKLWJvb2wgU2VjdXJpdHlD
b250ZXh0Ojppc1NlY3VyZVRyYW5zaXRpb25Ubyhjb25zdCBVUkwmIHVybCkgY29uc3QKK2Jvb2wg
U2VjdXJpdHlDb250ZXh0Ojppc1NlY3VyZVRyYW5zaXRpb25Ubyhjb25zdCBVUkwmIHVybCwgY29u
c3QgUGFnZVNjaGVtZVJlZ2lzdHJ5JiBzY2hlbWVSZWdpc3RyeSkgY29uc3QKIHsKICAgICAvLyBJ
ZiB3ZSBoYXZlbid0IGluaXRpYWxpemVkIG91ciBzZWN1cml0eSBvcmlnaW4gYnkgbm93LCB0aGlz
IGlzIHByb2JhYmx5CiAgICAgLy8gYSBuZXcgd2luZG93IGNyZWF0ZWQgdmlhIHRoZSBBUEkgKGku
ZS4sIHRoYXQgbGFja3MgYW4gb3JpZ2luIGFuZCBsYWNrcwpAQCAtNzMsNyArNzMsNyBAQCBib29s
IFNlY3VyaXR5Q29udGV4dDo6aXNTZWN1cmVUcmFuc2l0aW9uCiAgICAgaWYgKCFoYXZlSW5pdGlh
bGl6ZWRTZWN1cml0eU9yaWdpbigpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIHJldHVy
biBzZWN1cml0eU9yaWdpblBvbGljeSgpLT5vcmlnaW4oKS5jYW5BY2Nlc3MoU2VjdXJpdHlPcmln
aW46OmNyZWF0ZSh1cmwpLnB0cigpKTsKKyAgICByZXR1cm4gc2VjdXJpdHlPcmlnaW5Qb2xpY3ko
KS0+b3JpZ2luKCkuY2FuQWNjZXNzKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodXJsLCBzY2hlbWVS
ZWdpc3RyeSkucHRyKCkpOwogfQogCiB2b2lkIFNlY3VyaXR5Q29udGV4dDo6ZW5mb3JjZVNhbmRi
b3hGbGFncyhTYW5kYm94RmxhZ3MgbWFzaykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9TZWN1
cml0eUNvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2VjdXJpdHlD
b250ZXh0LmgJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TZWN1cml0
eUNvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsOSArMzIsMTAgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCitjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3k7CitjbGFzcyBQYWdlU2No
ZW1lUmVnaXN0cnk7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFNlY3VyaXR5T3JpZ2lu
UG9saWN5OwotY2xhc3MgQ29udGVudFNlY3VyaXR5UG9saWN5OwogY2xhc3MgVVJMOwogCiBlbnVt
IFNhbmRib3hGbGFnIHsKQEAgLTU5LDcgKzYwLDcgQEAgcHVibGljOgogICAgIFNhbmRib3hGbGFn
cyBzYW5kYm94RmxhZ3MoKSBjb25zdCB7IHJldHVybiBtX3NhbmRib3hGbGFnczsgfQogICAgIENv
bnRlbnRTZWN1cml0eVBvbGljeSogY29udGVudFNlY3VyaXR5UG9saWN5KCkgeyByZXR1cm4gbV9j
b250ZW50U2VjdXJpdHlQb2xpY3kuZ2V0KCk7IH0KIAotICAgIGJvb2wgaXNTZWN1cmVUcmFuc2l0
aW9uVG8oY29uc3QgVVJMJikgY29uc3Q7CisgICAgYm9vbCBpc1NlY3VyZVRyYW5zaXRpb25Ubyhj
b25zdCBVUkwmLCBjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnkmKSBjb25zdDsKIAogICAgIHZvaWQg
ZW5mb3JjZVNhbmRib3hGbGFncyhTYW5kYm94RmxhZ3MgbWFzayk7CiAgICAgYm9vbCBpc1NhbmRi
b3hlZChTYW5kYm94RmxhZ3MgbWFzaykgY29uc3QgeyByZXR1cm4gbV9zYW5kYm94RmxhZ3MgJiBt
YXNrOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vWE1MRG9jdW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vWE1MRG9jdW1lbnQuaAkocmV2aXNpb24gMjA4Mzk4KQor
KysgU291cmNlL1dlYkNvcmUvZG9tL1hNTERvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMx
LDE5ICszMSwxOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFhNTERvY3VtZW50IDog
cHVibGljIERvY3VtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFhNTERvY3VtZW50PiBj
cmVhdGUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKKyAgICBzdGF0aWMgUmVmPFhNTERv
Y3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCwgY29uc3QgUGFnZVNj
aGVtZVJlZ2lzdHJ5JiBzY2hlbWVSZWdpc3RyeSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFhNTERvY3VtZW50KGZyYW1lLCB1cmwpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgWE1MRG9jdW1lbnQoZnJhbWUsIHVybCwgc2NoZW1lUmVnaXN0cnkpKTsKICAgICB9
CiAKLSAgICBzdGF0aWMgUmVmPFhNTERvY3VtZW50PiBjcmVhdGVYSFRNTChGcmFtZSogZnJhbWUs
IGNvbnN0IFVSTCYgdXJsKQorICAgIHN0YXRpYyBSZWY8WE1MRG9jdW1lbnQ+IGNyZWF0ZVhIVE1M
KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3RyeSYg
c2NoZW1lUmVnaXN0cnkpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBYTUxE
b2N1bWVudChmcmFtZSwgdXJsLCBYSFRNTERvY3VtZW50Q2xhc3MpKTsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgWE1MRG9jdW1lbnQoZnJhbWUsIHVybCwgc2NoZW1lUmVnaXN0cnksIFhI
VE1MRG9jdW1lbnRDbGFzcykpOwogICAgIH0KIAogcHJvdGVjdGVkOgotICAgIFhNTERvY3VtZW50
KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwsIHVuc2lnbmVkIGRvY3VtZW50Q2xhc3NlcyA9
IERlZmF1bHREb2N1bWVudENsYXNzKQotICAgICAgICA6IERvY3VtZW50KGZyYW1lLCB1cmwsIFhN
TERvY3VtZW50Q2xhc3MgfCBkb2N1bWVudENsYXNzZXMpCisgICAgWE1MRG9jdW1lbnQoRnJhbWUq
IGZyYW1lLCBjb25zdCBVUkwmIHVybCwgY29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5JiBzY2hlbWVS
ZWdpc3RyeSwgdW5zaWduZWQgZG9jdW1lbnRDbGFzc2VzID0gRGVmYXVsdERvY3VtZW50Q2xhc3Mp
CisgICAgICAgIDogRG9jdW1lbnQoZnJhbWUsIHVybCwgc2NoZW1lUmVnaXN0cnksIFhNTERvY3Vt
ZW50Q2xhc3MgfCBkb2N1bWVudENsYXNzZXMpCiAgICAgeyB9CiB9OwogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0RPTVVSTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9ET01VUkwuY3BwCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0RP
TVVSTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkzLDYgKzkzLDExIEBAIHZvaWQgRE9NVVJMOjpz
ZXRRdWVyeShjb25zdCBTdHJpbmcmIHF1ZXIKICAgICBtX3VybC5zZXRRdWVyeShxdWVyeSk7CiB9
CiAKK1N0cmluZyBET01VUkw6Om9yaWdpbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0KQoreworICAgIHJldHVybiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1f
dXJsLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0LnNjaGVtZVJlZ2lzdHJ5KCkpLT50b1N0cmluZygp
OworfQorCiBTdHJpbmcgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgQmxvYiYgYmxvYikKIHsKICAgICByZXR1cm4g
Y3JlYXRlUHVibGljVVJMKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGJsb2IpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL0RPTVVSTC5oCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0RP
TVVSTC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw2ICs1MSw4IEBAIHB1YmxpYzoKIAogICAgIFVS
TFNlYXJjaFBhcmFtcyYgc2VhcmNoUGFyYW1zKCk7CiAKKyAgICBTdHJpbmcgb3JpZ2luKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmKTsKKwogICAgIHN0YXRpYyBTdHJpbmcgY3JlYXRlT2JqZWN0VVJM
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBCbG9iJik7CiAgICAgc3RhdGljIHZvaWQgcmV2b2tl
T2JqZWN0VVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmKTsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvRE9NVVJMLmlkbAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9ET01VUkwuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBACiBdIGlu
dGVyZmFjZSBET01VUkwgewogICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBz
dGF0aWMgRE9NU3RyaW5nIGNyZWF0ZU9iamVjdFVSTChCbG9iIGJsb2IpOwogICAgIFtDYWxsV2l0
aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBzdGF0aWMgdm9pZCByZXZva2VPYmplY3RVUkwoRE9N
U3RyaW5nIHVybCk7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIHJlYWRv
bmx5IGF0dHJpYnV0ZSBVU1ZTdHJpbmcgb3JpZ2luOwogfTsKIAogRE9NVVJMIGltcGxlbWVudHMg
VVJMVXRpbHM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3Vt
ZW50LmNwcAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJl
Y3RvcnlEb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxOCw4ICs0MTgsOCBAQCB2b2lk
IEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpmaW5pc2goCiAgICAgSFRNTERvY3VtZW50UGFy
c2VyOjpmaW5pc2goKTsKIH0KIAotRlRQRGlyZWN0b3J5RG9jdW1lbnQ6OkZUUERpcmVjdG9yeURv
Y3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCi0gICAgOiBIVE1MRG9jdW1lbnQo
ZnJhbWUsIHVybCkKK0ZUUERpcmVjdG9yeURvY3VtZW50OjpGVFBEaXJlY3RvcnlEb2N1bWVudChG
cmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnkmIHNj
aGVtZVJlZ2lzdHJ5KQorICAgIDogSFRNTERvY3VtZW50KGZyYW1lLCB1cmwsIHNjaGVtZVJlZ2lz
dHJ5KQogewogI2lmICFMT0dfRElTQUJMRUQKICAgICBMb2dGVFAuc3RhdGUgPSBXVEZMb2dDaGFu
bmVsT247CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5o
CShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURv
Y3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDEzICszMCwxMyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIEZUUERpcmVjdG9yeURvY3VtZW50IGZpbmFsIDogcHVibGljIEhUTUxE
b2N1bWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxGVFBEaXJlY3RvcnlEb2N1bWVudD4g
Y3JlYXRlKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCisgICAgc3RhdGljIFJlZjxGVFBE
aXJlY3RvcnlEb2N1bWVudD4gY3JlYXRlKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFBhZ2VTY2hlbWVSZWdpc3RyeSYgc2NoZW1lUmVnaXN0cnkpCiAgICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBGVFBEaXJlY3RvcnlEb2N1bWVudChmcmFtZSwgdXJsKSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZUUERpcmVjdG9yeURvY3VtZW50KGZyYW1lLCB1
cmwsIHNjaGVtZVJlZ2lzdHJ5KSk7CiAgICAgfQogCiBwcml2YXRlOgotICAgIEZUUERpcmVjdG9y
eURvY3VtZW50KEZyYW1lKiwgY29uc3QgVVJMJik7CisgICAgRlRQRGlyZWN0b3J5RG9jdW1lbnQo
RnJhbWUqLCBjb25zdCBVUkwmLCBjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnkmKTsKICAgICBSZWY8
RG9jdW1lbnRQYXJzZXI+IGNyZWF0ZVBhcnNlcigpIG92ZXJyaWRlOwogfTsKIApJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAJKHJldmlzaW9uIDIwODM5OCkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMzMsNyArMzMzLDcgQEAgU3RyaW5nIEhUTUxBbmNob3JFbGVtZW50Ojp0YXJnZXQo
KSBjb25zdAogCiBTdHJpbmcgSFRNTEFuY2hvckVsZW1lbnQ6Om9yaWdpbigpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoaHJlZigpKS5nZXQoKS50b1N0cmluZygp
OworICAgIHJldHVybiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKGhyZWYoKSwgZG9jdW1lbnQoKS5z
Y2hlbWVSZWdpc3RyeSgpKS5nZXQoKS50b1N0cmluZygpOwogfQogCiBTdHJpbmcgSFRNTEFuY2hv
ckVsZW1lbnQ6OnRleHQoKQpAQCAtMzc4LDcgKzM3OCw3IEBAIHZvaWQgSFRNTEFuY2hvckVsZW1l
bnQ6OmhhbmRsZUNsaWNrKEV2ZW4KICNpZiBFTkFCTEUoRE9XTkxPQURfQVRUUklCVVRFKQogICAg
IGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmRvd25sb2FkQXR0
cmlidXRlRW5hYmxlZCgpKSB7CiAgICAgICAgIC8vIElnbm9yZSB0aGUgZG93bmxvYWQgYXR0cmli
dXRlIGNvbXBsZXRlbHkgaWYgdGhlIGhyZWYgVVJMIGlzIGNyb3NzIG9yaWdpbi4KLSAgICAgICAg
Ym9vbCBpc1NhbWVPcmlnaW4gPSBjb21wbGV0ZWRVUkwucHJvdG9jb2xJc0RhdGEoKSB8fCBkb2N1
bWVudCgpLnNlY3VyaXR5T3JpZ2luKCktPmNhblJlcXVlc3QoY29tcGxldGVkVVJMKTsKKyAgICAg
ICAgYm9vbCBpc1NhbWVPcmlnaW4gPSBjb21wbGV0ZWRVUkwucHJvdG9jb2xJc0RhdGEoKSB8fCBk
b2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCktPmNhblJlcXVlc3QoY29tcGxldGVkVVJMLCBkb2N1
bWVudCgpLnNjaGVtZVJlZ2lzdHJ5KCkpOwogICAgICAgICBpZiAoaXNTYW1lT3JpZ2luKQogICAg
ICAgICAgICAgZG93bmxvYWRBdHRyaWJ1dGUgPSBhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKGRvd25sb2FkQXR0cik7CiAgICAgICAgIGVsc2UgaWYgKGhhc0F0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24oZG93bmxvYWRBdHRyKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTERvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxE
b2N1bWVudC5jcHAJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TERvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIsOCArODIsOCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLUhUTUxEb2N1bWVudDo6
SFRNTERvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwsIERvY3VtZW50Q2xhc3NG
bGFncyBkb2N1bWVudENsYXNzZXMsIHVuc2lnbmVkIGNvbnN0cnVjdGlvbkZsYWdzKQotICAgIDog
RG9jdW1lbnQoZnJhbWUsIHVybCwgZG9jdW1lbnRDbGFzc2VzIHwgSFRNTERvY3VtZW50Q2xhc3Ms
IGNvbnN0cnVjdGlvbkZsYWdzKQorSFRNTERvY3VtZW50OjpIVE1MRG9jdW1lbnQoRnJhbWUqIGZy
YW1lLCBjb25zdCBVUkwmIHVybCwgY29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5JiBzY2hlbWVSZWdp
c3RyeSwgRG9jdW1lbnRDbGFzc0ZsYWdzIGRvY3VtZW50Q2xhc3NlcywgdW5zaWduZWQgY29uc3Ry
dWN0aW9uRmxhZ3MpCisgICAgOiBEb2N1bWVudChmcmFtZSwgdXJsLCBzY2hlbWVSZWdpc3RyeSwg
ZG9jdW1lbnRDbGFzc2VzIHwgSFRNTERvY3VtZW50Q2xhc3MsIGNvbnN0cnVjdGlvbkZsYWdzKQog
ewogICAgIGNsZWFyWE1MVmVyc2lvbigpOwogfQpAQCAtMjk3LDcgKzI5Nyw3IEBAIGJvb2wgSFRN
TERvY3VtZW50Ojppc0ZyYW1lU2V0KCkgY29uc3QKIAogUmVmPERvY3VtZW50PiBIVE1MRG9jdW1l
bnQ6OmNsb25lRG9jdW1lbnRXaXRob3V0Q2hpbGRyZW4oKSBjb25zdAogewotICAgIHJldHVybiBj
cmVhdGUobnVsbHB0ciwgdXJsKCkpOworICAgIHJldHVybiBjcmVhdGUobnVsbHB0ciwgdXJsKCks
IHNjaGVtZVJlZ2lzdHJ5KCkpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxEb2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3Vt
ZW50LmgJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3Vt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDE0ICsyOCwxNCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEhUTUxEb2N1bWVudCA6IHB1YmxpYyBEb2N1bWVudCB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZjxIVE1MRG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IFVS
TCYgdXJsKQorICAgIHN0YXRpYyBSZWY8SFRNTERvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1l
LCBjb25zdCBVUkwmIHVybCwgY29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5JiBzY2hlbWVSZWdpc3Ry
eSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEhUTUxEb2N1bWVudChmcmFt
ZSwgdXJsLCBIVE1MRG9jdW1lbnRDbGFzcykpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBIVE1MRG9jdW1lbnQoZnJhbWUsIHVybCwgc2NoZW1lUmVnaXN0cnksIEhUTUxEb2N1bWVudENs
YXNzKSk7CiAgICAgfQogCi0gICAgc3RhdGljIFJlZjxIVE1MRG9jdW1lbnQ+IGNyZWF0ZVN5bnRo
ZXNpemVkRG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKKyAgICBzdGF0aWMg
UmVmPEhUTUxEb2N1bWVudD4gY3JlYXRlU3ludGhlc2l6ZWREb2N1bWVudChGcmFtZSogZnJhbWUs
IGNvbnN0IFVSTCYgdXJsLCBjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnkmIHNjaGVtZVJlZ2lzdHJ5
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSFRNTERvY3VtZW50KGZyYW1l
LCB1cmwsIEhUTUxEb2N1bWVudENsYXNzLCBTeW50aGVzaXplZCkpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBIVE1MRG9jdW1lbnQoZnJhbWUsIHVybCwgc2NoZW1lUmVnaXN0cnksIEhU
TUxEb2N1bWVudENsYXNzLCBTeW50aGVzaXplZCkpOwogICAgIH0KIAogICAgIHZpcnR1YWwgfkhU
TUxEb2N1bWVudCgpOwpAQCAtNzQsNyArNzQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wg
aXNDYXNlU2Vuc2l0aXZlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAogcHJvdGVj
dGVkOgotICAgIEhUTUxEb2N1bWVudChGcmFtZSosIGNvbnN0IFVSTCYsIERvY3VtZW50Q2xhc3NG
bGFncyA9IDAsIHVuc2lnbmVkIGNvbnN0cnVjdGlvbkZsYWdzID0gMCk7CisgICAgSFRNTERvY3Vt
ZW50KEZyYW1lKiwgY29uc3QgVVJMJiwgY29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5JiwgRG9jdW1l
bnRDbGFzc0ZsYWdzID0gMCwgdW5zaWduZWQgY29uc3RydWN0aW9uRmxhZ3MgPSAwKTsKIAogcHJp
dmF0ZToKICAgICBib29sIGlzRnJhbWVTZXQoKSBjb25zdCBvdmVycmlkZTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAkocmV2aXNpb24gMjA4Mzk4KQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzc2LDcgKzM3Niw3IEBAIHZvaWQgSFRNTEltYWdlRWxlbWVudDo6c2V0UGljdHVyZUVsZW1l
bnQKICAgICBnUGljdHVyZU93bmVyTWFwLT5hZGQodGhpcywgcGljdHVyZUVsZW1lbnQtPmNyZWF0
ZVdlYWtQdHIoKSk7CiB9CiAgICAgCi11bnNpZ25lZCBIVE1MSW1hZ2VFbGVtZW50Ojp3aWR0aChi
b29sIGlnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cykKK3Vuc2lnbmVkIEhUTUxJbWFnZUVsZW1lbnQ6
OndpZHRoKGJvb2wgaWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKSBjb25zdAogewogICAgIGlmICgh
cmVuZGVyZXIoKSkgewogICAgICAgICAvLyBjaGVjayB0aGUgYXR0cmlidXRlIGZpcnN0IGZvciBh
biBleHBsaWNpdCBwaXhlbCB2YWx1ZQpAQCAtNDAxLDcgKzQwMSw3IEBAIHVuc2lnbmVkIEhUTUxJ
bWFnZUVsZW1lbnQ6OndpZHRoKGJvb2wgaWcKICAgICByZXR1cm4gYWRqdXN0Rm9yQWJzb2x1dGVa
b29tKHNuYXBwZWRJbnRSZWN0KGNvbnRlbnRSZWN0KS53aWR0aCgpLCAqYm94KTsKIH0KIAotdW5z
aWduZWQgSFRNTEltYWdlRWxlbWVudDo6aGVpZ2h0KGJvb2wgaWdub3JlUGVuZGluZ1N0eWxlc2hl
ZXRzKQordW5zaWduZWQgSFRNTEltYWdlRWxlbWVudDo6aGVpZ2h0KGJvb2wgaWdub3JlUGVuZGlu
Z1N0eWxlc2hlZXRzKSBjb25zdAogewogICAgIGlmICghcmVuZGVyZXIoKSkgewogICAgICAgICAv
LyBjaGVjayB0aGUgYXR0cmlidXRlIGZpcnN0IGZvciBhbiBleHBsaWNpdCBwaXhlbCB2YWx1ZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgJKHJldmlzaW9uIDIwODM5
OCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00Myw4ICs0Myw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkhUTUxJbWFnZUVs
ZW1lbnQoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHVuc2lnbmVkIHdpZHRoKGJvb2wgaWdub3Jl
UGVuZGluZ1N0eWxlc2hlZXRzID0gZmFsc2UpOwotICAgIFdFQkNPUkVfRVhQT1JUIHVuc2lnbmVk
IGhlaWdodChib29sIGlnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cyA9IGZhbHNlKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB1bnNpZ25lZCB3aWR0aChib29sIGlnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cyA9
IGZhbHNlKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB1bnNpZ25lZCBoZWlnaHQoYm9vbCBp
Z25vcmVQZW5kaW5nU3R5bGVzaGVldHMgPSBmYWxzZSkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VY
UE9SVCBpbnQgbmF0dXJhbFdpZHRoKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50IG5h
dHVyYWxIZWlnaHQoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQsNiArNzQsNyBAQAogI2luY2x1
ZGUgIk5vRXZlbnREaXNwYXRjaEFzc2VydGlvbi5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNs
dWRlICJQYWdlR3JvdXAuaCIKKyNpbmNsdWRlICJQYWdlU2NoZW1lUmVnaXN0cnkuaCIKICNpbmNs
dWRlICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJQcm9ncmVzc1Ry
YWNrZXIuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllckNvbXBvc2l0b3IuaCIKQEAgLTE5NDQsNyAr
MTk0NSw3IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6aXNTYWZlVG9Mb2FkVVJMKGMKICAgICB9
CiAKICAgICBGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLmZyYW1lKCk7Ci0gICAgaWYgKCFmcmFt
ZSB8fCAhZG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpLT5jYW5EaXNwbGF5KHVybCkpIHsKKyAg
ICBpZiAoIWZyYW1lIHx8ICFkb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCktPmNhbkRpc3BsYXko
dXJsLCBmcmFtZS0+c2NoZW1lUmVnaXN0cnkoKSkpIHsKICAgICAgICAgaWYgKGFjdGlvbklmSW52
YWxpZCA9PSBDb21wbGFpbikKICAgICAgICAgICAgIEZyYW1lTG9hZGVyOjpyZXBvcnRMb2NhbExv
YWRGYWlsZWQoZnJhbWUsIHVybC5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSk7CiAg
ICAgICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OmlzU2FmZVRvTG9hZFVSTCglcCkg
LSAlcyAtPiBGQUxTRSByZWplY3RlZCBieSBTZWN1cml0eU9yaWdpbiIsIHRoaXMsIHVybEZvckxv
Z2dpbmdNZWRpYSh1cmwpLnV0ZjgoKS5kYXRhKCkpOwpAQCAtNTY5OCw5ICs1Njk5LDkgQEAgY29u
c3QgU3RyaW5nJiBIVE1MTWVkaWFFbGVtZW50OjptZWRpYUNhYwogICAgIHJldHVybiBzaGFyZWRN
ZWRpYUNhY2hlRGlyZWN0b3J5KCk7CiB9CiAKLUhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2lu
Pj4gSFRNTE1lZGlhRWxlbWVudDo6b3JpZ2luc0luTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmIHBh
dGgpCitIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IEhUTUxNZWRpYUVsZW1lbnQ6Om9y
aWdpbnNJbk1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBQYWdlU2NoZW1lUmVn
aXN0cnkmIHNjaGVtZVJlZ2lzdHJ5KQogewotICAgIHJldHVybiBNZWRpYVBsYXllcjo6b3JpZ2lu
c0luTWVkaWFDYWNoZShwYXRoKTsKKyAgICByZXR1cm4gTWVkaWFQbGF5ZXI6Om9yaWdpbnNJbk1l
ZGlhQ2FjaGUocGF0aCwgc2NoZW1lUmVnaXN0cnkpOwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OmNsZWFyTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmIHBhdGgsIHN0ZDo6Y2hyb25vOjpzeXN0
ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSkKQEAgLTU3MDgsOSArNTcwOSw5IEBA
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y2xlYXJNZWRpYUNhY2hlKGMKICAgICBNZWRpYVBsYXll
cjo6Y2xlYXJNZWRpYUNhY2hlKHBhdGgsIG1vZGlmaWVkU2luY2UpOwogfQogCi12b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMoY29uc3QgU3RyaW5nJiBwYXRo
LCBjb25zdCBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+JiBvcmlnaW5zKQordm9pZCBI
VE1MTWVkaWFFbGVtZW50OjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKGNvbnN0IFN0cmluZyYg
cGF0aCwgY29uc3QgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiYgb3JpZ2lucywgY29u
c3QgUGFnZVNjaGVtZVJlZ2lzdHJ5JiBzY2hlbWVSZWdpc3RyeSkKIHsKLSAgICBNZWRpYVBsYXll
cjo6Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhwYXRoLCBvcmlnaW5zKTsKKyAgICBNZWRpYVBs
YXllcjo6Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhwYXRoLCBvcmlnaW5zLCBzY2hlbWVSZWdp
c3RyeSk7CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVzZXRNZWRpYUVuZ2luZXMoKQpA
QCAtNTczMSw3ICs1NzMyLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpwcml2YXRlQnJvd3Np
bmdTdAogTWVkaWFDb250cm9scyogSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFDb250cm9scygpIGNv
bnN0CiB7CiAjaWYgRU5BQkxFKE1FRElBX0NPTlRST0xTX1NDUklQVCkKLSAgICByZXR1cm4gMDsK
KyAgICByZXR1cm4gbnVsbHB0cjsKICNlbHNlCiAgICAgcmV0dXJuIHRvTWVkaWFDb250cm9scyh1
c2VyQWdlbnRTaGFkb3dSb290KCktPmZpcnN0Q2hpbGQoKSk7CiAjZW5kaWYKQEAgLTYxNDAsNyAr
NjE0MSw3IEBAIFN0cmluZyBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclJlZmUKICAgICBp
ZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICByZXR1cm4gU2VjdXJp
dHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJyZXJIZWFkZXIoZG9jdW1lbnQoKS5yZWZlcnJlclBvbGlj
eSgpLCBtX2N1cnJlbnRTcmMsIGZyYW1lLT5sb2FkZXIoKS5vdXRnb2luZ1JlZmVycmVyKCkpOwor
ICAgIHJldHVybiBTZWN1cml0eVBvbGljeTo6Z2VuZXJhdGVSZWZlcnJlckhlYWRlcihkb2N1bWVu
dCgpLnJlZmVycmVyUG9saWN5KCksIG1fY3VycmVudFNyYywgZnJhbWUtPmxvYWRlcigpLm91dGdv
aW5nUmVmZXJyZXIoKSwgZnJhbWUtPnNjaGVtZVJlZ2lzdHJ5KCkpOwogfQogCiBTdHJpbmcgSFRN
TE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJVc2VyQWdlbnQoKSBjb25zdApJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNjEs
NyArMzYxLDcgQEAgcHVibGljOgogICAgIC8vIG9mIG9uZSBvZiB0aGVtIGhlcmUuCiAgICAgdXNp
bmcgSFRNTEVsZW1lbnQ6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKLSAgICBib29sIGhhc1Np
bmdsZVNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gIW1fcGxheWVyIHx8IG1fcGxheWVy
LT5oYXNTaW5nbGVTZWN1cml0eU9yaWdpbigpOyB9CisgICAgYm9vbCBoYXNTaW5nbGVTZWN1cml0
eU9yaWdpbihjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnkmIHNjaGVtZVJlZ2lzdHJ5KSBjb25zdCB7
IHJldHVybiAhbV9wbGF5ZXIgfHwgbV9wbGF5ZXItPmhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKHNj
aGVtZVJlZ2lzdHJ5KTsgfQogICAgIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNGdWxsc2Ny
ZWVuKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc1N0YW5kYXJkRnVsbHNjcmVlbigpIGNv
bnN0OwpAQCAtMzg5LDkgKzM4OSw5IEBAIHB1YmxpYzoKICAgICAvLyBNZWRpYSBjYWNoZSBtYW5h
Z2VtZW50LgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNldE1lZGlhQ2FjaGVEaXJl
Y3RvcnkoY29uc3QgU3RyaW5nJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGNvbnN0IFN0
cmluZyYgbWVkaWFDYWNoZURpcmVjdG9yeSgpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBI
YXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnNJbk1lZGlhQ2FjaGUoY29uc3Qg
U3RyaW5nJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEhhc2hTZXQ8UmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPj4gb3JpZ2luc0luTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmLCBjb25zdCBQYWdl
U2NoZW1lUmVnaXN0cnkmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBjbGVhck1l
ZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9w
b2ludCBtb2RpZmllZFNpbmNlID0geyB9KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9p
ZCBjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKGNvbnN0IFN0cmluZyYsIGNvbnN0IEhhc2hTZXQ8
UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4mKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9p
ZCBjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKGNvbnN0IFN0cmluZyYsIGNvbnN0IEhhc2hTZXQ8
UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4mLCBjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnkmKTsKICAg
ICBzdGF0aWMgdm9pZCByZXNldE1lZGlhRW5naW5lcygpOwogCiAgICAgYm9vbCBpc1BsYXlpbmco
KSBjb25zdCB7IHJldHVybiBtX3BsYXlpbmc7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjEyLDcgKzIxMiw3IEBAIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MUGx1Z0lu
SW1hZ2UKIAogICAgIGlmIChkaXNwbGF5U3RhdGUoKSA9PSBEaXNwbGF5aW5nU25hcHNob3QpIHsK
ICAgICAgICAgYXV0byByZW5kZXJTbmFwc2hvdHRlZFBsdWdJbiA9IGNyZWF0ZVJlbmRlcmVyPFJl
bmRlclNuYXBzaG90dGVkUGx1Z0luPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwotICAgICAgICBy
ZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi0+dXBkYXRlU25hcHNob3QobV9zbmFwc2hvdEltYWdlKTsK
KyAgICAgICAgcmVuZGVyU25hcHNob3R0ZWRQbHVnSW4tPnVwZGF0ZVNuYXBzaG90KG1fc25hcHNo
b3RJbWFnZS5nZXQoKSk7CiAgICAgICAgIHJldHVybiBXVEZNb3ZlKHJlbmRlclNuYXBzaG90dGVk
UGx1Z0luKTsKICAgICB9CiAKQEAgLTM1Niw3ICszNTYsNyBAQCB2b2lkIEhUTUxQbHVnSW5JbWFn
ZUVsZW1lbnQ6OnVwZGF0ZVNuYXBzCiAgICAgYXV0byYgcmVuZGVyZXIgPSAqdGhpcy0+cmVuZGVy
ZXIoKTsKIAogICAgIGlmIChpczxSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbj4ocmVuZGVyZXIpKSB7
Ci0gICAgICAgIGRvd25jYXN0PFJlbmRlclNuYXBzaG90dGVkUGx1Z0luPihyZW5kZXJlcikudXBk
YXRlU25hcHNob3QoaW1hZ2UpOworICAgICAgICBkb3duY2FzdDxSZW5kZXJTbmFwc2hvdHRlZFBs
dWdJbj4ocmVuZGVyZXIpLnVwZGF0ZVNuYXBzaG90KGltYWdlLmdldCgpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCShy
ZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xOTAsOCArMTkwLDggQEAgdm9pZCBJbWFnZURvY3VtZW50UGFy
c2VyOjpmaW5pc2goKQogICAgIGRvY3VtZW50KCkuZmluaXNoZWRQYXJzaW5nKCk7CiB9CiAKLUlt
YWdlRG9jdW1lbnQ6OkltYWdlRG9jdW1lbnQoRnJhbWUmIGZyYW1lLCBjb25zdCBVUkwmIHVybCkK
LSAgICA6IEhUTUxEb2N1bWVudCgmZnJhbWUsIHVybCwgSW1hZ2VEb2N1bWVudENsYXNzKQorSW1h
Z2VEb2N1bWVudDo6SW1hZ2VEb2N1bWVudChGcmFtZSYgZnJhbWUsIGNvbnN0IFVSTCYgdXJsLCBj
b25zdCBQYWdlU2NoZW1lUmVnaXN0cnkmIHNjaGVtZVJlZ2lzdHJ5KQorICAgIDogSFRNTERvY3Vt
ZW50KCZmcmFtZSwgdXJsLCBzY2hlbWVSZWdpc3RyeSwgSW1hZ2VEb2N1bWVudENsYXNzKQogICAg
ICwgbV9pbWFnZUVsZW1lbnQobnVsbHB0cikKICAgICAsIG1faW1hZ2VTaXplSXNLbm93bihmYWxz
ZSkKICNpZiAhUExBVEZPUk0oSU9TKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURv
Y3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50
LmgJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw5ICszMyw5IEBAIGNsYXNzIEhUTUxJbWFnZUVsZW1l
bnQ7CiAKIGNsYXNzIEltYWdlRG9jdW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTERvY3VtZW50IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEltYWdlRG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSYgZnJh
bWUsIGNvbnN0IFVSTCYgdXJsKQorICAgIHN0YXRpYyBSZWY8SW1hZ2VEb2N1bWVudD4gY3JlYXRl
KEZyYW1lJiBmcmFtZSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3RyeSYg
c2NoZW1lUmVnaXN0cnkpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFn
ZURvY3VtZW50KGZyYW1lLCB1cmwpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1h
Z2VEb2N1bWVudChmcmFtZSwgdXJsLCBzY2hlbWVSZWdpc3RyeSkpOwogICAgIH0KIAogICAgIFdF
QkNPUkVfRVhQT1JUIEhUTUxJbWFnZUVsZW1lbnQqIGltYWdlRWxlbWVudCgpIGNvbnN0OwpAQCAt
NTEsNyArNTEsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBJbWFnZURvY3Vt
ZW50KEZyYW1lJiwgY29uc3QgVVJMJik7CisgICAgSW1hZ2VEb2N1bWVudChGcmFtZSYsIGNvbnN0
IFVSTCYsIGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3RyeSYpOwogCiAgICAgUmVmPERvY3VtZW50UGFy
c2VyPiBjcmVhdGVQYXJzZXIoKSBvdmVycmlkZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9NZWRpYURvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL01l
ZGlhRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L01lZGlhRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDMsOCArMTQzLDggQEAgdm9p
ZCBNZWRpYURvY3VtZW50UGFyc2VyOjphcHBlbmRCeXRlcyhEbwogICAgIGZpbmlzaCgpOwogfQog
ICAgIAotTWVkaWFEb2N1bWVudDo6TWVkaWFEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IFVS
TCYgdXJsKQotICAgIDogSFRNTERvY3VtZW50KGZyYW1lLCB1cmwsIE1lZGlhRG9jdW1lbnRDbGFz
cykKK01lZGlhRG9jdW1lbnQ6Ok1lZGlhRG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwm
IHVybCwgY29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5JiBzY2hlbWVSZWdpc3RyeSkKKyAgICA6IEhU
TUxEb2N1bWVudChmcmFtZSwgdXJsLCBzY2hlbWVSZWdpc3RyeSwgTWVkaWFEb2N1bWVudENsYXNz
KQogICAgICwgbV9yZXBsYWNlTWVkaWFFbGVtZW50VGltZXIoKnRoaXMsICZNZWRpYURvY3VtZW50
OjpyZXBsYWNlTWVkaWFFbGVtZW50VGltZXJGaXJlZCkKIHsKICAgICBzZXRDb21wYXRpYmlsaXR5
TW9kZShEb2N1bWVudENvbXBhdGliaWxpdHlNb2RlOjpRdWlya3NNb2RlKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvTWVkaWFEb2N1bWVudC5oCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL01lZGlhRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsOSArMzMsOSBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lZGlhRG9jdW1lbnQgZmluYWwgOiBwdWJs
aWMgSFRNTERvY3VtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPE1lZGlhRG9jdW1lbnQ+
IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQorICAgIHN0YXRpYyBSZWY8TWVk
aWFEb2N1bWVudD4gY3JlYXRlKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFBh
Z2VTY2hlbWVSZWdpc3RyeSYgc2NoZW1lUmVnaXN0cnkpCiAgICAgewotICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBNZWRpYURvY3VtZW50KGZyYW1lLCB1cmwpKTsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgTWVkaWFEb2N1bWVudChmcmFtZSwgdXJsLCBzY2hlbWVSZWdpc3RyeSkp
OwogICAgIH0KICAgICB2aXJ0dWFsIH5NZWRpYURvY3VtZW50KCk7CiAKQEAgLTQ0LDcgKzQ0LDcg
QEAgcHVibGljOgogICAgIFN0cmluZyBvdXRnb2luZ1JlZmVycmVyKCkgY29uc3QgeyByZXR1cm4g
bV9vdXRnb2luZ1JlZmVycmVyOyB9CiAKIHByaXZhdGU6Ci0gICAgTWVkaWFEb2N1bWVudChGcmFt
ZSosIGNvbnN0IFVSTCYpOworICAgIE1lZGlhRG9jdW1lbnQoRnJhbWUqLCBjb25zdCBVUkwmLCBj
b25zdCBQYWdlU2NoZW1lUmVnaXN0cnkmKTsKIAogICAgIFJlZjxEb2N1bWVudFBhcnNlcj4gY3Jl
YXRlUGFyc2VyKCkgb3ZlcnJpZGU7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2lu
RG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9j
dW1lbnQuY3BwCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL1BsdWdp
bkRvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDggKzEzOSw4IEBAIHZvaWQgUGx1
Z2luRG9jdW1lbnRQYXJzZXI6OmFwcGVuZEJ5dGVzKEQKICAgICB9CiB9CiAKLVBsdWdpbkRvY3Vt
ZW50OjpQbHVnaW5Eb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQotICAgIDog
SFRNTERvY3VtZW50KGZyYW1lLCB1cmwsIFBsdWdpbkRvY3VtZW50Q2xhc3MpCitQbHVnaW5Eb2N1
bWVudDo6UGx1Z2luRG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCwgY29uc3Qg
UGFnZVNjaGVtZVJlZ2lzdHJ5JiBzY2hlbWVSZWdpc3RyeSkKKyAgICA6IEhUTUxEb2N1bWVudChm
cmFtZSwgdXJsLCBzY2hlbWVSZWdpc3RyeSwgUGx1Z2luRG9jdW1lbnRDbGFzcykKICAgICAsIG1f
c2hvdWxkTG9hZFBsdWdpbk1hbnVhbGx5KHRydWUpCiB7CiAgICAgc2V0Q29tcGF0aWJpbGl0eU1v
ZGUoRG9jdW1lbnRDb21wYXRpYmlsaXR5TW9kZTo6UXVpcmtzTW9kZSk7CkBAIC0xNTksOSArMTU5
LDkgQEAgV2lkZ2V0KiBQbHVnaW5Eb2N1bWVudDo6cGx1Z2luV2lkZ2V0KCkKICAgICByZXR1cm4g
bnVsbHB0cjsKIH0KIAotdm9pZCBQbHVnaW5Eb2N1bWVudDo6c2V0UGx1Z2luRWxlbWVudChQYXNz
UmVmUHRyPEhUTUxQbHVnSW5FbGVtZW50PiBlbGVtZW50KQordm9pZCBQbHVnaW5Eb2N1bWVudDo6
c2V0UGx1Z2luRWxlbWVudChSZWZQdHI8SFRNTFBsdWdJbkVsZW1lbnQ+JiYgZWxlbWVudCkKIHsK
LSAgICBtX3BsdWdpbkVsZW1lbnQgPSBlbGVtZW50OworICAgIG1fcGx1Z2luRWxlbWVudCA9IFdU
Rk1vdmUoZWxlbWVudCk7CiB9CiAKIHZvaWQgUGx1Z2luRG9jdW1lbnQ6OmRldGFjaEZyb21QbHVn
aW5FbGVtZW50KCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL1BsdWdpbkRvY3VtZW50LmgJKHJldmlz
aW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMzMsMTIgKzMzLDEyIEBAIGNsYXNzIFdpZGdldDsKIAogY2xhc3MgUGx1
Z2luRG9jdW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTERvY3VtZW50IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmPFBsdWdpbkRvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwm
IHVybCkKKyAgICBzdGF0aWMgUmVmPFBsdWdpbkRvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1l
LCBjb25zdCBVUkwmIHVybCwgY29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5JiBzY2hlbWVSZWdpc3Ry
eSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBsdWdpbkRvY3VtZW50KGZy
YW1lLCB1cmwpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGx1Z2luRG9jdW1lbnQo
ZnJhbWUsIHVybCwgc2NoZW1lUmVnaXN0cnkpKTsKICAgICB9CiAKLSAgICB2b2lkIHNldFBsdWdp
bkVsZW1lbnQoUGFzc1JlZlB0cjxIVE1MUGx1Z0luRWxlbWVudD4pOworICAgIHZvaWQgc2V0UGx1
Z2luRWxlbWVudChSZWZQdHI8SFRNTFBsdWdJbkVsZW1lbnQ+JiYpOwogCiAgICAgV0VCQ09SRV9F
WFBPUlQgV2lkZ2V0KiBwbHVnaW5XaWRnZXQoKTsKICAgICBIVE1MUGx1Z0luRWxlbWVudCogcGx1
Z2luRWxlbWVudCgpIHsgcmV0dXJuIG1fcGx1Z2luRWxlbWVudC5nZXQoKTsgfQpAQCAtNTAsNyAr
NTAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzaG91bGRMb2FkUGx1Z2luTWFudWFsbHkoKSB7IHJl
dHVybiBtX3Nob3VsZExvYWRQbHVnaW5NYW51YWxseTsgfQogCiBwcml2YXRlOgotICAgIFBsdWdp
bkRvY3VtZW50KEZyYW1lKiwgY29uc3QgVVJMJik7CisgICAgUGx1Z2luRG9jdW1lbnQoRnJhbWUq
LCBjb25zdCBVUkwmLCBjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnkmKTsKIAogICAgIFJlZjxEb2N1
bWVudFBhcnNlcj4gY3JlYXRlUGFyc2VyKCkgb3ZlcnJpZGU7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvVGV4dERvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL1RleHREb2N1bWVudC5jcHAJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvVGV4dERvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksOCArMjksOCBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVRleHREb2N1bWVudDo6VGV4dERvY3VtZW50KEZyYW1l
KiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCi0gICAgOiBIVE1MRG9jdW1lbnQoZnJhbWUsIHVybCwg
VGV4dERvY3VtZW50Q2xhc3MpCitUZXh0RG9jdW1lbnQ6OlRleHREb2N1bWVudChGcmFtZSogZnJh
bWUsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnkmIHNjaGVtZVJlZ2lz
dHJ5KQorICAgIDogSFRNTERvY3VtZW50KGZyYW1lLCB1cmwsIHNjaGVtZVJlZ2lzdHJ5LCBUZXh0
RG9jdW1lbnRDbGFzcykKIHsKICAgICBzZXRDb21wYXRpYmlsaXR5TW9kZShEb2N1bWVudENvbXBh
dGliaWxpdHlNb2RlOjpRdWlya3NNb2RlKTsKICAgICBsb2NrQ29tcGF0aWJpbGl0eU1vZGUoKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dERvY3VtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RG9jdW1lbnQuaAkocmV2aXNpb24gMjA4Mzk4KQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzAs
MTMgKzMwLDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgVGV4dERvY3VtZW50IGZp
bmFsIDogcHVibGljIEhUTUxEb2N1bWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxUZXh0
RG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQorICAgIHN0YXRp
YyBSZWY8VGV4dERvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCwg
Y29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5JiBzY2hlbWVSZWdpc3RyeSkKICAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFRleHREb2N1bWVudChmcmFtZSwgdXJsKSk7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFRleHREb2N1bWVudChmcmFtZSwgdXJsLCBzY2hlbWVSZWdp
c3RyeSkpOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBUZXh0RG9jdW1lbnQoRnJhbWUqLCBjb25z
dCBVUkwmKTsKKyAgICBUZXh0RG9jdW1lbnQoRnJhbWUqLCBjb25zdCBVUkwmLCBjb25zdCBQYWdl
U2NoZW1lUmVnaXN0cnkmKTsKICAgICAKICAgICBSZWY8RG9jdW1lbnRQYXJzZXI+IGNyZWF0ZVBh
cnNlcigpIG92ZXJyaWRlOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvVVJMVXRpbHMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL1VSTFV0aWxzLmgJKHJldmlzaW9u
IDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvVVJMVXRpbHMuaAkod29ya2luZyBjb3B5
KQpAQCAtMjUsOCArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlNlY3VyaXR5
T3JpZ2luLmgiCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CkBAIC0zNyw4ICszNSw2IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0
OwogCi0gICAgU3RyaW5nIG9yaWdpbigpIGNvbnN0OwotCiAgICAgU3RyaW5nIHByb3RvY29sKCkg
Y29uc3Q7CiAgICAgdm9pZCBzZXRQcm90b2NvbChjb25zdCBTdHJpbmcmKTsKIApAQCAtNzQsMTMg
KzcwLDYgQEAgU3RyaW5nIFVSTFV0aWxzPFQ+Ojp0b1N0cmluZygpIGNvbnN0CiB9CiAKIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgotU3RyaW5nIFVSTFV0aWxzPFQ+OjpvcmlnaW4oKSBjb25zdAotewot
ICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0
ZShocmVmKCkpOwotICAgIHJldHVybiBvcmlnaW4tPnRvU3RyaW5nKCk7Ci19Ci0KLXRlbXBsYXRl
IDx0eXBlbmFtZSBUPgogU3RyaW5nIFVSTFV0aWxzPFQ+Ojpwcm90b2NvbCgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIG1ha2VTdHJpbmcoaHJlZigpLnByb3RvY29sKCksICc6Jyk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL1VSTFV0aWxzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL1VSTFV0aWxzLmlkbAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9VUkxVdGlscy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI4LDggKzI4LDYgQEAKIAogICAg
IFtOb3RFbnVtZXJhYmxlXSBET01TdHJpbmcgdG9TdHJpbmcoKTsKIAotICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBVU1ZTdHJpbmcgb3JpZ2luOwotCiAgICAgYXR0cmlidXRlIFVTVlN0cmluZyBwcm90
b2NvbDsKICAgICBhdHRyaWJ1dGUgVVNWU3RyaW5nIHVzZXJuYW1lOwogICAgIGF0dHJpYnV0ZSBV
U1ZTdHJpbmcgcGFzc3dvcmQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAJKHJldmlzaW9uIDIwODM5OCkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NDIsNyArMTQ0Miw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQKICAgICBpZiAoaW1hZ2UtPmlzU1ZHSW1hZ2UoKSkKICAg
ICAgICAgaW1hZ2UtPnNldEltYWdlT2JzZXJ2ZXIob2JzZXJ2ZXIpOwogCi0gICAgY2hlY2tPcmln
aW4oJmltYWdlRWxlbWVudCk7CisgICAgY2hlY2tPcmlnaW4oaW1hZ2VFbGVtZW50KTsKIAogICAg
IHJldHVybiB7IH07CiB9CkBAIC0xNDg2LDcgKzE0ODYsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBD
YW52YXNSZW5kZXJpbmdDb250ZXh0CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiB7
IH07CiAKLSAgICBjaGVja09yaWdpbigmc291cmNlQ2FudmFzKTsKKyAgICBjaGVja09yaWdpbihz
b3VyY2VDYW52YXMpOwogCiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKICAgICAv
LyBJZiB3ZSdyZSBkcmF3aW5nIGZyb20gb25lIGFjY2VsZXJhdGVkIGNhbnZhcyAyZCB0byBhbm90
aGVyLCBhdm9pZCBjYWxsaW5nIHNvdXJjZUNhbnZhcy5tYWtlUmVuZGVyaW5nUmVzdWx0c0F2YWls
YWJsZSgpCkBAIC0xNTU0LDcgKzE1NTQsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0CiAgICAgaWYgKCFzdGF0ZSgpLmhhc0ludmVydGlibGVUcmFuc2Zvcm0pCiAg
ICAgICAgIHJldHVybiB7IH07CiAKLSAgICBjaGVja09yaWdpbigmdmlkZW8pOworICAgIGNoZWNr
T3JpZ2luKHZpZGVvKTsKIAogI2lmIFVTRShDRykgfHwgKEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9D
QU5WQVMpICYmIFVTRShHU1RSRUFNRVJfR0wpICYmIFVTRShDQUlSTykpCiAgICAgaWYgKE5hdGl2
ZUltYWdlUHRyIGltYWdlID0gdmlkZW8ubmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpKSB7CkBA
IC0xODAxLDcgKzE4MDEsNyBAQCBFeGNlcHRpb25PcjxSZWZQdHI8Q2FudmFzUGF0dGVybj4+IENh
bnZhCiAgICAgaWYgKCFDYW52YXNQYXR0ZXJuOjpwYXJzZVJlcGV0aXRpb25UeXBlKHJlcGV0aXRp
b25UeXBlLCByZXBlYXRYLCByZXBlYXRZKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNZ
TlRBWF9FUlIgfTsKIAotICAgIGNoZWNrT3JpZ2luKCZ2aWRlb0VsZW1lbnQpOworICAgIGNoZWNr
T3JpZ2luKHZpZGVvRWxlbWVudCk7CiAgICAgYm9vbCBvcmlnaW5DbGVhbiA9IGNhbnZhcygpLm9y
aWdpbkNsZWFuKCk7CiAKICNpZiBVU0UoQ0cpIHx8IChFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FO
VkFTKSAmJiBVU0UoR1NUUkVBTUVSX0dMKSAmJiBVU0UoQ0FJUk8pKQpJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAJ
KHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCwxOSArNDgsMTkgQEAgYm9v
bCBDYW52YXNSZW5kZXJpbmdDb250ZXh0Ojp3b3VsZFRhaW50TwogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotYm9vbCBDYW52YXNSZW5kZXJpbmdDb250ZXh0Ojp3b3VsZFRhaW50T3JpZ2luKGNvbnN0
IEhUTUxDYW52YXNFbGVtZW50KiBzb3VyY2VDYW52YXMpCitib29sIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQ6OndvdWxkVGFpbnRPcmlnaW4oY29uc3QgSFRNTENhbnZhc0VsZW1lbnQmIHNvdXJjZUNh
bnZhcykKIHsKLSAgICBpZiAoY2FudmFzKCkub3JpZ2luQ2xlYW4oKSAmJiBzb3VyY2VDYW52YXMg
JiYgIXNvdXJjZUNhbnZhcy0+b3JpZ2luQ2xlYW4oKSkKKyAgICBpZiAoY2FudmFzKCkub3JpZ2lu
Q2xlYW4oKSAmJiAhc291cmNlQ2FudmFzLm9yaWdpbkNsZWFuKCkpCiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBDYW52YXNSZW5kZXJpbmdDb250ZXh0
Ojp3b3VsZFRhaW50T3JpZ2luKGNvbnN0IEhUTUxJbWFnZUVsZW1lbnQqIGVsZW1lbnQpCitib29s
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OndvdWxkVGFpbnRPcmlnaW4oY29uc3QgSFRNTEltYWdl
RWxlbWVudCYgZWxlbWVudCkKIHsKLSAgICBpZiAoIWVsZW1lbnQgfHwgIWNhbnZhcygpLm9yaWdp
bkNsZWFuKCkpCisgICAgaWYgKCFjYW52YXMoKS5vcmlnaW5DbGVhbigpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBhdXRvKiBjYWNoZWRJbWFnZSA9IGVsZW1lbnQtPmNhY2hlZEltYWdl
KCk7CisgICAgYXV0byogY2FjaGVkSW1hZ2UgPSBlbGVtZW50LmNhY2hlZEltYWdlKCk7CiAgICAg
aWYgKCFjYWNoZWRJbWFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC04MCwyMCArODAs
MjEgQEAgYm9vbCBDYW52YXNSZW5kZXJpbmdDb250ZXh0Ojp3b3VsZFRhaW50TwogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotYm9vbCBDYW52YXNSZW5kZXJpbmdDb250ZXh0Ojp3b3VsZFRhaW50T3Jp
Z2luKGNvbnN0IEhUTUxWaWRlb0VsZW1lbnQqIHZpZGVvKQorYm9vbCBDYW52YXNSZW5kZXJpbmdD
b250ZXh0Ojp3b3VsZFRhaW50T3JpZ2luKGNvbnN0IEhUTUxWaWRlb0VsZW1lbnQmIHZpZGVvKQog
ewogI2lmIEVOQUJMRShWSURFTykKICAgICAvLyBGSVhNRTogVGhpcyBjaGVjayBpcyBsaWtlbHkg
d3Jvbmcgd2hlbiBhIHJlZGlyZWN0IGlzIGludm9sdmVkLiBXZSBuZWVkCiAgICAgLy8gdG8gdGVz
dCB0aGUgZmluYWxVUkwuIFBsZWFzZSBiZSBjYXJlZnVsIHdoZW4gZml4aW5nIHRoaXMgaXNzdWUg
bm90IHRvCiAgICAgLy8gbWFrZSBjdXJyZW50U3JjIGJlIHRoZSBmaW5hbCBVUkwgYmVjYXVzZSB0
aGVuIHRoZQogICAgIC8vIEhUTUxNZWRpYUVsZW1lbnQuY3VycmVudFNyYyBET00gQVBJIHdvdWxk
IGxlYWsgcmVkaXJlY3QgZGVzdGluYXRpb25zIQotICAgIGlmICghdmlkZW8gfHwgIWNhbnZhcygp
Lm9yaWdpbkNsZWFuKCkpCisgICAgaWYgKCFjYW52YXMoKS5vcmlnaW5DbGVhbigpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoIXZpZGVvLT5oYXNTaW5nbGVTZWN1cml0eU9yaWdp
bigpKQorICAgIGF1dG8mIHNjaGVtZVJlZ2lzdHJ5ID0gdmlkZW8uZG9jdW1lbnQoKS5zY2hlbWVS
ZWdpc3RyeSgpOworICAgIGlmICghdmlkZW8uaGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4oc2NoZW1l
UmVnaXN0cnkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmICghKHZpZGVvLT5wbGF5
ZXIoKSAmJiB2aWRlby0+cGxheWVyKCktPmRpZFBhc3NDT1JTQWNjZXNzQ2hlY2soKSkgJiYgd291
bGRUYWludE9yaWdpbih2aWRlby0+Y3VycmVudFNyYygpKSkKKyAgICBpZiAoISh2aWRlby5wbGF5
ZXIoKSAmJiB2aWRlby5wbGF5ZXIoKS0+ZGlkUGFzc0NPUlNBY2Nlc3NDaGVjaygpKSAmJiB3b3Vs
ZFRhaW50T3JpZ2luKHZpZGVvLmN1cnJlbnRTcmMoKSwgc2NoZW1lUmVnaXN0cnkpKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKIAogI2Vsc2UKQEAgLTEwMyw3ICsxMDQsNyBAQCBib29sIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQ6OndvdWxkVGFpbnRPCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29s
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OndvdWxkVGFpbnRPcmlnaW4oY29uc3QgVVJMJiB1cmwp
Citib29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OndvdWxkVGFpbnRPcmlnaW4oY29uc3QgVVJM
JiB1cmwsIGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3RyeSYgc2NoZW1lUmVnaXN0cnkpCiB7CiAgICAg
aWYgKCFjYW52YXMoKS5vcmlnaW5DbGVhbigpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0x
MTEsMTMgKzExMiw3IEBAIGJvb2wgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6d291bGRUYWludE8K
ICAgICBpZiAodXJsLnByb3RvY29sSXNEYXRhKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIHJldHVybiAhY2FudmFzKCkuc2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdCh1cmwpOwot
fQotCi12b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OmNoZWNrT3JpZ2luKGNvbnN0IFVSTCYg
dXJsKQotewotICAgIGlmICh3b3VsZFRhaW50T3JpZ2luKHVybCkpCi0gICAgICAgIGNhbnZhcygp
LnNldE9yaWdpblRhaW50ZWQoKTsKKyAgICByZXR1cm4gIWNhbnZhcygpLnNlY3VyaXR5T3JpZ2lu
KCktPmNhblJlcXVlc3QodXJsLCBzY2hlbWVSZWdpc3RyeSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0LmgJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAt
NjIsMTcgKzYyLDE2IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBDYW52YXNSZW5kZXJpbmdD
b250ZXh0KEhUTUxDYW52YXNFbGVtZW50Jik7CiAgICAgYm9vbCB3b3VsZFRhaW50T3JpZ2luKGNv
bnN0IENhbnZhc1BhdHRlcm4qKTsKLSAgICBib29sIHdvdWxkVGFpbnRPcmlnaW4oY29uc3QgSFRN
TENhbnZhc0VsZW1lbnQqKTsKLSAgICBib29sIHdvdWxkVGFpbnRPcmlnaW4oY29uc3QgSFRNTElt
YWdlRWxlbWVudCopOwotICAgIGJvb2wgd291bGRUYWludE9yaWdpbihjb25zdCBIVE1MVmlkZW9F
bGVtZW50Kik7Ci0gICAgYm9vbCB3b3VsZFRhaW50T3JpZ2luKGNvbnN0IFVSTCYpOworICAgIGJv
b2wgd291bGRUYWludE9yaWdpbihjb25zdCBIVE1MQ2FudmFzRWxlbWVudCYpOworICAgIGJvb2wg
d291bGRUYWludE9yaWdpbihjb25zdCBIVE1MSW1hZ2VFbGVtZW50Jik7CisgICAgYm9vbCB3b3Vs
ZFRhaW50T3JpZ2luKGNvbnN0IEhUTUxWaWRlb0VsZW1lbnQmKTsKKyAgICBib29sIHdvdWxkVGFp
bnRPcmlnaW4oY29uc3QgVVJMJiwgY29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5Jik7CiAKLSAgICB0
ZW1wbGF0ZTxjbGFzcyBUPiB2b2lkIGNoZWNrT3JpZ2luKGNvbnN0IFQqIGFyZykKKyAgICB0ZW1w
bGF0ZTxjbGFzcy4uLiBUPiB2b2lkIGNoZWNrT3JpZ2luKFQmJi4uLiBhcmdzKQogICAgIHsKLSAg
ICAgICAgaWYgKHdvdWxkVGFpbnRPcmlnaW4oYXJnKSkKKyAgICAgICAgaWYgKHdvdWxkVGFpbnRP
cmlnaW4oYXJncy4uLikpCiAgICAgICAgICAgICBjYW52YXMoKS5zZXRPcmlnaW5UYWludGVkKCk7
CiAgICAgfQotICAgIHZvaWQgY2hlY2tPcmlnaW4oY29uc3QgVVJMJik7CiAKIHByaXZhdGU6CiAg
ICAgSFRNTENhbnZhc0VsZW1lbnQmIG1fY2FudmFzOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAJKHJldmlzaW9u
IDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0Nv
bnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzE0LDcgKzEzMTQsNyBAQCBFeGNlcHRpb25P
cjx2b2lkPiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0CiAKICAgICAgICAgcmV0dXJuIHsgfTsKICAg
ICB9LCBbJl0oY29uc3QgUmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+JiBpbWFnZSkgLT4gRXhjZXB0
aW9uT3I8dm9pZD4gewotICAgICAgICBpZiAod291bGRUYWludE9yaWdpbihpbWFnZS5nZXQoKSkp
CisgICAgICAgIGlmICghaW1hZ2UgfHwgd291bGRUYWludE9yaWdpbigqaW1hZ2UpKQogICAgICAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNFQ1VSSVRZX0VSUiB9OwogICAgICAgICBpZiAoaXND
b250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZUhUTUxJbWFnZUVsZW1lbnQoInRleFN1
YkltYWdlMkQiLCBpbWFnZS5nZXQoKSkpCiAgICAgICAgICAgICByZXR1cm4geyB9OwpAQCAtMTMz
Miw3ICsxMzMyLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gV2ViR0wyUmVuZGVyaW5nQ29udGV4dAog
ICAgICAgICB0ZXhTdWJJbWFnZTJESW1wbCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0
LCBmb3JtYXQsIHR5cGUsIGltYWdlRm9yUmVuZGVyLmdldCgpLCBHcmFwaGljc0NvbnRleHQzRDo6
SHRtbERvbUltYWdlLCBtX3VucGFja0ZsaXBZLCBtX3VucGFja1ByZW11bHRpcGx5QWxwaGEpOwog
ICAgICAgICByZXR1cm4geyB9OwogICAgIH0sIFsmXShjb25zdCBSZWZQdHI8SFRNTENhbnZhc0Vs
ZW1lbnQ+JiBjYW52YXMpIC0+IEV4Y2VwdGlvbk9yPHZvaWQ+IHsKLSAgICAgICAgaWYgKHdvdWxk
VGFpbnRPcmlnaW4oY2FudmFzLmdldCgpKSkKKyAgICAgICAgaWYgKCFjYW52YXMgfHwgd291bGRU
YWludE9yaWdpbigqY2FudmFzKSkKICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTRUNV
UklUWV9FUlIgfTsKICAgICAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFs
aWRhdGVIVE1MQ2FudmFzRWxlbWVudCgidGV4U3ViSW1hZ2UyRCIsIGNhbnZhcy5nZXQoKSkKICAg
ICAgICAgICAgIHx8ICF2YWxpZGF0ZVRleEZ1bmMoInRleFN1YkltYWdlMkQiLCBUZXhTdWJJbWFn
ZSwgU291cmNlSFRNTENhbnZhc0VsZW1lbnQsIHRhcmdldCwgbGV2ZWwsIEdyYXBoaWNzQ29udGV4
dDNEOjpOT05FLCBjYW52YXMtPndpZHRoKCksIGNhbnZhcy0+aGVpZ2h0KCksIDAsIGZvcm1hdCwg
dHlwZSwgeG9mZnNldCwgeW9mZnNldCkpCkBAIC0xMzQ1LDcgKzEzNDUsNyBAQCBFeGNlcHRpb25P
cjx2b2lkPiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0CiAgICAgICAgICAgICB0ZXhTdWJJbWFnZTJE
SW1wbCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCBmb3JtYXQsIHR5cGUsIGNhbnZh
cy0+Y29waWVkSW1hZ2UoKSwgR3JhcGhpY3NDb250ZXh0M0Q6Okh0bWxEb21DYW52YXMsIG1fdW5w
YWNrRmxpcFksIG1fdW5wYWNrUHJlbXVsdGlwbHlBbHBoYSk7CiAgICAgICAgIHJldHVybiB7IH07
CiAgICAgfSwgWyZdKGNvbnN0IFJlZlB0cjxIVE1MVmlkZW9FbGVtZW50PiYgdmlkZW8pIC0+IEV4
Y2VwdGlvbk9yPHZvaWQ+IHsKLSAgICAgICAgaWYgKHdvdWxkVGFpbnRPcmlnaW4odmlkZW8uZ2V0
KCkpKQorICAgICAgICBpZiAoIXZpZGVvIHx8IHdvdWxkVGFpbnRPcmlnaW4oKnZpZGVvKSkKICAg
ICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTRUNVUklUWV9FUlIgfTsKICAgICAgICAgaWYg
KGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVIVE1MVmlkZW9FbGVtZW50KCJ0
ZXhTdWJJbWFnZTJEIiwgdmlkZW8uZ2V0KCkpCiAgICAgICAgICAgICB8fCAhdmFsaWRhdGVUZXhG
dW5jKCJ0ZXhTdWJJbWFnZTJEIiwgVGV4U3ViSW1hZ2UsIFNvdXJjZUhUTUxWaWRlb0VsZW1lbnQs
IHRhcmdldCwgbGV2ZWwsIEdyYXBoaWNzQ29udGV4dDNEOjpOT05FLCB2aWRlby0+dmlkZW9XaWR0
aCgpLCB2aWRlby0+dmlkZW9IZWlnaHQoKSwgMCwgZm9ybWF0LCB0eXBlLCB4b2Zmc2V0LCB5b2Zm
c2V0KSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0LmNwcAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjE4LDcgKzYxOCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFdlYkdMUmVuZGVyaW5nQ29udGV4dDoK
IAogICAgICAgICByZXR1cm4geyB9OwogICAgIH0gLCBbJl0oY29uc3QgUmVmUHRyPEhUTUxJbWFn
ZUVsZW1lbnQ+JiBpbWFnZSkgLT4gRXhjZXB0aW9uT3I8dm9pZD4gewotICAgICAgICBpZiAod291
bGRUYWludE9yaWdpbihpbWFnZS5nZXQoKSkpCisgICAgICAgIGlmICghaW1hZ2UgfHwgd291bGRU
YWludE9yaWdpbigqaW1hZ2UpKQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNFQ1VS
SVRZX0VSUiB9OwogICAgICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxp
ZGF0ZUhUTUxJbWFnZUVsZW1lbnQoInRleFN1YkltYWdlMkQiLCBpbWFnZS5nZXQoKSkpCiAgICAg
ICAgICAgICByZXR1cm4geyB9OwpAQCAtNjM2LDcgKzYzNiw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+
IFdlYkdMUmVuZGVyaW5nQ29udGV4dDoKICAgICAgICAgdGV4U3ViSW1hZ2UyREltcGwodGFyZ2V0
LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgZm9ybWF0LCB0eXBlLCBpbWFnZUZvclJlbmRlci5n
ZXQoKSwgR3JhcGhpY3NDb250ZXh0M0Q6Okh0bWxEb21JbWFnZSwgbV91bnBhY2tGbGlwWSwgbV91
bnBhY2tQcmVtdWx0aXBseUFscGhhKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9LCBbJl0o
Y29uc3QgUmVmUHRyPEhUTUxDYW52YXNFbGVtZW50PiYgY2FudmFzKSAtPiBFeGNlcHRpb25Pcjx2
b2lkPiB7Ci0gICAgICAgIGlmICh3b3VsZFRhaW50T3JpZ2luKGNhbnZhcy5nZXQoKSkpCisgICAg
ICAgIGlmICghY2FudmFzIHx8IHdvdWxkVGFpbnRPcmlnaW4oKmNhbnZhcykpCiAgICAgICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgU0VDVVJJVFlfRVJSIH07CiAgICAgICAgIGlmIChpc0NvbnRl
eHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlSFRNTENhbnZhc0VsZW1lbnQoInRleFN1Yklt
YWdlMkQiLCBjYW52YXMuZ2V0KCkpCiAgICAgICAgICAgICB8fCAhdmFsaWRhdGVUZXhGdW5jKCJ0
ZXhTdWJJbWFnZTJEIiwgVGV4U3ViSW1hZ2UsIFNvdXJjZUhUTUxDYW52YXNFbGVtZW50LCB0YXJn
ZXQsIGxldmVsLCBmb3JtYXQsIGNhbnZhcy0+d2lkdGgoKSwgY2FudmFzLT5oZWlnaHQoKSwgMCwg
Zm9ybWF0LCB0eXBlLCB4b2Zmc2V0LCB5b2Zmc2V0KSkKQEAgLTY0OSw3ICs2NDksNyBAQCBFeGNl
cHRpb25Pcjx2b2lkPiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6CiAgICAgICAgICAgICB0ZXhTdWJJ
bWFnZTJESW1wbCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCBmb3JtYXQsIHR5cGUs
IGNhbnZhcy0+Y29waWVkSW1hZ2UoKSwgR3JhcGhpY3NDb250ZXh0M0Q6Okh0bWxEb21DYW52YXMs
IG1fdW5wYWNrRmxpcFksIG1fdW5wYWNrUHJlbXVsdGlwbHlBbHBoYSk7CiAgICAgICAgIHJldHVy
biB7IH07CiAgICAgfSwgWyZdKGNvbnN0IFJlZlB0cjxIVE1MVmlkZW9FbGVtZW50PiYgdmlkZW8p
IC0+IEV4Y2VwdGlvbk9yPHZvaWQ+IHsKLSAgICAgICAgaWYgKHdvdWxkVGFpbnRPcmlnaW4odmlk
ZW8uZ2V0KCkpKQorICAgICAgICBpZiAoIXZpZGVvIHx8IHdvdWxkVGFpbnRPcmlnaW4oKnZpZGVv
KSkKICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTRUNVUklUWV9FUlIgfTsKICAgICAg
ICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVIVE1MVmlkZW9FbGVt
ZW50KCJ0ZXhTdWJJbWFnZTJEIiwgdmlkZW8uZ2V0KCkpCiAgICAgICAgICAgICB8fCAhdmFsaWRh
dGVUZXhGdW5jKCJ0ZXhTdWJJbWFnZTJEIiwgVGV4U3ViSW1hZ2UsIFNvdXJjZUhUTUxWaWRlb0Vs
ZW1lbnQsIHRhcmdldCwgbGV2ZWwsIGZvcm1hdCwgdmlkZW8tPnZpZGVvV2lkdGgoKSwgdmlkZW8t
PnZpZGVvSGVpZ2h0KCksIDAsIGZvcm1hdCwgdHlwZSwgeG9mZnNldCwgeW9mZnNldCkpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlLmNwcAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMxODIsNyArMzE4Miw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFdlYkdMUmVuZGVyaW5nQ29udGV4
dEIKICAgICAgICAgICAgIG1fY29udGV4dC0+cGl4ZWxTdG9yZWkoR3JhcGhpY3NDb250ZXh0M0Q6
OlVOUEFDS19BTElHTk1FTlQsIG1fdW5wYWNrQWxpZ25tZW50KTsKICAgICAgICAgcmV0dXJuIHsg
fTsKICAgICB9LCBbJl0oY29uc3QgUmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+JiBpbWFnZSkgLT4g
RXhjZXB0aW9uT3I8dm9pZD4gewotICAgICAgICBpZiAod291bGRUYWludE9yaWdpbihpbWFnZS5n
ZXQoKSkpCisgICAgICAgIGlmICghaW1hZ2UgfHwgd291bGRUYWludE9yaWdpbigqaW1hZ2UpKQog
ICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNFQ1VSSVRZX0VSUiB9OwogICAgICAgICBp
ZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZUhUTUxJbWFnZUVsZW1lbnQo
InRleEltYWdlMkQiLCBpbWFnZS5nZXQoKSkpCiAgICAgICAgICAgICByZXR1cm4geyB9OwpAQCAt
MzIwMCw3ICszMjAwLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gV2ViR0xSZW5kZXJpbmdDb250ZXh0
QgogICAgICAgICB0ZXhJbWFnZTJESW1wbCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwg
Zm9ybWF0LCB0eXBlLCBpbWFnZUZvclJlbmRlci5nZXQoKSwgR3JhcGhpY3NDb250ZXh0M0Q6Okh0
bWxEb21JbWFnZSwgbV91bnBhY2tGbGlwWSwgbV91bnBhY2tQcmVtdWx0aXBseUFscGhhKTsKICAg
ICAgICAgcmV0dXJuIHsgfTsKICAgICB9LCBbJl0oY29uc3QgUmVmUHRyPEhUTUxDYW52YXNFbGVt
ZW50PiYgY2FudmFzKSAtPiBFeGNlcHRpb25Pcjx2b2lkPiB7Ci0gICAgICAgIGlmICh3b3VsZFRh
aW50T3JpZ2luKGNhbnZhcy5nZXQoKSkpCisgICAgICAgIGlmICghY2FudmFzIHx8IHdvdWxkVGFp
bnRPcmlnaW4oKmNhbnZhcykpCiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU0VDVVJJ
VFlfRVJSIH07CiAgICAgICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlk
YXRlSFRNTENhbnZhc0VsZW1lbnQoInRleEltYWdlMkQiLCBjYW52YXMuZ2V0KCkpIHx8ICF2YWxp
ZGF0ZVRleEZ1bmMoInRleEltYWdlMkQiLCBUZXhJbWFnZSwgU291cmNlSFRNTENhbnZhc0VsZW1l
bnQsIHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCBjYW52YXMtPndpZHRoKCksIGNhbnZh
cy0+aGVpZ2h0KCksIDAsIGZvcm1hdCwgdHlwZSwgMCwgMCkpCiAgICAgICAgICAgICByZXR1cm4g
eyB9OwpAQCAtMzIyOSw3ICszMjI5LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gV2ViR0xSZW5kZXJp
bmdDb250ZXh0QgogICAgICAgICAgICAgdGV4SW1hZ2UyREltcGwodGFyZ2V0LCBsZXZlbCwgaW50
ZXJuYWxmb3JtYXQsIGZvcm1hdCwgdHlwZSwgY2FudmFzLT5jb3BpZWRJbWFnZSgpLCBHcmFwaGlj
c0NvbnRleHQzRDo6SHRtbERvbUNhbnZhcywgbV91bnBhY2tGbGlwWSwgbV91bnBhY2tQcmVtdWx0
aXBseUFscGhhKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9LCBbJl0oY29uc3QgUmVmUHRy
PEhUTUxWaWRlb0VsZW1lbnQ+JiB2aWRlbykgLT4gRXhjZXB0aW9uT3I8dm9pZD4gewotICAgICAg
ICBpZiAod291bGRUYWludE9yaWdpbih2aWRlby5nZXQoKSkpCisgICAgICAgIGlmICghdmlkZW8g
fHwgd291bGRUYWludE9yaWdpbigqdmlkZW8pKQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IFNFQ1VSSVRZX0VSUiB9OwogICAgICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygp
IHx8ICF2YWxpZGF0ZUhUTUxWaWRlb0VsZW1lbnQoInRleEltYWdlMkQiLCB2aWRlby5nZXQoKSkK
ICAgICAgICAgICAgIHx8ICF2YWxpZGF0ZVRleEZ1bmMoInRleEltYWdlMkQiLCBUZXhJbWFnZSwg
U291cmNlSFRNTFZpZGVvRWxlbWVudCwgdGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHZp
ZGVvLT52aWRlb1dpZHRoKCksIHZpZGVvLT52aWRlb0hlaWdodCgpLCAwLCBmb3JtYXQsIHR5cGUs
IDAsIDApKQpAQCAtNDU1MSw3ICs0NTUxLDcgQEAgV2ViR0xCdWZmZXIqIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OgogICAgIHJldHVybiBudWxscHRyOwogfQogCi1ib29sIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlSFRNTEltYWdlRWxlbWVudChjb25zdCBjaGFyKiBmdW5j
dGlvbk5hbWUsIEhUTUxJbWFnZUVsZW1lbnQqIGltYWdlKQorYm9vbCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjp2YWxpZGF0ZUhUTUxJbWFnZUVsZW1lbnQoY29uc3QgY2hhciogZnVuY3Rpb25O
YW1lLCBjb25zdCBIVE1MSW1hZ2VFbGVtZW50KiBpbWFnZSkKIHsKICAgICBpZiAoIWltYWdlIHx8
ICFpbWFnZS0+Y2FjaGVkSW1hZ2UoKSkgewogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSwgZnVuY3Rpb25OYW1lLCAibm8gaW1hZ2UiKTsK
QEAgLTQ1NjUsNyArNDU2NSw3IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFs
aWRhdGUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjp2YWxpZGF0ZUhUTUxDYW52YXNFbGVtZW50KGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwg
SFRNTENhbnZhc0VsZW1lbnQqIGNhbnZhcykKK2Jvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6dmFsaWRhdGVIVE1MQ2FudmFzRWxlbWVudChjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNv
bnN0IEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXMpCiB7CiAgICAgaWYgKCFjYW52YXMgfHwgIWNh
bnZhcy0+YnVmZmVyKCkpIHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250
ZXh0M0Q6OklOVkFMSURfVkFMVUUsIGZ1bmN0aW9uTmFtZSwgIm5vIGNhbnZhcyIpOwpAQCAtNDU3
Niw3ICs0NTc2LDcgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZQog
CiAjaWYgRU5BQkxFKFZJREVPKQogCi1ib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZh
bGlkYXRlSFRNTFZpZGVvRWxlbWVudChjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEhUTUxWaWRl
b0VsZW1lbnQqIHZpZGVvKQorYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0
ZUhUTUxWaWRlb0VsZW1lbnQoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBIVE1MVmlk
ZW9FbGVtZW50KiB2aWRlbykKIHsKICAgICBpZiAoIXZpZGVvIHx8ICF2aWRlby0+dmlkZW9XaWR0
aCgpIHx8ICF2aWRlby0+dmlkZW9IZWlnaHQoKSkgewogICAgICAgICBzeW50aGVzaXplR0xFcnJv
cihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSwgZnVuY3Rpb25OYW1lLCAibm8gdmlk
ZW8iKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlLmgJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAkod29ya2luZyBjb3B5
KQpAQCAtNzQ5LDEwICs3NDksMTAgQEAgcHJvdGVjdGVkOgogICAgIFdlYkdMQnVmZmVyKiB2YWxp
ZGF0ZUJ1ZmZlckRhdGFQYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0MzRGVu
dW0gdGFyZ2V0LCBHQzNEZW51bSB1c2FnZSk7CiAKICAgICAvLyBIZWxwZXIgZnVuY3Rpb24gZm9y
IHRleHtTdWJ9SW1hZ2UyRCB0byBtYWtlIHN1cmUgaW1hZ2UgaXMgcmVhZHkuCi0gICAgYm9vbCB2
YWxpZGF0ZUhUTUxJbWFnZUVsZW1lbnQoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBIVE1MSW1h
Z2VFbGVtZW50Kik7Ci0gICAgYm9vbCB2YWxpZGF0ZUhUTUxDYW52YXNFbGVtZW50KGNvbnN0IGNo
YXIqIGZ1bmN0aW9uTmFtZSwgSFRNTENhbnZhc0VsZW1lbnQqKTsKKyAgICBib29sIHZhbGlkYXRl
SFRNTEltYWdlRWxlbWVudChjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IEhUTUxJbWFn
ZUVsZW1lbnQqKTsKKyAgICBib29sIHZhbGlkYXRlSFRNTENhbnZhc0VsZW1lbnQoY29uc3QgY2hh
ciogZnVuY3Rpb25OYW1lLCBjb25zdCBIVE1MQ2FudmFzRWxlbWVudCopOwogI2lmIEVOQUJMRShW
SURFTykKLSAgICBib29sIHZhbGlkYXRlSFRNTFZpZGVvRWxlbWVudChjb25zdCBjaGFyKiBmdW5j
dGlvbk5hbWUsIEhUTUxWaWRlb0VsZW1lbnQqKTsKKyAgICBib29sIHZhbGlkYXRlSFRNTFZpZGVv
RWxlbWVudChjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IEhUTUxWaWRlb0VsZW1lbnQq
KTsKICNlbmRpZgogCiAgICAgLy8gSGVscGVyIGZ1bmN0aW9ucyBmb3IgdmVydGV4QXR0cmliTmZ7
dn0uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNw
cAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNo
U3VwcG9ydC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDEyICs4NiwxMyBAQCBET01QYXRjaFN1
cHBvcnQ6On5ET01QYXRjaFN1cHBvcnQoKSB7IH0KIHZvaWQgRE9NUGF0Y2hTdXBwb3J0OjpwYXRj
aERvY3VtZW50KGNvbnN0IFN0cmluZyYgbWFya3VwKQogewogICAgIFJlZlB0cjxEb2N1bWVudD4g
bmV3RG9jdW1lbnQ7CisgICAgY29uc3QgYXV0byYgc2NoZW1lUmVnaXN0cnkgPSBtX2RvY3VtZW50
LT5zY2hlbWVSZWdpc3RyeSgpOwogICAgIGlmIChtX2RvY3VtZW50LT5pc0hUTUxEb2N1bWVudCgp
KQotICAgICAgICBuZXdEb2N1bWVudCA9IEhUTUxEb2N1bWVudDo6Y3JlYXRlKG51bGxwdHIsIFVS
TCgpKTsKKyAgICAgICAgbmV3RG9jdW1lbnQgPSBIVE1MRG9jdW1lbnQ6OmNyZWF0ZShudWxscHRy
LCBVUkwoKSwgc2NoZW1lUmVnaXN0cnkpOwogICAgIGVsc2UgaWYgKG1fZG9jdW1lbnQtPmlzWEhU
TUxEb2N1bWVudCgpKQotICAgICAgICBuZXdEb2N1bWVudCA9IFhNTERvY3VtZW50OjpjcmVhdGVY
SFRNTChudWxscHRyLCBVUkwoKSk7CisgICAgICAgIG5ld0RvY3VtZW50ID0gWE1MRG9jdW1lbnQ6
OmNyZWF0ZVhIVE1MKG51bGxwdHIsIFVSTCgpLCBzY2hlbWVSZWdpc3RyeSk7CiAgICAgZWxzZSBp
ZiAobV9kb2N1bWVudC0+aXNTVkdEb2N1bWVudCgpKQotICAgICAgICBuZXdEb2N1bWVudCA9IFhN
TERvY3VtZW50OjpjcmVhdGUobnVsbHB0ciwgVVJMKCkpOworICAgICAgICBuZXdEb2N1bWVudCA9
IFhNTERvY3VtZW50OjpjcmVhdGUobnVsbHB0ciwgVVJMKCksIHNjaGVtZVJlZ2lzdHJ5KTsKIAog
ICAgIEFTU0VSVChuZXdEb2N1bWVudCk7CiAgICAgUmVmUHRyPERvY3VtZW50UGFyc2VyPiBwYXJz
ZXI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHJldmlz
aW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU4LDYgKzU4LDcgQEAKICNpbmNsdWRlICJNYWluRnJhbWUuaCIK
ICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQ
YWdlU2NoZW1lUmVnaXN0cnkuaCIKICNpbmNsdWRlICJQb2xpY3lDaGVja2VyLmgiCiAjaW5jbHVk
ZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKQEAgLTEy
NSwxMCArMTI2LDEwIEBAIHN0YXRpYyBib29sIGFyZUFsbExvYWRlcnNQYWdlQ2FjaGVBY2NlcHQK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotRG9jdW1lbnRMb2FkZXI6OkRvY3VtZW50TG9hZGVyKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxLCBjb25zdCBTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0
ZURhdGEpCitEb2N1bWVudExvYWRlcjo6RG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXEsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSwgY29uc3QgUGFn
ZVNjaGVtZVJlZ2lzdHJ5JiBzY2hlbWVSZWdpc3RyeSkKICAgICA6IG1fZGVmZXJNYWluUmVzb3Vy
Y2VEYXRhTG9hZCh0cnVlKQogICAgICwgbV9mcmFtZShudWxscHRyKQotICAgICwgbV9jYWNoZWRS
ZXNvdXJjZUxvYWRlcihDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKHRoaXMpKQorICAgICwg
bV9jYWNoZWRSZXNvdXJjZUxvYWRlcihDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKHRoaXMs
IHNjaGVtZVJlZ2lzdHJ5KSkKICAgICAsIG1fd3JpdGVyKG1fZnJhbWUpCiAgICAgLCBtX29yaWdp
bmFsUmVxdWVzdChyZXEpCiAgICAgLCBtX3N1YnN0aXR1dGVEYXRhKHN1YnN0aXR1dGVEYXRhKQpA
QCAtMTQ5LDcgKzE1MCw4IEBAIERvY3VtZW50TG9hZGVyOjpEb2N1bWVudExvYWRlcihjb25zdCBS
ZXMKICAgICAsIG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIoMCkKICAg
ICAsIG1fZGF0YUxvYWRUaW1lcigqdGhpcywgJkRvY3VtZW50TG9hZGVyOjpoYW5kbGVTdWJzdGl0
dXRlRGF0YUxvYWROb3cpCiAgICAgLCBtX3N1YnJlc291cmNlTG9hZGVyc0FyZVBhZ2VDYWNoZUFj
Y2VwdGFibGUoZmFsc2UpCi0gICAgLCBtX2FwcGxpY2F0aW9uQ2FjaGVIb3N0KHN0ZDo6bWFrZV91
bmlxdWU8QXBwbGljYXRpb25DYWNoZUhvc3Q+KCp0aGlzKSkKKyAgICAsIG1fYXBwbGljYXRpb25D
YWNoZUhvc3Qoc3RkOjptYWtlX3VuaXF1ZTxBcHBsaWNhdGlvbkNhY2hlSG9zdD4oKnRoaXMsIHNj
aGVtZVJlZ2lzdHJ5KSkKKyAgICAsIG1fc2NoZW1lUmVnaXN0cnkoc2NoZW1lUmVnaXN0cnkpCiB7
CiB9CiAKQEAgLTUyNSw4ICs1MjcsOCBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjp3aWxsU2VuZFJl
cXVlc3QoUmVzCiAgICAgaWYgKGRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlKSB7CiAgICAgICAg
IC8vIElmIHRoZSByZWRpcmVjdGluZyB1cmwgaXMgbm90IGFsbG93ZWQgdG8gZGlzcGxheSBjb250
ZW50IGZyb20gdGhlIHRhcmdldCBvcmlnaW4sCiAgICAgICAgIC8vIHRoZW4gYmxvY2sgdGhlIHJl
ZGlyZWN0LgotICAgICAgICBSZWY8U2VjdXJpdHlPcmlnaW4+IHJlZGlyZWN0aW5nT3JpZ2luKFNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGUocmVkaXJlY3RSZXNwb25zZS51cmwoKSkpOwotICAgICAgICBp
ZiAoIXJlZGlyZWN0aW5nT3JpZ2luLmdldCgpLmNhbkRpc3BsYXkobmV3UmVxdWVzdC51cmwoKSkp
IHsKKyAgICAgICAgUmVmPFNlY3VyaXR5T3JpZ2luPiByZWRpcmVjdGluZ09yaWdpbihTZWN1cml0
eU9yaWdpbjo6Y3JlYXRlKHJlZGlyZWN0UmVzcG9uc2UudXJsKCksIG1fc2NoZW1lUmVnaXN0cnku
Z2V0KCkpKTsKKyAgICAgICAgaWYgKCFyZWRpcmVjdGluZ09yaWdpbi5nZXQoKS5jYW5EaXNwbGF5
KG5ld1JlcXVlc3QudXJsKCksIG1fc2NoZW1lUmVnaXN0cnkuZ2V0KCkpKSB7CiAgICAgICAgICAg
ICBGcmFtZUxvYWRlcjo6cmVwb3J0TG9jYWxMb2FkRmFpbGVkKG1fZnJhbWUsIG5ld1JlcXVlc3Qu
dXJsKCkuc3RyaW5nKCkpOwogICAgICAgICAgICAgY2FuY2VsTWFpblJlc291cmNlTG9hZChmcmFt
ZUxvYWRlcigpLT5jYW5jZWxsZWRFcnJvcihuZXdSZXF1ZXN0KSk7CiAgICAgICAgICAgICByZXR1
cm47CkBAIC01MzYsNyArNTM4LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6d2lsbFNlbmRSZXF1
ZXN0KFJlcwogICAgICAgICAgICAgY2FuY2VsTWFpblJlc291cmNlTG9hZChmcmFtZUxvYWRlcigp
LT5ibG9ja2VkRXJyb3IobmV3UmVxdWVzdCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9Ci0gICAgICAgIHRpbWluZygpLmFkZFJlZGlyZWN0KHJlZGlyZWN0UmVzcG9uc2UudXJsKCks
IG5ld1JlcXVlc3QudXJsKCkpOworICAgICAgICB0aW1pbmcoKS5hZGRSZWRpcmVjdChyZWRpcmVj
dFJlc3BvbnNlLnVybCgpLCBuZXdSZXF1ZXN0LnVybCgpLCBtX3NjaGVtZVJlZ2lzdHJ5LmdldCgp
KTsKICAgICB9CiAKICAgICBBU1NFUlQobV9mcmFtZSk7CkBAIC02NzEsNyArNjczLDcgQEAgdm9p
ZCBEb2N1bWVudExvYWRlcjo6cmVzcG9uc2VSZWNlaXZlZChjbwogICAgIAogICAgIGF1dG8gdXJs
ID0gcmVzcG9uc2UudXJsKCk7CiAKLSAgICBDb250ZW50U2VjdXJpdHlQb2xpY3kgY29udGVudFNl
Y3VyaXR5UG9saWN5KFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodXJsKSwgbV9mcmFtZSk7CisgICAg
Q29udGVudFNlY3VyaXR5UG9saWN5IGNvbnRlbnRTZWN1cml0eVBvbGljeShTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlKHVybCwgbV9zY2hlbWVSZWdpc3RyeS5nZXQoKSksIG1fZnJhbWUpOwogICAgIGNv
bnRlbnRTZWN1cml0eVBvbGljeS5kaWRSZWNlaXZlSGVhZGVycyhDb250ZW50U2VjdXJpdHlQb2xp
Y3lSZXNwb25zZUhlYWRlcnMocmVzcG9uc2UpKTsKICAgICBpZiAoIWNvbnRlbnRTZWN1cml0eVBv
bGljeS5hbGxvd0ZyYW1lQW5jZXN0b3JzKCptX2ZyYW1lLCB1cmwpKSB7CiAgICAgICAgIHN0b3BM
b2FkaW5nQWZ0ZXJYRnJhbWVPcHRpb25zT3JDb250ZW50U2VjdXJpdHlQb2xpY3lEZW5pZWQoaWRl
bnRpZmllciwgcmVzcG9uc2UpOwpAQCAtMTEzMCw3ICsxMTMyLDcgQEAgYm9vbCBEb2N1bWVudExv
YWRlcjo6bWF5YmVDcmVhdGVBcmNoaXZlKAogCiAjaWYgRU5BQkxFKFdFQl9BUkNISVZFKSB8fCBF
TkFCTEUoTUhUTUwpCiAKLXZvaWQgRG9jdW1lbnRMb2FkZXI6OnNldEFyY2hpdmUoUGFzc1JlZlB0
cjxBcmNoaXZlPiBhcmNoaXZlKQordm9pZCBEb2N1bWVudExvYWRlcjo6c2V0QXJjaGl2ZShSZWZQ
dHI8QXJjaGl2ZT4mJiBhcmNoaXZlKQogewogICAgIG1fYXJjaGl2ZSA9IGFyY2hpdmU7CiAgICAg
YWRkQWxsQXJjaGl2ZVJlc291cmNlcyhtX2FyY2hpdmUuZ2V0KCkpOwpAQCAtMTE1OCw5ICsxMTYw
LDkgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6YWRkQXJjaGl2ZVJlc291cmNlKAogICAgIG1fYXJj
aGl2ZVJlc291cmNlQ29sbGVjdGlvbi0+YWRkUmVzb3VyY2UoV1RGTW92ZShyZXNvdXJjZSkpOwog
fQogCi1QYXNzUmVmUHRyPEFyY2hpdmU+IERvY3VtZW50TG9hZGVyOjpwb3BBcmNoaXZlRm9yU3Vi
ZnJhbWUoY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IFVSTCYgdXJsKQorUmVmUHRyPEFy
Y2hpdmU+IERvY3VtZW50TG9hZGVyOjpwb3BBcmNoaXZlRm9yU3ViZnJhbWUoY29uc3QgU3RyaW5n
JiBmcmFtZU5hbWUsIGNvbnN0IFVSTCYgdXJsKQogewotICAgIHJldHVybiBtX2FyY2hpdmVSZXNv
dXJjZUNvbGxlY3Rpb24gPyBtX2FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24tPnBvcFN1YmZyYW1l
QXJjaGl2ZShmcmFtZU5hbWUsIHVybCkgOiBQYXNzUmVmUHRyPEFyY2hpdmU+KG51bGxwdHIpOwor
ICAgIHJldHVybiBtX2FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24gPyBtX2FyY2hpdmVSZXNvdXJj
ZUNvbGxlY3Rpb24tPnBvcFN1YmZyYW1lQXJjaGl2ZShmcmFtZU5hbWUsIHVybCkgOiBudWxscHRy
OwogfQogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpjbGVhckFyY2hpdmVSZXNvdXJjZXMoKQpAQCAt
MTE5Niw3ICsxMTk4LDcgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gRG9jdW1lbnRMb2FkZXI6
OgogICAgIHJldHVybiBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpLCByZXNw
b25zZS51cmwoKSwgcmVzcG9uc2UubWltZVR5cGUoKSwgcmVzcG9uc2UudGV4dEVuY29kaW5nTmFt
ZSgpLCBmcmFtZSgpLT50cmVlKCkudW5pcXVlTmFtZSgpKTsKIH0KIAotUGFzc1JlZlB0cjxBcmNo
aXZlUmVzb3VyY2U+IERvY3VtZW50TG9hZGVyOjpzdWJyZXNvdXJjZShjb25zdCBVUkwmIHVybCkg
Y29uc3QKK1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IERvY3VtZW50TG9hZGVyOjpzdWJyZXNvdXJj
ZShjb25zdCBVUkwmIHVybCkgY29uc3QKIHsKICAgICBpZiAoIWlzQ29tbWl0dGVkKCkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwpAQCAtMTU3OCw3ICsxNTgwLDcgQEAgdm9pZCBEb2N1bWVudExv
YWRlcjo6c3RhcnRMb2FkaW5nTWFpblJlcwogICAgICAgICAvLyBJZiB0aGUgbG9hZCB3YXMgYWJv
cnRlZCBieSBjbGVhcmluZyBtX3JlcXVlc3QsIGl0J3MgcG9zc2libGUgdGhlIEFwcGxpY2F0aW9u
Q2FjaGVIb3N0CiAgICAgICAgIC8vIGlzIG5vdyBpbiBhIHN0YXRlIHdoZXJlIHN0YXJ0aW5nIGFu
IGVtcHR5IGxvYWQgd2lsbCBiZSBpbmNvbnNpc3RlbnQuIFJlcGxhY2UgaXQgd2l0aAogICAgICAg
ICAvLyBhIG5ldyBBcHBsaWNhdGlvbkNhY2hlSG9zdC4KLSAgICAgICAgbV9hcHBsaWNhdGlvbkNh
Y2hlSG9zdCA9IHN0ZDo6bWFrZV91bmlxdWU8QXBwbGljYXRpb25DYWNoZUhvc3Q+KCp0aGlzKTsK
KyAgICAgICAgbV9hcHBsaWNhdGlvbkNhY2hlSG9zdCA9IHN0ZDo6bWFrZV91bmlxdWU8QXBwbGlj
YXRpb25DYWNoZUhvc3Q+KCp0aGlzLCBtX3NjaGVtZVJlZ2lzdHJ5LmdldCgpKTsKICAgICAgICAg
bWF5YmVMb2FkRW1wdHkoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNzEsNyAr
NzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgRm9ybVN0YXRlOwogICAgIGNs
YXNzIEZyYW1lOwogICAgIGNsYXNzIEZyYW1lTG9hZGVyOwotICAgIGNsYXNzIFBhZ2U7CisgICAg
Y2xhc3MgUGFnZVNjaGVtZVJlZ2lzdHJ5OwogICAgIGNsYXNzIFJlc291cmNlTG9hZGVyOwogICAg
IGNsYXNzIFNoYXJlZEJ1ZmZlcjsKICAgICBjbGFzcyBTdWJyZXNvdXJjZUxvYWRlcjsKQEAgLTg0
LDkgKzg0LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKICAgICAgICAgZnJpZW5kIGNsYXNzIENvbnRlbnRGaWx0ZXI7CiAgICAgcHVibGlj
OgotICAgICAgICBzdGF0aWMgUmVmPERvY3VtZW50TG9hZGVyPiBjcmVhdGUoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdWJzdGl0dXRlRGF0YSYgZGF0YSkKKyAgICAgICAg
c3RhdGljIFJlZjxEb2N1bWVudExvYWRlcj4gY3JlYXRlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgY29uc3QgU3Vic3RpdHV0ZURhdGEmIGRhdGEsIGNvbnN0IFBhZ2VTY2hlbWVSZWdp
c3RyeSYgc2NoZW1lUmVnaXN0cnkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IERvY3VtZW50TG9hZGVyKHJlcXVlc3QsIGRhdGEpKTsKKyAgICAgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IERvY3VtZW50TG9hZGVyKHJlcXVlc3QsIGRhdGEsIHNjaGVtZVJl
Z2lzdHJ5KSk7CiAgICAgICAgIH0KICAgICAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+RG9j
dW1lbnRMb2FkZXIoKTsKIApAQCAtOTgsNiArOTgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIFdFQkNPUkVfRVhQT1JUIEZyYW1lTG9hZGVyKiBmcmFtZUxvYWRlcigpIGNvbnN0Owog
ICAgICAgICBXRUJDT1JFX0VYUE9SVCBTdWJyZXNvdXJjZUxvYWRlciogbWFpblJlc291cmNlTG9h
ZGVyKCkgY29uc3Q7CiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IG1haW5SZXNvdXJjZURhdGEoKSBjb25zdDsKKyAgICAgICAgY29uc3QgUGFnZVNjaGVtZVJlZ2lz
dHJ5JiBzY2hlbWVSZWdpc3RyeSgpIGNvbnN0IHsgcmV0dXJuIG1fc2NoZW1lUmVnaXN0cnkuZ2V0
KCk7IH0KICAgICAgICAgCiAgICAgICAgIERvY3VtZW50V3JpdGVyJiB3cml0ZXIoKSBjb25zdCB7
IHJldHVybiBtX3dyaXRlcjsgfQogCkBAIC0xNTEsMTAgKzE1MiwxMCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1M
KQotICAgICAgICB2b2lkIHNldEFyY2hpdmUoUGFzc1JlZlB0cjxBcmNoaXZlPik7CisgICAgICAg
IHZvaWQgc2V0QXJjaGl2ZShSZWZQdHI8QXJjaGl2ZT4mJik7CiAgICAgICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgYWRkQWxsQXJjaGl2ZVJlc291cmNlcyhBcmNoaXZlKik7CiAgICAgICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgYWRkQXJjaGl2ZVJlc291cmNlKFJlZjxBcmNoaXZlUmVzb3VyY2U+JiYp
OwotICAgICAgICBQYXNzUmVmUHRyPEFyY2hpdmU+IHBvcEFyY2hpdmVGb3JTdWJmcmFtZShjb25z
dCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgVVJMJik7CisgICAgICAgIFJlZlB0cjxBcmNoaXZl
PiBwb3BBcmNoaXZlRm9yU3ViZnJhbWUoY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IFVS
TCYpOwogICAgICAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXIqIHBhcnNlZEFyY2hpdmVE
YXRhKCkgY29uc3Q7CiAKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzY2hlZHVsZUFyY2hp
dmVMb2FkKFJlc291cmNlTG9hZGVyJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CkBAIC0xNjgs
NyArMTY5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIC8vIFJldHVybiBhbiBB
cmNoaXZlUmVzb3VyY2UgZm9yIHRoZSBVUkwsIGVpdGhlciBjcmVhdGluZyBmcm9tIGxpdmUgZGF0
YSBvcgogICAgICAgICAvLyBwdWxsaW5nIGZyb20gdGhlIEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rp
b24KLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgUGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IHN1
YnJlc291cmNlKGNvbnN0IFVSTCYpIGNvbnN0OworICAgICAgICBXRUJDT1JFX0VYUE9SVCBSZWZQ
dHI8QXJjaGl2ZVJlc291cmNlPiBzdWJyZXNvdXJjZShjb25zdCBVUkwmKSBjb25zdDsKICAgICAg
ICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+PiBzdWJyZXNv
dXJjZXMoKSBjb25zdDsKIAogI2lmbmRlZiBOREVCVUcKQEAgLTI5MCw3ICsyOTEsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkg
Y29uc3Q7CiAKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIERvY3VtZW50
TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJik7Cisg
ICAgICAgIFdFQkNPUkVfRVhQT1JUIERvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJiwgY29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5Jik7CiAK
ICAgICAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGF0dGFjaFRvRnJhbWUoKTsKIApA
QCAtMzgzLDcgKzM4NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgUmVzb3VyY2VS
ZXF1ZXN0IG1fcmVxdWVzdDsKIAogICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7
Ci0gICAgCisKICAgICAgICAgUmVzb3VyY2VFcnJvciBtX21haW5Eb2N1bWVudEVycm9yOyAgICAK
IAogICAgICAgICBib29sIG1fb3JpZ2luYWxTdWJzdGl0dXRlRGF0YVdhc1ZhbGlkOwpAQCAtNDQ4
LDYgKzQ0OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgU2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeSBtX3Nob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgeyBTaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyB9OwogCiAgICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxBcHBsaWNhdGlvbkNhY2hlSG9zdD4gbV9hcHBsaWNhdGlvbkNhY2hlSG9zdDsKKyAg
ICAgICAgUmVmPGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3RyeT4gbV9zY2hlbWVSZWdpc3RyeTsKIAog
I2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPENv
bnRlbnRGaWx0ZXI+IG1fY29udGVudEZpbHRlcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCShyZXZpc2lvbiAyMDgzOTgp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODYsNyArODYsNyBAQCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6
OkRvY3VtZW50VGhyZWFkCiAgICAgLCBtX29wdGlvbnMob3B0aW9ucykKICAgICAsIG1fb3JpZ2lu
KFdURk1vdmUob3JpZ2luKSkKICAgICAsIG1fcmVmZXJyZXIoV1RGTW92ZShyZWZlcnJlcikpCi0g
ICAgLCBtX3NhbWVPcmlnaW5SZXF1ZXN0KHNlY3VyaXR5T3JpZ2luKCkuY2FuUmVxdWVzdChyZXF1
ZXN0LnVybCgpKSkKKyAgICAsIG1fc2FtZU9yaWdpblJlcXVlc3Qoc2VjdXJpdHlPcmlnaW4oKS5j
YW5SZXF1ZXN0KHJlcXVlc3QudXJsKCksIGRvY3VtZW50LnNjaGVtZVJlZ2lzdHJ5KCkpKQogICAg
ICwgbV9zaW1wbGVSZXF1ZXN0KHRydWUpCiAgICAgLCBtX2FzeW5jKGJsb2NraW5nQmVoYXZpb3Ig
PT0gTG9hZEFzeW5jaHJvbm91c2x5KQogICAgICwgbV9jb250ZW50U2VjdXJpdHlQb2xpY3koV1RG
TW92ZShjb250ZW50U2VjdXJpdHlQb2xpY3kpKQpAQCAtNDg0LDcgKzQ4NCw3IEBAIGJvb2wgRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyOjppc0FsbG93ZWQKICAgICBpZiAobV9vcHRpb25zLm1vZGUg
PT0gRmV0Y2hPcHRpb25zOjpNb2RlOjpOb0NvcnMpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0g
ICAgcmV0dXJuIG1fc2FtZU9yaWdpblJlcXVlc3QgJiYgc2VjdXJpdHlPcmlnaW4oKS5jYW5SZXF1
ZXN0KHVybCk7CisgICAgcmV0dXJuIG1fc2FtZU9yaWdpblJlcXVlc3QgJiYgc2VjdXJpdHlPcmln
aW4oKS5jYW5SZXF1ZXN0KHVybCwgbV9kb2N1bWVudC5zY2hlbWVSZWdpc3RyeSgpKTsKIH0KIAog
Ym9vbCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmlzWE1MSHR0cFJlcXVlc3QoKSBjb25zdApJ
bmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwCShyZXZpc2lvbiAy
MDgzOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTEsMTQgKzExMSwxNCBAQCB2b2lkIERvY3VtZW50V3JpdGVyOjpiZWdp
bigpCiBSZWY8RG9jdW1lbnQ+IERvY3VtZW50V3JpdGVyOjpjcmVhdGVEb2N1bWVudChjb25zdCBV
UkwmIHVybCkKIHsKICAgICBpZiAoIW1fZnJhbWUtPmxvYWRlcigpLnN0YXRlTWFjaGluZSgpLmlz
RGlzcGxheWluZ0luaXRpYWxFbXB0eURvY3VtZW50KCkgJiYgbV9mcmFtZS0+bG9hZGVyKCkuY2xp
ZW50KCkuc2hvdWxkQWx3YXlzVXNlUGx1Z2luRG9jdW1lbnQobV9taW1lVHlwZSkpCi0gICAgICAg
IHJldHVybiBQbHVnaW5Eb2N1bWVudDo6Y3JlYXRlKG1fZnJhbWUsIHVybCk7CisgICAgICAgIHJl
dHVybiBQbHVnaW5Eb2N1bWVudDo6Y3JlYXRlKG1fZnJhbWUsIHVybCwgbV9mcmFtZS0+c2NoZW1l
UmVnaXN0cnkoKSk7CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIGlmIChNSU1FVHlwZVJlZ2lzdHJ5
Ojppc1BERk1JTUVUeXBlKG1fbWltZVR5cGUpICYmIChtX2ZyYW1lLT5pc01haW5GcmFtZSgpIHx8
ICFtX2ZyYW1lLT5zZXR0aW5ncygpLnVzZUltYWdlRG9jdW1lbnRGb3JTdWJmcmFtZVBERigpKSkK
LSAgICAgICAgcmV0dXJuIFNpbmtEb2N1bWVudDo6Y3JlYXRlKG1fZnJhbWUsIHVybCk7CisgICAg
ICAgIHJldHVybiBTaW5rRG9jdW1lbnQ6OmNyZWF0ZShtX2ZyYW1lLCB1cmwsIG1fZnJhbWUtPnNj
aGVtZVJlZ2lzdHJ5KCkpOwogI2VuZGlmCiAgICAgaWYgKCFtX2ZyYW1lLT5sb2FkZXIoKS5jbGll
bnQoKS5oYXNIVE1MVmlldygpKQotICAgICAgICByZXR1cm4gRG9jdW1lbnQ6OmNyZWF0ZU5vblJl
bmRlcmVkUGxhY2Vob2xkZXIobV9mcmFtZSwgdXJsKTsKLSAgICByZXR1cm4gRE9NSW1wbGVtZW50
YXRpb246OmNyZWF0ZURvY3VtZW50KG1fbWltZVR5cGUsIG1fZnJhbWUsIHVybCk7CisgICAgICAg
IHJldHVybiBEb2N1bWVudDo6Y3JlYXRlTm9uUmVuZGVyZWRQbGFjZWhvbGRlcihtX2ZyYW1lLCB1
cmwsIG1fZnJhbWUtPnNjaGVtZVJlZ2lzdHJ5KCkpOworICAgIHJldHVybiBET01JbXBsZW1lbnRh
dGlvbjo6Y3JlYXRlRG9jdW1lbnQobV9taW1lVHlwZSwgbV9mcmFtZSwgdXJsLCBtX2ZyYW1lLT5z
Y2hlbWVSZWdpc3RyeSgpKTsKIH0KIAogdm9pZCBEb2N1bWVudFdyaXRlcjo6YmVnaW4oY29uc3Qg
VVJMJiB1cmxSZWZlcmVuY2UsIGJvb2wgZGlzcGF0Y2gsIERvY3VtZW50KiBvd25lckRvY3VtZW50
KQpAQCAtMTM1LDExICsxMzUsMTEgQEAgdm9pZCBEb2N1bWVudFdyaXRlcjo6YmVnaW4oY29uc3Qg
VVJMJiB1cgogICAgIC8vIElmIHRoZSBuZXcgZG9jdW1lbnQgaXMgZm9yIGEgUGx1Z2luIGJ1dCB3
ZSdyZSBzdXBwb3NlZCB0byBiZSBzYW5kYm94ZWQgZnJvbSBQbHVnaW5zLAogICAgIC8vIHRoZW4g
cmVwbGFjZSB0aGUgZG9jdW1lbnQgd2l0aCBvbmUgd2hvc2UgcGFyc2VyIHdpbGwgaWdub3JlIHRo
ZSBpbmNvbWluZyBkYXRhIChidWcgMzkzMjMpCiAgICAgaWYgKGRvY3VtZW50LT5pc1BsdWdpbkRv
Y3VtZW50KCkgJiYgZG9jdW1lbnQtPmlzU2FuZGJveGVkKFNhbmRib3hQbHVnaW5zKSkKLSAgICAg
ICAgZG9jdW1lbnQgPSBTaW5rRG9jdW1lbnQ6OmNyZWF0ZShtX2ZyYW1lLCB1cmwpOworICAgICAg
ICBkb2N1bWVudCA9IFNpbmtEb2N1bWVudDo6Y3JlYXRlKG1fZnJhbWUsIHVybCwgZG9jdW1lbnQt
PnNjaGVtZVJlZ2lzdHJ5KCkpOwogCiAgICAgLy8gRklYTUU6IERvIHdlIG5lZWQgdG8gY29uc3Vs
dCB0aGUgY29udGVudCBzZWN1cml0eSBwb2xpY3kgaGVyZSBhYm91dCBibG9ja2VkIHBsdWctaW5z
PwogCi0gICAgYm9vbCBzaG91bGRSZXVzZURlZmF1bHRWaWV3ID0gbV9mcmFtZS0+bG9hZGVyKCku
c3RhdGVNYWNoaW5lKCkuaXNEaXNwbGF5aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQoKSAmJiBtX2Zy
YW1lLT5kb2N1bWVudCgpLT5pc1NlY3VyZVRyYW5zaXRpb25Ubyh1cmwpOworICAgIGJvb2wgc2hv
dWxkUmV1c2VEZWZhdWx0VmlldyA9IG1fZnJhbWUtPmxvYWRlcigpLnN0YXRlTWFjaGluZSgpLmlz
RGlzcGxheWluZ0luaXRpYWxFbXB0eURvY3VtZW50KCkgJiYgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+
aXNTZWN1cmVUcmFuc2l0aW9uVG8odXJsLCBtX2ZyYW1lLT5zY2hlbWVSZWdpc3RyeSgpKTsKICAg
ICBpZiAoc2hvdWxkUmV1c2VEZWZhdWx0VmlldykKICAgICAgICAgZG9jdW1lbnQtPnRha2VET01X
aW5kb3dGcm9tKG1fZnJhbWUtPmRvY3VtZW50KCkpOwogICAgIGVsc2UKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiAr
NDIsNyBAQAogI2luY2x1ZGUgIkluUHJvY2Vzc0lEQlNlcnZlci5oIgogI2luY2x1ZGUgIlBhZ2Uu
aCIKICNpbmNsdWRlICJQYWdlQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIlBhZ2VTY2hlbWVS
ZWdpc3RyeS5oIgogI2luY2x1ZGUgIlBheW1lbnRDb29yZGluYXRvckNsaWVudC5oIgogI2luY2x1
ZGUgIlBsdWdpbkluZm9Qcm92aWRlci5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhLmgiCkBAIC0x
ODIsNyArMTgzLDcgQEAgdm9pZCBmaWxsV2l0aEVtcHR5Q2xpZW50cyhQYWdlQ29uZmlndXJhdAog
ICAgIHBhZ2VDb25maWd1cmF0aW9uLmJhY2tGb3J3YXJkQ2xpZW50ID0gYWRvcHRSZWYobmV3IEVt
cHR5QmFja0ZvcndhcmRDbGllbnQpOwogICAgIHBhZ2VDb25maWd1cmF0aW9uLmRpYWdub3N0aWNM
b2dnaW5nQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxFbXB0eURpYWdub3N0aWNMb2dnaW5nQ2xp
ZW50PigpOwogCi0gICAgcGFnZUNvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25DYWNoZVN0b3JhZ2Ug
PSBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y3JlYXRlKFN0cmluZygpLCBTdHJpbmcoKSk7Cisg
ICAgcGFnZUNvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25DYWNoZVN0b3JhZ2UgPSBBcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZTo6Y3JlYXRlKFN0cmluZygpLCBTdHJpbmcoKSwgUGFnZVNjaGVtZVJlZ2lz
dHJ5OjpjcmVhdGUoKSk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uZGF0YWJhc2VQcm92aWRlciA9
IGFkb3B0UmVmKG5ldyBFbXB0eURhdGFiYXNlUHJvdmlkZXIpOwogICAgIHBhZ2VDb25maWd1cmF0
aW9uLnBsdWdpbkluZm9Qcm92aWRlciA9IGFkb3B0UmVmKG5ldyBFbXB0eVBsdWdpbkluZm9Qcm92
aWRlcik7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyID0g
YWRvcHRSZWYobmV3IEVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKTsKQEAgLTI0OCw3ICsy
NDksNyBAQCB2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsCiAKIFJlZjxE
b2N1bWVudExvYWRlcj4gRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRG9jdW1lbnRMb2Fk
ZXIoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdWJzdGl0dXRlRGF0YSYg
c3Vic3RpdHV0ZURhdGEpCiB7Ci0gICAgcmV0dXJuIERvY3VtZW50TG9hZGVyOjpjcmVhdGUocmVx
dWVzdCwgc3Vic3RpdHV0ZURhdGEpOworICAgIHJldHVybiBEb2N1bWVudExvYWRlcjo6Y3JlYXRl
KHJlcXVlc3QsIHN1YnN0aXR1dGVEYXRhLCBQYWdlU2NoZW1lUmVnaXN0cnk6OmNyZWF0ZSgpKTsK
IH0KIAogUmVmUHRyPEZyYW1lPiBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVGcmFtZShj
b25zdCBVUkwmLCBjb25zdCBTdHJpbmcmLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqLCBjb25zdCBT
dHJpbmcmLCBib29sLCBpbnQsIGludCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODkxLDcgKzg5MSw3IEBAIHZvaWQgRnJhbWVM
b2FkZXI6OmxvYWRVUkxJbnRvQ2hpbGRGcmFtZSgKIH0KIAogI2lmIEVOQUJMRShXRUJfQVJDSElW
RSkgfHwgRU5BQkxFKE1IVE1MKQotdm9pZCBGcmFtZUxvYWRlcjo6bG9hZEFyY2hpdmUoUGFzc1Jl
ZlB0cjxBcmNoaXZlPiBhcmNoaXZlKQordm9pZCBGcmFtZUxvYWRlcjo6bG9hZEFyY2hpdmUoUmVm
UHRyPEFyY2hpdmU+JiYgYXJjaGl2ZSkKIHsKICAgICBBcmNoaXZlUmVzb3VyY2UqIG1haW5SZXNv
dXJjZSA9IGFyY2hpdmUtPm1haW5SZXNvdXJjZSgpOwogICAgIEFTU0VSVChtYWluUmVzb3VyY2Up
OwpAQCAtMTExNyw3ICsxMTE3LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZEZyYW1lUmVxdWVz
dChjb25zdAogICAgIFVSTCB1cmwgPSByZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnVybCgpOwog
CiAgICAgQVNTRVJUKG1fZnJhbWUuZG9jdW1lbnQoKSk7Ci0gICAgaWYgKCFyZXF1ZXN0LnJlcXVl
c3RlcigpLT5jYW5EaXNwbGF5KHVybCkpIHsKKyAgICBpZiAoIXJlcXVlc3QucmVxdWVzdGVyKCkt
PmNhbkRpc3BsYXkodXJsLCBtX2ZyYW1lLnNjaGVtZVJlZ2lzdHJ5KCkpKSB7CiAgICAgICAgIHJl
cG9ydExvY2FsTG9hZEZhaWxlZCgmbV9mcmFtZSwgdXJsLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRU
b0xlbmd0aCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTExMjYsNyArMTEyNiw3IEBA
IHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRGcmFtZVJlcXVlc3QoY29uc3QKICAgICBpZiAoYXJnc1Jl
ZmVycmVyLmlzRW1wdHkoKSkKICAgICAgICAgYXJnc1JlZmVycmVyID0gb3V0Z29pbmdSZWZlcnJl
cigpOwogCi0gICAgU3RyaW5nIHJlZmVycmVyID0gU2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVm
ZXJyZXJIZWFkZXIobV9mcmFtZS5kb2N1bWVudCgpLT5yZWZlcnJlclBvbGljeSgpLCB1cmwsIGFy
Z3NSZWZlcnJlcik7CisgICAgU3RyaW5nIHJlZmVycmVyID0gU2VjdXJpdHlQb2xpY3k6OmdlbmVy
YXRlUmVmZXJyZXJIZWFkZXIobV9mcmFtZS5kb2N1bWVudCgpLT5yZWZlcnJlclBvbGljeSgpLCB1
cmwsIGFyZ3NSZWZlcnJlciwgbV9mcmFtZS5zY2hlbWVSZWdpc3RyeSgpKTsKICAgICBpZiAocmVx
dWVzdC5zaG91bGRTZW5kUmVmZXJyZXIoKSA9PSBOZXZlclNlbmRSZWZlcnJlcikKICAgICAgICAg
cmVmZXJyZXIgPSBTdHJpbmcoKTsKIApAQCAtMTE4Miw3ICsxMTgyLDcgQEAgdm9pZCBGcmFtZUxv
YWRlcjo6bG9hZFVSTChjb25zdCBGcmFtZUxvYQogICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0
KG5ld1VSTCk7CiAgICAgaWYgKCFyZWZlcnJlci5pc0VtcHR5KCkpIHsKICAgICAgICAgcmVxdWVz
dC5zZXRIVFRQUmVmZXJyZXIocmVmZXJyZXIpOwotICAgICAgICBSZWZQdHI8U2VjdXJpdHlPcmln
aW4+IHJlZmVycmVyT3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcocmVm
ZXJyZXIpOworICAgICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHJlZmVycmVyT3JpZ2luID0g
U2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcocmVmZXJyZXIsIG1fZnJhbWUuc2NoZW1l
UmVnaXN0cnkoKSk7CiAgICAgICAgIGFkZEhUVFBPcmlnaW5JZk5lZWRlZChyZXF1ZXN0LCByZWZl
cnJlck9yaWdpbi0+dG9TdHJpbmcoKSk7CiAgICAgfQogI2lmIEVOQUJMRShDQUNIRV9QQVJUSVRJ
T05JTkcpCkBAIC0xNzg4LDggKzE3ODgsOCBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjb21taXRQcm92
aXNpb25hbExvYWQoCiAKICAgICBpZiAocGRsICYmIG1fZG9jdW1lbnRMb2FkZXIpIHsKICAgICAg
ICAgLy8gQ2hlY2sgaWYgdGhlIGRlc3RpbmF0aW9uIHBhZ2UgaXMgYWxsb3dlZCB0byBhY2Nlc3Mg
dGhlIHByZXZpb3VzIHBhZ2UncyB0aW1pbmcgaW5mb3JtYXRpb24uCi0gICAgICAgIFJlZjxTZWN1
cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4oU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShwZGwtPnJl
cXVlc3QoKS51cmwoKSkpOwotICAgICAgICBtX2RvY3VtZW50TG9hZGVyLT50aW1pbmcoKS5zZXRI
YXNTYW1lT3JpZ2luQXNQcmV2aW91c0RvY3VtZW50KHNlY3VyaXR5T3JpZ2luLmdldCgpLmNhblJl
cXVlc3QobV9wcmV2aW91c1VSTCkpOworICAgICAgICBSZWY8U2VjdXJpdHlPcmlnaW4+IHNlY3Vy
aXR5T3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUocGRsLT5yZXF1ZXN0KCkudXJsKCksIG1f
ZnJhbWUuc2NoZW1lUmVnaXN0cnkoKSkpOworICAgICAgICBtX2RvY3VtZW50TG9hZGVyLT50aW1p
bmcoKS5zZXRIYXNTYW1lT3JpZ2luQXNQcmV2aW91c0RvY3VtZW50KHNlY3VyaXR5T3JpZ2luLmdl
dCgpLmNhblJlcXVlc3QobV9wcmV2aW91c1VSTCwgbV9mcmFtZS5zY2hlbWVSZWdpc3RyeSgpKSk7
CiAgICAgfQogCiAgICAgLy8gQ2FsbCBjbGllbnRSZWRpcmVjdENhbmNlbGxlZE9yRmluaXNoZWQo
KSBoZXJlIHNvIHRoYXQgdGhlIGZyYW1lIGxvYWQgZGVsZWdhdGUgaXMgbm90aWZpZWQgdGhhdCB0
aGUgcmVkaXJlY3QncwpAQCAtMjcyMSw3ICsyNzIxLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9h
ZFBvc3RSZXF1ZXN0KGNvbnN0IAogdW5zaWduZWQgbG9uZyBGcmFtZUxvYWRlcjo6bG9hZFJlc291
cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFN0b3JlZENy
ZWRlbnRpYWxzIHN0b3JlZENyZWRlbnRpYWxzLCBDbGllbnRDcmVkZW50aWFsUG9saWN5IGNsaWVu
dENyZWRlbnRpYWxQb2xpY3ksIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpCiB7CiAgICAgQVNTRVJUKG1f
ZnJhbWUuZG9jdW1lbnQoKSk7Ci0gICAgU3RyaW5nIHJlZmVycmVyID0gU2VjdXJpdHlQb2xpY3k6
OmdlbmVyYXRlUmVmZXJyZXJIZWFkZXIobV9mcmFtZS5kb2N1bWVudCgpLT5yZWZlcnJlclBvbGlj
eSgpLCByZXF1ZXN0LnVybCgpLCBvdXRnb2luZ1JlZmVycmVyKCkpOworICAgIFN0cmluZyByZWZl
cnJlciA9IFNlY3VyaXR5UG9saWN5OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVyKG1fZnJhbWUuZG9j
dW1lbnQoKS0+cmVmZXJyZXJQb2xpY3koKSwgcmVxdWVzdC51cmwoKSwgb3V0Z29pbmdSZWZlcnJl
cigpLCBtX2ZyYW1lLnNjaGVtZVJlZ2lzdHJ5KCkpOwogICAgIAogICAgIFJlc291cmNlUmVxdWVz
dCBpbml0aWFsUmVxdWVzdCA9IHJlcXVlc3Q7CiAgICAgaW5pdGlhbFJlcXVlc3Quc2V0VGltZW91
dEludGVydmFsKDEwKTsKQEAgLTI5NTksNyArMjk1OSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmRp
c3BhdGNoVW5sb2FkRXZlbnRzKFUKIAogICAgIC8vIERvbid0IHJlbW92ZSBldmVudCBsaXN0ZW5l
cnMgZnJvbSBhIHRyYW5zaXRpb25hbCBlbXB0eSBkb2N1bWVudCAoc2VlIGJ1ZyAyODcxNiBmb3Ig
bW9yZSBpbmZvcm1hdGlvbikuCiAgICAgYm9vbCBrZWVwRXZlbnRMaXN0ZW5lcnMgPSBtX3N0YXRl
TWFjaGluZS5pc0Rpc3BsYXlpbmdJbml0aWFsRW1wdHlEb2N1bWVudCgpICYmIG1fcHJvdmlzaW9u
YWxEb2N1bWVudExvYWRlcgotICAgICAgICAmJiBtX2ZyYW1lLmRvY3VtZW50KCktPmlzU2VjdXJl
VHJhbnNpdGlvblRvKG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci0+dXJsKCkpOworICAgICAg
ICAmJiBtX2ZyYW1lLmRvY3VtZW50KCktPmlzU2VjdXJlVHJhbnNpdGlvblRvKG1fcHJvdmlzaW9u
YWxEb2N1bWVudExvYWRlci0+dXJsKCksIG1fZnJhbWUuc2NoZW1lUmVnaXN0cnkoKSk7CiAKICAg
ICBpZiAoIWtlZXBFdmVudExpc3RlbmVycykKICAgICAgICAgbV9mcmFtZS5kb2N1bWVudCgpLT5y
ZW1vdmVBbGxFdmVudExpc3RlbmVycygpOwpAQCAtMzIwMiw3ICszMjAyLDcgQEAgYm9vbCBGcmFt
ZUxvYWRlcjo6c2hvdWxkSW50ZXJydXB0TG9hZEZvcgogCiAgICAgc3dpdGNoIChkaXNwb3NpdGlv
bikgewogICAgIGNhc2UgWEZyYW1lT3B0aW9uc1NhbWVPcmlnaW46IHsKLSAgICAgICAgUmVmUHRy
PFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHVybCk7Cisg
ICAgICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZSh1cmwsIG1fZnJhbWUuc2NoZW1lUmVnaXN0cnkoKSk7CiAgICAgICAgIGlmICghb3JpZ2lu
LT5pc1NhbWVTY2hlbWVIb3N0UG9ydCh0b3BGcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdp
bigpKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBmb3IgKEZyYW1lKiBmcmFt
ZSA9IG1fZnJhbWUudHJlZSgpLnBhcmVudCgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgp
LnBhcmVudCgpKSB7CkBAIC0zMzQxLDcgKzMzNDEsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2Fk
RGlmZmVyZW50RG9jdW1lbnRJCiAgICAgICAgIHJlcXVlc3Quc2V0SFRUUE1ldGhvZCgiUE9TVCIp
OwogICAgICAgICByZXF1ZXN0LnNldEhUVFBCb2R5KFdURk1vdmUoZm9ybURhdGEpKTsKICAgICAg
ICAgcmVxdWVzdC5zZXRIVFRQQ29udGVudFR5cGUoaXRlbS5mb3JtQ29udGVudFR5cGUoKSk7Ci0g
ICAgICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhpdGVtLnJlZmVycmVyKCkpOworICAgICAgICBSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZy
b21TdHJpbmcoaXRlbS5yZWZlcnJlcigpLCBtX2ZyYW1lLnNjaGVtZVJlZ2lzdHJ5KCkpOwogICAg
ICAgICBhZGRIVFRQT3JpZ2luSWZOZWVkZWQocmVxdWVzdCwgc2VjdXJpdHlPcmlnaW4tPnRvU3Ry
aW5nKCkpOwogICAgICAgICBhZGRIVFRQVXBncmFkZUluc2VjdXJlUmVxdWVzdHNJZk5lZWRlZChy
ZXF1ZXN0KTsKIApAQCAtMzYzOSw3ICszNjM5LDcgQEAgUmVmUHRyPEZyYW1lPiBjcmVhdGVXaW5k
b3coRnJhbWUmIG9wZW5lcgogCiAgICAgLy8gRklYTUU6IFNldHRpbmcgdGhlIHJlZmVycmVyIHNo
b3VsZCBiZSB0aGUgY2FsbGVyJ3MgcmVzcG9uc2liaWxpdHkuCiAgICAgRnJhbWVMb2FkUmVxdWVz
dCByZXF1ZXN0V2l0aFJlZmVycmVyID0gcmVxdWVzdDsKLSAgICBTdHJpbmcgcmVmZXJyZXIgPSBT
ZWN1cml0eVBvbGljeTo6Z2VuZXJhdGVSZWZlcnJlckhlYWRlcihvcGVuZXJGcmFtZS5kb2N1bWVu
dCgpLT5yZWZlcnJlclBvbGljeSgpLCByZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnVybCgpLCBv
cGVuZXJGcmFtZS5sb2FkZXIoKS5vdXRnb2luZ1JlZmVycmVyKCkpOworICAgIFN0cmluZyByZWZl
cnJlciA9IFNlY3VyaXR5UG9saWN5OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVyKG9wZW5lckZyYW1l
LmRvY3VtZW50KCktPnJlZmVycmVyUG9saWN5KCksIHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCku
dXJsKCksIG9wZW5lckZyYW1lLmxvYWRlcigpLm91dGdvaW5nUmVmZXJyZXIoKSwgb3BlbmVyRnJh
bWUuc2NoZW1lUmVnaXN0cnkoKSk7CiAgICAgaWYgKCFyZWZlcnJlci5pc0VtcHR5KCkpCiAgICAg
ICAgIHJlcXVlc3RXaXRoUmVmZXJyZXIucmVzb3VyY2VSZXF1ZXN0KCkuc2V0SFRUUFJlZmVycmVy
KHJlZmVycmVyKTsKICAgICBGcmFtZUxvYWRlcjo6YWRkSFRUUE9yaWdpbklmTmVlZGVkKHJlcXVl
c3RXaXRoUmVmZXJyZXIucmVzb3VyY2VSZXF1ZXN0KCksIG9wZW5lckZyYW1lLmxvYWRlcigpLm91
dGdvaW5nT3JpZ2luKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHJl
dmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTMsNyArMTEzLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgbG9hZChjb25zdCBGcmFtZUxvYWRSZXF1ZXN0Jik7CiAKICNpZiBFTkFCTEUoV0VC
X0FSQ0hJVkUpIHx8IEVOQUJMRShNSFRNTCkKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGxvYWRB
cmNoaXZlKFBhc3NSZWZQdHI8QXJjaGl2ZT4pOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbG9h
ZEFyY2hpdmUoUmVmUHRyPEFyY2hpdmU+JiYpOwogI2VuZGlmCiAgICAgdW5zaWduZWQgbG9uZyBs
b2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFN0b3JlZENy
ZWRlbnRpYWxzLCBDbGllbnRDcmVkZW50aWFsUG9saWN5LCBSZXNvdXJjZUVycm9yJiwgUmVzb3Vy
Y2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBkYXRhKTsKIApJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODUsNyAr
MTg1LDcgQEAgdm9pZCBJbWFnZUxvYWRlcjo6dXBkYXRlRnJvbUVsZW1lbnQoKQogICAgICAgICBp
ZiAobV9sb2FkTWFudWFsbHkpIHsKICAgICAgICAgICAgIGJvb2wgYXV0b0xvYWRPdGhlckltYWdl
cyA9IGRvY3VtZW50LmNhY2hlZFJlc291cmNlTG9hZGVyKCkuYXV0b0xvYWRJbWFnZXMoKTsKICAg
ICAgICAgICAgIGRvY3VtZW50LmNhY2hlZFJlc291cmNlTG9hZGVyKCkuc2V0QXV0b0xvYWRJbWFn
ZXMoZmFsc2UpOwotICAgICAgICAgICAgbmV3SW1hZ2UgPSBuZXcgQ2FjaGVkSW1hZ2UoV1RGTW92
ZShyZXF1ZXN0KSwgbV9lbGVtZW50LmRvY3VtZW50KCkucGFnZSgpLT5zZXNzaW9uSUQoKSk7Cisg
ICAgICAgICAgICBuZXdJbWFnZSA9IG5ldyBDYWNoZWRJbWFnZShXVEZNb3ZlKHJlcXVlc3QpLCBt
X2VsZW1lbnQuZG9jdW1lbnQoKS5wYWdlKCktPnNlc3Npb25JRCgpLCBkb2N1bWVudC5zY2hlbWVS
ZWdpc3RyeSgpKTsKICAgICAgICAgICAgIG5ld0ltYWdlLT5zZXRTdGF0dXMoQ2FjaGVkUmVzb3Vy
Y2U6OlBlbmRpbmcpOwogICAgICAgICAgICAgbmV3SW1hZ2UtPnNldExvYWRpbmcodHJ1ZSk7CiAg
ICAgICAgICAgICBuZXdJbWFnZS0+c2V0T3duaW5nQ2FjaGVkUmVzb3VyY2VMb2FkZXIoJmRvY3Vt
ZW50LmNhY2hlZFJlc291cmNlTG9hZGVyKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVy
L0xvYWRUaW1pbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2Fk
VGltaW5nLmNwcAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0xv
YWRUaW1pbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCwxNSArNTgsMTUgQEAgdm9pZCBMb2Fk
VGltaW5nOjptYXJrU3RhcnRUaW1lKCkKICAgICBtX3JlZmVyZW5jZVdhbGxUaW1lID0gY3VycmVu
dFRpbWUoKTsKIH0KIAotdm9pZCBMb2FkVGltaW5nOjphZGRSZWRpcmVjdChjb25zdCBVUkwmIHJl
ZGlyZWN0aW5nVXJsLCBjb25zdCBVUkwmIHJlZGlyZWN0ZWRVcmwpCit2b2lkIExvYWRUaW1pbmc6
OmFkZFJlZGlyZWN0KGNvbnN0IFVSTCYgcmVkaXJlY3RpbmdVcmwsIGNvbnN0IFVSTCYgcmVkaXJl
Y3RlZFVybCwgY29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5JiBzY2hlbWVSZWdpc3RyeSkKIHsKICAg
ICBtX3JlZGlyZWN0Q291bnQrKzsKICAgICBpZiAoIW1fcmVkaXJlY3RTdGFydCkKICAgICAgICAg
bV9yZWRpcmVjdFN0YXJ0ID0gbV9mZXRjaFN0YXJ0OwogICAgIG1fcmVkaXJlY3RFbmQgPSBtX2Zl
dGNoU3RhcnQgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKICAgICAvLyBDaGVjayBp
ZiB0aGUgcmVkaXJlY3RlZCB1cmwgaXMgYWxsb3dlZCB0byBhY2Nlc3MgdGhlIHJlZGlyZWN0aW5n
IHVybCdzIHRpbWluZyBpbmZvcm1hdGlvbi4KLSAgICBSZWY8U2VjdXJpdHlPcmlnaW4+IHJlZGly
ZWN0ZWRTZWN1cml0eU9yaWdpbihTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHJlZGlyZWN0ZWRVcmwp
KTsKLSAgICBtX2hhc0Nyb3NzT3JpZ2luUmVkaXJlY3QgPSAhcmVkaXJlY3RlZFNlY3VyaXR5T3Jp
Z2luLmdldCgpLmNhblJlcXVlc3QocmVkaXJlY3RpbmdVcmwpOworICAgIFJlZjxTZWN1cml0eU9y
aWdpbj4gcmVkaXJlY3RlZFNlY3VyaXR5T3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUocmVk
aXJlY3RlZFVybCwgc2NoZW1lUmVnaXN0cnkpKTsKKyAgICBtX2hhc0Nyb3NzT3JpZ2luUmVkaXJl
Y3QgPSAhcmVkaXJlY3RlZFNlY3VyaXR5T3JpZ2luLmdldCgpLmNhblJlcXVlc3QocmVkaXJlY3Rp
bmdVcmwsIHNjaGVtZVJlZ2lzdHJ5KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRUaW1pbmcuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTG9hZFRpbWluZy5oCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTG9hZFRpbWluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICsz
MCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZyYW1lOworY2xhc3MgUGFnZVNj
aGVtZVJlZ2lzdHJ5OwogY2xhc3MgVVJMOwogCiBjbGFzcyBMb2FkVGltaW5nIHsKQEAgLTM5LDcg
KzQwLDcgQEAgcHVibGljOgogICAgIGRvdWJsZSBtb25vdG9uaWNUaW1lVG9Qc2V1ZG9XYWxsVGlt
ZShkb3VibGUpIGNvbnN0OwogCiAgICAgdm9pZCBtYXJrU3RhcnRUaW1lKCk7Ci0gICAgdm9pZCBh
ZGRSZWRpcmVjdChjb25zdCBVUkwmIHJlZGlyZWN0aW5nVXJsLCBjb25zdCBVUkwmIHJlZGlyZWN0
ZWRVcmwpOworICAgIHZvaWQgYWRkUmVkaXJlY3QoY29uc3QgVVJMJiByZWRpcmVjdGluZ1VybCwg
Y29uc3QgVVJMJiByZWRpcmVjdGVkVXJsLCBjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnkmKTsKIAog
ICAgIHZvaWQgbWFya1N0YXJ0VGltZUFuZEZldGNoU3RhcnQoKSB7IG1hcmtTdGFydFRpbWUoKTsg
bV9mZXRjaFN0YXJ0ID0gbV9zdGFydFRpbWU7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1BpbmdMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Q
aW5nTG9hZGVyLmNwcAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVy
L1BpbmdMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIHN0YXRpYyBD
b250ZW50RXh0ZW5zaW9uczo6QmxvY2tlZFN0YXR1cyAKIAogdm9pZCBQaW5nTG9hZGVyOjpsb2Fk
SW1hZ2UoRnJhbWUmIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKIHsKLSAgICBpZiAoIWZyYW1lLmRv
Y3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhbkRpc3BsYXkodXJsKSkgeworICAgIGlmICgh
ZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuRGlzcGxheSh1cmwsIGZyYW1l
LnNjaGVtZVJlZ2lzdHJ5KCkpKSB7CiAgICAgICAgIEZyYW1lTG9hZGVyOjpyZXBvcnRMb2NhbExv
YWRGYWlsZWQoJmZyYW1lLCB1cmwpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtODgsNyAr
ODgsNyBAQCB2b2lkIFBpbmdMb2FkZXI6OmxvYWRJbWFnZShGcmFtZSYgZnJhbWUsCiAgICAgICAg
IGRvY3VtZW50LT5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+dXBncmFkZUluc2VjdXJlUmVxdWVz
dElmTmVlZGVkKHJlcXVlc3QsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SW5zZWN1cmVSZXF1ZXN0
VHlwZTo6TG9hZCk7CiAKICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVy
TmFtZTo6Q2FjaGVDb250cm9sLCAibWF4LWFnZT0wIik7Ci0gICAgU3RyaW5nIHJlZmVycmVyID0g
U2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJyZXJIZWFkZXIoZnJhbWUuZG9jdW1lbnQoKS0+
cmVmZXJyZXJQb2xpY3koKSwgcmVxdWVzdC51cmwoKSwgZnJhbWUubG9hZGVyKCkub3V0Z29pbmdS
ZWZlcnJlcigpKTsKKyAgICBTdHJpbmcgcmVmZXJyZXIgPSBTZWN1cml0eVBvbGljeTo6Z2VuZXJh
dGVSZWZlcnJlckhlYWRlcihmcmFtZS5kb2N1bWVudCgpLT5yZWZlcnJlclBvbGljeSgpLCByZXF1
ZXN0LnVybCgpLCBmcmFtZS5sb2FkZXIoKS5vdXRnb2luZ1JlZmVycmVyKCksIGZyYW1lLnNjaGVt
ZVJlZ2lzdHJ5KCkpOwogICAgIGlmICghcmVmZXJyZXIuaXNFbXB0eSgpKQogICAgICAgICByZXF1
ZXN0LnNldEhUVFBSZWZlcnJlcihyZWZlcnJlcik7CiAgICAgZnJhbWUubG9hZGVyKCkuYWRkRXh0
cmFGaWVsZHNUb1N1YnJlc291cmNlUmVxdWVzdChyZXF1ZXN0KTsKQEAgLTEyMCwxMyArMTIwLDEz
IEBAIHZvaWQgUGluZ0xvYWRlcjo6c2VuZFBpbmcoRnJhbWUmIGZyYW1lLCAKICAgICBmcmFtZS5s
b2FkZXIoKS5hZGRFeHRyYUZpZWxkc1RvU3VicmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpOwogCiAg
ICAgU2VjdXJpdHlPcmlnaW4qIHNvdXJjZU9yaWdpbiA9IGZyYW1lLmRvY3VtZW50KCktPnNlY3Vy
aXR5T3JpZ2luKCk7Ci0gICAgUmVmPFNlY3VyaXR5T3JpZ2luPiBwaW5nT3JpZ2luKFNlY3VyaXR5
T3JpZ2luOjpjcmVhdGUocGluZ1VSTCkpOworICAgIFJlZjxTZWN1cml0eU9yaWdpbj4gcGluZ09y
aWdpbihTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHBpbmdVUkwsIGZyYW1lLnNjaGVtZVJlZ2lzdHJ5
KCkpKTsKICAgICBGcmFtZUxvYWRlcjo6YWRkSFRUUE9yaWdpbklmTmVlZGVkKHJlcXVlc3QsIHNv
dXJjZU9yaWdpbi0+dG9TdHJpbmcoKSk7CiAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQo
SFRUUEhlYWRlck5hbWU6OlBpbmdUbywgZGVzdGluYXRpb25VUkwpOwogICAgIGlmICghU2VjdXJp
dHlQb2xpY3k6OnNob3VsZEhpZGVSZWZlcnJlcihwaW5nVVJMLCBmcmFtZS5sb2FkZXIoKS5vdXRn
b2luZ1JlZmVycmVyKCkpKSB7CiAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhU
VFBIZWFkZXJOYW1lOjpQaW5nRnJvbSwgZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCkpOwogICAgICAg
ICBpZiAoIXNvdXJjZU9yaWdpbi0+aXNTYW1lU2NoZW1lSG9zdFBvcnQoJnBpbmdPcmlnaW4uZ2V0
KCkpKSB7Ci0gICAgICAgICAgICBTdHJpbmcgcmVmZXJyZXIgPSBTZWN1cml0eVBvbGljeTo6Z2Vu
ZXJhdGVSZWZlcnJlckhlYWRlcihmcmFtZS5kb2N1bWVudCgpLT5yZWZlcnJlclBvbGljeSgpLCBw
aW5nVVJMLCBmcmFtZS5sb2FkZXIoKS5vdXRnb2luZ1JlZmVycmVyKCkpOworICAgICAgICAgICAg
U3RyaW5nIHJlZmVycmVyID0gU2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJyZXJIZWFkZXIo
ZnJhbWUuZG9jdW1lbnQoKS0+cmVmZXJyZXJQb2xpY3koKSwgcGluZ1VSTCwgZnJhbWUubG9hZGVy
KCkub3V0Z29pbmdSZWZlcnJlcigpLCBmcmFtZS5zY2hlbWVSZWdpc3RyeSgpKTsKICAgICAgICAg
ICAgIGlmICghcmVmZXJyZXIuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIHJlcXVlc3Quc2V0
SFRUUFJlZmVycmVyKHJlZmVycmVyKTsKICAgICAgICAgfQpAQCAtMTYzLDcgKzE2Myw3IEBAIHZv
aWQgUGluZ0xvYWRlcjo6c2VuZFZpb2xhdGlvblJlcG9ydChGcmEKICAgICBib29sIHJlbW92ZUNv
b2tpZXMgPSB0cnVlOwogICAgIGlmIChEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZS5kb2N1bWVu
dCgpKSB7CiAgICAgICAgIGlmIChTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4gPSBkb2N1
bWVudC0+c2VjdXJpdHlPcmlnaW4oKSkgewotICAgICAgICAgICAgaWYgKHNlY3VyaXR5T3JpZ2lu
LT5pc1NhbWVTY2hlbWVIb3N0UG9ydChTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHJlcG9ydFVSTCku
cHRyKCkpKQorICAgICAgICAgICAgaWYgKHNlY3VyaXR5T3JpZ2luLT5pc1NhbWVTY2hlbWVIb3N0
UG9ydChTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHJlcG9ydFVSTCwgZG9jdW1lbnQtPnNjaGVtZVJl
Z2lzdHJ5KCkpLnB0cigpKSkKICAgICAgICAgICAgICAgICByZW1vdmVDb29raWVzID0gZmFsc2U7
CiAgICAgICAgIH0KICAgICB9CkBAIC0xNzIsNyArMTcyLDcgQEAgdm9pZCBQaW5nTG9hZGVyOjpz
ZW5kVmlvbGF0aW9uUmVwb3J0KEZyYQogCiAgICAgZnJhbWUubG9hZGVyKCkuYWRkRXh0cmFGaWVs
ZHNUb1N1YnJlc291cmNlUmVxdWVzdChyZXF1ZXN0KTsKIAotICAgIFN0cmluZyByZWZlcnJlciA9
IFNlY3VyaXR5UG9saWN5OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVyKGZyYW1lLmRvY3VtZW50KCkt
PnJlZmVycmVyUG9saWN5KCksIHJlcG9ydFVSTCwgZnJhbWUubG9hZGVyKCkub3V0Z29pbmdSZWZl
cnJlcigpKTsKKyAgICBTdHJpbmcgcmVmZXJyZXIgPSBTZWN1cml0eVBvbGljeTo6Z2VuZXJhdGVS
ZWZlcnJlckhlYWRlcihmcmFtZS5kb2N1bWVudCgpLT5yZWZlcnJlclBvbGljeSgpLCByZXBvcnRV
UkwsIGZyYW1lLmxvYWRlcigpLm91dGdvaW5nUmVmZXJyZXIoKSwgZnJhbWUuc2NoZW1lUmVnaXN0
cnkoKSk7CiAgICAgaWYgKCFyZWZlcnJlci5pc0VtcHR5KCkpCiAgICAgICAgIHJlcXVlc3Quc2V0
SFRUUFJlZmVycmVyKHJlZmVycmVyKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jl
c291cmNlTG9hZEluZm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRJbmZvLmNwcAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZEluZm8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3
IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkSW5mby5oIgogCiAjaW5jbHVkZSAiQ29udGVudEV4
dGVuc2lvbkFjdGlvbnMuaCIKKyNpbmNsdWRlICJQYWdlU2NoZW1lUmVnaXN0cnkuaCIKICNpbmNs
dWRlICJTZWN1cml0eU9yaWdpbi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMDUsOCAr
MTA2LDggQEAgdWludDE2X3QgcmVhZExvYWRUeXBlKGNvbnN0IFN0cmluZyYgbmFtZQogCiBib29s
IFJlc291cmNlTG9hZEluZm86OmlzVGhpcmRQYXJ0eSgpIGNvbnN0CiB7Ci0gICAgUmVmPFNlY3Vy
aXR5T3JpZ2luPiBtYWluRG9jdW1lbnRTZWN1cml0eU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpj
cmVhdGUobWFpbkRvY3VtZW50VVJMKTsKLSAgICBSZWY8U2VjdXJpdHlPcmlnaW4+IHJlc291cmNl
U2VjdXJpdHlPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHJlc291cmNlVVJMKTsKKyAg
ICBSZWY8U2VjdXJpdHlPcmlnaW4+IG1haW5Eb2N1bWVudFNlY3VyaXR5T3JpZ2luID0gU2VjdXJp
dHlPcmlnaW46OmNyZWF0ZShtYWluRG9jdW1lbnRVUkwsIFBhZ2VTY2hlbWVSZWdpc3RyeTo6Y3Jl
YXRlKCkpOworICAgIFJlZjxTZWN1cml0eU9yaWdpbj4gcmVzb3VyY2VTZWN1cml0eU9yaWdpbiA9
IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUocmVzb3VyY2VVUkwsIFBhZ2VTY2hlbWVSZWdpc3RyeTo6
Y3JlYXRlKCkpOwogCiAgICAgcmV0dXJuICFtYWluRG9jdW1lbnRTZWN1cml0eU9yaWdpbi0+Y2Fu
QWNjZXNzKCZyZXNvdXJjZVNlY3VyaXR5T3JpZ2luLmdldCgpKTsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcAkocmV2aXNpb24gMjA4
Mzk4KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2
ZXI6OmxvZ0ZyYW1lTmF2aWcKICAgICBpZiAodGFyZ2V0UHJpbWFyeURvbWFpbiA9PSBtYWluRnJh
bWVQcmltYXJ5RG9tYWluIHx8IHRhcmdldFByaW1hcnlEb21haW4gPT0gc291cmNlUHJpbWFyeURv
bWFpbikKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIGF1dG8gdGFyZ2V0T3JpZ2luID0gU2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZSh0YXJnZXRVUkwpOworICAgIGF1dG8gdGFyZ2V0T3JpZ2luID0g
U2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh0YXJnZXRVUkwsIGZyYW1lLnNjaGVtZVJlZ2lzdHJ5KCkp
OwogICAgIGF1dG8gdGFyZ2V0U3RhdGlzdGljcyA9IG1fc3RvcmUtPmVuc3VyZVJlc291cmNlU3Rh
dGlzdGljc0ZvclByaW1hcnlEb21haW4odGFyZ2V0UHJpbWFyeURvbWFpbik7CiAgICAgCiAgICAg
aWYgKGlzTWFpbkZyYW1lKQpAQCAtMTEyLDcgKzExMiw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXI6OmxvZ0ZyYW1lTmF2aWcKICAgICBlbHNlIHsKICAgICAgICAgdGFyZ2V0U3RhdGlzdGlj
cy5zdWJmcmFtZUhhc0JlZW5Mb2FkZWRCZWZvcmUgPSB0cnVlOwogCi0gICAgICAgIGF1dG8gbWFp
bkZyYW1lT3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShtYWluRnJhbWVVUkwpOworICAg
ICAgICBhdXRvIG1haW5GcmFtZU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUobWFpbkZy
YW1lVVJMLCBmcmFtZS5zY2hlbWVSZWdpc3RyeSgpKTsKICAgICAgICAgdGFyZ2V0U3RhdGlzdGlj
cy5zdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zLmFkZChtYWluRnJhbWVQcmltYXJ5RG9tYWlu
KTsKICAgICB9CiAgICAgCkBAIC0xNTcsNyArMTU3LDEwIEBAIHZvaWQgUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXI6OmxvZ0ZyYW1lTmF2aWcKICAgICAKIHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6Omxv
Z1N1YnJlc291cmNlTG9hZGluZyhjb25zdCBGcmFtZSogZnJhbWUsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgbmV3UmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25z
ZSkKIHsKKyAgICBBU1NFUlQoZnJhbWUpOwogICAgIEFTU0VSVChmcmFtZS0+cGFnZSgpKTsKKyAg
ICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIXNob3VsZExvZyhmcmFt
ZS0+cGFnZSgpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTY1LDcgKzE2OCw3IEBAIHZvaWQgUmVz
b3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ1N1YnJlc291cmMKICAgICBib29sIGlzUmVkaXJlY3QgPSBp
czN4eFJlZGlyZWN0KHJlZGlyZWN0UmVzcG9uc2UpOwogICAgIGNvbnN0IFVSTCYgc291cmNlVVJM
ID0gcmVkaXJlY3RSZXNwb25zZS51cmwoKTsKICAgICBjb25zdCBVUkwmIHRhcmdldFVSTCA9IG5l
d1JlcXVlc3QudXJsKCk7Ci0gICAgY29uc3QgVVJMJiBtYWluRnJhbWVVUkwgPSBmcmFtZSA/IGZy
YW1lLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpLT51cmwoKSA6IFVSTCgpOworICAgIGNvbnN0IFVS
TCYgbWFpbkZyYW1lVVJMID0gZnJhbWUtPm1haW5GcmFtZSgpLmRvY3VtZW50KCktPnVybCgpOwog
ICAgIAogICAgIGF1dG8gdGFyZ2V0SG9zdCA9IHRhcmdldFVSTC5ob3N0KCk7CiAgICAgYXV0byBt
YWluRnJhbWVIb3N0ID0gbWFpbkZyYW1lVVJMLmhvc3QoKTsKQEAgLTE4NSw3ICsxODgsNyBAQCB2
b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dTdWJyZXNvdXJjCiAKICAgICBhdXRvJiB0YXJn
ZXRTdGF0aXN0aWNzID0gbV9zdG9yZS0+ZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFy
eURvbWFpbih0YXJnZXRQcmltYXJ5RG9tYWluKTsKIAotICAgIGF1dG8gbWFpbkZyYW1lT3JpZ2lu
ID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShtYWluRnJhbWVVUkwpOworICAgIGF1dG8gbWFpbkZy
YW1lT3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShtYWluRnJhbWVVUkwsIGZyYW1lLT5z
Y2hlbWVSZWdpc3RyeSgpKTsKICAgICB0YXJnZXRTdGF0aXN0aWNzLnN1YnJlc291cmNlVW5kZXJU
b3BGcmFtZU9yaWdpbnMuYWRkKG1haW5GcmFtZVByaW1hcnlEb21haW4pOwogCiAgICAgaWYgKGlz
UmVkaXJlY3QpIHsKQEAgLTI0Niw3ICsyNDksNyBAQCB2b2lkIFJlc291cmNlTG9hZE9ic2VydmVy
Ojpsb2dXZWJTb2NrZXRMCiAKICAgICBhdXRvJiB0YXJnZXRTdGF0aXN0aWNzID0gbV9zdG9yZS0+
ZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbih0YXJnZXRQcmltYXJ5RG9t
YWluKTsKICAgICAKLSAgICBhdXRvIG1haW5GcmFtZU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpj
cmVhdGUobWFpbkZyYW1lVVJMKTsKKyAgICBhdXRvIG1haW5GcmFtZU9yaWdpbiA9IFNlY3VyaXR5
T3JpZ2luOjpjcmVhdGUobWFpbkZyYW1lVVJMLCBmcmFtZS0+c2NoZW1lUmVnaXN0cnkoKSk7CiAg
ICAgdGFyZ2V0U3RhdGlzdGljcy5zdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5zLmFkZCht
YWluRnJhbWVQcmltYXJ5RG9tYWluKTsKICAgICAKICAgICArK3RhcmdldFN0YXRpc3RpY3Muc3Vi
cmVzb3VyY2VIYXNCZWVuU3VicmVzb3VyY2VDb3VudDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI4LDcgKzEy
OCw3IEBAIGJvb2wgUmVzb3VyY2VMb2FkZXI6OmluaXQoY29uc3QgUmVzb3VyY2UKICAgICAKICAg
ICBtX2RlZmVyc0xvYWRpbmcgPSBtX29wdGlvbnMuZGVmZXJzTG9hZGluZ1BvbGljeSA9PSBEZWZl
cnNMb2FkaW5nUG9saWN5OjpBbGxvd0RlZmVyc0xvYWRpbmcgJiYgbV9mcmFtZS0+cGFnZSgpLT5k
ZWZlcnNMb2FkaW5nKCk7CiAKLSAgICBpZiAobV9vcHRpb25zLnNlY3VyaXR5Q2hlY2sgPT0gRG9T
ZWN1cml0eUNoZWNrICYmICFtX2ZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5j
YW5EaXNwbGF5KGNsaWVudFJlcXVlc3QudXJsKCkpKSB7CisgICAgaWYgKG1fb3B0aW9ucy5zZWN1
cml0eUNoZWNrID09IERvU2VjdXJpdHlDaGVjayAmJiAhbV9mcmFtZS0+ZG9jdW1lbnQoKS0+c2Vj
dXJpdHlPcmlnaW4oKS0+Y2FuRGlzcGxheShjbGllbnRSZXF1ZXN0LnVybCgpLCBtX2ZyYW1lLT5z
Y2hlbWVSZWdpc3RyeSgpKSkgewogICAgICAgICBGcmFtZUxvYWRlcjo6cmVwb3J0TG9jYWxMb2Fk
RmFpbGVkKG1fZnJhbWUuZ2V0KCksIGNsaWVudFJlcXVlc3QudXJsKCkuc3RyaW5nKCkpOwogICAg
ICAgICByZWxlYXNlUmVzb3VyY2VzKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTY5NSw3
ICs2OTUsNyBAQCBib29sIFJlc291cmNlTG9hZGVyOjppc0FsbG93ZWRUb0Fza1VzZXJGCiB7CiAg
ICAgaWYgKG1fb3B0aW9ucy5jbGllbnRDcmVkZW50aWFsUG9saWN5ID09IENsaWVudENyZWRlbnRp
YWxQb2xpY3k6OkNhbm5vdEFza0NsaWVudEZvckNyZWRlbnRpYWxzKQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgcmV0dXJuIG1fb3B0aW9ucy5jcmVkZW50aWFscyA9PSBGZXRjaE9wdGlvbnM6
OkNyZWRlbnRpYWxzOjpJbmNsdWRlIHx8IChtX29wdGlvbnMuY3JlZGVudGlhbHMgPT0gRmV0Y2hP
cHRpb25zOjpDcmVkZW50aWFsczo6U2FtZU9yaWdpbiAmJiBtX2ZyYW1lLT5kb2N1bWVudCgpLT5z
ZWN1cml0eU9yaWdpbigpLT5jYW5SZXF1ZXN0KG9yaWdpbmFsUmVxdWVzdCgpLnVybCgpKSk7Cisg
ICAgcmV0dXJuIG1fb3B0aW9ucy5jcmVkZW50aWFscyA9PSBGZXRjaE9wdGlvbnM6OkNyZWRlbnRp
YWxzOjpJbmNsdWRlIHx8IChtX29wdGlvbnMuY3JlZGVudGlhbHMgPT0gRmV0Y2hPcHRpb25zOjpD
cmVkZW50aWFsczo6U2FtZU9yaWdpbiAmJiBtX2ZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9y
aWdpbigpLT5jYW5SZXF1ZXN0KG9yaWdpbmFsUmVxdWVzdCgpLnVybCgpLCBtX2ZyYW1lLT5zY2hl
bWVSZWdpc3RyeSgpKSk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxl
bmdlKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1NpbmtEb2N1bWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1NpbmtEb2N1bWVudC5jcHAJKHJldmlzaW9u
IDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TaW5rRG9jdW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00OSw4ICs0OSw4IEBAIHByaXZhdGU6CiAgICAgfQogfTsKIAotU2lua0Rv
Y3VtZW50OjpTaW5rRG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKLSAgICA6
IEhUTUxEb2N1bWVudChmcmFtZSwgdXJsKQorU2lua0RvY3VtZW50OjpTaW5rRG9jdW1lbnQoRnJh
bWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCwgY29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5JiBzY2hl
bWVSZWdpc3RyeSkKKyAgICA6IEhUTUxEb2N1bWVudChmcmFtZSwgdXJsLCBzY2hlbWVSZWdpc3Ry
eSkKIHsKICAgICBzZXRDb21wYXRpYmlsaXR5TW9kZShEb2N1bWVudENvbXBhdGliaWxpdHlNb2Rl
OjpRdWlya3NNb2RlKTsKICAgICBsb2NrQ29tcGF0aWJpbGl0eU1vZGUoKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TaW5rRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvU2lua0RvY3VtZW50LmgJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TaW5rRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMs
NyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBTaW5rRG9jdW1lbnRfaAotI2Rl
ZmluZSBTaW5rRG9jdW1lbnRfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJIVE1MRG9jdW1l
bnQuaCIKIApAQCAtMzIsMTggKzMxLDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
U2lua0RvY3VtZW50IGZpbmFsIDogcHVibGljIEhUTUxEb2N1bWVudCB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxTaW5rRG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYg
dXJsKQorICAgIHN0YXRpYyBSZWY8U2lua0RvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBj
b25zdCBVUkwmIHVybCwgY29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5JiBzY2hlbWVSZWdpc3RyeSkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNpbmtEb2N1bWVudChmcmFtZSwg
dXJsKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNpbmtEb2N1bWVudChmcmFtZSwg
dXJsLCBzY2hlbWVSZWdpc3RyeSkpOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBTaW5rRG9jdW1l
bnQoRnJhbWUqLCBjb25zdCBVUkwmKTsKKyAgICBTaW5rRG9jdW1lbnQoRnJhbWUqLCBjb25zdCBV
UkwmLCBjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnkmKTsKICAgICAKICAgICB2aXJ0dWFsIFJlZjxE
b2N1bWVudFBhcnNlcj4gY3JlYXRlUGFyc2VyKCk7CiB9OwogCiAKIH07IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZiAvLyBTaW5rRG9jdW1lbnRfaApJbmRleDogU291cmNlL1dlYkNvcmUv
bG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvU3ViZnJhbWVMb2FkZXIuY3BwCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjAsNyAr
MTIwLDcgQEAgYm9vbCBTdWJmcmFtZUxvYWRlcjo6cGx1Z2luSXNMb2FkYWJsZShjbwogICAgICAg
ICBpZiAoZG9jdW1lbnQoKS0+aXNTYW5kYm94ZWQoU2FuZGJveFBsdWdpbnMpKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIGlmICghZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmln
aW4oKS0+Y2FuRGlzcGxheSh1cmwpKSB7CisgICAgICAgIGlmICghZG9jdW1lbnQoKS0+c2VjdXJp
dHlPcmlnaW4oKS0+Y2FuRGlzcGxheSh1cmwsIGRvY3VtZW50KCktPnNjaGVtZVJlZ2lzdHJ5KCkp
KSB7CiAgICAgICAgICAgICBGcmFtZUxvYWRlcjo6cmVwb3J0TG9jYWxMb2FkRmFpbGVkKCZtX2Zy
YW1lLCB1cmwuc3RyaW5nKCkpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9
CkBAIC0yNDEsNyArMjQxLDcgQEAgUGFzc1JlZlB0cjxXaWRnZXQ+IFN1YmZyYW1lTG9hZGVyOjpj
cmVhdAogCiAgICAgaWYgKCFjb2RlQmFzZVVSTFN0cmluZy5pc0VtcHR5KCkpIHsKICAgICAgICAg
VVJMIGNvZGVCYXNlVVJMID0gY29tcGxldGVVUkwoY29kZUJhc2VVUkxTdHJpbmcpOwotICAgICAg
ICBpZiAoIWVsZW1lbnQuZG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpLT5jYW5EaXNwbGF5KGNv
ZGVCYXNlVVJMKSkgeworICAgICAgICBpZiAoIWVsZW1lbnQuZG9jdW1lbnQoKS5zZWN1cml0eU9y
aWdpbigpLT5jYW5EaXNwbGF5KGNvZGVCYXNlVVJMLCBtX2ZyYW1lLnNjaGVtZVJlZ2lzdHJ5KCkp
KSB7CiAgICAgICAgICAgICBGcmFtZUxvYWRlcjo6cmVwb3J0TG9jYWxMb2FkRmFpbGVkKCZtX2Zy
YW1lLCBjb2RlQmFzZVVSTC5zdHJpbmcoKSk7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICAgICAgfQpAQCAtMzA5LDcgKzMwOSw3IEBAIEZyYW1lKiBTdWJmcmFtZUxvYWRlcjo6bG9h
ZFN1YmZyYW1lKEhUTUwKICAgICAgICAgbWFyZ2luSGVpZ2h0ID0gZnJhbWVFbGVtZW50QmFzZS5t
YXJnaW5IZWlnaHQoKTsKICAgICB9CiAKLSAgICBpZiAoIW93bmVyRWxlbWVudC5kb2N1bWVudCgp
LnNlY3VyaXR5T3JpZ2luKCktPmNhbkRpc3BsYXkodXJsKSkgeworICAgIGlmICghb3duZXJFbGVt
ZW50LmRvY3VtZW50KCkuc2VjdXJpdHlPcmlnaW4oKS0+Y2FuRGlzcGxheSh1cmwsIG1fZnJhbWUu
c2NoZW1lUmVnaXN0cnkoKSkpIHsKICAgICAgICAgRnJhbWVMb2FkZXI6OnJlcG9ydExvY2FsTG9h
ZEZhaWxlZCgmbV9mcmFtZSwgdXJsLnN0cmluZygpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQpAQCAtMzE3LDcgKzMxNyw3IEBAIEZyYW1lKiBTdWJmcmFtZUxvYWRlcjo6bG9hZFN1
YmZyYW1lKEhUTUwKICAgICBpZiAoIVN1YmZyYW1lTG9hZGluZ0Rpc2FibGVyOjpjYW5Mb2FkRnJh
bWUob3duZXJFbGVtZW50KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBTdHJpbmcg
cmVmZXJyZXJUb1VzZSA9IFNlY3VyaXR5UG9saWN5OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVyKG93
bmVyRWxlbWVudC5kb2N1bWVudCgpLnJlZmVycmVyUG9saWN5KCksIHVybCwgcmVmZXJyZXIpOwor
ICAgIFN0cmluZyByZWZlcnJlclRvVXNlID0gU2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJy
ZXJIZWFkZXIob3duZXJFbGVtZW50LmRvY3VtZW50KCkucmVmZXJyZXJQb2xpY3koKSwgdXJsLCBy
ZWZlcnJlciwgb3duZXJFbGVtZW50LmRvY3VtZW50KCkuc2NoZW1lUmVnaXN0cnkoKSk7CiAKICAg
ICAvLyBQcmV2ZW50IGluaXRpYWwgZW1wdHkgZG9jdW1lbnQgbG9hZCBmcm9tIHRyaWdnZXJpbmcg
bG9hZCBldmVudHMuCiAgICAgbV9mcmFtZS5kb2N1bWVudCgpLT5pbmNyZW1lbnRMb2FkRXZlbnRE
ZWxheUNvdW50KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2Fk
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxv
YWRlci5jcHAJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJy
ZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyMyw3ICsyMjMsNyBAQCB2b2lk
IFN1YnJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3RJCiAgICAgICAgICAgICBjYW5jZWwo
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBtX2xvYWRUaW1pbmcu
YWRkUmVkaXJlY3QocmVkaXJlY3RSZXNwb25zZS51cmwoKSwgbmV3UmVxdWVzdC51cmwoKSk7Cisg
ICAgICAgIG1fbG9hZFRpbWluZy5hZGRSZWRpcmVjdChyZWRpcmVjdFJlc3BvbnNlLnVybCgpLCBu
ZXdSZXF1ZXN0LnVybCgpLCBtX2RvY3VtZW50TG9hZGVyLT5zY2hlbWVSZWdpc3RyeSgpKTsKICAg
ICAgICAgbV9yZXNvdXJjZS0+cmVkaXJlY3RSZWNlaXZlZChuZXdSZXF1ZXN0LCByZWRpcmVjdFJl
c3BvbnNlKTsKICAgICB9CiAKQEAgLTQzNCw3ICs0MzQsNyBAQCBib29sIFN1YnJlc291cmNlTG9h
ZGVyOjpjaGVja1Jlc3BvbnNlQ3JvCiBib29sIFN1YnJlc291cmNlTG9hZGVyOjpjaGVja1JlZGly
ZWN0aW9uQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcHJl
dmlvdXNSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBS
ZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QsIFN0cmluZyYgZXJyb3JNZXNzYWdlKQogewogICAg
IGJvb2wgY3Jvc3NPcmlnaW5GbGFnID0gbV9yZXNvdXJjZS0+aXNDcm9zc09yaWdpbigpOwotICAg
IGJvb2wgaXNOZXh0UmVxdWVzdENyb3NzT3JpZ2luID0gbV9vcmlnaW4gJiYgIW1fb3JpZ2luLT5j
YW5SZXF1ZXN0KG5ld1JlcXVlc3QudXJsKCkpOworICAgIGJvb2wgaXNOZXh0UmVxdWVzdENyb3Nz
T3JpZ2luID0gbV9vcmlnaW4gJiYgIW1fb3JpZ2luLT5jYW5SZXF1ZXN0KG5ld1JlcXVlc3QudXJs
KCksIG1fcmVzb3VyY2UtPnNjaGVtZVJlZ2lzdHJ5KCkpOwogCiAgICAgaWYgKGlzTmV4dFJlcXVl
c3RDcm9zc09yaWdpbikKICAgICAgICAgbV9yZXNvdXJjZS0+c2V0Q3Jvc3NPcmlnaW4oKTsKQEAg
LTQ1OSw3ICs0NTksNyBAQCBib29sIFN1YnJlc291cmNlTG9hZGVyOjpjaGVja1JlZGlyZWN0aW9u
CiAgICAgICAgIGlmICghY3Jvc3NPcmlnaW5GbGFnICYmIGlzTmV4dFJlcXVlc3RDcm9zc09yaWdp
bikKICAgICAgICAgICAgIHJlZGlyZWN0aW5nVG9OZXdPcmlnaW4gPSB0cnVlOwogICAgICAgICBl
bHNlCi0gICAgICAgICAgICByZWRpcmVjdGluZ1RvTmV3T3JpZ2luID0gIVNlY3VyaXR5T3JpZ2lu
OjpjcmVhdGUocHJldmlvdXNSZXF1ZXN0LnVybCgpKS0+Y2FuUmVxdWVzdChuZXdSZXF1ZXN0LnVy
bCgpKTsKKyAgICAgICAgICAgIHJlZGlyZWN0aW5nVG9OZXdPcmlnaW4gPSAhU2VjdXJpdHlPcmln
aW46OmNyZWF0ZShwcmV2aW91c1JlcXVlc3QudXJsKCksIG1fcmVzb3VyY2UtPnNjaGVtZVJlZ2lz
dHJ5KCkpLT5jYW5SZXF1ZXN0KG5ld1JlcXVlc3QudXJsKCksIG1fcmVzb3VyY2UtPnNjaGVtZVJl
Z2lzdHJ5KCkpOwogICAgIH0KIAogICAgIC8vIEltcGxlbWVudGluZyBodHRwczovL2ZldGNoLnNw
ZWMud2hhdHdnLm9yZy8jY29uY2VwdC1odHRwLXJlZGlyZWN0LWZldGNoIHN0ZXAgMTAuCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5oCShyZXZpc2lvbiAyMDgzOTgp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIzLDggKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAqLwogCi0jaWZuZGVmIFRleHRUcmFja0xvYWRlcl9oCi0jZGVmaW5lIFRleHRUcmFja0xvYWRl
cl9oCisjcHJhZ21hIG9uY2UKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKIApAQCAtOTEsNCAr
OTAsMyBAQCBwcml2YXRlOgogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKLSNlbmRp
ZgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVH
cm91cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmgiCiAjaW5jbHVkZSAiTWFuaWZlc3RQYXJzZXIuaCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5j
bHVkZSAiUGFnZVNjaGVtZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgi
CiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5o
IgpAQCAtNTAsMTAgKzUxLDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQXBwbGljYXRp
b25DYWNoZUdyb3VwOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXAoUmVmPEFwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlPiYmIHN0b3JhZ2UsIGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwpCitBcHBsaWNhdGlvbkNh
Y2hlR3JvdXA6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cChSZWY8QXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2U+JiYgc3RvcmFnZSwgY29uc3QgVVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgUGFnZVNjaGVtZVJl
Z2lzdHJ5JiBzY2hlbWVSZWdpc3RyeSkKICAgICA6IG1fc3RvcmFnZShXVEZNb3ZlKHN0b3JhZ2Up
KQogICAgICwgbV9tYW5pZmVzdFVSTChtYW5pZmVzdFVSTCkKLSAgICAsIG1fb3JpZ2luKFNlY3Vy
aXR5T3JpZ2luOjpjcmVhdGUobWFuaWZlc3RVUkwpKQorICAgICwgbV9vcmlnaW4oU2VjdXJpdHlP
cmlnaW46OmNyZWF0ZShtYW5pZmVzdFVSTCwgc2NoZW1lUmVnaXN0cnkpKQogICAgICwgbV91cGRh
dGVTdGF0dXMoSWRsZSkKICAgICAsIG1fZG93bmxvYWRpbmdQZW5kaW5nTWFzdGVyUmVzb3VyY2VM
b2FkZXJzQ291bnQoMCkKICAgICAsIG1fcHJvZ3Jlc3NUb3RhbCgwKQpJbmRleDogU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAu
aAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVHcm91cC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw3IEBACiAg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVmIEFwcGxpY2F0aW9uQ2FjaGVHcm91cF9oCi0j
ZGVmaW5lIEFwcGxpY2F0aW9uQ2FjaGVHcm91cF9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUg
IkRPTUFwcGxpY2F0aW9uQ2FjaGUuaCIKICNpbmNsdWRlICJVUkwuaCIKQEAgLTQyLDYgKzQxLDcg
QEAgY2xhc3MgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNz
IERvY3VtZW50TG9hZGVyOwogY2xhc3MgRnJhbWU7CitjbGFzcyBQYWdlU2NoZW1lUmVnaXN0cnk7
CiBjbGFzcyBSZXNvdXJjZUhhbmRsZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogCkBAIC01Myw3
ICs1Myw3IEBAIGVudW0gQXBwbGljYXRpb25DYWNoZVVwZGF0ZU9wdGlvbiB7CiBjbGFzcyBBcHBs
aWNhdGlvbkNhY2hlR3JvdXAgOiBSZXNvdXJjZUhhbmRsZUNsaWVudCB7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoQXBwbGljYXRpb25DYWNoZUdyb3VwKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgQXBwbGljYXRpb25DYWNoZUdyb3VwKFJlZjxBcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZT4mJiwgY29uc3QgVVJMJiBtYW5pZmVzdFVSTCk7CisgICAgZXhw
bGljaXQgQXBwbGljYXRpb25DYWNoZUdyb3VwKFJlZjxBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZT4m
JiwgY29uc3QgVVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5Jik7CiAg
ICAgdmlydHVhbCB+QXBwbGljYXRpb25DYWNoZUdyb3VwKCk7CiAgICAgCiAgICAgZW51bSBVcGRh
dGVTdGF0dXMgeyBJZGxlLCBDaGVja2luZywgRG93bmxvYWRpbmcgfTsKQEAgLTIwMCw1ICsyMDAs
MyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8g
QXBwbGljYXRpb25DYWNoZUdyb3VwX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAkocmV2aXNpb24gMjA4
Mzk4KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVI
b3N0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIkluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIk1haW5GcmFtZS5oIgogI2luY2x1ZGUg
IlBhZ2UuaCIKKyNpbmNsdWRlICJQYWdlU2NoZW1lUmVnaXN0cnkuaCIKICNpbmNsdWRlICJQcm9n
cmVzc0V2ZW50LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJSZXNv
dXJjZVJlcXVlc3QuaCIKQEAgLTQ3LDExICs0OCwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLUFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpBcHBsaWNhdGlvbkNhY2hlSG9zdChEb2N1bWVudExv
YWRlciYgZG9jdW1lbnRMb2FkZXIpCitBcHBsaWNhdGlvbkNhY2hlSG9zdDo6QXBwbGljYXRpb25D
YWNoZUhvc3QoRG9jdW1lbnRMb2FkZXImIGRvY3VtZW50TG9hZGVyLCBjb25zdCBQYWdlU2NoZW1l
UmVnaXN0cnkmIHNjaGVtZVJlZ2lzdHJ5KQogICAgIDogbV9kb21BcHBsaWNhdGlvbkNhY2hlKG51
bGxwdHIpCiAgICAgLCBtX2RvY3VtZW50TG9hZGVyKGRvY3VtZW50TG9hZGVyKQogICAgICwgbV9k
ZWZlcnNFdmVudHModHJ1ZSkKICAgICAsIG1fY2FuZGlkYXRlQXBwbGljYXRpb25DYWNoZUdyb3Vw
KG51bGxwdHIpCisgICAgLCBtX3NjaGVtZVJlZ2lzdHJ5KHNjaGVtZVJlZ2lzdHJ5KQogewogfQog
CkBAIC01MjcsNyArNTI5LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6aXNBcHBsaWNh
dGlvbgogICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgUmVmPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4oU2VjdXJpdHlPcmlnaW46OmNyZWF0
ZShyZXF1ZXN0LnVybCgpKSk7CisgICAgUmVmPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4oU2VjdXJp
dHlPcmlnaW46OmNyZWF0ZShyZXF1ZXN0LnVybCgpLCBtX3NjaGVtZVJlZ2lzdHJ5LmdldCgpKSk7
CiAgICAgcmV0dXJuICFvcmlnaW4uZ2V0KCkuY2FuQWNjZXNzQXBwbGljYXRpb25DYWNoZShmcmFt
ZS0+ZG9jdW1lbnQoKS0+dG9wT3JpZ2luKCkpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAkocmV2aXNp
b24gMjA4Mzk4KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVIb3N0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDggKzI4LDcgQEAKICAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotI2lmbmRlZiBBcHBsaWNhdGlvbkNhY2hlSG9zdF9oCi0jZGVmaW5lIEFwcGxp
Y2F0aW9uQ2FjaGVIb3N0X2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiUGxhdGZvcm1FeHBv
cnRNYWNyb3MuaCIKICNpbmNsdWRlICJVUkwuaCIKQEAgLTM5LDkgKzM4LDExIEBACiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CisKICAgICBjbGFzcyBET01B
cHBsaWNhdGlvbkNhY2hlOwogICAgIGNsYXNzIERvY3VtZW50TG9hZGVyOwogICAgIGNsYXNzIEZy
YW1lOworICAgIGNsYXNzIFBhZ2VTY2hlbWVSZWdpc3RyeTsKICAgICBjbGFzcyBSZXNvdXJjZUVy
cm9yOwogICAgIGNsYXNzIFJlc291cmNlTG9hZGVyOwogICAgIGNsYXNzIFJlc291cmNlUmVxdWVz
dDsKQEAgLTEwOSw3ICsxMTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdHlw
ZWRlZiBWZWN0b3I8UmVzb3VyY2VJbmZvPiBSZXNvdXJjZUluZm9MaXN0OwogCi0gICAgICAgIGV4
cGxpY2l0IEFwcGxpY2F0aW9uQ2FjaGVIb3N0KERvY3VtZW50TG9hZGVyJik7CisgICAgICAgIGV4
cGxpY2l0IEFwcGxpY2F0aW9uQ2FjaGVIb3N0KERvY3VtZW50TG9hZGVyJiwgY29uc3QgUGFnZVNj
aGVtZVJlZ2lzdHJ5Jik7CiAgICAgICAgIH5BcHBsaWNhdGlvbkNhY2hlSG9zdCgpOwogCiAgICAg
ICAgIHN0YXRpYyBVUkwgY3JlYXRlRmlsZVVSTChjb25zdCBTdHJpbmcmKTsKQEAgLTE5MCw4ICsx
OTEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgLy8gVGhpcyBpcyB0aGUgYXBw
bGljYXRpb24gY2FjaGUgdGhlIG1haW4gcmVzb3VyY2Ugd2FzIGxvYWRlZCBmcm9tIChpZiBhbnkp
LgogICAgICAgICBSZWZQdHI8QXBwbGljYXRpb25DYWNoZT4gbV9tYWluUmVzb3VyY2VBcHBsaWNh
dGlvbkNhY2hlOworICAgICAgICAKKyAgICAgICAgUmVmPGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3Ry
eT4gbV9zY2hlbWVSZWdpc3RyeTsKICAgICB9OwogCiB9ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYgIC8vIEFwcGxpY2F0aW9uQ2FjaGVIb3N0X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
LmNwcAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEs
NyBAQAogI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVIb3N0LmgiCiAjaW5jbHVkZSAiQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUg
IlBhZ2VTY2hlbWVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlNRTGl0ZURhdGFiYXNlVHJhY2tlci5o
IgogI2luY2x1ZGUgIlNRTGl0ZVN0YXRlbWVudC5oIgogI2luY2x1ZGUgIlNRTGl0ZVRyYW5zYWN0
aW9uLmgiCkBAIC0xMjUsNyArMTI2LDcgQEAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBBcHBsaWNh
dGlvbkNhY2hlUwogICAgIGlmICghY2FjaGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
ICAgICAKLSAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIGdyb3VwID0gbmV3IEFwcGxpY2F0aW9u
Q2FjaGVHcm91cCgqdGhpcywgbWFuaWZlc3RVUkwpOworICAgIEFwcGxpY2F0aW9uQ2FjaGVHcm91
cCogZ3JvdXAgPSBuZXcgQXBwbGljYXRpb25DYWNoZUdyb3VwKCp0aGlzLCBtYW5pZmVzdFVSTCwg
bV9zY2hlbWVSZWdpc3RyeS5nZXQoKSk7CiAgICAgICAKICAgICBncm91cC0+c2V0U3RvcmFnZUlE
KHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGF0ZW1lbnQuZ2V0Q29sdW1uSW50NjQoMCkpKTsKICAg
ICBncm91cC0+c2V0TmV3ZXN0Q2FjaGUoV1RGTW92ZShjYWNoZSkpOwpAQCAtMTQ5LDcgKzE1MCw3
IEBAIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogQXBwbGljYXRpb25DYWNoZVMKICAgICAKICAgICAv
LyBJZiB0aGUgZ3JvdXAgd2FzIG5vdCBmb3VuZCB3ZSBuZWVkIHRvIGNyZWF0ZSBpdAogICAgIGlm
ICghZ3JvdXApIHsKLSAgICAgICAgZ3JvdXAgPSBuZXcgQXBwbGljYXRpb25DYWNoZUdyb3VwKCp0
aGlzLCBtYW5pZmVzdFVSTCk7CisgICAgICAgIGdyb3VwID0gbmV3IEFwcGxpY2F0aW9uQ2FjaGVH
cm91cCgqdGhpcywgbWFuaWZlc3RVUkwsIG1fc2NoZW1lUmVnaXN0cnkuZ2V0KCkpOwogICAgICAg
ICBtX2NhY2hlSG9zdFNldC5hZGQodXJsSG9zdEhhc2gobWFuaWZlc3RVUkwpKTsKICAgICB9CiAg
ICAgCkBAIC0yNDksNyArMjUwLDcgQEAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBBcHBsaWNhdGlv
bkNhY2hlUwogICAgICAgICBpZiAocmVzb3VyY2UtPnR5cGUoKSAmIEFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZTo6Rm9yZWlnbikKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIEFwcGxp
Y2F0aW9uQ2FjaGVHcm91cCogZ3JvdXAgPSBuZXcgQXBwbGljYXRpb25DYWNoZUdyb3VwKCp0aGlz
LCBtYW5pZmVzdFVSTCk7CisgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogZ3JvdXAgPSBu
ZXcgQXBwbGljYXRpb25DYWNoZUdyb3VwKCp0aGlzLCBtYW5pZmVzdFVSTCwgbV9zY2hlbWVSZWdp
c3RyeS5nZXQoKSk7CiAgICAgICAgIAogICAgICAgICBncm91cC0+c2V0U3RvcmFnZUlEKHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihzdGF0ZW1lbnQuZ2V0Q29sdW1uSW50NjQoMCkpKTsKICAgICAgICAg
Z3JvdXAtPnNldE5ld2VzdENhY2hlKFdURk1vdmUoY2FjaGUpKTsKQEAgLTMxOSw3ICszMjAsNyBA
QCBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIEFwcGxpY2F0aW9uQ2FjaGVTCiAgICAgICAgIGlmIChj
YWNoZS0+cmVzb3VyY2VGb3JVUkwoZmFsbGJhY2tVUkwpLT50eXBlKCkgJiBBcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2U6OkZvcmVpZ24pCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBB
cHBsaWNhdGlvbkNhY2hlR3JvdXAqIGdyb3VwID0gbmV3IEFwcGxpY2F0aW9uQ2FjaGVHcm91cCgq
dGhpcywgbWFuaWZlc3RVUkwpOworICAgICAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIGdyb3Vw
ID0gbmV3IEFwcGxpY2F0aW9uQ2FjaGVHcm91cCgqdGhpcywgbWFuaWZlc3RVUkwsIG1fc2NoZW1l
UmVnaXN0cnkuZ2V0KCkpOwogICAgICAgICAKICAgICAgICAgZ3JvdXAtPnNldFN0b3JhZ2VJRChz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RhdGVtZW50LmdldENvbHVtbkludDY0KDApKSk7CiAgICAg
ICAgIGdyb3VwLT5zZXROZXdlc3RDYWNoZShXVEZNb3ZlKGNhY2hlKSk7CkBAIC0xNTE5LDcgKzE1
MjAsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpnZXRPcmlnaW5zCiAgICAgLy8g
TXVsdGlwbGUgbWFuaWZlc3QgVVJMcyBtaWdodCBzaGFyZSB0aGUgc2FtZSBTZWN1cml0eU9yaWdp
biwgc28gd2UgbWlnaHQgYmUgY3JlYXRpbmcgZXh0cmEsIHdhc3RlZCBvcmlnaW5zIGhlcmUuCiAg
ICAgLy8gVGhlIGN1cnJlbnQgc2NoZW1hIGRvZXNuJ3QgYWxsb3cgZm9yIGEgbW9yZSBlZmZpY2ll
bnQgd2F5IG9mIGJ1aWxkaW5nIHRoaXMgbGlzdC4KICAgICBmb3IgKGF1dG8mIHVybCA6IHVybHMp
Ci0gICAgICAgIG9yaWdpbnMuYWRkKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodXJsKSk7CisgICAg
ICAgIG9yaWdpbnMuYWRkKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodXJsLCBtX3NjaGVtZVJlZ2lz
dHJ5LmdldCgpKSk7CiB9CiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmRlbGV0ZUFs
bEVudHJpZXMoKQpAQCAtMTU2NywxOCArMTU2OCwxOSBAQCBpbnQ2NF90IEFwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlOjpkaXNrVXNhCiAgICAgcmV0dXJuIHVzYWdlOwogfQogCi1BcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2UoY29uc3QgU3RyaW5nJiBjYWNoZURp
cmVjdG9yeSwgY29uc3QgU3RyaW5nJiBmbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUpCitBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2UoY29uc3QgU3RyaW5nJiBj
YWNoZURpcmVjdG9yeSwgY29uc3QgU3RyaW5nJiBmbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUsIFJl
Zjxjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnk+JiYgc2NoZW1lUmVnaXN0cnkpCiAgICAgOiBtX2Nh
Y2hlRGlyZWN0b3J5KGNhY2hlRGlyZWN0b3J5KQogICAgICwgbV9mbGF0RmlsZVN1YmRpcmVjdG9y
eU5hbWUoZmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKQogICAgICwgbV9tYXhpbXVtU2l6ZShBcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZTo6bm9RdW90YSgpKQogICAgICwgbV9pc01heGltdW1TaXplUmVh
Y2hlZChmYWxzZSkKICAgICAsIG1fZGVmYXVsdE9yaWdpblF1b3RhKEFwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlOjpub1F1b3RhKCkpCisgICAgLCBtX3NjaGVtZVJlZ2lzdHJ5KFdURk1vdmUoc2NoZW1l
UmVnaXN0cnkpKQogewogfQogCi1SZWY8QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U+IEFwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBjYWNoZURpcmVjdG9yeSwgY29u
c3QgU3RyaW5nJiBmbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUpCitSZWY8QXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2U+IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBj
YWNoZURpcmVjdG9yeSwgY29uc3QgU3RyaW5nJiBmbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUsIFJl
Zjxjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnk+JiYgc2NoZW1lUmVnaXN0cnkpCiB7Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UoY2FjaGVEaXJlY3Rvcnks
IGZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlKGNhY2hlRGlyZWN0b3J5LCBmbGF0RmlsZVN1YmRpcmVjdG9y
eU5hbWUsIFdURk1vdmUoc2NoZW1lUmVnaXN0cnkpKSk7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZS5oCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMs
NyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZV9oCi0jZGVmaW5lIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlX2gKKyNwcmFnbWEgb25jZQog
CiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5IYXNoLmgiCiAjaW5jbHVkZSAiU1FMaXRlRGF0YWJh
c2UuaCIKQEAgLTM5LDkgKzM4LDEwIEBAIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGU7CiBjbGFzcyBB
cHBsaWNhdGlvbkNhY2hlR3JvdXA7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlSG9zdDsKIGNsYXNz
IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTsKLWNsYXNzIFVSTDsKK2NsYXNzIFBhZ2VTY2hlbWVS
ZWdpc3RyeTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgU2hhcmVkQnVmZmVyOworY2xh
c3MgVVJMOwogdGVtcGxhdGUgPGNsYXNzIFQ+IGNsYXNzIFN0b3JhZ2VJREpvdXJuYWw7CiAKIGNs
YXNzIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlIDogcHVibGljIFJlZkNvdW50ZWQ8QXBwbGljYXRp
b25DYWNoZVN0b3JhZ2U+IHsKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgICAgICBEaXNr
T3JPcGVyYXRpb25GYWlsdXJlCiAgICAgfTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZWY8QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGNhY2hlRGly
ZWN0b3J5LCBjb25zdCBTdHJpbmcmIGZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSk7CisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFJlZjxBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZT4gY3JlYXRlKGNv
bnN0IFN0cmluZyYgY2FjaGVEaXJlY3RvcnksIGNvbnN0IFN0cmluZyYgZmxhdEZpbGVTdWJkaXJl
Y3RvcnlOYW1lLCBSZWY8Y29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5PiYmKTsKIAogICAgIGNvbnN0
IFN0cmluZyYgY2FjaGVEaXJlY3RvcnkoKSBjb25zdDsKICAgICAKQEAgLTEwNyw3ICsxMDcsNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIGludDY0X3QgdW5rbm93blF1b3RhKCkgeyByZXR1cm4gLTE7
IH0KICAgICBzdGF0aWMgaW50NjRfdCBub1F1b3RhKCkgeyByZXR1cm4gc3RkOjpudW1lcmljX2xp
bWl0czxpbnQ2NF90Pjo6bWF4KCk7IH0KIHByaXZhdGU6Ci0gICAgQXBwbGljYXRpb25DYWNoZVN0
b3JhZ2UoY29uc3QgU3RyaW5nJiBjYWNoZURpcmVjdG9yeSwgY29uc3QgU3RyaW5nJiBmbGF0Rmls
ZVN1YmRpcmVjdG9yeU5hbWUpOworICAgIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlKGNvbnN0IFN0
cmluZyYgY2FjaGVEaXJlY3RvcnksIGNvbnN0IFN0cmluZyYgZmxhdEZpbGVTdWJkaXJlY3RvcnlO
YW1lLCBSZWY8Y29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5PiYmKTsKIAogICAgIFBhc3NSZWZQdHI8
QXBwbGljYXRpb25DYWNoZT4gbG9hZENhY2hlKHVuc2lnbmVkIHN0b3JhZ2VJRCk7CiAgICAgQXBw
bGljYXRpb25DYWNoZUdyb3VwKiBsb2FkQ2FjaGVHcm91cChjb25zdCBVUkwmIG1hbmlmZXN0VVJM
KTsKQEAgLTE1NSwxMCArMTU1LDkgQEAgcHJpdmF0ZToKICAgICAKICAgICB0eXBlZGVmIEhhc2hN
YXA8U3RyaW5nLCBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqPiBDYWNoZUdyb3VwTWFwOwogICAgIENh
Y2hlR3JvdXBNYXAgbV9jYWNoZXNJbk1lbW9yeTsgLy8gRXhjbHVkZXMgb2Jzb2xldGUgY2FjaGUg
Z3JvdXBzLgorICAgIFJlZjxjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnk+IG1fc2NoZW1lUmVnaXN0
cnk7CiAKICAgICBmcmllbmQgY2xhc3MgV1RGOjpOZXZlckRlc3Ryb3llZDxBcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZT47CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBB
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZV9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCShyZXZpc2lvbiAyMDgzOTgpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQxLDggKzQxLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1D
YWNoZWRDU1NTdHlsZVNoZWV0OjpDYWNoZWRDU1NTdHlsZVNoZWV0KENhY2hlZFJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsIFNlc3Npb25JRCBzZXNzaW9uSUQpCi0gICAgOiBDYWNoZWRSZXNvdXJj
ZShXVEZNb3ZlKHJlcXVlc3QpLCBDU1NTdHlsZVNoZWV0LCBzZXNzaW9uSUQpCitDYWNoZWRDU1NT
dHlsZVNoZWV0OjpDYWNoZWRDU1NTdHlsZVNoZWV0KENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIFNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3RyeSYgc2No
ZW1lUmVnaXN0cnkpCisgICAgOiBDYWNoZWRSZXNvdXJjZShXVEZNb3ZlKHJlcXVlc3QpLCBDU1NT
dHlsZVNoZWV0LCBzZXNzaW9uSUQsIHNjaGVtZVJlZ2lzdHJ5KQogICAgICwgbV9kZWNvZGVyKFRl
eHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgidGV4dC9jc3MiLCByZXF1ZXN0LmNoYXJzZXQoKSkp
CiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVT
aGVldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRD
U1NTdHlsZVNoZWV0LmgJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDggKzIz
LDcgQEAKICAgICBwYWdlcyBmcm9tIHRoZSB3ZWIuIEl0IGhhcyBhIG1lbW9yeSBjYWNoZSBmb3Ig
dGhlc2Ugb2JqZWN0cy4KICovCiAKLSNpZm5kZWYgQ2FjaGVkQ1NTU3R5bGVTaGVldF9oCi0jZGVm
aW5lIENhY2hlZENTU1N0eWxlU2hlZXRfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDYWNo
ZWRSZXNvdXJjZS5oIgogCkBAIC0zNyw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ICAgIGNsYXNzIENhY2hlZENTU1N0eWxlU2hlZXQgZmluYWwgOiBwdWJsaWMgQ2FjaGVkUmVzb3Vy
Y2UgewogICAgIHB1YmxpYzoKLSAgICAgICAgQ2FjaGVkQ1NTU3R5bGVTaGVldChDYWNoZWRSZXNv
dXJjZVJlcXVlc3QmJiwgU2Vzc2lvbklEKTsKKyAgICAgICAgQ2FjaGVkQ1NTU3R5bGVTaGVldChD
YWNoZWRSZXNvdXJjZVJlcXVlc3QmJiwgU2Vzc2lvbklELCBjb25zdCBQYWdlU2NoZW1lUmVnaXN0
cnkmKTsKICAgICAgICAgdmlydHVhbCB+Q2FjaGVkQ1NTU3R5bGVTaGVldCgpOwogCiAgICAgICAg
IGVudW0gY2xhc3MgTUlNRVR5cGVDaGVjayB7IFN0cmljdCwgTGF4IH07CkBAIC03Miw1ICs3MSwz
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19DQUNIRURfUkVTT1VSQ0UoQ2FjaGVkQ1NTU3R5bGVTaGVldCwgQ2Fj
aGVkUmVzb3VyY2U6OkNTU1N0eWxlU2hlZXQpCi0KLSNlbmRpZiAvLyBDYWNoZWRDU1NTdHlsZVNo
ZWV0X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAJ
KHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRG
b250LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsOCArNDYsOCBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLUNhY2hlZEZvbnQ6OkNhY2hlZEZvbnQoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwgU2Vzc2lvbklEIHNlc3Npb25JRCwgVHlwZSB0eXBlKQotICAgIDogQ2FjaGVkUmVz
b3VyY2UoV1RGTW92ZShyZXF1ZXN0KSwgdHlwZSwgc2Vzc2lvbklEKQorQ2FjaGVkRm9udDo6Q2Fj
aGVkRm9udChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTZXNzaW9uSUQgc2Vzc2lv
bklELCBjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnkmIHNjaGVtZVJlZ2lzdHJ5LCBUeXBlIHR5cGUp
CisgICAgOiBDYWNoZWRSZXNvdXJjZShXVEZNb3ZlKHJlcXVlc3QpLCB0eXBlLCBzZXNzaW9uSUQs
IHNjaGVtZVJlZ2lzdHJ5KQogICAgICwgbV9sb2FkSW5pdGlhdGVkKGZhbHNlKQogICAgICwgbV9o
YXNDcmVhdGVkRm9udERhdGFXcmFwcGluZ1Jlc291cmNlKGZhbHNlKQogewpJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCShyZXZpc2lvbiAyMDgzOTgpCisrKyBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yMyw4ICsyMyw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVmIENhY2hlZEZv
bnRfaAotI2RlZmluZSBDYWNoZWRGb250X2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ2Fj
aGVkUmVzb3VyY2UuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5oIgpAQCAtNDUs
NyArNDQsNyBAQCB0eXBlZGVmIEZvbnRUYWdnZWRTZXR0aW5nczxpbnQ+IEZvbnRGZWF0CiAKIGNs
YXNzIENhY2hlZEZvbnQgOiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2UgewogcHVibGljOgotICAgIENh
Y2hlZEZvbnQoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYsIFNlc3Npb25JRCwgVHlwZSA9IEZvbnRS
ZXNvdXJjZSk7CisgICAgQ2FjaGVkRm9udChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiwgU2Vzc2lv
bklELCBjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnkmLCBUeXBlID0gRm9udFJlc291cmNlKTsKICAg
ICB2aXJ0dWFsIH5DYWNoZWRGb250KCk7CiAKICAgICB2b2lkIGJlZ2luTG9hZElmTmVlZGVkKENh
Y2hlZFJlc291cmNlTG9hZGVyJik7CkBAIC04NCw1ICs4MywzIEBAIHByaXZhdGU6CiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQ0FDSEVEX1JFU09VUkNF
KENhY2hlZEZvbnQsIENhY2hlZFJlc291cmNlOjpGb250UmVzb3VyY2UpCi0KLSNlbmRpZiAvLyBD
YWNoZWRGb250X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250
Q2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEZvbnRDbGllbnQuaAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEZvbnRDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsNyBA
QAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgQ2Fj
aGVkRm9udENsaWVudF9oCi0jZGVmaW5lIENhY2hlZEZvbnRDbGllbnRfaAorI3ByYWdtYSBvbmNl
CiAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5oIgogCkBAIC00MSw1ICs0MCwzIEBA
IHB1YmxpYzoKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIENhY2hl
ZEZvbnRDbGllbnRfaApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZElt
YWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
SW1hZ2UuY3BwCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NiwyMCArNTYsMjAgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1DYWNoZWRJbWFnZTo6Q2FjaGVkSW1hZ2UoQ2FjaGVkUmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2Vzc2lvbklEIHNlc3Npb25JRCkKLSAgICA6IENhY2hl
ZFJlc291cmNlKFdURk1vdmUocmVxdWVzdCksIEltYWdlUmVzb3VyY2UsIHNlc3Npb25JRCkKK0Nh
Y2hlZEltYWdlOjpDYWNoZWRJbWFnZShDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnkmIHNjaGVtZVJlZ2lz
dHJ5KQorICAgIDogQ2FjaGVkUmVzb3VyY2UoV1RGTW92ZShyZXF1ZXN0KSwgSW1hZ2VSZXNvdXJj
ZSwgc2Vzc2lvbklELCBzY2hlbWVSZWdpc3RyeSkKIHsKICAgICBzZXRTdGF0dXMoVW5rbm93bik7
CiB9CiAKLUNhY2hlZEltYWdlOjpDYWNoZWRJbWFnZShJbWFnZSogaW1hZ2UsIFNlc3Npb25JRCBz
ZXNzaW9uSUQpCi0gICAgOiBDYWNoZWRSZXNvdXJjZShVUkwoKSwgSW1hZ2VSZXNvdXJjZSwgc2Vz
c2lvbklEKQorQ2FjaGVkSW1hZ2U6OkNhY2hlZEltYWdlKEltYWdlKiBpbWFnZSwgU2Vzc2lvbklE
IHNlc3Npb25JRCwgY29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5JiBzY2hlbWVSZWdpc3RyeSkKKyAg
ICA6IENhY2hlZFJlc291cmNlKFVSTCgpLCBJbWFnZVJlc291cmNlLCBzZXNzaW9uSUQsIHNjaGVt
ZVJlZ2lzdHJ5KQogICAgICwgbV9pbWFnZShpbWFnZSkKIHsKIH0KIAotQ2FjaGVkSW1hZ2U6OkNh
Y2hlZEltYWdlKGNvbnN0IFVSTCYgdXJsLCBJbWFnZSogaW1hZ2UsIFNlc3Npb25JRCBzZXNzaW9u
SUQpCi0gICAgOiBDYWNoZWRSZXNvdXJjZSh1cmwsIEltYWdlUmVzb3VyY2UsIHNlc3Npb25JRCkK
K0NhY2hlZEltYWdlOjpDYWNoZWRJbWFnZShjb25zdCBVUkwmIHVybCwgSW1hZ2UqIGltYWdlLCBT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnkmIHNjaGVtZVJlZ2lz
dHJ5KQorICAgIDogQ2FjaGVkUmVzb3VyY2UodXJsLCBJbWFnZVJlc291cmNlLCBzZXNzaW9uSUQs
IHNjaGVtZVJlZ2lzdHJ5KQogICAgICwgbV9pbWFnZShpbWFnZSkKICAgICAsIG1faXNNYW51YWxs
eUNhY2hlZCh0cnVlKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEltYWdlLmgJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw4ICsyMCw3IEBACiAgICAgQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCiAqLwogCi0jaWZuZGVmIENhY2hlZEltYWdlX2gKLSNk
ZWZpbmUgQ2FjaGVkSW1hZ2VfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDYWNoZWRSZXNv
dXJjZS5oIgogI2luY2x1ZGUgIkltYWdlLmgiCkBAIC00OCwxMCArNDcsMTAgQEAgY2xhc3MgQ2Fj
aGVkSW1hZ2UgZmluYWwgOiBwdWJsaWMgQ2FjaGVkUgogICAgIGZyaWVuZCBjbGFzcyBNZW1vcnlD
YWNoZTsKIAogcHVibGljOgotICAgIENhY2hlZEltYWdlKENhY2hlZFJlc291cmNlUmVxdWVzdCYm
LCBTZXNzaW9uSUQpOwotICAgIENhY2hlZEltYWdlKEltYWdlKiwgU2Vzc2lvbklEKTsKKyAgICBD
YWNoZWRJbWFnZShDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiwgU2Vzc2lvbklELCBjb25zdCBQYWdl
U2NoZW1lUmVnaXN0cnkmKTsKKyAgICBDYWNoZWRJbWFnZShJbWFnZSosIFNlc3Npb25JRCwgY29u
c3QgUGFnZVNjaGVtZVJlZ2lzdHJ5Jik7CiAgICAgLy8gQ29uc3RydWN0b3IgdG8gdXNlIGZvciBt
YW51YWxseSBjYWNoZWQgaW1hZ2VzLgotICAgIENhY2hlZEltYWdlKGNvbnN0IFVSTCYsIEltYWdl
KiwgU2Vzc2lvbklEKTsKKyAgICBDYWNoZWRJbWFnZShjb25zdCBVUkwmLCBJbWFnZSosIFNlc3Np
b25JRCwgY29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5Jik7CiAgICAgdmlydHVhbCB+Q2FjaGVkSW1h
Z2UoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIEltYWdlKiBpbWFnZSgpOyAvLyBSZXR1cm5zIHRo
ZSBudWxsSW1hZ2UoKSBpZiB0aGUgaW1hZ2UgaXMgbm90IGF2YWlsYWJsZSB5ZXQuCkBAIC0xNDEs
NSArMTQwLDMgQEAgcHJpdmF0ZToKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19DQUNIRURfUkVTT1VSQ0UoQ2FjaGVkSW1hZ2UsIENhY2hlZFJlc291cmNl
OjpJbWFnZVJlc291cmNlKQotCi0jZW5kaWYgLy8gQ2FjaGVkSW1hZ2VfaApJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlQ2xpZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlQ2xpZW50LmgJKHJldmlzaW9u
IDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZUNsaWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw4ICsyMCw3IEBACiAgICAgQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCiAqLwogCi0jaWZuZGVmIENhY2hlZEltYWdlQ2xpZW50X2gKLSNkZWZpbmUg
Q2FjaGVkSW1hZ2VDbGllbnRfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDYWNoZWRSZXNv
dXJjZUNsaWVudC5oIgogCkBAIC00NSw1ICs0NCwzIEBAIHB1YmxpYzoKIH07CiAKIH0KLQotI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdS
ZXNvdXJjZS5jcHAJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDggKzM2LDgg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DYWNoZWRSYXdSZXNvdXJjZTo6Q2FjaGVkUmF3
UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgVHlwZSB0eXBlLCBTZXNz
aW9uSUQgc2Vzc2lvbklEKQotICAgIDogQ2FjaGVkUmVzb3VyY2UoV1RGTW92ZShyZXF1ZXN0KSwg
dHlwZSwgc2Vzc2lvbklEKQorQ2FjaGVkUmF3UmVzb3VyY2U6OkNhY2hlZFJhd1Jlc291cmNlKENh
Y2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFR5cGUgdHlwZSwgU2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5JiBzY2hlbWVSZWdpc3RyeSkKKyAgICA6IENh
Y2hlZFJlc291cmNlKFdURk1vdmUocmVxdWVzdCksIHR5cGUsIHNlc3Npb25JRCwgc2NoZW1lUmVn
aXN0cnkpCiAgICAgLCBtX2lkZW50aWZpZXIoMCkKICAgICAsIG1fYWxsb3dFbmNvZGVkRGF0YVJl
cGxhY2VtZW50KHRydWUpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmF3UmVzb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmF3UmVzb3VyY2UuaAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIw
LDggKzIwLDcgQEAKICAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KICovCiAKLSNpZm5k
ZWYgQ2FjaGVkUmF3UmVzb3VyY2VfaAotI2RlZmluZSBDYWNoZWRSYXdSZXNvdXJjZV9oCisjcHJh
Z21hIG9uY2UKIAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlLmgiCiAKQEAgLTMyLDcgKzMxLDcg
QEAgY2xhc3MgU3VicmVzb3VyY2VMb2FkZXI7CiAKIGNsYXNzIENhY2hlZFJhd1Jlc291cmNlIGZp
bmFsIDogcHVibGljIENhY2hlZFJlc291cmNlIHsKIHB1YmxpYzoKLSAgICBDYWNoZWRSYXdSZXNv
dXJjZShDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiwgVHlwZSwgU2Vzc2lvbklEKTsKKyAgICBDYWNo
ZWRSYXdSZXNvdXJjZShDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiwgVHlwZSwgU2Vzc2lvbklELCBj
b25zdCBQYWdlU2NoZW1lUmVnaXN0cnkmKTsKIAogICAgIC8vIEZJWE1FOiBBc3NvY2lhdGVkVVJM
TG9hZGVyIHNob3VsZG4ndCBiZSBhIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlciBhbmQgdGhlcmVm
b3JlIHNob3VsZG4ndAogICAgIC8vIHVzZSBDYWNoZWRSYXdSZXNvdXJjZS4gSG93ZXZlciwgaXQg
aXMsIGFuZCBpdCBuZWVkcyB0byBiZSBhYmxlIHRvIGRlZmVyIGxvYWRpbmcuCkBAIC05Nyw1ICs5
NiwzIEBAIHByaXZhdGU6CiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OkNh
Y2hlZFJhd1Jlc291cmNlKQogICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpD
YWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpIHsgcmV0dXJuIHJlc291cmNlLmlzTWFpbk9yTWVkaWFP
clJhd1Jlc291cmNlKCk7IH0KIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKLQotI2VuZGlm
IC8vIENhY2hlZFJhd1Jlc291cmNlX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIk1haW5GcmFtZS5oIgogI2luY2x1ZGUgIk1lbW9yeUNh
Y2hlLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlBhZ2VTY2hlbWVSZWdpc3RyeS5o
IgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFu
ZGxlLmgiCiAjaW5jbHVkZSAiU2NoZW1lUmVnaXN0cnkuaCIKQEAgLTExMyw3ICsxMTQsNyBAQCBz
dGF0aWMgc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyBkZWFkRGVjCiAKIERFRklORV9ERUJVR19P
TkxZX0dMT0JBTChSZWZDb3VudGVkTGVha0NvdW50ZXIsIGNhY2hlZFJlc291cmNlTGVha0NvdW50
ZXIsICgiQ2FjaGVkUmVzb3VyY2UiKSk7CiAKLUNhY2hlZFJlc291cmNlOjpDYWNoZWRSZXNvdXJj
ZShDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBUeXBlIHR5cGUsIFNlc3Npb25JRCBz
ZXNzaW9uSUQpCitDYWNoZWRSZXNvdXJjZTo6Q2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCwgVHlwZSB0eXBlLCBTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBQ
YWdlU2NoZW1lUmVnaXN0cnkmIHNjaGVtZVJlZ2lzdHJ5KQogICAgIDogbV9yZXNvdXJjZVJlcXVl
c3QocmVxdWVzdC5yZWxlYXNlUmVzb3VyY2VSZXF1ZXN0KCkpCiAgICAgLCBtX29wdGlvbnMocmVx
dWVzdC5vcHRpb25zKCkpCiAgICAgLCBtX2RlY29kZWREYXRhRGVsZXRpb25UaW1lcigqdGhpcywg
JkNhY2hlZFJlc291cmNlOjpkZXN0cm95RGVjb2RlZERhdGEsIGRlYWREZWNvZGVkRGF0YURlbGV0
aW9uSW50ZXJ2YWxGb3JSZXNvdXJjZVR5cGUodHlwZSkpCkBAIC0xMjIsNiArMTIzLDcgQEAgQ2Fj
aGVkUmVzb3VyY2U6OkNhY2hlZFJlc291cmNlKENhY2hlZFJlcwogICAgICwgbV9yZXNwb25zZVRp
bWVzdGFtcChzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjpub3coKSkKICAgICAsIG1fZnJhZ21l
bnRJZGVudGlmaWVyRm9yUmVxdWVzdChyZXF1ZXN0LnJlbGVhc2VGcmFnbWVudElkZW50aWZpZXIo
KSkKICAgICAsIG1fb3JpZ2luKHJlcXVlc3QucmVsZWFzZU9yaWdpbigpKQorICAgICwgbV9zY2hl
bWVSZWdpc3RyeShzY2hlbWVSZWdpc3RyeSkKICAgICAsIG1fdHlwZSh0eXBlKQogewogICAgIEFT
U0VSVChzZXNzaW9uSUQuaXNWYWxpZCgpKTsKQEAgLTEzNCwxNyArMTM2LDE4IEBAIENhY2hlZFJl
c291cmNlOjpDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXMKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxk
IGhhdmUgYSBiZXR0ZXIgd2F5IG9mIGNoZWNraW5nIGZvciBOYXZpZ2F0aW9uIGxvYWRzLCBtYXli
ZSBGZXRjaE1vZGU6Ok9wdGlvbnM6Ok5hdmlnYXRlLgogICAgIEFTU0VSVChtX29yaWdpbiB8fCBt
X3R5cGUgPT0gQ2FjaGVkUmVzb3VyY2U6Ok1haW5SZXNvdXJjZSk7CiAKLSAgICBpZiAoaXNSZXF1
ZXN0Q3Jvc3NPcmlnaW4obV9vcmlnaW4uZ2V0KCksIG1fcmVzb3VyY2VSZXF1ZXN0LnVybCgpLCBt
X29wdGlvbnMpKQorICAgIGlmIChpc1JlcXVlc3RDcm9zc09yaWdpbihtX29yaWdpbi5nZXQoKSwg
bV9yZXNvdXJjZVJlcXVlc3QudXJsKCksIG1fb3B0aW9ucywgc2NoZW1lUmVnaXN0cnkpKQogICAg
ICAgICBzZXRDcm9zc09yaWdpbigpOwogfQogCiAvLyBGSVhNRTogRm9yIHRoaXMgY29uc3RydWN0
b3IsIHdlIHNob3VsZCBwcm9iYWJseSBtYW5kYXRlIHRoYXQgdGhlIFVSTCBoYXMgbm8gZnJhZ21l
bnQgaWRlbnRpZmllci4KLUNhY2hlZFJlc291cmNlOjpDYWNoZWRSZXNvdXJjZShjb25zdCBVUkwm
IHVybCwgVHlwZSB0eXBlLCBTZXNzaW9uSUQgc2Vzc2lvbklEKQorQ2FjaGVkUmVzb3VyY2U6OkNh
Y2hlZFJlc291cmNlKGNvbnN0IFVSTCYgdXJsLCBUeXBlIHR5cGUsIFNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3RyeSYgc2NoZW1lUmVnaXN0cnkpCiAgICAgOiBtX3Jl
c291cmNlUmVxdWVzdCh1cmwpCiAgICAgLCBtX2RlY29kZWREYXRhRGVsZXRpb25UaW1lcigqdGhp
cywgJkNhY2hlZFJlc291cmNlOjpkZXN0cm95RGVjb2RlZERhdGEsIGRlYWREZWNvZGVkRGF0YURl
bGV0aW9uSW50ZXJ2YWxGb3JSZXNvdXJjZVR5cGUodHlwZSkpCiAgICAgLCBtX3Nlc3Npb25JRChz
ZXNzaW9uSUQpCiAgICAgLCBtX3Jlc3BvbnNlVGltZXN0YW1wKHN0ZDo6Y2hyb25vOjpzeXN0ZW1f
Y2xvY2s6Om5vdygpKQogICAgICwgbV9mcmFnbWVudElkZW50aWZpZXJGb3JSZXF1ZXN0KENhY2hl
ZFJlc291cmNlUmVxdWVzdDo6c3BsaXRGcmFnbWVudElkZW50aWZpZXJGcm9tUmVxdWVzdFVSTCht
X3Jlc291cmNlUmVxdWVzdCkpCisgICAgLCBtX3NjaGVtZVJlZ2lzdHJ5KHNjaGVtZVJlZ2lzdHJ5
KQogICAgICwgbV90eXBlKHR5cGUpCiAgICAgLCBtX3N0YXR1cyhDYWNoZWQpCiB7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAkocmV2aXNpb24g
MjA4Mzk4KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDcgQEAgY2xhc3MgQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBJbnNwZWN0b3JSZXNvdXJj
ZTsKIGNsYXNzIE1lbW9yeUNhY2hlOworY2xhc3MgUGFnZVNjaGVtZVJlZ2lzdHJ5OwogY2xhc3Mg
U2VjdXJpdHlPcmlnaW47CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJyZXNvdXJjZUxv
YWRlcjsKQEAgLTkzLDcgKzk0LDcgQEAgcHVibGljOgogICAgICAgICBEZWNvZGVFcnJvcgogICAg
IH07CiAKLSAgICBDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiwgVHlwZSwg
U2Vzc2lvbklEKTsKKyAgICBDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiwg
VHlwZSwgU2Vzc2lvbklELCBjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnkmKTsKICAgICB2aXJ0dWFs
IH5DYWNoZWRSZXNvdXJjZSgpOwogCiAgICAgdmlydHVhbCB2b2lkIGxvYWQoQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXImKTsKQEAgLTIwOCw2ICsyMDksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2FkRnJv
bShjb25zdCBDYWNoZWRSZXNvdXJjZSYpOwogCiAgICAgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbigp
IGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luLmdldCgpOyB9CisgICAgY29uc3QgUGFnZVNjaGVtZVJl
Z2lzdHJ5JiBzY2hlbWVSZWdpc3RyeSgpIHsgcmV0dXJuIG1fc2NoZW1lUmVnaXN0cnkuZ2V0KCk7
IH0KIAogICAgIGJvb2wgY2FuRGVsZXRlKCkgY29uc3QgeyByZXR1cm4gIWhhc0NsaWVudHMoKSAm
JiAhbV9sb2FkZXIgJiYgIW1fcHJlbG9hZENvdW50ICYmICFtX2hhbmRsZUNvdW50ICYmICFtX3Jl
c291cmNlVG9SZXZhbGlkYXRlICYmICFtX3Byb3h5UmVzb3VyY2U7IH0KICAgICBib29sIGhhc09u
ZUhhbmRsZSgpIGNvbnN0IHsgcmV0dXJuIG1faGFuZGxlQ291bnQgPT0gMTsgfQpAQCAtMjc0LDcg
KzI3Niw3IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIC8vIENhY2hlZFJlc291cmNlIGNv
bnN0cnVjdG9yIHRoYXQgbWF5IGJlIHVzZWQgd2hlbiB0aGUgQ2FjaGVkUmVzb3VyY2UgY2FuIGFs
cmVhZHkgYmUgZmlsbGVkIHdpdGggcmVzcG9uc2UgZGF0YS4KLSAgICBDYWNoZWRSZXNvdXJjZShj
b25zdCBVUkwmLCBUeXBlLCBTZXNzaW9uSUQpOworICAgIENhY2hlZFJlc291cmNlKGNvbnN0IFVS
TCYsIFR5cGUsIFNlc3Npb25JRCwgY29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5Jik7CiAKICAgICB2
b2lkIHNldEVuY29kZWRTaXplKHVuc2lnbmVkKTsKICAgICB2b2lkIHNldERlY29kZWRTaXplKHVu
c2lnbmVkKTsKQEAgLTMxOCw2ICszMjAsNyBAQCBwcml2YXRlOgogCiAgICAgUmVzb3VyY2VFcnJv
ciBtX2Vycm9yOwogICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gbV9vcmlnaW47CisgICAgUmVm
PGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3RyeT4gbV9zY2hlbWVSZWdpc3RyeTsKIAogICAgIGRvdWJs
ZSBtX2xhc3REZWNvZGVkQWNjZXNzVGltZSB7IDAgfTsgLy8gVXNlZCBhcyBhICJ0aHJhc2ggZ3Vh
cmQiIGluIHRoZSBjYWNoZQogICAgIGRvdWJsZSBtX2xvYWRGaW5pc2hUaW1lIHsgMCB9OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VM
b2FkZXIuY3BwCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw2ICs1Nyw3
IEBACiAjaW5jbHVkZSAiTWFpbkZyYW1lLmgiCiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKICNp
bmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUGFnZVNjaGVtZVJlZ2lzdHJ5LmgiCiAjaW5jbHVk
ZSAiUGVyZm9ybWFuY2UuaCIKICNpbmNsdWRlICJQaW5nTG9hZGVyLmgiCiAjaW5jbHVkZSAiUGxh
dGZvcm1TdHJhdGVnaWVzLmgiCkBAIC04NSw1MCArODYsNTEgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1zdGF0aWMgQ2FjaGVkUmVzb3VyY2UqIGNyZWF0ZVJlc291cmNlKENhY2hlZFJlc291
cmNlOjpUeXBlIHR5cGUsIENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNlc3Npb25J
RCBzZXNzaW9uSUQpCitzdGF0aWMgQ2FjaGVkUmVzb3VyY2UqIGNyZWF0ZVJlc291cmNlKENhY2hl
ZFJlc291cmNlOjpUeXBlIHR5cGUsIENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3RyeSYgc2NoZW1lUmVnaXN0
cnkpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6SW1h
Z2VSZXNvdXJjZToKLSAgICAgICAgcmV0dXJuIG5ldyBDYWNoZWRJbWFnZShXVEZNb3ZlKHJlcXVl
c3QpLCBzZXNzaW9uSUQpOworICAgICAgICByZXR1cm4gbmV3IENhY2hlZEltYWdlKFdURk1vdmUo
cmVxdWVzdCksIHNlc3Npb25JRCwgc2NoZW1lUmVnaXN0cnkpOwogICAgIGNhc2UgQ2FjaGVkUmVz
b3VyY2U6OkNTU1N0eWxlU2hlZXQ6Ci0gICAgICAgIHJldHVybiBuZXcgQ2FjaGVkQ1NTU3R5bGVT
aGVldChXVEZNb3ZlKHJlcXVlc3QpLCBzZXNzaW9uSUQpOworICAgICAgICByZXR1cm4gbmV3IENh
Y2hlZENTU1N0eWxlU2hlZXQoV1RGTW92ZShyZXF1ZXN0KSwgc2Vzc2lvbklELCBzY2hlbWVSZWdp
c3RyeSk7CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6U2NyaXB0OgotICAgICAgICByZXR1cm4g
bmV3IENhY2hlZFNjcmlwdChXVEZNb3ZlKHJlcXVlc3QpLCBzZXNzaW9uSUQpOworICAgICAgICBy
ZXR1cm4gbmV3IENhY2hlZFNjcmlwdChXVEZNb3ZlKHJlcXVlc3QpLCBzZXNzaW9uSUQsIHNjaGVt
ZVJlZ2lzdHJ5KTsKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpTVkdEb2N1bWVudFJlc291cmNl
OgotICAgICAgICByZXR1cm4gbmV3IENhY2hlZFNWR0RvY3VtZW50KFdURk1vdmUocmVxdWVzdCks
IHNlc3Npb25JRCk7CisgICAgICAgIHJldHVybiBuZXcgQ2FjaGVkU1ZHRG9jdW1lbnQoV1RGTW92
ZShyZXF1ZXN0KSwgc2Vzc2lvbklELCBzY2hlbWVSZWdpc3RyeSk7CiAjaWYgRU5BQkxFKFNWR19G
T05UUykKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpTVkdGb250UmVzb3VyY2U6Ci0gICAgICAg
IHJldHVybiBuZXcgQ2FjaGVkU1ZHRm9udChXVEZNb3ZlKHJlcXVlc3QpLCBzZXNzaW9uSUQpOwor
ICAgICAgICByZXR1cm4gbmV3IENhY2hlZFNWR0ZvbnQoV1RGTW92ZShyZXF1ZXN0KSwgc2Vzc2lv
bklELCBzY2hlbWVSZWdpc3RyeSk7CiAjZW5kaWYKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpG
b250UmVzb3VyY2U6Ci0gICAgICAgIHJldHVybiBuZXcgQ2FjaGVkRm9udChXVEZNb3ZlKHJlcXVl
c3QpLCBzZXNzaW9uSUQpOworICAgICAgICByZXR1cm4gbmV3IENhY2hlZEZvbnQoV1RGTW92ZShy
ZXF1ZXN0KSwgc2Vzc2lvbklELCBzY2hlbWVSZWdpc3RyeSk7CiAgICAgY2FzZSBDYWNoZWRSZXNv
dXJjZTo6TWVkaWFSZXNvdXJjZToKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpSYXdSZXNvdXJj
ZToKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpNYWluUmVzb3VyY2U6Ci0gICAgICAgIHJldHVy
biBuZXcgQ2FjaGVkUmF3UmVzb3VyY2UoV1RGTW92ZShyZXF1ZXN0KSwgdHlwZSwgc2Vzc2lvbklE
KTsKKyAgICAgICAgcmV0dXJuIG5ldyBDYWNoZWRSYXdSZXNvdXJjZShXVEZNb3ZlKHJlcXVlc3Qp
LCB0eXBlLCBzZXNzaW9uSUQsIHNjaGVtZVJlZ2lzdHJ5KTsKICNpZiBFTkFCTEUoWFNMVCkKICAg
ICBjYXNlIENhY2hlZFJlc291cmNlOjpYU0xTdHlsZVNoZWV0OgotICAgICAgICByZXR1cm4gbmV3
IENhY2hlZFhTTFN0eWxlU2hlZXQoV1RGTW92ZShyZXF1ZXN0KSwgc2Vzc2lvbklEKTsKKyAgICAg
ICAgcmV0dXJuIG5ldyBDYWNoZWRYU0xTdHlsZVNoZWV0KFdURk1vdmUocmVxdWVzdCksIHNlc3Np
b25JRCwgc2NoZW1lUmVnaXN0cnkpOwogI2VuZGlmCiAjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gp
CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6TGlua1ByZWZldGNoOgotICAgICAgICByZXR1cm4g
bmV3IENhY2hlZFJlc291cmNlKFdURk1vdmUocmVxdWVzdCksIENhY2hlZFJlc291cmNlOjpMaW5r
UHJlZmV0Y2gsIHNlc3Npb25JRCk7CisgICAgICAgIHJldHVybiBuZXcgQ2FjaGVkUmVzb3VyY2Uo
V1RGTW92ZShyZXF1ZXN0KSwgQ2FjaGVkUmVzb3VyY2U6OkxpbmtQcmVmZXRjaCwgc2Vzc2lvbklE
LCBzY2hlbWVSZWdpc3RyeSk7CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6TGlua1N1YnJlc291
cmNlOgotICAgICAgICByZXR1cm4gbmV3IENhY2hlZFJlc291cmNlKFdURk1vdmUocmVxdWVzdCks
IENhY2hlZFJlc291cmNlOjpMaW5rU3VicmVzb3VyY2UsIHNlc3Npb25JRCk7CisgICAgICAgIHJl
dHVybiBuZXcgQ2FjaGVkUmVzb3VyY2UoV1RGTW92ZShyZXF1ZXN0KSwgQ2FjaGVkUmVzb3VyY2U6
OkxpbmtTdWJyZXNvdXJjZSwgc2Vzc2lvbklELCBzY2hlbWVSZWdpc3RyeSk7CiAjZW5kaWYKICNp
ZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6VGV4dFRyYWNr
UmVzb3VyY2U6Ci0gICAgICAgIHJldHVybiBuZXcgQ2FjaGVkVGV4dFRyYWNrKFdURk1vdmUocmVx
dWVzdCksIHNlc3Npb25JRCk7CisgICAgICAgIHJldHVybiBuZXcgQ2FjaGVkVGV4dFRyYWNrKFdU
Rk1vdmUocmVxdWVzdCksIHNlc3Npb25JRCwgc2NoZW1lUmVnaXN0cnkpOwogI2VuZGlmCiAgICAg
fQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCi1D
YWNoZWRSZXNvdXJjZUxvYWRlcjo6Q2FjaGVkUmVzb3VyY2VMb2FkZXIoRG9jdW1lbnRMb2FkZXIq
IGRvY3VtZW50TG9hZGVyKQorQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OkNhY2hlZFJlc291cmNlTG9h
ZGVyKERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciwgY29uc3QgUGFnZVNjaGVtZVJlZ2lz
dHJ5JiBzY2hlbWVSZWdpc3RyeSkKICAgICA6IG1fZG9jdW1lbnQobnVsbHB0cikKICAgICAsIG1f
ZG9jdW1lbnRMb2FkZXIoZG9jdW1lbnRMb2FkZXIpCiAgICAgLCBtX3JlcXVlc3RDb3VudCgwKQor
ICAgICwgbV9zY2hlbWVSZWdpc3RyeShzY2hlbWVSZWdpc3RyeSkKICAgICAsIG1fZ2FyYmFnZUNv
bGxlY3REb2N1bWVudFJlc291cmNlc1RpbWVyKCp0aGlzLCAmQ2FjaGVkUmVzb3VyY2VMb2FkZXI6
OmdhcmJhZ2VDb2xsZWN0RG9jdW1lbnRSZXNvdXJjZXMpCiAgICAgLCBtX2F1dG9Mb2FkSW1hZ2Vz
KHRydWUpCiAgICAgLCBtX2ltYWdlc0VuYWJsZWQodHJ1ZSkKQEAgLTE4Myw3ICsxODUsNyBAQCBD
YWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRJbWFnZT4gQ2FjaGVkCiAgICAgICAgICAgICBpZiAo
RG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCkpCiAgICAgICAgICAgICAgICAg
cmVxdWVzdC51cGdyYWRlSW5zZWN1cmVSZXF1ZXN0SWZOZWVkZWQoKmRvY3VtZW50KTsKICAgICAg
ICAgICAgIFVSTCByZXF1ZXN0VVJMID0gcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKTsK
LSAgICAgICAgICAgIGlmIChyZXF1ZXN0VVJMLmlzVmFsaWQoKSAmJiBjYW5SZXF1ZXN0KENhY2hl
ZFJlc291cmNlOjpJbWFnZVJlc291cmNlLCByZXF1ZXN0VVJMLCByZXF1ZXN0LCBGb3JQcmVsb2Fk
OjpObykpCisgICAgICAgICAgICBpZiAocmVxdWVzdFVSTC5pc1ZhbGlkKCkgJiYgY2FuUmVxdWVz
dChDYWNoZWRSZXNvdXJjZTo6SW1hZ2VSZXNvdXJjZSwgcmVxdWVzdFVSTCwgcmVxdWVzdCwgRm9y
UHJlbG9hZDo6Tm8sIG1fc2NoZW1lUmVnaXN0cnkuZ2V0KCkpKQogICAgICAgICAgICAgICAgIFBp
bmdMb2FkZXI6OmxvYWRJbWFnZSgqZnJhbWUsIHJlcXVlc3RVUkwpOwogICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgICAgIH0KQEAgLTIzNCw3ICsyMzYsNyBAQCBDYWNoZWRSZXNvdXJj
ZUhhbmRsZTxDYWNoZWRDU1NTdHlsZVNoZWV0CiAKICAgICByZXF1ZXN0LnJlbW92ZUZyYWdtZW50
SWRlbnRpZmllcklmTmVlZGVkKCk7CiAKLSAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRD
U1NTdHlsZVNoZWV0PiB1c2VyU2hlZXQgPSBuZXcgQ2FjaGVkQ1NTU3R5bGVTaGVldChXVEZNb3Zl
KHJlcXVlc3QpLCBzZXNzaW9uSUQoKSk7CisgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVk
Q1NTU3R5bGVTaGVldD4gdXNlclNoZWV0ID0gbmV3IENhY2hlZENTU1N0eWxlU2hlZXQoV1RGTW92
ZShyZXF1ZXN0KSwgc2Vzc2lvbklEKCksIG1fc2NoZW1lUmVnaXN0cnkuZ2V0KCkpOwogCiAgICAg
aWYgKHVzZXJTaGVldC0+YWxsb3dzQ2FjaGluZygpKQogICAgICAgICBtZW1vcnlDYWNoZS5hZGQo
KnVzZXJTaGVldCk7CkBAIC00MzUsMTggKzQzNywxOCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNT
YW1lT3JpZ2luRGF0YVVSTChjCiAgICAgcmV0dXJuIHVybC5wcm90b2NvbElzRGF0YSgpICYmIG9w
dGlvbnMuc2FtZU9yaWdpbkRhdGFVUkxGbGFnID09IFNhbWVPcmlnaW5EYXRhVVJMRmxhZzo6U2V0
OwogfQogCi1ib29sIENhY2hlZFJlc291cmNlTG9hZGVyOjpjYW5SZXF1ZXN0KENhY2hlZFJlc291
cmNlOjpUeXBlIHR5cGUsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBDYWNoZWRSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIEZvclByZWxvYWQgZm9yUHJlbG9hZCkKK2Jvb2wgQ2FjaGVkUmVzb3VyY2VM
b2FkZXI6OmNhblJlcXVlc3QoQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgVVJMJiB1
cmwsIGNvbnN0IENhY2hlZFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgRm9yUHJlbG9hZCBmb3JQ
cmVsb2FkLCBjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnkmIHNjaGVtZVJlZ2lzdHJ5KQogewogICAg
IGF1dG8mIG9wdGlvbnMgPSByZXF1ZXN0Lm9wdGlvbnMoKTsKIAotICAgIGlmIChkb2N1bWVudCgp
ICYmICFkb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5EaXNwbGF5KHVybCkpIHsKKyAg
ICBpZiAoZG9jdW1lbnQoKSAmJiAhZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuRGlz
cGxheSh1cmwsIHNjaGVtZVJlZ2lzdHJ5KSkgewogICAgICAgICBpZiAoZm9yUHJlbG9hZCA9PSBG
b3JQcmVsb2FkOjpObykKICAgICAgICAgICAgIEZyYW1lTG9hZGVyOjpyZXBvcnRMb2NhbExvYWRG
YWlsZWQoZnJhbWUoKSwgdXJsLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpKTsKICAg
ICAgICAgTE9HKFJlc291cmNlTG9hZGluZywgIkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0
UmVzb3VyY2UgVVJMIHdhcyBub3QgYWxsb3dlZCBieSBTZWN1cml0eU9yaWdpbjo6Y2FuRGlzcGxh
eSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKG9wdGlvbnMubW9k
ZSA9PSBGZXRjaE9wdGlvbnM6Ok1vZGU6OlNhbWVPcmlnaW4gJiYgIW1fZG9jdW1lbnQtPnNlY3Vy
aXR5T3JpZ2luKCktPmNhblJlcXVlc3QodXJsKSAmJiAhaXNTYW1lT3JpZ2luRGF0YVVSTCh1cmws
IG9wdGlvbnMpKSB7CisgICAgaWYgKG9wdGlvbnMubW9kZSA9PSBGZXRjaE9wdGlvbnM6Ok1vZGU6
OlNhbWVPcmlnaW4gJiYgIW1fZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCktPmNhblJlcXVlc3Qo
dXJsLCBzY2hlbWVSZWdpc3RyeSkgJiYgIWlzU2FtZU9yaWdpbkRhdGFVUkwodXJsLCBvcHRpb25z
KSkgewogICAgICAgICBwcmludEFjY2Vzc0RlbmllZE1lc3NhZ2UodXJsKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KQEAgLTQ3Myw3ICs0NzUsNyBAQCBib29sIENhY2hlZFJlc291cmNl
TG9hZGVyOjpjYW5SZXF1ZXN0KENhCiAvLyBGSVhNRTogU2hvdWxkIHdlIGZpbmQgYSB3YXkgdG8g
a25vdyB3aGV0aGVyIHRoZSByZWRpcmVjdGlvbiBpcyBmb3IgYSBwcmVsb2FkIHJlcXVlc3QgbGlr
ZSB3ZSBkbyBmb3IgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNhblJlcXVlc3Q/CiBib29sIENhY2hl
ZFJlc291cmNlTG9hZGVyOjpjYW5SZXF1ZXN0QWZ0ZXJSZWRpcmVjdGlvbihDYWNoZWRSZXNvdXJj
ZTo6VHlwZSB0eXBlLCBjb25zdCBVUkwmIHVybCwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25z
JiBvcHRpb25zKSBjb25zdAogewotICAgIGlmIChkb2N1bWVudCgpICYmICFkb2N1bWVudCgpLT5z
ZWN1cml0eU9yaWdpbigpLT5jYW5EaXNwbGF5KHVybCkpIHsKKyAgICBpZiAoZG9jdW1lbnQoKSAm
JiAhZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuRGlzcGxheSh1cmwsIG1fc2NoZW1l
UmVnaXN0cnkuZ2V0KCkpKSB7CiAgICAgICAgIEZyYW1lTG9hZGVyOjpyZXBvcnRMb2NhbExvYWRG
YWlsZWQoZnJhbWUoKSwgdXJsLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpKTsKICAg
ICAgICAgTE9HKFJlc291cmNlTG9hZGluZywgIkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0
UmVzb3VyY2UgVVJMIHdhcyBub3QgYWxsb3dlZCBieSBTZWN1cml0eU9yaWdpbjo6Y2FuRGlzcGxh
eSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00ODIsNyArNDg0LDcgQEAgYm9vbCBDYWNo
ZWRSZXNvdXJjZUxvYWRlcjo6Y2FuUmVxdWVzdEFmdAogICAgIC8vIEZJWE1FOiBBY2NvcmRpbmcg
dG8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2h0dHAtcmVkaXJlY3QtZmV0Y2gsIHdl
IHNob3VsZCBjaGVjayB0aGF0IHRoZSBVUkwgaXMgSFRUUChzKSBleGNlcHQgaWYgaW4gbmF2aWdh
dGlvbiBtb2RlLgogICAgIC8vIEJ1dCB3ZSBjdXJyZW50bHkgYWxsb3cgYXQgbGVhc3QgZGF0YSBV
UkxzIHRvIGJlIGxvYWRlZC4KIAotICAgIGlmIChvcHRpb25zLm1vZGUgPT0gRmV0Y2hPcHRpb25z
OjpNb2RlOjpTYW1lT3JpZ2luICYmICFtX2RvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLT5jYW5S
ZXF1ZXN0KHVybCkpIHsKKyAgICBpZiAob3B0aW9ucy5tb2RlID09IEZldGNoT3B0aW9uczo6TW9k
ZTo6U2FtZU9yaWdpbiAmJiAhbV9kb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVz
dCh1cmwsIG1fc2NoZW1lUmVnaXN0cnkuZ2V0KCkpKSB7CiAgICAgICAgIHByaW50QWNjZXNzRGVu
aWVkTWVzc2FnZSh1cmwpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtNTI4LDcg
KzUzMCw3IEBAIGJvb2wgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNhblJlcXVlc3RJbkMKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgaWYgKCFkb2N1bWVudC0+c2hvdWxkRW5mb3Jj
ZUNvbnRlbnREaXNwb3NpdGlvbkF0dGFjaG1lbnRTYW5kYm94KCkgfHwgZG9jdW1lbnQtPnNlY3Vy
aXR5T3JpZ2luKCktPmNhblJlcXVlc3QodXJsKSkKKyAgICBpZiAoIWRvY3VtZW50LT5zaG91bGRF
bmZvcmNlQ29udGVudERpc3Bvc2l0aW9uQXR0YWNobWVudFNhbmRib3goKSB8fCBkb2N1bWVudC0+
c2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdCh1cmwsIG1fc2NoZW1lUmVnaXN0cnkuZ2V0KCkp
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIFN0cmluZyBtZXNzYWdlID0gIlVuc2FmZSBh
dHRlbXB0IHRvIGxvYWQgVVJMICIgKyB1cmwuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3Ro
KCkgKyAiIGZyb20gZG9jdW1lbnQgd2l0aCBDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50
IGF0IFVSTCAiICsgZG9jdW1lbnQtPnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0
aCgpICsgIi4iOwpAQCAtNjI0LDcgKzYyNiw3IEBAIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hl
ZFJlc291cmNlPiBDYWMKICAgICAgICAgcmV0dXJuIGxvYWRSZXNvdXJjZShyZXNvdXJjZS50eXBl
KCksIFdURk1vdmUocmVxdWVzdCkpOwogICAgIH0KIAotICAgIGF1dG8gcmVzb3VyY2VIYW5kbGUg
PSBjcmVhdGVSZXNvdXJjZShyZXNvdXJjZS50eXBlKCksIFdURk1vdmUocmVxdWVzdCksIHNlc3Np
b25JRCgpKTsKKyAgICBhdXRvIHJlc291cmNlSGFuZGxlID0gY3JlYXRlUmVzb3VyY2UocmVzb3Vy
Y2UudHlwZSgpLCBXVEZNb3ZlKHJlcXVlc3QpLCBzZXNzaW9uSUQoKSwgbV9zY2hlbWVSZWdpc3Ry
eS5nZXQoKSk7CiAgICAgcmVzb3VyY2VIYW5kbGUtPmxvYWRGcm9tKHJlc291cmNlKTsKICAgICBy
ZXR1cm4gcmVzb3VyY2VIYW5kbGU7CiB9CkBAIC02ODQsNyArNjg2LDcgQEAgQ2FjaGVkUmVzb3Vy
Y2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IENhYwogICAgIHByZXBhcmVGZXRjaCh0eXBlLCByZXF1
ZXN0KTsKIAogICAgIC8vIFdlIGFyZSBwYXNzaW5nIHVybCBhcyB3ZWxsIGFzIHJlcXVlc3QsIGFz
IHJlcXVlc3QgdXJsIG1heSBjb250YWluIGEgZnJhZ21lbnQgaWRlbnRpZmllci4KLSAgICBpZiAo
IWNhblJlcXVlc3QodHlwZSwgdXJsLCByZXF1ZXN0LCBmb3JQcmVsb2FkKSkgeworICAgIGlmICgh
Y2FuUmVxdWVzdCh0eXBlLCB1cmwsIHJlcXVlc3QsIGZvclByZWxvYWQsIG1fc2NoZW1lUmVnaXN0
cnkuZ2V0KCkpKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJlcXVlc3RSZXNv
dXJjZTogTm90IGFsbG93ZWQgdG8gcmVxdWVzdCByZXNvdXJjZSAoZnJhbWUgPSAlcCkiLCBmcmFt
ZSgpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAtNjk3LDcgKzY5OSw3IEBA
IENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBDYWMKICAgICAgICAgaWYgKGJs
b2NrZWRTdGF0dXMuYmxvY2tlZExvYWQpIHsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoInJlcXVlc3RSZXNvdXJjZTogUmVzb3VyY2UgYmxvY2tlZCBieSBjb250ZW50IGJsb2Nr
ZXIgKGZyYW1lID0gJXApIiwgZnJhbWUoKSk7CiAgICAgICAgICAgICBpZiAodHlwZSA9PSBDYWNo
ZWRSZXNvdXJjZTo6VHlwZTo6TWFpblJlc291cmNlKSB7Ci0gICAgICAgICAgICAgICAgYXV0byBy
ZXNvdXJjZSA9IGNyZWF0ZVJlc291cmNlKHR5cGUsIFdURk1vdmUocmVxdWVzdCksIHNlc3Npb25J
RCgpKTsKKyAgICAgICAgICAgICAgICBhdXRvIHJlc291cmNlID0gY3JlYXRlUmVzb3VyY2UodHlw
ZSwgV1RGTW92ZShyZXF1ZXN0KSwgc2Vzc2lvbklEKCksIG1fc2NoZW1lUmVnaXN0cnkuZ2V0KCkp
OwogICAgICAgICAgICAgICAgIEFTU0VSVChyZXNvdXJjZSk7CiAgICAgICAgICAgICAgICAgcmVz
b3VyY2UtPmVycm9yKENhY2hlZFJlc291cmNlOjpTdGF0dXM6OkxvYWRFcnJvcik7CiAgICAgICAg
ICAgICAgICAgcmVzb3VyY2UtPnNldFJlc291cmNlRXJyb3IoUmVzb3VyY2VFcnJvcihDb250ZW50
RXh0ZW5zaW9uczo6V2ViS2l0Q29udGVudEJsb2NrZXJEb21haW4sIDAsIHJlc291cmNlUmVxdWVz
dC51cmwoKSwgV0VCX1VJX1NUUklORygiVGhlIFVSTCB3YXMgYmxvY2tlZCBieSBhIGNvbnRlbnQg
YmxvY2tlciIsICJXZWJLaXRFcnJvckJsb2NrZWRCeUNvbnRlbnRCbG9ja2VyIGRlc2NyaXB0aW9u
IikpKTsKQEAgLTgzMSw3ICs4MzMsNyBAQCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNv
dXJjZT4gQ2FjCiAjaWYgRU5BQkxFKFdFQl9USU1JTkcpCiAgICAgQXRvbWljU3RyaW5nIGluaXRp
YXRvck5hbWUgPSByZXF1ZXN0LmluaXRpYXRvck5hbWUoKTsKICNlbmRpZgotICAgIENhY2hlZFJl
c291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBuZXdSZXNvdXJjZSA9IGNyZWF0ZVJlc291cmNl
KHJlc291cmNlLnR5cGUoKSwgV1RGTW92ZShyZXF1ZXN0KSwgcmVzb3VyY2Uuc2Vzc2lvbklEKCkp
OworICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBuZXdSZXNvdXJjZSA9
IGNyZWF0ZVJlc291cmNlKHJlc291cmNlLnR5cGUoKSwgV1RGTW92ZShyZXF1ZXN0KSwgcmVzb3Vy
Y2Uuc2Vzc2lvbklEKCksIG1fc2NoZW1lUmVnaXN0cnkuZ2V0KCkpOwogCiAgICAgTE9HKFJlc291
cmNlTG9hZGluZywgIlJlc291cmNlICVwIGNyZWF0ZWQgdG8gcmV2YWxpZGF0ZSAlcCIsIG5ld1Jl
c291cmNlLmdldCgpLCAmcmVzb3VyY2UpOwogICAgIG5ld1Jlc291cmNlLT5zZXRSZXNvdXJjZVRv
UmV2YWxpZGF0ZSgmcmVzb3VyY2UpOwpAQCAtODU2LDcgKzg1OCw3IEBAIENhY2hlZFJlc291cmNl
SGFuZGxlPENhY2hlZFJlc291cmNlPiBDYWMKICNpZiBFTkFCTEUoV0VCX1RJTUlORykKICAgICBB
dG9taWNTdHJpbmcgaW5pdGlhdG9yTmFtZSA9IHJlcXVlc3QuaW5pdGlhdG9yTmFtZSgpOwogI2Vu
ZGlmCi0gICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IHJlc291cmNlID0g
Y3JlYXRlUmVzb3VyY2UodHlwZSwgV1RGTW92ZShyZXF1ZXN0KSwgc2Vzc2lvbklEKCkpOworICAg
IENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiByZXNvdXJjZSA9IGNyZWF0ZVJl
c291cmNlKHR5cGUsIFdURk1vdmUocmVxdWVzdCksIHNlc3Npb25JRCgpLCBtX3NjaGVtZVJlZ2lz
dHJ5LmdldCgpKTsKIAogICAgIGlmIChyZXNvdXJjZS0+YWxsb3dzQ2FjaGluZygpICYmICFtZW1v
cnlDYWNoZS5hZGQoKnJlc291cmNlKSkKICAgICAgICAgcmVzb3VyY2UtPnNldE93bmluZ0NhY2hl
ZFJlc291cmNlTG9hZGVyKHRoaXMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDIwODM5OCkKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMyw4ICsyMyw3IEBACiAgICAgcGFnZXMgZnJvbSB0aGUgd2ViLiBJdCBoYXMg
YSBtZW1vcnkgY2FjaGUgZm9yIHRoZXNlIG9iamVjdHMuCiAqLwogCi0jaWZuZGVmIENhY2hlZFJl
c291cmNlTG9hZGVyX2gKLSNkZWZpbmUgQ2FjaGVkUmVzb3VyY2VMb2FkZXJfaAorI3ByYWdtYSBv
bmNlCiAKICNpbmNsdWRlICJDYWNoZVBvbGljeS5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNl
LmgiCkBAIC03MCw3ICs2OSw3IEBAIGZyaWVuZCBjbGFzcyBJbWFnZUxvYWRlcjsKIGZyaWVuZCBj
bGFzcyBSZXNvdXJjZUNhY2hlVmFsaWRhdGlvblN1cHByZXNzb3I7CiAKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmPENhY2hlZFJlc291cmNlTG9hZGVyPiBjcmVhdGUoRG9jdW1lbnRMb2FkZXIqIGRv
Y3VtZW50TG9hZGVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENhY2hlZFJlc291cmNlTG9hZGVy
KGRvY3VtZW50TG9hZGVyKSk7IH0KKyAgICBzdGF0aWMgUmVmPENhY2hlZFJlc291cmNlTG9hZGVy
PiBjcmVhdGUoRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyLCBjb25zdCBQYWdlU2NoZW1l
UmVnaXN0cnkmIHNjaGVtZVJlZ2lzdHJ5KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENhY2hlZFJl
c291cmNlTG9hZGVyKGRvY3VtZW50TG9hZGVyLCBzY2hlbWVSZWdpc3RyeSkpOyB9CiAgICAgfkNh
Y2hlZFJlc291cmNlTG9hZGVyKCk7CiAKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRJ
bWFnZT4gcmVxdWVzdEltYWdlKENhY2hlZFJlc291cmNlUmVxdWVzdCYmKTsKQEAgLTExNyw2ICsx
MTYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXREb2N1bWVudChEb2N1bWVudCogZG9jdW1lbnQp
IHsgbV9kb2N1bWVudCA9IGRvY3VtZW50OyB9CiAgICAgdm9pZCBjbGVhckRvY3VtZW50TG9hZGVy
KCkgeyBtX2RvY3VtZW50TG9hZGVyID0gbnVsbHB0cjsgfQogICAgIFNlc3Npb25JRCBzZXNzaW9u
SUQoKSBjb25zdDsKKyAgICBjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnkmIHNjaGVtZVJlZ2lzdHJ5
KCkgeyByZXR1cm4gbV9zY2hlbWVSZWdpc3RyeS5nZXQoKTsgfQogCiAgICAgdm9pZCByZW1vdmVD
YWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSYpOwogCkBAIC0xNDYsNyArMTQ2LDcgQEAgcHVi
bGljOgogICAgIGJvb2wgaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkgY29uc3Q7CiAKIHByaXZh
dGU6Ci0gICAgZXhwbGljaXQgQ2FjaGVkUmVzb3VyY2VMb2FkZXIoRG9jdW1lbnRMb2FkZXIqKTsK
KyAgICBleHBsaWNpdCBDYWNoZWRSZXNvdXJjZUxvYWRlcihEb2N1bWVudExvYWRlciosIGNvbnN0
IFBhZ2VTY2hlbWVSZWdpc3RyeSYpOwogCiAgICAgZW51bSBjbGFzcyBGb3JQcmVsb2FkIHsgWWVz
LCBObyB9OwogICAgIGVudW0gY2xhc3MgRGVmZXJPcHRpb24geyBOb0RlZmVyLCBEZWZlcnJlZEJ5
Q2xpZW50IH07CkBAIC0xNTksNyArMTU5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZUhU
VFBSZXF1ZXN0SGVhZGVycyhDYWNoZWRSZXNvdXJjZTo6VHlwZSwgQ2FjaGVkUmVzb3VyY2VSZXF1
ZXN0Jik7CiAgICAgdm9pZCB1cGRhdGVSZWZlcnJlck9yaWdpbkFuZFVzZXJBZ2VudEhlYWRlcnMo
Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0Jik7CiAKLSAgICBib29sIGNhblJlcXVlc3QoQ2FjaGVkUmVz
b3VyY2U6OlR5cGUsIGNvbnN0IFVSTCYsIGNvbnN0IENhY2hlZFJlc291cmNlUmVxdWVzdCYsIEZv
clByZWxvYWQpOworICAgIGJvb2wgY2FuUmVxdWVzdChDYWNoZWRSZXNvdXJjZTo6VHlwZSwgY29u
c3QgVVJMJiwgY29uc3QgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiwgRm9yUHJlbG9hZCwgY29uc3Qg
UGFnZVNjaGVtZVJlZ2lzdHJ5Jik7CiAKICAgICBlbnVtIFJldmFsaWRhdGlvblBvbGljeSB7IFVz
ZSwgUmV2YWxpZGF0ZSwgUmVsb2FkLCBMb2FkIH07CiAgICAgUmV2YWxpZGF0aW9uUG9saWN5IGRl
dGVybWluZVJldmFsaWRhdGlvblBvbGljeShDYWNoZWRSZXNvdXJjZTo6VHlwZSwgQ2FjaGVkUmVz
b3VyY2VSZXF1ZXN0JiwgQ2FjaGVkUmVzb3VyY2UqIGV4aXN0aW5nUmVzb3VyY2UsIEZvclByZWxv
YWQsIERlZmVyT3B0aW9uKSBjb25zdDsKQEAgLTE4Nyw2ICsxODcsNyBAQCBwcml2YXRlOgogICAg
IGludCBtX3JlcXVlc3RDb3VudDsKICAgICAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGlzdEhhc2hT
ZXQ8Q2FjaGVkUmVzb3VyY2UqPj4gbV9wcmVsb2FkczsKKyAgICBSZWY8Y29uc3QgUGFnZVNjaGVt
ZVJlZ2lzdHJ5PiBtX3NjaGVtZVJlZ2lzdHJ5OwogCiAgICAgVGltZXIgbV9nYXJiYWdlQ29sbGVj
dERvY3VtZW50UmVzb3VyY2VzVGltZXI7CiAKQEAgLTIyMCw1ICsyMjEsMyBAQCBwcml2YXRlOgog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwCShy
ZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2VSZXF1ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsOSArMzEsMTEgQEAKICNpbmNs
dWRlICJDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgog
I2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1l
TG9hZGVyLmgiCiAjaW5jbHVkZSAiSFRUUEhlYWRlclZhbHVlcy5oIgogI2luY2x1ZGUgIk1lbW9y
eUNhY2hlLmgiCisjaW5jbHVkZSAiUGFnZVNjaGVtZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiU2Vj
dXJpdHlQb2xpY3kuaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIApAQCAtMjE4
LDI5ICsyMjAsMzAgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6OnVwZGF0ZVJlZmVycgog
ICAgIFN0cmluZyBvdXRnb2luZ09yaWdpbjsKICAgICBTdHJpbmcgb3V0Z29pbmdSZWZlcnJlciA9
IG1fcmVzb3VyY2VSZXF1ZXN0Lmh0dHBSZWZlcnJlcigpOwogICAgIGlmICghb3V0Z29pbmdSZWZl
cnJlci5pc051bGwoKSkKLSAgICAgICAgb3V0Z29pbmdPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6
Y3JlYXRlRnJvbVN0cmluZyhvdXRnb2luZ1JlZmVycmVyKS0+dG9TdHJpbmcoKTsKKyAgICAgICAg
b3V0Z29pbmdPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhvdXRnb2lu
Z1JlZmVycmVyLCBmcmFtZUxvYWRlci5mcmFtZSgpLnNjaGVtZVJlZ2lzdHJ5KCkpLT50b1N0cmlu
ZygpOwogICAgIGVsc2UgewogICAgICAgICBvdXRnb2luZ1JlZmVycmVyID0gZnJhbWVMb2FkZXIu
b3V0Z29pbmdSZWZlcnJlcigpOwogICAgICAgICBvdXRnb2luZ09yaWdpbiA9IGZyYW1lTG9hZGVy
Lm91dGdvaW5nT3JpZ2luKCk7CiAgICAgfQogCiAgICAgLy8gRklYTUU6IFJlZmFjdG9yIFNlY3Vy
aXR5UG9saWN5OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVyIHRvIGFsaWduIHdpdGggbmV3IHRlcm1p
bm9sb2d5IHVzZWQgaW4gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYmFwcHNlYy1yZWZlcnJlci1w
b2xpY3kuCisgICAgYXV0byYgc2NoZW1lUmVnaXN0cnkgPSBmcmFtZUxvYWRlci5mcmFtZSgpLnNj
aGVtZVJlZ2lzdHJ5KCk7CiAgICAgc3dpdGNoIChtX29wdGlvbnMucmVmZXJyZXJQb2xpY3kpIHsK
ICAgICBjYXNlIEZldGNoT3B0aW9uczo6UmVmZXJyZXJQb2xpY3k6OkVtcHR5U3RyaW5nOiB7Ci0g
ICAgICAgIG91dGdvaW5nUmVmZXJyZXIgPSBTZWN1cml0eVBvbGljeTo6Z2VuZXJhdGVSZWZlcnJl
ckhlYWRlcihkZWZhdWx0UG9saWN5LCBtX3Jlc291cmNlUmVxdWVzdC51cmwoKSwgb3V0Z29pbmdS
ZWZlcnJlcik7CisgICAgICAgIG91dGdvaW5nUmVmZXJyZXIgPSBTZWN1cml0eVBvbGljeTo6Z2Vu
ZXJhdGVSZWZlcnJlckhlYWRlcihkZWZhdWx0UG9saWN5LCBtX3Jlc291cmNlUmVxdWVzdC51cmwo
KSwgb3V0Z29pbmdSZWZlcnJlciwgc2NoZW1lUmVnaXN0cnkpOwogICAgICAgICBicmVhazsgfQog
ICAgIGNhc2UgRmV0Y2hPcHRpb25zOjpSZWZlcnJlclBvbGljeTo6Tm9SZWZlcnJlcldoZW5Eb3du
Z3JhZGU6Ci0gICAgICAgIG91dGdvaW5nUmVmZXJyZXIgPSBTZWN1cml0eVBvbGljeTo6Z2VuZXJh
dGVSZWZlcnJlckhlYWRlcihSZWZlcnJlclBvbGljeTo6RGVmYXVsdCwgbV9yZXNvdXJjZVJlcXVl
c3QudXJsKCksIG91dGdvaW5nUmVmZXJyZXIpOworICAgICAgICBvdXRnb2luZ1JlZmVycmVyID0g
U2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJyZXJIZWFkZXIoUmVmZXJyZXJQb2xpY3k6OkRl
ZmF1bHQsIG1fcmVzb3VyY2VSZXF1ZXN0LnVybCgpLCBvdXRnb2luZ1JlZmVycmVyLCBzY2hlbWVS
ZWdpc3RyeSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRmV0Y2hPcHRpb25zOjpSZWZlcnJl
clBvbGljeTo6Tm9SZWZlcnJlcjoKICAgICAgICAgb3V0Z29pbmdSZWZlcnJlciA9IFN0cmluZygp
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIEZldGNoT3B0aW9uczo6UmVmZXJyZXJQb2xpY3k6
Ok9yaWdpbjoKLSAgICAgICAgb3V0Z29pbmdSZWZlcnJlciA9IFNlY3VyaXR5UG9saWN5OjpnZW5l
cmF0ZVJlZmVycmVySGVhZGVyKFJlZmVycmVyUG9saWN5OjpPcmlnaW4sIG1fcmVzb3VyY2VSZXF1
ZXN0LnVybCgpLCBvdXRnb2luZ1JlZmVycmVyKTsKKyAgICAgICAgb3V0Z29pbmdSZWZlcnJlciA9
IFNlY3VyaXR5UG9saWN5OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVyKFJlZmVycmVyUG9saWN5OjpP
cmlnaW4sIG1fcmVzb3VyY2VSZXF1ZXN0LnVybCgpLCBvdXRnb2luZ1JlZmVycmVyLCBzY2hlbWVS
ZWdpc3RyeSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRmV0Y2hPcHRpb25zOjpSZWZlcnJl
clBvbGljeTo6T3JpZ2luV2hlbkNyb3NzT3JpZ2luOgotICAgICAgICBpZiAoaXNSZXF1ZXN0Q3Jv
c3NPcmlnaW4obV9vcmlnaW4uZ2V0KCksIG1fcmVzb3VyY2VSZXF1ZXN0LnVybCgpLCBtX29wdGlv
bnMpKQotICAgICAgICAgICAgb3V0Z29pbmdSZWZlcnJlciA9IFNlY3VyaXR5UG9saWN5OjpnZW5l
cmF0ZVJlZmVycmVySGVhZGVyKFJlZmVycmVyUG9saWN5OjpPcmlnaW4sIG1fcmVzb3VyY2VSZXF1
ZXN0LnVybCgpLCBvdXRnb2luZ1JlZmVycmVyKTsKKyAgICAgICAgaWYgKGlzUmVxdWVzdENyb3Nz
T3JpZ2luKG1fb3JpZ2luLmdldCgpLCBtX3Jlc291cmNlUmVxdWVzdC51cmwoKSwgbV9vcHRpb25z
LCBzY2hlbWVSZWdpc3RyeSkpCisgICAgICAgICAgICBvdXRnb2luZ1JlZmVycmVyID0gU2VjdXJp
dHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJyZXJIZWFkZXIoUmVmZXJyZXJQb2xpY3k6Ok9yaWdpbiwg
bV9yZXNvdXJjZVJlcXVlc3QudXJsKCksIG91dGdvaW5nUmVmZXJyZXIsIHNjaGVtZVJlZ2lzdHJ5
KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGZXRjaE9wdGlvbnM6OlJlZmVycmVyUG9saWN5
OjpVbnNhZmVVcmw6CiAgICAgICAgIGJyZWFrOwpAQCAtMjU1LDcgKzI1OCw3IEBAIHZvaWQgQ2Fj
aGVkUmVzb3VyY2VSZXF1ZXN0Ojp1cGRhdGVSZWZlcnIKICAgICBmcmFtZUxvYWRlci5hcHBseVVz
ZXJBZ2VudChtX3Jlc291cmNlUmVxdWVzdCk7CiB9CiAKLWJvb2wgaXNSZXF1ZXN0Q3Jvc3NPcmln
aW4oU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBS
ZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCitib29sIGlzUmVxdWVzdENyb3NzT3JpZ2lu
KFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgY29uc3QgUmVz
b3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zLCBjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnkmIHNj
aGVtZVJlZ2lzdHJ5KQogewogICAgIGlmICghb3JpZ2luKQogICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC0yNjgsNyArMjcxLDcgQEAgYm9vbCBpc1JlcXVlc3RDcm9zc09yaWdpbihTZWN1cml0eU9y
aWdpbgogICAgIGlmIChyZXF1ZXN0VVJMLnByb3RvY29sSXNEYXRhKCkgJiYgb3B0aW9ucy5zYW1l
T3JpZ2luRGF0YVVSTEZsYWcgPT0gU2FtZU9yaWdpbkRhdGFVUkxGbGFnOjpTZXQpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiAhb3JpZ2luLT5jYW5SZXF1ZXN0KHJlcXVlc3RV
UkwpOworICAgIHJldHVybiAhb3JpZ2luLT5jYW5SZXF1ZXN0KHJlcXVlc3RVUkwsIHNjaGVtZVJl
Z2lzdHJ5KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuaAkocmV2aXNp
b24gMjA4Mzk4KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
UmVxdWVzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIERvY3VtZW50
OwogY2xhc3MgRnJhbWVMb2FkZXI7CiBlbnVtIGNsYXNzIFJlZmVycmVyUG9saWN5OwogCi1ib29s
IGlzUmVxdWVzdENyb3NzT3JpZ2luKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgVVJMJiByZXF1ZXN0
VVJMLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmKTsKK2Jvb2wgaXNSZXF1ZXN0Q3Jvc3NP
cmlnaW4oU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFJlc291
cmNlTG9hZGVyT3B0aW9ucyYsIGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3RyeSYpOwogCiBjbGFzcyBD
YWNoZWRSZXNvdXJjZVJlcXVlc3QgewogcHVibGljOgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAyMDgzOTgp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNyw4ICsyNyw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Q2FjaGVkU1ZHRG9jdW1lbnQ6OkNhY2hlZFNWR0RvY3VtZW50KENhY2hlZFJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsIFNlc3Npb25JRCBzZXNzaW9uSUQpCi0gICAgOiBDYWNoZWRSZXNvdXJjZShX
VEZNb3ZlKHJlcXVlc3QpLCBTVkdEb2N1bWVudFJlc291cmNlLCBzZXNzaW9uSUQpCitDYWNoZWRT
VkdEb2N1bWVudDo6Q2FjaGVkU1ZHRG9jdW1lbnQoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgU2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5JiBzY2hl
bWVSZWdpc3RyeSkKKyAgICA6IENhY2hlZFJlc291cmNlKFdURk1vdmUocmVxdWVzdCksIFNWR0Rv
Y3VtZW50UmVzb3VyY2UsIHNlc3Npb25JRCwgc2NoZW1lUmVnaXN0cnkpCiAgICAgLCBtX2RlY29k
ZXIoVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJhcHBsaWNhdGlvbi94bWwiKSkKIHsKIH0K
QEAgLTUxLDcgKzUxLDcgQEAgdm9pZCBDYWNoZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyhT
aAogewogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gY3JlYXRl
IGEgbmV3IGZyYW1lIGJlY2F1c2UgdGhlIG5ldyBkb2N1bWVudCBiZWxvbmdzIHRvIHRoZSBwYXJl
bnQgVXNlRWxlbWVudC4KLSAgICAgICAgbV9kb2N1bWVudCA9IFNWR0RvY3VtZW50OjpjcmVhdGUo
bnVsbHB0ciwgcmVzcG9uc2UoKS51cmwoKSk7CisgICAgICAgIG1fZG9jdW1lbnQgPSBTVkdEb2N1
bWVudDo6Y3JlYXRlKG51bGxwdHIsIHJlc3BvbnNlKCkudXJsKCksIHNjaGVtZVJlZ2lzdHJ5KCkp
OwogICAgICAgICBtX2RvY3VtZW50LT5zZXRDb250ZW50KG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1
c2goZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpKTsKICAgICB9CiAgICAgQ2FjaGVkUmVzb3Vy
Y2U6OmZpbmlzaExvYWRpbmcoZGF0YSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTIwLDggKzIwLDcgQEAKICAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KICovCiAK
LSNpZm5kZWYgQ2FjaGVkU1ZHRG9jdW1lbnRfaAotI2RlZmluZSBDYWNoZWRTVkdEb2N1bWVudF9o
CisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlLmgiCiAjaW5jbHVkZSAi
Q2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKQEAgLTMyLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBDYWNoZWRTVkdEb2N1bWVudCBmaW5hbCA6IHB1YmxpYyBDYWNoZWRSZXNv
dXJjZSB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgQ2FjaGVkU1ZHRG9jdW1lbnQoQ2FjaGVkUmVz
b3VyY2VSZXF1ZXN0JiYsIFNlc3Npb25JRCk7CisgICAgZXhwbGljaXQgQ2FjaGVkU1ZHRG9jdW1l
bnQoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYsIFNlc3Npb25JRCwgY29uc3QgUGFnZVNjaGVtZVJl
Z2lzdHJ5Jik7CiAgICAgdmlydHVhbCB+Q2FjaGVkU1ZHRG9jdW1lbnQoKTsKIAogICAgIFNWR0Rv
Y3VtZW50KiBkb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnQuZ2V0KCk7IH0KQEAg
LTUxLDUgKzUwLDMgQEAgcHJpdmF0ZToKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19DQUNIRURfUkVTT1VSQ0UoQ2FjaGVkU1ZHRG9jdW1lbnQsIENhY2hl
ZFJlc291cmNlOjpTVkdEb2N1bWVudFJlc291cmNlKQotCi0jZW5kaWYgLy8gQ2FjaGVkU1ZHRG9j
dW1lbnRfaApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3Vt
ZW50Q2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNWR0RvY3VtZW50Q2xpZW50LmgJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudENsaWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yMCw4ICsyMCw3IEBACiAgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCiAqLwog
Ci0jaWZuZGVmIENhY2hlZFNWR0RvY3VtZW50Q2xpZW50X2gKLSNkZWZpbmUgQ2FjaGVkU1ZHRG9j
dW1lbnRDbGllbnRfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNs
aWVudC5oIgogCkBAIC0zNSw1ICszNCwzIEBAIHB1YmxpYzoKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKLQotI2VuZGlmIC8vIENhY2hlZFNWR0RvY3VtZW50Q2xpZW50X2gKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAJKHJldmlzaW9u
IDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDYsOCArNDYsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLUNhY2hlZFNWR0ZvbnQ6OkNhY2hlZFNWR0ZvbnQoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwgU2Vzc2lvbklEIHNlc3Npb25JRCkKLSAgICA6IENhY2hlZEZvbnQoV1RGTW92ZShy
ZXF1ZXN0KSwgc2Vzc2lvbklELCBTVkdGb250UmVzb3VyY2UpCitDYWNoZWRTVkdGb250OjpDYWNo
ZWRTVkdGb250KENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3RyeSYgc2NoZW1lUmVnaXN0cnkpCisgICAgOiBD
YWNoZWRGb250KFdURk1vdmUocmVxdWVzdCksIHNlc3Npb25JRCwgc2NoZW1lUmVnaXN0cnksIFNW
R0ZvbnRSZXNvdXJjZSkKICAgICAsIG1fZXh0ZXJuYWxTVkdGb250RWxlbWVudChudWxscHRyKQog
ewogfQpAQCAtNzMsNyArNzMsNyBAQCBib29sIENhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZv
bnREYXRhCiAgICAgICAgIC8vIEZyYW1lbGVzcyBkb2N1bWVudCBjYW4ndCBydW4gc2NyaXB0cyBv
ciBjYWxsIGJhY2sgdG8gdGhlIGNsaWVudCBzbyB0aGlzIGlzIHNhZmUuCiAgICAgICAgIGF1dG8g
Y291bnQgPSBOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb246OmRyb3BUZW1wb3JhcmlseSgpOwogCi0g
ICAgICAgIG1fZXh0ZXJuYWxTVkdEb2N1bWVudCA9IFNWR0RvY3VtZW50OjpjcmVhdGUobnVsbHB0
ciwgVVJMKCkpOworICAgICAgICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQgPSBTVkdEb2N1bWVudDo6
Y3JlYXRlKG51bGxwdHIsIFVSTCgpLCBzY2hlbWVSZWdpc3RyeSgpKTsKICAgICAgICAgUmVmUHRy
PFRleHRSZXNvdXJjZURlY29kZXI+IGRlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVh
dGUoImFwcGxpY2F0aW9uL3htbCIpOwogICAgICAgICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQtPnNl
dENvbnRlbnQoZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+
c2l6ZSgpKSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdG
b250LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNW
R0ZvbnQuaAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFNWR0ZvbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsNyBAQAogICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBDYWNoZWRTVkdGb250X2gKLSNkZWZpbmUgQ2FjaGVk
U1ZHRm9udF9oCisjcHJhZ21hIG9uY2UKIAogI2lmIEVOQUJMRShTVkdfRk9OVFMpCiAKQEAgLTM2
LDcgKzM1LDcgQEAgY2xhc3MgU1ZHRm9udEZhY2VFbGVtZW50OwogCiBjbGFzcyBDYWNoZWRTVkdG
b250IGZpbmFsIDogcHVibGljIENhY2hlZEZvbnQgewogcHVibGljOgotICAgIENhY2hlZFNWR0Zv
bnQoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYsIFNlc3Npb25JRCk7CisgICAgQ2FjaGVkU1ZHRm9u
dChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiwgU2Vzc2lvbklELCBjb25zdCBQYWdlU2NoZW1lUmVn
aXN0cnkmKTsKIAogICAgIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbWljU3Ry
aW5nJiByZW1vdGVVUkkpIG92ZXJyaWRlOwogCkBAIC02MCw1ICs1OSwzIEBAIHByaXZhdGU6CiBT
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX0NBQ0hFRF9SRVNPVVJDRShDYWNoZWRTVkdGb250LCBDYWNo
ZWRSZXNvdXJjZTo6U1ZHRm9udFJlc291cmNlKQogCiAjZW5kaWYKLQotI2VuZGlmCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAkocmV2aXNpb24g
MjA4Mzk4KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQwLDggKzQwLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1DYWNoZWRTY3JpcHQ6OkNhY2hlZFNjcmlwdChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0LCBTZXNzaW9uSUQgc2Vzc2lvbklEKQotICAgIDogQ2FjaGVkUmVzb3VyY2UoV1RGTW92ZShy
ZXF1ZXN0KSwgU2NyaXB0LCBzZXNzaW9uSUQpCitDYWNoZWRTY3JpcHQ6OkNhY2hlZFNjcmlwdChD
YWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25z
dCBQYWdlU2NoZW1lUmVnaXN0cnkmIHNjaGVtZVJlZ2lzdHJ5KQorICAgIDogQ2FjaGVkUmVzb3Vy
Y2UoV1RGTW92ZShyZXF1ZXN0KSwgU2NyaXB0LCBzZXNzaW9uSUQsIHNjaGVtZVJlZ2lzdHJ5KQog
ICAgICwgbV9kZWNvZGVyKFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZShBU0NJSUxpdGVyYWwo
ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiKSwgcmVxdWVzdC5jaGFyc2V0KCkpKQogewogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaAkocmV2aXNpb24g
MjA4Mzk4KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw3IEBACiAgICAgcGFnZXMgZnJvbSB0aGUgd2ViLiBJ
dCBoYXMgYSBtZW1vcnkgY2FjaGUgZm9yIHRoZXNlIG9iamVjdHMuCiAqLwogCi0jaWZuZGVmIENh
Y2hlZFNjcmlwdF9oCi0jZGVmaW5lIENhY2hlZFNjcmlwdF9oCisjcHJhZ21hIG9uY2UKIAogI2lu
Y2x1ZGUgIkNhY2hlZFJlc291cmNlLmgiCiAKQEAgLTM0LDcgKzMzLDcgQEAgY2xhc3MgVGV4dFJl
c291cmNlRGVjb2RlcjsKIAogY2xhc3MgQ2FjaGVkU2NyaXB0IGZpbmFsIDogcHVibGljIENhY2hl
ZFJlc291cmNlIHsKIHB1YmxpYzoKLSAgICBDYWNoZWRTY3JpcHQoQ2FjaGVkUmVzb3VyY2VSZXF1
ZXN0JiYsIFNlc3Npb25JRCk7CisgICAgQ2FjaGVkU2NyaXB0KENhY2hlZFJlc291cmNlUmVxdWVz
dCYmLCBTZXNzaW9uSUQsIGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3RyeSYpOwogICAgIHZpcnR1YWwg
fkNhY2hlZFNjcmlwdCgpOwogCiAgICAgU3RyaW5nVmlldyBzY3JpcHQoKTsKQEAgLTcyLDUgKzcx
LDMgQEAgcHJpdmF0ZToKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19DQUNIRURfUkVTT1VSQ0UoQ2FjaGVkU2NyaXB0LCBDYWNoZWRSZXNvdXJjZTo6U2Ny
aXB0KQotCi0jZW5kaWYgLy8gQ2FjaGVkU2NyaXB0X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRTdHlsZVNoZWV0Q2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFN0eWxlU2hlZXRDbGllbnQuaAkocmV2aXNpb24g
MjA4Mzk4KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFN0eWxlU2hlZXRD
bGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsNyBAQAogIHBhZ2VzIGZyb20gdGhl
IHdlYi4gSXQgaGFzIGEgbWVtb3J5IGNhY2hlIGZvciB0aGVzZSBvYmplY3RzLgogICovCiAKLSNp
Zm5kZWYgQ2FjaGVkU3R5bGVTaGVldENsaWVudF9oCi0jZGVmaW5lIENhY2hlZFN0eWxlU2hlZXRD
bGllbnRfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5o
IgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC00NCw1ICs0MywzIEBAIHB1YmxpYzoKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIENhY2hlZFN0eWxlU2hlZXRD
bGllbnRfaApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFj
ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRl
eHRUcmFjay5jcHAJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw4ICszNyw4IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ2FjaGVkVGV4dFRyYWNrOjpDYWNoZWRUZXh0VHJh
Y2soQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2Vzc2lvbklEIHNlc3Npb25JRCkK
LSAgICA6IENhY2hlZFJlc291cmNlKFdURk1vdmUocmVxdWVzdCksIFRleHRUcmFja1Jlc291cmNl
LCBzZXNzaW9uSUQpCitDYWNoZWRUZXh0VHJhY2s6OkNhY2hlZFRleHRUcmFjayhDYWNoZWRSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBQYWdlU2No
ZW1lUmVnaXN0cnkmIHNjaGVtZVJlZ2lzdHJ5KQorICAgIDogQ2FjaGVkUmVzb3VyY2UoV1RGTW92
ZShyZXF1ZXN0KSwgVGV4dFRyYWNrUmVzb3VyY2UsIHNlc3Npb25JRCwgc2NoZW1lUmVnaXN0cnkp
CiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJh
Y2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4
dFRyYWNrLmgJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRUZXh0VHJhY2suaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsNyBAQAogICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgQ2FjaGVkVGV4
dFRyYWNrX2gKLSNkZWZpbmUgQ2FjaGVkVGV4dFRyYWNrX2gKKyNwcmFnbWEgb25jZQogCiAjaWYg
RU5BQkxFKFZJREVPX1RSQUNLKQogCkBAIC0zNSw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQ2FjaGVkVGV4dFRyYWNrIGZpbmFsIDogcHVibGljIENhY2hlZFJlc291cmNl
IHsKIHB1YmxpYzoKLSAgICBDYWNoZWRUZXh0VHJhY2soQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYs
IFNlc3Npb25JRCk7CisgICAgQ2FjaGVkVGV4dFRyYWNrKENhY2hlZFJlc291cmNlUmVxdWVzdCYm
LCBTZXNzaW9uSUQsIGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3RyeSYpOwogCiBwcml2YXRlOgogICAg
IGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29kZWREYXRhKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQpAQCAtNTAsNSArNDksMyBAQCBwcml2YXRlOgogU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19DQUNIRURfUkVTT1VSQ0UoQ2FjaGVkVGV4dFRyYWNrLCBDYWNoZWRSZXNvdXJjZTo6VGV4dFRy
YWNrUmVzb3VyY2UpCiAKICNlbmRpZiAvLyBFTkFCTEUoVklERU9fVFJBQ0spCi0KLSNlbmRpZiAv
LyBDYWNoZWRUZXh0VHJhY2tfaApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFhTTFN0eWxlU2hlZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNiw4ICszNiw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIEVOQUJM
RShYU0xUKQogCi1DYWNoZWRYU0xTdHlsZVNoZWV0OjpDYWNoZWRYU0xTdHlsZVNoZWV0KENhY2hl
ZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNlc3Npb25JRCBzZXNzaW9uSUQpCi0gICAgOiBD
YWNoZWRSZXNvdXJjZShXVEZNb3ZlKHJlcXVlc3QpLCBYU0xTdHlsZVNoZWV0LCBzZXNzaW9uSUQp
CitDYWNoZWRYU0xTdHlsZVNoZWV0OjpDYWNoZWRYU0xTdHlsZVNoZWV0KENhY2hlZFJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QsIFNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFBhZ2VTY2hlbWVS
ZWdpc3RyeSYgc2NoZW1lUmVnaXN0cnkpCisgICAgOiBDYWNoZWRSZXNvdXJjZShXVEZNb3ZlKHJl
cXVlc3QpLCBYU0xTdHlsZVNoZWV0LCBzZXNzaW9uSUQsIHNjaGVtZVJlZ2lzdHJ5KQogICAgICwg
bV9kZWNvZGVyKFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgidGV4dC94c2wiKSkKIHsKIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxl
U2hlZXQuaAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFhTTFN0eWxlU2hlZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBj
bGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwogCiBjbGFzcyBDYWNoZWRYU0xTdHlsZVNoZWV0IGZp
bmFsIDogcHVibGljIENhY2hlZFJlc291cmNlIHsKIHB1YmxpYzoKLSAgICBDYWNoZWRYU0xTdHls
ZVNoZWV0KENhY2hlZFJlc291cmNlUmVxdWVzdCYmLCBTZXNzaW9uSUQpOworICAgIENhY2hlZFhT
TFN0eWxlU2hlZXQoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYsIFNlc3Npb25JRCwgY29uc3QgUGFn
ZVNjaGVtZVJlZ2lzdHJ5Jik7CiAgICAgdmlydHVhbCB+Q2FjaGVkWFNMU3R5bGVTaGVldCgpOwog
CiAgICAgY29uc3QgU3RyaW5nJiBzaGVldCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hlZXQ7IH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcAkocmV2aXNp
b24gMjA4Mzk4KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkZyYW1lVmlldy5o
IgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlBh
Z2VTY2hlbWVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlB1YmxpY1N1ZmZpeC5oIgogI2luY2x1ZGUg
IlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCkBAIC0yMTgs
NyArMjE5LDcgQEAgc3RhdGljIENhY2hlZEltYWdlQ2xpZW50JiBkdW1teUNhY2hlZEltYQogICAg
IHJldHVybiBjbGllbnQ7CiB9CiAKLWJvb2wgTWVtb3J5Q2FjaGU6OmFkZEltYWdlVG9DYWNoZShO
YXRpdmVJbWFnZVB0ciYmIGltYWdlLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBkb21h
aW5Gb3JDYWNoZVBhcnRpdGlvbikKK2Jvb2wgTWVtb3J5Q2FjaGU6OmFkZEltYWdlVG9DYWNoZShO
YXRpdmVJbWFnZVB0ciYmIGltYWdlLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBkb21h
aW5Gb3JDYWNoZVBhcnRpdGlvbiwgY29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5JiBzY2hlbWVSZWdp
c3RyeSkKIHsKICAgICBBU1NFUlQoaW1hZ2UpOwogICAgIFNlc3Npb25JRCBzZXNzaW9uSUQgPSBT
ZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKTsKQEAgLTIyOCw3ICsyMjksOCBAQCBib29sIE1l
bW9yeUNhY2hlOjphZGRJbWFnZVRvQ2FjaGUoTmF0aXZlCiAgICAgaWYgKCFiaXRtYXBJbWFnZSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byBjYWNoZWRJbWFnZSA9IHN0ZDo6bWFr
ZV91bmlxdWU8Q2FjaGVkSW1hZ2U+KHVybCwgYml0bWFwSW1hZ2UuZ2V0KCksIHNlc3Npb25JRCk7
CisgICAgLy8gRklYTUU6IE1ha2UgdGhlIAorICAgIGF1dG8gY2FjaGVkSW1hZ2UgPSBzdGQ6Om1h
a2VfdW5pcXVlPENhY2hlZEltYWdlPih1cmwsIGJpdG1hcEltYWdlLmdldCgpLCBzZXNzaW9uSUQs
IHNjaGVtZVJlZ2lzdHJ5KTsKIAogICAgIGNhY2hlZEltYWdlLT5hZGRDbGllbnQoZHVtbXlDYWNo
ZWRJbWFnZUNsaWVudCgpKTsKICAgICBjYWNoZWRJbWFnZS0+c2V0RGVjb2RlZFNpemUoYml0bWFw
SW1hZ2UtPmRlY29kZWRTaXplKCkpOwpAQCAtNTI1LDM0ICs1MjcsNyBAQCB2b2lkIE1lbW9yeUNh
Y2hlOjpyZXNvdXJjZUFjY2Vzc2VkKENhY2hlCiAgICAgaW5zZXJ0SW5MUlVMaXN0KHJlc291cmNl
KTsKIH0KIAotdm9pZCBNZW1vcnlDYWNoZTo6cmVtb3ZlUmVzb3VyY2VzV2l0aE9yaWdpbihTZWN1
cml0eU9yaWdpbiYgb3JpZ2luKQotewotI2lmIEVOQUJMRShDQUNIRV9QQVJUSVRJT05JTkcpCi0g
ICAgU3RyaW5nIG9yaWdpblBhcnRpdGlvbiA9IFJlc291cmNlUmVxdWVzdDo6cGFydGl0aW9uTmFt
ZShvcmlnaW4uaG9zdCgpKTsKLSNlbmRpZgotCi0gICAgVmVjdG9yPENhY2hlZFJlc291cmNlKj4g
cmVzb3VyY2VzV2l0aE9yaWdpbjsKLSAgICBmb3IgKGF1dG8mIHJlc291cmNlcyA6IG1fc2Vzc2lv
blJlc291cmNlcy52YWx1ZXMoKSkgewotICAgICAgICBmb3IgKGF1dG8mIGtleVZhbHVlIDogKnJl
c291cmNlcykgewotICAgICAgICAgICAgYXV0byYgcmVzb3VyY2UgPSAqa2V5VmFsdWUudmFsdWU7
Ci0jaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElPTklORykKLSAgICAgICAgICAgIGF1dG8mIHBhcnRp
dGlvbk5hbWUgPSBrZXlWYWx1ZS5rZXkuc2Vjb25kOwotICAgICAgICAgICAgaWYgKHBhcnRpdGlv
bk5hbWUgPT0gb3JpZ2luUGFydGl0aW9uKSB7Ci0gICAgICAgICAgICAgICAgcmVzb3VyY2VzV2l0
aE9yaWdpbi5hcHBlbmQoJnJlc291cmNlKTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgICAgIH0KLSNlbmRpZgotICAgICAgICAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBy
ZXNvdXJjZU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUocmVzb3VyY2UudXJsKCkpOwot
ICAgICAgICAgICAgaWYgKHJlc291cmNlT3JpZ2luLT5lcXVhbCgmb3JpZ2luKSkKLSAgICAgICAg
ICAgICAgICByZXNvdXJjZXNXaXRoT3JpZ2luLmFwcGVuZCgmcmVzb3VyY2UpOwotICAgICAgICB9
Ci0gICAgfQotCi0gICAgZm9yIChhdXRvKiByZXNvdXJjZSA6IHJlc291cmNlc1dpdGhPcmlnaW4p
Ci0gICAgICAgIHJlbW92ZSgqcmVzb3VyY2UpOwotfQotCi12b2lkIE1lbW9yeUNhY2hlOjpyZW1v
dmVSZXNvdXJjZXNXaXRoT3JpZ2lucyhTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBIYXNoU2V0
PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+JiBvcmlnaW5zKQordm9pZCBNZW1vcnlDYWNoZTo6cmVt
b3ZlUmVzb3VyY2VzV2l0aE9yaWdpbnMoU2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgSGFzaFNl
dDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiYgb3JpZ2lucywgY29uc3QgUGFnZVNjaGVtZVJlZ2lz
dHJ5JiBzY2hlbWVSZWdpc3RyeSkKIHsKICAgICBhdXRvKiByZXNvdXJjZU1hcCA9IHNlc3Npb25S
ZXNvdXJjZU1hcChzZXNzaW9uSUQpOwogICAgIGlmICghcmVzb3VyY2VNYXApCkBAIC01NzcsNyAr
NTUyLDcgQEAgdm9pZCBNZW1vcnlDYWNoZTo6cmVtb3ZlUmVzb3VyY2VzV2l0aE9yaQogICAgICAg
ICB9CiAjZW5kaWYKIAotICAgICAgICBpZiAob3JpZ2lucy5jb250YWlucyhTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlKHJlc291cmNlLnVybCgpKS5wdHIoKSkpCisgICAgICAgIGlmIChvcmlnaW5zLmNv
bnRhaW5zKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUocmVzb3VyY2UudXJsKCksIHNjaGVtZVJlZ2lz
dHJ5KS5wdHIoKSkpCiAgICAgICAgICAgICByZXNvdXJjZXNUb1JlbW92ZS5hcHBlbmQoJnJlc291
cmNlKTsKICAgICB9CiAKQEAgLTU4NSwyNiArNTYwLDcgQEAgdm9pZCBNZW1vcnlDYWNoZTo6cmVt
b3ZlUmVzb3VyY2VzV2l0aE9yaQogICAgICAgICByZW1vdmUoKnJlc291cmNlKTsKIH0KIAotdm9p
ZCBNZW1vcnlDYWNoZTo6Z2V0T3JpZ2luc1dpdGhDYWNoZShTZWN1cml0eU9yaWdpblNldCYgb3Jp
Z2lucykKLXsKLSNpZiBFTkFCTEUoQ0FDSEVfUEFSVElUSU9OSU5HKQotICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxTdHJpbmc+IGh0dHBTdHJpbmcoImh0dHAiKTsKLSNlbmRpZgotICAgIGZvciAo
YXV0byYgcmVzb3VyY2VzIDogbV9zZXNzaW9uUmVzb3VyY2VzLnZhbHVlcygpKSB7Ci0gICAgICAg
IGZvciAoYXV0byYga2V5VmFsdWUgOiAqcmVzb3VyY2VzKSB7Ci0gICAgICAgICAgICBhdXRvJiBy
ZXNvdXJjZSA9ICprZXlWYWx1ZS52YWx1ZTsKLSNpZiBFTkFCTEUoQ0FDSEVfUEFSVElUSU9OSU5H
KQotICAgICAgICAgICAgYXV0byYgcGFydGl0aW9uTmFtZSA9IGtleVZhbHVlLmtleS5zZWNvbmQ7
Ci0gICAgICAgICAgICBpZiAoIXBhcnRpdGlvbk5hbWUuaXNFbXB0eSgpKQotICAgICAgICAgICAg
ICAgIG9yaWdpbnMuYWRkKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoaHR0cFN0cmluZywgcGFydGl0
aW9uTmFtZSwgMCkpOwotICAgICAgICAgICAgZWxzZQotI2VuZGlmCi0gICAgICAgICAgICBvcmln
aW5zLmFkZChTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHJlc291cmNlLnVybCgpKSk7Ci0gICAgICAg
IH0KLSAgICB9Ci19Ci0KLUhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gTWVtb3J5Q2Fj
aGU6Om9yaWdpbnNXaXRoQ2FjaGUoU2Vzc2lvbklEIHNlc3Npb25JRCkgY29uc3QKK0hhc2hTZXQ8
UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gTWVtb3J5Q2FjaGU6Om9yaWdpbnNXaXRoQ2FjaGUoU2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5JiBzY2hlbWVSZWdpc3Ry
eSkgY29uc3QKIHsKICAgICBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnM7
CiAKQEAgLTYxNSwxMCArNTcxLDEwIEBAIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4g
TWVtb3J5Q2EKICNpZiBFTkFCTEUoQ0FDSEVfUEFSVElUSU9OSU5HKQogICAgICAgICAgICAgYXV0
byYgcGFydGl0aW9uTmFtZSA9IGtleVZhbHVlLmtleS5zZWNvbmQ7CiAgICAgICAgICAgICBpZiAo
IXBhcnRpdGlvbk5hbWUuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIG9yaWdpbnMuYWRkKFNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGUoImh0dHAiLCBwYXJ0aXRpb25OYW1lLCAwKSk7CisgICAgICAg
ICAgICAgICAgb3JpZ2lucy5hZGQoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSgiaHR0cCIsIHBhcnRp
dGlvbk5hbWUsIE51bGxvcHQsIHNjaGVtZVJlZ2lzdHJ5KSk7CiAgICAgICAgICAgICBlbHNlCiAj
ZW5kaWYKLSAgICAgICAgICAgIG9yaWdpbnMuYWRkKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUocmVz
b3VyY2UudXJsKCkpKTsKKyAgICAgICAgICAgIG9yaWdpbnMuYWRkKFNlY3VyaXR5T3JpZ2luOjpj
cmVhdGUocmVzb3VyY2UudXJsKCksIHNjaGVtZVJlZ2lzdHJ5KSk7CiAgICAgICAgIH0KICAgICB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCShyZXZp
c2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMTUyLDEyICsxNTIsMTAgQEAgcHVibGljOgogICAgIGJvb2wg
aW5MaXZlRGVjb2RlZFJlc291cmNlc0xpc3QoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKSBjb25z
dCB7IHJldHVybiBtX2xpdmVEZWNvZGVkUmVzb3VyY2VzLmNvbnRhaW5zKCZyZXNvdXJjZSk7IH0K
IAogICAgIHR5cGVkZWYgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBTZWN1cml0eU9y
aWdpblNldDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZVJlc291cmNlc1dpdGhPcmln
aW4oU2VjdXJpdHlPcmlnaW4mKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZVJlc291
cmNlc1dpdGhPcmlnaW5zKFNlc3Npb25JRCwgY29uc3QgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlP
cmlnaW4+PiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0T3JpZ2luc1dpdGhDYWNoZShT
ZWN1cml0eU9yaWdpblNldCYgb3JpZ2lucyk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgSGFzaFNldDxS
ZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBvcmlnaW5zV2l0aENhY2hlKFNlc3Npb25JRCkgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVSZXNvdXJjZXNXaXRoT3JpZ2lucyhTZXNz
aW9uSUQsIGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4mLCBjb25zdCBQYWdl
U2NoZW1lUmVnaXN0cnkmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBIYXNoU2V0PFJlZlB0cjxTZWN1
cml0eU9yaWdpbj4+IG9yaWdpbnNXaXRoQ2FjaGUoU2Vzc2lvbklELCBjb25zdCBQYWdlU2NoZW1l
UmVnaXN0cnkmKSBjb25zdDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgYWRkSW1hZ2VUb0Nh
Y2hlKE5hdGl2ZUltYWdlUHRyJiYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgZG9tYWluRm9y
Q2FjaGVQYXJ0aXRpb24pOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgYWRkSW1hZ2VUb0NhY2hl
KE5hdGl2ZUltYWdlUHRyJiYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgZG9tYWluRm9yQ2Fj
aGVQYXJ0aXRpb24sIGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3RyeSYpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgcmVtb3ZlSW1hZ2VGcm9tQ2FjaGUoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBk
b21haW5Gb3JDYWNoZVBhcnRpdGlvbik7CiAKICAgICAvLyBwcnVuZURlYWQqKCkgLSBGbHVzaCBk
ZWNvZGVkIGFuZCBlbmNvZGVkIGRhdGEgZnJvbSByZXNvdXJjZXMgbm90IHJlZmVyZW5jZWQgYnkg
V2ViIHBhZ2VzLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkocmV2aXNpb24gMjA4
Mzk4KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03OSw2ICs3OSw3IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VDb25z
b2xlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUGFnZUdyb3VwLmgiCisjaW5jbHVkZSAiUGFnZVNjaGVt
ZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiUGFnZVRyYW5zaXRpb25FdmVudC5oIgogI2luY2x1ZGUg
IlBlcmZvcm1hbmNlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkSW5mby5oIgpAQCAtODg5LDcg
Kzg5MCw3IEBAIEV4Y2VwdGlvbk9yPFN0b3JhZ2UqPiBET01XaW5kb3c6OmxvY2FsU3QKICAgICBy
ZXR1cm4gbV9sb2NhbFN0b3JhZ2UuZ2V0KCk7CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IERPTVdp
bmRvdzo6cG9zdE1lc3NhZ2UoUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBtZXNzYWdlLCBW
ZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mJiBwb3J0cywgY29uc3QgU3RyaW5nJiB0YXJnZXRP
cmlnaW4sIERPTVdpbmRvdyYgc291cmNlKQorRXhjZXB0aW9uT3I8dm9pZD4gRE9NV2luZG93Ojpw
b3N0TWVzc2FnZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
LCBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIG1lc3NhZ2UsIFZlY3RvcjxSZWZQdHI8TWVz
c2FnZVBvcnQ+PiYmIHBvcnRzLCBjb25zdCBTdHJpbmcmIHRhcmdldE9yaWdpbiwgRE9NV2luZG93
JiBzb3VyY2UpCiB7CiAgICAgaWYgKCFpc0N1cnJlbnRseURpc3BsYXllZEluRnJhbWUoKSkKICAg
ICAgICAgcmV0dXJuIHsgfTsKQEAgLTkwNCw3ICs5MDUsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBE
T01XaW5kb3c6OnBvc3RNZXNzYWdlCiAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICB0
YXJnZXQgPSBzb3VyY2VEb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKTsKICAgICB9IGVsc2UgaWYg
KHRhcmdldE9yaWdpbiAhPSAiKiIpIHsKLSAgICAgICAgdGFyZ2V0ID0gU2VjdXJpdHlPcmlnaW46
OmNyZWF0ZUZyb21TdHJpbmcodGFyZ2V0T3JpZ2luKTsKKyAgICAgICAgdGFyZ2V0ID0gU2VjdXJp
dHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcodGFyZ2V0T3JpZ2luLCBzY3JpcHRFeGVjdXRpb25D
b250ZXh0LnNjaGVtZVJlZ2lzdHJ5KCkpOwogICAgICAgICAvLyBJdCBkb2Vzbid0IG1ha2Ugc2Vu
c2UgdGFyZ2V0IGEgcG9zdE1lc3NhZ2UgYXQgYSB1bmlxdWUgb3JpZ2luCiAgICAgICAgIC8vIGJl
Y2F1c2UgdGhlcmUncyBubyB3YXkgdG8gcmVwcmVzZW50IGEgdW5pcXVlIG9yaWdpbiBpbiBhIHN0
cmluZy4KICAgICAgICAgaWYgKHRhcmdldC0+aXNVbmlxdWUoKSkKQEAgLTIwNjMsNyArMjA2NCw3
IEBAIFN0cmluZyBET01XaW5kb3c6OmNyb3NzRG9tYWluQWNjZXNzRXJyb3IKICAgICBVUkwgYWN0
aXZlVVJMID0gYWN0aXZlV2luZG93LmRvY3VtZW50KCktPnVybCgpOwogICAgIFVSTCB0YXJnZXRV
UkwgPSBkb2N1bWVudCgpLT51cmwoKTsKICAgICBpZiAoZG9jdW1lbnQoKS0+aXNTYW5kYm94ZWQo
U2FuZGJveE9yaWdpbikgfHwgYWN0aXZlV2luZG93LmRvY3VtZW50KCktPmlzU2FuZGJveGVkKFNh
bmRib3hPcmlnaW4pKSB7Ci0gICAgICAgIG1lc3NhZ2UgPSAiQmxvY2tlZCBhIGZyYW1lIGF0IFwi
IiArIFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoYWN0aXZlVVJMKS5nZXQoKS50b1N0cmluZygpICsg
IlwiIGZyb20gYWNjZXNzaW5nIGEgZnJhbWUgYXQgXCIiICsgU2VjdXJpdHlPcmlnaW46OmNyZWF0
ZSh0YXJnZXRVUkwpLmdldCgpLnRvU3RyaW5nKCkgKyAiXCIuICI7CisgICAgICAgIG1lc3NhZ2Ug
PSAiQmxvY2tlZCBhIGZyYW1lIGF0IFwiIiArIFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoYWN0aXZl
VVJMLCBQYWdlU2NoZW1lUmVnaXN0cnk6OmNyZWF0ZSgpKS5nZXQoKS50b1N0cmluZygpICsgIlwi
IGZyb20gYWNjZXNzaW5nIGEgZnJhbWUgYXQgXCIiICsgU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh0
YXJnZXRVUkwsIFBhZ2VTY2hlbWVSZWdpc3RyeTo6Y3JlYXRlKCkpLmdldCgpLnRvU3RyaW5nKCkg
KyAiXCIuICI7CiAgICAgICAgIGlmIChkb2N1bWVudCgpLT5pc1NhbmRib3hlZChTYW5kYm94T3Jp
Z2luKSAmJiBhY3RpdmVXaW5kb3cuZG9jdW1lbnQoKS0+aXNTYW5kYm94ZWQoU2FuZGJveE9yaWdp
bikpCiAgICAgICAgICAgICByZXR1cm4gIlNhbmRib3ggYWNjZXNzIHZpb2xhdGlvbjogIiArIG1l
c3NhZ2UgKyAiIEJvdGggZnJhbWVzIGFyZSBzYW5kYm94ZWQgYW5kIGxhY2sgdGhlIFwiYWxsb3ct
c2FtZS1vcmlnaW5cIiBmbGFnLiI7CiAgICAgICAgIGlmIChkb2N1bWVudCgpLT5pc1NhbmRib3hl
ZChTYW5kYm94T3JpZ2luKSkKQEAgLTIxMjksNyArMjEzMCw3IEBAIFJlZlB0cjxGcmFtZT4gRE9N
V2luZG93OjpjcmVhdGVXaW5kb3coY28KICAgICB9CiAKICAgICAvLyBGb3Igd2hhdGV2ZXIgcmVh
c29uLCBGaXJlZm94IHVzZXMgdGhlIGZpcnN0IGZyYW1lIHRvIGRldGVybWluZSB0aGUgb3V0Z29p
bmdSZWZlcnJlci4gV2UgcmVwbGljYXRlIHRoYXQgYmVoYXZpb3IgaGVyZS4KLSAgICBTdHJpbmcg
cmVmZXJyZXIgPSBTZWN1cml0eVBvbGljeTo6Z2VuZXJhdGVSZWZlcnJlckhlYWRlcihmaXJzdEZy
YW1lLmRvY3VtZW50KCktPnJlZmVycmVyUG9saWN5KCksIGNvbXBsZXRlZFVSTCwgZmlyc3RGcmFt
ZS5sb2FkZXIoKS5vdXRnb2luZ1JlZmVycmVyKCkpOworICAgIFN0cmluZyByZWZlcnJlciA9IFNl
Y3VyaXR5UG9saWN5OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVyKGZpcnN0RnJhbWUuZG9jdW1lbnQo
KS0+cmVmZXJyZXJQb2xpY3koKSwgY29tcGxldGVkVVJMLCBmaXJzdEZyYW1lLmxvYWRlcigpLm91
dGdvaW5nUmVmZXJyZXIoKSwgZmlyc3RGcmFtZS5zY2hlbWVSZWdpc3RyeSgpKTsKIAogICAgIFJl
c291cmNlUmVxdWVzdCByZXF1ZXN0KGNvbXBsZXRlZFVSTCwgcmVmZXJyZXIpOwogICAgIEZyYW1l
TG9hZGVyOjphZGRIVFRQT3JpZ2luSWZOZWVkZWQocmVxdWVzdCwgZmlyc3RGcmFtZS5sb2FkZXIo
KS5vdXRnb2luZ09yaWdpbigpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAkocmV2aXNp
b24gMjA4Mzk4KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAkod29ya2luZyBj
b3B5KQpAQCAtMjMzLDcgKzIzMyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHByaW50RXJyb3JNZXNz
YWdlKGNvbnN0IFN0cmluZyYpOwogICAgIFN0cmluZyBjcm9zc0RvbWFpbkFjY2Vzc0Vycm9yTWVz
c2FnZShjb25zdCBET01XaW5kb3cmIGFjdGl2ZVdpbmRvdyk7CiAKLSAgICBFeGNlcHRpb25Pcjx2
b2lkPiBwb3N0TWVzc2FnZShSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIG1lc3NhZ2UsIFZl
Y3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYmLCBjb25zdCBTdHJpbmcmIHRhcmdldE9yaWdpbiwg
RE9NV2luZG93JiBzb3VyY2UpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHBvc3RNZXNzYWdlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIG1lc3Nh
Z2UsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYmLCBjb25zdCBTdHJpbmcmIHRhcmdldE9y
aWdpbiwgRE9NV2luZG93JiBzb3VyY2UpOwogICAgIHZvaWQgcG9zdE1lc3NhZ2VUaW1lckZpcmVk
KFBvc3RNZXNzYWdlVGltZXImKTsKICAgICB2b2lkIGRpc3BhdGNoTWVzc2FnZUV2ZW50V2l0aE9y
aWdpbkNoZWNrKFNlY3VyaXR5T3JpZ2luKiBpbnRlbmRlZFRhcmdldE9yaWdpbiwgRXZlbnQmLCBQ
YXNzUmVmUHRyPEluc3BlY3Rvcjo6U2NyaXB0Q2FsbFN0YWNrPik7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODQ2LDcg
Kzg0Niw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSYgc3IKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBkb1N5c3RlbURyYWcoZHJhZ0ltYWdlLCBk
cmFnTG9jLCBkcmFnT3JpZ2luLCBkYXRhVHJhbnNmZXIsIHNyYywgZmFsc2UpOwotICAgIH0gZWxz
ZSBpZiAoIXNyYy5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5EaXNwbGF5KGxpbmtV
UkwpKSB7CisgICAgfSBlbHNlIGlmICghc3JjLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkt
PmNhbkRpc3BsYXkobGlua1VSTCwgc3JjLnNjaGVtZVJlZ2lzdHJ5KCkpKSB7CiAgICAgICAgIHNy
Yy5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwg
TWVzc2FnZUxldmVsOjpFcnJvciwgIk5vdCBhbGxvd2VkIHRvIGRyYWcgbG9jYWwgcmVzb3VyY2U6
ICIgKyBsaW5rVVJMLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpKTsKICAgICAgICAg
c3RhcnRlZERyYWcgPSBmYWxzZTsKICAgICB9IGVsc2UgaWYgKCFpbWFnZVVSTC5pc0VtcHR5KCkg
JiYgaW1hZ2UgJiYgIWltYWdlLT5pc051bGwoKSAmJiAobV9kcmFnU291cmNlQWN0aW9uICYgRHJh
Z1NvdXJjZUFjdGlvbkltYWdlKSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNv
dXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5j
cHAJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiRXZlbnROYW1l
cy5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJNZXNzYWdlRXZlbnQu
aCIKKyNpbmNsdWRlICJQYWdlU2NoZW1lUmVnaXN0cnkuaCIKICNpbmNsdWRlICJSZXNvdXJjZUVy
cm9yLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VS
ZXNwb25zZS5oIgpAQCAtMTk5LDcgKzIwMCw4IEBAIHZvaWQgRXZlbnRTb3VyY2U6OmRpZFJlY2Vp
dmVSZXNwb25zZSh1bnMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fZXZlbnRTdHJl
YW1PcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHJlc3BvbnNlLnVybCgpKS0+dG9TdHJp
bmcoKTsKKyAgICAvLyBGSVhNRTogR2V0IHRoZSBQYWdlU2NoZW1lUmVnaXN0cnkgZnJvbSB0aGUg
cGFnZS4KKyAgICBtX2V2ZW50U3RyZWFtT3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShy
ZXNwb25zZS51cmwoKSwgUGFnZVNjaGVtZVJlZ2lzdHJ5OjpjcmVhdGUoKSktPnRvU3RyaW5nKCk7
CiAgICAgbV9zdGF0ZSA9IE9QRU47CiAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2
ZW50TmFtZXMoKS5vcGVuRXZlbnQsIGZhbHNlLCBmYWxzZSkpOwogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudFNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRTb3VyY2UuaAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudFNvdXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lc3NhZ2VFdmVudDsKK2NsYXNzIFBhZ2VTY2hlbWVSZWdp
c3RyeTsKIGNsYXNzIFRleHRSZXNvdXJjZURlY29kZXI7CiBjbGFzcyBUaHJlYWRhYmxlTG9hZGVy
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2LDYgKzc2LDcgQEAK
ICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZUNhY2hlLmgiCiAjaW5jbHVkZSAiUGFn
ZUdyb3VwLmgiCisjaW5jbHVkZSAiUGFnZVNjaGVtZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGFibGVDZWxsLmgiCiAjaW5j
bHVkZSAiUmVuZGVyVGV4dC5oIgpAQCAtMTUzLDYgKzE1NCw3IEBAIHN0YXRpYyBpbmxpbmUgZmxv
YXQgcGFyZW50VGV4dFpvb21GYWN0b3IKIEZyYW1lOjpGcmFtZShQYWdlJiBwYWdlLCBIVE1MRnJh
bWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwgRnJhbWVMb2FkZXJDbGllbnQmIGZyYW1lTG9h
ZGVyQ2xpZW50KQogICAgIDogbV9tYWluRnJhbWUob3duZXJFbGVtZW50ID8gcGFnZS5tYWluRnJh
bWUoKSA6IHN0YXRpY19jYXN0PE1haW5GcmFtZSY+KCp0aGlzKSkKICAgICAsIG1fcGFnZSgmcGFn
ZSkKKyAgICAsIG1fc2NoZW1lUmVnaXN0cnkocGFnZS5zY2hlbWVSZWdpc3RyeSgpKQogICAgICwg
bV9zZXR0aW5ncygmcGFnZS5zZXR0aW5ncygpKQogICAgICwgbV90cmVlTm9kZSgqdGhpcywgcGFy
ZW50RnJvbU93bmVyRWxlbWVudChvd25lckVsZW1lbnQpKQogICAgICwgbV9sb2FkZXIoKnRoaXMs
IGZyYW1lTG9hZGVyQ2xpZW50KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAkocmV2aXNpb24gMjA4Mzk4
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw2
ICs3Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBJbnRSZWN0OwogICAgIGNs
YXNzIE1haW5GcmFtZTsKICAgICBjbGFzcyBOb2RlOworICAgIGNsYXNzIFBhZ2VTY2hlbWVSZWdp
c3RyeTsKICAgICBjbGFzcyBSYW5nZTsKICAgICBjbGFzcyBSZW5kZXJMYXllcjsKICAgICBjbGFz
cyBSZW5kZXJWaWV3OwpAQCAtMTUxLDYgKzE1Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgRnJhbWVUcmVlJiB0cmVlKCkgY29uc3Q7CiAgICAgICAgIEFuaW1hdGlvbkNvbnRyb2xs
ZXImIGFuaW1hdGlvbigpIGNvbnN0OwogICAgICAgICBTY3JpcHRDb250cm9sbGVyJiBzY3JpcHQo
KTsKKyAgICAgICAgY29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5JiBzY2hlbWVSZWdpc3RyeSgpIGNv
bnN0IHsgcmV0dXJuIG1fc2NoZW1lUmVnaXN0cnkuZ2V0KCk7IH0KICAgICAgICAgCiAgICAgICAg
IFdFQkNPUkVfRVhQT1JUIFJlbmRlclZpZXcqIGNvbnRlbnRSZW5kZXJlcigpIGNvbnN0OyAvLyBS
b290IG9mIHRoZSByZW5kZXIgdHJlZSBmb3IgdGhlIGRvY3VtZW50IGNvbnRhaW5lZCBpbiB0aGlz
IGZyYW1lLgogICAgICAgICBXRUJDT1JFX0VYUE9SVCBSZW5kZXJXaWRnZXQqIG93bmVyUmVuZGVy
ZXIoKSBjb25zdDsgLy8gUmVuZGVyZXIgZm9yIHRoZSBlbGVtZW50IHRoYXQgY29udGFpbnMgdGhp
cyBmcmFtZS4KQEAgLTI3Niw2ICsyNzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAg
ICAgTWFpbkZyYW1lJiBtX21haW5GcmFtZTsKICAgICAgICAgUGFnZSogbV9wYWdlOworICAgICAg
ICBSZWY8Y29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5PiBtX3NjaGVtZVJlZ2lzdHJ5OwogICAgICAg
ICBjb25zdCBSZWZQdHI8U2V0dGluZ3M+IG1fc2V0dGluZ3M7CiAgICAgICAgIG11dGFibGUgRnJh
bWVUcmVlIG1fdHJlZU5vZGU7CiAgICAgICAgIG11dGFibGUgRnJhbWVMb2FkZXIgbV9sb2FkZXI7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5jcHAJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NSw3ICsxNDUs
NyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBIaXN0b3J5OjpzdGF0ZU9iamVjdEFkCiAgICAgICAgIHJl
dHVybiB7IH07CiAKICAgICBVUkwgZnVsbFVSTCA9IHVybEZvclN0YXRlKHVybFN0cmluZyk7Ci0g
ICAgaWYgKCFmdWxsVVJMLmlzVmFsaWQoKSB8fCAhbV9mcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJp
dHlPcmlnaW4oKS0+Y2FuUmVxdWVzdChmdWxsVVJMKSkKKyAgICBpZiAoIWZ1bGxVUkwuaXNWYWxp
ZCgpIHx8ICFtX2ZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5SZXF1ZXN0
KGZ1bGxVUkwsIG1fZnJhbWUtPnNjaGVtZVJlZ2lzdHJ5KCkpKQogICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgU0VDVVJJVFlfRVJSIH07CiAKICAgICBpZiAoZnVsbFVSTC5oYXNVc2VybmFtZSgp
IHx8IGZ1bGxVUkwuaGFzUGFzc3dvcmQoKSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9M
b2NhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5j
cHAJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjksNyArMTI5LDcgQEAgU3RyaW5nIExvY2F0aW9uOjpvcmln
aW4oKSBjb25zdAogewogICAgIGlmICghbV9mcmFtZSkKICAgICAgICAgcmV0dXJuIFN0cmluZygp
OwotICAgIHJldHVybiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHVybCgpKS0+dG9TdHJpbmcoKTsK
KyAgICByZXR1cm4gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh1cmwoKSwgbV9mcmFtZS0+c2NoZW1l
UmVnaXN0cnkoKSktPnRvU3RyaW5nKCk7CiB9CiAKIFZlY3RvcjxTdHJpbmc+IExvY2F0aW9uOjph
bmNlc3Rvck9yaWdpbnMoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShyZXZpc2lvbiAy
MDgzOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02Nyw2ICs2Nyw3IEBACiAjaW5jbHVkZSAiUGFnZURlYnVnZ2FibGUuaCIKICNpbmNsdWRlICJQ
YWdlR3JvdXAuaCIKICNpbmNsdWRlICJQYWdlT3ZlcmxheUNvbnRyb2xsZXIuaCIKKyNpbmNsdWRl
ICJQYWdlU2NoZW1lUmVnaXN0cnkuaCIKICNpbmNsdWRlICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1h
bmFnZXIuaCIKICNpbmNsdWRlICJQbHVnSW5DbGllbnQuaCIKICNpbmNsdWRlICJQbHVnaW5EYXRh
LmgiCkBAIC0yMzAsNiArMjMxLDcgQEAgUGFnZTo6UGFnZShQYWdlQ29uZmlndXJhdGlvbiYmIHBh
Z2VDb25maQogI2VuZGlmCiAgICAgLCBtX2xhc3RTcGF0aWFsTmF2aWdhdGlvbkNhbmRpZGF0ZXND
b3VudCgwKSAvLyBOT1RFOiBPbmx5IGNhbGxlZCBmcm9tIEludGVybmFscyBmb3IgU3BhdGlhbCBO
YXZpZ2F0aW9uIHRlc3RpbmcuCiAgICAgLCBtX2ZvcmJpZFByb21wdHNEZXB0aCgwKQorICAgICwg
bV9zY2hlbWVSZWdpc3RyeShQYWdlU2NoZW1lUmVnaXN0cnk6OmNyZWF0ZSgpKQogICAgICwgbV9z
b2NrZXRQcm92aWRlcihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLnNvY2tldFByb3ZpZGVyKSkK
ICAgICAsIG1fYXBwbGljYXRpb25DYWNoZVN0b3JhZ2UoKldURk1vdmUocGFnZUNvbmZpZ3VyYXRp
b24uYXBwbGljYXRpb25DYWNoZVN0b3JhZ2UpKQogICAgICwgbV9kYXRhYmFzZVByb3ZpZGVyKCpX
VEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLmRhdGFiYXNlUHJvdmlkZXIpKQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmgJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDQsNiArMTA0LDcgQEAgY2xhc3MgUGFnZUNvbmZpZ3VyYXRpb247
CiBjbGFzcyBQYWdlQ29uc29sZUNsaWVudDsKIGNsYXNzIFBhZ2VEZWJ1Z2dhYmxlOwogY2xhc3Mg
UGFnZUdyb3VwOworY2xhc3MgUGFnZVNjaGVtZVJlZ2lzdHJ5OwogY2xhc3MgUGx1Z0luQ2xpZW50
OwogY2xhc3MgUGx1Z2luRGF0YTsKIGNsYXNzIFBsdWdpbkluZm9Qcm92aWRlcjsKQEAgLTQ1Niw2
ICs0NTcsNyBAQCBwdWJsaWM6CiAgICAgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UmIGFwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlKCkgeyByZXR1cm4gbV9hcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTsgfQog
ICAgIERhdGFiYXNlUHJvdmlkZXImIGRhdGFiYXNlUHJvdmlkZXIoKSB7IHJldHVybiBtX2RhdGFi
YXNlUHJvdmlkZXI7IH0KICAgICBTb2NrZXRQcm92aWRlciYgc29ja2V0UHJvdmlkZXIoKSB7IHJl
dHVybiBtX3NvY2tldFByb3ZpZGVyOyB9CisgICAgY29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5JiBz
Y2hlbWVSZWdpc3RyeSgpIGNvbnN0IHsgcmV0dXJuIG1fc2NoZW1lUmVnaXN0cnkuZ2V0KCk7IH0K
IAogICAgIFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciYgc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVy
KCkgeyByZXR1cm4gbV9zdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuZ2V0KCk7IH0KICAgICB2b2lk
IHNldFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcihSZWY8U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVy
PiYmKTsKQEAgLTY5NSw2ICs2OTcsNyBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fbGFzdFNw
YXRpYWxOYXZpZ2F0aW9uQ2FuZGlkYXRlc0NvdW50OwogICAgIHVuc2lnbmVkIG1fZm9yYmlkUHJv
bXB0c0RlcHRoOwogCisgICAgUmVmPFBhZ2VTY2hlbWVSZWdpc3RyeT4gbV9zY2hlbWVSZWdpc3Ry
eTsKICAgICBSZWY8U29ja2V0UHJvdmlkZXI+IG1fc29ja2V0UHJvdmlkZXI7CiAgICAgUmVmPEFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlPiBtX2FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOwogICAgIFJl
ZjxEYXRhYmFzZVByb3ZpZGVyPiBtX2RhdGFiYXNlUHJvdmlkZXI7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmNwcAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJEYXRhYmFzZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSAi
RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaCIKICNpbmNsdWRlICJFZGl0b3JDbGllbnQuaCIKKyNp
bmNsdWRlICJQYWdlU2NoZW1lUmVnaXN0cnkuaCIKICNpbmNsdWRlICJQbHVnaW5JbmZvUHJvdmlk
ZXIuaCIKICNpbmNsdWRlICJTb2NrZXRQcm92aWRlci5oIgogI2luY2x1ZGUgIlN0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlci5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2NoZW1lUmVn
aXN0cnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNjaGVtZVJl
Z2lzdHJ5LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTY2hl
bWVSZWdpc3RyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSwgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlBhZ2VTY2hlbWVSZWdpc3RyeS5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK1BhZ2VTY2hlbWVSZWdpc3RyeTo6UGFnZVNjaGVtZVJlZ2lzdHJ5KCkKK3sKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2No
ZW1lUmVnaXN0cnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTY2hl
bWVSZWdpc3RyeS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNj
aGVtZVJlZ2lzdHJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSwgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlIDx3dGYvUmVmLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBQYWdlU2NoZW1lUmVnaXN0cnkgOiBwdWJsaWMgUmVm
Q291bnRlZDxQYWdlU2NoZW1lUmVnaXN0cnk+IHsKK3B1YmxpYzoKKyAgICAvLyBGSVhNRTogTWFr
ZSB0aGlzIHByaXZhdGUgYW5kIGJlZnJpZW5kIHRoZSBmZXcgY2xhc3NlcyBhbGxvd2VkIHRvIG1h
a2UgYSBQYWdlU2NoZW1lUmVnaXN0cnksCisgICAgLy8gaWRlYWxseSBqdXN0IGEgUGFnZS4gVGhp
cyBjbGFzcyBzaG91bGQgbm90IGJlIHVzZWQgZm9yIGFueXRoaW5nIHVudGlsIHdlIG9ubHkgY3Jl
YXRlIG9uZQorICAgIC8vIGluIHRoZSBQYWdlIGFuZCBpbiBhIGZldyBvbGQgU1BJIGxvY2F0aW9u
cyB3aGVyZSB3ZSBoYXZlIG5vIFBhZ2UuCisgICAgc3RhdGljIFJlZjxQYWdlU2NoZW1lUmVnaXN0
cnk+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGFnZVNjaGVtZVJlZ2lzdHJ5KTsg
fQorcHJpdmF0ZToKKyAgICBXRUJDT1JFX0VYUE9SVCBQYWdlU2NoZW1lUmVnaXN0cnkoKTsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGVy
Zm9ybWFuY2VSZXNvdXJjZVRpbWluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9QZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmNwcAkocmV2aXNpb24gMjA4Mzk4KQorKysg
U291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTQsNyArNTQsMTAgQEAgc3RhdGljIGRvdWJsZSBtb25vdG9uaWNUaW1lVG9E
b2N1bWVudE1pbAogCiBzdGF0aWMgYm9vbCBwYXNzZXNUaW1pbmdBbGxvd0NoZWNrKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBEb2N1bWVudCogcmVxdWVzdGluZ0RvY3VtZW50KQog
ewotICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gcmVzb3VyY2VPcmlnaW4gPSBTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlKHJlc3BvbnNlLnVybCgpKTsKKyAgICBpZiAoIXJlcXVlc3RpbmdEb2N1bWVu
dCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgUmVmPFNlY3VyaXR5T3JpZ2luPiByZXNv
dXJjZU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUocmVzcG9uc2UudXJsKCksIHJlcXVl
c3RpbmdEb2N1bWVudC0+c2NoZW1lUmVnaXN0cnkoKSk7CiAgICAgaWYgKHJlc291cmNlT3JpZ2lu
LT5pc1NhbWVTY2hlbWVIb3N0UG9ydChyZXF1ZXN0aW5nRG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2lu
KCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9T
ZWN1cml0eU9yaWdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1
cml0eU9yaWdpbi5jcHAJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2VjdXJpdHlPcmlnaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OCw3ICs3OCw3IEBAIHN0YXRp
YyBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IGdldENhY2hlZE8KICAgICByZXR1cm4gbnVsbHB0cjsK
IH0KIAotc3RhdGljIGJvb2wgc2hvdWxkVHJlYXRBc1VuaXF1ZU9yaWdpbihjb25zdCBVUkwmIHVy
bCkKK3N0YXRpYyBib29sIHNob3VsZFRyZWF0QXNVbmlxdWVPcmlnaW4oY29uc3QgVVJMJiB1cmws
IGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3RyeSYpCiB7CiAgICAgaWYgKCF1cmwuaXNWYWxpZCgpKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTk0LDYgKzk0LDcgQEAgc3RhdGljIGJvb2wgc2hvdWxk
VHJlYXRBc1VuaXF1ZU9yaWdpbihjbwogICAgIGlmIChzY2hlbWVSZXF1aXJlc0hvc3QoaW5uZXJV
UkwpICYmIGlubmVyVVJMLmhvc3QoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwog
CisgICAgLy8gRklYTUU6IFVzZSB0aGUgUGFnZVNjaGVtZVJlZ2lzdHJ5IGluc3RlYWQgb2YgdGhl
IGdsb2JhbCBTY2hlbWVSZWdpc3RyeS4KICAgICBpZiAoU2NoZW1lUmVnaXN0cnk6OnNob3VsZFRy
ZWF0VVJMU2NoZW1lQXNOb0FjY2Vzcyhpbm5lclVSTC5wcm90b2NvbCgpLnRvU3RyaW5nV2l0aG91
dENvcHlpbmcoKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCkBAIC0xNTUsMTIgKzE1NiwxMiBA
QCBTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4oY29uc3QgU2VjCiB7CiB9CiAKLVJlZjxT
ZWN1cml0eU9yaWdpbj4gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShjb25zdCBVUkwmIHVybCkKK1Jl
ZjxTZWN1cml0eU9yaWdpbj4gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShjb25zdCBVUkwmIHVybCwg
Y29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5JiByZWdpc3RyeSkKIHsKICAgICBpZiAoUmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPiBjYWNoZWRPcmlnaW4gPSBnZXRDYWNoZWRPcmlnaW4odXJsKSkKICAgICAg
ICAgcmV0dXJuIGNhY2hlZE9yaWdpbi5yZWxlYXNlTm9uTnVsbCgpOwogCi0gICAgaWYgKHNob3Vs
ZFRyZWF0QXNVbmlxdWVPcmlnaW4odXJsKSkgeworICAgIGlmIChzaG91bGRUcmVhdEFzVW5pcXVl
T3JpZ2luKHVybCwgcmVnaXN0cnkpKSB7CiAgICAgICAgIFJlZjxTZWN1cml0eU9yaWdpbj4gb3Jp
Z2luKGFkb3B0UmVmKCpuZXcgU2VjdXJpdHlPcmlnaW4pKTsKIAogICAgICAgICBpZiAodXJsLnBy
b3RvY29sSXMoImZpbGUiKSkgewpAQCAtMjY5LDcgKzI3MCw3IEBAIGJvb2wgU2VjdXJpdHlPcmln
aW46OnBhc3Nlc0ZpbGVDaGVjayhjb24KICAgICByZXR1cm4gKG1fZmlsZVBhdGggPT0gb3RoZXIt
Pm1fZmlsZVBhdGgpOwogfQogCi1ib29sIFNlY3VyaXR5T3JpZ2luOjpjYW5SZXF1ZXN0KGNvbnN0
IFVSTCYgdXJsKSBjb25zdAorYm9vbCBTZWN1cml0eU9yaWdpbjo6Y2FuUmVxdWVzdChjb25zdCBV
UkwmIHVybCwgY29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5JiBzY2hlbWVSZWdpc3RyeSkgY29uc3QK
IHsKICAgICBpZiAobV91bml2ZXJzYWxBY2Nlc3MpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAt
MjgwLDcgKzI4MSw3IEBAIGJvb2wgU2VjdXJpdHlPcmlnaW46OmNhblJlcXVlc3QoY29uc3QgVVIK
ICAgICBpZiAoaXNVbmlxdWUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgUmVmPFNl
Y3VyaXR5T3JpZ2luPiB0YXJnZXRPcmlnaW4oU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh1cmwpKTsK
KyAgICBSZWY8U2VjdXJpdHlPcmlnaW4+IHRhcmdldE9yaWdpbihTZWN1cml0eU9yaWdpbjo6Y3Jl
YXRlKHVybCwgc2NoZW1lUmVnaXN0cnkpKTsKIAogICAgIGlmICh0YXJnZXRPcmlnaW4tPmlzVW5p
cXVlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI5MCw3ICsyOTEsNyBAQCBib29sIFNl
Y3VyaXR5T3JpZ2luOjpjYW5SZXF1ZXN0KGNvbnN0IFVSCiAgICAgaWYgKGlzU2FtZVNjaGVtZUhv
c3RQb3J0KCZ0YXJnZXRPcmlnaW4uZ2V0KCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAg
IGlmIChTZWN1cml0eVBvbGljeTo6aXNBY2Nlc3NXaGl0ZUxpc3RlZCh0aGlzLCAmdGFyZ2V0T3Jp
Z2luLmdldCgpKSkKKyAgICBpZiAoU2VjdXJpdHlQb2xpY3k6OmlzQWNjZXNzV2hpdGVMaXN0ZWQo
KnRoaXMsICZ0YXJnZXRPcmlnaW4uZ2V0KCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAg
IHJldHVybiBmYWxzZTsKQEAgLTMyNCw3ICszMjUsNyBAQCBzdGF0aWMgYm9vbCBpc0ZlZWRXaXRo
TmVzdGVkUHJvdG9jb2xJbkhUCiAgICAgICAgIHx8IHVybFN0cmluZy5zdGFydHNXaXRoKCJmZWVk
c2VhcmNoOmh0dHA6IiwgZmFsc2UpIHx8IHVybFN0cmluZy5zdGFydHNXaXRoKCJmZWVkc2VhcmNo
Omh0dHBzOiIsIGZhbHNlKTsKIH0KIAotYm9vbCBTZWN1cml0eU9yaWdpbjo6Y2FuRGlzcGxheShj
b25zdCBVUkwmIHVybCkgY29uc3QKK2Jvb2wgU2VjdXJpdHlPcmlnaW46OmNhbkRpc3BsYXkoY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3RyeSYgc2NoZW1lUmVnaXN0cnkpIGNv
bnN0CiB7CiAgICAgaWYgKG1fdW5pdmVyc2FsQWNjZXNzKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
QEAgLTMzNSwxMyArMzM2LDEzIEBAIGJvb2wgU2VjdXJpdHlPcmlnaW46OmNhbkRpc3BsYXkoY29u
c3QgVVIKICAgICBTdHJpbmcgcHJvdG9jb2wgPSB1cmwucHJvdG9jb2woKS50b1N0cmluZygpOwog
CiAgICAgaWYgKFNjaGVtZVJlZ2lzdHJ5OjpjYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdChwcm90
b2NvbCkpCi0gICAgICAgIHJldHVybiBjYW5SZXF1ZXN0KHVybCk7CisgICAgICAgIHJldHVybiBj
YW5SZXF1ZXN0KHVybCwgc2NoZW1lUmVnaXN0cnkpOwogCiAgICAgaWYgKFNjaGVtZVJlZ2lzdHJ5
OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzRGlzcGxheUlzb2xhdGVkKHByb3RvY29sKSkKLSAgICAg
ICAgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobV9wcm90b2NvbCwgcHJvdG9jb2wpIHx8
IFNlY3VyaXR5UG9saWN5Ojppc0FjY2Vzc1RvVVJMV2hpdGVMaXN0ZWQodGhpcywgdXJsKTsKKyAg
ICAgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobV9wcm90b2NvbCwgcHJvdG9jb2wp
IHx8IFNlY3VyaXR5UG9saWN5Ojppc0FjY2Vzc1RvVVJMV2hpdGVMaXN0ZWQoKnRoaXMsIHVybCwg
c2NoZW1lUmVnaXN0cnkpOwogCiAgICAgaWYgKFNlY3VyaXR5UG9saWN5OjpyZXN0cmljdEFjY2Vz
c1RvTG9jYWwoKSAmJiBTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0xvY2Fs
KHByb3RvY29sKSkKLSAgICAgICAgcmV0dXJuIGNhbkxvYWRMb2NhbFJlc291cmNlcygpIHx8IFNl
Y3VyaXR5UG9saWN5Ojppc0FjY2Vzc1RvVVJMV2hpdGVMaXN0ZWQodGhpcywgdXJsKTsKKyAgICAg
ICAgcmV0dXJuIGNhbkxvYWRMb2NhbFJlc291cmNlcygpIHx8IFNlY3VyaXR5UG9saWN5Ojppc0Fj
Y2Vzc1RvVVJMV2hpdGVMaXN0ZWQoKnRoaXMsIHVybCwgc2NoZW1lUmVnaXN0cnkpOwogCiAgICAg
cmV0dXJuIHRydWU7CiB9CkBAIC00OTgsMTQgKzQ5OSwxNCBAQCBib29sIG9yaWdpbnNNYXRjaChj
b25zdCBTZWN1cml0eU9yaWdpbiogCiAgICAgcmV0dXJuIG9yaWdpbnNNYXRjaCgqb3JpZ2luMSwg
Km9yaWdpbjIpOwogfQogCi1SZWY8U2VjdXJpdHlPcmlnaW4+IFNlY3VyaXR5T3JpZ2luOjpjcmVh
dGVGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nKQorUmVmPFNlY3VyaXR5T3Jp
Z2luPiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIG9yaWdp
blN0cmluZywgY29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5JiBzY2hlbWVSZWdpc3RyeSkKIHsKLSAg
ICByZXR1cm4gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShVUkwoVVJMKCksIG9yaWdpblN0cmluZykp
OworICAgIHJldHVybiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFVSTChVUkwoKSwgb3JpZ2luU3Ry
aW5nKSwgc2NoZW1lUmVnaXN0cnkpOwogfQogCiBzdGF0aWMgY29uc3QgY2hhciBzZXBhcmF0b3JD
aGFyYWN0ZXIgPSAnXyc7CiAKLVJlZlB0cjxTZWN1cml0eU9yaWdpbj4gU2VjdXJpdHlPcmlnaW46
Om1heWJlQ3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGRhdGFiYXNl
SWRlbnRpZmllcikKK1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gU2VjdXJpdHlPcmlnaW46Om1heWJl
Q3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGRhdGFiYXNlSWRlbnRp
ZmllciwgY29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5JiBzY2hlbWVSZWdpc3RyeSkKIHsKICAgICAv
LyBNYWtlIHN1cmUgdGhlcmUncyBhIGZpcnN0IHNlcGFyYXRvcgogICAgIHNpemVfdCBzZXBhcmF0
b3IxID0gZGF0YWJhc2VJZGVudGlmaWVyLmZpbmQoc2VwYXJhdG9yQ2hhcmFjdGVyKTsKQEAgLTUz
NywyMiArNTM4LDIyIEBAIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gU2VjdXJpdHlPcmlnaW46Om0K
ICAgICBTdHJpbmcgaG9zdCA9IGRhdGFiYXNlSWRlbnRpZmllci5zdWJzdHJpbmcoc2VwYXJhdG9y
MSArIDEsIHNlcGFyYXRvcjIgLSBzZXBhcmF0b3IxIC0gMSk7CiAgICAgCiAgICAgaG9zdCA9IGRl
Y29kZVVSTEVzY2FwZVNlcXVlbmNlcyhob3N0KTsKLSAgICBhdXRvIG9yaWdpbiA9IGNyZWF0ZShV
UkwoVVJMKCksIHByb3RvY29sICsgIjovLyIgKyBob3N0ICsgIi8iKSk7CisgICAgYXV0byBvcmln
aW4gPSBjcmVhdGUoVVJMKFVSTCgpLCBwcm90b2NvbCArICI6Ly8iICsgaG9zdCArICIvIiksIHNj
aGVtZVJlZ2lzdHJ5KTsKICAgICBvcmlnaW4tPm1fcG9ydCA9IHBvcnQ7CiAgICAgcmV0dXJuIFdU
Rk1vdmUob3JpZ2luKTsKIH0KIAotUmVmPFNlY3VyaXR5T3JpZ2luPiBTZWN1cml0eU9yaWdpbjo6
Y3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGRhdGFiYXNlSWRlbnRp
ZmllcikKK1JlZjxTZWN1cml0eU9yaWdpbj4gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21EYXRh
YmFzZUlkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkZW50aWZpZXIsIGNvbnN0IFBh
Z2VTY2hlbWVSZWdpc3RyeSYgc2NoZW1lUmVnaXN0cnkpCiB7Ci0gICAgaWYgKFJlZlB0cjxTZWN1
cml0eU9yaWdpbj4gb3JpZ2luID0gbWF5YmVDcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyKGRh
dGFiYXNlSWRlbnRpZmllcikpCisgICAgaWYgKFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2lu
ID0gbWF5YmVDcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyKGRhdGFiYXNlSWRlbnRpZmllciwg
c2NoZW1lUmVnaXN0cnkpKQogICAgICAgICByZXR1cm4gb3JpZ2luLnJlbGVhc2VOb25OdWxsKCk7
Ci0gICAgcmV0dXJuIGNyZWF0ZShVUkwoKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2Vj
dXJpdHlPcmlnaW4pOwogfQogCi1SZWY8U2VjdXJpdHlPcmlnaW4+IFNlY3VyaXR5T3JpZ2luOjpj
cmVhdGUoY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgY29uc3QgU3RyaW5nJiBob3N0LCBPcHRpb25h
bDx1aW50MTZfdD4gcG9ydCkKK1JlZjxTZWN1cml0eU9yaWdpbj4gU2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZShjb25zdCBTdHJpbmcmIHByb3RvY29sLCBjb25zdCBTdHJpbmcmIGhvc3QsIE9wdGlvbmFs
PHVpbnQxNl90PiBwb3J0LCBjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnkmIHNjaGVtZVJlZ2lzdHJ5
KQogewogICAgIFN0cmluZyBkZWNvZGVkSG9zdCA9IGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyho
b3N0KTsKLSAgICBhdXRvIG9yaWdpbiA9IGNyZWF0ZShVUkwoVVJMKCksIHByb3RvY29sICsgIjov
LyIgKyBob3N0ICsgIi8iKSk7CisgICAgYXV0byBvcmlnaW4gPSBjcmVhdGUoVVJMKFVSTCgpLCBw
cm90b2NvbCArICI6Ly8iICsgaG9zdCArICIvIiksIHNjaGVtZVJlZ2lzdHJ5KTsKICAgICBvcmln
aW4tPm1fcG9ydCA9IHBvcnQ7CiAgICAgcmV0dXJuIG9yaWdpbjsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFBhZ2VTY2hlbWVSZWdpc3RyeTsKIGNs
YXNzIFVSTDsKIAogY2xhc3MgU2VjdXJpdHlPcmlnaW4gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8U2VjdXJpdHlPcmlnaW4+IHsKQEAgLTQ5LDE3ICs1MCwxNyBAQCBwdWJsaWM6CiAgICAg
ICAgIEJsb2NrQWxsU3RvcmFnZQogICAgIH07CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
UmVmPFNlY3VyaXR5T3JpZ2luPiBjcmVhdGUoY29uc3QgVVJMJik7CisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlZjxTZWN1cml0eU9yaWdpbj4gY3JlYXRlKGNvbnN0IFVSTCYsIGNvbnN0IFBh
Z2VTY2hlbWVSZWdpc3RyeSYpOwogICAgIHN0YXRpYyBSZWY8U2VjdXJpdHlPcmlnaW4+IGNyZWF0
ZVVuaXF1ZSgpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTZWN1cml0eU9yaWdp
bj4gY3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmllcihjb25zdCBTdHJpbmcmKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNlY3VyaXR5T3JpZ2luPiBjcmVhdGVGcm9tRGF0YWJhc2VJ
ZGVudGlmaWVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3RyeSYpOwogICAg
IC8vIEFsdGVybmF0ZSBmb3JtIG9mIGNyZWF0ZUZyb21EYXRhYmFzZUlkZW50aWZpZXIgdGhhdCBy
ZXR1cm5zIGEgbnVsbHB0ciBvbiBmYWlsdXJlLCBpbnN0ZWFkIG9mIGFuIGVtcHR5IG9yaWdpbi4K
ICAgICAvLyBGSVhNRTogTWFueSB1c2VycyBvZiBjcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVy
IHNlZW0gdG8gZXhwZWN0IG1heWJlQ3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmllciBiZWhhdmlv
ciwKICAgICAvLyBidXQgdGhleSBhcmVuJ3QgZ2V0dGluZyBpdCBzbyB0aGV5IG1pZ2h0IGJlIGJ1
Z2d5LgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG1h
eWJlQ3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmllcihjb25zdCBTdHJpbmcmKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBtYXliZUNyZWF0ZUZyb21E
YXRhYmFzZUlkZW50aWZpZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5
Jik7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNlY3VyaXR5T3JpZ2luPiBjcmVh
dGVGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZWY8U2VjdXJpdHlPcmlnaW4+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHByb3RvY29sLCBjb25zdCBT
dHJpbmcmIGhvc3QsIE9wdGlvbmFsPHVpbnQxNl90PiBwb3J0KTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVmPFNlY3VyaXR5T3JpZ2luPiBjcmVhdGVGcm9tU3RyaW5nKGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3RyeSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBSZWY8U2VjdXJpdHlPcmlnaW4+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHByb3RvY29sLCBjb25z
dCBTdHJpbmcmIGhvc3QsIE9wdGlvbmFsPHVpbnQxNl90PiBwb3J0LCBjb25zdCBQYWdlU2NoZW1l
UmVnaXN0cnkmKTsKIAogICAgIC8vIFNvbWUgVVJMIHNjaGVtZXMgdXNlIG5lc3RlZCBVUkxzIGZv
ciB0aGVpciBzZWN1cml0eSBjb250ZXh0LiBGb3IgZXhhbXBsZSwKICAgICAvLyBmaWxlc3lzdGVt
IFVSTHMgbG9vayBsaWtlIHRoZSBmb2xsb3dpbmc6CkBAIC0xMDMsNyArMTA0LDcgQEAgcHVibGlj
OgogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIFNlY3VyaXR5T3JpZ2luIGNhbiByZWFkIGNv
bnRlbnQgcmV0cmlldmVkIGZyb20KICAgICAvLyB0aGUgZ2l2ZW4gVVJMLiBGb3IgZXhhbXBsZSwg
Y2FsbCB0aGlzIGZ1bmN0aW9uIGJlZm9yZSBpc3N1aW5nCiAgICAgLy8gWE1MSHR0cFJlcXVlc3Rz
LgotICAgIGJvb2wgY2FuUmVxdWVzdChjb25zdCBVUkwmKSBjb25zdDsKKyAgICBib29sIGNhblJl
cXVlc3QoY29uc3QgVVJMJiwgY29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5JikgY29uc3Q7CiAKICAg
ICAvLyBSZXR1cm5zIHRydWUgaWYgdGhpcyBTZWN1cml0eU9yaWdpbiBjYW4gcmVjZWl2ZSBkcmFn
IGNvbnRlbnQgZnJvbSB0aGUKICAgICAvLyBpbml0aWF0b3IuIEZvciBleGFtcGxlLCBjYWxsIHRo
aXMgZnVuY3Rpb24gYmVmb3JlIGFsbG93aW5nIGNvbnRlbnQgdG8gYmUKQEAgLTExMyw3ICsxMTQs
NyBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHxkb2N1bWVudHwgY2FuIGRpc3Bs
YXkgY29udGVudCBmcm9tIHRoZSBnaXZlbiBVUkwgKGUuZy4sCiAgICAgLy8gaW4gYW4gaWZyYW1l
IG9yIGFzIGFuIGltYWdlKS4gRm9yIGV4YW1wbGUsIHdlYiBzaXRlcyBnZW5lcmFsbHkgY2Fubm90
CiAgICAgLy8gZGlzcGxheSBjb250ZW50IGZyb20gdGhlIHVzZXIncyBmaWxlcyBzeXN0ZW0uCi0g
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjYW5EaXNwbGF5KGNvbnN0IFVSTCYpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIGJvb2wgY2FuRGlzcGxheShjb25zdCBVUkwmLCBjb25zdCBQYWdlU2No
ZW1lUmVnaXN0cnkmKSBjb25zdDsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIFNlY3Vy
aXR5T3JpZ2luIGNhbiBsb2FkIGxvY2FsIHJlc291cmNlcywgc3VjaAogICAgIC8vIGFzIGltYWdl
cywgaWZyYW1lcywgYW5kIHN0eWxlIHNoZWV0cywgYW5kIGNhbiBsaW5rIHRvIGxvY2FsIFVSTHMu
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwCShyZXZp
c2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDkgKzY5LDkgQEAgU2VjdXJpdHlPcmlnaW5EYXRhIFNl
Y3VyaXR5T3JpZ2luRGF0YTo6ZgogICAgIHJldHVybiBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21T
ZWN1cml0eU9yaWdpbigqb3JpZ2luKTsKIH0KIAotUmVmPFNlY3VyaXR5T3JpZ2luPiBTZWN1cml0
eU9yaWdpbkRhdGE6OnNlY3VyaXR5T3JpZ2luKCkgY29uc3QKK1JlZjxTZWN1cml0eU9yaWdpbj4g
U2VjdXJpdHlPcmlnaW5EYXRhOjpzZWN1cml0eU9yaWdpbihjb25zdCBQYWdlU2NoZW1lUmVnaXN0
cnkmIHNjaGVtZVJlZ2lzdHJ5KSBjb25zdAogewotICAgIHJldHVybiBTZWN1cml0eU9yaWdpbjo6
Y3JlYXRlKHByb3RvY29sLmlzb2xhdGVkQ29weSgpLCBob3N0Lmlzb2xhdGVkQ29weSgpLCBwb3J0
KTsKKyAgICByZXR1cm4gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShwcm90b2NvbC5pc29sYXRlZENv
cHkoKSwgaG9zdC5pc29sYXRlZENvcHkoKSwgcG9ydCwgc2NoZW1lUmVnaXN0cnkpOwogfQogCiBT
ZWN1cml0eU9yaWdpbkRhdGEgU2VjdXJpdHlPcmlnaW5EYXRhOjppc29sYXRlZENvcHkoKSBjb25z
dApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5oCShyZXZpc2lv
biAyMDgzOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMCwxMyArMzAsMTQgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgRnJhbWU7CitjbGFzcyBQYWdlU2NoZW1lUmVnaXN0cnk7CiBjbGFzcyBTZWN1cml0eU9y
aWdpbjsKIAogc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YSB7CiAgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFNlY3VyaXR5T3JpZ2luRGF0YSBmcm9tU2VjdXJpdHlPcmlnaW4oY29uc3QgU2VjdXJp
dHlPcmlnaW4mKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU2VjdXJpdHlPcmlnaW5EYXRh
IGZyb21GcmFtZShGcmFtZSopOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgUmVmPFNlY3VyaXR5T3Jp
Z2luPiBzZWN1cml0eU9yaWdpbigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxTZWN1
cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4oY29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5JikgY29u
c3Q7CiAKICAgICAvLyBGSVhNRSA8cmRhcjovLzkwMTgzODY+OiBXZSBzaG91bGQgYmUgc2VuZGlu
ZyBtb3JlIHN0YXRlIGFjcm9zcyB0aGUgd2lyZSB0aGFuIGp1c3QgdGhlIHByb3RvY29sLAogICAg
IC8vIGhvc3QsIGFuZCBwb3J0LgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBv
bGljeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGlj
eS5jcHAJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQ
b2xpY3kuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3ICs2Nyw3IEBAIGJvb2wgU2VjdXJpdHlQ
b2xpY3k6OnNob3VsZEhpZGVSZWZlcnJlcigKICAgICByZXR1cm4gIVVSTElzU2VjdXJlVVJMOwog
fQogCi1TdHJpbmcgU2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJyZXJIZWFkZXIoUmVmZXJy
ZXJQb2xpY3kgcmVmZXJyZXJQb2xpY3ksIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJl
ZmVycmVyKQorU3RyaW5nIFNlY3VyaXR5UG9saWN5OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVyKFJl
ZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiByZWZlcnJlciwgY29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5JiBzY2hlbWVSZWdpc3RyeSkKIHsK
ICAgICBBU1NFUlQocmVmZXJyZXIgPT0gVVJMKFVSTCgpLCByZWZlcnJlcikuc3RyaXBwZWRGb3JV
c2VBc1JlZmVycmVyKCkpOwogCkBAIC04Myw3ICs4Myw3IEBAIFN0cmluZyBTZWN1cml0eVBvbGlj
eTo6Z2VuZXJhdGVSZWZlcnJlckgKICAgICBjYXNlIFJlZmVycmVyUG9saWN5OjpBbHdheXM6CiAg
ICAgICAgIHJldHVybiByZWZlcnJlcjsKICAgICBjYXNlIFJlZmVycmVyUG9saWN5OjpPcmlnaW46
IHsKLSAgICAgICAgU3RyaW5nIG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3Ry
aW5nKHJlZmVycmVyKS0+dG9TdHJpbmcoKTsKKyAgICAgICAgU3RyaW5nIG9yaWdpbiA9IFNlY3Vy
aXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHJlZmVycmVyLCBzY2hlbWVSZWdpc3RyeSktPnRv
U3RyaW5nKCk7CiAgICAgICAgIGlmIChvcmlnaW4gPT0gIm51bGwiKQogICAgICAgICAgICAgcmV0
dXJuIFN0cmluZygpOwogICAgICAgICAvLyBBIHNlY3VyaXR5IG9yaWdpbiBpcyBub3QgYSBjYW5v
bmljYWwgVVJMIGFzIGl0IGxhY2tzIGEgcGF0aC4gQWRkIC8KQEAgLTExMiw5ICsxMTIsOSBAQCBi
b29sIFNlY3VyaXR5UG9saWN5OjphbGxvd1N1YnN0aXR1dGVEYXRhCiAgICAgcmV0dXJuIGxvY2Fs
TG9hZFBvbGljeSAhPSBTZWN1cml0eVBvbGljeTo6QWxsb3dMb2NhbExvYWRzRm9yTG9jYWxPbmx5
OwogfQogCi1ib29sIFNlY3VyaXR5UG9saWN5Ojppc0FjY2Vzc1doaXRlTGlzdGVkKGNvbnN0IFNl
Y3VyaXR5T3JpZ2luKiBhY3RpdmVPcmlnaW4sIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0YXJnZXRP
cmlnaW4pCitib29sIFNlY3VyaXR5UG9saWN5Ojppc0FjY2Vzc1doaXRlTGlzdGVkKGNvbnN0IFNl
Y3VyaXR5T3JpZ2luJiBhY3RpdmVPcmlnaW4sIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0YXJnZXRP
cmlnaW4pCiB7Ci0gICAgaWYgKE9yaWdpbkFjY2Vzc1doaXRlTGlzdCogbGlzdCA9IG9yaWdpbkFj
Y2Vzc01hcCgpLmdldChhY3RpdmVPcmlnaW4tPnRvU3RyaW5nKCkpKSB7CisgICAgaWYgKE9yaWdp
bkFjY2Vzc1doaXRlTGlzdCogbGlzdCA9IG9yaWdpbkFjY2Vzc01hcCgpLmdldChhY3RpdmVPcmln
aW4udG9TdHJpbmcoKSkpIHsKICAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6ICpsaXN0KSB7CiAg
ICAgICAgICAgICBpZiAoZW50cnkubWF0Y2hlc09yaWdpbigqdGFyZ2V0T3JpZ2luKSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEyMyw5ICsxMjMsOSBAQCBib29sIFNlY3VyaXR5
UG9saWN5Ojppc0FjY2Vzc1doaXRlTGlzdGVkCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29s
IFNlY3VyaXR5UG9saWN5Ojppc0FjY2Vzc1RvVVJMV2hpdGVMaXN0ZWQoY29uc3QgU2VjdXJpdHlP
cmlnaW4qIGFjdGl2ZU9yaWdpbiwgY29uc3QgVVJMJiB1cmwpCitib29sIFNlY3VyaXR5UG9saWN5
Ojppc0FjY2Vzc1RvVVJMV2hpdGVMaXN0ZWQoY29uc3QgU2VjdXJpdHlPcmlnaW4mIGFjdGl2ZU9y
aWdpbiwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3RyeSYgc2NoZW1lUmVn
aXN0cnkpCiB7Ci0gICAgUmVmPFNlY3VyaXR5T3JpZ2luPiB0YXJnZXRPcmlnaW4oU2VjdXJpdHlP
cmlnaW46OmNyZWF0ZSh1cmwpKTsKKyAgICBSZWY8U2VjdXJpdHlPcmlnaW4+IHRhcmdldE9yaWdp
bihTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHVybCwgc2NoZW1lUmVnaXN0cnkpKTsKICAgICByZXR1
cm4gaXNBY2Nlc3NXaGl0ZUxpc3RlZChhY3RpdmVPcmlnaW4sICZ0YXJnZXRPcmlnaW4uZ2V0KCkp
OwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5oCShyZXZpc2lvbiAy
MDgzOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMzLDYgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBQ
YWdlU2NoZW1lUmVnaXN0cnk7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFVSTDsKIApA
QCAtNDUsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJucyB0aGUgcmVmZXJyZXIgbW9k
aWZpZWQgYWNjb3JkaW5nIHRvIHRoZSByZWZlcnJlciBwb2xpY3kgZm9yIGEKICAgICAvLyBuYXZp
Z2F0aW9uIHRvIGEgZ2l2ZW4gVVJMLiBJZiB0aGUgcmVmZXJyZXIgcmV0dXJuZWQgaXMgZW1wdHks
IHRoZQogICAgIC8vIHJlZmVycmVyIGhlYWRlciBzaG91bGQgYmUgb21pdHRlZC4KLSAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIGdlbmVyYXRlUmVmZXJyZXJIZWFkZXIoUmVmZXJyZXJQ
b2xpY3ksIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpOworICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBTdHJpbmcgZ2VuZXJhdGVSZWZlcnJlckhlYWRlcihSZWZlcnJlclBvbGlj
eSwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgY29uc3QgUGFnZVNjaGVtZVJl
Z2lzdHJ5Jik7CiAKICAgICBlbnVtIExvY2FsTG9hZFBvbGljeSB7CiAgICAgICAgIEFsbG93TG9j
YWxMb2Fkc0ZvckFsbCwgLy8gTm8gcmVzdHJpY3Rpb24gb24gbG9jYWwgbG9hZHMuCkBAIC02MSw4
ICs2Miw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCByZW1vdmVP
cmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBTZWN1cml0eU9yaWdpbiYgc291cmNlT3Jp
Z2luLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVz
dGluYXRpb25Eb21haW4sIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHJlc2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0cygpOwog
Ci0gICAgc3RhdGljIGJvb2wgaXNBY2Nlc3NXaGl0ZUxpc3RlZChjb25zdCBTZWN1cml0eU9yaWdp
biogYWN0aXZlT3JpZ2luLCBjb25zdCBTZWN1cml0eU9yaWdpbiogdGFyZ2V0T3JpZ2luKTsKLSAg
ICBzdGF0aWMgYm9vbCBpc0FjY2Vzc1RvVVJMV2hpdGVMaXN0ZWQoY29uc3QgU2VjdXJpdHlPcmln
aW4qIGFjdGl2ZU9yaWdpbiwgY29uc3QgVVJMJik7CisgICAgc3RhdGljIGJvb2wgaXNBY2Nlc3NX
aGl0ZUxpc3RlZChjb25zdCBTZWN1cml0eU9yaWdpbiYgYWN0aXZlT3JpZ2luLCBjb25zdCBTZWN1
cml0eU9yaWdpbiogdGFyZ2V0T3JpZ2luKTsKKyAgICBzdGF0aWMgYm9vbCBpc0FjY2Vzc1RvVVJM
V2hpdGVMaXN0ZWQoY29uc3QgU2VjdXJpdHlPcmlnaW4mIGFjdGl2ZU9yaWdpbiwgY29uc3QgVVJM
JiwgY29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5Jik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3ku
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0
eVBvbGljeS5jcHAJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvY3Nw
L0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcg
QEAKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJKU0RP
TVdpbmRvd1NoZWxsLmgiCiAjaW5jbHVkZSAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCisjaW5j
bHVkZSAiUGFnZVNjaGVtZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiUGFyc2luZ1V0aWxpdGllcy5o
IgogI2luY2x1ZGUgIlBpbmdMb2FkZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIK
QEAgLTkyLDYgKzkzLDcgQEAgc3RhdGljIFN0cmluZyBjb25zb2xlTWVzc2FnZUZvclZpb2xhdGlv
bgogQ29udGVudFNlY3VyaXR5UG9saWN5OjpDb250ZW50U2VjdXJpdHlQb2xpY3koU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKICAgICA6IG1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgmc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKICAgICAsIG1fc2FuZGJveEZs
YWdzKFNhbmRib3hOb25lKQorICAgICwgbV9zY2hlbWVSZWdpc3RyeShzY3JpcHRFeGVjdXRpb25D
b250ZXh0LnNjaGVtZVJlZ2lzdHJ5KCkpCiB7CiAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuc2VjdXJpdHlPcmlnaW4oKSk7CiAgICAgdXBkYXRlU291cmNlU2VsZigqc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5zZWN1cml0eU9yaWdpbigpKTsKQEAgLTEwMCw2ICsxMDIsNyBAQCBDb250
ZW50U2VjdXJpdHlQb2xpY3k6OkNvbnRlbnRTZWN1cml0eVBvCiBDb250ZW50U2VjdXJpdHlQb2xp
Y3k6OkNvbnRlbnRTZWN1cml0eVBvbGljeShjb25zdCBTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlP
cmlnaW4sIGNvbnN0IEZyYW1lKiBmcmFtZSkKICAgICA6IG1fZnJhbWUoZnJhbWUpCiAgICAgLCBt
X3NhbmRib3hGbGFncyhTYW5kYm94Tm9uZSkKKyAgICAsIG1fc2NoZW1lUmVnaXN0cnkoZnJhbWUg
JiYgZnJhbWUtPnBhZ2UoKSA/IGZyYW1lLT5wYWdlKCktPnNjaGVtZVJlZ2lzdHJ5KCkgOiBQYWdl
U2NoZW1lUmVnaXN0cnk6OmNyZWF0ZSgpKQogewogICAgIHVwZGF0ZVNvdXJjZVNlbGYoc2VjdXJp
dHlPcmlnaW4pOwogfQpAQCAtNTYzLDcgKzU2Niw4IEBAIHN0YXRpYyBTdHJpbmcgc3RyaXBVUkxG
b3JVc2VJblJlcG9ydChEb2MKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIGlmICghdXJs
LmlzSGllcmFyY2hpY2FsKCkgfHwgdXJsLnByb3RvY29sSXMoImZpbGUiKSkKICAgICAgICAgcmV0
dXJuIHVybC5wcm90b2NvbCgpLnRvU3RyaW5nKCk7Ci0gICAgcmV0dXJuIGRvY3VtZW50LnNlY3Vy
aXR5T3JpZ2luKCktPmNhblJlcXVlc3QodXJsKSA/IHVybC5zdHJpcHBlZEZvclVzZUFzUmVmZXJy
ZXIoKSA6IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodXJsKS5nZXQoKS50b1N0cmluZygpOworICAg
IGNvbnN0IGF1dG8mIHNjaGVtZVJlZ2lzdHJ5ID0gZG9jdW1lbnQuc2NoZW1lUmVnaXN0cnkoKTsK
KyAgICByZXR1cm4gZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdCh1cmwsIHNj
aGVtZVJlZ2lzdHJ5KSA/IHVybC5zdHJpcHBlZEZvclVzZUFzUmVmZXJyZXIoKSA6IFNlY3VyaXR5
T3JpZ2luOjpjcmVhdGUodXJsLCBzY2hlbWVSZWdpc3RyeSkuZ2V0KCkudG9TdHJpbmcoKTsKIH0K
IAogdm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OnJlcG9ydFZpb2xhdGlvbihjb25zdCBTdHJp
bmcmIHZpb2xhdGVkRGlyZWN0aXZlLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3Rp
dmUmIGVmZmVjdGl2ZVZpb2xhdGVkRGlyZWN0aXZlLCBjb25zdCBVUkwmIGJsb2NrZWRVUkwsIGNv
bnN0IFN0cmluZyYgY29uc29sZU1lc3NhZ2UsIEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSkgY29uc3QK
QEAgLTc4Myw3ICs3ODcsNyBAQCB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6dXBncmFkZUlu
c2VjCiAgICAgaWYgKCF1cmwucHJvdG9jb2xJcygiaHR0cCIpICYmICF1cmwucHJvdG9jb2xJcygi
d3MiKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYm9vbCB1cGdyYWRlUmVxdWVzdCA9IG1faW5z
ZWN1cmVOYXZpZ2F0aW9uUmVxdWVzdHNUb1VwZ3JhZGUuY29udGFpbnMoU2VjdXJpdHlPcmlnaW46
OmNyZWF0ZSh1cmwpKTsKKyAgICBib29sIHVwZ3JhZGVSZXF1ZXN0ID0gbV9pbnNlY3VyZU5hdmln
YXRpb25SZXF1ZXN0c1RvVXBncmFkZS5jb250YWlucyhTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHVy
bCwgbV9zY2hlbWVSZWdpc3RyeS5nZXQoKSkpOwogICAgIGlmIChyZXF1ZXN0VHlwZSA9PSBJbnNl
Y3VyZVJlcXVlc3RUeXBlOjpMb2FkIHx8IHJlcXVlc3RUeXBlID09IEluc2VjdXJlUmVxdWVzdFR5
cGU6OkZvcm1TdWJtaXNzaW9uKQogICAgICAgICB1cGdyYWRlUmVxdWVzdCB8PSBtX3VwZ3JhZGVJ
bnNlY3VyZVJlcXVlc3RzOwogICAgIApAQCAtODE4LDcgKzgyMiw3IEBAIHZvaWQgQ29udGVudFNl
Y3VyaXR5UG9saWN5OjpzZXRVcGdyYWRlSW4KICAgICBlbHNlIGlmICh1cGdyYWRlVVJMLnByb3Rv
Y29sSXMoIndzcyIpKQogICAgICAgICB1cGdyYWRlVVJMLnNldFByb3RvY29sKCJ3cyIpOwogICAg
IAotICAgIG1faW5zZWN1cmVOYXZpZ2F0aW9uUmVxdWVzdHNUb1VwZ3JhZGUuYWRkKFNlY3VyaXR5
T3JpZ2luOjpjcmVhdGUodXBncmFkZVVSTCkpOworICAgIG1faW5zZWN1cmVOYXZpZ2F0aW9uUmVx
dWVzdHNUb1VwZ3JhZGUuYWRkKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodXBncmFkZVVSTCwgbV9z
Y3JpcHRFeGVjdXRpb25Db250ZXh0LT5zY2hlbWVSZWdpc3RyeSgpKSk7CiB9CiAKIHZvaWQgQ29u
dGVudFNlY3VyaXR5UG9saWN5Ojppbmhlcml0SW5zZWN1cmVOYXZpZ2F0aW9uUmVxdWVzdHNUb1Vw
Z3JhZGVGcm9tT3BlbmVyKGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeSYgb3RoZXIpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuaAko
cmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3Vy
aXR5UG9saWN5LmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDcgQEAgY2xhc3MgQ29udGVu
dFNlY3VyaXR5UG9saWN5U291cmNlOwogY2xhc3MgRE9NU3RyaW5nTGlzdDsKIGNsYXNzIEZyYW1l
OwogY2xhc3MgSlNET01XaW5kb3dTaGVsbDsKK2NsYXNzIFBhZ2VTY2hlbWVSZWdpc3RyeTsKIGNs
YXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFz
cyBTZWN1cml0eU9yaWdpbjsKQEAgLTIxMSw2ICsyMTIsNyBAQCBwcml2YXRlOgogICAgIE9wdGlv
blNldDxDb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoQWxnb3JpdGhtPiBtX2hhc2hBbGdvcml0aG1z
Rm9ySW5saW5lU2NyaXB0czsKICAgICBPcHRpb25TZXQ8Q29udGVudFNlY3VyaXR5UG9saWN5SGFz
aEFsZ29yaXRobT4gbV9oYXNoQWxnb3JpdGhtc0ZvcklubGluZVN0eWxlc2hlZXRzOwogICAgIEhh
c2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gbV9pbnNlY3VyZU5hdmlnYXRpb25SZXF1ZXN0
c1RvVXBncmFkZTsKKyAgICBSZWY8Y29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5PiBtX3NjaGVtZVJl
Z2lzdHJ5OwogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NoZW1lUmVn
aXN0cnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY2hlbWVSZWdp
c3RyeS5oCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY2hl
bWVSZWdpc3RyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIC8vIEZJWE1FOiBNYWtlIEhhc2hTZXQ8U3RyaW5nPjo6Y29udGFpbnMoU3RyaW5n
Vmlldykgd29yayBhbmQgdXNlIFN0cmluZ1ZpZXdzIGhlcmUuCiB1c2luZyBVUkxTY2hlbWVzTWFw
ID0gSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD47CiAKKy8vIEZJWE1F
OiBNb3ZlIHRoZXNlIHRvIFBhZ2VTY2hlbWVSZWdpc3RyeSBhbmQgc3RvcCB1c2luZyBhIGdsb2Jh
bCBTY2hlbWVSZWdpc3RyeS4KIGNsYXNzIFNjaGVtZVJlZ2lzdHJ5IHsKIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCByZWdpc3RlclVSTFNjaGVtZUFzTG9jYWwoY29uc3Qg
U3RyaW5nJik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXIuY3BwCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OCw3ICsx
NTgsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBjYW5Mb2FkUG9zdGVyKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KICAgICB2b2lkIHNldFBvc3Rlcihjb25zdCBTdHJpbmcmKSBvdmVy
cmlkZSB7IH0KIAotICAgIGJvb2wgaGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4oKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBoYXNTaW5nbGVTZWN1cml0eU9yaWdpbihj
b25zdCBQYWdlU2NoZW1lUmVnaXN0cnkmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CiB9OwogCiAvLyBlbmdpbmUgc3VwcG9ydApAQCAtOTg4LDkgKzk4OCw5IEBAIHZvaWQgTWVkaWFQ
bGF5ZXI6OnNldFNob3VsZE1haW50YWluQXNwZWMKICAgICBtX3ByaXZhdGUtPnNldFNob3VsZE1h
aW50YWluQXNwZWN0UmF0aW8obWFpbnRhaW5Bc3BlY3RSYXRpbyk7CiB9CiAKLWJvb2wgTWVkaWFQ
bGF5ZXI6Omhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkgY29uc3QKK2Jvb2wgTWVkaWFQbGF5ZXI6
Omhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3RyeSYgc2NoZW1l
UmVnaXN0cnkpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+aGFzU2luZ2xlU2VjdXJp
dHlPcmlnaW4oKTsKKyAgICByZXR1cm4gbV9wcml2YXRlLT5oYXNTaW5nbGVTZWN1cml0eU9yaWdp
bihzY2hlbWVSZWdpc3RyeSk7CiB9CiAKIGJvb2wgTWVkaWFQbGF5ZXI6OmRpZFBhc3NDT1JTQWNj
ZXNzQ2hlY2soKSBjb25zdApAQCAtMTA0OCwxMyArMTA0OCwxMyBAQCBzdGF0aWMgdm9pZCBhZGRU
b0hhc2goSGFzaFNldDxUPiYgdG9IYXNoCiAgICAgICAgIHRvSGFzaC5hZGQoZnJvbUhhc2guYmVn
aW4oKSwgZnJvbUhhc2guZW5kKCkpOwogfQogICAgIAotSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlP
cmlnaW4+PiBNZWRpYVBsYXllcjo6b3JpZ2luc0luTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmIHBh
dGgpCitIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IE1lZGlhUGxheWVyOjpvcmlnaW5z
SW5NZWRpYUNhY2hlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5
JiBzY2hlbWVSZWdpc3RyeSkKIHsKICAgICBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+
IG9yaWdpbnM7CiAgICAgZm9yIChhdXRvJiBlbmdpbmUgOiBpbnN0YWxsZWRNZWRpYUVuZ2luZXMo
KSkgewogICAgICAgICBpZiAoIWVuZ2luZS5vcmlnaW5zSW5NZWRpYUNhY2hlKQogICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgIGFkZFRvSGFzaChvcmlnaW5zLCBlbmdpbmUub3JpZ2luc0lu
TWVkaWFDYWNoZShwYXRoKSk7CisgICAgICAgIGFkZFRvSGFzaChvcmlnaW5zLCBlbmdpbmUub3Jp
Z2luc0luTWVkaWFDYWNoZShwYXRoLCBzY2hlbWVSZWdpc3RyeSkpOwogICAgIH0KICAgICByZXR1
cm4gb3JpZ2luczsKIH0KQEAgLTEwNjcsMTEgKzEwNjcsMTEgQEAgdm9pZCBNZWRpYVBsYXllcjo6
Y2xlYXJNZWRpYUNhY2hlKGNvbnN0IAogICAgIH0KIH0KIAotdm9pZCBNZWRpYVBsYXllcjo6Y2xl
YXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEhhc2hTZXQ8
UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4mIG9yaWdpbnMpCit2b2lkIE1lZGlhUGxheWVyOjpjbGVh
ck1lZGlhQ2FjaGVGb3JPcmlnaW5zKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgSGFzaFNldDxS
ZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiYgb3JpZ2lucywgY29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5
JiBzY2hlbWVSZWdpc3RyeSkKIHsKICAgICBmb3IgKGF1dG8mIGVuZ2luZSA6IGluc3RhbGxlZE1l
ZGlhRW5naW5lcygpKSB7CiAgICAgICAgIGlmIChlbmdpbmUuY2xlYXJNZWRpYUNhY2hlRm9yT3Jp
Z2lucykKLSAgICAgICAgICAgIGVuZ2luZS5jbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKHBhdGgs
IG9yaWdpbnMpOworICAgICAgICAgICAgZW5naW5lLmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMo
cGF0aCwgb3JpZ2lucywgc2NoZW1lUmVnaXN0cnkpOwogICAgIH0KIH0KIApJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCShyZXZpc2lvbiAy
MDgzOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yOTIsOSArMjkyLDkgQEAgcHVibGljOgogICAgIHN0YXRpYyBN
ZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZShjb25zdCBNZWRpYUVuZ2luZVN1
cHBvcnRQYXJhbWV0ZXJzJiwgY29uc3QgTWVkaWFQbGF5ZXJTdXBwb3J0c1R5cGVDbGllbnQqKTsK
ICAgICBzdGF0aWMgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlD
YXNlSW5zZW5zaXRpdmVIYXNoPiYpOwogICAgIHN0YXRpYyBib29sIGlzQXZhaWxhYmxlKCk7Ci0g
ICAgc3RhdGljIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gb3JpZ2luc0luTWVkaWFD
YWNoZShjb25zdCBTdHJpbmcmIHBhdGgpOworICAgIHN0YXRpYyBIYXNoU2V0PFJlZlB0cjxTZWN1
cml0eU9yaWdpbj4+IG9yaWdpbnNJbk1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25z
dCBQYWdlU2NoZW1lUmVnaXN0cnkmKTsKICAgICBzdGF0aWMgdm9pZCBjbGVhck1lZGlhQ2FjaGUo
Y29uc3QgU3RyaW5nJiBwYXRoLCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50
IG1vZGlmaWVkU2luY2UpOwotICAgIHN0YXRpYyB2b2lkIGNsZWFyTWVkaWFDYWNoZUZvck9yaWdp
bnMoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdp
bj4+Jik7CisgICAgc3RhdGljIHZvaWQgY2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhjb25zdCBT
dHJpbmcmIHBhdGgsIGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4mLCBjb25z
dCBQYWdlU2NoZW1lUmVnaXN0cnkmKTsKICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0tleVN5c3Rl
bShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAKICAg
ICBib29sIHN1cHBvcnRzRnVsbHNjcmVlbigpIGNvbnN0OwpAQCAtNDk1LDcgKzQ5NSw3IEBAIHB1
YmxpYzoKICAgICBHcmFwaGljc0RldmljZUFkYXB0ZXIqIGdyYXBoaWNzRGV2aWNlQWRhcHRlcigp
IGNvbnN0OwogI2VuZGlmCiAKLSAgICBib29sIGhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkgY29u
c3Q7CisgICAgYm9vbCBoYXNTaW5nbGVTZWN1cml0eU9yaWdpbihjb25zdCBQYWdlU2NoZW1lUmVn
aXN0cnkmKSBjb25zdDsKIAogICAgIGJvb2wgZGlkUGFzc0NPUlNBY2Nlc3NDaGVjaygpIGNvbnN0
OwogCkBAIC02MTgsOSArNjE4LDkgQEAgcHJpdmF0ZToKIHR5cGVkZWYgc3RkOjpmdW5jdGlvbjxz
dGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiAoTWVkaWFQbGF5ZXIq
KT4gQ3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXI7CiB0eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2luZVN1
cHBvcnRlZFR5cGVzKShIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYg
dHlwZXMpOwogdHlwZWRlZiBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlICgqTWVkaWFFbmdpbmVT
dXBwb3J0c1R5cGUpKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmIHBhcmFtZXRl
cnMpOwotdHlwZWRlZiBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+ICgqTWVkaWFFbmdp
bmVPcmlnaW5zSW5NZWRpYUNhY2hlKShjb25zdCBTdHJpbmcmIHBhdGgpOwordHlwZWRlZiBIYXNo
U2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+ICgqTWVkaWFFbmdpbmVPcmlnaW5zSW5NZWRpYUNh
Y2hlKShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3RyeSYpOwogdHlw
ZWRlZiB2b2lkICgqTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGUpKGNvbnN0IFN0cmluZyYgcGF0
aCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlKTsK
LXR5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucykoY29u
c3QgU3RyaW5nJiBwYXRoLCBjb25zdCBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+Jik7
Cit0eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMpKGNv
bnN0IFN0cmluZyYgcGF0aCwgY29uc3QgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiYs
IGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3RyeSYpOwogdHlwZWRlZiBib29sICgqTWVkaWFFbmdpbmVT
dXBwb3J0c0tleVN5c3RlbSkoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUpOwogCiB0eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2luZVJlZ2lzdHJhcikoQ3JlYXRl
TWVkaWFFbmdpbmVQbGF5ZXIsIE1lZGlhRW5naW5lU3VwcG9ydGVkVHlwZXMsIE1lZGlhRW5naW5l
U3VwcG9ydHNUeXBlLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXJQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVm
IE1lZGlhUGxheWVyUHJpdmF0ZV9oCi0jZGVmaW5lIE1lZGlhUGxheWVyUHJpdmF0ZV9oCisjcHJh
Z21hIG9uY2UKIAogI2lmIEVOQUJMRShWSURFTykKIApAQCAtMTkyLDcgKzE5MSw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkTWFpbnRhaW5Bc3BlY3RSYXRpbygpIGNvbnN0IHsg
cmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvdWxkTWFpbnRhaW5Bc3BlY3RS
YXRpbyhib29sKSB7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBoYXNTaW5nbGVTZWN1cml0eU9yaWdp
bigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGhhc1NpbmdsZVNl
Y3VyaXR5T3JpZ2luKGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3RyeSYpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgZGlkUGFzc0NPUlNBY2Nlc3NDaGVjaygpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAKQEAgLTIxNCwxNiArMjEzLDEyIEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHVuc2lnbmVkIGF1ZGlvRGVjb2RlZEJ5dGVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIDA7
IH0KICAgICB2aXJ0dWFsIHVuc2lnbmVkIHZpZGVvRGVjb2RlZEJ5dGVDb3VudCgpIGNvbnN0IHsg
cmV0dXJuIDA7IH0KIAotICAgIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gb3JpZ2lu
c0luTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmKSB7IHJldHVybiB7IH07IH0KLSAgICB2b2lkIGNs
ZWFyTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmLCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0
aW1lX3BvaW50KSB7IH0KLSAgICB2b2lkIGNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMoY29uc3Qg
U3RyaW5nJiwgY29uc3QgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiYpIHsgfQotCiAg
ICAgdmlydHVhbCB2b2lkIHNldFByaXZhdGVCcm93c2luZ01vZGUoYm9vbCkgeyB9CiAKICAgICB2
aXJ0dWFsIFN0cmluZyBlbmdpbmVEZXNjcmlwdGlvbigpIGNvbnN0IHsgcmV0dXJuIGVtcHR5U3Ry
aW5nKCk7IH0KIAogI2lmIEVOQUJMRShXRUJfQVVESU8pCi0gICAgdmlydHVhbCBBdWRpb1NvdXJj
ZVByb3ZpZGVyKiBhdWRpb1NvdXJjZVByb3ZpZGVyKCkgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1
YWwgQXVkaW9Tb3VyY2VQcm92aWRlciogYXVkaW9Tb3VyY2VQcm92aWRlcigpIHsgcmV0dXJuIG51
bGxwdHI7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCkBA
IC0yNzgsNCArMjczLDMgQEAgcHVibGljOgogfQogCiAjZW5kaWYKLSNlbmRpZgpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMuaAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5oCSh3b3JraW5nIGNvcHkpCkBAIC03MSw2ICs3MSw3IEBAIGNsYXNzIENETVNl
c3Npb25BVkZvdW5kYXRpb25PYmpDOwogY2xhc3MgSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2
YXRlQVZGOwogY2xhc3MgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakM7CiBjbGFzcyBNZWRp
YVNlbGVjdGlvbkdyb3VwQVZGT2JqQzsKK2NsYXNzIFBhZ2VTY2hlbWVSZWdpc3RyeTsKIGNsYXNz
IFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y7CiBjbGFzcyBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM7
CiBjbGFzcyBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI7CkBAIC04OCw5ICs4OSw5IEBAIHB1Ymxp
YzoKIAogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdp
c3RyYXIpOwogCi0gICAgc3RhdGljIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gb3Jp
Z2luc0luTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmKTsKKyAgICBzdGF0aWMgSGFzaFNldDxSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+PiBvcmlnaW5zSW5NZWRpYUNhY2hlKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFBhZ2VTY2hlbWVSZWdpc3RyeSYpOwogICAgIHN0YXRpYyB2b2lkIGNsZWFyTWVkaWFDYWNo
ZShjb25zdCBTdHJpbmcmLCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1v
ZGlmaWVkU2luY2UpOwotICAgIHN0YXRpYyB2b2lkIGNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMo
Y29uc3QgU3RyaW5nJiwgY29uc3QgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiYpOwor
ICAgIHN0YXRpYyB2b2lkIGNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMoY29uc3QgU3RyaW5nJiwg
Y29uc3QgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiYsIGNvbnN0IFBhZ2VTY2hlbWVS
ZWdpc3RyeSYpOwogCiAgICAgdm9pZCBzZXRBc3NldChSZXRhaW5QdHI8aWQ+KTsKICAgICB2b2lk
IHRyYWNrc0NoYW5nZWQoKSBvdmVycmlkZTsKQEAgLTIzNiw3ICsyMzcsNyBAQCBwcml2YXRlOgog
CiAgICAgdm9pZCB1cGRhdGVWaWRlb0xheWVyR3Jhdml0eSgpIG92ZXJyaWRlOwogCi0gICAgYm9v
bCBoYXNTaW5nbGVTZWN1cml0eU9yaWdpbigpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaGFz
U2luZ2xlU2VjdXJpdHlPcmlnaW4oY29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5JikgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgYm9vbCBkaWRQYXNzQ09SU0FjY2Vzc0NoZWNrKCkgY29uc3Qgb3ZlcnJpZGU7
CiAKICAgICBNZWRpYVRpbWUgZ2V0U3RhcnREYXRlKCkgY29uc3Qgb3ZlcnJpZGU7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW0JKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ0NiwxMyArNDQ2LDEzIEBAIHN0
YXRpYyBBVkFzc2V0Q2FjaGVUeXBlICphc3NldENhY2hlRm9yUGEKICAgICByZXR1cm4gW2luaXRB
VkFzc2V0Q2FjaGUoKSBhc3NldENhY2hlV2l0aFVSTDphc3NldENhY2hlVVJMXTsKIH0KIAotSGFz
aFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpvcmlnaW5zSW5NZWRpYUNhY2hlKGNvbnN0IFN0cmluZyYgcGF0aCkKK0hhc2hTZXQ8
UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6b3JpZ2luc0luTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFBhZ2VTY2hl
bWVSZWdpc3RyeSYgc2NoZW1lUmVnaXN0cnkpCiB7CiAgICAgSGFzaFNldDxSZWZQdHI8U2VjdXJp
dHlPcmlnaW4+PiBvcmlnaW5zOwogICAgIGZvciAoTlNTdHJpbmcgKmtleSBpbiBbYXNzZXRDYWNo
ZUZvclBhdGgocGF0aCkgYWxsS2V5c10pIHsKICAgICAgICAgVVJMIGtleUFzVVJMID0gVVJMKFVS
TCgpLCBrZXkpOwogICAgICAgICBpZiAoa2V5QXNVUkwuaXNWYWxpZCgpKQotICAgICAgICAgICAg
b3JpZ2lucy5hZGQoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShrZXlBc1VSTCkpOworICAgICAgICAg
ICAgb3JpZ2lucy5hZGQoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShrZXlBc1VSTCwgc2NoZW1lUmVn
aXN0cnkpKTsKICAgICB9CiAgICAgcmV0dXJuIG9yaWdpbnM7CiB9CkBAIC01MDksMTQgKzUwOSwx
NCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6CiAgICAgICAgIFtm
aWxlTWFuYWdlciByZW1vdmVJdGVtQXRVUkw6ZmlsZVVSTCBlcnJvcjpuaWxdOwogfQogCi12b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNsZWFyTWVkaWFDYWNoZUZvck9y
aWdpbnMoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9y
aWdpbj4+JiBvcmlnaW5zKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgSGFz
aFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiYgb3JpZ2lucywgY29uc3QgUGFnZVNjaGVtZVJl
Z2lzdHJ5JiBzY2hlbWVSZWdpc3RyeSkKIHsKICAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKCkiKTsKICAg
ICBBVkFzc2V0Q2FjaGVUeXBlKiBhc3NldENhY2hlID0gYXNzZXRDYWNoZUZvclBhdGgocGF0aCk7
CiAgICAgZm9yIChOU1N0cmluZyAqa2V5IGluIFthc3NldENhY2hlIGFsbEtleXNdKSB7CiAgICAg
ICAgIFVSTCBrZXlBc1VSTCA9IFVSTChVUkwoKSwga2V5KTsKICAgICAgICAgaWYgKGtleUFzVVJM
LmlzVmFsaWQoKSkgewotICAgICAgICAgICAgaWYgKG9yaWdpbnMuY29udGFpbnMoU2VjdXJpdHlP
cmlnaW46OmNyZWF0ZShrZXlBc1VSTCkpKQorICAgICAgICAgICAgaWYgKG9yaWdpbnMuY29udGFp
bnMoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShrZXlBc1VSTCwgc2NoZW1lUmVnaXN0cnkpKSkKICAg
ICAgICAgICAgICAgICBbYXNzZXRDYWNoZSByZW1vdmVFbnRyeUZvcktleTprZXldOwogICAgICAg
ICB9CiAgICAgfQpAQCAtMjIxNywxMyArMjIxNywxMyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6CiAgICAgc2V0TmF0dXJhbFNpemUobV9jYWNoZWRQcmVzZW50YXRp
b25TaXplKTsKIH0KICAgICAKLWJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6aGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4oKSBjb25zdCAKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQzo6aGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4oY29uc3QgUGFnZVNj
aGVtZVJlZ2lzdHJ5JiBzY2hlbWVSZWdpc3RyeSkgY29uc3QKIHsKICAgICBpZiAoIW1fYXZBc3Nl
dCB8fCBbbV9hdkFzc2V0IHN0YXR1c09mVmFsdWVGb3JLZXk6QCJyZXNvbHZlZFVSTCIgZXJyb3I6
bnVsbHB0cl0gIT0gQVZLZXlWYWx1ZVN0YXR1c0xvYWRlZCkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIAotICAgIFJlZjxTZWN1cml0eU9yaWdpbj4gcmVzb2x2ZWRPcmlnaW4oU2VjdXJpdHlP
cmlnaW46OmNyZWF0ZShyZXNvbHZlZFVSTCgpKSk7Ci0gICAgUmVmPFNlY3VyaXR5T3JpZ2luPiBy
ZXF1ZXN0ZWRPcmlnaW4oU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoYXNzZXRVUkwo
KSkpOworICAgIFJlZjxTZWN1cml0eU9yaWdpbj4gcmVzb2x2ZWRPcmlnaW4oU2VjdXJpdHlPcmln
aW46OmNyZWF0ZShyZXNvbHZlZFVSTCgpLCBzY2hlbWVSZWdpc3RyeSkpOworICAgIFJlZjxTZWN1
cml0eU9yaWdpbj4gcmVxdWVzdGVkT3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3Ry
aW5nKGFzc2V0VVJMKCksIHNjaGVtZVJlZ2lzdHJ5KSk7CiAgICAgcmV0dXJuIHJlc29sdmVkT3Jp
Z2luLmdldCgpLmlzU2FtZVNjaGVtZUhvc3RQb3J0KCZyZXF1ZXN0ZWRPcmlnaW4uZ2V0KCkpOwog
fQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaAkocmV2aXNpb24gMjA4Mzk4KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNCw3
ICsxMzQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgYWNjZWxlcmF0ZWRSZW5kZXJpbmdTdGF0ZUNo
YW5nZWQoKSBvdmVycmlkZTsKICAgICBib29sIHN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5kZXJpbmco
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBib29sIGhhc1NpbmdsZVNl
Y3VyaXR5T3JpZ2luKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wg
aGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4oY29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5JikgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgTWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5
cGUgbW92aWVMb2FkVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIE1lZGlhUGxheWVyOjpM
aXZlU3RyZWFtOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5oCShyZXZpc2lv
biAyMDgzOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQ
bGF5ZXJQcml2YXRlUVRLaXQuaAkod29ya2luZyBjb3B5KQpAQCAtNjgsNyArNjgsNyBAQCBwcml2
YXRlOgogICAgIHN0YXRpYyB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBB
U0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiB0eXBlcyk7CiAgICAgc3RhdGljIE1lZGlhUGxheWVy
OjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFt
ZXRlcnMmKTsKIAotICAgIHN0YXRpYyBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IG9y
aWdpbnNJbk1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJik7CisgICAgc3RhdGljIEhhc2hTZXQ8UmVm
UHRyPFNlY3VyaXR5T3JpZ2luPj4gb3JpZ2luc0luTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmLCBj
b25zdCBQYWdlU2NoZW1lUmVnaXN0cnkmKTsKICAgICBzdGF0aWMgdm9pZCBjbGVhck1lZGlhQ2Fj
aGUoY29uc3QgU3RyaW5nJiwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBt
b2RpZmllZFNpbmNlKTsKICAgICBzdGF0aWMgdm9pZCBjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5z
KGNvbnN0IFN0cmluZyYsIGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4mKTsK
ICAgICBzdGF0aWMgYm9vbCBpc0F2YWlsYWJsZSgpOwpAQCAtMTM0LDcgKzEzNCw3IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBzdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBhY2NlbGVyYXRlZFJlbmRlcmluZ1N0YXRlQ2hhbmdlZCgpIG92ZXJyaWRl
OwogCi0gICAgYm9vbCBoYXNTaW5nbGVTZWN1cml0eU9yaWdpbigpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIGJvb2wgaGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4oY29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5
JikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgTWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5cGUgbW92aWVM
b2FkVHlwZSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgYm9vbCBjYW5TYXZlTWVkaWFEYXRhKCkg
Y29uc3Qgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCShyZXZp
c2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVk
aWFQbGF5ZXJQcml2YXRlUVRLaXQubW0JKHdvcmtpbmcgY29weSkKQEAgLTEzMzMsNyArMTMzMyw3
IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmlzQXZhaWxhYmwKICAgICByZXR1cm4g
UVRLaXRMaWJyYXJ5KCk7CiB9CiAKLUhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gTWVk
aWFQbGF5ZXJQcml2YXRlUVRLaXQ6Om9yaWdpbnNJbk1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJikK
K0hhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6
Om9yaWdpbnNJbk1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiwgY29uc3QgUGFnZVNjaGVtZVJlZ2lz
dHJ5JiBzY2hlbWVSZWdpc3RyeSkKIHsKICAgICBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdp
bj4+IG9yaWdpbnM7CiAgICAgTlNBcnJheSAqbWVkaWFTaXRlcyA9IHdrUVRHZXRTaXRlc0luTWVk
aWFEb3dubG9hZENhY2hlKCk7CkBAIC0xMzQxLDcgKzEzNDEsNyBAQCBIYXNoU2V0PFJlZlB0cjxT
ZWN1cml0eU9yaWdpbj4+IE1lZGlhUGxhCiAgICAgZm9yIChOU1N0cmluZyAqc2l0ZSBpbiBtZWRp
YVNpdGVzKSB7CiAgICAgICAgIFVSTCBzaXRlQXNVUkwgPSBVUkwoVVJMKCksIHNpdGUpOwogICAg
ICAgICBpZiAoc2l0ZUFzVVJMLmlzVmFsaWQoKSkKLSAgICAgICAgICAgIG9yaWdpbnMuYWRkKFNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGUoc2l0ZUFzVVJMKSk7CisgICAgICAgICAgICBvcmlnaW5zLmFk
ZChTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHNpdGVBc1VSTCwgc2NoZW1lUmVnaXN0cnkpKTsKICAg
ICB9CiAgICAgcmV0dXJuIG9yaWdpbnM7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAJKHJldmlzaW9uIDIwODM5
OCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTgyLDEzICs4MiwxMyBAQCB2b2lkIFJlbmRlclNuYXBzaG90
dGVkUGx1Z0luOjpsYXlvdXQoKQogICAgIHZpZXcoKS5mcmFtZVZpZXcoKS5hZGRFbWJlZGRlZE9i
amVjdFRvVXBkYXRlKCp0aGlzKTsKIH0KIAotdm9pZCBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6
dXBkYXRlU25hcHNob3QoUGFzc1JlZlB0cjxJbWFnZT4gaW1hZ2UpCit2b2lkIFJlbmRlclNuYXBz
aG90dGVkUGx1Z0luOjp1cGRhdGVTbmFwc2hvdChJbWFnZSogaW1hZ2UpCiB7CiAgICAgLy8gWmVy
by1zaXplIHBsdWdpbnMgd2lsbCBoYXZlIG5vIGltYWdlLgogICAgIGlmICghaW1hZ2UpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIG1fc25hcHNob3RSZXNvdXJjZS0+c2V0Q2FjaGVkSW1hZ2UobmV3
IENhY2hlZEltYWdlKGltYWdlLmdldCgpLCB2aWV3KCkuZnJhbWVWaWV3KCkuZnJhbWUoKS5wYWdl
KCktPnNlc3Npb25JRCgpKSk7CisgICAgbV9zbmFwc2hvdFJlc291cmNlLT5zZXRDYWNoZWRJbWFn
ZShuZXcgQ2FjaGVkSW1hZ2UoaW1hZ2UsIHZpZXcoKS5mcmFtZVZpZXcoKS5mcmFtZSgpLnBhZ2Uo
KS0+c2Vzc2lvbklEKCksIHZpZXcoKS5mcmFtZVZpZXcoKS5mcmFtZSgpLnNjaGVtZVJlZ2lzdHJ5
KCkpKTsKICAgICByZXBhaW50KCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5oCShyZXZpc2lvbiAyMDgzOTgpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uaAkod29y
a2luZyBjb3B5KQpAQCAtMjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKLSNpZm5kZWYgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW5faAotI2RlZmlu
ZSBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbl9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlJl
bmRlckVtYmVkZGVkT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVySW1hZ2VSZXNvdXJjZS5oIgpA
QCAtNDEsNyArNDAsNyBAQCBwdWJsaWM6CiAKICAgICBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50JiBw
bHVnSW5JbWFnZUVsZW1lbnQoKSBjb25zdDsKIAotICAgIHZvaWQgdXBkYXRlU25hcHNob3QoUGFz
c1JlZlB0cjxJbWFnZT4pOworICAgIHZvaWQgdXBkYXRlU25hcHNob3QoSW1hZ2UqKTsKIAogICAg
IHZvaWQgaGFuZGxlRXZlbnQoRXZlbnQqKTsKIApAQCAtNjYsNSArNjUsMyBAQCBwcml2YXRlOgog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1JFTkRFUl9P
QkpFQ1QoUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4sIGlzU25hcHNob3R0ZWRQbHVnSW4oKSkKLQot
I2VuZGlmIC8vIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlcGxheS9TZXJpYWxpemF0aW9uTWV0aG9kcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVwbGF5L1NlcmlhbGl6YXRpb25NZXRob2RzLmNwcAkocmV2aXNpb24gMjA4Mzk4KQor
KysgU291cmNlL1dlYkNvcmUvcmVwbGF5L1NlcmlhbGl6YXRpb25NZXRob2RzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkZyYW1lVHJlZS5oIgogI2luY2x1
ZGUgIk1haW5GcmFtZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQYWdlU2NoZW1l
UmVnaXN0cnkuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUtleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRl
ICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZlbnQuaCIK
QEAgLTUxOCw3ICs1MTksNyBAQCBFbmNvZGVkVmFsdWUgRW5jb2RpbmdUcmFpdHM8U2VjdXJpdHlP
cmlnCiAKIGJvb2wgRW5jb2RpbmdUcmFpdHM8U2VjdXJpdHlPcmlnaW4+OjpkZWNvZGVWYWx1ZShF
bmNvZGVkVmFsdWUmIGVuY29kZWRWYWx1ZSwgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiYgaW5wdXQp
CiB7Ci0gICAgaW5wdXQgPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhlbmNvZGVk
VmFsdWUuY29udmVydFRvPFN0cmluZz4oKSk7CisgICAgaW5wdXQgPSBTZWN1cml0eU9yaWdpbjo6
Y3JlYXRlRnJvbVN0cmluZyhlbmNvZGVkVmFsdWUuY29udmVydFRvPFN0cmluZz4oKSwgV2ViQ29y
ZTo6UGFnZVNjaGVtZVJlZ2lzdHJ5OjpjcmVhdGUoKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50LmNwcAkocmV2aXNpb24gMjA4Mzk4KQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcs
OCArMjcsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNWR0RvY3VtZW50OjpTVkdEb2N1
bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQotICAgIDogWE1MRG9jdW1lbnQoZnJh
bWUsIHVybCwgU1ZHRG9jdW1lbnRDbGFzcykKK1NWR0RvY3VtZW50OjpTVkdEb2N1bWVudChGcmFt
ZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnkmIHNjaGVt
ZVJlZ2lzdHJ5KQorICAgIDogWE1MRG9jdW1lbnQoZnJhbWUsIHVybCwgc2NoZW1lUmVnaXN0cnks
IFNWR0RvY3VtZW50Q2xhc3MpCiB7CiB9CiAKQEAgLTY2LDcgKzY2LDcgQEAgdm9pZCBTVkdEb2N1
bWVudDo6dXBkYXRlUGFuKGNvbnN0IEZsb2F0UAogCiBSZWY8RG9jdW1lbnQ+IFNWR0RvY3VtZW50
OjpjbG9uZURvY3VtZW50V2l0aG91dENoaWxkcmVuKCkgY29uc3QKIHsKLSAgICByZXR1cm4gY3Jl
YXRlKG51bGxwdHIsIHVybCgpKTsKKyAgICByZXR1cm4gY3JlYXRlKG51bGxwdHIsIHVybCgpLCBz
Y2hlbWVSZWdpc3RyeSgpKTsKIH0KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Rv
Y3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50LmgJ
KHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xOSw4ICsxOSw3IEBACiAgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KICAqLwogCi0jaWZuZGVmIFNWR0RvY3VtZW50X2gKLSNkZWZpbmUgU1ZHRG9jdW1lbnRf
aAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJYTUxEb2N1bWVudC5oIgogCkBAIC0zMCw3ICsy
OSwxMCBAQCBjbGFzcyBTVkdTVkdFbGVtZW50OwogCiBjbGFzcyBTVkdEb2N1bWVudCBmaW5hbCA6
IHB1YmxpYyBYTUxEb2N1bWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTVkdEb2N1bWVu
dD4gY3JlYXRlKEZyYW1lKiwgY29uc3QgVVJMJik7CisgICAgc3RhdGljIFJlZjxTVkdEb2N1bWVu
dD4gY3JlYXRlKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFBhZ2VTY2hlbWVS
ZWdpc3RyeSYgc2NoZW1lUmVnaXN0cnkpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTVkdEb2N1bWVudChmcmFtZSwgdXJsLCBzY2hlbWVSZWdpc3RyeSkpOworICAgIH0KIAog
ICAgIHN0YXRpYyBTVkdTVkdFbGVtZW50KiByb290RWxlbWVudChjb25zdCBEb2N1bWVudCYpOwog
CkBAIC0zOSwyMyArNDEsMTYgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlUGFuKGNvbnN0IEZs
b2F0UG9pbnQmIHBvc2l0aW9uKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBTVkdEb2N1bWVudChG
cmFtZSosIGNvbnN0IFVSTCYpOworICAgIFNWR0RvY3VtZW50KEZyYW1lKiwgY29uc3QgVVJMJiwg
Y29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5Jik7CiAKICAgICBSZWY8RG9jdW1lbnQ+IGNsb25lRG9j
dW1lbnRXaXRob3V0Q2hpbGRyZW4oKSBjb25zdCBvdmVycmlkZTsKIAogICAgIEZsb2F0U2l6ZSBt
X3Bhbm5pbmdPZmZzZXQ7CiB9OwogCi1pbmxpbmUgUmVmPFNWR0RvY3VtZW50PiBTVkdEb2N1bWVu
dDo6Y3JlYXRlKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCi17Ci0gICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU1ZHRG9jdW1lbnQoZnJhbWUsIHVybCkpOwotfQotCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6U1ZHRG9j
dW1lbnQpCiAgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkRvY3VtZW50JiBk
b2N1bWVudCkgeyByZXR1cm4gZG9jdW1lbnQuaXNTVkdEb2N1bWVudCgpOyB9CiAgICAgc3RhdGlj
IGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUpIHsgcmV0dXJuIGlzPFdlYkNv
cmU6OkRvY3VtZW50Pihub2RlKSAmJiBpc1R5cGUoZG93bmNhc3Q8V2ViQ29yZTo6RG9jdW1lbnQ+
KG5vZGUpKTsgfQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQotCi0jZW5kaWYgLy8gU1ZH
RG9jdW1lbnRfaApJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9BYnN0cmFjdFdvcmtlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9BYnN0cmFjdFdvcmtlci5j
cHAJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvQWJzdHJhY3RX
b3JrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBAIEV4Y2VwdGlvbk9yPFVS
TD4gQWJzdHJhY3RXb3JrZXI6OnJlc29sdmUKICAgICBpZiAoIXNjcmlwdFVSTC5pc1ZhbGlkKCkp
CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTWU5UQVhfRVJSIH07CiAKLSAgICBpZiAoIWNv
bnRleHQuc2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdChzY3JpcHRVUkwpKQorICAgIGlmICgh
Y29udGV4dC5zZWN1cml0eU9yaWdpbigpLT5jYW5SZXF1ZXN0KHNjcmlwdFVSTCwgY29udGV4dC5z
Y2hlbWVSZWdpc3RyeSgpKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNFQ1VSSVRZX0VS
UiB9OwogCiAgICAgQVNTRVJUKGNvbnRleHQuY29udGVudFNlY3VyaXR5UG9saWN5KCkpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9i
YWxTY29wZS5jcHAJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSwxNiAr
NDEsMTYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8RGVkaWNhdGVkV29ya2VyR2xv
YmFsU2NvcGU+IERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOjpjcmVhdGUoY29uc3QgVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQmIHRocmVh
ZCwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiBjb250ZW50U2Vj
dXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMsIGJvb2wgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29u
dGVudFNlY3VyaXR5UG9saWN5LCBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBJ
REJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSogY29ubmVjdGlvblByb3h5LCBTb2NrZXRQcm92
aWRlciogc29ja2V0UHJvdmlkZXIpCitSZWY8RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU+IERl
ZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgdXNlckFnZW50LCBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQmIHRocmVhZCwgY29uc3QgQ29u
dGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiBjb250ZW50U2VjdXJpdHlQb2xpY3lS
ZXNwb25zZUhlYWRlcnMsIGJvb2wgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5
UG9saWN5LCBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBJREJDbGllbnQ6OklE
QkNvbm5lY3Rpb25Qcm94eSogY29ubmVjdGlvblByb3h5LCBTb2NrZXRQcm92aWRlciogc29ja2V0
UHJvdmlkZXIsIFJlZjxjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnk+JiYgc2NoZW1lUmVnaXN0cnkp
CiB7Ci0gICAgYXV0byBjb250ZXh0ID0gYWRvcHRSZWYoKm5ldyBEZWRpY2F0ZWRXb3JrZXJHbG9i
YWxTY29wZSh1cmwsIHVzZXJBZ2VudCwgdGhyZWFkLCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250
ZW50U2VjdXJpdHlQb2xpY3ksIFdURk1vdmUodG9wT3JpZ2luKSwgY29ubmVjdGlvblByb3h5LCBz
b2NrZXRQcm92aWRlcikpOworICAgIGF1dG8gY29udGV4dCA9IGFkb3B0UmVmKCpuZXcgRGVkaWNh
dGVkV29ya2VyR2xvYmFsU2NvcGUodXJsLCB1c2VyQWdlbnQsIHRocmVhZCwgc2hvdWxkQnlwYXNz
TWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBXVEZNb3ZlKHRvcE9yaWdpbiksIGNvbm5l
Y3Rpb25Qcm94eSwgc29ja2V0UHJvdmlkZXIsIFdURk1vdmUoc2NoZW1lUmVnaXN0cnkpKSk7CiAg
ICAgaWYgKCFzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3kpCiAgICAg
ICAgIGNvbnRleHQtPmFwcGx5Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzKGNv
bnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyk7CiAgICAgcmV0dXJuIGNvbnRleHQ7
CiB9CiAKLURlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOjpEZWRpY2F0ZWRXb3JrZXJHbG9iYWxT
Y29wZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIERlZGljYXRlZFdv
cmtlclRocmVhZCYgdGhyZWFkLCBib29sIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1
cml0eVBvbGljeSwgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbiwgSURCQ2xpZW50
OjpJREJDb25uZWN0aW9uUHJveHkqIGNvbm5lY3Rpb25Qcm94eSwgU29ja2V0UHJvdmlkZXIqIHNv
Y2tldFByb3ZpZGVyKQotICAgIDogV29ya2VyR2xvYmFsU2NvcGUodXJsLCB1c2VyQWdlbnQsIHRo
cmVhZCwgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBXVEZNb3Zl
KHRvcE9yaWdpbiksIGNvbm5lY3Rpb25Qcm94eSwgc29ja2V0UHJvdmlkZXIpCitEZWRpY2F0ZWRX
b3JrZXJHbG9iYWxTY29wZTo6RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQmIHRocmVh
ZCwgYm9vbCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIFJlZlB0
cjxTZWN1cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblBy
b3h5KiBjb25uZWN0aW9uUHJveHksIFNvY2tldFByb3ZpZGVyKiBzb2NrZXRQcm92aWRlciwgUmVm
PGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3RyeT4mJiBzY2hlbWVSZWdpc3RyeSkKKyAgICA6IFdvcmtl
ckdsb2JhbFNjb3BlKHVybCwgdXNlckFnZW50LCB0aHJlYWQsIHNob3VsZEJ5cGFzc01haW5Xb3Js
ZENvbnRlbnRTZWN1cml0eVBvbGljeSwgV1RGTW92ZSh0b3BPcmlnaW4pLCBjb25uZWN0aW9uUHJv
eHksIHNvY2tldFByb3ZpZGVyLCBXVEZNb3ZlKHNjaGVtZVJlZ2lzdHJ5KSkKIHsKIH0KIApJbmRl
eDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFs
U2NvcGUuaAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRp
Y2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBA
IGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKIAogY2xhc3MgRGVkaWNhdGVkV29ya2VyR2xv
YmFsU2NvcGUgZmluYWwgOiBwdWJsaWMgV29ya2VyR2xvYmFsU2NvcGUgewogcHVibGljOgotICAg
IHN0YXRpYyBSZWY8RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU+IGNyZWF0ZShjb25zdCBVUkwm
LCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgRGVkaWNhdGVkV29ya2VyVGhyZWFkJiwgY29uc3Qg
Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgYm9vbCBzaG91bGRCeXBhc3NN
YWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4mJiB0
b3BPcmlnaW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiwgU29ja2V0UHJvdmlkZXIq
KTsKKyAgICBzdGF0aWMgUmVmPERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlPiBjcmVhdGUoY29u
c3QgVVJMJiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIERlZGljYXRlZFdvcmtlclRocmVhZCYs
IGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYsIGJvb2wgc2hvdWxk
QnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBSZWZQdHI8U2VjdXJpdHlPcmln
aW4+JiYgdG9wT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSosIFNvY2tldFBy
b3ZpZGVyKiwgUmVmPGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3RyeT4mJik7CiAgICAgdmlydHVhbCB+
RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUoKTsKIAogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHBv
c3RNZXNzYWdlKFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYsIFZlY3RvcjxSZWZQdHI8
TWVzc2FnZVBvcnQ+PiYmKTsKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICB1c2luZyBCYXNlID0gV29ya2VyR2xvYmFsU2NvcGU7CiAKLSAgICBEZWRpY2F0ZWRXb3JrZXJH
bG9iYWxTY29wZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgRGVkaWNhdGVk
V29ya2VyVGhyZWFkJiwgYm9vbCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQ
b2xpY3ksIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4sIElEQkNsaWVudDo6SURC
Q29ubmVjdGlvblByb3h5KiwgU29ja2V0UHJvdmlkZXIqKTsKKyAgICBEZWRpY2F0ZWRXb3JrZXJH
bG9iYWxTY29wZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgRGVkaWNhdGVk
V29ya2VyVGhyZWFkJiwgYm9vbCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQ
b2xpY3ksIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4sIElEQkNsaWVudDo6SURC
Q29ubmVjdGlvblByb3h5KiwgU29ja2V0UHJvdmlkZXIqLCBSZWY8Y29uc3QgUGFnZVNjaGVtZVJl
Z2lzdHJ5PiYmKTsKIAogICAgIGJvb2wgaXNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICBFeGNlcHRpb25Pcjx2b2lkPiBpbXBvcnRT
Y3JpcHRzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB1cmxzKSBmaW5hbDsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyVGhyZWFkLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlclRocmVhZC5jcHAJKHJldmlzaW9u
IDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyVGhyZWFk
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTMgKzMzLDE0IEBACiAjaW5jbHVkZSAiRGVkaWNh
dGVkV29ya2VyVGhyZWFkLmgiCiAKICNpbmNsdWRlICJEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29w
ZS5oIgorI2luY2x1ZGUgIlBhZ2VTY2hlbWVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5
T3JpZ2luLmgiCiAjaW5jbHVkZSAiV29ya2VyT2JqZWN0UHJveHkuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1EZWRpY2F0ZWRXb3JrZXJUaHJlYWQ6OkRlZGljYXRlZFdvcmtlclRocmVhZChj
b25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IFN0cmluZyYgc291
cmNlQ29kZSwgV29ya2VyTG9hZGVyUHJveHkmIHdvcmtlckxvYWRlclByb3h5LCBXb3JrZXJPYmpl
Y3RQcm94eSYgd29ya2VyT2JqZWN0UHJveHksIFdvcmtlclRocmVhZFN0YXJ0TW9kZSBzdGFydE1v
ZGUsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYgY29udGVudFNl
Y3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLCBib29sIHNob3VsZEJ5cGFzc01haW5Xb3JsZENv
bnRlbnRTZWN1cml0eVBvbGljeSwgY29uc3QgU2VjdXJpdHlPcmlnaW4qIHRvcE9yaWdpbiwgSURC
Q2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqIGNvbm5lY3Rpb25Qcm94eSwgU29ja2V0UHJvdmlk
ZXIqIHNvY2tldFByb3ZpZGVyLCBKU0M6OlJ1bnRpbWVGbGFncyBydW50aW1lRmxhZ3MpCi0gICAg
OiBXb3JrZXJUaHJlYWQodXJsLCB1c2VyQWdlbnQsIHNvdXJjZUNvZGUsIHdvcmtlckxvYWRlclBy
b3h5LCB3b3JrZXJPYmplY3RQcm94eSwgc3RhcnRNb2RlLCBjb250ZW50U2VjdXJpdHlQb2xpY3lS
ZXNwb25zZUhlYWRlcnMsIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGlj
eSwgdG9wT3JpZ2luLCBjb25uZWN0aW9uUHJveHksIHNvY2tldFByb3ZpZGVyLCBydW50aW1lRmxh
Z3MpCitEZWRpY2F0ZWRXb3JrZXJUaHJlYWQ6OkRlZGljYXRlZFdvcmtlclRocmVhZChjb25zdCBV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IFN0cmluZyYgc291cmNlQ29k
ZSwgV29ya2VyTG9hZGVyUHJveHkmIHdvcmtlckxvYWRlclByb3h5LCBXb3JrZXJPYmplY3RQcm94
eSYgd29ya2VyT2JqZWN0UHJveHksIFdvcmtlclRocmVhZFN0YXJ0TW9kZSBzdGFydE1vZGUsIGNv
bnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYgY29udGVudFNlY3VyaXR5
UG9saWN5UmVzcG9uc2VIZWFkZXJzLCBib29sIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRT
ZWN1cml0eVBvbGljeSwgY29uc3QgU2VjdXJpdHlPcmlnaW4qIHRvcE9yaWdpbiwgSURCQ2xpZW50
OjpJREJDb25uZWN0aW9uUHJveHkqIGNvbm5lY3Rpb25Qcm94eSwgU29ja2V0UHJvdmlkZXIqIHNv
Y2tldFByb3ZpZGVyLCBSZWY8Y29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5PiYmIHNjaGVtZVJlZ2lz
dHJ5LCBKU0M6OlJ1bnRpbWVGbGFncyBydW50aW1lRmxhZ3MpCisgICAgOiBXb3JrZXJUaHJlYWQo
dXJsLCB1c2VyQWdlbnQsIHNvdXJjZUNvZGUsIHdvcmtlckxvYWRlclByb3h5LCB3b3JrZXJPYmpl
Y3RQcm94eSwgc3RhcnRNb2RlLCBjb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMs
IHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgdG9wT3JpZ2luLCBj
b25uZWN0aW9uUHJveHksIHNvY2tldFByb3ZpZGVyLCBXVEZNb3ZlKHNjaGVtZVJlZ2lzdHJ5KSwg
cnVudGltZUZsYWdzKQogICAgICwgbV93b3JrZXJPYmplY3RQcm94eSh3b3JrZXJPYmplY3RQcm94
eSkKIHsKIH0KQEAgLTQ4LDkgKzQ5LDkgQEAgRGVkaWNhdGVkV29ya2VyVGhyZWFkOjp+RGVkaWNh
dGVkV29ya2VyVAogewogfQogCi1SZWY8V29ya2VyR2xvYmFsU2NvcGU+IERlZGljYXRlZFdvcmtl
clRocmVhZDo6Y3JlYXRlV29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgdXNlckFnZW50LCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRl
cnMmIGNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycywgYm9vbCBzaG91bGRCeXBh
c3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmln
aW4+IHRvcE9yaWdpbikKK1JlZjxXb3JrZXJHbG9iYWxTY29wZT4gRGVkaWNhdGVkV29ya2VyVGhy
ZWFkOjpjcmVhdGVXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiB1c2VyQWdlbnQsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYg
Y29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLCBib29sIHNob3VsZEJ5cGFzc01h
aW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiYmIHRv
cE9yaWdpbikKIHsKLSAgICByZXR1cm4gRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU6OmNyZWF0
ZSh1cmwsIHVzZXJBZ2VudCwgKnRoaXMsIGNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVh
ZGVycywgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCB0b3BPcmln
aW4sIGlkYkNvbm5lY3Rpb25Qcm94eSgpLCBzb2NrZXRQcm92aWRlcigpKTsKKyAgICByZXR1cm4g
RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU6OmNyZWF0ZSh1cmwsIHVzZXJBZ2VudCwgKnRoaXMs
IGNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycywgc2hvdWxkQnlwYXNzTWFpbldv
cmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBXVEZNb3ZlKHRvcE9yaWdpbiksIGlkYkNvbm5lY3Rp
b25Qcm94eSgpLCBzb2NrZXRQcm92aWRlcigpLCBtYWtlUmVmKHNjaGVtZVJlZ2lzdHJ5KCkpKTsK
IH0KIAogdm9pZCBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQ6OnJ1bkV2ZW50TG9vcCgpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlclRocmVhZC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyVGhyZWFkLmgJKHJldmlz
aW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyVGhy
ZWFkLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDExICs0OSwxMSBAQCBwdWJsaWM6CiAgICAgV29y
a2VyT2JqZWN0UHJveHkmIHdvcmtlck9iamVjdFByb3h5KCkgY29uc3QgeyByZXR1cm4gbV93b3Jr
ZXJPYmplY3RQcm94eTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgUmVmPFdvcmtlckdsb2JhbFNjb3Bl
PiBjcmVhdGVXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHVzZXJB
Z2VudCwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgYm9vbCBz
aG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIFBhc3NSZWZQdHI8U2Vj
dXJpdHlPcmlnaW4+IHRvcE9yaWdpbikgb3ZlcnJpZGU7CisgICAgUmVmPFdvcmtlckdsb2JhbFNj
b3BlPiBjcmVhdGVXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHVz
ZXJBZ2VudCwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgYm9v
bCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIFJlZlB0cjxTZWN1
cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4pIG92ZXJyaWRlOwogICAgIHZvaWQgcnVuRXZlbnRMb29w
KCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgRGVkaWNhdGVkV29ya2VyVGhyZWFkKGNvbnN0
IFVSTCYsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUs
IFdvcmtlckxvYWRlclByb3h5JiwgV29ya2VyT2JqZWN0UHJveHkmLCBXb3JrZXJUaHJlYWRTdGFy
dE1vZGUsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYsIGJvb2wg
c2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBjb25zdCBTZWN1cml0
eU9yaWdpbiogdG9wT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSosIFNvY2tl
dFByb3ZpZGVyKiwgSlNDOjpSdW50aW1lRmxhZ3MpOworICAgIERlZGljYXRlZFdvcmtlclRocmVh
ZChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94eSYsIFdvcmtlck9iamVjdFByb3h5JiwgV29ya2VyVGhy
ZWFkU3RhcnRNb2RlLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMm
LCBib29sIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgY29uc3Qg
U2VjdXJpdHlPcmlnaW4qIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkq
LCBTb2NrZXRQcm92aWRlciosIFJlZjxjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnk+JiYsIEpTQzo6
UnVudGltZUZsYWdzKTsKIAogICAgIFdvcmtlck9iamVjdFByb3h5JiBtX3dvcmtlck9iamVjdFBy
b3h5OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAJKHJldmlzaW9uIDIwODM5
OCkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJOZXR3b3JrU3RhdGVOb3RpZmll
ci5oIgorI2luY2x1ZGUgIlBhZ2VTY2hlbWVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlJlc291cmNl
UmVzcG9uc2UuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIldvcmtl
ckdsb2JhbFNjb3BlUHJveHkuaCIKQEAgLTU1LDYgKzU2LDcgQEAgaW5saW5lIFdvcmtlcjo6V29y
a2VyKFNjcmlwdEV4ZWN1dGlvbkNvbgogICAgIDogQWN0aXZlRE9NT2JqZWN0KCZjb250ZXh0KQog
ICAgICwgbV9jb250ZXh0UHJveHkoV29ya2VyR2xvYmFsU2NvcGVQcm94eTo6Y3JlYXRlKHRoaXMp
KQogICAgICwgbV9ydW50aW1lRmxhZ3MocnVudGltZUZsYWdzKQorICAgICwgbV9zY2hlbWVSZWdp
c3RyeShjb250ZXh0LnNjaGVtZVJlZ2lzdHJ5KCkpCiB7CiAgICAgaWYgKCFhbGxXb3JrZXJzKSB7
CiAgICAgICAgIGFsbFdvcmtlcnMgPSBuZXcgSGFzaFNldDxXb3JrZXIqPjsKQEAgLTE0NCw3ICsx
NDYsNyBAQCB2b2lkIFdvcmtlcjo6bm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdlKGJvCiB2b2lkIFdv
cmtlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgY29uc3QgVVJMJiByZXNwb25zZVVS
TCA9IHJlc3BvbnNlLnVybCgpOwotICAgIGlmICghcmVzcG9uc2VVUkwucHJvdG9jb2xJc0Jsb2Io
KSAmJiAhcmVzcG9uc2VVUkwucHJvdG9jb2xJcygiZmlsZSIpICYmICFTZWN1cml0eU9yaWdpbjo6
Y3JlYXRlKHJlc3BvbnNlVVJMKS0+aXNVbmlxdWUoKSkKKyAgICBpZiAoIXJlc3BvbnNlVVJMLnBy
b3RvY29sSXNCbG9iKCkgJiYgIXJlc3BvbnNlVVJMLnByb3RvY29sSXMoImZpbGUiKSAmJiAhU2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZShyZXNwb25zZVVSTCwgbV9zY2hlbWVSZWdpc3RyeS5nZXQoKSkt
PmlzVW5pcXVlKCkpCiAgICAgICAgIG1fY29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFk
ZXJzID0gQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzKHJlc3BvbnNlKTsKICAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVTY3JpcHRSZXNwb25zZShzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCksIGlkZW50aWZpZXIpOwogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlci5oCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorY2xhc3MgUGFnZVNjaGVtZVJlZ2lzdHJ5OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDsKIGNsYXNzIFdvcmtlckdsb2JhbFNjb3BlUHJveHk7CiBjbGFzcyBXb3JrZXJTY3Jp
cHRMb2FkZXI7CkBAIC03NSw2ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgT3B0aW9uYWw8Q29udGVu
dFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzPiBtX2NvbnRlbnRTZWN1cml0eVBvbGljeVJl
c3BvbnNlSGVhZGVyczsKICAgICBib29sIG1fc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNl
Y3VyaXR5UG9saWN5IHsgZmFsc2UgfTsKICAgICBKU0M6OlJ1bnRpbWVGbGFncyBtX3J1bnRpbWVG
bGFnczsKKyAgICBSZWY8Y29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5PiBtX3NjaGVtZVJlZ2lzdHJ5
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIklE
QkNvbm5lY3Rpb25Qcm94eS5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5o
IgorI2luY2x1ZGUgIlBhZ2VTY2hlbWVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlNjaGVkdWxlZEFj
dGlvbi5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKICNpbmNsdWRlICJTZWN1cml0
eU9yaWdpbi5oIgpAQCAtNTIsNyArNTMsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVdvcmtlckdsb2JhbFNjb3BlOjpXb3JrZXJHbG9iYWxT
Y29wZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFdvcmtlclRocmVh
ZCYgdGhyZWFkLCBib29sIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGlj
eSwgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25u
ZWN0aW9uUHJveHkqIGNvbm5lY3Rpb25Qcm94eSwgU29ja2V0UHJvdmlkZXIqIHNvY2tldFByb3Zp
ZGVyKQorV29ya2VyR2xvYmFsU2NvcGU6Oldvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgV29ya2VyVGhyZWFkJiB0aHJlYWQsIGJvb2wgc2hv
dWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBSZWZQdHI8U2VjdXJpdHlP
cmlnaW4+JiYgdG9wT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSogY29ubmVj
dGlvblByb3h5LCBTb2NrZXRQcm92aWRlciogc29ja2V0UHJvdmlkZXIsIFJlZjxjb25zdCBQYWdl
U2NoZW1lUmVnaXN0cnk+JiYgc2NoZW1lUmVnaXN0cnkpCiAgICAgOiBtX3VybCh1cmwpCiAgICAg
LCBtX3VzZXJBZ2VudCh1c2VyQWdlbnQpCiAgICAgLCBtX3RocmVhZCh0aHJlYWQpCkBAIC02Nyw2
ICs2OCw3IEBAIFdvcmtlckdsb2JhbFNjb3BlOjpXb3JrZXJHbG9iYWxTY29wZShjb24KICNpZiBF
TkFCTEUoV0VCX1NPQ0tFVFMpCiAgICAgLCBtX3NvY2tldFByb3ZpZGVyKHNvY2tldFByb3ZpZGVy
KQogI2VuZGlmCisgICAgLCBtX3NjaGVtZVJlZ2lzdHJ5KFdURk1vdmUoc2NoZW1lUmVnaXN0cnkp
KQogewogI2lmICFFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICBVTlVTRURfUEFSQU0oY29u
bmVjdGlvblByb3h5KTsKQEAgLTc1LDcgKzc3LDcgQEAgV29ya2VyR2xvYmFsU2NvcGU6Oldvcmtl
ckdsb2JhbFNjb3BlKGNvbgogICAgIFVOVVNFRF9QQVJBTShzb2NrZXRQcm92aWRlcik7CiAjZW5k
aWYKIAotICAgIGF1dG8gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh1cmwpOworICAg
IGF1dG8gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh1cmwsIG1fc2NoZW1lUmVnaXN0
cnkuZ2V0KCkpOwogICAgIGlmIChtX3RvcE9yaWdpbi0+aGFzVW5pdmVyc2FsQWNjZXNzKCkpCiAg
ICAgICAgIG9yaWdpbi0+Z3JhbnRVbml2ZXJzYWxBY2Nlc3MoKTsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaAkocmV2aXNpb24gMjA4Mzk4KQorKysg
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDAsNyArMTAwLDcgQEAgcHVibGljOgogICAgIENyeXB0byYgY3J5cHRvKCk7CiAKIHBy
b3RlY3RlZDoKLSAgICBXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcm
IHVzZXJBZ2VudCwgV29ya2VyVGhyZWFkJiwgYm9vbCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250
ZW50U2VjdXJpdHlQb2xpY3ksIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4sIElE
QkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiwgU29ja2V0UHJvdmlkZXIqKTsKKyAgICBXb3Jr
ZXJHbG9iYWxTY29wZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgV29ya2Vy
VGhyZWFkJiwgYm9vbCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ks
IFJlZlB0cjxTZWN1cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4sIElEQkNsaWVudDo6SURCQ29ubmVj
dGlvblByb3h5KiwgU29ja2V0UHJvdmlkZXIqLCBSZWY8Y29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5
PiYmKTsKIAogICAgIHZvaWQgYXBwbHlDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRl
cnMoY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJik7CiAKQEAgLTEy
Nyw2ICsxMjcsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShXRUJfU09DS0VUUykKICAgICBTb2Nr
ZXRQcm92aWRlciogc29ja2V0UHJvdmlkZXIoKSBmaW5hbDsKICNlbmRpZgorICAgIGNvbnN0IFBh
Z2VTY2hlbWVSZWdpc3RyeSYgc2NoZW1lUmVnaXN0cnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X3NjaGVtZVJlZ2lzdHJ5LmdldCgpOyB9CiAKICAgICBib29sIHNob3VsZEJ5cGFzc01haW5Xb3Js
ZENvbnRlbnRTZWN1cml0eVBvbGljeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2hvdWxkQnlw
YXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5OyB9CiAgICAgYm9vbCBpc0pTRXhlY3V0
aW9uRm9yYmlkZGVuKCkgY29uc3QgZmluYWw7CkBAIC0xNjgsNiArMTY5LDcgQEAgcHJpdmF0ZToK
ICNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCiAgICAgUmVmUHRyPFNvY2tldFByb3ZpZGVyPiBtX3Nv
Y2tldFByb3ZpZGVyOwogI2VuZGlmCisgICAgUmVmPGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3RyeT4g
bV9zY2hlbWVSZWdpc3RyeTsKIAogICAgIG11dGFibGUgUmVmUHRyPENyeXB0bz4gbV9jcnlwdG87
CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJMb2NhdGlvbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJMb2NhdGlvbi5jcHAJKHJl
dmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTG9jYXRpb24u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiV29ya2VyTG9jYXRpb24uaCIKIAorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCkBAIC03MSw5ICs3Miw5IEBAIFN0cmluZyBXb3JrZXJMb2NhdGlv
bjo6aGFzaCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fdXJsLmZyYWdtZW50SWRlbnRpZmllcigpLmlz
RW1wdHkoKSA/IGVtcHR5U3RyaW5nKCkgOiAiIyIgKyBtX3VybC5mcmFnbWVudElkZW50aWZpZXIo
KTsKIH0KIAotU3RyaW5nIFdvcmtlckxvY2F0aW9uOjpvcmlnaW4oKSBjb25zdAorU3RyaW5nIFdv
cmtlckxvY2F0aW9uOjpvcmlnaW4oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgY29u
c3QKIHsKLSAgICByZXR1cm4gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShtX3VybCktPnRvU3RyaW5n
KCk7CisgICAgcmV0dXJuIFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUobV91cmwsIGNvbnRleHQuc2No
ZW1lUmVnaXN0cnkoKSktPnRvU3RyaW5nKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTG9jYXRpb24uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckxvY2F0aW9uLmgJKHJldmlzaW9uIDIw
ODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTG9jYXRpb24uaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzEsMzEgKzMxLDM0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAg
IGNsYXNzIFdvcmtlckxvY2F0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8V29ya2VyTG9jYXRpb24+
IHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBSZWY8V29ya2VyTG9jYXRpb24+IGNyZWF0
ZShjb25zdCBVUkwmIHVybCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgV29ya2VyTG9jYXRpb24odXJsKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBjb25zdCBV
UkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9Ci0KLSAgICAgICAgU3RyaW5nIGhyZWYo
KSBjb25zdDsKLQotICAgICAgICAvLyBVUkkgZGVjb21wb3NpdGlvbiBhdHRyaWJ1dGVzCi0gICAg
ICAgIFN0cmluZyBwcm90b2NvbCgpIGNvbnN0OwotICAgICAgICBTdHJpbmcgaG9zdCgpIGNvbnN0
OwotICAgICAgICBTdHJpbmcgaG9zdG5hbWUoKSBjb25zdDsKLSAgICAgICAgU3RyaW5nIHBvcnQo
KSBjb25zdDsKLSAgICAgICAgU3RyaW5nIHBhdGhuYW1lKCkgY29uc3Q7Ci0gICAgICAgIFN0cmlu
ZyBzZWFyY2goKSBjb25zdDsKLSAgICAgICAgU3RyaW5nIGhhc2goKSBjb25zdDsKLSAgICAgICAg
U3RyaW5nIG9yaWdpbigpIGNvbnN0OworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAot
ICAgIHByaXZhdGU6Ci0gICAgICAgIGV4cGxpY2l0IFdvcmtlckxvY2F0aW9uKGNvbnN0IFVSTCYg
dXJsKSA6IG1fdXJsKHVybCkgeyB9CitjbGFzcyBXb3JrZXJMb2NhdGlvbiA6IHB1YmxpYyBSZWZD
b3VudGVkPFdvcmtlckxvY2F0aW9uPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxXb3JrZXJM
b2NhdGlvbj4gY3JlYXRlKGNvbnN0IFVSTCYgdXJsKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgV29ya2VyTG9jYXRpb24odXJsKSk7CisgICAgfQorCisgICAgY29uc3QgVVJM
JiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQorCisgICAgU3RyaW5nIGhyZWYoKSBjb25z
dDsKKworICAgIC8vIFVSSSBkZWNvbXBvc2l0aW9uIGF0dHJpYnV0ZXMKKyAgICBTdHJpbmcgcHJv
dG9jb2woKSBjb25zdDsKKyAgICBTdHJpbmcgaG9zdCgpIGNvbnN0OworICAgIFN0cmluZyBob3N0
bmFtZSgpIGNvbnN0OworICAgIFN0cmluZyBwb3J0KCkgY29uc3Q7CisgICAgU3RyaW5nIHBhdGhu
YW1lKCkgY29uc3Q7CisgICAgU3RyaW5nIHNlYXJjaCgpIGNvbnN0OworICAgIFN0cmluZyBoYXNo
KCkgY29uc3Q7CisgICAgU3RyaW5nIG9yaWdpbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgY29u
c3Q7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgV29ya2VyTG9jYXRpb24oY29uc3QgVVJMJiB1
cmwpCisgICAgICAgIDogbV91cmwodXJsKSB7IH0KIAotICAgICAgICBVUkwgbV91cmw7Ci0gICAg
fTsKKyAgICBVUkwgbV91cmw7Cit9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckxvY2F0aW9uLmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckxvY2F0aW9uLmlkbAkocmV2aXNpb24gMjA4Mzk4
KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJMb2NhdGlvbi5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTM5LDYgKzM5LDYgQEAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgVVNWU3RyaW5n
IHBhdGhuYW1lOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBVU1ZTdHJpbmcgc2VhcmNoOwogICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBVU1ZTdHJpbmcgaGFzaDsKLSAgICByZWFkb25seSBhdHRyaWJ1
dGUgVVNWU3RyaW5nIG9yaWdpbjsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4
dF0gcmVhZG9ubHkgYXR0cmlidXRlIFVTVlN0cmluZyBvcmlnaW47CiB9OwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAkocmV2aXNp
b24gMjA4Mzk4KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94
eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJFeGNlcHRp
b25Db2RlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCiAjaW5jbHVkZSAiUGFnZUdyb3Vw
LmgiCisjaW5jbHVkZSAiUGFnZVNjaGVtZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIldvcmtlci5oIgogI2luY2x1ZGUgIldvcmtlcklu
c3BlY3RvclByb3h5LmgiCkBAIC05Myw3ICs5NCw3IEBAIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJv
eHk6OnN0YXJ0V29ya2VyR2wKICAgICBTb2NrZXRQcm92aWRlciogc29ja2V0UHJvdmlkZXIgPSBu
dWxscHRyOwogI2VuZGlmCiAKLSAgICBSZWZQdHI8RGVkaWNhdGVkV29ya2VyVGhyZWFkPiB0aHJl
YWQgPSBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQ6OmNyZWF0ZShzY3JpcHRVUkwsIHVzZXJBZ2VudCwg
c291cmNlQ29kZSwgKnRoaXMsICp0aGlzLCBzdGFydE1vZGUsIGNvbnRlbnRTZWN1cml0eVBvbGlj
eVJlc3BvbnNlSGVhZGVycywgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9s
aWN5LCBkb2N1bWVudC50b3BPcmlnaW4oKSwgcHJveHksIHNvY2tldFByb3ZpZGVyLCBydW50aW1l
RmxhZ3MpOworICAgIFJlZlB0cjxEZWRpY2F0ZWRXb3JrZXJUaHJlYWQ+IHRocmVhZCA9IERlZGlj
YXRlZFdvcmtlclRocmVhZDo6Y3JlYXRlKHNjcmlwdFVSTCwgdXNlckFnZW50LCBzb3VyY2VDb2Rl
LCAqdGhpcywgKnRoaXMsIHN0YXJ0TW9kZSwgY29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VI
ZWFkZXJzLCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIGRvY3Vt
ZW50LnRvcE9yaWdpbigpLCBwcm94eSwgc29ja2V0UHJvdmlkZXIsIGRvY3VtZW50LnNjaGVtZVJl
Z2lzdHJ5KCksIHJ1bnRpbWVGbGFncyk7CiAKICAgICB3b3JrZXJUaHJlYWRDcmVhdGVkKHRocmVh
ZCk7CiAgICAgdGhyZWFkLT5zdGFydCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJUaHJlYWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyVGhyZWFkLmNwcAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJUaHJlYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAKICNp
bmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuaCIKICNpbmNsdWRl
ICJJREJDb25uZWN0aW9uUHJveHkuaCIKKyNpbmNsdWRlICJQYWdlU2NoZW1lUmVnaXN0cnkuaCIK
ICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4u
aCIKICNpbmNsdWRlICJTb2NrZXRQcm92aWRlci5oIgpAQCAtOTQsNyArOTUsNyBAQCBXb3JrZXJU
aHJlYWRTdGFydHVwRGF0YTo6V29ya2VyVGhyZWFkU3RhCiB7CiB9CiAKLVdvcmtlclRocmVhZDo6
V29ya2VyVGhyZWFkKGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2Vu
dCwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94eSYgd29ya2VyTG9h
ZGVyUHJveHksIFdvcmtlclJlcG9ydGluZ1Byb3h5JiB3b3JrZXJSZXBvcnRpbmdQcm94eSwgV29y
a2VyVGhyZWFkU3RhcnRNb2RlIHN0YXJ0TW9kZSwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5
UmVzcG9uc2VIZWFkZXJzJiBjb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMsIGJv
b2wgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBjb25zdCBTZWN1
cml0eU9yaWdpbiogdG9wT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSogY29u
bmVjdGlvblByb3h5LCBTb2NrZXRQcm92aWRlciogc29ja2V0UHJvdmlkZXIsIEpTQzo6UnVudGlt
ZUZsYWdzIHJ1bnRpbWVGbGFncykKK1dvcmtlclRocmVhZDo6V29ya2VyVGhyZWFkKGNvbnN0IFVS
TCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94eSYgd29ya2VyTG9hZGVyUHJveHksIFdvcmtlclJlcG9y
dGluZ1Byb3h5JiB3b3JrZXJSZXBvcnRpbmdQcm94eSwgV29ya2VyVGhyZWFkU3RhcnRNb2RlIHN0
YXJ0TW9kZSwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiBjb250
ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMsIGJvb2wgc2hvdWxkQnlwYXNzTWFpbldv
cmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBjb25zdCBTZWN1cml0eU9yaWdpbiogdG9wT3JpZ2lu
LCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSogY29ubmVjdGlvblByb3h5LCBTb2NrZXRQ
cm92aWRlciogc29ja2V0UHJvdmlkZXIsIFJlZjxjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnk+JiYg
c2NoZW1lUmVnaXN0cnksIEpTQzo6UnVudGltZUZsYWdzIHJ1bnRpbWVGbGFncykKICAgICA6IG1f
dGhyZWFkSUQoMCkKICAgICAsIG1fd29ya2VyTG9hZGVyUHJveHkod29ya2VyTG9hZGVyUHJveHkp
CiAgICAgLCBtX3dvcmtlclJlcG9ydGluZ1Byb3h5KHdvcmtlclJlcG9ydGluZ1Byb3h5KQpAQCAt
MTA2LDYgKzEwNyw3IEBAIFdvcmtlclRocmVhZDo6V29ya2VyVGhyZWFkKGNvbnN0IFVSTCYgc2MK
ICNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCiAgICAgLCBtX3NvY2tldFByb3ZpZGVyKHNvY2tldFBy
b3ZpZGVyKQogI2VuZGlmCisgICAgLCBtX3NjaGVtZVJlZ2lzdHJ5KFdURk1vdmUoc2NoZW1lUmVn
aXN0cnkpKQogewogI2lmICFFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICBVTlVTRURfUEFS
QU0oY29ubmVjdGlvblByb3h5KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
VGhyZWFkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJl
YWQuaAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJU
aHJlYWQuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgPG1lbW9y
eT4KICNpbmNsdWRlIDxydW50aW1lL1J1bnRpbWVGbGFncy5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04MSwxMCArODAsMTAgQEAgcHVibGlj
OgogICAgIEpTQzo6UnVudGltZUZsYWdzIHJ1bnRpbWVGbGFncygpIGNvbnN0IHsgcmV0dXJuIG1f
cnVudGltZUZsYWdzOyB9CiAKIHByb3RlY3RlZDoKLSAgICBXb3JrZXJUaHJlYWQoY29uc3QgVVJM
JiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29y
a2VyTG9hZGVyUHJveHkmLCBXb3JrZXJSZXBvcnRpbmdQcm94eSYsIFdvcmtlclRocmVhZFN0YXJ0
TW9kZSwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgYm9vbCBz
aG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIGNvbnN0IFNlY3VyaXR5
T3JpZ2luKiB0b3BPcmlnaW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiwgU29ja2V0
UHJvdmlkZXIqLCBKU0M6OlJ1bnRpbWVGbGFncyk7CisgICAgV29ya2VyVGhyZWFkKGNvbnN0IFVS
TCYsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdv
cmtlckxvYWRlclByb3h5JiwgV29ya2VyUmVwb3J0aW5nUHJveHkmLCBXb3JrZXJUaHJlYWRTdGFy
dE1vZGUsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYsIGJvb2wg
c2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBjb25zdCBTZWN1cml0
eU9yaWdpbiogdG9wT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSosIFNvY2tl
dFByb3ZpZGVyKiwgUmVmPGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3RyeT4mJiwgSlNDOjpSdW50aW1l
RmxhZ3MpOwogCiAgICAgLy8gRmFjdG9yeSBtZXRob2QgZm9yIGNyZWF0aW5nIGEgbmV3IHdvcmtl
ciBjb250ZXh0IGZvciB0aGUgdGhyZWFkLgotICAgIHZpcnR1YWwgUmVmPFdvcmtlckdsb2JhbFNj
b3BlPiBjcmVhdGVXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHVz
ZXJBZ2VudCwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgYm9v
bCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIFBhc3NSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+IHRvcE9yaWdpbikgPSAwOworICAgIHZpcnR1YWwgUmVmPFdvcmtlckds
b2JhbFNjb3BlPiBjcmVhdGVXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmLCBjb25zdCBTdHJp
bmcmIHVzZXJBZ2VudCwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJz
JiwgYm9vbCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIFJlZlB0
cjxTZWN1cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4pID0gMDsKIAogICAgIC8vIEV4ZWN1dGVzIHRo
ZSBldmVudCBsb29wIGZvciB0aGUgd29ya2VyIHRocmVhZC4gRGVyaXZlZCBjbGFzc2VzIGNhbiBv
dmVycmlkZSB0byBwZXJmb3JtIGFjdGlvbnMgYmVmb3JlL2FmdGVyIGVudGVyaW5nIHRoZSBldmVu
dCBsb29wLgogICAgIHZpcnR1YWwgdm9pZCBydW5FdmVudExvb3AoKTsKQEAgLTkzLDYgKzkyLDcg
QEAgcHJvdGVjdGVkOgogCiAgICAgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqIGlkYkNv
bm5lY3Rpb25Qcm94eSgpOwogICAgIFNvY2tldFByb3ZpZGVyKiBzb2NrZXRQcm92aWRlcigpOwor
ICAgIGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3RyeSYgc2NoZW1lUmVnaXN0cnkoKSBjb25zdCB7IHJl
dHVybiBtX3NjaGVtZVJlZ2lzdHJ5LmdldCgpOyB9CiAKIHByaXZhdGU6CiAgICAgLy8gU3RhdGlj
IGZ1bmN0aW9uIGV4ZWN1dGVkIGFzIHRoZSBjb3JlIHJvdXRpbmUgb24gdGhlIG5ldyB0aHJlYWQu
IFBhc3NlZCBhIHBvaW50ZXIgdG8gYSBXb3JrZXJUaHJlYWQgb2JqZWN0LgpAQCAtMTIxLDYgKzEy
MSw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQogICAgIFJlZlB0cjxTb2Nr
ZXRQcm92aWRlcj4gbV9zb2NrZXRQcm92aWRlcjsKICNlbmRpZgorICAgIFJlZjxjb25zdCBQYWdl
U2NoZW1lUmVnaXN0cnk+IG1fc2NoZW1lUmVnaXN0cnk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS94bWwvRE9NUGFyc2VyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS94bWwvRE9NUGFyc2VyLmNwcAkocmV2aXNpb24gMjA4Mzk4KQor
KysgU291cmNlL1dlYkNvcmUveG1sL0RPTVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4
LDkgKzM4LDEwIEBAIEV4Y2VwdGlvbk9yPFJlZjxEb2N1bWVudD4+IERPTVBhcnNlcjo6cGEKIHsK
ICAgICBpZiAoY29udGVudFR5cGUgIT0gInRleHQvaHRtbCIgJiYgY29udGVudFR5cGUgIT0gInRl
eHQveG1sIiAmJiBjb250ZW50VHlwZSAhPSAiYXBwbGljYXRpb24veG1sIiAmJiBjb250ZW50VHlw
ZSAhPSAiYXBwbGljYXRpb24veGh0bWwreG1sIiAmJiBjb250ZW50VHlwZSAhPSAiaW1hZ2Uvc3Zn
K3htbCIpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IgfTsKLSAgICBhdXRv
IGRvY3VtZW50ID0gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZURvY3VtZW50KGNvbnRlbnRUeXBl
LCBudWxscHRyLCBVUkwgeyB9KTsKLSAgICBpZiAobV9jb250ZXh0RG9jdW1lbnQpCi0gICAgICAg
IGRvY3VtZW50LT5zZXRDb250ZXh0RG9jdW1lbnQoKm1fY29udGV4dERvY3VtZW50LmdldCgpKTsK
KyAgICBpZiAoIW1fY29udGV4dERvY3VtZW50KQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
SU5WQUxJRF9TVEFURV9FUlIgfTsKKyAgICBhdXRvIGRvY3VtZW50ID0gRE9NSW1wbGVtZW50YXRp
b246OmNyZWF0ZURvY3VtZW50KGNvbnRlbnRUeXBlLCBudWxscHRyLCBVUkwoKSwgbV9jb250ZXh0
RG9jdW1lbnQtPnNjaGVtZVJlZ2lzdHJ5KCkpOworICAgIGRvY3VtZW50LT5zZXRDb250ZXh0RG9j
dW1lbnQoKm1fY29udGV4dERvY3VtZW50LmdldCgpKTsKICAgICBkb2N1bWVudC0+c2V0Q29udGVu
dChzdHJpbmcpOwogICAgIHJldHVybiBXVEZNb3ZlKGRvY3VtZW50KTsKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNl
L1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg5LDEw
ICsxODksMTEgQEAgRXhjZXB0aW9uT3I8RG9jdW1lbnQqPiBYTUxIdHRwUmVxdWVzdDo6cgogICAg
ICAgICAgICAgfHwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc1dvcmtlckdsb2JhbFNjb3Bl
KCkpIHsKICAgICAgICAgICAgIG1fcmVzcG9uc2VEb2N1bWVudCA9IG51bGxwdHI7CiAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBjb25zdCBhdXRvJiBzY2hlbWVSZWdpc3RyeSA9IHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKS0+c2NoZW1lUmVnaXN0cnkoKTsKICAgICAgICAgICAgIGlmIChp
c0hUTUwpCi0gICAgICAgICAgICAgICAgbV9yZXNwb25zZURvY3VtZW50ID0gSFRNTERvY3VtZW50
OjpjcmVhdGUoMCwgbV91cmwpOworICAgICAgICAgICAgICAgIG1fcmVzcG9uc2VEb2N1bWVudCA9
IEhUTUxEb2N1bWVudDo6Y3JlYXRlKG51bGxwdHIsIG1fdXJsLCBzY2hlbWVSZWdpc3RyeSk7CiAg
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbV9yZXNwb25zZURvY3VtZW50ID0gWE1M
RG9jdW1lbnQ6OmNyZWF0ZSgwLCBtX3VybCk7CisgICAgICAgICAgICAgICAgbV9yZXNwb25zZURv
Y3VtZW50ID0gWE1MRG9jdW1lbnQ6OmNyZWF0ZShudWxscHRyLCBtX3VybCwgc2NoZW1lUmVnaXN0
cnkpOwogICAgICAgICAgICAgLy8gRklYTUU6IFNldCBMYXN0LU1vZGlmaWVkLgogICAgICAgICAg
ICAgbV9yZXNwb25zZURvY3VtZW50LT5zZXRDb250ZW50KG1fcmVzcG9uc2VCdWlsZGVyLnRvU3Ry
aW5nUHJlc2VydmVDYXBhY2l0eSgpKTsKICAgICAgICAgICAgIG1fcmVzcG9uc2VEb2N1bWVudC0+
c2V0Q29udGV4dERvY3VtZW50KGRvd25jYXN0PERvY3VtZW50Pigqc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpKSk7CkBAIC02NDEsNyArNjQyLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gWE1MSHR0cFJl
cXVlc3Q6OmNyZWF0ZQogICAgICAgICB9CiAgICAgfQogCi0gICAgbV9zYW1lT3JpZ2luUmVxdWVz
dCA9IHNlY3VyaXR5T3JpZ2luKCktPmNhblJlcXVlc3QobV91cmwpOworICAgIG1fc2FtZU9yaWdp
blJlcXVlc3QgPSBzZWN1cml0eU9yaWdpbigpLT5jYW5SZXF1ZXN0KG1fdXJsLCBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCktPnNjaGVtZVJlZ2lzdHJ5KCkpOwogCiAgICAgLy8gV2UgYWxzbyByZW1l
bWJlciB3aGV0aGVyIHVwbG9hZCBldmVudHMgc2hvdWxkIGJlIGFsbG93ZWQgZm9yIHRoaXMgcmVx
dWVzdCBpbiBjYXNlIHRoZSB1cGxvYWQgbGlzdGVuZXJzIGFyZQogICAgIC8vIGFkZGVkIGFmdGVy
IHRoZSByZXF1ZXN0IGlzIHN0YXJ0ZWQuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS94bWwvWFNMVFBy
b2Nlc3Nvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNz
b3IuY3BwCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nl
c3Nvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDcgKzY3LDcgQEAgWFNMVFByb2Nlc3Nvcjo6
flhTTFRQcm9jZXNzb3IoKQogfQogCiBSZWY8RG9jdW1lbnQ+IFhTTFRQcm9jZXNzb3I6OmNyZWF0
ZURvY3VtZW50RnJvbVNvdXJjZShjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmluZywKLSAgICBjb25z
dCBTdHJpbmcmIHNvdXJjZUVuY29kaW5nLCBjb25zdCBTdHJpbmcmIHNvdXJjZU1JTUVUeXBlLCBO
b2RlKiBzb3VyY2VOb2RlLCBGcmFtZSogZnJhbWUpCisgICAgY29uc3QgU3RyaW5nJiBzb3VyY2VF
bmNvZGluZywgY29uc3QgU3RyaW5nJiBzb3VyY2VNSU1FVHlwZSwgTm9kZSogc291cmNlTm9kZSwg
RnJhbWUqIGZyYW1lLCBjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnkmIHNjaGVtZVJlZ2lzdHJ5KQog
ewogICAgIFJlZjxEb2N1bWVudD4gb3duZXJEb2N1bWVudChzb3VyY2VOb2RlLT5kb2N1bWVudCgp
KTsKICAgICBib29sIHNvdXJjZUlzRG9jdW1lbnQgPSAoc291cmNlTm9kZSA9PSAmb3duZXJEb2N1
bWVudC5nZXQoKSk7CkBAIC03NSwxMCArNzUsMTAgQEAgUmVmPERvY3VtZW50PiBYU0xUUHJvY2Vz
c29yOjpjcmVhdGVEb2N1bQogCiAgICAgUmVmUHRyPERvY3VtZW50PiByZXN1bHQ7CiAgICAgaWYg
KHNvdXJjZU1JTUVUeXBlID09ICJ0ZXh0L3BsYWluIikgewotICAgICAgICByZXN1bHQgPSBYTUxE
b2N1bWVudDo6Y3JlYXRlWEhUTUwoZnJhbWUsIHNvdXJjZUlzRG9jdW1lbnQgPyBvd25lckRvY3Vt
ZW50LT51cmwoKSA6IFVSTCgpKTsKKyAgICAgICAgcmVzdWx0ID0gWE1MRG9jdW1lbnQ6OmNyZWF0
ZVhIVE1MKGZyYW1lLCBzb3VyY2VJc0RvY3VtZW50ID8gb3duZXJEb2N1bWVudC0+dXJsKCkgOiBV
UkwoKSwgc2NoZW1lUmVnaXN0cnkpOwogICAgICAgICB0cmFuc2Zvcm1UZXh0U3RyaW5nVG9YSFRN
TERvY3VtZW50U3RyaW5nKGRvY3VtZW50U291cmNlKTsKICAgICB9IGVsc2UKLSAgICAgICAgcmVz
dWx0ID0gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZURvY3VtZW50KHNvdXJjZU1JTUVUeXBlLCBm
cmFtZSwgc291cmNlSXNEb2N1bWVudCA/IG93bmVyRG9jdW1lbnQtPnVybCgpIDogVVJMKCkpOwor
ICAgICAgICByZXN1bHQgPSBET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQoc291cmNl
TUlNRVR5cGUsIGZyYW1lLCBzb3VyY2VJc0RvY3VtZW50ID8gb3duZXJEb2N1bWVudC0+dXJsKCkg
OiBVUkwoKSwgc2NoZW1lUmVnaXN0cnkpOwogCiAgICAgLy8gQmVmb3JlIHBhcnNpbmcsIHdlIG5l
ZWQgdG8gc2F2ZSAmIGRldGFjaCB0aGUgb2xkIGRvY3VtZW50IGFuZCBnZXQgdGhlIG5ldyBkb2N1
bWVudAogICAgIC8vIGluIHBsYWNlLiBXZSBoYXZlIHRvIGRvIHRoaXMgb25seSBpZiB3ZSdyZSBy
ZW5kZXJpbmcgdGhlIHJlc3VsdCBkb2N1bWVudC4KQEAgLTExNyw3ICsxMTcsNyBAQCBSZWZQdHI8
RG9jdW1lbnQ+IFhTTFRQcm9jZXNzb3I6OnRyYW5zZm9yCiAgICAgU3RyaW5nIHJlc3VsdEVuY29k
aW5nOwogICAgIGlmICghdHJhbnNmb3JtVG9TdHJpbmcoKnNvdXJjZU5vZGUsIHJlc3VsdE1JTUVU
eXBlLCByZXN1bHRTdHJpbmcsIHJlc3VsdEVuY29kaW5nKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgcmV0dXJuIGNyZWF0ZURvY3VtZW50RnJvbVNvdXJjZShyZXN1bHRTdHJpbmcsIHJl
c3VsdEVuY29kaW5nLCByZXN1bHRNSU1FVHlwZSwgc291cmNlTm9kZSwgMCk7CisgICAgcmV0dXJu
IGNyZWF0ZURvY3VtZW50RnJvbVNvdXJjZShyZXN1bHRTdHJpbmcsIHJlc3VsdEVuY29kaW5nLCBy
ZXN1bHRNSU1FVHlwZSwgc291cmNlTm9kZSwgbnVsbHB0ciwgc291cmNlTm9kZS0+ZG9jdW1lbnQo
KS5zY2hlbWVSZWdpc3RyeSgpKTsKIH0KIAogUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IFhTTFRQ
cm9jZXNzb3I6OnRyYW5zZm9ybVRvRnJhZ21lbnQoTm9kZSogc291cmNlTm9kZSwgRG9jdW1lbnQq
IG91dHB1dERvYykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuaAkocmV2aXNpb24g
MjA4Mzk4KQorKysgU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuaAkod29ya2luZyBj
b3B5KQpAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBGcmFtZTsK
IGNsYXNzIERvY3VtZW50OwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKK2NsYXNzIFBhZ2VTY2hl
bWVSZWdpc3RyeTsKIAogY2xhc3MgWFNMVFByb2Nlc3NvciA6IHB1YmxpYyBSZWZDb3VudGVkPFhT
TFRQcm9jZXNzb3I+IHsKIHB1YmxpYzoKQEAgLTQ2LDcgKzQ3LDcgQEAgcHVibGljOgogCiAgICAg
dm9pZCBzZXRYU0xTdHlsZVNoZWV0KFJlZlB0cjxYU0xTdHlsZVNoZWV0PiYmIHN0eWxlU2hlZXQp
IHsgbV9zdHlsZXNoZWV0ID0gV1RGTW92ZShzdHlsZVNoZWV0KTsgfQogICAgIGJvb2wgdHJhbnNm
b3JtVG9TdHJpbmcoTm9kZSYgc291cmNlLCBTdHJpbmcmIHJlc3VsdE1JTUVUeXBlLCBTdHJpbmcm
IHJlc3VsdFN0cmluZywgU3RyaW5nJiByZXN1bHRFbmNvZGluZyk7Ci0gICAgUmVmPERvY3VtZW50
PiBjcmVhdGVEb2N1bWVudEZyb21Tb3VyY2UoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0
cmluZyYgc291cmNlRW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgc291cmNlTUlNRVR5cGUsIE5vZGUq
IHNvdXJjZU5vZGUsIEZyYW1lKiBmcmFtZSk7CisgICAgUmVmPERvY3VtZW50PiBjcmVhdGVEb2N1
bWVudEZyb21Tb3VyY2UoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgc291cmNl
RW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgc291cmNlTUlNRVR5cGUsIE5vZGUqIHNvdXJjZU5vZGUs
IEZyYW1lKiwgY29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5Jik7CiAgICAgCiAgICAgLy8gRE9NIG1l
dGhvZHMKICAgICB2b2lkIGltcG9ydFN0eWxlc2hlZXQoUmVmUHRyPE5vZGU+JiYgc3R5bGUpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAJKHJldmlz
aW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNCwxMSArMTI0LDEzIEBAIHN0YXRpYyB4bWxEb2NQdHIg
ZG9jTG9hZGVyRnVuYyhjb25zdCB4bWwKIAogICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBk
YXRhOwogCi0gICAgICAgIGJvb2wgcmVxdWVzdEFsbG93ZWQgPSBnbG9iYWxDYWNoZWRSZXNvdXJj
ZUxvYWRlci0+ZnJhbWUoKSAmJiBnbG9iYWxDYWNoZWRSZXNvdXJjZUxvYWRlci0+ZG9jdW1lbnQo
KS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdCh1cmwpOworICAgICAgICBEb2N1bWVudCog
b3duZXJEb2N1bWVudCA9IGdsb2JhbFByb2Nlc3Nvci0+eHNsU3R5bGVzaGVldCgpLT5vd25lckRv
Y3VtZW50KCk7CisgICAgICAgIGNvbnN0IFBhZ2VTY2hlbWVSZWdpc3RyeSYgc2NoZW1lUmVnaXN0
cnkgPSBvd25lckRvY3VtZW50LT5zY2hlbWVSZWdpc3RyeSgpOworICAgICAgICBib29sIHJlcXVl
c3RBbGxvd2VkID0gZ2xvYmFsQ2FjaGVkUmVzb3VyY2VMb2FkZXItPmZyYW1lKCkgJiYgZ2xvYmFs
Q2FjaGVkUmVzb3VyY2VMb2FkZXItPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhblJl
cXVlc3QodXJsLCBzY2hlbWVSZWdpc3RyeSk7CiAgICAgICAgIGlmIChyZXF1ZXN0QWxsb3dlZCkg
ewogICAgICAgICAgICAgZ2xvYmFsQ2FjaGVkUmVzb3VyY2VMb2FkZXItPmZyYW1lKCktPmxvYWRl
cigpLmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkodXJsLCBBbGxvd1N0b3JlZENyZWRlbnRpYWxz
LCBDbGllbnRDcmVkZW50aWFsUG9saWN5OjpNYXlBc2tDbGllbnRGb3JDcmVkZW50aWFscywgZXJy
b3IsIHJlc3BvbnNlLCBkYXRhKTsKICAgICAgICAgICAgIGlmIChlcnJvci5pc051bGwoKSkKLSAg
ICAgICAgICAgICAgICByZXF1ZXN0QWxsb3dlZCA9IGdsb2JhbENhY2hlZFJlc291cmNlTG9hZGVy
LT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5SZXF1ZXN0KHJlc3BvbnNlLnVybCgp
KTsKKyAgICAgICAgICAgICAgICByZXF1ZXN0QWxsb3dlZCA9IGdsb2JhbENhY2hlZFJlc291cmNl
TG9hZGVyLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5SZXF1ZXN0KHJlc3BvbnNl
LnVybCgpLCBzY2hlbWVSZWdpc3RyeSk7CiAgICAgICAgICAgICBlbHNlIGlmIChkYXRhKQogICAg
ICAgICAgICAgICAgIGRhdGEgPSBudWxscHRyOwogICAgICAgICB9CkBAIC0xMzksNyArMTQxLDcg
QEAgc3RhdGljIHhtbERvY1B0ciBkb2NMb2FkZXJGdW5jKGNvbnN0IHhtbAogICAgICAgICB9CiAK
ICAgICAgICAgUGFnZUNvbnNvbGVDbGllbnQqIGNvbnNvbGUgPSBudWxscHRyOwotICAgICAgICBG
cmFtZSogZnJhbWUgPSBnbG9iYWxQcm9jZXNzb3ItPnhzbFN0eWxlc2hlZXQoKS0+b3duZXJEb2N1
bWVudCgpLT5mcmFtZSgpOworICAgICAgICBGcmFtZSogZnJhbWUgPSBvd25lckRvY3VtZW50LT5m
cmFtZSgpOwogICAgICAgICBpZiAoZnJhbWUgJiYgZnJhbWUtPnBhZ2UoKSkKICAgICAgICAgICAg
IGNvbnNvbGUgPSAmZnJhbWUtPnBhZ2UoKS0+Y29uc29sZSgpOwogICAgICAgICB4bWxTZXRTdHJ1
Y3R1cmVkRXJyb3JGdW5jKGNvbnNvbGUsIFhTTFRQcm9jZXNzb3I6OnBhcnNlRXJyb3JGdW5jKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50
UGFyc2VyTGlieG1sMi5jcHAJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL3ht
bC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDA4LDcgKzQwOCw3IEBAIHN0YXRpYyB2b2lkIHN3aXRjaFRvVVRGMTYoeG1sUGFyc2VyQ3R4dFAK
ICAgICB4bWxTd2l0Y2hFbmNvZGluZyhjdHh0LCBCT01IaWdoQnl0ZSA9PSAweEZGID8gWE1MX0NI
QVJfRU5DT0RJTkdfVVRGMTZMRSA6IFhNTF9DSEFSX0VOQ09ESU5HX1VURjE2QkUpOwogfQogCi1z
dGF0aWMgYm9vbCBzaG91bGRBbGxvd0V4dGVybmFsTG9hZChjb25zdCBVUkwmIHVybCkKK3N0YXRp
YyBib29sIHNob3VsZEFsbG93RXh0ZXJuYWxMb2FkKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBQYWdl
U2NoZW1lUmVnaXN0cnkmIHNjaGVtZVJlZ2lzdHJ5KQogewogICAgIFN0cmluZyB1cmxTdHJpbmcg
PSB1cmwuc3RyaW5nKCk7CiAKQEAgLTQzNiw3ICs0MzYsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRB
bGxvd0V4dGVybmFsTG9hZChjb25zCiAgICAgLy8gcmV0cmlldmVkIGNvbnRlbnQuICBJZiB3ZSBo
YWQgbW9yZSBjb250ZXh0LCB3ZSBjb3VsZCBwb3RlbnRpYWxseSBhbGxvdwogICAgIC8vIHRoZSBw
YXJzZXIgdG8gbG9hZCBhIERURC4gIEFzIHRoaW5ncyBzdGFuZCwgd2UgdGFrZSB0aGUgY29uc2Vy
dmF0aXZlCiAgICAgLy8gcm91dGUgYW5kIGFsbG93IHNhbWUtb3JpZ2luIHJlcXVlc3RzIG9ubHku
Ci0gICAgaWYgKCFYTUxEb2N1bWVudFBhcnNlclNjb3BlOjpjdXJyZW50Q2FjaGVkUmVzb3VyY2VM
b2FkZXItPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhblJlcXVlc3QodXJsKSkgewor
ICAgIGlmICghWE1MRG9jdW1lbnRQYXJzZXJTY29wZTo6Y3VycmVudENhY2hlZFJlc291cmNlTG9h
ZGVyLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5SZXF1ZXN0KHVybCwgc2NoZW1l
UmVnaXN0cnkpKSB7CiAgICAgICAgIFhNTERvY3VtZW50UGFyc2VyU2NvcGU6OmN1cnJlbnRDYWNo
ZWRSZXNvdXJjZUxvYWRlci0+cHJpbnRBY2Nlc3NEZW5pZWRNZXNzYWdlKHVybCk7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CkBAIC00NTEsNyArNDUxLDExIEBAIHN0YXRpYyB2b2lkKiBv
cGVuRnVuYyhjb25zdCBjaGFyKiB1cmkpCiAKICAgICBVUkwgdXJsKFVSTCgpLCB1cmkpOwogCi0g
ICAgaWYgKCFzaG91bGRBbGxvd0V4dGVybmFsTG9hZCh1cmwpKQorICAgIGF1dG8qIGNhY2hlZFJl
c291cmNlTG9hZGVyID0gWE1MRG9jdW1lbnRQYXJzZXJTY29wZTo6Y3VycmVudENhY2hlZFJlc291
cmNlTG9hZGVyOworICAgIGlmICghY2FjaGVkUmVzb3VyY2VMb2FkZXIpCisgICAgICAgIHJldHVy
biAmZ2xvYmFsRGVzY3JpcHRvcjsKKyAgICBhdXRvJiBzY2hlbWVSZWdpc3RyeSA9IGNhY2hlZFJl
c291cmNlTG9hZGVyLT5zY2hlbWVSZWdpc3RyeSgpOworICAgIGlmICghc2hvdWxkQWxsb3dFeHRl
cm5hbExvYWQodXJsLCBzY2hlbWVSZWdpc3RyeSkpCiAgICAgICAgIHJldHVybiAmZ2xvYmFsRGVz
Y3JpcHRvcjsKIAogICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CkBAIC00NjAsNyArNDY0LDYgQEAg
c3RhdGljIHZvaWQqIG9wZW5GdW5jKGNvbnN0IGNoYXIqIHVyaSkKIAogCiAgICAgewotICAgICAg
ICBDYWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIgPSBYTUxEb2N1bWVu
dFBhcnNlclNjb3BlOjpjdXJyZW50Q2FjaGVkUmVzb3VyY2VMb2FkZXI7CiAgICAgICAgIFhNTERv
Y3VtZW50UGFyc2VyU2NvcGUgc2NvcGUobnVsbHB0cik7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgcmVzdG9yZSB0aGUgb3JpZ2luYWwgZ2xvYmFsIGVycm9yIGhhbmRsZXIgYXMgd2VsbC4K
IApAQCAtNDcwLDcgKzQ3Myw3IEBAIHN0YXRpYyB2b2lkKiBvcGVuRnVuYyhjb25zdCBjaGFyKiB1
cmkpCiAKICAgICAvLyBXZSBoYXZlIHRvIGNoZWNrIHRoZSBVUkwgYWdhaW4gYWZ0ZXIgdGhlIGxv
YWQgdG8gY2F0Y2ggcmVkaXJlY3RzLgogICAgIC8vIFNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxOTYzPi4KLSAgICBpZiAoIXNob3VsZEFsbG93RXh0ZXJuYWxM
b2FkKHJlc3BvbnNlLnVybCgpKSkKKyAgICBpZiAoIXNob3VsZEFsbG93RXh0ZXJuYWxMb2FkKHJl
c3BvbnNlLnVybCgpLCBzY2hlbWVSZWdpc3RyeSkpCiAgICAgICAgIHJldHVybiAmZ2xvYmFsRGVz
Y3JpcHRvcjsKICAgICBWZWN0b3I8Y2hhcj4gYnVmZmVyOwogICAgIGlmIChkYXRhKQpJbmRleDog
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwkocmV2aXNpb24gMjA4NDAwKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTE3IEBACisyMDE2LTExLTA4ICBBbGV4IENocmlzdGVu
c2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW50cm9kdWNlIFBhZ2VT
Y2hlbWVSZWdpc3RyeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTY0NTM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBEYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6RGF0YWJhc2VQcm9jZXNzOjppbmRleGVkRGF0YWJhc2VPcmlnaW5zKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OmZl
dGNoRGlza0NhY2hlRW50cmllcyk6CisgICAgICAgIChXZWJLaXQ6OmNsZWFyRGlza0NhY2hlRW50
cmllcyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tOgorICAgICAg
ICAoV2ViS2l0OjpwYXJ0aXRpb25OYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3M6OmNmVVJMQ2FjaGVPcmlnaW5zKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3M6OmNsZWFyQ0ZVUkxDYWNoZUZvck9yaWdpbnMpOiBEZWxldGVkLgor
ICAgICAgICAqIFNoYXJlZC9BUEkvQVBJU2VjdXJpdHlPcmlnaW4uaDoKKyAgICAgICAgKEFQSTo6
U2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcpOgorICAgICAgICAoQVBJOjpTZWN1cml0
eU9yaWdpbjo6Y3JlYXRlKToKKyAgICAgICAgKEFQSTo6U2VjdXJpdHlPcmlnaW46OnNlY3VyaXR5
T3JpZ2luKToKKyAgICAgICAgKEFQSTo6U2VjdXJpdHlPcmlnaW46OlNlY3VyaXR5T3JpZ2luKToK
KyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tTZWN1cml0eU9yaWdpblJlZi5jcHA6CisgICAgICAg
IChXS1NlY3VyaXR5T3JpZ2luQ3JlYXRlRnJvbVN0cmluZyk6CisgICAgICAgIChXS1NlY3VyaXR5
T3JpZ2luQ3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmllcik6CisgICAgICAgIChXS1NlY3VyaXR5
T3JpZ2luQ3JlYXRlKToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0Lmg6
CisgICAgICAgIChXZWJLaXQ6OnRvQ29waWVkQVBJKToKKyAgICAgICAgKiBTaGFyZWQvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YTo6RW50
cnk6OmRlY29kZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElGcmFtZUluZm8uY3BwOgor
ICAgICAgICAoQVBJOjpGcmFtZUluZm86OkZyYW1lSW5mbyk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9BUElVSUNsaWVudC5oOgorICAgICAgICAoQVBJOjpVSUNsaWVudDo6Y3JlYXRlTmV3UGFn
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWUuY3BwOgorICAgICAgICAoV0tG
cmFtZUNyZWF0ZUZyYW1lSW5mbyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLS2V5VmFs
dWVTdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJH
ZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2luKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQ
YWdlLmNwcDoKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VVSUNsaWVudCk6CisgICAgICAgIChXS1Bh
Z2VTZXRQYWdlTmF2aWdhdGlvbkNsaWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05h
dmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZp
Z2F0aW9uQ2xpZW50OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFtZVdpdGhFcnJvcik6
CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6
VUlDbGllbnQ6OmNyZWF0ZU5ld1BhZ2UpOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpV
SUNsaWVudDo6cnVuSmF2YVNjcmlwdEFsZXJ0KToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0
ZTo6VUlDbGllbnQ6OnJ1bkphdmFTY3JpcHRDb25maXJtKToKKyAgICAgICAgKFdlYktpdDo6VUlE
ZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bkphdmFTY3JpcHRQcm9tcHQpOgorICAgICAgICAoV2ViS2l0
OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuT3BlblBhbmVsKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJOb3RpZmljYXRpb246OldlYk5vdGlmaWNhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL05v
dGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZFVwZGF0ZU5vdGlm
aWNhdGlvblBvbGljeSk6CisgICAgICAgICogVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90
aWZpY2F0aW9uTWFuYWdlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1N0b3JhZ2UvTG9j
YWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TG9jYWxTdG9y
YWdlRGF0YWJhc2VUcmFja2VyOjpkZWxldGVEYXRhYmFzZXNNb2RpZmllZFNpbmNlKToKKyAgICAg
ICAgKFdlYktpdDo6TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpvcmlnaW5zKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVMb2NhbFN0b3JhZ2VNYXApOgorICAgICAgICAoV2Vi
S2l0OjpTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTWFwKToKKyAg
ICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTWFwKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eTo6cmVxdWVzdFVzZXJNZWRpYVBlcm1pc3Npb25Gb3JGcmFtZSk6CisgICAgICAgIChX
ZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjplbnVtZXJhdGVN
ZWRpYURldmljZXNGb3JGcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5
Rm9yTmV3V2luZG93QWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkZWNp
ZGVQb2xpY3lGb3JSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZXhj
ZWVkZWREYXRhYmFzZVF1b3RhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWFj
aGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpyZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVlc3ROb3RpZmljYXRpb25QZXJtaXNzaW9uKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YSk6CisgICAgICAgIChXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlOjptZWRpYUtleU9yaWdpbnMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwOgorICAgICAgICAoV0tCdW5kbGVBZGRPcmln
aW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSk6CisgICAgICAgIChXS0J1bmRsZVJlbW92ZU9yaWdpbkFj
Y2Vzc1doaXRlbGlzdEVudHJ5KToKKyAgICAgICAgKFdLQnVuZGxlU2V0RGF0YWJhc2VRdW90YSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2Uu
Y3BwOgorICAgICAgICAoV0tCdW5kbGVQYWdlQ2xlYXJBcHBsaWNhdGlvbkNhY2hlRm9yT3JpZ2lu
KToKKyAgICAgICAgKFdLQnVuZGxlUGFnZUdldEFwcENhY2hlVXNhZ2VGb3JPcmlnaW4pOgorICAg
ICAgICAoV0tCdW5kbGVQYWdlU2V0QXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKToKKyAgICAg
ICAgKFdLQnVuZGxlUGFnZVJlc2V0QXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5
KToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OnJlbW92ZU9yaWdpbkFjY2Vzc1do
aXRlbGlzdEVudHJ5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5
U3RvcmFnZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYUtleVN0b3JhZ2VN
YW5hZ2VyOjptZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnlGb3JPcmlnaW4pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyOjpnZXRNZWRpYUtleU9yaWdpbnMpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UGx1Z2luVmlldzo6cGVyZm9ybUZyYW1lTG9hZFVSTFJlcXVlc3QpOgorICAgICAgICAoV2Vi
S2l0OjpQbHVnaW5WaWV3Ojpsb2FkVVJMKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNs
aWVudDo6ZXhjZWVkZWREYXRhYmFzZVF1b3RhKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21l
Q2xpZW50OjpyZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJEb2N1bWVudExvYWRlcjo6V2ViRG9jdW1lbnRMb2FkZXIpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJEb2N1bWVudExvYWRlci5oOgorICAgICAgICAoV2ViS2l0OjpXZWJE
b2N1bWVudExvYWRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
RnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6YWxsb3dzRm9sbG93aW5nTGlu
ayk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpjcmVhdGVEb2N1bWVudExvYWRlcik6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6aW5pdGlh
bGl6ZVdlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpmZXRjaFdlYnNp
dGVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFG
b3JPcmlnaW5zKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5t
bToKKyAgICAgICAgKFdlYktpdDo6b3JpZ2luKToKKwogMjAxNi0xMS0wNCAgQWxleCBDaHJpc3Rl
bnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJv
bGxpbmcgb3V0IHIyMDgyOTMuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3Mv
RGF0YWJhc2VQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9EYXRhYmFz
ZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNwcAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNl
L1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0lEQktleURhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxl
bWVudGVkLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlU2NoZW1lUmVnaXN0cnkuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dEVuY29kaW5n
Lmg+CiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkVGFzay5oPgpAQCAtMjc3LDcgKzI3OCw3IEBA
IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+PiAKICAgICBmb3IgKGF1dG8m
IG9yaWdpblBhdGggOiBsaXN0RGlyZWN0b3J5KG1faW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5LCAi
KiIpKSB7CiAgICAgICAgIFN0cmluZyBkYXRhYmFzZUlkZW50aWZpZXIgPSBwYXRoR2V0RmlsZU5h
bWUob3JpZ2luUGF0aCk7CiAKLSAgICAgICAgaWYgKGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBTZWN1
cml0eU9yaWdpbjo6bWF5YmVDcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyKGRhdGFiYXNlSWRl
bnRpZmllcikpCisgICAgICAgIGlmIChhdXRvIHNlY3VyaXR5T3JpZ2luID0gU2VjdXJpdHlPcmln
aW46Om1heWJlQ3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmllcihkYXRhYmFzZUlkZW50aWZpZXIs
IFdlYkNvcmU6OlBhZ2VTY2hlbWVSZWdpc3RyeTo6Y3JlYXRlKCkpKQogICAgICAgICAgICAgc2Vj
dXJpdHlPcmlnaW5zLmFwcGVuZChXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luKSk7CiAgICAgfQogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDYgKzU0LDcgQEAKICNpbmNs
dWRlIDxXZWJDb3JlL0RpYWdub3N0aWNMb2dnaW5nQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9Mb2dJbml0aWFsaXphdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlU2NoZW1lUmVnaXN0cnkuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1BsYXRmb3JtQ29va2llSmFyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNv
dXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNr
cy5oPgpAQCAtMzI2LDcgKzMyNyw3IEBAIHN0YXRpYyB2b2lkIGZldGNoRGlza0NhY2hlRW50cmll
cyhTZXNzaW8KICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKLSAgICAg
ICAgICAgIGF1dG8gcmVzdWx0ID0gb3JpZ2luc0FuZFNpemVzLmFkZChTZWN1cml0eU9yaWdpbjo6
Y3JlYXRlKHRyYXZlcnNhbEVudHJ5LT5lbnRyeS5yZXNwb25zZSgpLnVybCgpKSwgMCk7CisgICAg
ICAgICAgICBhdXRvIHJlc3VsdCA9IG9yaWdpbnNBbmRTaXplcy5hZGQoU2VjdXJpdHlPcmlnaW46
OmNyZWF0ZSh0cmF2ZXJzYWxFbnRyeS0+ZW50cnkucmVzcG9uc2UoKS51cmwoKSwgUGFnZVNjaGVt
ZVJlZ2lzdHJ5OjpjcmVhdGUoKSksIDApOwogCiAgICAgICAgICAgICBpZiAoZmV0Y2hPcHRpb25z
LmNvbnRhaW5zKFdlYnNpdGVEYXRhRmV0Y2hPcHRpb246OkNvbXB1dGVTaXplcykpCiAgICAgICAg
ICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSArPSB0cmF2ZXJzYWxFbnRyeS0+ZW50cnku
c291cmNlU3RvcmFnZVJlY29yZCgpLmhlYWRlci5zaXplKCkgKyB0cmF2ZXJzYWxFbnRyeS0+cmVj
b3JkSW5mby5ib2R5U2l6ZTsKQEAgLTMzNSwxNyArMzM2LDYgQEAgc3RhdGljIHZvaWQgZmV0Y2hE
aXNrQ2FjaGVFbnRyaWVzKFNlc3NpbwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCi0K
LSAgICBWZWN0b3I8V2Vic2l0ZURhdGE6OkVudHJ5PiBlbnRyaWVzOwotCi0jaWYgVVNFKENGVVJM
Q0FDSEUpCi0gICAgZm9yIChhdXRvJiBvcmlnaW4gOiBOZXR3b3JrUHJvY2Vzczo6Y2ZVUkxDYWNo
ZU9yaWdpbnMoKSkKLSAgICAgICAgZW50cmllcy5hcHBlbmQoV2Vic2l0ZURhdGE6OkVudHJ5IHsg
V1RGTW92ZShvcmlnaW4pLCBXZWJzaXRlRGF0YVR5cGU6OkRpc2tDYWNoZSwgMCB9KTsKLSNlbmRp
ZgotCi0gICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBlbnRyaWVzID0gV1RGTW92ZShlbnRyaWVzKV0gewot
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihlbnRyaWVzKTsKLSAgICB9KTsKIH0KIAogdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YShTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRp
b25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzLCBPcHRpb25TZXQ8V2Vic2l0
ZURhdGFGZXRjaE9wdGlvbj4gZmV0Y2hPcHRpb25zLCB1aW50NjRfdCBjYWxsYmFja0lEKQpAQCAt
NDE3LDEyICs0MDcsMTIgQEAgc3RhdGljIHZvaWQgY2xlYXJEaXNrQ2FjaGVFbnRyaWVzKGNvbnN0
IAogICAgIGlmIChOZXR3b3JrQ2FjaGU6OnNpbmdsZXRvbigpLmlzRW5hYmxlZCgpKSB7CiAgICAg
ICAgIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gb3JpZ2luc1RvRGVsZXRlOwogICAg
ICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IG9yaWdpbnMpCi0gICAgICAgICAgICBvcmlnaW5zVG9E
ZWxldGUuYWRkKG9yaWdpbi5zZWN1cml0eU9yaWdpbigpKTsKKyAgICAgICAgICAgIG9yaWdpbnNU
b0RlbGV0ZS5hZGQob3JpZ2luLnNlY3VyaXR5T3JpZ2luKFBhZ2VTY2hlbWVSZWdpc3RyeTo6Y3Jl
YXRlKCkpKTsKIAogICAgICAgICBWZWN0b3I8TmV0d29ya0NhY2hlOjpLZXk+IGNhY2hlS2V5c1Rv
RGVsZXRlOwogICAgICAgICBOZXR3b3JrQ2FjaGU6OnNpbmdsZXRvbigpLnRyYXZlcnNlKFtjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBvcmlnaW5zVG9EZWxl
dGUgPSBXVEZNb3ZlKG9yaWdpbnNUb0RlbGV0ZSksIGNhY2hlS2V5c1RvRGVsZXRlID0gV1RGTW92
ZShjYWNoZUtleXNUb0RlbGV0ZSldKGF1dG8qIHRyYXZlcnNhbEVudHJ5KSBtdXRhYmxlIHsKICAg
ICAgICAgICAgIGlmICh0cmF2ZXJzYWxFbnRyeSkgewotICAgICAgICAgICAgICAgIGlmIChvcmln
aW5zVG9EZWxldGUuY29udGFpbnMoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh0cmF2ZXJzYWxFbnRy
eS0+ZW50cnkucmVzcG9uc2UoKS51cmwoKSkpKQorICAgICAgICAgICAgICAgIGlmIChvcmlnaW5z
VG9EZWxldGUuY29udGFpbnMoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh0cmF2ZXJzYWxFbnRyeS0+
ZW50cnkucmVzcG9uc2UoKS51cmwoKSwgUGFnZVNjaGVtZVJlZ2lzdHJ5OjpjcmVhdGUoKSkpKQog
ICAgICAgICAgICAgICAgICAgICBjYWNoZUtleXNUb0RlbGV0ZS5hcHBlbmQodHJhdmVyc2FsRW50
cnktPmVudHJ5LmtleSgpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9
CkBAIC00MzgsMTAgKzQyOCw2IEBAIHN0YXRpYyB2b2lkIGNsZWFyRGlza0NhY2hlRW50cmllcyhj
b25zdCAKICAgICB9CiAjZW5kaWYKIAotI2lmIFVTRShDRlVSTENBQ0hFKQotICAgIE5ldHdvcmtQ
cm9jZXNzOjpjbGVhckNGVVJMQ2FjaGVGb3JPcmlnaW5zKG9yaWdpbnMpOwotI2VuZGlmCi0KICAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwog
fQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmgJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTk2LDExICs5Niw2IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdCh1aW50NjRfdCB3ZWJQ
YWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwg
V2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdSZXN1bHRUeXBlLCBXZWJDb3JlOjpTaG91bGRTYW1w
bGUpOwogICAgIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUodWludDY0X3Qgd2Vi
UGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24s
IGNvbnN0IFN0cmluZyYgdmFsdWUsIFdlYkNvcmU6OlNob3VsZFNhbXBsZSk7CiAKLSNpZiBVU0Uo
Q0ZVUkxDQUNIRSkKLSAgICBzdGF0aWMgVmVjdG9yPFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bj4+IGNmVVJMQ2FjaGVPcmlnaW5zKCk7Ci0gICAgc3RhdGljIHZvaWQgY2xlYXJDRlVSTENhY2hl
Rm9yT3JpZ2lucyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYpOwot
I2VuZGlmCi0KICNpZiBQTEFURk9STShDT0NPQSkKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBz
b3VyY2VBcHBsaWNhdGlvbkF1ZGl0RGF0YSgpIGNvbnN0OwogICAgIHZvaWQgY2xlYXJIU1RTQ2Fj
aGUoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgc3RkOjpjaHJvbm86OnN5c3RlbV9j
bG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5t
bQkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTQ3LDE5ICsxNDcs
NiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybVNldFVSTENhY2hlCiAgICAgICAgIFtu
c3VybENhY2hlIHNldERpc2tDYXBhY2l0eTpzdGQ6Om1heDx1aW50NjRfdD4odXJsQ2FjaGVEaXNr
Q2FwYWNpdHksIFtuc3VybENhY2hlIGRpc2tDYXBhY2l0eV0pXTsgLy8gRG9uJ3Qgc2hyaW5rIGEg
YmlnIGRpc2sgY2FjaGUsIHNpbmNlIHRoYXQgd291bGQgY2F1c2UgY2h1cm4uCiB9CiAKLXN0YXRp
YyBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHBhcnRpdGlvbk5hbWUoQ0ZTdHJpbmdSZWYgZG9tYWlu
KQotewotI2lmIEVOQUJMRShQVUJMSUNfU1VGRklYX0xJU1QpCi0gICAgU3RyaW5nIGhpZ2hMZXZl
bCA9IFdlYkNvcmU6OnRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW4oZG9tYWluKTsKLSAgICBp
ZiAoaGlnaExldmVsLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gMDsKLSAgICBDU3RyaW5nIHV0
ZjhTdHJpbmcgPSBoaWdoTGV2ZWwudXRmOCgpOwotICAgIHJldHVybiBhZG9wdENGKENGU3RyaW5n
Q3JlYXRlV2l0aEJ5dGVzKDAsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPih1dGY4U3Ry
aW5nLmRhdGEoKSksIHV0ZjhTdHJpbmcubGVuZ3RoKCksIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwg
ZmFsc2UpKTsKLSNlbHNlCi0gICAgcmV0dXJuIGRvbWFpbjsKLSNlbmRpZgotfQotCiBSZXRhaW5Q
dHI8Q0ZEYXRhUmVmPiBOZXR3b3JrUHJvY2Vzczo6c291cmNlQXBwbGljYXRpb25BdWRpdERhdGEo
KSBjb25zdAogewogI2lmIFBMQVRGT1JNKElPUykKQEAgLTE3Myw0MyArMTYwLDYgQEAgUmV0YWlu
UHRyPENGRGF0YVJlZj4gTmV0d29ya1Byb2Nlc3M6OnNvdQogI2VuZGlmCiB9CiAKLVZlY3RvcjxS
ZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+PiBOZXR3b3JrUHJvY2Vzczo6Y2ZVUkxDYWNoZU9y
aWdpbnMoKQotewotICAgIFZlY3RvcjxSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+PiByZXN1
bHQ7Ci0KLSAgICBXS0NGVVJMQ2FjaGVDb3B5QWxsUGFydGl0aW9uTmFtZXMoWyZyZXN1bHRdKENG
QXJyYXlSZWYgcGFydGl0aW9uTmFtZXMpIHsKLSAgICAgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+
IGhvc3ROYW1lc0luUGVyc2lzdGVudFN0b3JlID0gYWRvcHRDRihXS0NGVVJMQ2FjaGVDb3B5QWxs
SG9zdE5hbWVzSW5QZXJzaXN0ZW50U3RvcmVGb3JQYXJ0aXRpb24oQ0ZTVFIoIiIpKSk7Ci0gICAg
ICAgIFJldGFpblB0cjxDRk11dGFibGVBcnJheVJlZj4gaG9zdE5hbWVzID0gYWRvcHRDRihDRkFy
cmF5Q3JlYXRlTXV0YWJsZUNvcHkoMCwgMCwgaG9zdE5hbWVzSW5QZXJzaXN0ZW50U3RvcmUuZ2V0
KCkpKTsKLSAgICAgICAgaWYgKHBhcnRpdGlvbk5hbWVzKSB7Ci0gICAgICAgICAgICBDRkFycmF5
QXBwZW5kQXJyYXkoaG9zdE5hbWVzLmdldCgpLCBwYXJ0aXRpb25OYW1lcywgQ0ZSYW5nZU1ha2Uo
MCwgQ0ZBcnJheUdldENvdW50KHBhcnRpdGlvbk5hbWVzKSkpOwotICAgICAgICAgICAgQ0ZSZWxl
YXNlKHBhcnRpdGlvbk5hbWVzKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZvciAoQ0ZJbmRleCBp
ID0gMCwgc2l6ZSA9IENGQXJyYXlHZXRDb3VudChob3N0TmFtZXMuZ2V0KCkpOyBpIDwgc2l6ZTsg
KytpKSB7Ci0gICAgICAgICAgICBDRlN0cmluZ1JlZiBob3N0ID0gc3RhdGljX2Nhc3Q8Q0ZTdHJp
bmdSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoaG9zdE5hbWVzLmdldCgpLCBpKSk7Ci0KLSAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZSgi
aHR0cCIsIGhvc3QsIDApKTsKLSAgICAgICAgfQotICAgIH0pOwotCi0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLQotdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJDRlVSTENhY2hlRm9yT3JpZ2lucyhj
b25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYgb3JpZ2lucykKLXsKLSAg
ICBhdXRvIGhvc3ROYW1lcyA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGUoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgMCwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcykpOwotICAgIGZvciAoYXV0byYg
b3JpZ2luIDogb3JpZ2lucykKLSAgICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGhvc3ROYW1lcy5n
ZXQoKSwgb3JpZ2luLmhvc3QuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7Ci0KLSAgICBXS0NGVVJM
Q2FjaGVEZWxldGVIb3N0TmFtZXNJblBlcnNpc3RlbnRTdG9yZShob3N0TmFtZXMuZ2V0KCkpOwot
Ci0gICAgZm9yIChDRkluZGV4IGkgPSAwLCBzaXplID0gQ0ZBcnJheUdldENvdW50KGhvc3ROYW1l
cy5nZXQoKSk7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiBwYXJ0aXRpb24gPSBwYXJ0aXRpb25OYW1lKHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRkFy
cmF5R2V0VmFsdWVBdEluZGV4KGhvc3ROYW1lcy5nZXQoKSwgaSkpKTsKLSAgICAgICAgUmV0YWlu
UHRyPENGQXJyYXlSZWY+IHBhcnRpdGlvbkhvc3ROYW1lcyA9IGFkb3B0Q0YoV0tDRlVSTENhY2hl
Q29weUFsbEhvc3ROYW1lc0luUGVyc2lzdGVudFN0b3JlRm9yUGFydGl0aW9uKHBhcnRpdGlvbi5n
ZXQoKSkpOwotICAgICAgICBXS0NGVVJMQ2FjaGVEZWxldGVIb3N0TmFtZXNJblBlcnNpc3RlbnRT
dG9yZUZvclBhcnRpdGlvbihwYXJ0aXRpb25Ib3N0TmFtZXMuZ2V0KCksIHBhcnRpdGlvbi5nZXQo
KSk7Ci0gICAgfQotfQotCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhckhTVFNDYWNoZShXZWJD
b3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIHN0ZDo6Y2hyb25vOjpzeXN0ZW1f
Y2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSkKIHsKICAgICBOU1RpbWVJbnRlcnZhbCB0
aW1lSW50ZXJ2YWwgPSBzdGQ6OmNocm9ubzo6ZHVyYXRpb25fY2FzdDxzdGQ6OmNocm9ubzo6ZHVy
YXRpb248ZG91YmxlPj4obW9kaWZpZWRTaW5jZS50aW1lX3NpbmNlX2Vwb2NoKCkpLmNvdW50KCk7
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSVNlY3VyaXR5T3JpZ2luLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElTZWN1cml0eU9yaWdpbi5o
CShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSVNlY3Vy
aXR5T3JpZ2luLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDMzICsyNiwzMyBAQAogI3ByYWdtYSBv
bmNlCiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VTY2hl
bWVSZWdpc3RyeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KLSNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgU2VjdXJp
dHlPcmlnaW4gOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpTZWN1
cml0eU9yaWdpbj4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+
IGNyZWF0ZUZyb21TdHJpbmcoY29uc3QgV1RGOjpTdHJpbmcmIHN0cmluZykKKyAgICBzdGF0aWMg
UmVmPFNlY3VyaXR5T3JpZ2luPiBjcmVhdGVGcm9tU3RyaW5nKGNvbnN0IFdURjo6U3RyaW5nJiBz
dHJpbmcsIGNvbnN0IFdlYkNvcmU6OlBhZ2VTY2hlbWVSZWdpc3RyeSYgc2NoZW1lUmVnaXN0cnkp
CiAgICAgewotICAgICAgICByZXR1cm4gY3JlYXRlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpj
cmVhdGVGcm9tU3RyaW5nKHN0cmluZykpOworICAgICAgICByZXR1cm4gY3JlYXRlKFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHN0cmluZywgc2NoZW1lUmVnaXN0cnkp
KTsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBjcmVhdGUoY29u
c3QgV1RGOjpTdHJpbmcmIHByb3RvY29sLCBjb25zdCBXVEY6OlN0cmluZyYgaG9zdCwgT3B0aW9u
YWw8dWludDE2X3Q+IHBvcnQpCisgICAgc3RhdGljIFJlZjxTZWN1cml0eU9yaWdpbj4gY3JlYXRl
KGNvbnN0IFdURjo6U3RyaW5nJiBwcm90b2NvbCwgY29uc3QgV1RGOjpTdHJpbmcmIGhvc3QsIE9w
dGlvbmFsPHVpbnQxNl90PiBwb3J0LCBjb25zdCBXZWJDb3JlOjpQYWdlU2NoZW1lUmVnaXN0cnkm
IHNjaGVtZVJlZ2lzdHJ5KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZShXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHByb3RvY29sLCBob3N0LCBwb3J0KSk7CisgICAgICAgIHJl
dHVybiBjcmVhdGUoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShwcm90b2NvbCwgaG9z
dCwgcG9ydCwgc2NoZW1lUmVnaXN0cnkpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHNlY3Vy
aXR5T3JpZ2luKQorICAgIHN0YXRpYyBSZWY8U2VjdXJpdHlPcmlnaW4+IGNyZWF0ZShjb25zdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4pCiAgICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFNlY3VyaXR5T3JpZ2luKHNlY3VyaXR5T3JpZ2luKSk7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNlY3VyaXR5T3JpZ2luKHNlY3VyaXR5T3JpZ2luKSk7
CiAgICAgfQogCi0gICAgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luKCkg
Y29uc3QgeyByZXR1cm4gKm1fc2VjdXJpdHlPcmlnaW47IH0KKyAgICBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4oKSB7IHJldHVybiBtX3NlY3VyaXR5T3JpZ2luLmdldCgp
OyB9CiAKIHByaXZhdGU6Ci0gICAgU2VjdXJpdHlPcmlnaW4oUGFzc1JlZlB0cjxXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4pCi0gICAgICAgIDogbV9zZWN1cml0eU9yaWdp
bihzZWN1cml0eU9yaWdpbikKKyAgICBTZWN1cml0eU9yaWdpbihSZWY8V2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW4+JiYgc2VjdXJpdHlPcmlnaW4pCisgICAgICAgIDogbV9zZWN1cml0eU9yaWdpbihX
VEZNb3ZlKHNlY3VyaXR5T3JpZ2luKSkKICAgICB7CiAgICAgfQogCkBAIC02MSw3ICs2MSw3IEBA
IHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbj4gbV9zZWN1cml0eU9yaWdpbjsKKyAgICBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+
IG1fc2VjdXJpdHlPcmlnaW47CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
QVBJL2MvV0tTZWN1cml0eU9yaWdpblJlZi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvU2hhcmVkL0FQSS9jL1dLU2VjdXJpdHlPcmlnaW5SZWYuY3BwCShyZXZpc2lvbiAyMDgzOTgp
CisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tTZWN1cml0eU9yaWdpblJlZi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM4LDE4ICszOCwyMSBAQCBXS1R5cGVJRCBXS1NlY3VyaXR5T3Jp
Z2luR2V0VHlwZUlEKCkKIAogV0tTZWN1cml0eU9yaWdpblJlZiBXS1NlY3VyaXR5T3JpZ2luQ3Jl
YXRlRnJvbVN0cmluZyhXS1N0cmluZ1JlZiBzdHJpbmcpCiB7Ci0gICAgcmV0dXJuIHRvQVBJKEFQ
STo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
RnJvbVN0cmluZyh0b0ltcGwoc3RyaW5nKS0+c3RyaW5nKCkpKS5sZWFrUmVmKCkpOworICAgIGF1
dG8gc2NoZW1lUmVnaXN0cnkgPSBXZWJDb3JlOjpQYWdlU2NoZW1lUmVnaXN0cnk6OmNyZWF0ZSgp
OworICAgIHJldHVybiB0b0FQSSgmQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHRvSW1wbChzdHJpbmcpLT5zdHJpbmco
KSwgc2NoZW1lUmVnaXN0cnkpKS5sZWFrUmVmKCkpOwogfQogCiBXS1NlY3VyaXR5T3JpZ2luUmVm
IFdLU2VjdXJpdHlPcmlnaW5DcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyKFdLU3RyaW5nUmVm
IGlkZW50aWZpZXIpCiB7Ci0gICAgcmV0dXJuIHRvQVBJKEFQSTo6U2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmll
cigodG9JbXBsKGlkZW50aWZpZXIpLT5zdHJpbmcoKSkpKS5sZWFrUmVmKCkpOworICAgIGF1dG8g
c2NoZW1lUmVnaXN0cnkgPSBXZWJDb3JlOjpQYWdlU2NoZW1lUmVnaXN0cnk6OmNyZWF0ZSgpOwor
ICAgIHJldHVybiB0b0FQSSgmQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyKCh0b0ltcGwoaWRlbnRp
ZmllciktPnN0cmluZygpKSwgc2NoZW1lUmVnaXN0cnkpKS5sZWFrUmVmKCkpOwogfQogCiBXS1Nl
Y3VyaXR5T3JpZ2luUmVmIFdLU2VjdXJpdHlPcmlnaW5DcmVhdGUoV0tTdHJpbmdSZWYgcHJvdG9j
b2wsIFdLU3RyaW5nUmVmIGhvc3QsIGludCBwb3J0KQogewotICAgIGF1dG8gc2VjdXJpdHlPcmln
aW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodG9JbXBsKHByb3RvY29sKS0+c3RyaW5n
KCksIHRvSW1wbChob3N0KS0+c3RyaW5nKCksIHBvcnQpOwotICAgIHJldHVybiB0b0FQSShzZWN1
cml0eU9yaWdpbi5sZWFrUmVmKCkpOworICAgIGF1dG8gc2NoZW1lUmVnaXN0cnkgPSBXZWJDb3Jl
OjpQYWdlU2NoZW1lUmVnaXN0cnk6OmNyZWF0ZSgpOworICAgIGF1dG8gc2VjdXJpdHlPcmlnaW4g
PSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodG9JbXBsKHByb3RvY29sKS0+c3RyaW5nKCks
IHRvSW1wbChob3N0KS0+c3RyaW5nKCksIHBvcnQsIHNjaGVtZVJlZ2lzdHJ5KTsKKyAgICByZXR1
cm4gdG9BUEkoJnNlY3VyaXR5T3JpZ2luLmxlYWtSZWYoKSk7CiB9CiAKIFdLU3RyaW5nUmVmIFdL
U2VjdXJpdHlPcmlnaW5Db3B5RGF0YWJhc2VJZGVudGlmaWVyKFdLU2VjdXJpdHlPcmlnaW5SZWYg
c2VjdXJpdHlPcmlnaW4pCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tTaGFy
ZWRBUElDYXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dL
U2hhcmVkQVBJQ2FzdC5oCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTIxMCw4ICsyMTAs
OCBAQCBpbmxpbmUgUHJveHlpbmdSZWZQdHI8QVBJOjpVUkxSZXNwb25zZT4gCiBpbmxpbmUgV0tT
ZWN1cml0eU9yaWdpblJlZiB0b0NvcGllZEFQSShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiogb3Jp
Z2luKQogewogICAgIGlmICghb3JpZ2luKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4g
dG9BUEkoQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKCpvcmlnaW4pLmxlYWtSZWYoKSk7Cisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiB0b0FQSSgmQVBJOjpTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlKCpvcmlnaW4pLmxlYWtSZWYoKSk7CiB9CiAKIC8qIEdlb21ldHJ5IGNvbnZl
cnNpb25zICovCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YS5jcHAJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYg
KzI3LDcgQEAKICNpbmNsdWRlICJXZWJzaXRlRGF0YS5oIgogCiAjaW5jbHVkZSAiQXJndW1lbnRD
b2RlcnMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VTY2hlbWVSZWdpc3RyeS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nSGFzaC5oPgogCkBAIC01MSw3ICs1Miw3IEBAIGJvb2wgV2Vic2l0ZURhdGE6OkVudHJ5Ojpk
ZWNvZGUoSVBDOjpEZWMKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5zaXplKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmVzdWx0Lm9yaWdpbiA9IHNlY3VyaXR5T3JpZ2lu
RGF0YS5zZWN1cml0eU9yaWdpbigpOworICAgIHJlc3VsdC5vcmlnaW4gPSBzZWN1cml0eU9yaWdp
bkRhdGEuc2VjdXJpdHlPcmlnaW4oV2ViQ29yZTo6UGFnZVNjaGVtZVJlZ2lzdHJ5OjpjcmVhdGUo
KSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlclByb3h5LmNwcAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvTWVkaWFDb25zdHJhaW50c0ltcGwuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdl
U2NoZW1lUmVnaXN0cnkuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlYWx0aW1lTWVkaWFTb3VyY2Uu
aD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC0xODgsMTEgKzE4OSwxMSBAQCB2b2lk
IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvIHVzZXJNZWRpYU9yaWdpbiA9IEFQSTo6U2VjdXJp
dHlPcmlnaW46OmNyZWF0ZShTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbURhdGFiYXNlSWRlbnRp
Zmllcih1c2VyTWVkaWFEb2N1bWVudE9yaWdpbklkZW50aWZpZXIpKTsKLSAgICAgICAgYXV0byB0
b3BMZXZlbE9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmllcih0b3BMZXZlbERvY3VtZW50T3JpZ2luSWRl
bnRpZmllcikpOworICAgICAgICBhdXRvIHVzZXJNZWRpYU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlP
cmlnaW46OmNyZWF0ZShTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmll
cih1c2VyTWVkaWFEb2N1bWVudE9yaWdpbklkZW50aWZpZXIsIFBhZ2VTY2hlbWVSZWdpc3RyeTo6
Y3JlYXRlKCkpKTsKKyAgICAgICAgYXV0byB0b3BMZXZlbE9yaWdpbiA9IEFQSTo6U2VjdXJpdHlP
cmlnaW46OmNyZWF0ZShTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmll
cih0b3BMZXZlbERvY3VtZW50T3JpZ2luSWRlbnRpZmllciwgUGFnZVNjaGVtZVJlZ2lzdHJ5Ojpj
cmVhdGUoKSkpOwogICAgICAgICBhdXRvIHJlcXVlc3QgPSBjcmVhdGVSZXF1ZXN0KHVzZXJNZWRp
YUlELCBhdWRpb0RldmljZVVJRHMsIHZpZGVvRGV2aWNlVUlEcyk7CiAKLSAgICAgICAgaWYgKCFt
X3BhZ2UudWlDbGllbnQoKS5kZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dChtX3BhZ2UsICptX3BhZ2UucHJvY2VzcygpLndlYkZyYW1lKGZyYW1lSUQpLCAqdXNlck1lZGlh
T3JpZ2luLmdldCgpLCAqdG9wTGV2ZWxPcmlnaW4uZ2V0KCksIHJlcXVlc3QuZ2V0KCkpKSB7Cisg
ICAgICAgIGlmICghbV9wYWdlLnVpQ2xpZW50KCkuZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3QobV9wYWdlLCAqbV9wYWdlLnByb2Nlc3MoKS53ZWJGcmFtZShmcmFtZUlE
KSwgdXNlck1lZGlhT3JpZ2luLmdldCgpLCB0b3BMZXZlbE9yaWdpbi5nZXQoKSwgcmVxdWVzdC5n
ZXQoKSkpIHsKICAgICAgICAgICAgIG1fcGVuZGluZ1VzZXJNZWRpYVJlcXVlc3RzLnRha2UodXNl
ck1lZGlhSUQpOwogICAgICAgICAgICAgcmVxdWVzdC0+ZGVueShVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdFByb3h5OjpVc2VyTWVkaWFBY2Nlc3NEZW5pYWxSZWFzb246OlVzZXJNZWRpYURpc2Fi
bGVkKTsKICAgICAgICAgfQpAQCAtMjE5LDEwICsyMjAsMTAgQEAgdm9pZCBVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXJQcgogICAgIGF1dG8gcmVxdWVzdCA9IFVzZXJNZWRpYVBlcm1p
c3Npb25DaGVja1Byb3h5OjpjcmVhdGUoKnRoaXMsIHVzZXJNZWRpYUlEKTsKICAgICBtX3BlbmRp
bmdEZXZpY2VSZXF1ZXN0cy5hZGQodXNlck1lZGlhSUQsIHJlcXVlc3QucHRyKCkpOwogCi0gICAg
YXV0byB1c2VyTWVkaWFPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoU2VjdXJp
dHlPcmlnaW46OmNyZWF0ZUZyb21EYXRhYmFzZUlkZW50aWZpZXIodXNlck1lZGlhRG9jdW1lbnRP
cmlnaW5JZGVudGlmaWVyKSk7Ci0gICAgYXV0byB0b3BMZXZlbE9yaWdpbiA9IEFQSTo6U2VjdXJp
dHlPcmlnaW46OmNyZWF0ZShTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbURhdGFiYXNlSWRlbnRp
Zmllcih0b3BMZXZlbERvY3VtZW50T3JpZ2luSWRlbnRpZmllcikpOworICAgIGF1dG8gdXNlck1l
ZGlhT3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFNlY3VyaXR5T3JpZ2luOjpj
cmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyKHVzZXJNZWRpYURvY3VtZW50T3JpZ2luSWRlbnRp
ZmllciwgUGFnZVNjaGVtZVJlZ2lzdHJ5OjpjcmVhdGUoKSkpOworICAgIGF1dG8gdG9wTGV2ZWxP
cmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoU2VjdXJpdHlPcmlnaW46OmNyZWF0
ZUZyb21EYXRhYmFzZUlkZW50aWZpZXIodG9wTGV2ZWxEb2N1bWVudE9yaWdpbklkZW50aWZpZXIs
IFBhZ2VTY2hlbWVSZWdpc3RyeTo6Y3JlYXRlKCkpKTsKIAotICAgIGlmICghbV9wYWdlLnVpQ2xp
ZW50KCkuY2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uRm9yT3JpZ2luKG1fcGFnZSwgKm1fcGFnZS5w
cm9jZXNzKCkud2ViRnJhbWUoZnJhbWVJRCksICp1c2VyTWVkaWFPcmlnaW4uZ2V0KCksICp0b3BM
ZXZlbE9yaWdpbi5nZXQoKSwgcmVxdWVzdC5nZXQoKSkpIHsKKyAgICBpZiAoIW1fcGFnZS51aUNs
aWVudCgpLmNoZWNrVXNlck1lZGlhUGVybWlzc2lvbkZvck9yaWdpbihtX3BhZ2UsICptX3BhZ2Uu
cHJvY2VzcygpLndlYkZyYW1lKGZyYW1lSUQpLCB1c2VyTWVkaWFPcmlnaW4uZ2V0KCksIHRvcExl
dmVsT3JpZ2luLmdldCgpLCByZXF1ZXN0LmdldCgpKSkgewogICAgICAgICBtX3BlbmRpbmdEZXZp
Y2VSZXF1ZXN0cy50YWtlKHVzZXJNZWRpYUlEKTsKICAgICAgICAgbV9wYWdlLnByb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDb21wbGV0ZU1lZGlhRGV2aWNlRW51bWVyYXRpb24o
dXNlck1lZGlhSUQsIFZlY3RvcjxXZWJDb3JlOjpDYXB0dXJlRGV2aWNlPigpLCBlbXB0eVN0cmlu
ZygpLCBmYWxzZSksIG1fcGFnZS5wYWdlSUQoKSk7CiAgICAgfQpJbmRleDogU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NjM5LDEyICszNjM5LDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZp
Z2EKICAgICAgICAgUmVmUHRyPEFQSTo6RnJhbWVJbmZvPiBzb3VyY2VGcmFtZUluZm87CiAKICAg
ICAgICAgaWYgKGZyYW1lKQotICAgICAgICAgICAgZGVzdGluYXRpb25GcmFtZUluZm8gPSBBUEk6
OkZyYW1lSW5mbzo6Y3JlYXRlKCpmcmFtZSwgZnJhbWVTZWN1cml0eU9yaWdpbi5zZWN1cml0eU9y
aWdpbigpKTsKKyAgICAgICAgICAgIGRlc3RpbmF0aW9uRnJhbWVJbmZvID0gQVBJOjpGcmFtZUlu
Zm86OmNyZWF0ZSgqZnJhbWUsIGZyYW1lU2VjdXJpdHlPcmlnaW4uc2VjdXJpdHlPcmlnaW4oUGFn
ZVNjaGVtZVJlZ2lzdHJ5OjpjcmVhdGUoKSkpOwogCiAgICAgICAgIGlmIChvcmlnaW5hdGluZ0Zy
YW1lID09IGZyYW1lKQogICAgICAgICAgICAgc291cmNlRnJhbWVJbmZvID0gZGVzdGluYXRpb25G
cmFtZUluZm87CiAgICAgICAgIGVsc2UgaWYgKG9yaWdpbmF0aW5nRnJhbWUpCi0gICAgICAgICAg
ICBzb3VyY2VGcmFtZUluZm8gPSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKCpvcmlnaW5hdGluZ0Zy
YW1lLCBvcmlnaW5hdGluZ0ZyYW1lU2VjdXJpdHlPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKSk7Cisg
ICAgICAgICAgICBzb3VyY2VGcmFtZUluZm8gPSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKCpvcmln
aW5hdGluZ0ZyYW1lLCBvcmlnaW5hdGluZ0ZyYW1lU2VjdXJpdHlPcmlnaW4uc2VjdXJpdHlPcmln
aW4oUGFnZVNjaGVtZVJlZ2lzdHJ5OjpjcmVhdGUoKSkpOwogCiAgICAgICAgIGF1dG8gdXNlcklu
aXRpYXRlZEFjdGl2aXR5ID0gbV9wcm9jZXNzLT51c2VySW5pdGlhdGVkQWN0aXZpdHkobmF2aWdh
dGlvbkFjdGlvbkRhdGEudXNlckdlc3R1cmVUb2tlbklkZW50aWZpZXIpOwogICAgICAgICBib29s
IHNob3VsZE9wZW5BcHBMaW5rcyA9ICFtX3Nob3VsZFN1cHByZXNzQXBwTGlua3NJbk5leHROYXZp
Z2F0aW9uUG9saWN5RGVjaXNpb24gJiYgKCFkZXN0aW5hdGlvbkZyYW1lSW5mbyB8fCBkZXN0aW5h
dGlvbkZyYW1lSW5mby0+aXNNYWluRnJhbWUoKSkgJiYgIWhvc3RzQXJlRXF1YWwoVVJMKFBhcnNl
ZFVSTFN0cmluZywgbV9tYWluRnJhbWUtPnVybCgpKSwgcmVxdWVzdC51cmwoKSk7CkBAIC0zNjc5
LDcgKzM2NzksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luCiAg
ICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkgewogICAgICAgICBSZWZQdHI8QVBJOjpGcmFtZUlu
Zm8+IHNvdXJjZUZyYW1lSW5mbzsKICAgICAgICAgaWYgKGZyYW1lKQotICAgICAgICAgICAgc291
cmNlRnJhbWVJbmZvID0gQVBJOjpGcmFtZUluZm86OmNyZWF0ZSgqZnJhbWUsIGZyYW1lU2VjdXJp
dHlPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKSk7CisgICAgICAgICAgICBzb3VyY2VGcmFtZUluZm8g
PSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKCpmcmFtZSwgZnJhbWVTZWN1cml0eU9yaWdpbi5zZWN1
cml0eU9yaWdpbihQYWdlU2NoZW1lUmVnaXN0cnk6OmNyZWF0ZSgpKSk7CiAKICAgICAgICAgYXV0
byB1c2VySW5pdGlhdGVkQWN0aXZpdHkgPSBtX3Byb2Nlc3MtPnVzZXJJbml0aWF0ZWRBY3Rpdml0
eShuYXZpZ2F0aW9uQWN0aW9uRGF0YS51c2VyR2VzdHVyZVRva2VuSWRlbnRpZmllcik7CiAgICAg
ICAgIGJvb2wgc2hvdWxkT3BlbkFwcExpbmtzID0gIWhvc3RzQXJlRXF1YWwoVVJMKFBhcnNlZFVS
TFN0cmluZywgbV9tYWluRnJhbWUtPnVybCgpKSwgcmVxdWVzdC51cmwoKSk7CkBAIC0zNzAzLDcg
KzM3MDMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uCiAgICAg
UmVmPFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4gbGlzdGVuZXIgPSBmcmFtZS0+c2V0VXBQ
b2xpY3lMaXN0ZW5lclByb3h5KGxpc3RlbmVySUQpOwogCiAgICAgaWYgKG1fbmF2aWdhdGlvbkNs
aWVudCkgewotICAgICAgICBhdXRvIG5hdmlnYXRpb25SZXNwb25zZSA9IEFQSTo6TmF2aWdhdGlv
blJlc3BvbnNlOjpjcmVhdGUoQVBJOjpGcmFtZUluZm86OmNyZWF0ZSgqZnJhbWUsIGZyYW1lU2Vj
dXJpdHlPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKSkuZ2V0KCksIHJlcXVlc3QsIHJlc3BvbnNlLCBj
YW5TaG93TUlNRVR5cGUpOworICAgICAgICBhdXRvIG5hdmlnYXRpb25SZXNwb25zZSA9IEFQSTo6
TmF2aWdhdGlvblJlc3BvbnNlOjpjcmVhdGUoQVBJOjpGcmFtZUluZm86OmNyZWF0ZSgqZnJhbWUs
IGZyYW1lU2VjdXJpdHlPcmlnaW4uc2VjdXJpdHlPcmlnaW4oUGFnZVNjaGVtZVJlZ2lzdHJ5Ojpj
cmVhdGUoKSkpLmdldCgpLCByZXF1ZXN0LCByZXNwb25zZSwgY2FuU2hvd01JTUVUeXBlKTsKICAg
ICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9u
c2UoKnRoaXMsIG5hdmlnYXRpb25SZXNwb25zZS5nZXQoKSwgV1RGTW92ZShsaXN0ZW5lciksIG1f
cHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0
KCkpOwogICAgIH0gZWxzZQogICAgICAgICBtX3BvbGljeUNsaWVudC0+ZGVjaWRlUG9saWN5Rm9y
UmVzcG9uc2UoKnRoaXMsICpmcmFtZSwgcmVzcG9uc2UsIHJlcXVlc3QsIGNhblNob3dNSU1FVHlw
ZSwgV1RGTW92ZShsaXN0ZW5lciksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0
cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwpAQCAtNTYzNCw3ICs1NjM0LDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YQogICAgICAgICBXZWJGcmFtZVByb3h5
KiBmcmFtZSA9IG1fcHJvY2Vzcy0+d2ViRnJhbWUocmVjb3JkLT5mcmFtZUlEKTsKICAgICAgICAg
TUVTU0FHRV9DSEVDSyhmcmFtZSk7CiAKLSAgICAgICAgUmVmUHRyPEFQSTo6U2VjdXJpdHlPcmln
aW4+IG9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShTZWN1cml0eU9yaWdpbjo6
Y3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmllcihyZWNvcmQtPm9yaWdpbklkZW50aWZpZXIpKTsK
KyAgICAgICAgUmVmUHRyPEFQSTo6U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IEFQSTo6U2VjdXJp
dHlPcmlnaW46OmNyZWF0ZShTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbURhdGFiYXNlSWRlbnRp
ZmllcihyZWNvcmQtPm9yaWdpbklkZW50aWZpZXIsIFBhZ2VTY2hlbWVSZWdpc3RyeTo6Y3JlYXRl
KCkpKTsKICAgICAgICAgYXV0byBjdXJyZW50UmVwbHkgPSByZWNvcmQtPnJlcGx5OwogICAgICAg
ICBtX3VpQ2xpZW50LT5leGNlZWRlZERhdGFiYXNlUXVvdGEodGhpcywgZnJhbWUsIG9yaWdpbi5n
ZXQoKSwKICAgICAgICAgICAgIHJlY29yZC0+ZGF0YWJhc2VOYW1lLCByZWNvcmQtPmRpc3BsYXlO
YW1lLCByZWNvcmQtPmN1cnJlbnRRdW90YSwKQEAgLTU2NDcsNyArNTY0Nyw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpleGNlZWRlZERhdGFiYXNlUXVvdGEKIAogdm9pZCBXZWJQYWdlUHJveHk6OnJl
YWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVu
dGlmaWVyLCB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IHRvdGFsQnl0ZXNOZWVkZWQs
IFBhc3NSZWZQdHI8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVhY2hlZEFwcGxpY2F0aW9uQ2Fj
aGVPcmlnaW5RdW90YTo6RGVsYXllZFJlcGx5PiByZXBseSkKIHsKLSAgICBSZWY8U2VjdXJpdHlP
cmlnaW4+IHNlY3VyaXR5T3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21EYXRhYmFz
ZUlkZW50aWZpZXIob3JpZ2luSWRlbnRpZmllcik7CisgICAgUmVmPFNlY3VyaXR5T3JpZ2luPiBz
ZWN1cml0eU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlm
aWVyKG9yaWdpbklkZW50aWZpZXIsIFBhZ2VTY2hlbWVSZWdpc3RyeTo6Y3JlYXRlKCkpOwogICAg
IG1fdWlDbGllbnQtPnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEodGhpcywgc2Vj
dXJpdHlPcmlnaW4uZ2V0KCksIGN1cnJlbnRRdW90YSwgdG90YWxCeXRlc05lZWRlZCwgW3JlcGx5
XSh1bnNpZ25lZCBsb25nIGxvbmcgbmV3UXVvdGEpIHsgcmVwbHktPnNlbmQobmV3UXVvdGEpOyB9
KTsKIH0KIApAQCAtNTY1Nyw3ICs1NjU3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RH
ZW9sb2NhdGlvblBlcgogICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwogCiAgICAgLy8gRklYTUU6
IEdlb2xvY2F0aW9uIHNob3VsZCBwcm9iYWJseSBiZSB1c2luZyB0b1N0cmluZygpIGFzIGl0cyBz
dHJpbmcgcmVwcmVzZW50YXRpb24gaW5zdGVhZCBvZiBkYXRhYmFzZUlkZW50aWZpZXIoKS4KLSAg
ICBSZWZQdHI8QVBJOjpTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyKG9y
aWdpbklkZW50aWZpZXIpKTsKKyAgICBSZWZQdHI8QVBJOjpTZWN1cml0eU9yaWdpbj4gb3JpZ2lu
ID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9t
RGF0YWJhc2VJZGVudGlmaWVyKG9yaWdpbklkZW50aWZpZXIsIFBhZ2VTY2hlbWVSZWdpc3RyeTo6
Y3JlYXRlKCkpKTsKICAgICBSZWZQdHI8R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5
PiByZXF1ZXN0ID0gbV9nZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcmVhdGVS
ZXF1ZXN0KGdlb2xvY2F0aW9uSUQpOwogCiAgICAgaWYgKG1fdWlDbGllbnQtPmRlY2lkZVBvbGlj
eUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QodGhpcywgZnJhbWUsIG9yaWdpbi5nZXQo
KSwgcmVxdWVzdC5nZXQoKSkpCkBAIC01NzA2LDcgKzU3MDYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6cmVxdWVzdE5vdGlmaWNhdGlvblBlCiAgICAgaWYgKCFpc1JlcXVlc3RJRFZhbGlkKHJlcXVl
c3RJRCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxBUEk6OlNlY3VyaXR5T3JpZ2lu
PiBvcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKG9yaWdpblN0
cmluZyk7CisgICAgUmVmUHRyPEFQSTo6U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IEFQSTo6U2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcob3JpZ2luU3RyaW5nLCBQYWdlU2NoZW1lUmVn
aXN0cnk6OmNyZWF0ZSgpKTsKICAgICBSZWZQdHI8Tm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVl
c3Q+IHJlcXVlc3QgPSBtX25vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcmVh
dGVSZXF1ZXN0KHJlcXVlc3RJRCk7CiAgICAgCiAgICAgaWYgKCFtX3VpQ2xpZW50LT5kZWNpZGVQ
b2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdCh0aGlzLCBvcmlnaW4uZ2V0KCks
IHJlcXVlc3QuZ2V0KCkpKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElG
cmFtZUluZm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
QVBJRnJhbWVJbmZvLmNwcAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9BUElGcmFtZUluZm8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3
IEBACiAjaW5jbHVkZSAiQVBJRnJhbWVIYW5kbGUuaCIKICNpbmNsdWRlICJGcmFtZUluZm9EYXRh
LmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVQcm94eS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZVNj
aGVtZVJlZ2lzdHJ5Lmg+CiAKIG5hbWVzcGFjZSBBUEkgewogCkBAIC01Myw3ICs1NCw3IEBAIFJl
ZjxGcmFtZUluZm8+IEZyYW1lSW5mbzo6Y3JlYXRlKGNvbnN0IFcKIEZyYW1lSW5mbzo6RnJhbWVJ
bmZvKGNvbnN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSYgZnJhbWVJbmZvRGF0YSkKICAgICA6IG1f
aXNNYWluRnJhbWUoZnJhbWVJbmZvRGF0YS5pc01haW5GcmFtZSkKICAgICAsIG1fcmVxdWVzdChm
cmFtZUluZm9EYXRhLnJlcXVlc3QpCi0gICAgLCBtX3NlY3VyaXR5T3JpZ2luKCpTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlKGZyYW1lSW5mb0RhdGEuc2VjdXJpdHlPcmlnaW4uc2VjdXJpdHlPcmlnaW4o
KSkpCisgICAgLCBtX3NlY3VyaXR5T3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoZnJhbWVJ
bmZvRGF0YS5zZWN1cml0eU9yaWdpbi5zZWN1cml0eU9yaWdpbihXZWJDb3JlOjpQYWdlU2NoZW1l
UmVnaXN0cnk6OmNyZWF0ZSgpKSkpCiAgICAgLCBtX2hhbmRsZShBUEk6OkZyYW1lSGFuZGxlOjpj
cmVhdGUoZnJhbWVJbmZvRGF0YS5mcmFtZUlEKSkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
NzUsNyArNzUsNyBAQCBjbGFzcyBVSUNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+VUlD
bGllbnQoKSB7IH0KIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94
eT4gY3JlYXRlTmV3UGFnZShXZWJLaXQ6OldlYlBhZ2VQcm94eSosIFdlYktpdDo6V2ViRnJhbWVQ
cm94eSosIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJiwgY29uc3Qg
V2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSYpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2
aXJ0dWFsIFJlZlB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4gY3JlYXRlTmV3UGFnZShXZWJLaXQ6
OldlYlBhZ2VQcm94eSosIFdlYktpdDo6V2ViRnJhbWVQcm94eSosIGNvbnN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0
IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJiwgY29uc3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9u
RGF0YSYpIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2hvd1BhZ2UoV2Vi
S2l0OjpXZWJQYWdlUHJveHkqKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZnVsbHNjcmVlbk1heVJl
dHVyblRvSW5saW5lKFdlYktpdDo6V2ViUGFnZVByb3h5KikgeyB9CiAgICAgdmlydHVhbCB2b2lk
IGRpZEVudGVyRnVsbHNjcmVlbihXZWJLaXQ6OldlYlBhZ2VQcm94eSopIHsgfQpJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lLmNwcAkocmV2aXNpb24gMjA4Mzk4
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMzQsNyArMTM0LDcgQEAgV0tGcmFtZUhhbmRsZVJlZiBXS0ZyYW1lQ3JlYXRl
RnJhbWVIYW5kbAogCiBXS0ZyYW1lSW5mb1JlZiBXS0ZyYW1lQ3JlYXRlRnJhbWVJbmZvKFdLRnJh
bWVSZWYgZnJhbWVSZWYpCiB7Ci0gICAgcmV0dXJuIHRvQVBJKCZBUEk6OkZyYW1lSW5mbzo6Y3Jl
YXRlKCp0b0ltcGwoZnJhbWVSZWYpLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJv
bVN0cmluZyh0b0ltcGwoZnJhbWVSZWYpLT51cmwoKSkpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJu
IHRvQVBJKCZBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKCp0b0ltcGwoZnJhbWVSZWYpLCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyh0b0ltcGwoZnJhbWVSZWYpLT51cmwo
KSwgV2ViQ29yZTo6UGFnZVNjaGVtZVJlZ2lzdHJ5OjpjcmVhdGUoKSkpLmxlYWtSZWYoKSk7CiB9
CiAKIHZvaWQgV0tGcmFtZUdldE1haW5SZXNvdXJjZURhdGEoV0tGcmFtZVJlZiBmcmFtZVJlZiwg
V0tGcmFtZUdldFJlc291cmNlRGF0YUZ1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjb250ZXh0KQpJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFu
YWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
S2V5VmFsdWVTdG9yYWdlTWFuYWdlci5jcHAJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2Vy
R2V0U3RvcmFnZUQKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBvcmlnaW5EZXRhaWxzIDogc3Rv
cmFnZURldGFpbHMpIHsKICAgICAgICAgICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8QVBJOjpP
YmplY3Q+PiBkZXRhaWxzTWFwOwogCi0gICAgICAgICAgICBSZWZQdHI8QVBJOjpPYmplY3Q+IG9y
aWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmllcihvcmlnaW5EZXRhaWxzLm9yaWdpbklkZW50
aWZpZXIpKTsKKyAgICAgICAgICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4gb3JpZ2luID0gQVBJOjpT
ZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9t
RGF0YWJhc2VJZGVudGlmaWVyKG9yaWdpbkRldGFpbHMub3JpZ2luSWRlbnRpZmllciwgV2ViQ29y
ZTo6UGFnZVNjaGVtZVJlZ2lzdHJ5OjpjcmVhdGUoKSkpOwogCiAgICAgICAgICAgICBkZXRhaWxz
TWFwLnNldCh0b0ltcGwoV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0T3JpZ2luS2V5KCkpLT5z
dHJpbmcoKSwgb3JpZ2luKTsKICAgICAgICAgICAgIGlmIChvcmlnaW5EZXRhaWxzLmNyZWF0aW9u
VGltZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCShy
ZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzEsNiArNzEsNyBAQAogI2luY2x1ZGUgIldlYlByb2Nl
c3NQcm94eS5oIgogI2luY2x1ZGUgIldlYlByb3RlY3Rpb25TcGFjZS5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvUGFnZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZVNjaGVtZVJlZ2lzdHJ5Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1NlcmlhbGl6ZWRDcnlwdG9LZXlXcmFwLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dGZWF0
dXJlcy5oPgpAQCAtMTcwMywxMyArMTcwNCwxMyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VVSUNsaWVu
dChXS1BhZ2VSZWYgcGFnCiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIFBhc3NS
ZWZQdHI8V2ViUGFnZVByb3h5PiBjcmVhdGVOZXdQYWdlKFdlYlBhZ2VQcm94eSogcGFnZSwgV2Vi
RnJhbWVQcm94eSogaW5pdGlhdGluZ0ZyYW1lLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNl
Y3VyaXR5T3JpZ2luRGF0YSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3Qs
IGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiB3aW5kb3dGZWF0dXJlcywgY29uc3QgTmF2aWdhdGlvbkFj
dGlvbkRhdGEmIG5hdmlnYXRpb25BY3Rpb25EYXRhKSBvdmVycmlkZQorICAgICAgICBSZWZQdHI8
V2ViUGFnZVByb3h5PiBjcmVhdGVOZXdQYWdlKFdlYlBhZ2VQcm94eSogcGFnZSwgV2ViRnJhbWVQ
cm94eSogaW5pdGlhdGluZ0ZyYW1lLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5
T3JpZ2luRGF0YSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QsIGNvbnN0
IFdpbmRvd0ZlYXR1cmVzJiB3aW5kb3dGZWF0dXJlcywgY29uc3QgTmF2aWdhdGlvbkFjdGlvbkRh
dGEmIG5hdmlnYXRpb25BY3Rpb25EYXRhKSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAg
ICBpZiAobV9jbGllbnQuY3JlYXRlTmV3UGFnZSkgewogICAgICAgICAgICAgICAgIGF1dG8gY29u
ZmlndXJhdGlvbiA9IHBhZ2UtPmNvbmZpZ3VyYXRpb24oKS5jb3B5KCk7CiAgICAgICAgICAgICAg
ICAgY29uZmlndXJhdGlvbi0+c2V0UmVsYXRlZFBhZ2UocGFnZSk7CiAKLSAgICAgICAgICAgICAg
ICBhdXRvIHNvdXJjZUZyYW1lSW5mbyA9IEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoKmluaXRpYXRp
bmdGcmFtZSwgc2VjdXJpdHlPcmlnaW5EYXRhLnNlY3VyaXR5T3JpZ2luKCkpOworICAgICAgICAg
ICAgICAgIGF1dG8gc291cmNlRnJhbWVJbmZvID0gQVBJOjpGcmFtZUluZm86OmNyZWF0ZSgqaW5p
dGlhdGluZ0ZyYW1lLCBzZWN1cml0eU9yaWdpbkRhdGEuc2VjdXJpdHlPcmlnaW4oV2ViQ29yZTo6
UGFnZVNjaGVtZVJlZ2lzdHJ5OjpjcmVhdGUoKSkpOwogCiAgICAgICAgICAgICAgICAgYXV0byB1
c2VySW5pdGlhdGVkQWN0aXZpdHkgPSBwYWdlLT5wcm9jZXNzKCkudXNlckluaXRpYXRlZEFjdGl2
aXR5KG5hdmlnYXRpb25BY3Rpb25EYXRhLnVzZXJHZXN0dXJlVG9rZW5JZGVudGlmaWVyKTsKICAg
ICAgICAgICAgICAgICBib29sIHNob3VsZE9wZW5BcHBMaW5rcyA9ICFob3N0c0FyZUVxdWFsKFdl
YkNvcmU6OlVSTChXZWJDb3JlOjpQYXJzZWRVUkxTdHJpbmcsIGluaXRpYXRpbmdGcmFtZS0+dXJs
KCkpLCByZXNvdXJjZVJlcXVlc3QudXJsKCkpOwpAQCAtMTgwNCwxMyArMTgwNSwxMyBAQCB2b2lk
IFdLUGFnZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFnCiAgICAgICAgIHsKICAgICAgICAg
ICAgIGlmIChtX2NsaWVudC5ydW5KYXZhU2NyaXB0QWxlcnQpIHsKICAgICAgICAgICAgICAgICBS
ZWZQdHI8UnVuSmF2YVNjcmlwdEFsZXJ0UmVzdWx0TGlzdGVuZXI+IGxpc3RlbmVyID0gUnVuSmF2
YVNjcmlwdEFsZXJ0UmVzdWx0TGlzdGVuZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPEFQSTo6U2VjdXJpdHlPcmlnaW4+IHNlY3Vy
aXR5T3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHNlY3VyaXR5T3JpZ2luRGF0
YS5wcm90b2NvbCwgc2VjdXJpdHlPcmlnaW5EYXRhLmhvc3QsIHNlY3VyaXR5T3JpZ2luRGF0YS5w
b3J0KTsKKyAgICAgICAgICAgICAgICBSZWZQdHI8QVBJOjpTZWN1cml0eU9yaWdpbj4gc2VjdXJp
dHlPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoc2VjdXJpdHlPcmlnaW5EYXRh
LnByb3RvY29sLCBzZWN1cml0eU9yaWdpbkRhdGEuaG9zdCwgc2VjdXJpdHlPcmlnaW5EYXRhLnBv
cnQsIFdlYkNvcmU6OlBhZ2VTY2hlbWVSZWdpc3RyeTo6Y3JlYXRlKCkpOwogICAgICAgICAgICAg
ICAgIG1fY2xpZW50LnJ1bkphdmFTY3JpcHRBbGVydCh0b0FQSShwYWdlKSwgdG9BUEkobWVzc2Fn
ZS5pbXBsKCkpLCB0b0FQSShmcmFtZSksIHRvQVBJKHNlY3VyaXR5T3JpZ2luLmdldCgpKSwgdG9B
UEkobGlzdGVuZXIuZ2V0KCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKG1fY2xpZW50
LnJ1bkphdmFTY3JpcHRBbGVydF9kZXByZWNhdGVkRm9yVXNlV2l0aFY1KSB7Ci0gICAgICAgICAg
ICAgICAgUmVmUHRyPEFQSTo6U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luID0gQVBJOjpT
ZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHNlY3VyaXR5T3JpZ2luRGF0YS5wcm90b2NvbCwgc2VjdXJp
dHlPcmlnaW5EYXRhLmhvc3QsIHNlY3VyaXR5T3JpZ2luRGF0YS5wb3J0KTsKKyAgICAgICAgICAg
ICAgICBSZWZQdHI8QVBJOjpTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBBUEk6OlNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGUoc2VjdXJpdHlPcmlnaW5EYXRhLnByb3RvY29sLCBzZWN1cml0
eU9yaWdpbkRhdGEuaG9zdCwgc2VjdXJpdHlPcmlnaW5EYXRhLnBvcnQsIFdlYkNvcmU6OlBhZ2VT
Y2hlbWVSZWdpc3RyeTo6Y3JlYXRlKCkpOwogICAgICAgICAgICAgICAgIG1fY2xpZW50LnJ1bkph
dmFTY3JpcHRBbGVydF9kZXByZWNhdGVkRm9yVXNlV2l0aFY1KHRvQVBJKHBhZ2UpLCB0b0FQSSht
ZXNzYWdlLmltcGwoKSksIHRvQVBJKGZyYW1lKSwgdG9BUEkoc2VjdXJpdHlPcmlnaW4uZ2V0KCkp
LCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTgzMCwxMyArMTgzMSwxMyBA
QCB2b2lkIFdLUGFnZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFnCiAgICAgICAgIHsKICAg
ICAgICAgICAgIGlmIChtX2NsaWVudC5ydW5KYXZhU2NyaXB0Q29uZmlybSkgewogICAgICAgICAg
ICAgICAgIFJlZlB0cjxSdW5KYXZhU2NyaXB0Q29uZmlybVJlc3VsdExpc3RlbmVyPiBsaXN0ZW5l
ciA9IFJ1bkphdmFTY3JpcHRDb25maXJtUmVzdWx0TGlzdGVuZXI6OmNyZWF0ZShXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPEFQSTo6U2VjdXJpdHlP
cmlnaW4+IHNlY3VyaXR5T3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHNlY3Vy
aXR5T3JpZ2luRGF0YS5wcm90b2NvbCwgc2VjdXJpdHlPcmlnaW5EYXRhLmhvc3QsIHNlY3VyaXR5
T3JpZ2luRGF0YS5wb3J0KTsKKyAgICAgICAgICAgICAgICBSZWZQdHI8QVBJOjpTZWN1cml0eU9y
aWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoc2VjdXJp
dHlPcmlnaW5EYXRhLnByb3RvY29sLCBzZWN1cml0eU9yaWdpbkRhdGEuaG9zdCwgc2VjdXJpdHlP
cmlnaW5EYXRhLnBvcnQsIFdlYkNvcmU6OlBhZ2VTY2hlbWVSZWdpc3RyeTo6Y3JlYXRlKCkpOwog
ICAgICAgICAgICAgICAgIG1fY2xpZW50LnJ1bkphdmFTY3JpcHRDb25maXJtKHRvQVBJKHBhZ2Up
LCB0b0FQSShtZXNzYWdlLmltcGwoKSksIHRvQVBJKGZyYW1lKSwgdG9BUEkoc2VjdXJpdHlPcmln
aW4uZ2V0KCkpLCB0b0FQSShsaXN0ZW5lci5nZXQoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5m
byk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAg
ICBpZiAobV9jbGllbnQucnVuSmF2YVNjcmlwdENvbmZpcm1fZGVwcmVjYXRlZEZvclVzZVdpdGhW
NSkgewotICAgICAgICAgICAgICAgIFJlZlB0cjxBUEk6OlNlY3VyaXR5T3JpZ2luPiBzZWN1cml0
eU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShzZWN1cml0eU9yaWdpbkRhdGEu
cHJvdG9jb2wsIHNlY3VyaXR5T3JpZ2luRGF0YS5ob3N0LCBzZWN1cml0eU9yaWdpbkRhdGEucG9y
dCk7CisgICAgICAgICAgICAgICAgUmVmUHRyPEFQSTo6U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5
T3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHNlY3VyaXR5T3JpZ2luRGF0YS5w
cm90b2NvbCwgc2VjdXJpdHlPcmlnaW5EYXRhLmhvc3QsIHNlY3VyaXR5T3JpZ2luRGF0YS5wb3J0
LCBXZWJDb3JlOjpQYWdlU2NoZW1lUmVnaXN0cnk6OmNyZWF0ZSgpKTsKICAgICAgICAgICAgICAg
ICBib29sIHJlc3VsdCA9IG1fY2xpZW50LnJ1bkphdmFTY3JpcHRDb25maXJtX2RlcHJlY2F0ZWRG
b3JVc2VXaXRoVjUodG9BUEkocGFnZSksIHRvQVBJKG1lc3NhZ2UuaW1wbCgpKSwgdG9BUEkoZnJh
bWUpLCB0b0FQSShzZWN1cml0eU9yaWdpbi5nZXQoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5m
byk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
cmVzdWx0KTsKQEAgLTE4NTcsMTMgKzE4NTgsMTMgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlVUlDbGll
bnQoV0tQYWdlUmVmIHBhZwogICAgICAgICB7CiAgICAgICAgICAgICBpZiAobV9jbGllbnQucnVu
SmF2YVNjcmlwdFByb21wdCkgewogICAgICAgICAgICAgICAgIFJlZlB0cjxSdW5KYXZhU2NyaXB0
UHJvbXB0UmVzdWx0TGlzdGVuZXI+IGxpc3RlbmVyID0gUnVuSmF2YVNjcmlwdFByb21wdFJlc3Vs
dExpc3RlbmVyOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgICAgICAg
ICAgICAgIFJlZlB0cjxBUEk6OlNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9IEFQSTo6
U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShzZWN1cml0eU9yaWdpbkRhdGEucHJvdG9jb2wsIHNlY3Vy
aXR5T3JpZ2luRGF0YS5ob3N0LCBzZWN1cml0eU9yaWdpbkRhdGEucG9ydCk7CisgICAgICAgICAg
ICAgICAgUmVmUHRyPEFQSTo6U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luID0gQVBJOjpT
ZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHNlY3VyaXR5T3JpZ2luRGF0YS5wcm90b2NvbCwgc2VjdXJp
dHlPcmlnaW5EYXRhLmhvc3QsIHNlY3VyaXR5T3JpZ2luRGF0YS5wb3J0LCBXZWJDb3JlOjpQYWdl
U2NoZW1lUmVnaXN0cnk6OmNyZWF0ZSgpKTsKICAgICAgICAgICAgICAgICBtX2NsaWVudC5ydW5K
YXZhU2NyaXB0UHJvbXB0KHRvQVBJKHBhZ2UpLCB0b0FQSShtZXNzYWdlLmltcGwoKSksIHRvQVBJ
KGRlZmF1bHRWYWx1ZS5pbXBsKCkpLCB0b0FQSShmcmFtZSksIHRvQVBJKHNlY3VyaXR5T3JpZ2lu
LmdldCgpKSwgdG9BUEkobGlzdGVuZXIuZ2V0KCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8p
OwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAg
aWYgKG1fY2xpZW50LnJ1bkphdmFTY3JpcHRQcm9tcHRfZGVwcmVjYXRlZEZvclVzZVdpdGhWNSkg
ewotICAgICAgICAgICAgICAgIFJlZlB0cjxBUEk6OlNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9y
aWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShzZWN1cml0eU9yaWdpbkRhdGEucHJv
dG9jb2wsIHNlY3VyaXR5T3JpZ2luRGF0YS5ob3N0LCBzZWN1cml0eU9yaWdpbkRhdGEucG9ydCk7
CisgICAgICAgICAgICAgICAgUmVmUHRyPEFQSTo6U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3Jp
Z2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHNlY3VyaXR5T3JpZ2luRGF0YS5wcm90
b2NvbCwgc2VjdXJpdHlPcmlnaW5EYXRhLmhvc3QsIHNlY3VyaXR5T3JpZ2luRGF0YS5wb3J0LCBX
ZWJDb3JlOjpQYWdlU2NoZW1lUmVnaXN0cnk6OmNyZWF0ZSgpKTsKICAgICAgICAgICAgICAgICBS
ZWZQdHI8QVBJOjpTdHJpbmc+IHN0cmluZyA9IGFkb3B0UmVmKHRvSW1wbChtX2NsaWVudC5ydW5K
YXZhU2NyaXB0UHJvbXB0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUodG9BUEkocGFnZSksIHRvQVBJ
KG1lc3NhZ2UuaW1wbCgpKSwgdG9BUEkoZGVmYXVsdFZhbHVlLmltcGwoKSksIHRvQVBJKGZyYW1l
KSwgdG9BUEkoc2VjdXJpdHlPcmlnaW4uZ2V0KCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8p
KSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaWYgKHN0cmluZykKQEAgLTIy
OTMsNyArMjI5NCw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZU5hdmlnYXRpb25DbGllbnQoV0tQYWcK
ICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRGYWlsUHJvdmlzaW9uYWxM
b2FkSW5TdWJmcmFtZSkKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2Ns
aWVudC5kaWRGYWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFtZSh0b0FQSSgmcGFnZSksIHRvQVBJ
KG5hdmlnYXRpb24pLCB0b0FQSShBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKHN1YmZyYW1lLCBzZWN1
cml0eU9yaWdpbkRhdGEuc2VjdXJpdHlPcmlnaW4oKSkucHRyKCkpLCB0b0FQSShlcnJvciksIHRv
QVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgIG1f
Y2xpZW50LmRpZEZhaWxQcm92aXNpb25hbExvYWRJblN1YmZyYW1lKHRvQVBJKCZwYWdlKSwgdG9B
UEkobmF2aWdhdGlvbiksIHRvQVBJKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoc3ViZnJhbWUsIHNl
Y3VyaXR5T3JpZ2luRGF0YS5zZWN1cml0eU9yaWdpbihXZWJDb3JlOjpQYWdlU2NoZW1lUmVnaXN0
cnk6OmNyZWF0ZSgpKSkucHRyKCkpLCB0b0FQSShlcnJvciksIHRvQVBJKHVzZXJEYXRhKSwgbV9j
bGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgZGlkRmlu
aXNoRG9jdW1lbnRMb2FkKFdlYlBhZ2VQcm94eSYgcGFnZSwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZp
Z2F0aW9uLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0JKHJldmlzaW9u
IDIwODM5OCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3Rh
dGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTYzLDYgKzYzLDcgQEAKICNpbXBvcnQgIl9XS1JlbmRl
cmluZ1Byb2dyZXNzRXZlbnRzSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS1NhbWVEb2N1bWVudE5h
dmlnYXRpb25UeXBlSW50ZXJuYWwuaCIKICNpbXBvcnQgPFdlYkNvcmUvQ3JlZGVudGlhbC5oPgor
I2ltcG9ydCA8V2ViQ29yZS9QYWdlU2NoZW1lUmVnaXN0cnkuaD4KICNpbXBvcnQgPFdlYkNvcmUv
U2VjdXJpdHlPcmlnaW5EYXRhLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NlcmlhbGl6ZWRDcnlwdG9L
ZXlXcmFwLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgpAQCAtNTAzLDcgKzUwNCw3IEBAIHZv
aWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjoKICAgICBhdXRvIG5hdmlnYXRp
b25EZWxlZ2F0ZSA9IG1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlLmdldCgp
OwogICAgIGF1dG8gZXJyb3JXaXRoUmVjb3ZlcnlBdHRlbXB0ZXIgPSBjcmVhdGVFcnJvcldpdGhS
ZWNvdmVyeUF0dGVtcHRlcihtX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcsIHdlYkZyYW1lUHJv
eHksIGVycm9yKTsKIAotICAgIFsoaWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4pbmF2
aWdhdGlvbkRlbGVnYXRlIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBuYXZp
Z2F0aW9uOm5pbCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFtZTp3cmFwcGVyKEFQSTo6
RnJhbWVJbmZvOjpjcmVhdGUod2ViRnJhbWVQcm94eSwgc2VjdXJpdHlPcmlnaW4uc2VjdXJpdHlP
cmlnaW4oKSkpIHdpdGhFcnJvcjplcnJvcldpdGhSZWNvdmVyeUF0dGVtcHRlci5nZXQoKV07Cisg
ICAgWyhpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPiluYXZpZ2F0aW9uRGVsZWdhdGUg
X3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3IG5hdmlnYXRpb246bmlsIGRpZEZh
aWxQcm92aXNpb25hbExvYWRJblN1YmZyYW1lOndyYXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0
ZSh3ZWJGcmFtZVByb3h5LCBzZWN1cml0eU9yaWdpbi5zZWN1cml0eU9yaWdpbihQYWdlU2NoZW1l
UmVnaXN0cnk6OmNyZWF0ZSgpKSkpIHdpdGhFcnJvcjplcnJvcldpdGhSZWNvdmVyeUF0dGVtcHRl
ci5nZXQoKV07CiB9CiAKIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50Ojpk
aWRDb21taXROYXZpZ2F0aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgQVBJOjpOYXZpZ2F0aW9uKiBu
YXZpZ2F0aW9uLCBBUEk6Ok9iamVjdCopCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Q29jb2EvVUlEZWxlZ2F0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db2NvYS9VSURlbGVnYXRlLmgJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTc2LDcgKzc2
LDcgQEAgcHJpdmF0ZToKIAogICAgIHByaXZhdGU6CiAgICAgICAgIC8vIEFQSTo6VUlDbGllbnQK
LSAgICAgICAgUGFzc1JlZlB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4gY3JlYXRlTmV3UGFnZShX
ZWJLaXQ6OldlYlBhZ2VQcm94eSosIFdlYktpdDo6V2ViRnJhbWVQcm94eSosIGNvbnN0IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJiwgY29uc3QgV2ViS2l0OjpOYXZpZ2F0aW9u
QWN0aW9uRGF0YSYpIG92ZXJyaWRlOworICAgICAgICBSZWZQdHI8V2ViS2l0OjpXZWJQYWdlUHJv
eHk+IGNyZWF0ZU5ld1BhZ2UoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBXZWJLaXQ6OldlYkZyYW1l
UHJveHkqLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYsIGNvbnN0
IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEmKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBj
bG9zZShXZWJLaXQ6OldlYlBhZ2VQcm94eSopIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGZ1bGxz
Y3JlZW5NYXlSZXR1cm5Ub0lubGluZShXZWJLaXQ6OldlYlBhZ2VQcm94eSopIG92ZXJyaWRlOwog
ICAgICAgICB2b2lkIGRpZEVudGVyRnVsbHNjcmVlbihXZWJLaXQ6OldlYlBhZ2VQcm94eSopIG92
ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdh
dGUubW0JKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2Nv
YS9VSURlbGVnYXRlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAjaW1wb3J0
ICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbXBvcnQgIl9XS0NvbnRleHRNZW51RWxlbWVudEluZm8u
aCIKICNpbXBvcnQgIl9XS0ZyYW1lSGFuZGxlSW50ZXJuYWwuaCIKKyNpbXBvcnQgPFdlYkNvcmUv
UGFnZVNjaGVtZVJlZ2lzdHJ5Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0
YS5oPgogI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgpA
QCAtMTQ5LDcgKzE1MCw3IEBAIFVJRGVsZWdhdGU6OlVJQ2xpZW50Ojp+VUlDbGllbnQoKQogewog
fQogCi1QYXNzUmVmUHRyPFdlYktpdDo6V2ViUGFnZVByb3h5PiBVSURlbGVnYXRlOjpVSUNsaWVu
dDo6Y3JlYXRlTmV3UGFnZShXZWJLaXQ6OldlYlBhZ2VQcm94eSogcGFnZSwgV2ViS2l0OjpXZWJG
cmFtZVByb3h5KiBpbml0aWF0aW5nRnJhbWUsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSYgc2VjdXJpdHlPcmlnaW5EYXRhLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJiB3aW5kb3dGZWF0dXJlcywg
Y29uc3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSYgbmF2aWdhdGlvbkFjdGlvbkRhdGEp
CitSZWZQdHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+IFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpjcmVh
dGVOZXdQYWdlKFdlYktpdDo6V2ViUGFnZVByb3h5KiBwYWdlLCBXZWJLaXQ6OldlYkZyYW1lUHJv
eHkqIGluaXRpYXRpbmdGcmFtZSwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBz
ZWN1cml0eU9yaWdpbkRhdGEsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgY29uc3QgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMmIHdpbmRvd0ZlYXR1cmVzLCBjb25zdCBX
ZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSkKIHsKICAg
ICBpZiAoIW1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3Q3JlYXRlV2ViVmll
d1dpdGhDb25maWd1cmF0aW9uRm9yTmF2aWdhdGlvbkFjdGlvbldpbmRvd0ZlYXR1cmVzKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE2MSw3ICsxNjIsNyBAQCBQYXNzUmVmUHRyPFdlYktp
dDo6V2ViUGFnZVByb3h5PiBVSURlbGVnCiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHRO
UyhbbV91aURlbGVnYXRlLm1fd2ViVmlldy0+X2NvbmZpZ3VyYXRpb24gY29weV0pOwogICAgIFtj
b25maWd1cmF0aW9uIF9zZXRSZWxhdGVkV2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3XTsK
IAotICAgIGF1dG8gc291cmNlRnJhbWVJbmZvID0gQVBJOjpGcmFtZUluZm86OmNyZWF0ZSgqaW5p
dGlhdGluZ0ZyYW1lLCBzZWN1cml0eU9yaWdpbkRhdGEuc2VjdXJpdHlPcmlnaW4oKSk7CisgICAg
YXV0byBzb3VyY2VGcmFtZUluZm8gPSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKCppbml0aWF0aW5n
RnJhbWUsIHNlY3VyaXR5T3JpZ2luRGF0YS5zZWN1cml0eU9yaWdpbihXZWJDb3JlOjpQYWdlU2No
ZW1lUmVnaXN0cnk6OmNyZWF0ZSgpKSk7CiAKICAgICBhdXRvIHVzZXJJbml0aWF0ZWRBY3Rpdml0
eSA9IHBhZ2UtPnByb2Nlc3MoKS51c2VySW5pdGlhdGVkQWN0aXZpdHkobmF2aWdhdGlvbkFjdGlv
bkRhdGEudXNlckdlc3R1cmVUb2tlbklkZW50aWZpZXIpOwogICAgIGJvb2wgc2hvdWxkT3BlbkFw
cExpbmtzID0gIWhvc3RzQXJlRXF1YWwoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlBhcnNlZFVSTFN0
cmluZywgaW5pdGlhdGluZ0ZyYW1lLT51cmwoKSksIHJlcXVlc3QudXJsKCkpOwpAQCAtMTk0LDcg
KzE5NSw3IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bkphdmFTY3JpcHQKICAgICB9
CiAKICAgICBSZWZQdHI8Q29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcj4gY2hlY2tlciA9IENv
bXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShkZWxlZ2F0ZS5nZXQoKSwgQHNlbGVj
dG9yKHdlYlZpZXc6cnVuSmF2YVNjcmlwdEFsZXJ0UGFuZWxXaXRoTWVzc2FnZTppbml0aWF0ZWRC
eUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOikpOwotICAgIFtkZWxlZ2F0ZSB3ZWJWaWV3Om1fdWlE
ZWxlZ2F0ZS5tX3dlYlZpZXcgcnVuSmF2YVNjcmlwdEFsZXJ0UGFuZWxXaXRoTWVzc2FnZTptZXNz
YWdlIGluaXRpYXRlZEJ5RnJhbWU6d3JhcHBlcihBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKCp3ZWJG
cmFtZVByb3h5LCBzZWN1cml0eU9yaWdpbkRhdGEuc2VjdXJpdHlPcmlnaW4oKSkpIGNvbXBsZXRp
b25IYW5kbGVyOkJsb2NrUHRyPHZvaWQgKCk+Ojpmcm9tQ2FsbGFibGUoW2NvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNr
ZXIpXSB7CisgICAgW2RlbGVnYXRlIHdlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyBydW5K
YXZhU2NyaXB0QWxlcnRQYW5lbFdpdGhNZXNzYWdlOm1lc3NhZ2UgaW5pdGlhdGVkQnlGcmFtZTp3
cmFwcGVyKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoKndlYkZyYW1lUHJveHksIHNlY3VyaXR5T3Jp
Z2luRGF0YS5zZWN1cml0eU9yaWdpbihXZWJDb3JlOjpQYWdlU2NoZW1lUmVnaXN0cnk6OmNyZWF0
ZSgpKSkpIGNvbXBsZXRpb25IYW5kbGVyOkJsb2NrUHRyPHZvaWQgKCk+Ojpmcm9tQ2FsbGFibGUo
W2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGNoZWNrZXIg
PSBXVEZNb3ZlKGNoZWNrZXIpXSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAg
ICAgIGNoZWNrZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOwogICAgIH0pLmdldCgpXTsK
QEAgLTIxNCw3ICsyMTUsNyBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5KYXZhU2Ny
aXB0CiAgICAgfQogCiAgICAgUmVmUHRyPENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI+IGNo
ZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUoZGVsZWdhdGUuZ2V0
KCksIEBzZWxlY3Rvcih3ZWJWaWV3OnJ1bkphdmFTY3JpcHRDb25maXJtUGFuZWxXaXRoTWVzc2Fn
ZTppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOikpOwotICAgIFtkZWxlZ2F0ZSB3
ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgcnVuSmF2YVNjcmlwdENvbmZpcm1QYW5lbFdp
dGhNZXNzYWdlOm1lc3NhZ2UgaW5pdGlhdGVkQnlGcmFtZTp3cmFwcGVyKEFQSTo6RnJhbWVJbmZv
OjpjcmVhdGUoKndlYkZyYW1lUHJveHksIHNlY3VyaXR5T3JpZ2luRGF0YS5zZWN1cml0eU9yaWdp
bigpKSkgY29tcGxldGlvbkhhbmRsZXI6QmxvY2tQdHI8dm9pZCAoQk9PTCk+Ojpmcm9tQ2FsbGFi
bGUoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGNoZWNr
ZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXShCT09MIHJlc3VsdCkgeworICAgIFtkZWxlZ2F0ZSB3ZWJW
aWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgcnVuSmF2YVNjcmlwdENvbmZpcm1QYW5lbFdpdGhN
ZXNzYWdlOm1lc3NhZ2UgaW5pdGlhdGVkQnlGcmFtZTp3cmFwcGVyKEFQSTo6RnJhbWVJbmZvOjpj
cmVhdGUoKndlYkZyYW1lUHJveHksIHNlY3VyaXR5T3JpZ2luRGF0YS5zZWN1cml0eU9yaWdpbihX
ZWJDb3JlOjpQYWdlU2NoZW1lUmVnaXN0cnk6OmNyZWF0ZSgpKSkpIGNvbXBsZXRpb25IYW5kbGVy
OkJsb2NrUHRyPHZvaWQoQk9PTCk+Ojpmcm9tQ2FsbGFibGUoW2NvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXShC
T09MIHJlc3VsdCkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXN1bHQpOwogICAgICAg
ICBjaGVja2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9KS5nZXQoKV07CkBA
IC0yMzQsNyArMjM1LDcgQEAgdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuSmF2YVNjcmlw
dAogICAgIH0KIAogICAgIFJlZlB0cjxDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyPiBjaGVj
a2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKGRlbGVnYXRlLmdldCgp
LCBAc2VsZWN0b3Iod2ViVmlldzpydW5KYXZhU2NyaXB0VGV4dElucHV0UGFuZWxXaXRoUHJvbXB0
OmRlZmF1bHRUZXh0OmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6KSk7Ci0gICAg
W2RlbGVnYXRlIHdlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyBydW5KYXZhU2NyaXB0VGV4
dElucHV0UGFuZWxXaXRoUHJvbXB0Om1lc3NhZ2UgZGVmYXVsdFRleHQ6ZGVmYXVsdFZhbHVlIGlu
aXRpYXRlZEJ5RnJhbWU6d3JhcHBlcihBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKCp3ZWJGcmFtZVBy
b3h5LCBzZWN1cml0eU9yaWdpbkRhdGEuc2VjdXJpdHlPcmlnaW4oKSkpIGNvbXBsZXRpb25IYW5k
bGVyOkJsb2NrUHRyPHZvaWQgKE5TU3RyaW5nICopPjo6ZnJvbUNhbGxhYmxlKFtjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2VyID0gV1RGTW92ZShj
aGVja2VyKV0oTlNTdHJpbmcgKnJlc3VsdCkgeworICAgIFtkZWxlZ2F0ZSB3ZWJWaWV3Om1fdWlE
ZWxlZ2F0ZS5tX3dlYlZpZXcgcnVuSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsV2l0aFByb21wdDpt
ZXNzYWdlIGRlZmF1bHRUZXh0OmRlZmF1bHRWYWx1ZSBpbml0aWF0ZWRCeUZyYW1lOndyYXBwZXIo
QVBJOjpGcmFtZUluZm86OmNyZWF0ZSgqd2ViRnJhbWVQcm94eSwgc2VjdXJpdHlPcmlnaW5EYXRh
LnNlY3VyaXR5T3JpZ2luKFdlYkNvcmU6OlBhZ2VTY2hlbWVSZWdpc3RyeTo6Y3JlYXRlKCkpKSkg
Y29tcGxldGlvbkhhbmRsZXI6QmxvY2tQdHI8dm9pZChOU1N0cmluZyAqKT46OmZyb21DYWxsYWJs
ZShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY2hlY2tl
ciA9IFdURk1vdmUoY2hlY2tlcildKE5TU3RyaW5nICpyZXN1bHQpIHsKICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIocmVzdWx0KTsKICAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25I
YW5kbGVyKCk7CiAgICAgfSkuZ2V0KCldOwpAQCAtMjc1LDcgKzI3Niw3IEBAIGJvb2wgVUlEZWxl
Z2F0ZTo6VUlDbGllbnQ6OnJ1bk9wZW5QYW5lbCgKICAgICBpZiAoIWRlbGVnYXRlKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIGZyYW1lID0gQVBJOjpGcmFtZUluZm86OmNyZWF0
ZSgqd2ViRnJhbWVQcm94eSwgc2VjdXJpdHlPcmlnaW5EYXRhLnNlY3VyaXR5T3JpZ2luKCkpOwor
ICAgIGF1dG8gZnJhbWUgPSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKCp3ZWJGcmFtZVByb3h5LCBz
ZWN1cml0eU9yaWdpbkRhdGEuc2VjdXJpdHlPcmlnaW4oV2ViQ29yZTo6UGFnZVNjaGVtZVJlZ2lz
dHJ5OjpjcmVhdGUoKSkpOwogICAgIFJlZlB0cjxXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclBy
b3h5PiByZXN1bHRMaXN0ZW5lciA9IGxpc3RlbmVyOwogCiAgICAgUmVmUHRyPENvbXBsZXRpb25I
YW5kbGVyQ2FsbENoZWNrZXI+IGNoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2Vy
OjpjcmVhdGUoZGVsZWdhdGUuZ2V0KCksIEBzZWxlY3Rvcih3ZWJWaWV3OnJ1bk9wZW5QYW5lbFdp
dGhQYXJhbWV0ZXJzOmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6KSk7CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb24u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25z
L1dlYk5vdGlmaWNhdGlvbi5jcHAJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJO
b3RpZmljYXRpb24uaCIKIAorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZVNjaGVtZVJlZ2lzdHJ5Lmg+
CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBXZWJOb3RpZmljYXRpb246OldlYk5vdGlmaWNhdGlv
bihjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGJvZHksIGNvbnN0IFN0cmluZyYg
aWNvblVSTCwgY29uc3QgU3RyaW5nJiB0YWcsIGNvbnN0IFN0cmluZyYgbGFuZywgY29uc3QgU3Ry
aW5nJiBkaXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nLCB1aW50NjRfdCBub3RpZmljYXRp
b25JRCkKQEAgLTM1LDcgKzM3LDcgQEAgV2ViTm90aWZpY2F0aW9uOjpXZWJOb3RpZmljYXRpb24o
Y29uc3QgUwogICAgICwgbV90YWcodGFnKQogICAgICwgbV9sYW5nKGxhbmcpCiAgICAgLCBtX2Rp
cihkaXIpCi0gICAgLCBtX29yaWdpbihBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3Ry
aW5nKG9yaWdpblN0cmluZykpCisgICAgLCBtX29yaWdpbihBUEk6OlNlY3VyaXR5T3JpZ2luOjpj
cmVhdGVGcm9tU3RyaW5nKG9yaWdpblN0cmluZywgV2ViQ29yZTo6UGFnZVNjaGVtZVJlZ2lzdHJ5
OjpjcmVhdGUoKSkpCiAgICAgLCBtX25vdGlmaWNhdGlvbklEKG5vdGlmaWNhdGlvbklEKQogewog
fQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZp
Y2F0aW9uTWFuYWdlclByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCShyZXZp
c2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9X
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzAsNyAr
MjMwLDcgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZAogICAgICAg
ICBpdC0+a2V5LT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViTm90aWZpY2F0aW9uTWFuYWdl
cjo6RGlkQ2xvc2VOb3RpZmljYXRpb25zKGl0LT52YWx1ZSksIDApOwogfQogCi12b2lkIFdlYk5v
dGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRVcGRhdGVOb3RpZmljYXRpb25Qb2xp
Y3koY29uc3QgQVBJOjpTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBib29sIGFsbG93ZWQpCit2b2lk
IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRVcGRhdGVOb3RpZmljYXRp
b25Qb2xpY3koQVBJOjpTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBib29sIGFsbG93ZWQpCiB7CiAg
ICAgaWYgKCFwcm9jZXNzUG9vbCgpKQogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHku
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9X
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclBy
b3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgIHZvaWQg
cHJvdmlkZXJEaWRTaG93Tm90aWZpY2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKTsKICAg
ICB2b2lkIHByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb24odWludDY0X3Qgbm90aWZpY2F0aW9u
SUQpOwogICAgIHZvaWQgcHJvdmlkZXJEaWRDbG9zZU5vdGlmaWNhdGlvbnMoQVBJOjpBcnJheSog
bm90aWZpY2F0aW9uSURzKTsKLSAgICB2b2lkIHByb3ZpZGVyRGlkVXBkYXRlTm90aWZpY2F0aW9u
UG9saWN5KGNvbnN0IEFQSTo6U2VjdXJpdHlPcmlnaW4qLCBib29sIGFsbG93ZWQpOworICAgIHZv
aWQgcHJvdmlkZXJEaWRVcGRhdGVOb3RpZmljYXRpb25Qb2xpY3koQVBJOjpTZWN1cml0eU9yaWdp
biosIGJvb2wgYWxsb3dlZCk7CiAgICAgdm9pZCBwcm92aWRlckRpZFJlbW92ZU5vdGlmaWNhdGlv
blBvbGljaWVzKEFQSTo6QXJyYXkqIG9yaWdpbnMpOwogCiAgICAgdWludDY0X3Qgbm90aWZpY2F0
aW9uTG9jYWxJREZvclRlc3RpbmcoV2ViTm90aWZpY2F0aW9uKik7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL0xvY2FsU3RvcmFn
ZURhdGFiYXNlVHJhY2tlci5jcHAJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9TdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJMb2NhbFN0b3JhZ2VEYXRhYmFz
ZVRyYWNrZXIuaCIKIAogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvUGFnZVNjaGVtZVJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVG
aWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVTdGF0ZW1lbnQuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CkBAIC0xNjAsNyArMTYxLDcgQEAgVmVjdG9y
PFJlZjxTZWN1cml0eU9yaWdpbj4+IExvY2FsU3RvcmFnZQogICAgIGZvciAoY29uc3QgYXV0byYg
b3JpZ2luSWRlbnRpZmllciA6IG9yaWdpbklkZW50aWZpZXJzVG9EZWxldGUpIHsKICAgICAgICAg
cmVtb3ZlRGF0YWJhc2VXaXRoT3JpZ2luSWRlbnRpZmllcihvcmlnaW5JZGVudGlmaWVyKTsKIAot
ICAgICAgICBkZWxldGVkRGF0YWJhc2VPcmlnaW5zLnVuY2hlY2tlZEFwcGVuZChTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmllcihvcmlnaW5JZGVudGlmaWVyKSk7Cisg
ICAgICAgIGRlbGV0ZWREYXRhYmFzZU9yaWdpbnMudW5jaGVja2VkQXBwZW5kKFNlY3VyaXR5T3Jp
Z2luOjpjcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyKG9yaWdpbklkZW50aWZpZXIsIFBhZ2VT
Y2hlbWVSZWdpc3RyeTo6Y3JlYXRlKCkpKTsKICAgICB9CiAKICAgICByZXR1cm4gZGVsZXRlZERh
dGFiYXNlT3JpZ2luczsKQEAgLTE3Miw3ICsxNzMsNyBAQCBWZWN0b3I8UmVmPFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luPj4gTG9jCiAgICAgb3JpZ2lucy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1f
b3JpZ2lucy5zaXplKCkpOwogCiAgICAgZm9yIChjb25zdCBTdHJpbmcmIG9yaWdpbiA6IG1fb3Jp
Z2lucykKLSAgICAgICAgb3JpZ2lucy51bmNoZWNrZWRBcHBlbmQoU2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZUZyb21EYXRhYmFzZUlkZW50aWZpZXIob3JpZ2luKSk7CisgICAgICAgIG9yaWdpbnMudW5j
aGVja2VkQXBwZW5kKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVy
KG9yaWdpbiwgUGFnZVNjaGVtZVJlZ2lzdHJ5OjpjcmVhdGUoKSkpOwogCiAgICAgcmV0dXJuIG9y
aWdpbnM7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdl
TWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3Jh
Z2UvU3RvcmFnZU1hbmFnZXIuY3BwCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJTdG9yYWdlQXJlYU1hcE1lc3NhZ2VzLmgiCiAjaW5j
bHVkZSAiU3RvcmFnZU1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94
eS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZVNjaGVtZVJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5
T3JpZ2luSGFzaC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3RvcmFnZU1hcC5oPgpAQCAtNjg2LDcg
KzY4Nyw3IEBAIHZvaWQgU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU0KICAgICAv
LyBGSVhNRTogVGhpcyBzaG91bGQgYmUgYSBtZXNzYWdlIGNoZWNrLgogICAgIEFTU0VSVChsb2Nh
bFN0b3JhZ2VOYW1lc3BhY2UpOwogCi0gICAgYXV0byBzdG9yYWdlQXJlYSA9IGxvY2FsU3RvcmFn
ZU5hbWVzcGFjZS0+Z2V0T3JDcmVhdGVTdG9yYWdlQXJlYShzZWN1cml0eU9yaWdpbkRhdGEuc2Vj
dXJpdHlPcmlnaW4oKSk7CisgICAgYXV0byBzdG9yYWdlQXJlYSA9IGxvY2FsU3RvcmFnZU5hbWVz
cGFjZS0+Z2V0T3JDcmVhdGVTdG9yYWdlQXJlYShzZWN1cml0eU9yaWdpbkRhdGEuc2VjdXJpdHlP
cmlnaW4oUGFnZVNjaGVtZVJlZ2lzdHJ5OjpjcmVhdGUoKSkpOwogICAgIHN0b3JhZ2VBcmVhLT5h
ZGRMaXN0ZW5lcihjb25uZWN0aW9uLCBzdG9yYWdlTWFwSUQpOwogCiAgICAgcmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZSA9IFdURk1vdmUoc3RvcmFnZUFyZWEpOwpAQCAtNjk3LDcgKzY5OCw3IEBAIHZv
aWQgU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZVRyYW5zaWVudExvY2EKICAgICAvLyBGSVhNRTogVGhp
cyBzaG91bGQgYmUgYSBtZXNzYWdlIGNoZWNrLgogICAgIEFTU0VSVChtX3N0b3JhZ2VBcmVhc0J5
Q29ubmVjdGlvbi5pc1ZhbGlkS2V5KHsgJmNvbm5lY3Rpb24sIHN0b3JhZ2VNYXBJRCB9KSk7CiAK
LSAgICBSZWY8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IHNlY3VyaXR5T3JpZ2luRGF0YS5zZWN1
cml0eU9yaWdpbigpOworICAgIFJlZjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gc2VjdXJpdHlP
cmlnaW5EYXRhLnNlY3VyaXR5T3JpZ2luKFBhZ2VTY2hlbWVSZWdpc3RyeTo6Y3JlYXRlKCkpOwog
CiAgICAgLy8gU2VlIGlmIHdlIGFscmVhZHkgaGF2ZSBzZXNzaW9uIHN0b3JhZ2UgZm9yIHRoaXMg
Y29ubmVjdGlvbi9vcmlnaW4gY29tYm8uCiAgICAgLy8gSWYgc28sIHVwZGF0ZSB0aGUgbWFwIHdp
dGggdGhlIG5ldyBJRCwgb3RoZXJ3aXNlIGtlZXAgb24gdHJ1Y2tpbmcuCkBAIC03MjAsOSArNzIx
LDkgQEAgdm9pZCBTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlVHJhbnNpZW50TG9jYQogICAgIC8vIEZJ
WE1FOiBUaGlzIHNob3VsZCBiZSBhIG1lc3NhZ2UgY2hlY2suCiAgICAgQVNTRVJUKCFzbG90KTsK
IAotICAgIFRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSogdHJhbnNpZW50TG9jYWxTdG9y
YWdlTmFtZXNwYWNlID0gZ2V0T3JDcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2Uo
c3RvcmFnZU5hbWVzcGFjZUlELCB0b3BMZXZlbE9yaWdpbkRhdGEuc2VjdXJpdHlPcmlnaW4oKSk7
CisgICAgVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKiB0cmFuc2llbnRMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UgPSBnZXRPckNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShz
dG9yYWdlTmFtZXNwYWNlSUQsIHRvcExldmVsT3JpZ2luRGF0YS5zZWN1cml0eU9yaWdpbihQYWdl
U2NoZW1lUmVnaXN0cnk6OmNyZWF0ZSgpKSk7CiAKLSAgICBhdXRvIHN0b3JhZ2VBcmVhID0gdHJh
bnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlLT5nZXRPckNyZWF0ZVN0b3JhZ2VBcmVhKHNlY3Vy
aXR5T3JpZ2luRGF0YS5zZWN1cml0eU9yaWdpbigpKTsKKyAgICBhdXRvIHN0b3JhZ2VBcmVhID0g
dHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlLT5nZXRPckNyZWF0ZVN0b3JhZ2VBcmVhKHNl
Y3VyaXR5T3JpZ2luRGF0YS5zZWN1cml0eU9yaWdpbihQYWdlU2NoZW1lUmVnaXN0cnk6OmNyZWF0
ZSgpKSk7CiAgICAgc3RvcmFnZUFyZWEtPmFkZExpc3RlbmVyKGNvbm5lY3Rpb24sIHN0b3JhZ2VN
YXBJRCk7CiAKICAgICBzbG90ID0gV1RGTW92ZShzdG9yYWdlQXJlYSk7CkBAIC03NTEsNyArNzUy
LDcgQEAgdm9pZCBTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlU2Vzc2lvblN0b3JhZwogICAgIC8vIEZJ
WE1FOiBUaGlzIHNob3VsZCBiZSBhIG1lc3NhZ2UgY2hlY2suCiAgICAgQVNTRVJUKCZjb25uZWN0
aW9uID09IHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlLT5hbGxvd2VkQ29ubmVjdGlvbigpKTsKIAot
ICAgIGF1dG8gc3RvcmFnZUFyZWEgPSBzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS0+Z2V0T3JDcmVh
dGVTdG9yYWdlQXJlYShzZWN1cml0eU9yaWdpbkRhdGEuc2VjdXJpdHlPcmlnaW4oKSk7CisgICAg
YXV0byBzdG9yYWdlQXJlYSA9IHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlLT5nZXRPckNyZWF0ZVN0
b3JhZ2VBcmVhKHNlY3VyaXR5T3JpZ2luRGF0YS5zZWN1cml0eU9yaWdpbihQYWdlU2NoZW1lUmVn
aXN0cnk6OmNyZWF0ZSgpKSk7CiAgICAgc3RvcmFnZUFyZWEtPmFkZExpc3RlbmVyKGNvbm5lY3Rp
b24sIHN0b3JhZ2VNYXBJRCk7CiAKICAgICBzbG90ID0gV1RGTW92ZShzdG9yYWdlQXJlYSk7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuY3BwCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI1Nyw3ICsyNTcsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YShP
cHRpb25TCiAgICAgaWYgKGRhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkRpc2tD
YWNoZSkpIHsKICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5hZGRQZW5kaW5nQ2FsbGJhY2so
KTsKICAgICAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW2ZldGNoT3B0aW9ucywgbWVkaWFDYWNoZURp
cmVjdG9yeSA9IG1fY29uZmlndXJhdGlvbi5tZWRpYUNhY2hlRGlyZWN0b3J5Lmlzb2xhdGVkQ29w
eSgpLCBjYWxsYmFja0FnZ3JlZ2F0b3JdIHsKLSAgICAgICAgICAgIEhhc2hTZXQ8UmVmUHRyPFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luPj4gb3JpZ2lucyA9IFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQ6Om9yaWdpbnNJbk1lZGlhQ2FjaGUobWVkaWFDYWNoZURpcmVjdG9yeSk7CisgICAgICAgICAg
ICBIYXNoU2V0PFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnMgPSBXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50OjpvcmlnaW5zSW5NZWRpYUNhY2hlKG1lZGlhQ2FjaGVEaXJl
Y3RvcnksIFdlYkNvcmU6OlBhZ2VTY2hlbWVSZWdpc3RyeTo6Y3JlYXRlKCkpOwogICAgICAgICAg
ICAgV2Vic2l0ZURhdGEgd2Vic2l0ZURhdGE7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZv
ciAoYXV0byYgb3JpZ2luIDogb3JpZ2lucykgewpAQCAtMzUxLDcgKzM1MSw3IEBAIHZvaWQgV2Vi
c2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhKE9wdGlvblMKICAgICAgICAgY2FsbGJhY2tBZ2dyZWdh
dG9yLT5hZGRQZW5kaW5nQ2FsbGJhY2soKTsKIAogICAgICAgICBtX3F1ZXVlLT5kaXNwYXRjaChb
ZmV0Y2hPcHRpb25zLCBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gbV9jb25maWd1cmF0aW9u
LmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkuaXNvbGF0ZWRDb3B5KCksIGFwcGxpY2F0aW9uQ2Fj
aGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUgPSBtX2NvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25D
YWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZS5pc29sYXRlZENvcHkoKSwgY2FsbGJhY2tBZ2dy
ZWdhdG9yXSB7Ci0gICAgICAgICAgICBhdXRvIHN0b3JhZ2UgPSBXZWJDb3JlOjpBcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZTo6Y3JlYXRlKGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnksIGFwcGxpY2F0
aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUpOworICAgICAgICAgICAgYXV0byBzdG9y
YWdlID0gV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNyZWF0ZShhcHBsaWNhdGlv
bkNhY2hlRGlyZWN0b3J5LCBhcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1l
LCBXZWJDb3JlOjpQYWdlU2NoZW1lUmVnaXN0cnk6OmNyZWF0ZSgpKTsKIAogICAgICAgICAgICAg
V2Vic2l0ZURhdGEgd2Vic2l0ZURhdGE7CiAKQEAgLTYyMCw3ICs2MjAsNyBAQCB2b2lkIFdlYnNp
dGVEYXRhU3RvcmU6OnJlbW92ZURhdGEoT3B0aW9uCiAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRv
ci0+YWRkUGVuZGluZ0NhbGxiYWNrKCk7CiAKICAgICAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW2Fw
cGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25DYWNo
ZURpcmVjdG9yeS5pc29sYXRlZENvcHkoKSwgYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGly
ZWN0b3J5TmFtZSA9IG1fY29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJk
aXJlY3RvcnlOYW1lLmlzb2xhdGVkQ29weSgpLCBjYWxsYmFja0FnZ3JlZ2F0b3JdIHsKLSAgICAg
ICAgICAgIGF1dG8gc3RvcmFnZSA9IFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpj
cmVhdGUoYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSwgYXBwbGljYXRpb25DYWNoZUZsYXRGaWxl
U3ViZGlyZWN0b3J5TmFtZSk7CisgICAgICAgICAgICBhdXRvIHN0b3JhZ2UgPSBXZWJDb3JlOjpB
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y3JlYXRlKGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnks
IGFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUsIFdlYkNvcmU6OlBhZ2VT
Y2hlbWVSZWdpc3RyeTo6Y3JlYXRlKCkpOwogCiAgICAgICAgICAgICBzdG9yYWdlLT5kZWxldGVB
bGxDYWNoZXMoKTsKIApAQCAtNzgyLDcgKzc4Miw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6
cmVtb3ZlRGF0YShPcHRpb24KICNpZiBFTkFCTEUoVklERU8pCiAgICAgICAgIGNhbGxiYWNrQWdn
cmVnYXRvci0+YWRkUGVuZGluZ0NhbGxiYWNrKCk7CiAgICAgICAgIG1fcXVldWUtPmRpc3BhdGNo
KFtvcmlnaW5zID0gV1RGTW92ZShvcmlnaW5zKSwgbWVkaWFDYWNoZURpcmVjdG9yeSA9IG1fY29u
ZmlndXJhdGlvbi5tZWRpYUNhY2hlRGlyZWN0b3J5Lmlzb2xhdGVkQ29weSgpLCBjYWxsYmFja0Fn
Z3JlZ2F0b3JdIHsKLSAgICAgICAgICAgIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNsZWFy
TWVkaWFDYWNoZUZvck9yaWdpbnMobWVkaWFDYWNoZURpcmVjdG9yeSwgb3JpZ2lucyk7CisgICAg
ICAgICAgICBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpjbGVhck1lZGlhQ2FjaGVGb3JPcmln
aW5zKG1lZGlhQ2FjaGVEaXJlY3RvcnksIG9yaWdpbnMsIFdlYkNvcmU6OlBhZ2VTY2hlbWVSZWdp
c3RyeTo6Y3JlYXRlKCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBXVEY6OlJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7CiAgICAgICAgICAgICAgICAg
Y2FsbGJhY2tBZ2dyZWdhdG9yLT5yZW1vdmVQZW5kaW5nQ2FsbGJhY2soKTsKQEAgLTg3Miw3ICs4
NzIsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGEoT3B0aW9uCiAKICAgICAg
ICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5hZGRQZW5kaW5nQ2FsbGJhY2soKTsKICAgICAgICAgbV9x
dWV1ZS0+ZGlzcGF0Y2goW29yaWdpbnMgPSBXVEZNb3ZlKG9yaWdpbnMpLCBhcHBsaWNhdGlvbkNh
Y2hlRGlyZWN0b3J5ID0gbV9jb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnku
aXNvbGF0ZWRDb3B5KCksIGFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUg
PSBtX2NvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFt
ZS5pc29sYXRlZENvcHkoKSwgY2FsbGJhY2tBZ2dyZWdhdG9yXSB7Ci0gICAgICAgICAgICBhdXRv
IHN0b3JhZ2UgPSBXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y3JlYXRlKGFwcGxp
Y2F0aW9uQ2FjaGVEaXJlY3RvcnksIGFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9y
eU5hbWUpOworICAgICAgICAgICAgYXV0byBzdG9yYWdlID0gV2ViQ29yZTo6QXBwbGljYXRpb25D
YWNoZVN0b3JhZ2U6OmNyZWF0ZShhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5LCBhcHBsaWNhdGlv
bkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lLCBXZWJDb3JlOjpQYWdlU2NoZW1lUmVnaXN0
cnk6OmNyZWF0ZSgpKTsKIAogICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBvcmlnaW4gOiBv
cmlnaW5zKQogICAgICAgICAgICAgICAgIHN0b3JhZ2UtPmRlbGV0ZUNhY2hlRm9yT3JpZ2luKCpv
cmlnaW4pOwpAQCAtMTA5NCw3ICsxMDk0LDcgQEAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbj4+IAogCiAgICAgICAgIGF1dG8gbWVkaWFLZXlJZGVudGlmaWVyID0gV2ViQ29y
ZTo6cGF0aEdldEZpbGVOYW1lKG9yaWdpblBhdGgpOwogCi0gICAgICAgIGlmIChhdXRvIHNlY3Vy
aXR5T3JpZ2luID0gV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46Om1heWJlQ3JlYXRlRnJvbURhdGFi
YXNlSWRlbnRpZmllcihtZWRpYUtleUlkZW50aWZpZXIpKQorICAgICAgICBpZiAoYXV0byBzZWN1
cml0eU9yaWdpbiA9IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjptYXliZUNyZWF0ZUZyb21EYXRh
YmFzZUlkZW50aWZpZXIobWVkaWFLZXlJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlU2NoZW1lUmVn
aXN0cnk6OmNyZWF0ZSgpKSkKICAgICAgICAgICAgIG9yaWdpbnMuYXBwZW5kKFdURk1vdmUoc2Vj
dXJpdHlPcmlnaW4pKTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTMsNiArOTMsNyBAQAogI2lu
Y2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUNhY2hlLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9QYWdlR3JvdXAuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VTY2hl
bWVSZWdpc3RyeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5h
Z2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaD4KQEAgLTI5MCw3ICsyOTEsNyBAQCB2b2lkIFdl
YlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKFdlCiAjZW5kaWYKIAogICAgIC8vIEZJWE1F
OiBUaGlzIHNob3VsZCBiZSBjb25zdHJ1Y3RlZCBwZXIgZGF0YSBzdG9yZSwgbm90IHBlciBwcm9j
ZXNzLgotICAgIG1fYXBwbGljYXRpb25DYWNoZVN0b3JhZ2UgPSBBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZTo6Y3JlYXRlKHBhcmFtZXRlcnMuYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSwgcGFyYW1l
dGVycy5hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKTsKKyAgICBtX2Fw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlID0gQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNyZWF0ZShw
YXJhbWV0ZXJzLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnksIHBhcmFtZXRlcnMuYXBwbGljYXRp
b25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSwgUGFnZVNjaGVtZVJlZ2lzdHJ5OjpjcmVh
dGUoKSk7CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIG1fYXBwbGljYXRpb25DYWNoZVN0b3JhZ2Ut
PnNldERlZmF1bHRPcmlnaW5RdW90YSgyNVVMTCAqIDEwMjQgKiAxMDI0KTsKICNlbmRpZgpAQCAt
MTIxMSw3ICsxMjEyLDcgQEAgdm9pZCBXZWJQcm9jZXNzOjpyZWxlYXNlUGFnZUNhY2hlKCkKIHZv
aWQgV2ViUHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzLCBXZWJzaXRl
RGF0YSYgd2Vic2l0ZURhdGEpCiB7CiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMo
V2Vic2l0ZURhdGFUeXBlOjpNZW1vcnlDYWNoZSkpIHsKLSAgICAgICAgZm9yIChhdXRvJiBvcmln
aW4gOiBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkub3JpZ2luc1dpdGhDYWNoZShzZXNzaW9uSUQp
KQorICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5v
cmlnaW5zV2l0aENhY2hlKHNlc3Npb25JRCwgUGFnZVNjaGVtZVJlZ2lzdHJ5OjpjcmVhdGUoKSkp
CiAgICAgICAgICAgICB3ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVuZChXZWJzaXRlRGF0YTo6RW50
cnkgeyBvcmlnaW4sIFdlYnNpdGVEYXRhVHlwZTo6TWVtb3J5Q2FjaGUsIDAgfSk7CiAgICAgfQog
fQpAQCAtMTIzMyw5ICsxMjM0LDEwIEBAIHZvaWQgV2ViUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURh
dGFGb3JPcmkKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5
cGU6Ok1lbW9yeUNhY2hlKSkgewogICAgICAgICBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdp
bj4+IG9yaWdpbnM7CiAgICAgICAgIGZvciAoYXV0byYgb3JpZ2luRGF0YSA6IG9yaWdpbkRhdGFz
KQotICAgICAgICAgICAgb3JpZ2lucy5hZGQob3JpZ2luRGF0YS5zZWN1cml0eU9yaWdpbigpKTsK
KyAgICAgICAgICAgIG9yaWdpbnMuYWRkKG9yaWdpbkRhdGEuc2VjdXJpdHlPcmlnaW4oUGFnZVNj
aGVtZVJlZ2lzdHJ5OjpjcmVhdGUoKSkpOwogCi0gICAgICAgIE1lbW9yeUNhY2hlOjpzaW5nbGV0
b24oKS5yZW1vdmVSZXNvdXJjZXNXaXRoT3JpZ2lucyhzZXNzaW9uSUQsIG9yaWdpbnMpOworICAg
ICAgICAvLyBGSVhNRTogTWFrZSB0aGUgTWVtb3J5Q2FjaGUgcGVyIHBhZ2UgYW5kIHVzZSB0aGF0
IFBhZ2UncyBQYWdlU2NoZW1lUmVnaXN0cnkuCisgICAgICAgIE1lbW9yeUNhY2hlOjpzaW5nbGV0
b24oKS5yZW1vdmVSZXNvdXJjZXNXaXRoT3JpZ2lucyhzZXNzaW9uSUQsIG9yaWdpbnMsIFBhZ2VT
Y2hlbWVSZWdpc3RyeTo6Y3JlYXRlKCkpOwogICAgIH0KIH0KIApJbmRleDogU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZS5jcHAJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCw2
ICs2NCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9NYWluRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VHcm91cC5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvUGFnZVNjaGVtZVJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QcmludENvbnRl
eHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmg+CkBAIC0zNTAsMTQgKzM1MSwxNCBAQCB2b2lk
IEluamVjdGVkQnVuZGxlOjpzZXRTcGF0aWFsTmF2aWdhdGlvCiAgICAgICAgICgqaXRlciktPnNl
dHRpbmdzKCkuc2V0U3BhdGlhbE5hdmlnYXRpb25FbmFibGVkKGVuYWJsZWQpOwogfQogCi12b2lk
IEluamVjdGVkQnVuZGxlOjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBTdHJp
bmcmIHNvdXJjZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25z
dCBTdHJpbmcmIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlu
cykKK3ZvaWQgSW5qZWN0ZWRCdW5kbGU6OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KGNv
bnN0IFN0cmluZyYgc291cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9j
b2wsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRpb25T
dWJkb21haW5zLCBjb25zdCBQYWdlU2NoZW1lUmVnaXN0cnkmIHNjaGVtZVJlZ2lzdHJ5KQogewot
ICAgIFNlY3VyaXR5UG9saWN5OjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShTZWN1cml0
eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhzb3VyY2VPcmlnaW4pLmdldCgpLCBkZXN0aW5hdGlv
blByb3RvY29sLCBkZXN0aW5hdGlvbkhvc3QsIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsK
KyAgICBTZWN1cml0eVBvbGljeTo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoU2VjdXJp
dHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoc291cmNlT3JpZ2luLCBzY2hlbWVSZWdpc3RyeSku
Z2V0KCksIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9uSG9zdCwgYWxsb3dEZXN0aW5h
dGlvblN1YmRvbWFpbnMpOwogfQogCi12b2lkIEluamVjdGVkQnVuZGxlOjpyZW1vdmVPcmlnaW5B
Y2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbiwgY29uc3QgU3Ry
aW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uSG9zdCwg
Ym9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucykKK3ZvaWQgSW5qZWN0ZWRCdW5kbGU6OnJl
bW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2lu
LCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVzdGlu
YXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zLCBjb25zdCBQYWdlU2No
ZW1lUmVnaXN0cnkmIHNjaGVtZVJlZ2lzdHJ5KQogewotICAgIFNlY3VyaXR5UG9saWN5OjpyZW1v
dmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0
cmluZyhzb3VyY2VPcmlnaW4pLmdldCgpLCBkZXN0aW5hdGlvblByb3RvY29sLCBkZXN0aW5hdGlv
bkhvc3QsIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKKyAgICBTZWN1cml0eVBvbGljeTo6
cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZy
b21TdHJpbmcoc291cmNlT3JpZ2luLCBzY2hlbWVSZWdpc3RyeSkuZ2V0KCksIGRlc3RpbmF0aW9u
UHJvdG9jb2wsIGRlc3RpbmF0aW9uSG9zdCwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwog
fQogCiB2b2lkIEluamVjdGVkQnVuZGxlOjpyZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHMoKQpJ
bmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KIAotI2lmbmRlZiBJbmplY3RlZEJ1bmRsZV9oCi0jZGVmaW5lIEluamVjdGVkQnVuZGxl
X2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiSW5q
ZWN0ZWRCdW5kbGVDbGllbnQuaCIKQEAgLTYxLDYgKzYwLDEwIEBAIGNsYXNzIENvbm5lY3Rpb247
CiBjbGFzcyBEYXRhUmVmZXJlbmNlOwogfQogCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBQ
YWdlU2NoZW1lUmVnaXN0cnk7Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiAjaWYgVVNFKEZP
VU5EQVRJT04pCkBAIC0xMTEsOCArMTE0LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0UG9wdXBC
bG9ja2luZ0VuYWJsZWQoV2ViUGFnZUdyb3VwUHJveHkqLCBib29sKTsKICAgICB2b2lkIHNldEF1
dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkKFdlYlBhZ2VHcm91cFByb3h5KiwgYm9vbCk7CiAgICAg
dm9pZCBzZXRTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQoV2ViUGFnZUdyb3VwUHJveHkqLCBib29s
KTsKLSAgICB2b2lkIGFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGJvb2wpOwotICAgIHZvaWQgcmVtb3ZlT3Jp
Z2luQWNjZXNzV2hpdGVsaXN0RW50cnkoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiwgYm9vbCk7CisgICAgdm9pZCBhZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRy
eShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBib29sLCBjb25z
dCBXZWJDb3JlOjpQYWdlU2NoZW1lUmVnaXN0cnkmKTsKKyAgICB2b2lkIHJlbW92ZU9yaWdpbkFj
Y2Vzc1doaXRlbGlzdEVudHJ5KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYsIGJvb2wsIGNvbnN0IFdlYkNvcmU6OlBhZ2VTY2hlbWVSZWdpc3RyeSYpOwogICAgIHZv
aWQgcmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RzKCk7CiAgICAgdm9pZCBzZXRBc3luY2hyb25v
dXNTcGVsbENoZWNraW5nRW5hYmxlZChXZWJQYWdlR3JvdXBQcm94eSosIGJvb2wpOwogICAgIGlu
dCBudW1iZXJPZlBhZ2VzKFdlYkZyYW1lKiwgZG91YmxlLCBkb3VibGUpOwpAQCAtMTc2LDUgKzE3
OSwzIEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8v
IEluamVjdGVkQnVuZGxlX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwCShyZXZpc2lvbiAy
MDgzOTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUg
IldlYlBhZ2UuaCIKICNpbmNsdWRlICJXZWJQYWdlR3JvdXBQcm94eS5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvRGF0YWJhc2VNYW5hZ2VyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlU2NoZW1lUmVn
aXN0cnkuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgV2Vi
S2l0OwpAQCAtMTgyLDEyICsxODMsMTIgQEAgdm9pZCBXS0J1bmRsZVNldFNwYXRpYWxOYXZpZ2F0
aW9uRW5hYmxlZAogCiB2b2lkIFdLQnVuZGxlQWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnko
V0tCdW5kbGVSZWYgYnVuZGxlUmVmLCBXS1N0cmluZ1JlZiBzb3VyY2VPcmlnaW4sIFdLU3RyaW5n
UmVmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIFdLU3RyaW5nUmVmIGRlc3RpbmF0aW9uSG9zdCwgYm9v
bCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucykKIHsKLSAgICB0b0ltcGwoYnVuZGxlUmVmKS0+
YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkodG9XVEZTdHJpbmcoc291cmNlT3JpZ2luKSwg
dG9XVEZTdHJpbmcoZGVzdGluYXRpb25Qcm90b2NvbCksIHRvV1RGU3RyaW5nKGRlc3RpbmF0aW9u
SG9zdCksIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKKyAgICB0b0ltcGwoYnVuZGxlUmVm
KS0+YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkodG9XVEZTdHJpbmcoc291cmNlT3JpZ2lu
KSwgdG9XVEZTdHJpbmcoZGVzdGluYXRpb25Qcm90b2NvbCksIHRvV1RGU3RyaW5nKGRlc3RpbmF0
aW9uSG9zdCksIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zLCBXZWJDb3JlOjpQYWdlU2NoZW1l
UmVnaXN0cnk6OmNyZWF0ZSgpKTsKIH0KIAogdm9pZCBXS0J1bmRsZVJlbW92ZU9yaWdpbkFjY2Vz
c1doaXRlbGlzdEVudHJ5KFdLQnVuZGxlUmVmIGJ1bmRsZVJlZiwgV0tTdHJpbmdSZWYgc291cmNl
T3JpZ2luLCBXS1N0cmluZ1JlZiBkZXN0aW5hdGlvblByb3RvY29sLCBXS1N0cmluZ1JlZiBkZXN0
aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpCiB7Ci0gICAgdG9J
bXBsKGJ1bmRsZVJlZiktPnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KHRvV1RGU3Ry
aW5nKHNvdXJjZU9yaWdpbiksIHRvV1RGU3RyaW5nKGRlc3RpbmF0aW9uUHJvdG9jb2wpLCB0b1dU
RlN0cmluZyhkZXN0aW5hdGlvbkhvc3QpLCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7Cisg
ICAgdG9JbXBsKGJ1bmRsZVJlZiktPnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KHRv
V1RGU3RyaW5nKHNvdXJjZU9yaWdpbiksIHRvV1RGU3RyaW5nKGRlc3RpbmF0aW9uUHJvdG9jb2wp
LCB0b1dURlN0cmluZyhkZXN0aW5hdGlvbkhvc3QpLCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlu
cywgV2ViQ29yZTo6UGFnZVNjaGVtZVJlZ2lzdHJ5OjpjcmVhdGUoKSk7CiB9CiAKIHZvaWQgV0tC
dW5kbGVSZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHMoV0tCdW5kbGVSZWYgYnVuZGxlUmVmKQpA
QCAtMjE0LDcgKzIxNSw3IEBAIHZvaWQgV0tCdW5kbGVTZXREYXRhYmFzZVF1b3RhKFdLQnVuZGxl
UmUKIHsKICAgICAvLyBIaXN0b3JpY2FsbHksIHdlJ3ZlIHVzZWQgdGhlIGZvbGxvd2luZyAoc29t
ZXdoYXQgbm9uLXNlbnNpY2FsKSBzdHJpbmcKICAgICAvLyBmb3IgdGhlIGRhdGFiYXNlSWRlbnRp
ZmllciBvZiBsb2NhbCBmaWxlcy4KLSAgICBEYXRhYmFzZU1hbmFnZXI6OnNpbmdsZXRvbigpLnNl
dFF1b3RhKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyKCJmaWxl
X18wIikucHRyKCksIHF1b3RhKTsKKyAgICBEYXRhYmFzZU1hbmFnZXI6OnNpbmdsZXRvbigpLnNl
dFF1b3RhKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyKCJmaWxl
X18wIiwgV2ViQ29yZTo6UGFnZVNjaGVtZVJlZ2lzdHJ5OjpjcmVhdGUoKSkucHRyKCksIHF1b3Rh
KTsKIH0KIAogV0tEYXRhUmVmIFdLQnVuZGxlQ3JlYXRlV0tEYXRhRnJvbVVJbnQ4QXJyYXkoV0tC
dW5kbGVSZWYgYnVuZGxlLCBKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBkYXRhKQpJ
bmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZVBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAkocmV2aXNpb24gMjA4Mzk4KQorKysg
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBh
Z2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NTQsNyArNjU0LDcgQEAgdm9pZCBXS0J1bmRsZVBh
Z2VDbGVhckFwcGxpY2F0aW9uQ2FjaGUoVwogCiB2b2lkIFdLQnVuZGxlUGFnZUNsZWFyQXBwbGlj
YXRpb25DYWNoZUZvck9yaWdpbihXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgb3Jp
Z2luKQogewotICAgIHRvSW1wbChwYWdlKS0+Y29yZVBhZ2UoKS0+YXBwbGljYXRpb25DYWNoZVN0
b3JhZ2UoKS5kZWxldGVDYWNoZUZvck9yaWdpbihXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3Jl
YXRlRnJvbVN0cmluZyh0b0ltcGwob3JpZ2luKS0+c3RyaW5nKCkpKTsKKyAgICB0b0ltcGwocGFn
ZSktPmNvcmVQYWdlKCktPmFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlKCkuZGVsZXRlQ2FjaGVGb3JP
cmlnaW4oV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcodG9JbXBsKG9y
aWdpbiktPnN0cmluZygpLCBXZWJDb3JlOjpQYWdlU2NoZW1lUmVnaXN0cnk6OmNyZWF0ZSgpKSk7
CiB9CiAKIHZvaWQgV0tCdW5kbGVQYWdlU2V0QXBwQ2FjaGVNYXhpbXVtU2l6ZShXS0J1bmRsZVBh
Z2VSZWYgcGFnZSwgdWludDY0X3Qgc2l6ZSkKQEAgLTY2NCwxNyArNjY0LDE3IEBAIHZvaWQgV0tC
dW5kbGVQYWdlU2V0QXBwQ2FjaGVNYXhpbXVtU2l6ZSgKIAogdWludDY0X3QgV0tCdW5kbGVQYWdl
R2V0QXBwQ2FjaGVVc2FnZUZvck9yaWdpbihXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tTdHJpbmdS
ZWYgb3JpZ2luKQogewotICAgIHJldHVybiB0b0ltcGwocGFnZSktPmNvcmVQYWdlKCktPmFwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlKCkuZGlza1VzYWdlRm9yT3JpZ2luKFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHRvSW1wbChvcmlnaW4pLT5zdHJpbmcoKSkpOworICAg
IHJldHVybiB0b0ltcGwocGFnZSktPmNvcmVQYWdlKCktPmFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
KCkuZGlza1VzYWdlRm9yT3JpZ2luKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9t
U3RyaW5nKHRvSW1wbChvcmlnaW4pLT5zdHJpbmcoKSwgV2ViQ29yZTo6UGFnZVNjaGVtZVJlZ2lz
dHJ5OjpjcmVhdGUoKSkpOwogfQogCiB2b2lkIFdLQnVuZGxlUGFnZVNldEFwcGxpY2F0aW9uQ2Fj
aGVPcmlnaW5RdW90YShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgb3JpZ2luLCB1
aW50NjRfdCBieXRlcykKIHsKLSAgICB0b0ltcGwocGFnZSktPmNvcmVQYWdlKCktPmFwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlKCkuc3RvcmVVcGRhdGVkUXVvdGFGb3JPcmlnaW4oV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcodG9JbXBsKG9yaWdpbiktPnN0cmluZygpKS5w
dHIoKSwgYnl0ZXMpOworICAgIHRvSW1wbChwYWdlKS0+Y29yZVBhZ2UoKS0+YXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UoKS5zdG9yZVVwZGF0ZWRRdW90YUZvck9yaWdpbihXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyh0b0ltcGwob3JpZ2luKS0+c3RyaW5nKCksIFdlYkNv
cmU6OlBhZ2VTY2hlbWVSZWdpc3RyeTo6Y3JlYXRlKCkpLnB0cigpLCBieXRlcyk7CiB9CiAKIHZv
aWQgV0tCdW5kbGVQYWdlUmVzZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoV0tCdW5kbGVQ
YWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIG9yaWdpbikKIHsKLSAgICB0b0ltcGwocGFnZSktPmNv
cmVQYWdlKCktPmFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlKCkuc3RvcmVVcGRhdGVkUXVvdGFGb3JP
cmlnaW4oV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcodG9JbXBsKG9y
aWdpbiktPnN0cmluZygpKS5wdHIoKSwgdG9JbXBsKHBhZ2UpLT5jb3JlUGFnZSgpLT5hcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZSgpLmRlZmF1bHRPcmlnaW5RdW90YSgpKTsKKyAgICB0b0ltcGwocGFn
ZSktPmNvcmVQYWdlKCktPmFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlKCkuc3RvcmVVcGRhdGVkUXVv
dGFGb3JPcmlnaW4oV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcodG9J
bXBsKG9yaWdpbiktPnN0cmluZygpLCBXZWJDb3JlOjpQYWdlU2NoZW1lUmVnaXN0cnk6OmNyZWF0
ZSgpKS5wdHIoKSwgdG9JbXBsKHBhZ2UpLT5jb3JlUGFnZSgpLT5hcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZSgpLmRlZmF1bHRPcmlnaW5RdW90YSgpKTsKIH0KIAogV0tBcnJheVJlZiBXS0J1bmRsZVBh
Z2VDb3B5T3JpZ2luc1dpdGhBcHBsaWNhdGlvbkNhY2hlKFdLQnVuZGxlUGFnZVJlZiBwYWdlKQpJ
bmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3Rv
cmFnZU1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
TWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjA4Mzk4
KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3Rv
cmFnZU1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNs
dWRlICJXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9G
aWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlU2NoZW1lUmVnaXN0cnkuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1
cml0eU9yaWdpbkRhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgpAQCAtNTIsNyArNTMs
NyBAQCBTdHJpbmcgV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlcjo6bWVkaWFLCiAgICAgaWYgKCFt
X21lZGlhS2V5U3RvcmFnZURpcmVjdG9yeSkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7
CiAKLSAgICByZXR1cm4gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fbWVkaWFLZXlTdG9yYWdl
RGlyZWN0b3J5LCBvcmlnaW5EYXRhLnNlY3VyaXR5T3JpZ2luKCktPmRhdGFiYXNlSWRlbnRpZmll
cigpKTsKKyAgICByZXR1cm4gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fbWVkaWFLZXlTdG9y
YWdlRGlyZWN0b3J5LCBvcmlnaW5EYXRhLnNlY3VyaXR5T3JpZ2luKFBhZ2VTY2hlbWVSZWdpc3Ry
eTo6Y3JlYXRlKCkpLT5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CiB9CiAKIFZlY3RvcjxTZWN1cml0
eU9yaWdpbkRhdGE+IFdlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXI6OmdldE1lZGlhS2V5T3JpZ2lu
cygpCkBAIC03MCw3ICs3MSw3IEBAIFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+IFdlYk1lZGlh
S2V5U3QKIAogICAgICAgICBTdHJpbmcgbWVkaWFLZXlJZGVudGlmaWVyID0gdXJsLmxhc3RQYXRo
Q29tcG9uZW50KCk7CiAKLSAgICAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9y
aWdpbiA9IFNlY3VyaXR5T3JpZ2luOjptYXliZUNyZWF0ZUZyb21EYXRhYmFzZUlkZW50aWZpZXIo
bWVkaWFLZXlJZGVudGlmaWVyKTsKKyAgICAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1
cml0eU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjptYXliZUNyZWF0ZUZyb21EYXRhYmFzZUlkZW50
aWZpZXIobWVkaWFLZXlJZGVudGlmaWVyLCBQYWdlU2NoZW1lUmVnaXN0cnk6OmNyZWF0ZSgpKTsK
ICAgICAgICAgaWYgKCFzZWN1cml0eU9yaWdpbikKICAgICAgICAgICAgIGNvbnRpbnVlOwogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcu
Y3BwCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOTksNyArMTE5OSw3IEBAIHZv
aWQgUGx1Z2luVmlldzo6cGVyZm9ybUZyYW1lTG9hZFVSTFJlcXUKICAgICBpZiAoIWZyYW1lKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fcGx1Z2luRWxlbWVudC0+ZG9jdW1lbnQoKS5z
ZWN1cml0eU9yaWdpbigpLT5jYW5EaXNwbGF5KHJlcXVlc3QtPnJlcXVlc3QoKS51cmwoKSkpIHsK
KyAgICBpZiAoIW1fcGx1Z2luRWxlbWVudC0+ZG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpLT5j
YW5EaXNwbGF5KHJlcXVlc3QtPnJlcXVlc3QoKS51cmwoKSwgZnJhbWUtPnNjaGVtZVJlZ2lzdHJ5
KCkpKSB7CiAgICAgICAgIC8vIFdlIGNhbid0IGxvYWQgdGhlIHJlcXVlc3QsIHNlbmQgYmFjayBh
IHJlcGx5IHRvIHRoZSBwbHVnLWluLgogICAgICAgICBtX3BsdWdpbi0+ZnJhbWVEaWRGYWlsKHJl
cXVlc3QtPnJlcXVlc3RJRCgpLCBmYWxzZSk7CiAgICAgICAgIHJldHVybjsKQEAgLTE0MTgsNyAr
MTQxOCw3IEBAIHZvaWQgUGx1Z2luVmlldzo6bG9hZFVSTCh1aW50NjRfdCByZXF1ZXMKIAogICAg
IGZyYW1lTG9hZFJlcXVlc3Quc2V0RnJhbWVOYW1lKHRhcmdldCk7CiAKLSAgICBTdHJpbmcgcmVm
ZXJyZXIgPSBTZWN1cml0eVBvbGljeTo6Z2VuZXJhdGVSZWZlcnJlckhlYWRlcihmcmFtZSgpLT5k
b2N1bWVudCgpLT5yZWZlcnJlclBvbGljeSgpLCBmcmFtZUxvYWRSZXF1ZXN0LnJlc291cmNlUmVx
dWVzdCgpLnVybCgpLCBmcmFtZSgpLT5sb2FkZXIoKS5vdXRnb2luZ1JlZmVycmVyKCkpOworICAg
IFN0cmluZyByZWZlcnJlciA9IFNlY3VyaXR5UG9saWN5OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVy
KGZyYW1lKCktPmRvY3VtZW50KCktPnJlZmVycmVyUG9saWN5KCksIGZyYW1lTG9hZFJlcXVlc3Qu
cmVzb3VyY2VSZXF1ZXN0KCkudXJsKCksIGZyYW1lKCktPmxvYWRlcigpLm91dGdvaW5nUmVmZXJy
ZXIoKSwgZnJhbWUoKS0+c2NoZW1lUmVnaXN0cnkoKSk7CiAgICAgaWYgKCFyZWZlcnJlci5pc0Vt
cHR5KCkpCiAgICAgICAgIGZyYW1lTG9hZFJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkuc2V0SFRU
UFJlZmVycmVyKHJlZmVycmVyKTsKIApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkocmV2
aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02ODIsNyArNjgyLDcgQEAg
dm9pZCBXZWJDaHJvbWVDbGllbnQ6OmV4Y2VlZGVkRGF0YWJhc2VRdQogICAgIHVpbnQ2NF90IGN1
cnJlbnRRdW90YSA9IGRiTWFuYWdlci5xdW90YUZvck9yaWdpbihvcmlnaW4pOwogICAgIHVpbnQ2
NF90IGN1cnJlbnRPcmlnaW5Vc2FnZSA9IGRiTWFuYWdlci51c2FnZUZvck9yaWdpbihvcmlnaW4p
OwogICAgIHVpbnQ2NF90IG5ld1F1b3RhID0gMDsKLSAgICBSZWZQdHI8QVBJOjpTZWN1cml0eU9y
aWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21EYXRhYmFzZUlkZW50aWZpZXIob3JpZ2luLT5k
YXRhYmFzZUlkZW50aWZpZXIoKSkpOworICAgIFJlZlB0cjxBUEk6OlNlY3VyaXR5T3JpZ2luPiBz
ZWN1cml0eU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbjo6Y3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmllcihvcmlnaW4tPmRhdGFiYXNl
SWRlbnRpZmllcigpLCBQYWdlU2NoZW1lUmVnaXN0cnk6OmNyZWF0ZSgpKSk7CiAgICAgbmV3UXVv
dGEgPSBtX3BhZ2UtPmluamVjdGVkQnVuZGxlVUlDbGllbnQoKS5kaWRFeGNlZWREYXRhYmFzZVF1
b3RhKG1fcGFnZSwgc2VjdXJpdHlPcmlnaW4uZ2V0KCksIGRhdGFiYXNlTmFtZSwgZGV0YWlscy5k
aXNwbGF5TmFtZSgpLCBjdXJyZW50UXVvdGEsIGN1cnJlbnRPcmlnaW5Vc2FnZSwgZGV0YWlscy5j
dXJyZW50VXNhZ2UoKSwgZGV0YWlscy5leHBlY3RlZFVzYWdlKCkpOwogCiAgICAgaWYgKCFuZXdR
dW90YSkgewpAQCAtNzAxLDcgKzcwMSw3IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpyZWFjaGVk
TWF4QXBwQ2FjaGUKIAogdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnJlYWNoZWRBcHBsaWNhdGlvbkNh
Y2hlT3JpZ2luUXVvdGEoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgaW50NjRfdCB0b3RhbEJ5dGVz
TmVlZGVkKQogewotICAgIFJlZlB0cjxBUEk6OlNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdp
biA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcob3JpZ2luLT50b1N0cmlu
ZygpKTsKKyAgICBSZWZQdHI8QVBJOjpTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBB
UEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKG9yaWdpbi0+dG9TdHJpbmcoKSwg
UGFnZVNjaGVtZVJlZ2lzdHJ5OjpjcmVhdGUoKSk7CiAgICAgaWYgKG1fcGFnZS0+aW5qZWN0ZWRC
dW5kbGVVSUNsaWVudCgpLmRpZFJlYWNoQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKG1fcGFn
ZSwgc2VjdXJpdHlPcmlnaW4uZ2V0KCksIHRvdGFsQnl0ZXNOZWVkZWQpKQogICAgICAgICByZXR1
cm47CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJEb2N1bWVu
dExvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkRvY3VtZW50TG9hZGVyLmNwcAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkRvY3VtZW50TG9hZGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzIsOCArMzIsOCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKLVdlYkRvY3VtZW50TG9hZGVyOjpXZWJEb2N1bWVudExvYWRlcihjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0
dXRlRGF0YSkKLSAgICA6IERvY3VtZW50TG9hZGVyKHJlcXVlc3QsIHN1YnN0aXR1dGVEYXRhKQor
V2ViRG9jdW1lbnRMb2FkZXI6OldlYkRvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgY29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhLCBjb25zdCBQ
YWdlU2NoZW1lUmVnaXN0cnkmIHNjaGVtZVJlZ2lzdHJ5KQorICAgIDogRG9jdW1lbnRMb2FkZXIo
cmVxdWVzdCwgc3Vic3RpdHV0ZURhdGEsIHNjaGVtZVJlZ2lzdHJ5KQogICAgICwgbV9uYXZpZ2F0
aW9uSUQoMCkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJEb2N1bWVudExvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJEb2N1bWVudExvYWRlci5oCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRG9jdW1lbnRMb2FkZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICovCiAKLSNpZm5kZWYgV2ViRG9jdW1lbnRMb2FkZXJfaAotI2RlZmluZSBXZWJEb2N1
bWVudExvYWRlcl9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnRM
b2FkZXIuaD4KIApAQCAtMzIsMTYgKzMxLDE2IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFz
cyBXZWJEb2N1bWVudExvYWRlciA6IHB1YmxpYyBXZWJDb3JlOjpEb2N1bWVudExvYWRlciB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJEb2N1bWVudExvYWRlcj4gY3JlYXRlKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0
ZURhdGEmIGRhdGEpCisgICAgc3RhdGljIFJlZjxXZWJEb2N1bWVudExvYWRlcj4gY3JlYXRlKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6U3Vi
c3RpdHV0ZURhdGEmIGRhdGEsIGNvbnN0IFdlYkNvcmU6OlBhZ2VTY2hlbWVSZWdpc3RyeSYgc2No
ZW1lUmVnaXN0cnkpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJEb2N1
bWVudExvYWRlcihyZXF1ZXN0LCBkYXRhKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFdlYkRvY3VtZW50TG9hZGVyKHJlcXVlc3QsIGRhdGEsIHNjaGVtZVJlZ2lzdHJ5KSk7CiAgICAg
fQogCiAgICAgdWludDY0X3QgbmF2aWdhdGlvbklEKCkgY29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0
aW9uSUQ7IH0KICAgICB2b2lkIHNldE5hdmlnYXRpb25JRCh1aW50NjRfdCk7CiAKIHByaXZhdGU6
Ci0gICAgV2ViRG9jdW1lbnRMb2FkZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmKTsKKyAgICBXZWJEb2N1bWVudExvYWRlcihj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRl
RGF0YSYsIGNvbnN0IFdlYkNvcmU6OlBhZ2VTY2hlbWVSZWdpc3RyeSYpOwogCiAgICAgdm9pZCBk
ZXRhY2hGcm9tRnJhbWUoKSBvdmVycmlkZTsKIApAQCAtNDksNSArNDgsMyBAQCBwcml2YXRlOgog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBXZWJEb2N1bWVudExvYWRl
cl9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFt
ZS5jcHAJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4NCw3ICs0ODQsNyBAQCBib29s
IFdlYkZyYW1lOjphbGxvd3NGb2xsb3dpbmdMaW5rKGNvbnN0CiAgICAgaWYgKCFtX2NvcmVGcmFt
ZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIAotICAgIHJldHVybiBtX2NvcmVGcmFt
ZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuRGlzcGxheSh1cmwpOworICAgIHJl
dHVybiBtX2NvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuRGlzcGxh
eSh1cmwsIG1fY29yZUZyYW1lLT5zY2hlbWVSZWdpc3RyeSgpKTsKIH0KIAogSlNHbG9iYWxDb250
ZXh0UmVmIFdlYkZyYW1lOjpqc0NvbnRleHQoKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01NDI5LDcgKzU0MjksNyBAQCB2b2lkIFdlYlBhZ2U6OnNldFNjcm9sbGJhck92ZXJsYXlTdHls
ZShXCiAKIFJlZjxEb2N1bWVudExvYWRlcj4gV2ViUGFnZTo6Y3JlYXRlRG9jdW1lbnRMb2FkZXIo
RnJhbWUmIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN1YnN0
aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkKIHsKLSAgICBSZWY8V2ViRG9jdW1lbnRMb2FkZXI+
IGRvY3VtZW50TG9hZGVyID0gV2ViRG9jdW1lbnRMb2FkZXI6OmNyZWF0ZShyZXF1ZXN0LCBzdWJz
dGl0dXRlRGF0YSk7CisgICAgUmVmPFdlYkRvY3VtZW50TG9hZGVyPiBkb2N1bWVudExvYWRlciA9
IFdlYkRvY3VtZW50TG9hZGVyOjpjcmVhdGUocmVxdWVzdCwgc3Vic3RpdHV0ZURhdGEsIGZyYW1l
LnNjaGVtZVJlZ2lzdHJ5KCkpOwogCiAgICAgaWYgKGZyYW1lLmlzTWFpbkZyYW1lKCkpIHsKICAg
ICAgICAgaWYgKG1fcGVuZGluZ05hdmlnYXRpb25JRCkgewpJbmRleDogU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0JKHJldmlzaW9uIDIw
ODM5OCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29h
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0Zp
bGVTeXN0ZW0uaD4KICNpbXBvcnQgPFdlYkNvcmUvRm9udENhY2hlLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0ZvbnRDYXNjYWRlLmg+CisjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4KICNpbXBvcnQgPFdlYkNvcmUvTWVtb3J5UHJlc3N1
cmVIYW5kbGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05TQWNjZXNzaWJpbGl0eVNQSS5oPgpAQCAt
MzExLDcgKzMxMiw3IEBAIHN0YXRpYyBOU1VSTCAqb3JpZ2luKFdlYlBhZ2UmIHBhZ2UpCiAgICAg
ICAgIHJldHVybiBuaWw7CiAKICAgICBVUkwgbWFpbkZyYW1lVVJMKFVSTCgpLCBtYWluRnJhbWUt
PnVybCgpKTsKLSAgICBSZWY8U2VjdXJpdHlPcmlnaW4+IG1haW5GcmFtZU9yaWdpbiA9IFNlY3Vy
aXR5T3JpZ2luOjpjcmVhdGUobWFpbkZyYW1lVVJMKTsKKyAgICBSZWY8U2VjdXJpdHlPcmlnaW4+
IG1haW5GcmFtZU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUobWFpbkZyYW1lVVJMLCBt
YWluRnJhbWUtPmNvcmVGcmFtZSgpLT5zY2hlbWVSZWdpc3RyeSgpKTsKICAgICBTdHJpbmcgbWFp
bkZyYW1lT3JpZ2luU3RyaW5nOwogICAgIGlmICghbWFpbkZyYW1lT3JpZ2luLT5pc1VuaXF1ZSgp
KQogICAgICAgICBtYWluRnJhbWVPcmlnaW5TdHJpbmcgPSBtYWluRnJhbWVPcmlnaW4tPnRvUmF3
U3RyaW5nKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjA4NDIzKQorKysgU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0OSBAQAorMjAxNi0xMS0wOCAg
QWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIElu
dHJvZHVjZSBQYWdlU2NoZW1lUmVnaXN0cnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2NDUzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHA6CisgICAgICAg
IChTdG9yYWdlVHJhY2tlcjo6U3RvcmFnZVRyYWNrZXIpOgorICAgICAgICAoU3RvcmFnZVRyYWNr
ZXI6Om9yaWdpbnMpOgorICAgICAgICAoU3RvcmFnZVRyYWNrZXI6OmRlbGV0ZU9yaWdpbldpdGhJ
ZGVudGlmaWVyKToKKyAgICAgICAgKFN0b3JhZ2VUcmFja2VyOjpkaXNrVXNhZ2VGb3JPcmlnaW4p
OgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZVRyYWNrZXI6OmluaXRpYWxpemVUcmFja2VyKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VUcmFja2VyOjppbnRlcm5hbEluaXRp
YWxpemUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZVRyYWNrZXI6OnRyYWNr
ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZVRyYWNrZXI6OlN0b3JhZ2VU
cmFja2VyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VUcmFja2VyOjpzZXRE
YXRhYmFzZURpcmVjdG9yeVBhdGgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFn
ZVRyYWNrZXI6OmRhdGFiYXNlRGlyZWN0b3J5UGF0aCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpTdG9yYWdlVHJhY2tlcjo6dHJhY2tlckRhdGFiYXNlUGF0aCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjplbnN1cmVEYXRhYmFzZUZpbGVFeGlzdHMpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6U3RvcmFnZVRyYWNrZXI6Om9wZW5UcmFja2VyRGF0YWJhc2UpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZVRyYWNrZXI6OmltcG9ydE9yaWdpbklkZW50aWZp
ZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VUcmFja2VyOjpmaW5pc2hl
ZEltcG9ydGluZ09yaWdpbklkZW50aWZpZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlN0b3JhZ2VUcmFja2VyOjpzeW5jSW1wb3J0T3JpZ2luSWRlbnRpZmllcnMpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZVRyYWNrZXI6OnN5bmNGaWxlU3lzdGVtQW5kVHJhY2tl
ckRhdGFiYXNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VUcmFja2VyOjpz
ZXRPcmlnaW5EZXRhaWxzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VUcmFj
a2VyOjpzeW5jU2V0T3JpZ2luRGV0YWlscyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpT
dG9yYWdlVHJhY2tlcjo6b3JpZ2lucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTdG9y
YWdlVHJhY2tlcjo6ZGVsZXRlQWxsT3JpZ2lucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
Ojp0cnVuY2F0ZURhdGFiYXNlRmlsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTdG9y
YWdlVHJhY2tlcjo6c3luY0RlbGV0ZUFsbE9yaWdpbnMpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6U3RvcmFnZVRyYWNrZXI6OmRlbGV0ZU9yaWdpbldpdGhJZGVudGlmaWVyKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VUcmFja2VyOjpkZWxldGVPcmlnaW4pOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZVRyYWNrZXI6OnN5bmNEZWxldGVPcmlnaW4p
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZVRyYWNrZXI6OndpbGxEZWxldGVB
bGxPcmlnaW5zKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VUcmFja2VyOjp3
aWxsRGVsZXRlT3JpZ2luKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VUcmFj
a2VyOjpjYW5EZWxldGVPcmlnaW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFn
ZVRyYWNrZXI6OmNhbmNlbERlbGV0aW5nT3JpZ2luKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlN0b3JhZ2VUcmFja2VyOjppc0FjdGl2ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpTdG9yYWdlVHJhY2tlcjo6c2V0SXNBY3RpdmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6U3RvcmFnZVRyYWNrZXI6OmRhdGFiYXNlUGF0aEZvck9yaWdpbik6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTdG9yYWdlVHJhY2tlcjo6ZGlza1VzYWdlRm9yT3JpZ2luKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTdG9yYWdlVHJhY2tlcjo6c3RvcmFnZURhdGFiYXNlSWRsZUludGVydmFsKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VUcmFja2VyOjpzZXRTdG9yYWdlRGF0YWJhc2VJZGxl
SW50ZXJ2YWwpOiBEZWxldGVkLgorCiAyMDE2LTExLTAyICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9s
bGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2luXSBDb3B5IGJ1aWxkIHJlc3VsdHMgdG8gQUFT
ICdQcm9ncmFtIEZpbGVzJyBmb2xkZXIuCkluZGV4OiBTb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3Rv
cmFnZVRyYWNrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9y
YWdlVHJhY2tlci5jcHAJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJLaXQvU3RvcmFn
ZS9TdG9yYWdlVHJhY2tlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNp
bmNsdWRlICJXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VHcm91cC5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvUGFnZVNjaGVtZVJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVE
YXRhYmFzZVRyYWNrZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZVN0YXRlbWVudC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KQEAgLTQzLDcgKzQ0LDcgQEAKICNp
bmNsdWRlIDxzcWxpdGUzX3ByaXZhdGUuaD4KICNlbmRpZgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogc3RhdGljIFN0b3JhZ2VUcmFja2VyKiBzdG9y
YWdlVHJhY2tlciA9IDA7CiAKQEAgLTk1LDYgKzk2LDcgQEAgU3RvcmFnZVRyYWNrZXI6OlN0b3Jh
Z2VUcmFja2VyKGNvbnN0IFN0cgogICAgICwgbV9pc0FjdGl2ZShmYWxzZSkKICAgICAsIG1fbmVl
ZHNJbml0aWFsaXphdGlvbihmYWxzZSkKICAgICAsIG1fU3RvcmFnZURhdGFiYXNlSWRsZUludGVy
dmFsKERlZmF1bHRTdG9yYWdlRGF0YWJhc2VJZGxlSW50ZXJ2YWwpCisgICAgLCBtX3NjaGVtZVJl
Z2lzdHJ5KFBhZ2VTY2hlbWVSZWdpc3RyeTo6Y3JlYXRlKCkpIC8vIEZJWE1FOiBFYWNoIFBhZ2Ug
c2hvdWxkIGhhdmUgaXRzIG93biBTdG9yYWdlVHJhY2tlci4KIHsKIH0KIApAQCAtMzY2LDE3ICsz
NjgsMTkgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6c3luY1NldE9yaWdpbkRldGFpbAogICAgIH0K
IH0KIAotdm9pZCBTdG9yYWdlVHJhY2tlcjo6b3JpZ2lucyhWZWN0b3I8UmVmUHRyPFNlY3VyaXR5
T3JpZ2luPj4mIHJlc3VsdCkKK1ZlY3RvcjxSZWY8U2VjdXJpdHlPcmlnaW4+PiBTdG9yYWdlVHJh
Y2tlcjo6b3JpZ2lucygpCiB7CiAgICAgQVNTRVJUKG1faXNBY3RpdmUpOwogICAgIAogICAgIGlm
ICghbV9pc0FjdGl2ZSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4geyB9OwogCiAg
ICAgTG9ja0hvbGRlciBsb2NrZXIobV9vcmlnaW5TZXRNdXRleCk7CiAKKyAgICBWZWN0b3I8UmVm
PFNlY3VyaXR5T3JpZ2luPj4gcmVzdWx0OwogICAgIGZvciAoT3JpZ2luU2V0Ojpjb25zdF9pdGVy
YXRvciBpdCA9IG1fb3JpZ2luU2V0LmJlZ2luKCksIGVuZCA9IG1fb3JpZ2luU2V0LmVuZCgpOyBp
dCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIHJlc3VsdC5hcHBlbmQoU2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZUZyb21EYXRhYmFzZUlkZW50aWZpZXIoKml0KSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQo
U2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21EYXRhYmFzZUlkZW50aWZpZXIoKml0LCBtX3NjaGVt
ZVJlZ2lzdHJ5LmdldCgpKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogdm9pZCBTdG9yYWdl
VHJhY2tlcjo6ZGVsZXRlQWxsT3JpZ2lucygpCkBAIC00NzMsNyArNDc3LDcgQEAgdm9pZCBTdG9y
YWdlVHJhY2tlcjo6c3luY0RlbGV0ZUFsbE9yaWdpbgogCiB2b2lkIFN0b3JhZ2VUcmFja2VyOjpk
ZWxldGVPcmlnaW5XaXRoSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIp
CiB7Ci0gICAgZGVsZXRlT3JpZ2luKCZTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbURhdGFiYXNl
SWRlbnRpZmllcihvcmlnaW5JZGVudGlmaWVyKS5nZXQoKSk7CisgICAgZGVsZXRlT3JpZ2luKCZT
ZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmllcihvcmlnaW5JZGVudGlm
aWVyLCBtX3NjaGVtZVJlZ2lzdHJ5LmdldCgpKS5nZXQoKSk7CiB9CiAKIHZvaWQgU3RvcmFnZVRy
YWNrZXI6OmRlbGV0ZU9yaWdpbihTZWN1cml0eU9yaWdpbiogb3JpZ2luKQpAQCAtNjUyLDUgKzY1
NiwzIEBAIGxvbmcgbG9uZyBTdG9yYWdlVHJhY2tlcjo6ZGlza1VzYWdlRm9yT3IKICAgICBsb25n
IGxvbmcgc2l6ZTsKICAgICByZXR1cm4gZ2V0RmlsZVNpemUocGF0aCwgc2l6ZSkgPyBzaXplIDog
MDsKIH0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYktpdC9TdG9y
YWdlL1N0b3JhZ2VUcmFja2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TdG9yYWdl
L1N0b3JhZ2VUcmFja2VyLmgJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJLaXQvU3Rv
cmFnZS9TdG9yYWdlVHJhY2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw3IEBACiAg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBTdG9yYWdl
VHJhY2tlcl9oCi0jZGVmaW5lIFN0b3JhZ2VUcmFja2VyX2gKKyNwcmFnbWEgb25jZQogCiAjaW5j
bHVkZSA8V2ViQ29yZS9TUUxpdGVEYXRhYmFzZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
CkBAIC0zMywyOSArMzIsMzIgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewotCitjbGFzcyBQYWdlU2NoZW1lUmVnaXN0cnk7CiBjbGFzcyBT
dG9yYWdlVGFzazsKIGNsYXNzIFN0b3JhZ2VUaHJlYWQ7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsK
LWNsYXNzIFN0b3JhZ2VUcmFja2VyQ2xpZW50OyAgICAKK2NsYXNzIFN0b3JhZ2VUcmFja2VyQ2xp
ZW50OworfQogCiBjbGFzcyBTdG9yYWdlVHJhY2tlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoU3RvcmFnZVRyYWNrZXIpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGluaXRpYWxpemVUcmFja2VyKGNvbnN0
IFN0cmluZyYgc3RvcmFnZVBhdGgsIFN0b3JhZ2VUcmFja2VyQ2xpZW50Kik7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFN0b3JhZ2VUcmFja2VyJiB0cmFja2VyKCk7CisgICAgc3RhdGljIHZv
aWQgaW5pdGlhbGl6ZVRyYWNrZXIoY29uc3QgU3RyaW5nJiBzdG9yYWdlUGF0aCwgV2ViQ29yZTo6
U3RvcmFnZVRyYWNrZXJDbGllbnQqKTsKKyAgICBzdGF0aWMgU3RvcmFnZVRyYWNrZXImIHRyYWNr
ZXIoKTsKIAogICAgIHZvaWQgc2V0RGF0YWJhc2VEaXJlY3RvcnlQYXRoKGNvbnN0IFN0cmluZyYp
OwogICAgIFN0cmluZyBkYXRhYmFzZURpcmVjdG9yeVBhdGgoKSBjb25zdDsKIAogICAgIHZvaWQg
c2V0T3JpZ2luRGV0YWlscyhjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgZGF0YWJhc2VGaWxlKTsKICAgICAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0
ZUFsbE9yaWdpbnMoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZU9yaWdpbihTZWN1
cml0eU9yaWdpbiopOworICAgIHZvaWQgZGVsZXRlQWxsT3JpZ2lucygpOworICAgIHZvaWQgZGVs
ZXRlT3JpZ2luKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKik7CiAgICAgdm9pZCBkZWxldGVPcmln
aW5XaXRoSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIpOwotICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgb3JpZ2lucyhWZWN0b3I8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4m
IHJlc3VsdCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgbG9uZyBsb25nIGRpc2tVc2FnZUZvck9yaWdp
bihTZWN1cml0eU9yaWdpbiopOworICAgIHZvaWQgb3JpZ2lucyhWZWN0b3I8UmVmUHRyPFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luPj4mIHJlc3VsdCk7CisgICAgVmVjdG9yPFJlZjxXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbj4+IG9yaWdpbnMoKTsKKworICAgIGxvbmcgbG9uZyBkaXNrVXNhZ2VGb3JP
cmlnaW4oV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qKTsKICAgICAKICAgICB2b2lkIGNhbmNlbERl
bGV0aW5nT3JpZ2luKGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcik7CiAgICAgCkBAIC02
NCw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICBkb3VibGUgc3RvcmFnZURhdGFiYXNlSWRsZUludGVy
dmFsKCkgeyByZXR1cm4gbV9TdG9yYWdlRGF0YWJhc2VJZGxlSW50ZXJ2YWw7IH0KICAgICB2b2lk
IHNldFN0b3JhZ2VEYXRhYmFzZUlkbGVJbnRlcnZhbChkb3VibGUgaW50ZXJ2YWwpIHsgbV9TdG9y
YWdlRGF0YWJhc2VJZGxlSW50ZXJ2YWwgPSBpbnRlcnZhbDsgfQogCi0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzeW5jRmlsZVN5c3RlbUFuZFRyYWNrZXJEYXRhYmFzZSgpOworICAgIHZvaWQgc3lu
Y0ZpbGVTeXN0ZW1BbmRUcmFja2VyRGF0YWJhc2UoKTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNp
dCBTdG9yYWdlVHJhY2tlcihjb25zdCBTdHJpbmcmIHN0b3JhZ2VQYXRoKTsKQEAgLTk2LDExICs5
OCwxMSBAQCBwcml2YXRlOgogCiAgICAgLy8gTXV0ZXggZm9yIG1fZGF0YWJhc2UgYW5kIG1fc3Rv
cmFnZURpcmVjdG9yeVBhdGguCiAgICAgTG9jayBtX2RhdGFiYXNlTXV0ZXg7Ci0gICAgU1FMaXRl
RGF0YWJhc2UgbV9kYXRhYmFzZTsKKyAgICBXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZSBtX2RhdGFi
YXNlOwogICAgIFN0cmluZyBtX3N0b3JhZ2VEaXJlY3RvcnlQYXRoOwogCiAgICAgTG9jayBtX2Ns
aWVudE11dGV4OwotICAgIFN0b3JhZ2VUcmFja2VyQ2xpZW50KiBtX2NsaWVudDsKKyAgICBXZWJD
b3JlOjpTdG9yYWdlVHJhY2tlckNsaWVudCogbV9jbGllbnQ7CiAKICAgICAvLyBHdWFyZCBmb3Ig
bV9vcmlnaW5TZXQgYW5kIG1fb3JpZ2luc0JlaW5nRGVsZXRlZC4KICAgICBMb2NrIG1fb3JpZ2lu
U2V0TXV0ZXg7CkBAIC0xMDgsMTMgKzExMCwxMCBAQCBwcml2YXRlOgogICAgIE9yaWdpblNldCBt
X29yaWdpblNldDsKICAgICBPcmlnaW5TZXQgbV9vcmlnaW5zQmVpbmdEZWxldGVkOwogCi0gICAg
c3RkOjp1bmlxdWVfcHRyPFN0b3JhZ2VUaHJlYWQ+IG1fdGhyZWFkOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxXZWJDb3JlOjpTdG9yYWdlVGhyZWFkPiBtX3RocmVhZDsKICAgICAKICAgICBib29sIG1f
aXNBY3RpdmU7CiAgICAgYm9vbCBtX25lZWRzSW5pdGlhbGl6YXRpb247CiAgICAgZG91YmxlIG1f
U3RvcmFnZURhdGFiYXNlSWRsZUludGVydmFsOworICAgIFJlZjxjb25zdCBXZWJDb3JlOjpQYWdl
U2NoZW1lUmVnaXN0cnk+IG1fc2NoZW1lUmVnaXN0cnk7CiB9OwotICAgIAotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gU3RvcmFnZVRyYWNrZXJfaApJbmRleDogU291cmNlL1dl
YktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZwkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDQgQEAKKzIwMTYtMTEtMDggIEFsZXggQ2hyaXN0ZW5z
ZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBJbnRyb2R1Y2UgUGFnZVNj
aGVtZVJlZ2lzdHJ5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjQ1MzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIE1pc2MvV2ViQ2FjaGUubW06CisgICAgICAgICgrW1dlYkNhY2hlIGFkZEltYWdlVG9D
YWNoZTpmb3JVUkw6Zm9yRnJhbWU6XSk6CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvSG9zdGVk
TmV0c2NhcGVQbHVnaW5TdHJlYW0ubW06CisgICAgICAgIChXZWJLaXQ6Okhvc3RlZE5ldHNjYXBl
UGx1Z2luU3RyZWFtOjpIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbSk6CisgICAgICAgICogUGx1
Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tOgorICAgICAgICAoV2Vi
S2l0OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAg
KiBQbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tOgorICAgICAgICAoV2ViTmV0c2Nh
cGVQbHVnaW5TdHJlYW06OldlYk5ldHNjYXBlUGx1Z2luU3RyZWFtKToKKyAgICAgICAgKiBQbHVn
aW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbToKKyAgICAgICAgKC1bV2ViTmV0c2NhcGVQbHVn
aW5WaWV3IGxvYWRSZXF1ZXN0OmluVGFyZ2V0OndpdGhOb3RpZnlEYXRhOnNlbmROb3RpZmljYXRp
b246XSk6CisgICAgICAgICogUGx1Z2lucy9XZWJQbHVnaW5Db250YWluZXJDaGVjay5tbToKKyAg
ICAgICAgKC1bV2ViUGx1Z2luQ29udGFpbmVyQ2hlY2sgX2lzRm9yYmlkZGVuRmlsZUxvYWRdKToK
KyAgICAgICAgKiBTdG9yYWdlL1dlYlN0b3JhZ2VNYW5hZ2VyLm1tOgorICAgICAgICAoLVtXZWJT
dG9yYWdlTWFuYWdlciBvcmlnaW5zXSk6CisgICAgICAgICogU3RvcmFnZS9XZWJTdG9yYWdlVHJh
Y2tlckNsaWVudC5tbToKKyAgICAgICAgKFdlYlN0b3JhZ2VUcmFja2VyQ2xpZW50OjpkaXNwYXRj
aERpZE1vZGlmeU9yaWdpbik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQXBwbGljYXRp
b25DYWNoZS5tbToKKyAgICAgICAgKHdlYkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlKToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVEb2N1bWVudExvYWRlcik6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4ubW06CisgICAgICAgICgtW1dlYlNlY3VyaXR5
T3JpZ2luIGluaXRXaXRoVVJMOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViRGF0YVNvdXJjZS5t
bToKKyAgICAgICAgKC1bV2ViRGF0YVNvdXJjZSBpbml0V2l0aFJlcXVlc3Q6XSk6CisgICAgICAg
ICogV2ViVmlldy9XZWJEb2N1bWVudExvYWRlck1hYy5oOgorICAgICAgICAoV2ViRG9jdW1lbnRM
b2FkZXJNYWM6OmNyZWF0ZSk6CisgICAgICAgICogV2ViVmlldy9XZWJEb2N1bWVudExvYWRlck1h
Yy5tbToKKyAgICAgICAgKFdlYkRvY3VtZW50TG9hZGVyTWFjOjpXZWJEb2N1bWVudExvYWRlck1h
Yyk6CisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUg
X2FsbG93c0ZvbGxvd2luZ0xpbms6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgor
ICAgICAgICAoK1tXZWJWaWV3IF9hZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeVdpdGhTb3Vy
Y2VPcmlnaW46ZGVzdGluYXRpb25Qcm90b2NvbDpkZXN0aW5hdGlvbkhvc3Q6YWxsb3dEZXN0aW5h
dGlvblN1YmRvbWFpbnM6XSk6CisgICAgICAgICgrW1dlYlZpZXcgX3JlbW92ZU9yaWdpbkFjY2Vz
c1doaXRlbGlzdEVudHJ5V2l0aFNvdXJjZU9yaWdpbjpkZXN0aW5hdGlvblByb3RvY29sOmRlc3Rp
bmF0aW9uSG9zdDphbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWluczpdKToKKwogMjAxNi0xMS0wMSAg
QWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJl
bW92ZSBQYXNzUmVmUHRyIGZyb20gRHVtcFJlbmRlclRyZWUKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
bWFjL01pc2MvV2ViQ2FjaGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvTWlz
Yy9XZWJDYWNoZS5tbQkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYktpdC9tYWMvTWlz
Yy9XZWJDYWNoZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTcyLDcgKzE3Miw4IEBAICsgKGJvb2wp
YWRkSW1hZ2VUb0NhY2hlOihDR0ltYWdlUmVmKWltYWcKICAgICBpZiAoZnJhbWUpCiAgICAgICAg
IHRvcE9yaWdpbiA9IGNvcmUoZnJhbWUpLT5kb2N1bWVudCgpLT50b3BPcmlnaW4oKTsKICNlbmRp
ZgotICAgIHJldHVybiBXZWJDb3JlOjpNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkuYWRkSW1hZ2VU
b0NhY2hlKFJldGFpblB0cjxDR0ltYWdlUmVmPihpbWFnZSksIHVybCwgdG9wT3JpZ2luID8gdG9w
T3JpZ2luLT5kb21haW5Gb3JDYWNoZVBhcnRpdGlvbigpIDogZW1wdHlTdHJpbmcoKSk7CisgICAg
UmVmPFBhZ2VTY2hlbWVSZWdpc3RyeT4gc2NoZW1lUmVnaXN0cnkgPSBmcmFtZSA/IGNvcmUoZnJh
bWUpLT5zY2hlbWVSZWdpc3RyeSgpIDogUGFnZVNjaGVtZVJlZ2lzdHJ5OjpjcmVhdGUoKTsKKyAg
ICByZXR1cm4gV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpLmFkZEltYWdlVG9DYWNo
ZShSZXRhaW5QdHI8Q0dJbWFnZVJlZj4oaW1hZ2UpLCB1cmwsIHRvcE9yaWdpbiA/IHRvcE9yaWdp
bi0+ZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oKSA6IGVtcHR5U3RyaW5nKCksIHNjaGVtZVJlZ2lz
dHJ5LmdldCgpKTsKIH0KIAogKyAodm9pZClyZW1vdmVJbWFnZUZyb21DYWNoZUZvclVSTDooTlNV
UkwgKil1cmwKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVn
aW5TdHJlYW0ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJO
ZXRzY2FwZVBsdWdpblN0cmVhbS5tbQkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYktp
dC9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5tbQkod29ya2luZyBjb3B5KQpA
QCAtMTQ2LDE5ICsxNDYsMTkgQEAgV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW06OldlYk5ldHNjYXBl
UGx1ZwogCiBXZWJOZXRzY2FwZVBsdWdpblN0cmVhbTo6V2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0o
TlNVUkxSZXF1ZXN0ICpyZXF1ZXN0LCBOUFAgcGx1Z2luLCBib29sIHNlbmROb3RpZmljYXRpb24s
IHZvaWQqIG5vdGlmeURhdGEpCiAgICAgOiBtX3JlcXVlc3RVUkwoW3JlcXVlc3QgVVJMXSkKLSAg
ICAsIG1fcGx1Z2luKDApCisgICAgLCBtX3BsdWdpbihudWxscHRyKQogICAgICwgbV90cmFuc2Zl
ck1vZGUoMCkKICAgICAsIG1fb2Zmc2V0KDApCiAgICAgLCBtX2ZpbGVEZXNjcmlwdG9yKC0xKQog
ICAgICwgbV9zZW5kTm90aWZpY2F0aW9uKHNlbmROb3RpZmljYXRpb24pCiAgICAgLCBtX25vdGlm
eURhdGEobm90aWZ5RGF0YSkKLSAgICAsIG1faGVhZGVycygwKQorICAgICwgbV9oZWFkZXJzKG51
bGxwdHIpCiAgICAgLCBtX3JlYXNvbihOUFJFU19CQVNFKQogICAgICwgbV9pc1Rlcm1pbmF0ZWQo
ZmFsc2UpCiAgICAgLCBtX25ld1N0cmVhbVN1Y2Nlc3NmdWwoZmFsc2UpCi0gICAgLCBtX2ZyYW1l
TG9hZGVyKDApCisgICAgLCBtX2ZyYW1lTG9hZGVyKG51bGxwdHIpCiAgICAgLCBtX3JlcXVlc3Qo
YWRvcHROUyhbcmVxdWVzdCBtdXRhYmxlQ29weV0pKQotICAgICwgbV9wbHVnaW5GdW5jcygwKQor
ICAgICwgbV9wbHVnaW5GdW5jcyhudWxscHRyKQogICAgICwgbV9kZWxpdmVyRGF0YVRpbWVyKCp0
aGlzLCAmV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRlbGl2ZXJEYXRhKQogewogICAgIG1lbXNl
dCgmbV9zdHJlYW0sIDAsIHNpemVvZihOUFN0cmVhbSkpOwpAQCAtMTY2LDcgKzE2Niw4IEBAIFdl
Yk5ldHNjYXBlUGx1Z2luU3RyZWFtOjpXZWJOZXRzY2FwZVBsdWcKICAgICBXZWJOZXRzY2FwZVBs
dWdpblZpZXcgKnZpZXcgPSAoV2ViTmV0c2NhcGVQbHVnaW5WaWV3ICopcGx1Z2luLT5uZGF0YTsK
ICAgICAKICAgICAvLyBUaGlzIGNoZWNrIGhhcyBhbHJlYWR5IGJlZW4gZG9uZSBieSB0aGUgcGx1
Zy1pbiB2aWV3LgotICAgIEFTU0VSVChjb3JlKFt2aWV3IHdlYkZyYW1lXSktPmRvY3VtZW50KCkt
PnNlY3VyaXR5T3JpZ2luKCktPmNhbkRpc3BsYXkoW3JlcXVlc3QgVVJMXSkpOworICAgIGF1dG8q
IGZyYW1lID0gY29yZShbdmlldyB3ZWJGcmFtZV0pOworICAgIEFTU0VSVChmcmFtZS0+ZG9jdW1l
bnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuRGlzcGxheShbcmVxdWVzdCBVUkxdLCBmcmFtZS0+
c2NoZW1lUmVnaXN0cnkoKSkpOwogICAgIAogICAgIEFTU0VSVChbcmVxdWVzdCBVUkxdKTsKICAg
ICBBU1NFUlQocGx1Z2luKTsKQEAgLTE3NSw3ICsxNzYsNyBAQCBXZWJOZXRzY2FwZVBsdWdpblN0
cmVhbTo6V2ViTmV0c2NhcGVQbHVnCiAgICAgCiAgICAgc3RyZWFtcygpLmFkZCgmbV9zdHJlYW0s
IHBsdWdpbik7CiAgICAgCi0gICAgU3RyaW5nIHJlZmVycmVyID0gU2VjdXJpdHlQb2xpY3k6Omdl
bmVyYXRlUmVmZXJyZXJIZWFkZXIoY29yZShbdmlldyB3ZWJGcmFtZV0pLT5kb2N1bWVudCgpLT5y
ZWZlcnJlclBvbGljeSgpLCBbcmVxdWVzdCBVUkxdLCBjb3JlKFt2aWV3IHdlYkZyYW1lXSktPmxv
YWRlcigpLm91dGdvaW5nUmVmZXJyZXIoKSk7CisgICAgU3RyaW5nIHJlZmVycmVyID0gU2VjdXJp
dHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJyZXJIZWFkZXIoZnJhbWUtPmRvY3VtZW50KCktPnJlZmVy
cmVyUG9saWN5KCksIFtyZXF1ZXN0IFVSTF0sIGZyYW1lLT5sb2FkZXIoKS5vdXRnb2luZ1JlZmVy
cmVyKCksIGZyYW1lLT5zY2hlbWVSZWdpc3RyeSgpKTsKICAgICBpZiAocmVmZXJyZXIuaXNFbXB0
eSgpKQogICAgICAgICBbbV9yZXF1ZXN0LmdldCgpIF93ZWJfc2V0SFRUUFJlZmVycmVyOm5pbF07
CiAgICAgZWxzZQpJbmRleDogU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBs
dWdpblZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJO
ZXRzY2FwZVBsdWdpblZpZXcubW0JKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJLaXQv
bWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0x
NjE0LDkgKzE2MTQsOSBAQCAtICh2b2lkKWxvYWRQbHVnaW5SZXF1ZXN0OihXZWJQbHVnaW5SZXF1
CiAKIC0gKE5QRXJyb3IpbG9hZFJlcXVlc3Q6KE5TTXV0YWJsZVVSTFJlcXVlc3QgKilyZXF1ZXN0
IGluVGFyZ2V0Oihjb25zdCBjaGFyICopY1RhcmdldCB3aXRoTm90aWZ5RGF0YToodm9pZCAqKW5v
dGlmeURhdGEgc2VuZE5vdGlmaWNhdGlvbjooQk9PTClzZW5kTm90aWZpY2F0aW9uCiB7Ci0gICAg
TlNVUkwgKlVSTCA9IFtyZXF1ZXN0IFVSTF07CisgICAgTlNVUkwgKnVybCA9IFtyZXF1ZXN0IFVS
TF07CiAKLSAgICBpZiAoIVVSTCkgCisgICAgaWYgKCF1cmwpCiAgICAgICAgIHJldHVybiBOUEVS
Ul9JTlZBTElEX1VSTDsKIAogICAgIC8vIERvbid0IGFsbG93IHJlcXVlc3RzIHRvIGJlIGxvYWRl
ZCB3aGVuIHRoZSBkb2N1bWVudCBsb2FkZXIgaXMgc3RvcHBpbmcgYWxsIGxvYWRlcnMuCkBAIC0x
NjM3LDcgKzE2MzcsNyBAQCAtIChOUEVycm9yKWxvYWRSZXF1ZXN0OihOU011dGFibGVVUkxSZXF1
CiAgICAgICAgIHJldHVybiBOUEVSUl9HRU5FUklDX0VSUk9SOyAKICAgICB9CiAgICAgCi0gICAg
TlNTdHJpbmcgKkpTU3RyaW5nID0gW1VSTCBfd2Via2l0X3NjcmlwdElmSmF2YVNjcmlwdFVSTF07
CisgICAgTlNTdHJpbmcgKkpTU3RyaW5nID0gW3VybCBfd2Via2l0X3NjcmlwdElmSmF2YVNjcmlw
dFVSTF07CiAgICAgaWYgKEpTU3RyaW5nICE9IG5pbCkgewogICAgICAgICBpZiAoIVtbW3NlbGYg
d2ViVmlld10gcHJlZmVyZW5jZXNdIGlzSmF2YVNjcmlwdEVuYWJsZWRdKSB7CiAgICAgICAgICAg
ICAvLyBSZXR1cm4gTlBFUlJfR0VORVJJQ19FUlJPUiBpZiBKUyBpcyBkaXNhYmxlZC4gVGhpcyBp
cyB3aGF0IE1vemlsbGEgZG9lcy4KQEAgLTE2NDgsNyArMTY0OCw4IEBAIC0gKE5QRXJyb3IpbG9h
ZFJlcXVlc3Q6KE5TTXV0YWJsZVVSTFJlcXUKICAgICAgICAgICAgIHJldHVybiBOUEVSUl9JTlZB
TElEX1BBUkFNOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKCFjb3JlKFtz
ZWxmIHdlYkZyYW1lXSktPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhbkRpc3BsYXko
VVJMKSkKKyAgICAgICAgYXV0byogZG9jdW1lbnQgPSBjb3JlKGZyYW1lKS0+ZG9jdW1lbnQoKTsK
KyAgICAgICAgaWYgKCFkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuRGlzcGxheSh1cmws
IGRvY3VtZW50LT5zY2hlbWVSZWdpc3RyeSgpKSkKICAgICAgICAgICAgIHJldHVybiBOUEVSUl9H
RU5FUklDX0VSUk9SOwogICAgIH0KICAgICAgICAgCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9Q
bHVnaW5zL1dlYlBsdWdpbkNvbnRhaW5lckNoZWNrLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvbWFjL1BsdWdpbnMvV2ViUGx1Z2luQ29udGFpbmVyQ2hlY2subW0JKHJldmlzaW9uIDIw
ODM5OCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViUGx1Z2luQ29udGFpbmVyQ2hl
Y2subW0JKHdvcmtpbmcgY29weSkKQEAgLTk3LDE0ICs5NywxNCBAQCAtICh2b2lkKV9jb250aW51
ZVdpdGhQb2xpY3k6KFBvbGljeUFjdGlvCiAKIC0gKEJPT0wpX2lzRm9yYmlkZGVuRmlsZUxvYWQK
IHsKLSAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKFtfY29udHJvbGxlciB3ZWJGcmFtZV0pOwot
ICAgQVNTRVJUKGNvcmVGcmFtZSk7Ci0gICBpZiAoIWNvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+c2Vj
dXJpdHlPcmlnaW4oKS0+Y2FuRGlzcGxheShbX3JlcXVlc3QgVVJMXSkpIHsKLSAgICAgICBbc2Vs
ZiBfY29udGludWVXaXRoUG9saWN5OlBvbGljeUlnbm9yZV07Ci0gICAgICAgcmV0dXJuIFlFUzsK
LSAgIH0KKyAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShbX2NvbnRyb2xsZXIgd2ViRnJhbWVd
KTsKKyAgICBBU1NFUlQoY29yZUZyYW1lKTsKKyAgICBpZiAoIWNvcmVGcmFtZS0+ZG9jdW1lbnQo
KS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuRGlzcGxheShbX3JlcXVlc3QgVVJMXSwgY29yZUZyYW1l
LT5zY2hlbWVSZWdpc3RyeSgpKSkgeworICAgICAgICBbc2VsZiBfY29udGludWVXaXRoUG9saWN5
OlBvbGljeUlnbm9yZV07CisgICAgICAgIHJldHVybiBZRVM7CisgICAgfQogCi0gICByZXR1cm4g
Tk87CisgICAgcmV0dXJuIE5POwogfQogCiAtIChOU0RpY3Rpb25hcnkgKilfYWN0aW9uSW5mb3Jt
YXRpb25XaXRoVVJMOihOU1VSTCAqKVVSTApJbmRleDogU291cmNlL1dlYktpdC9tYWMvUGx1Z2lu
cy9Ib3N0ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0u
bW0JKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVk
L0hvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01OSw5ICs1
OSwxMCBAQCBIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbTo6SG9zdGVkTmV0c2NhCiAgICAgLCBt
X3N0cmVhbUlEKHN0cmVhbUlEKQogICAgICwgbV9yZXF1ZXN0KGFkb3B0TlMoW3JlcXVlc3QgbXV0
YWJsZUNvcHldKSkKICAgICAsIG1fcmVxdWVzdFVSTChbcmVxdWVzdCBVUkxdKQotICAgICwgbV9m
cmFtZUxvYWRlcigwKQorICAgICwgbV9mcmFtZUxvYWRlcihudWxscHRyKQogewotICAgIFN0cmlu
ZyByZWZlcnJlciA9IFNlY3VyaXR5UG9saWN5OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVyKGNvcmUo
W2luc3RhbmNlLT5wbHVnaW5WaWV3KCkgd2ViRnJhbWVdKS0+ZG9jdW1lbnQoKS0+cmVmZXJyZXJQ
b2xpY3koKSwgW3JlcXVlc3QgVVJMXSwgY29yZShbaW5zdGFuY2UtPnBsdWdpblZpZXcoKSB3ZWJG
cmFtZV0pLT5sb2FkZXIoKS5vdXRnb2luZ1JlZmVycmVyKCkpOworICAgIGF1dG8gZnJhbWUgPSBj
b3JlKFtpbnN0YW5jZS0+cGx1Z2luVmlldygpIHdlYkZyYW1lXSk7CisgICAgU3RyaW5nIHJlZmVy
cmVyID0gU2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJyZXJIZWFkZXIoZnJhbWUtPmRvY3Vt
ZW50KCktPnJlZmVycmVyUG9saWN5KCksIG1fcmVxdWVzdFVSTC5nZXQoKSwgZnJhbWUtPmxvYWRl
cigpLm91dGdvaW5nUmVmZXJyZXIoKSwgZnJhbWUtPnNjaGVtZVJlZ2lzdHJ5KCkpOwogICAgIGlm
IChyZWZlcnJlci5pc0VtcHR5KCkpCiAgICAgICAgIFttX3JlcXVlc3QuZ2V0KCkgX3dlYl9zZXRI
VFRQUmVmZXJyZXI6bmlsXTsKICAgICBlbHNlCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9QbHVn
aW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVBy
b3h5Lm1tCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hv
c3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0JKHdvcmtpbmcgY29weSkKQEAgLTc1
NCw5ICs3NTQsOSBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6cmVxdWVzCiAg
ICAgCiBOUEVycm9yIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6bG9hZFJlcXVlc3QoTlNV
UkxSZXF1ZXN0ICpyZXF1ZXN0LCBjb25zdCBjaGFyKiBjVGFyZ2V0LCBib29sIGFsbG93UG9wdXBz
LCB1aW50MzJfdCYgcmVxdWVzdElEKQogewotICAgIE5TVVJMICpVUkwgPSBbcmVxdWVzdCBVUkxd
OworICAgIE5TVVJMICp1cmwgPSBbcmVxdWVzdCBVUkxdOwogCi0gICAgaWYgKCFVUkwpIAorICAg
IGlmICghdXJsKQogICAgICAgICByZXR1cm4gTlBFUlJfSU5WQUxJRF9VUkw7CiAKICAgICAvLyBE
b24ndCBhbGxvdyByZXF1ZXN0cyB0byBiZSBsb2FkZWQgd2hlbiB0aGUgZG9jdW1lbnQgbG9hZGVy
IGlzIHN0b3BwaW5nIGFsbCBsb2FkZXJzLgpAQCAtNzc4LDE0ICs3NzgsMTUgQEAgTlBFcnJvciBO
ZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmxvYQogICAgICAgICByZXR1cm4gTlBFUlJfR0VO
RVJJQ19FUlJPUjsgCiAgICAgfQogICAgIAotICAgIE5TU3RyaW5nICpKU1N0cmluZyA9IFtVUkwg
X3dlYmtpdF9zY3JpcHRJZkphdmFTY3JpcHRVUkxdOworICAgIE5TU3RyaW5nICpKU1N0cmluZyA9
IFt1cmwgX3dlYmtpdF9zY3JpcHRJZkphdmFTY3JpcHRVUkxdOwogICAgIGlmIChKU1N0cmluZyAh
PSBuaWwpIHsKICAgICAgICAgaWYgKCFbW1ttX3BsdWdpblZpZXcgd2ViVmlld10gcHJlZmVyZW5j
ZXNdIGlzSmF2YVNjcmlwdEVuYWJsZWRdKSB7CiAgICAgICAgICAgICAvLyBSZXR1cm4gTlBFUlJf
R0VORVJJQ19FUlJPUiBpZiBKUyBpcyBkaXNhYmxlZC4gVGhpcyBpcyB3aGF0IE1vemlsbGEgZG9l
cy4KICAgICAgICAgICAgIHJldHVybiBOUEVSUl9HRU5FUklDX0VSUk9SOwogICAgICAgICB9CiAg
ICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKCFjb3JlKFttX3BsdWdpblZpZXcgd2ViRnJhbWVdKS0+
ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuRGlzcGxheShVUkwpKQorICAgICAgICBh
dXRvKiBkb2N1bWVudCA9IGNvcmUoW21fcGx1Z2luVmlldyB3ZWJGcmFtZV0pLT5kb2N1bWVudCgp
OworICAgICAgICBpZiAoIWRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLT5jYW5EaXNwbGF5KHVy
bCwgZG9jdW1lbnQtPnNjaGVtZVJlZ2lzdHJ5KCkpKQogICAgICAgICAgICAgcmV0dXJuIE5QRVJS
X0dFTkVSSUNfRVJST1I7CiAgICAgfQogICAgIApJbmRleDogU291cmNlL1dlYktpdC9tYWMvU3Rv
cmFnZS9XZWJTdG9yYWdlTWFuYWdlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21h
Yy9TdG9yYWdlL1dlYlN0b3JhZ2VNYW5hZ2VyLm1tCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3Vy
Y2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYlN0b3JhZ2VNYW5hZ2VyLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC02NCwxNCArNjQsMTIgQEAgLSAoaWQpaW5pdAogCiAtIChOU0FycmF5ICopb3JpZ2lucwog
ewotICAgIFZlY3RvcjxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBjb3JlT3JpZ2luczsKLQotICAg
IFN0b3JhZ2VUcmFja2VyOjp0cmFja2VyKCkub3JpZ2lucyhjb3JlT3JpZ2lucyk7CisgICAgVmVj
dG9yPFJlZjxTZWN1cml0eU9yaWdpbj4+IGNvcmVPcmlnaW5zID0gU3RvcmFnZVRyYWNrZXI6OnRy
YWNrZXIoKS5vcmlnaW5zKCk7CiAKICAgICBOU011dGFibGVBcnJheSAqd2ViT3JpZ2lucyA9IFtb
TlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6Y29yZU9yaWdpbnMuc2l6ZSgp
XTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY29yZU9yaWdpbnMuc2l6ZSgpOyArK2kp
IHsKLSAgICAgICAgV2ViU2VjdXJpdHlPcmlnaW4gKndlYk9yaWdpbiA9IFtbV2ViU2VjdXJpdHlP
cmlnaW4gYWxsb2NdIF9pbml0V2l0aFdlYkNvcmVTZWN1cml0eU9yaWdpbjpjb3JlT3JpZ2luc1tp
XS5nZXQoKV07CisgICAgICAgIFdlYlNlY3VyaXR5T3JpZ2luICp3ZWJPcmlnaW4gPSBbW1dlYlNl
Y3VyaXR5T3JpZ2luIGFsbG9jXSBfaW5pdFdpdGhXZWJDb3JlU2VjdXJpdHlPcmlnaW46Y29yZU9y
aWdpbnNbaV0ucHRyKCldOwogICAgICAgICBbd2ViT3JpZ2lucyBhZGRPYmplY3Q6d2ViT3JpZ2lu
XTsKICAgICAgICAgW3dlYk9yaWdpbiByZWxlYXNlXTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L21hYy9TdG9yYWdlL1dlYlN0b3JhZ2VUcmFja2VyQ2xpZW50Lm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViU3RvcmFnZVRyYWNrZXJDbGllbnQubW0JKHJl
dmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViU3RvcmFnZVRy
YWNrZXJDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2ltcG9y
dCAiV2ViU2VjdXJpdHlPcmlnaW5JbnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViU3RvcmFnZU1hbmFn
ZXJQcml2YXRlLmgiCisjaW1wb3J0IDxXZWJDb3JlL1BhZ2VTY2hlbWVSZWdpc3RyeS5oPgogI2lt
cG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQu
aD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTU4LDcgKzU5LDcgQEAgdm9pZCBXZWJT
dG9yYWdlVHJhY2tlckNsaWVudDo6ZGlzcGF0Y2hEaQogCiB2b2lkIFdlYlN0b3JhZ2VUcmFja2Vy
Q2xpZW50OjpkaXNwYXRjaERpZE1vZGlmeU9yaWdpbihjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50
aWZpZXIpCiB7Ci0gICAgYXV0byBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbURh
dGFiYXNlSWRlbnRpZmllcihvcmlnaW5JZGVudGlmaWVyKTsKKyAgICBhdXRvIG9yaWdpbiA9IFNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyKG9yaWdpbklkZW50aWZp
ZXIsIFBhZ2VTY2hlbWVSZWdpc3RyeTo6Y3JlYXRlKCkpOwogCiAgICAgaWYgKGlzTWFpblRocmVh
ZCgpKSB7CiAgICAgICAgIGRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKFdURk1vdmUob3JpZ2luKSk7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBcHBsaWNhdGlvbkNh
Y2hlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkFwcGxpY2F0aW9uQ2FjaGUubW0JKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFwcGxpY2F0aW9uQ2FjaGUubW0JKHdvcmtpbmcgY29weSkK
QEAgLTI5LDYgKzI5LDcgQEAKICNpbXBvcnQgIldlYlNlY3VyaXR5T3JpZ2luSW50ZXJuYWwuaCIK
ICNpbXBvcnQgPFdlYkNvcmUvQXBwbGljYXRpb25DYWNoZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9B
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9QYWdlU2NoZW1lUmVn
aXN0cnkuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbXBvcnQgPHd0
Zi9SZXRhaW5QdHIuaD4KIApAQCAtMTQxLDcgKzE0Miw3IEBAICsgKE5TQXJyYXkgKilvcmlnaW5z
V2l0aENhY2hlCiAKIFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlJiB3ZWJBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZSgpCiB7Ci0gICAgc3RhdGljIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
JiBzdG9yYWdlID0gQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNyZWF0ZShhcHBsaWNhdGlvbkNh
Y2hlUGF0aCgpLCAiQXBwbGljYXRpb25DYWNoZSIpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWMgQXBw
bGljYXRpb25DYWNoZVN0b3JhZ2UmIHN0b3JhZ2UgPSBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6
Y3JlYXRlKGFwcGxpY2F0aW9uQ2FjaGVQYXRoKCksICJBcHBsaWNhdGlvbkNhY2hlIiwgUGFnZVNj
aGVtZVJlZ2lzdHJ5OjpjcmVhdGUoKSkubGVha1JlZigpOwogCiAgICAgcmV0dXJuIHN0b3JhZ2U7
CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTEwOCw2ICsxMDgsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9OU1VSTERvd25sb2Fk
U1BJLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05TVVJMRmlsZVR5cGVNYXBwaW5nc1NQSS5oPgogI2lt
cG9ydCA8V2ViQ29yZS9QYWdlLmg+CisjaW1wb3J0IDxXZWJDb3JlL1BhZ2VTY2hlbWVSZWdpc3Ry
eS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbHVnaW5CbGFja2xpc3QuaD4KICNpbXBvcnQgPFdlYkNv
cmUvUGx1Z2luVmlld0Jhc2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvUHJvdGVjdGlvblNwYWNlLmg+
CkBAIC0xMzM2LDcgKzEzMzcsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpwcmVwYXJl
Rm9yRGF0CiAKIFJlZjxEb2N1bWVudExvYWRlcj4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0
ZURvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3Vi
c3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQogewotICAgIFJlZjxXZWJEb2N1bWVudExvYWRl
ck1hYz4gbG9hZGVyID0gV2ViRG9jdW1lbnRMb2FkZXJNYWM6OmNyZWF0ZShyZXF1ZXN0LCBzdWJz
dGl0dXRlRGF0YSk7CisgICAgUmVmPFdlYkRvY3VtZW50TG9hZGVyTWFjPiBsb2FkZXIgPSBXZWJE
b2N1bWVudExvYWRlck1hYzo6Y3JlYXRlKHJlcXVlc3QsIHN1YnN0aXR1dGVEYXRhLCBQYWdlU2No
ZW1lUmVnaXN0cnk6OmNyZWF0ZSgpKTsKIAogICAgIFdlYkRhdGFTb3VyY2UgKmRhdGFTb3VyY2Ug
PSBbW1dlYkRhdGFTb3VyY2UgYWxsb2NdIF9pbml0V2l0aERvY3VtZW50TG9hZGVyOmxvYWRlci5w
dHIoKV07CiAgICAgbG9hZGVyLT5zZXREYXRhU291cmNlKGRhdGFTb3VyY2UsIGdldFdlYlZpZXco
bV93ZWJGcmFtZS5nZXQoKSkpOwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViU2VjdXJpdHlPcmlnaW4ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4ubW0JKHJldmlzaW9uIDIwODM5OCkKKysr
IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW1wb3J0ICJXZWJRdW90YU1hbmFnZXIu
aCIKICNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RhdGFiYXNlTWFu
YWdlci5oPgorI2ltcG9ydCA8V2ViQ29yZS9QYWdlU2NoZW1lUmVnaXN0cnkuaD4KICNpbXBvcnQg
PFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBA
IC00MSw3ICs0Miw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiArIChpZCl3ZWJTZWN1
cml0eU9yaWdpbkZyb21EYXRhYmFzZUlkZW50aWZpZXI6KE5TU3RyaW5nICopZGF0YWJhc2VJZGVu
dGlmaWVyCiB7Ci0gICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBTZWN1cml0eU9y
aWdpbjo6bWF5YmVDcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyKGRhdGFiYXNlSWRlbnRpZmll
cik7CisgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6
bWF5YmVDcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyKGRhdGFiYXNlSWRlbnRpZmllciwgUGFn
ZVNjaGVtZVJlZ2lzdHJ5OjpjcmVhdGUoKSk7CiAgICAgaWYgKCFvcmlnaW4pCiAgICAgICAgIHJl
dHVybiBuaWw7CiAKQEAgLTU0LDcgKzU1LDcgQEAgLSAoaWQpaW5pdFdpdGhVUkw6KE5TVVJMICop
dXJsCiAgICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgYXV0byBvcmln
aW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFVSTChbdXJsIGFic29sdXRlVVJMXSkpOworICAg
IGF1dG8gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShVUkwoW3VybCBhYnNvbHV0ZVVS
TF0pLCBQYWdlU2NoZW1lUmVnaXN0cnk6OmNyZWF0ZSgpKTsKICAgICBTZWN1cml0eU9yaWdpbiog
cmF3T3JpZ2luID0gJm9yaWdpbi5sZWFrUmVmKCk7CiAgICAgX3ByaXZhdGUgPSByZWludGVycHJl
dF9jYXN0PFdlYlNlY3VyaXR5T3JpZ2luUHJpdmF0ZSAqPihyYXdPcmlnaW4pOwogCkluZGV4OiBT
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCShyZXZpc2lvbiAyMDgz
OTgpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0JKHdvcmtp
bmcgY29weSkKQEAgLTUzLDYgKzUzLDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL0xlZ2FjeVdlYkFyY2hpdmUuaD4KICNpbXBvcnQgPFdlYkNvcmUvTUlNRVR5
cGVSZWdpc3RyeS5oPgorI2ltcG9ydCA8V2ViQ29yZS9QYWdlU2NoZW1lUmVnaXN0cnkuaD4KICNp
bXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NoYXJl
ZEJ1ZmZlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgpAQCAtNDE3
LDcgKzQxOCw3IEBAIC0gKGlkKV9pbml0V2l0aERvY3VtZW50TG9hZGVyOihQYXNzUmVmUHQKIAog
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdAog
ewotICAgIHJldHVybiBbc2VsZiBfaW5pdFdpdGhEb2N1bWVudExvYWRlcjpXZWJEb2N1bWVudExv
YWRlck1hYzo6Y3JlYXRlKHJlcXVlc3QsIFN1YnN0aXR1dGVEYXRhKCkpXTsKKyAgICByZXR1cm4g
W3NlbGYgX2luaXRXaXRoRG9jdW1lbnRMb2FkZXI6V2ViRG9jdW1lbnRMb2FkZXJNYWM6OmNyZWF0
ZShyZXF1ZXN0LCBTdWJzdGl0dXRlRGF0YSgpLCBQYWdlU2NoZW1lUmVnaXN0cnk6OmNyZWF0ZSgp
KV07CiB9CiAKIC0gKHZvaWQpZGVhbGxvYwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJEb2N1bWVudExvYWRlck1hYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViRG9jdW1lbnRMb2FkZXJNYWMuaAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJEb2N1bWVudExvYWRlck1hYy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNCwxNCArMzQsMTUgQEAKIEBjbGFzcyBXZWJWaWV3OwogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0gICAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OworY2xhc3MgUGFnZVNjaGVtZVJlZ2lz
dHJ5OworY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogfQogCiBjbGFzcyBXZWJEb2N1bWVudExvYWRl
ck1hYyA6IHB1YmxpYyBXZWJDb3JlOjpEb2N1bWVudExvYWRlciB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxXZWJEb2N1bWVudExvYWRlck1hYz4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmIGRhdGEp
CisgICAgc3RhdGljIFJlZjxXZWJEb2N1bWVudExvYWRlck1hYz4gY3JlYXRlKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURh
dGEmIGRhdGEsIGNvbnN0IFdlYkNvcmU6OlBhZ2VTY2hlbWVSZWdpc3RyeSYgc2NoZW1lUmVnaXN0
cnkpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJEb2N1bWVudExvYWRl
ck1hYyhyZXF1ZXN0LCBkYXRhKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkRv
Y3VtZW50TG9hZGVyTWFjKHJlcXVlc3QsIGRhdGEsIHNjaGVtZVJlZ2lzdHJ5KSk7CiAgICAgfQog
CiAgICAgdm9pZCBzZXREYXRhU291cmNlKFdlYkRhdGFTb3VyY2UgKiwgV2ViVmlldyopOwpAQCAt
NTIsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWNyZWFzZUxvYWRDb3VudCh1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIpOwogCiBwcml2YXRlOgotICAgIFdlYkRvY3VtZW50TG9hZGVyTWFj
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1
dGVEYXRhJik7CisgICAgV2ViRG9jdW1lbnRMb2FkZXJNYWMoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmLCBjb25zdCBXZWJDb3Jl
OjpQYWdlU2NoZW1lUmVnaXN0cnkmKTsKIAogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hUb0ZyYW1l
KCk7CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaEZyb21GcmFtZSgpOwpJbmRleDogU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJEb2N1bWVudExvYWRlck1hYy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRvY3VtZW50TG9hZGVyTWFjLm1tCShyZXZpc2lv
biAyMDgzOTgpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRvY3VtZW50TG9hZGVy
TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw4ICszMyw4IEBACiAKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCi1XZWJEb2N1bWVudExvYWRlck1hYzo6V2ViRG9jdW1lbnRMb2FkZXJNYWMo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdWJzdGl0dXRlRGF0YSYgc3Vi
c3RpdHV0ZURhdGEpCi0gICAgOiBEb2N1bWVudExvYWRlcihyZXF1ZXN0LCBzdWJzdGl0dXRlRGF0
YSkKK1dlYkRvY3VtZW50TG9hZGVyTWFjOjpXZWJEb2N1bWVudExvYWRlck1hYyhjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0
YSwgY29uc3QgUGFnZVNjaGVtZVJlZ2lzdHJ5JiBzY2hlbWVSZWdpc3RyeSkKKyAgICA6IERvY3Vt
ZW50TG9hZGVyKHJlcXVlc3QsIHN1YnN0aXR1dGVEYXRhLCBzY2hlbWVSZWdpc3RyeSkKICAgICAs
IG1fZGF0YVNvdXJjZShuaWwpCiAgICAgLCBtX2lzRGF0YVNvdXJjZVJldGFpbmVkKGZhbHNlKQog
ewpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCShyZXZpc2lvbiAyMDgz
OTgpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0yMDgyLDExICsyMDgyLDEyIEBAIC0gKE5TTXV0YWJsZURpY3Rpb25hcnkgKilfY2Fj
aGVhYmlsaXR5RGkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi0tIChCT09MKV9hbGxvd3NGb2xs
b3dpbmdMaW5rOihOU1VSTCAqKVVSTAorLSAoQk9PTClfYWxsb3dzRm9sbG93aW5nTGluazooTlNV
UkwgKil1cmwKIHsKICAgICBpZiAoIV9wcml2YXRlLT5jb3JlRnJhbWUpCiAgICAgICAgIHJldHVy
biBZRVM7Ci0gICAgcmV0dXJuIF9wcml2YXRlLT5jb3JlRnJhbWUtPmRvY3VtZW50KCktPnNlY3Vy
aXR5T3JpZ2luKCktPmNhbkRpc3BsYXkoVVJMKTsKKyAgICBhdXRvKiBkb2N1bWVudCA9IF9wcml2
YXRlLT5jb3JlRnJhbWUtPmRvY3VtZW50KCk7CisgICAgcmV0dXJuIGRvY3VtZW50LT5zZWN1cml0
eU9yaWdpbigpLT5jYW5EaXNwbGF5KHVybCwgZG9jdW1lbnQtPnNjaGVtZVJlZ2lzdHJ5KCkpOwog
fQogCiAtIChOU1N0cmluZyAqKV9zdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmlu
ZzooTlNTdHJpbmcgKilzdHJpbmcgd2l0aEdsb2JhbE9iamVjdDooSlNPYmplY3RSZWYpZ2xvYmFs
T2JqZWN0UmVmIGluU2NyaXB0V29ybGQ6KFdlYlNjcmlwdFdvcmxkICopd29ybGQKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTY3LDYg
KzE2Nyw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2VDYWNoZS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9QYWdlQ29uZmlndXJhdGlvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYWdlR3JvdXAuaD4KKyNp
bXBvcnQgPFdlYkNvcmUvUGFnZVNjaGVtZVJlZ2lzdHJ5Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Bs
YXRmb3JtRXZlbnRGYWN0b3J5TWFjLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Byb2dyZXNzVHJhY2tl
ci5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJWaWV3Lmg+CkBAIC00MDc0LDEyICs0MDc1LDEy
IEBAIC0gKE5TUGFzdGVib2FyZCAqKV9pbnNlcnRpb25QYXN0ZWJvYXJkCiAKICsgKHZvaWQpX2Fk
ZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5V2l0aFNvdXJjZU9yaWdpbjooTlNTdHJpbmcgKilz
b3VyY2VPcmlnaW4gZGVzdGluYXRpb25Qcm90b2NvbDooTlNTdHJpbmcgKilkZXN0aW5hdGlvblBy
b3RvY29sIGRlc3RpbmF0aW9uSG9zdDooTlNTdHJpbmcgKilkZXN0aW5hdGlvbkhvc3QgYWxsb3dE
ZXN0aW5hdGlvblN1YmRvbWFpbnM6KEJPT0wpYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMKIHsK
LSAgICBTZWN1cml0eVBvbGljeTo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoU2VjdXJp
dHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoc291cmNlT3JpZ2luKS5nZXQoKSwgZGVzdGluYXRp
b25Qcm90b2NvbCwgZGVzdGluYXRpb25Ib3N0LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7
CisgICAgU2VjdXJpdHlQb2xpY3k6OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KFNlY3Vy
aXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHNvdXJjZU9yaWdpbiwgUGFnZVNjaGVtZVJlZ2lz
dHJ5OjpjcmVhdGUoKSkuZ2V0KCksIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9uSG9z
dCwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwogfQogCiArICh2b2lkKV9yZW1vdmVPcmln
aW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeVdpdGhTb3VyY2VPcmlnaW46KE5TU3RyaW5nICopc291cmNl
T3JpZ2luIGRlc3RpbmF0aW9uUHJvdG9jb2w6KE5TU3RyaW5nICopZGVzdGluYXRpb25Qcm90b2Nv
bCBkZXN0aW5hdGlvbkhvc3Q6KE5TU3RyaW5nICopZGVzdGluYXRpb25Ib3N0IGFsbG93RGVzdGlu
YXRpb25TdWJkb21haW5zOihCT09MKWFsbG93RGVzdGluYXRpb25TdWJkb21haW5zCiB7Ci0gICAg
U2VjdXJpdHlQb2xpY3k6OnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KFNlY3VyaXR5
T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHNvdXJjZU9yaWdpbikuZ2V0KCksIGRlc3RpbmF0aW9u
UHJvdG9jb2wsIGRlc3RpbmF0aW9uSG9zdCwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwor
ICAgIFNlY3VyaXR5UG9saWN5OjpyZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShTZWN1
cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhzb3VyY2VPcmlnaW4sIFBhZ2VTY2hlbWVSZWdp
c3RyeTo6Y3JlYXRlKCkpLmdldCgpLCBkZXN0aW5hdGlvblByb3RvY29sLCBkZXN0aW5hdGlvbkhv
c3QsIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKIH0KIAogKyAodm9pZClfcmVzZXRPcmln
aW5BY2Nlc3NXaGl0ZWxpc3RzCg==
</data>
<flag name="review"
          id="316931"
          type_id="1"
          status="-"
          setter="dbates"
    />
          </attachment>
      

    </bug>

</bugzilla>