<?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>221653</bug_id>
          
          <creation_ts>2021-02-09 22:52:15 -0800</creation_ts>
          <short_desc>Stop using GenericCallback from WebPageProxy</short_desc>
          <delta_ts>2021-02-15 14:03:28 -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>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=221741</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=221843</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</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>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>luiz</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zeno</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1727430</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-02-09 22:52:15 -0800</bug_when>
    <thetext>Stop using GenericCallback from WebPageProxy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727431</commentid>
    <comment_count>1</comment_count>
      <attachid>419817</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-02-09 22:53:34 -0800</bug_when>
    <thetext>Created attachment 419817
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727556</commentid>
    <comment_count>2</comment_count>
      <attachid>419850</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-02-10 08:54:18 -0800</bug_when>
    <thetext>Created attachment 419850
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727650</commentid>
    <comment_count>3</comment_count>
      <attachid>419870</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-02-10 11:14:48 -0800</bug_when>
    <thetext>Created attachment 419870
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727923</commentid>
    <comment_count>4</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-02-10 19:06:45 -0800</bug_when>
    <thetext>r272702</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727954</commentid>
    <comment_count>5</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2021-02-10 21:23:59 -0800</bug_when>
    <thetext>Reverted r272702 for reason:

Caused assertion failure on macOS debug WK2 bots

Committed r272705: &lt;https://trac.webkit.org/changeset/272705&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728277</commentid>
    <comment_count>6</comment_count>
      <attachid>420038</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-02-11 13:45:08 -0800</bug_when>
    <thetext>Created attachment 420038
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728299</commentid>
    <comment_count>7</comment_count>
      <attachid>420044</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-02-11 14:21:55 -0800</bug_when>
    <thetext>Created attachment 420044
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728616</commentid>
    <comment_count>8</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-02-12 09:50:54 -0800</bug_when>
    <thetext>r272784</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728617</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-02-12 09:51:14 -0800</bug_when>
    <thetext>&lt;rdar://problem/74280146&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729318</commentid>
    <comment_count>10</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-02-15 13:13:58 -0800</bug_when>
    <thetext>This introduced an unused variable warning:

[1954/2287] Building CXX object Source/WebKit/CMakeFiles/...ces/WebKit/unified-sources/UnifiedSource-88d1702b-7.cpp.o
In file included from DerivedSources/WebKit/unified-sources/UnifiedSource-88d1702b-7.cpp:8:
../../Source/WebKit/UIProcess/WebPageProxy.cpp: In member function ‘void WebKit::WebPageProxy::resetState(WebKit::WebPageProxy::ResetStateReason)’:
../../Source/WebKit/UIProcess/WebPageProxy.cpp:7462:25: warning: variable ‘error’ set but not used [-Wunused-but-set-variable]
 7462 |     CallbackBase::Error error { };
      |                         ^~~~~

Solution is:

diff --git a/Source/WebKit/UIProcess/WebPageProxy.cpp b/Source/WebKit/UIProcess/WebPageProxy.cpp
index 48d74e2fa57f..e25bca9cfad6 100644
--- a/Source/WebKit/UIProcess/WebPageProxy.cpp
+++ b/Source/WebKit/UIProcess/WebPageProxy.cpp
@@ -7459,18 +7459,6 @@ void WebPageProxy::resetState(ResetStateReason resetStateReason)
     m_webDeviceOrientationUpdateProviderProxy = nullptr;
 #endif
 
-    CallbackBase::Error error { };
-    switch (resetStateReason) {
-    case ResetStateReason::NavigationSwap:
-        FALLTHROUGH;
-    case ResetStateReason::PageInvalidated:
-        error = CallbackBase::Error::OwnerWasInvalidated;
-        break;
-    case ResetStateReason::WebProcessExited:
-        error = CallbackBase::Error::ProcessExited;
-        break;
-    }
-
     for (auto&amp; editCommand : std::exchange(m_editCommandSet, { }))
         editCommand-&gt;invalidate();

Will attach a follow-up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729320</commentid>
    <comment_count>11</comment_count>
      <attachid>420355</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-02-15 13:14:54 -0800</bug_when>
    <thetext>Created attachment 420355
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729361</commentid>
    <comment_count>12</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-15 14:03:24 -0800</bug_when>
    <thetext>Committed r272879: &lt;https://commits.webkit.org/r272879&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 420355.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419817</attachid>
            <date>2021-02-09 22:53:34 -0800</date>
            <delta_ts>2021-02-10 08:54:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221653-20210209225333.patch</filename>
            <type>text/plain</type>
            <size>69531</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNjM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJlYWFkNDhmZTMzMTkwMTJj
MjllN2EwODhkYTcwMDE1YTUwMzMwYWEuLjkwZjVmZTU1OTBiZTBjMTQwYjJlZWI4MTNmOGVkZmMx
NzRiYzk0ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTEgQEAKKzIwMjEtMDItMDkgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBTdG9wIHVzaW5n
IEdlbmVyaWNDYWxsYmFjayBmcm9tIFdlYlBhZ2VQcm94eQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxNjUzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlcmUgYXJlIHN0aWxsIHR3byB1c2VzIGluIHRo
ZSBEcmF3aW5nQXJlYVByb3h5IGltcGxlbWVudGF0aW9ucywgYnV0IHRob3NlIGFyZSBxdWl0ZSB0
YW5nbGVkIGFuZCBkZXNlcnZlIHRoZWlyIG93biBwYXRjaC4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQVBJQXR0YWNobWVudC5jcHA6CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OnVwZGF0
ZUF0dHJpYnV0ZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCk6CisgICAgICAgIChXS1BhZ2VSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNl
bnRhdGlvbik6CisgICAgICAgIChXS1BhZ2VHZXRTb3VyY2VGb3JGcmFtZSk6CisgICAgICAgIChX
S1BhZ2VHZXRDb250ZW50c0FzU3RyaW5nKToKKyAgICAgICAgKFdLUGFnZUdldEJ5dGVjb2RlUHJv
ZmlsZSk6CisgICAgICAgIChXS1BhZ2VHZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KToKKyAgICAg
ICAgKFdURjo6RnVuY3Rpb248dm9pZCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW06CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6
OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2luc2VydEF0
dGFjaG1lbnRXaXRoRmlsZVdyYXBwZXI6Y29udGVudFR5cGU6Y29tcGxldGlvbjpdKToKKyAgICAg
ICAgKC1bV0tXZWJWaWV3IF9nZXRDb250ZW50c0FzU3RyaW5nV2l0aENvbXBsZXRpb25IYW5kbGVy
Ol0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2dldENvbnRlbnRzT2ZBbGxGcmFtZXNBc1N0cmlu
Z1dpdGhDb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L19XS0F0dGFjaG1lbnQubW06CisgICAgICAgICgtW19XS0F0dGFjaG1lbnQgc2V0RmlsZVdyYXBw
ZXI6Y29udGVudFR5cGU6Y29tcGxldGlvbjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2Ev
V2ViVmlld0ltcGwubW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzdGFydFNwZWFr
aW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmg6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6ZGlzcGF0Y2hBY3Rpdml0eVN0YXRlQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpnZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0U291cmNlRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmdldENvbnRlbnRzQXNTdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmdldEJ5dGVjb2RlUHJvZmlsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6Z2V0U2FtcGxpbmdQcm9maWxlck91dHB1dCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmRpZEZhaWxMb2FkRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6Omluc3RhbGxBY3Rpdml0eVN0YXRlQ2hhbmdlQ29tcGxldGlvbkhhbmRsZXIpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omluc2VydEF0dGFjaG1lbnQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRJbnNlcnRBdHRhY2htZW50V2l0aElkZW50aWZpZXIp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNsZWFyTG9hZERlcGVuZGVudENhbGxi
YWNrcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dm9pZENhbGxi
YWNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzdHJpbmdDYWxs
YmFjayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW52YWxpZGF0
ZVN0cmluZ0NhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAg
ICAgKC1bV0tDb250ZW50VmlldyBfc2hhcmVGb3JXZWJWaWV3Ol0pOgorICAgICAgICAoLVtXS0Nv
bnRlbnRWaWV3IF9kZWZpbmVGb3JXZWJWaWV3Ol0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3
IGFjY2Vzc2liaWxpdHlSZXRyaWV2ZVNwZWFrU2VsZWN0aW9uQ29udGVudF0pOgorICAgICAgICAo
LVtXS0NvbnRlbnRWaWV3IGFwcGx5QXV0b2NvcnJlY3Rpb246dG9TdHJpbmc6d2l0aENvbXBsZXRp
b25IYW5kbGVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmFwcGx5QXV0b2NvcnJlY3Rpb24pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tUZXh0RmluZGVyQ2xpZW50Lm1tOgorICAgICAgICAo
LVtXS1RleHRGaW5kZXJDbGllbnQgZ2V0U2VsZWN0ZWRUZXh0Ol0pOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNs
aWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oOgorICAg
ICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhOjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OnJlaW5pdGlhbGl6ZVdlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRB
Y3Rpdml0eVN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0Q29udGVudHNBc1N0
cmluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldFJlbmRlclRyZWVFeHRlcm5hbFJl
cHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0U2VsZWN0aW9uT3JD
b250ZW50c0FzU3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0U291cmNlRm9y
RnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRCeXRlY29kZVByb2ZpbGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aW5zZXJ0QXR0YWNobWVudCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2Vi
UGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YXBwbHlBdXRvY29ycmVjdGlv
bik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWEubW06CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1h
dGlvbkRyYXdpbmdBcmVhOjpoYW5kbGVBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tzKToKKyAg
ICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmFjdGl2aXR5U3Rh
dGVEaWRDaGFuZ2UpOgorCiAyMDIxLTAyLTA5ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVu
c2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVXNlIENvbXBsZXRpb25IYW5kbGVyIGluc3RlYWQg
b2YgQXBwbGljYXRpb25NYW5pZmVzdENhbGxiYWNrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJQXR0YWNobWVudC5jcHAKaW5kZXggMTM4NmVkNjNlY2EyNzliMDA3MDZkMTdiOWNj
MmJiNTFhOGEyOTFjNy4uYjE4MjBlMDQ4YzA3NzU2MWM5ODFiMTkzZmYzYjVkMzQ2NzAwMTgwMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcApAQCAt
NDksMTUgKzQ5LDE1IEBAIEF0dGFjaG1lbnQ6On5BdHRhY2htZW50KCkKIHsKIH0KIAotdm9pZCBB
dHRhY2htZW50Ojp1cGRhdGVBdHRyaWJ1dGVzKEZ1bmN0aW9uPHZvaWQoV2ViS2l0OjpDYWxsYmFj
a0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFjaykKK3ZvaWQgQXR0YWNobWVudDo6dXBkYXRlQXR0cmli
dXRlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFt
X3dlYlBhZ2UpIHsKLSAgICAgICAgY2FsbGJhY2soV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9y
OjpPd25lcldhc0ludmFsaWRhdGVkKTsKKyAgICAgICAgY2FsbGJhY2soKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAogICAgIGlmIChtX3dlYlBhZ2UtPndpbGxVcGRhdGVBdHRhY2htZW50QXR0
cmlidXRlcygqdGhpcykgPT0gV2ViS2l0OjpXZWJQYWdlUHJveHk6OlNob3VsZFVwZGF0ZUF0dGFj
aG1lbnRBdHRyaWJ1dGVzOjpObykgewotICAgICAgICBjYWxsYmFjayhXZWJLaXQ6OkNhbGxiYWNr
QmFzZTo6RXJyb3I6Ok5vbmUpOworICAgICAgICBjYWxsYmFjaygpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0
YWNobWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaApp
bmRleCAyZTA2NDlhOGRkMDEyZWMwYWUxN2Y2ZjU1ZjQxODdhOWVkNjAxNjliLi43YmE0NGZhYzg5
MjlkODU2MWY4NGE4ODhjOWVmNmM2ODc1NmU2MTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElBdHRhY2htZW50LmgKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogICAgIGVu
dW0gY2xhc3MgSW5zZXJ0aW9uU3RhdGUgOiB1aW50OF90IHsgTm90SW5zZXJ0ZWQsIEluc2VydGVk
IH07CiAKICAgICBjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJu
IG1faWRlbnRpZmllcjsgfQotICAgIHZvaWQgdXBkYXRlQXR0cmlidXRlcyhGdW5jdGlvbjx2b2lk
KFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAgIHZvaWQgdXBkYXRlQXR0cmli
dXRlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAgICAgdm9pZCBpbnZhbGlkYXRl
KCk7CiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gISFtX3dlYlBhZ2U7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCmluZGV4IDRlZjg0YTgxYThmY2I2
OGUyZTljZGI0MzU2NzE4NDc3Y2YwNzQ1YzkuLjYyYTU0Yjc0NmMzYWIyZjFhYjMyY2VkNzE0NjRj
NGM0ZGRmMWU5ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
UGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApA
QCAtMjUzNCwzNiArMjUzNCwzNiBAQCB2b2lkIFdLUGFnZVJ1bkphdmFTY3JpcHRJbk1haW5GcmFt
ZV9iKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBzY3JpcHRSZWYsCiB9CiAjZW5kaWYK
IAotc3RhdGljIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgV2ViS2l0OjpDYWxs
YmFja0Jhc2U6OkVycm9yKT4gdG9HZW5lcmljQ2FsbGJhY2tGdW5jdGlvbih2b2lkKiBjb250ZXh0
LCB2b2lkICgqY2FsbGJhY2spKFdLU3RyaW5nUmVmLCBXS0Vycm9yUmVmLCB2b2lkKikpCitzdGF0
aWMgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4gdG9TdHJpbmdDYWxsYmFj
ayh2b2lkKiBjb250ZXh0LCB2b2lkKCpjYWxsYmFjaykoV0tTdHJpbmdSZWYsIFdLRXJyb3JSZWYs
IHZvaWQqKSkKIHsKLSAgICByZXR1cm4gW2NvbnRleHQsIGNhbGxiYWNrXShjb25zdCBTdHJpbmcm
IHJldHVyblZhbHVlLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKLSAgICAg
ICAgY2FsbGJhY2sodG9BUEkoQVBJOjpTdHJpbmc6OmNyZWF0ZShyZXR1cm5WYWx1ZSkucHRyKCkp
LCBlcnJvciAhPSBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUgPyB0b0FQSShBUEk6
OkVycm9yOjpjcmVhdGUoKS5wdHIoKSkgOiAwLCBjb250ZXh0KTsKKyAgICByZXR1cm4gW2NvbnRl
eHQsIGNhbGxiYWNrXSAoY29uc3QgU3RyaW5nJiByZXR1cm5WYWx1ZSkgeworICAgICAgICBjYWxs
YmFjayh0b0FQSShBUEk6OlN0cmluZzo6Y3JlYXRlKHJldHVyblZhbHVlKS5wdHIoKSksIG51bGxw
dHIsIGNvbnRleHQpOwogICAgIH07CiB9CiAKIHZvaWQgV0tQYWdlUmVuZGVyVHJlZUV4dGVybmFs
UmVwcmVzZW50YXRpb24oV0tQYWdlUmVmIHBhZ2VSZWYsIHZvaWQqIGNvbnRleHQsIFdLUGFnZVJl
bmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uRnVuY3Rpb24gY2FsbGJhY2spCiB7Ci0gICAg
dG9JbXBsKHBhZ2VSZWYpLT5nZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbih0b0dl
bmVyaWNDYWxsYmFja0Z1bmN0aW9uKGNvbnRleHQsIGNhbGxiYWNrKSk7CisgICAgdG9JbXBsKHBh
Z2VSZWYpLT5nZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbih0b1N0cmluZ0NhbGxi
YWNrKGNvbnRleHQsIGNhbGxiYWNrKSk7CiB9CiAKIHZvaWQgV0tQYWdlR2V0U291cmNlRm9yRnJh
bWUoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLRnJhbWVSZWYgZnJhbWVSZWYsIHZvaWQqIGNvbnRleHQs
IFdLUGFnZUdldFNvdXJjZUZvckZyYW1lRnVuY3Rpb24gY2FsbGJhY2spCiB7Ci0gICAgdG9JbXBs
KHBhZ2VSZWYpLT5nZXRTb3VyY2VGb3JGcmFtZSh0b0ltcGwoZnJhbWVSZWYpLCB0b0dlbmVyaWND
YWxsYmFja0Z1bmN0aW9uKGNvbnRleHQsIGNhbGxiYWNrKSk7CisgICAgdG9JbXBsKHBhZ2VSZWYp
LT5nZXRTb3VyY2VGb3JGcmFtZSh0b0ltcGwoZnJhbWVSZWYpLCB0b1N0cmluZ0NhbGxiYWNrKGNv
bnRleHQsIGNhbGxiYWNrKSk7CiB9CiAKIHZvaWQgV0tQYWdlR2V0Q29udGVudHNBc1N0cmluZyhX
S1BhZ2VSZWYgcGFnZVJlZiwgdm9pZCogY29udGV4dCwgV0tQYWdlR2V0Q29udGVudHNBc1N0cmlu
Z0Z1bmN0aW9uIGNhbGxiYWNrKQogewotICAgIHRvSW1wbChwYWdlUmVmKS0+Z2V0Q29udGVudHNB
c1N0cmluZyhDb250ZW50QXNTdHJpbmdJbmNsdWRlc0NoaWxkRnJhbWVzOjpObywgdG9HZW5lcmlj
Q2FsbGJhY2tGdW5jdGlvbihjb250ZXh0LCBjYWxsYmFjaykpOworICAgIHRvSW1wbChwYWdlUmVm
KS0+Z2V0Q29udGVudHNBc1N0cmluZyhDb250ZW50QXNTdHJpbmdJbmNsdWRlc0NoaWxkRnJhbWVz
OjpObywgdG9TdHJpbmdDYWxsYmFjayhjb250ZXh0LCBjYWxsYmFjaykpOwogfQogCiB2b2lkIFdL
UGFnZUdldEJ5dGVjb2RlUHJvZmlsZShXS1BhZ2VSZWYgcGFnZVJlZiwgdm9pZCogY29udGV4dCwg
V0tQYWdlR2V0Qnl0ZWNvZGVQcm9maWxlRnVuY3Rpb24gY2FsbGJhY2spCiB7Ci0gICAgdG9JbXBs
KHBhZ2VSZWYpLT5nZXRCeXRlY29kZVByb2ZpbGUodG9HZW5lcmljQ2FsbGJhY2tGdW5jdGlvbihj
b250ZXh0LCBjYWxsYmFjaykpOworICAgIHRvSW1wbChwYWdlUmVmKS0+Z2V0Qnl0ZWNvZGVQcm9m
aWxlKHRvU3RyaW5nQ2FsbGJhY2soY29udGV4dCwgY2FsbGJhY2spKTsKIH0KIAogdm9pZCBXS1Bh
Z2VHZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KFdLUGFnZVJlZiBwYWdlUmVmLCB2b2lkKiBjb250
ZXh0LCBXS1BhZ2VHZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0RnVuY3Rpb24gY2FsbGJhY2spCiB7
Ci0gICAgdG9JbXBsKHBhZ2VSZWYpLT5nZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KHRvR2VuZXJp
Y0NhbGxiYWNrRnVuY3Rpb24oY29udGV4dCwgY2FsbGJhY2spKTsKKyAgICB0b0ltcGwocGFnZVJl
ZiktPmdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQodG9TdHJpbmdDYWxsYmFjayhjb250ZXh0LCBj
YWxsYmFjaykpOwogfQogCiB2b2lkIFdLUGFnZUdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEo
V0tQYWdlUmVmIHBhZ2VSZWYsIHZvaWQqIGNvbnRleHQsIFdLUGFnZUdldFNlbGVjdGlvbkFzV2Vi
QXJjaGl2ZURhdGFGdW5jdGlvbiBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tCmluZGV4IDNjMWUwNmFm
MDNkOTRmN2RhN2QwZDIwMWZhYjdhY2VmMjFlMDA3YWUuLjEyOTJjY2NjZjg4ZTg4OTM5ZmY5ZmRl
NDQ5NWEzNGYyOWRhOTJiYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQpAQCAtMTg3LDcgKzE4Nyw3IEBAIHZv
aWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmCiAgICAgICAgIHJldHVybjsKIAogICAgIHNldEZpbGVXcmFw
cGVyQW5kVXBkYXRlQ29udGVudFR5cGUoZmlsZVdyYXBwZXIsIGNvbnRlbnRUeXBlKTsKLSAgICBt
X3dlYlBhZ2UtPnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKCp0aGlzLCBbXSAoYXV0bykgeyB9
KTsKKyAgICBtX3dlYlBhZ2UtPnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKCp0aGlzLCBbXSB7
IH0pOwogfQogCiB2b2lkIEF0dGFjaG1lbnQ6OnNldEZpbGVXcmFwcGVyR2VuZXJhdG9yKEZ1bmN0
aW9uPFJldGFpblB0cjxOU0ZpbGVXcmFwcGVyPih2b2lkKT4mJiBmaWxlV3JhcHBlckdlbmVyYXRv
cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmlu
ZGV4IDJjZTNkMjRhY2E0YTI4ZTYyM2RiOGY3MjdlMjllODE1NDkwNWY0YmYuLjY0MjE4NTQ2ZGE3
ZmJkMzcyNjllN2I2MzBlZjEwZTQ0MzcxMzdjYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMjI4Myw5ICsyMjgzLDkgQEAgc3RhdGlj
IFJldGFpblB0cjxOU0FycmF5PiB3a1RleHRNYW5pcHVsYXRpb25FcnJvcnMoTlNBcnJheTxfV0tU
ZXh0TWFuaXB1bGF0aW9uSXQKICAgICBhdXRvIGlkZW50aWZpZXIgPSBjcmVhdGVDYW5vbmljYWxV
VUlEU3RyaW5nKCk7CiAgICAgYXV0byBhdHRhY2htZW50ID0gQVBJOjpBdHRhY2htZW50OjpjcmVh
dGUoaWRlbnRpZmllciwgKl9wYWdlKTsKICAgICBhdHRhY2htZW50LT5zZXRGaWxlV3JhcHBlckFu
ZFVwZGF0ZUNvbnRlbnRUeXBlKGZpbGVXcmFwcGVyLCBjb250ZW50VHlwZSk7Ci0gICAgX3BhZ2Ut
Pmluc2VydEF0dGFjaG1lbnQoYXR0YWNobWVudC5jb3B5UmVmKCksIFtjYXB0dXJlZEhhbmRsZXIg
PSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoV2ViS2l0OjpDYWxsYmFja0Jhc2U6
OkVycm9yIGVycm9yKSB7CisgICAgX3BhZ2UtPmluc2VydEF0dGFjaG1lbnQoYXR0YWNobWVudC5j
b3B5UmVmKCksIFtjYXB0dXJlZEhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRs
ZXIpXSB7CiAgICAgICAgIGlmIChjYXB0dXJlZEhhbmRsZXIpCi0gICAgICAgICAgICBjYXB0dXJl
ZEhhbmRsZXIoZXJyb3IgPT0gV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKTsKKyAg
ICAgICAgICAgIGNhcHR1cmVkSGFuZGxlcih0cnVlKTsKICAgICB9KTsKICNpZiBIQVZFKFFVSUNL
TE9PS19USFVNQk5BSUxJTkcpCiAgICAgX3BhZ2UtPnJlcXVlc3RUaHVtYm5haWxXaXRoRmlsZVdy
YXBwZXIoZmlsZVdyYXBwZXIsIGlkZW50aWZpZXIpOwpAQCAtMjUzMSwyNSArMjUzMSwxNSBAQCBz
dGF0aWMgaW5saW5lIE9wdGlvblNldDxXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmU+IGxheW91dE1p
bGVzdG9uZXMoX1dLUmVuZGVyaW5nUAogCiAtICh2b2lkKV9nZXRDb250ZW50c0FzU3RyaW5nV2l0
aENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1N0cmluZyAqLCBOU0Vycm9yICopKWNvbXBs
ZXRpb25IYW5kbGVyCiB7Ci0gICAgYXV0byBoYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRp
b25IYW5kbGVyKTsKLQotICAgIF9wYWdlLT5nZXRDb250ZW50c0FzU3RyaW5nKFdlYktpdDo6Q29u
dGVudEFzU3RyaW5nSW5jbHVkZXNDaGlsZEZyYW1lczo6Tm8sIFtoYW5kbGVyXShTdHJpbmcgc3Ry
aW5nLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKLSAgICAgICAgaWYgKGVy
cm9yICE9IFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSkgewotICAgICAgICAgICAg
Ly8gRklYTUU6IFBpcGUgYSBwcm9wZXIgZXJyb3IgaW4gZnJvbSB0aGUgV2ViUGFnZVByb3h5Lgot
ICAgICAgICAgICAgaGFuZGxlcihuaWwsIFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9y
RG9tYWluIGNvZGU6c3RhdGljX2Nhc3Q8aW50PihlcnJvcikgdXNlckluZm86bmlsXSk7Ci0gICAg
ICAgIH0gZWxzZQotICAgICAgICAgICAgaGFuZGxlcihzdHJpbmcsIG5pbCk7CisgICAgX3BhZ2Ut
PmdldENvbnRlbnRzQXNTdHJpbmcoV2ViS2l0OjpDb250ZW50QXNTdHJpbmdJbmNsdWRlc0NoaWxk
RnJhbWVzOjpObywgW2hhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShT
dHJpbmcgc3RyaW5nKSB7CisgICAgICAgIGhhbmRsZXIoc3RyaW5nLCBuaWwpOwogICAgIH0pOwog
fQogCiAtICh2b2lkKV9nZXRDb250ZW50c09mQWxsRnJhbWVzQXNTdHJpbmdXaXRoQ29tcGxldGlv
bkhhbmRsZXI6KHZvaWQgKF4pKE5TU3RyaW5nICopKWNvbXBsZXRpb25IYW5kbGVyCiB7Ci0gICAg
YXV0byBoYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICBfcGFn
ZS0+Z2V0Q29udGVudHNBc1N0cmluZyhXZWJLaXQ6OkNvbnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hp
bGRGcmFtZXM6OlllcywgW2hhbmRsZXJdKFN0cmluZyBzdHJpbmcsIFdlYktpdDo6Q2FsbGJhY2tC
YXNlOjpFcnJvciBlcnJvcikgewotICAgICAgICBpZiAoZXJyb3IgIT0gV2ViS2l0OjpDYWxsYmFj
a0Jhc2U6OkVycm9yOjpOb25lKQotICAgICAgICAgICAgaGFuZGxlcihuaWwpOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICBoYW5kbGVyKHN0cmluZyk7CisgICAgX3BhZ2UtPmdldENvbnRlbnRz
QXNTdHJpbmcoV2ViS2l0OjpDb250ZW50QXNTdHJpbmdJbmNsdWRlc0NoaWxkRnJhbWVzOjpZZXMs
IFtoYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oU3RyaW5nIHN0cmlu
ZykgeworICAgICAgICBoYW5kbGVyKHN0cmluZyk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdHRhY2htZW50Lm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F0dGFjaG1lbnQubW0KaW5kZXggMDBk
OTY0ZmNjMTcwN2RlNjVmNTVjNDlhNTA4YjVjNGU2M2IwM2M1My4uNWU4YjhiYmJiZGZiYTY0MDdm
OWZmMzdmYmE4MmYyNjhkNDlmMmIxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS0F0dGFjaG1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS0F0dGFjaG1lbnQubW0KQEAgLTMyLDYgKzMyLDcgQEAKICNpbXBvcnQg
PFdlYkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TaGFyZWRCdWZm
ZXIuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgorI2ltcG9ydCA8d3RmL0NvbXBsZXRpb25I
YW5kbGVyLmg+CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCA8TW9iaWxlQ29y
ZVNlcnZpY2VzL01vYmlsZUNvcmVTZXJ2aWNlcy5oPgpAQCAtMTM5LDE0ICsxNDAsOSBAQCBzdGF0
aWMgY29uc3QgTlNJbnRlZ2VyIEludmFsaWRBdHRhY2htZW50RXJyb3JDb2RlID0gMjsKICAgICAv
LyBmcm9tIHRoZSBTUEkgY2xpZW50LCB0aGUgY29ycmVzcG9uZGluZyBmaWxlIHBhdGggb2YgdGhl
IGRhdGEgaXMgdW5rbm93biwgaWYgaXQgZXZlbiBleGlzdHMgYXQgYWxsLgogICAgIF9hdHRhY2ht
ZW50LT5zZXRGaWxlUGF0aCh7IH0pOwogICAgIF9hdHRhY2htZW50LT5zZXRGaWxlV3JhcHBlckFu
ZFVwZGF0ZUNvbnRlbnRUeXBlKGZpbGVXcmFwcGVyLCBjb250ZW50VHlwZSk7Ci0gICAgX2F0dGFj
aG1lbnQtPnVwZGF0ZUF0dHJpYnV0ZXMoW2NhcHR1cmVkQmxvY2sgPSBtYWtlQmxvY2tQdHIoY29t
cGxldGlvbkhhbmRsZXIpXSAoYXV0byBlcnJvcikgewotICAgICAgICBpZiAoIWNhcHR1cmVkQmxv
Y2spCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKGVycm9yID09IFdlYktpdDo6
Q2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSkKKyAgICBfYXR0YWNobWVudC0+dXBkYXRlQXR0cmli
dXRlcyhbY2FwdHVyZWRCbG9jayA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIHsK
KyAgICAgICAgaWYgKGNhcHR1cmVkQmxvY2spCiAgICAgICAgICAgICBjYXB0dXJlZEJsb2NrKG5p
bCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNhcHR1cmVkQmxvY2soW05TRXJyb3IgZXJy
b3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpVbnNwZWNpZmllZEF0dGFjaG1lbnRFcnJv
ckNvZGUgdXNlckluZm86bmlsXSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KaW5kZXggNTBlMjI1NTE4NWIxNDE1MTQ4NGU1ZDAy
N2FlYzQyYjhlY2IzNDg4NS4uMWJmOTA4NGM1M2ZlZDVlYjYzMTk2ODQ2NjdiM2FiODI3NGI3Yjhk
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAg
LTMxNjIsOSArMzE2Miw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldFVzZXJJbnRlcmZhY2VJdGVt
U3RhdGUoTlNTdHJpbmcgKmNvbW1hbmROYW1lLCBib29sIGVuYWJsZWQsCiB2b2lkIFdlYlZpZXdJ
bXBsOjpzdGFydFNwZWFraW5nKCkKIHsKICAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQ
cm9jZXNzUHJpdmlsZWdlOjpDYW5Db21tdW5pY2F0ZVdpdGhXaW5kb3dTZXJ2ZXIpKTsKLSAgICBt
X3BhZ2UtPmdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhbXShjb25zdCBTdHJpbmcmIHN0
cmluZywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7Ci0gICAgICAgIGlmIChl
cnJvciAhPSBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpCi0gICAgICAgICAgICBy
ZXR1cm47CisgICAgbV9wYWdlLT5nZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcoW10oY29u
c3QgU3RyaW5nJiBzdHJpbmcpIHsKICAgICAgICAgaWYgKCFzdHJpbmcpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dlbmVyaWNDYWxs
YmFjay5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmgKaW5kZXgg
YzM2NTgxMWQwYTYyZmQ4NDJlOTQ0ODkwMGVkYjZhMmI0ZmU0NzgxOS4uMDM1NDE5ZDAyMTk0MzRl
NTcwZmQ3YmQ1M2MwZTk0MGVmYmRlMTFkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2Vu
ZXJpY0NhbGxiYWNrLmgKQEAgLTE0NiwxNCArMTQ2LDYgQEAgcHJpdmF0ZToKICNlbmRpZgogfTsK
IAotdGVtcGxhdGU8dHlwZW5hbWUgQVBJUmV0dXJuVmFsdWVUeXBlLCB0eXBlbmFtZSBJbnRlcm5h
bFJldHVyblZhbHVlVHlwZSA9IHR5cGVuYW1lIEFQSVR5cGVJbmZvPEFQSVJldHVyblZhbHVlVHlw
ZT46OkltcGxUeXBlKj4KLXN0YXRpYyB0eXBlbmFtZSBHZW5lcmljQ2FsbGJhY2s8SW50ZXJuYWxS
ZXR1cm5WYWx1ZVR5cGU+OjpDYWxsYmFja0Z1bmN0aW9uIHRvR2VuZXJpY0NhbGxiYWNrRnVuY3Rp
b24odm9pZCogY29udGV4dCwgdm9pZCAoKmNhbGxiYWNrKShBUElSZXR1cm5WYWx1ZVR5cGUsIFdL
RXJyb3JSZWYsIHZvaWQqKSkKLXsKLSAgICByZXR1cm4gW2NvbnRleHQsIGNhbGxiYWNrXShJbnRl
cm5hbFJldHVyblZhbHVlVHlwZSByZXR1cm5WYWx1ZSwgQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJv
cikgewotICAgICAgICBjYWxsYmFjayh0b0FQSShyZXR1cm5WYWx1ZSksIGVycm9yICE9IENhbGxi
YWNrQmFzZTo6RXJyb3I6Ok5vbmUgPyB0b0FQSShBUEk6OkVycm9yOjpjcmVhdGUoKS5wdHIoKSkg
OiAwLCBjb250ZXh0KTsKLSAgICB9OwotfQotCiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazw+IFZv
aWRDYWxsYmFjazsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDY5ODcyNzdiYjFiZDljMGJkMjg1YWNiYzM3OWU3MjFl
ZDU2N2Y2MjIuLjI3OGQ4OTVhNWM4N2Y3NjJlNzhlOTBmZWM2NzcwOTU0YTZlNjZhZGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMjAxNiwxMCArMjAxNiwx
MiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlzcGF0Y2hBY3Rpdml0eVN0YXRlQ2hhbmdlKCkKIAog
ICAgIGF1dG8gYWN0aXZpdHlTdGF0ZUNoYW5nZUlEID0gbV9hY3Rpdml0eVN0YXRlQ2hhbmdlV2Fu
dHNTeW5jaHJvbm91c1JlcGx5ID8gdGFrZU5leHRBY3Rpdml0eVN0YXRlQ2hhbmdlSUQoKSA6IHN0
YXRpY19jYXN0PEFjdGl2aXR5U3RhdGVDaGFuZ2VJRD4oQWN0aXZpdHlTdGF0ZUNoYW5nZUFzeW5j
aHJvbm91cyk7CiAKLSAgICBpZiAoY2hhbmdlZCB8fCBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQgIT0g
QWN0aXZpdHlTdGF0ZUNoYW5nZUFzeW5jaHJvbm91cyB8fCAhbV9uZXh0QWN0aXZpdHlTdGF0ZUNo
YW5nZUNhbGxiYWNrcy5pc0VtcHR5KCkpCi0gICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlNldEFjdGl2aXR5U3RhdGUobV9hY3Rpdml0eVN0YXRlLCBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQs
IG1fbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja3MpKTsKLQotICAgIG1fbmV4dEFjdGl2
aXR5U3RhdGVDaGFuZ2VDYWxsYmFja3MuY2xlYXIoKTsKKyAgICBpZiAoY2hhbmdlZCB8fCBhY3Rp
dml0eVN0YXRlQ2hhbmdlSUQgIT0gQWN0aXZpdHlTdGF0ZUNoYW5nZUFzeW5jaHJvbm91cyB8fCAh
bV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrcy5pc0VtcHR5KCkpIHsKKyAgICAgICAg
c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRBY3Rpdml0eVN0YXRlKG1f
YWN0aXZpdHlTdGF0ZSwgYWN0aXZpdHlTdGF0ZUNoYW5nZUlEKSwgW2NhbGxiYWNrcyA9IHN0ZDo6
ZXhjaGFuZ2UobV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrcywgeyB9KV0gKCkgbXV0
YWJsZSB7CisgICAgICAgICAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogY2FsbGJhY2tzKQorICAg
ICAgICAgICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAgIH0pOworICAgIH0KIAogICAgIC8vIFRo
aXMgbXVzdCBoYXBwZW4gYWZ0ZXIgdGhlIFNldEFjdGl2aXR5U3RhdGUgbWVzc2FnZSBpcyBzZW50
LCB0byBlbnN1cmUgdGhlIHBhZ2UgdmlzaWJpbGl0eSBldmVudCBjYW4gZmlyZS4KICAgICB1cGRh
dGVUaHJvdHRsZVN0YXRlKCk7CkBAIC00MDc3LDM5ICs0MDc5LDE5IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpydW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQoUnVuSmF2YVNjcmlwdFBhcmFt
ZXRlcnMmJiBwCiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpnZXRSZW5kZXJUcmVl
RXh0ZXJuYWxSZXByZXNlbnRhdGlvbihXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYs
IENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQ
cm94eTo6Z2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjYWxsYmFjaykKIHsKLSAgICBpZiAoIWhhc1J1bm5p
bmdQcm9jZXNzKCkpIHsKLSAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihTdHJpbmcoKSwgQ2FsbGJh
Y2tCYXNlOjpFcnJvcjo6VW5rbm93bik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0g
ICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5j
dGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdl
UHJveHk6OmdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uIl9zKSk7Ci0gICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24o
Y2FsbGJhY2tJRCkpOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6
R2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oKSwgV1RGTW92ZShjYWxsYmFjaykp
OwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U291cmNlRm9yRnJhbWUoV2ViRnJhbWVQcm94
eSogZnJhbWUsIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNl
OjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5OjpnZXRTb3Vy
Y2VGb3JGcmFtZShXZWJGcmFtZVByb3h5KiBmcmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBTdHJpbmcmKT4mJiBjYWxsYmFjaykKIHsKLSAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNz
KCkpIHsKLSAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihTdHJpbmcoKSwgQ2FsbGJhY2tCYXNlOjpF
cnJvcjo6VW5rbm93bik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgYXV0byBj
YWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1f
cHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6Omdl
dFNvdXJjZUZvckZyYW1lIl9zKSk7Ci0gICAgbV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJ
RHMuYWRkKGNhbGxiYWNrSUQpOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNvdXJj
ZUZvckZyYW1lKGZyYW1lLT5mcmFtZUlEKCksIGNhbGxiYWNrSUQpKTsKKyAgICBzZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNvdXJjZUZvckZyYW1lKGZyYW1lLT5mcmFt
ZUlEKCkpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpnZXRD
b250ZW50c0FzU3RyaW5nKENvbnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXMgaW5jbHVk
ZXNDaGlsZEZyYW1lcywgV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYsIENhbGxiYWNr
QmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0
Q29udGVudHNBc1N0cmluZyhDb250ZW50QXNTdHJpbmdJbmNsdWRlc0NoaWxkRnJhbWVzIGluY2x1
ZGVzQ2hpbGRGcmFtZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYg
Y2FsbGJhY2spCiB7Ci0gICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7Ci0gICAgICAgIGNh
bGxiYWNrRnVuY3Rpb24oU3RyaW5nKCksIENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24pOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFj
a3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OmdldENvbnRlbnRzQXNTdHJpbmciX3Mp
KTsKLSAgICBtX2xvYWREZXBlbmRlbnRTdHJpbmdDYWxsYmFja0lEcy5hZGQoY2FsbGJhY2tJRCk7
Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0Q29udGVudHNBc1N0cmluZyhpbmNsdWRl
c0NoaWxkRnJhbWVzLCBjYWxsYmFja0lEKSk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpXZWJQYWdlOjpHZXRDb250ZW50c0FzU3RyaW5nKGluY2x1ZGVzQ2hpbGRGcmFtZXMpLCBX
VEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTQxMjksMjgg
KzQxMTEsMTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldEFsbEZyYW1lcyhDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKEZyYW1lVHJlZU5vZGVEYXRhJiYpPiYmIGMKICAgICBzZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6OldlYlBhZ2U6OkdldEFsbEZyYW1lcygpLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpnZXRCeXRlY29kZVByb2ZpbGUoV1RG
OjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBj
YWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6OmdldEJ5dGVjb2RlUHJvZmlsZShD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNhbGxiYWNrKQogewotICAg
IGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgewotICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKFN0
cmluZygpLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICAKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92
ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0
aXZpdHkoIldlYlBhZ2VQcm94eTo6Z2V0Qnl0ZWNvZGVQcm9maWxlIl9zKSk7Ci0gICAgbV9sb2Fk
RGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHMuYWRkKGNhbGxiYWNrSUQpOwotICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkdldEJ5dGVjb2RlUHJvZmlsZShjYWxsYmFja0lEKSk7CisgICAgc2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRCeXRlY29kZVByb2ZpbGUoKSwg
V1RGTW92ZShjYWxsYmFjaykpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2FtcGxpbmdQ
cm9maWxlck91dHB1dChXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNr
QmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0
U2FtcGxpbmdQcm9maWxlck91dHB1dChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmlu
ZyYpPiYmIGNhbGxiYWNrKQogewotICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgewotICAg
ICAgICBjYWxsYmFja0Z1bmN0aW9uKFN0cmluZygpLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtu
b3duKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBhdXRvIGNhbGxiYWNrSUQg
PSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50
aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6Z2V0U2FtcGxpbmdQ
cm9maWxlck91dHB1dCJfcykpOwotICAgIG1fbG9hZERlcGVuZGVudFN0cmluZ0NhbGxiYWNrSURz
LmFkZChjYWxsYmFja0lEKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTYW1wbGlu
Z1Byb2ZpbGVyT3V0cHV0KGNhbGxiYWNrSUQpKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVz
c2FnZXM6OldlYlBhZ2U6OkdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQoKSwgV1RGTW92ZShjYWxs
YmFjaykpOwogfQogCiBzdGF0aWMgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIGRhdGEpPiB0b0FQSURhdGFDYWxsYmFjayhDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKEFQSTo6RGF0YSopPiYmIGNhbGxiYWNrKQpAQCAtNDE2NywxNSArNDEzNSw5IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpnZXRDb250ZW50c0FzTUhUTUxEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoQVBJOjpEYXRhKik+JiYKIH0KICNlbmRpZgogCi12b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2Vs
ZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5n
JiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFn
ZVByb3h5OjpnZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjYWxsYmFjaykKIHsKLSAgICBpZiAoIWhhc1J1bm5pbmdQ
cm9jZXNzKCkpIHsKLSAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihTdHJpbmcoKSwgQ2FsbGJhY2tC
YXNlOjpFcnJvcjo6VW5rbm93bik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAg
YXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlv
biksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJv
eHk6OmdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyJfcykpOwotICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhjYWxsYmFja0lEKSk7
CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTZWxlY3Rpb25P
ckNvbnRlbnRzQXNTdHJpbmcoKSwgY2FsbGJhY2spOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6
RGF0YSopPiYmIGNhbGxiYWNrKQpAQCAtNDU4MCwxNSArNDU0Miw2IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQ
cm94eT4mJiBwCiAgICAgICAgIG1fcHJvdmlzaW9uYWxQYWdlID0gbnVsbHB0cjsKIH0KIAotdm9p
ZCBXZWJQYWdlUHJveHk6OmNsZWFyTG9hZERlcGVuZGVudENhbGxiYWNrcygpCi17Ci0gICAgSGFz
aFNldDxDYWxsYmFja0lEPiBsb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHMgPSBXVEZNb3Zl
KG1fbG9hZERlcGVuZGVudFN0cmluZ0NhbGxiYWNrSURzKTsKLSAgICBmb3IgKGF1dG8mIGNhbGxi
YWNrSUQgOiBsb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHMpIHsKLSAgICAgICAgaWYgKGF1
dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPFN0cmluZ0NhbGxiYWNrPihjYWxsYmFja0lE
KSkKLSAgICAgICAgICAgIGNhbGxiYWNrLT5pbnZhbGlkYXRlKCk7Ci0gICAgfQotfQotCiAjaWYg
RU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKIHN0YXRpYyBPcHRpb25TZXQ8Q3Jvc3NT
aXRlTmF2aWdhdGlvbkRhdGFUcmFuc2Zlcjo6RmxhZz4gY2hlY2tJZk5hdmlnYXRpb25Db250YWlu
c0RhdGFUcmFuc2Zlcihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEgcmVxdWVzdGVyT3JpZ2luLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIGN1cnJlbnRSZXF1ZXN0KQogewpAQCAtNDY2Myw4ICs0NjE2
LDYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZShGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYKICAgICBwYWdlQ2xpZW50KCkucmVzZXRTZWN1
cmVJbnB1dFN0YXRlKCk7CiAjZW5kaWYKIAotICAgIGNsZWFyTG9hZERlcGVuZGVudENhbGxiYWNr
cygpOwotCiAgICAgZnJhbWUtPmRpZENvbW1pdExvYWQobWltZVR5cGUsIHdlYkNlcnRpZmljYXRl
SW5mbywgY29udGFpbnNQbHVnaW5Eb2N1bWVudCk7CiAKICAgICBpZiAoZnJhbWUtPmlzTWFpbkZy
YW1lKCkpIHsKQEAgLTQ4MjcsOCArNDc3OCw2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWls
TG9hZEZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJiYKICAg
ICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkgJiYgbmF2aWdhdGlvbklEKQogICAgICAgICBuYXZp
Z2F0aW9uID0gbmF2aWdhdGlvblN0YXRlKCkubmF2aWdhdGlvbihuYXZpZ2F0aW9uSUQpOwogCi0g
ICAgY2xlYXJMb2FkRGVwZW5kZW50Q2FsbGJhY2tzKCk7Ci0KICAgICBhdXRvIHRyYW5zYWN0aW9u
ID0gbV9wYWdlTG9hZFN0YXRlLnRyYW5zYWN0aW9uKCk7CiAKICAgICBib29sIGlzTWFpbkZyYW1l
ID0gZnJhbWUtPmlzTWFpbkZyYW1lKCk7CkBAIC03MTE0LDQ1ICs3MDYzLDYgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZFJlY2VpdmVFdmVudCh1aW50MzJfdCBvcGFxdWVUeXBlLCBib29sIGhhbmRs
ZWQpCiAgICAgfQogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6dm9pZENhbGxiYWNrKENhbGxiYWNr
SUQgY2FsbGJhY2tJRCkKLXsKLSAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3MudGFrZTxW
b2lkQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOwotICAgIGlmICghY2FsbGJhY2spIHsKLSAgICAgICAg
Ly8gRklYTUU6IExvZyBlcnJvciBvciBhc3NlcnQuCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrKCk7Ci19Ci0KLXZvaWQgV2ViUGFnZVByb3h5
OjpzdHJpbmdDYWxsYmFjayhjb25zdCBTdHJpbmcmIHJlc3VsdFN0cmluZywgQ2FsbGJhY2tJRCBj
YWxsYmFja0lEKQotewotICAgIGF1dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPFN0cmlu
Z0NhbGxiYWNrPihjYWxsYmFja0lEKTsKLSAgICBpZiAoIWNhbGxiYWNrKSB7Ci0gICAgICAgIC8v
IEZJWE1FOiBMb2cgZXJyb3Igb3IgYXNzZXJ0LgotICAgICAgICAvLyB0aGlzIGNhbiB2YWxpZGx5
IGhhcHBlbiBpZiBhIGxvYWQgaW52YWxpZGF0ZWQgdGhlIGNhbGxiYWNrLCB0aG91Z2gKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIG1fbG9hZERlcGVuZGVudFN0cmluZ0NhbGxiYWNrSURz
LnJlbW92ZShjYWxsYmFja0lEKTsKLQotICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRo
UmV0dXJuVmFsdWUocmVzdWx0U3RyaW5nLmltcGwoKSk7Ci19Ci0KLXZvaWQgV2ViUGFnZVByb3h5
OjppbnZhbGlkYXRlU3RyaW5nQ2FsbGJhY2soQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQotewotICAg
IGF1dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPFN0cmluZ0NhbGxiYWNrPihjYWxsYmFj
a0lEKTsKLSAgICBpZiAoIWNhbGxiYWNrKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBMb2cgZXJyb3Ig
b3IgYXNzZXJ0LgotICAgICAgICAvLyB0aGlzIGNhbiB2YWxpZGx5IGhhcHBlbiBpZiBhIGxvYWQg
aW52YWxpZGF0ZWQgdGhlIGNhbGxiYWNrLCB0aG91Z2gKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIG1fbG9hZERlcGVuZGVudFN0cmluZ0NhbGxiYWNrSURzLnJlbW92ZShjYWxsYmFja0lE
KTsKLQotICAgIGNhbGxiYWNrLT5pbnZhbGlkYXRlKCk7Ci19Ci0KIHZvaWQgV2ViUGFnZVByb3h5
OjplZGl0b3JTdGF0ZUNoYW5nZWQoY29uc3QgRWRpdG9yU3RhdGUmIGVkaXRvclN0YXRlKQogewog
ICAgIHVwZGF0ZUVkaXRvclN0YXRlKGVkaXRvclN0YXRlKTsKQEAgLTc1NTYsOSArNzQ2Niw2IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpyZXNldFN0YXRlKFJlc2V0U3RhdGVSZWFzb24gcmVzZXRTdGF0
ZVJlYXNvbikKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgbV9jYWxsYmFja3MuaW52YWxp
ZGF0ZShlcnJvcik7Ci0gICAgbV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHMuY2xlYXIo
KTsKLQogICAgIGZvciAoYXV0byYgZWRpdENvbW1hbmQgOiBzdGQ6OmV4Y2hhbmdlKG1fZWRpdENv
bW1hbmRTZXQsIHsgfSkpCiAgICAgICAgIGVkaXRDb21tYW5kLT5pbnZhbGlkYXRlKCk7CiAKQEAg
LTkyMzMsMTggKzkxNDAsMTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEVuZE1hZ25pZmljYXRp
b25HZXN0dXJlKCkKIAogI2VuZGlmCiAKLXZvaWQgV2ViUGFnZVByb3h5OjppbnN0YWxsQWN0aXZp
dHlTdGF0ZUNoYW5nZUNvbXBsZXRpb25IYW5kbGVyKEZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFnZVByb3h5OjppbnN0YWxsQWN0aXZpdHlTdGF0ZUNoYW5n
ZUNvbXBsZXRpb25IYW5kbGVyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gdm9p
ZENhbGxiYWNrID0gVm9pZENhbGxiYWNrOjpjcmVhdGUoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildIChhdXRvKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKCk7Ci0gICAgfSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHko
IldlYlBhZ2VQcm94eTo6aW5zdGFsbEFjdGl2aXR5U3RhdGVDaGFuZ2VDb21wbGV0aW9uSGFuZGxl
ciJfcykpOwotICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKHZv
aWRDYWxsYmFjaykpOwotICAgIG1fbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja3MuYXBw
ZW5kKGNhbGxiYWNrSUQpOworICAgIG1fbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja3Mu
YXBwZW5kKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OmltYWdlT3JNZWRpYURvY3VtZW50U2l6ZUNoYW5nZWQoY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYgbmV3U2l6ZSkKQEAgLTk2MTgsMzIgKzk1MjEsMjAgQEAgUmVmUHRyPEFQSTo6QXR0YWNobWVu
dD4gV2ViUGFnZVByb3h5OjphdHRhY2htZW50Rm9ySWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlk
ZW4KICAgICByZXR1cm4gbV9hdHRhY2htZW50SWRlbnRpZmllclRvQXR0YWNobWVudE1hcC5nZXQo
aWRlbnRpZmllcik7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjppbnNlcnRBdHRhY2htZW50KFJl
ZjxBUEk6OkF0dGFjaG1lbnQ+JiYgYXR0YWNobWVudCwgRnVuY3Rpb248dm9pZChDYWxsYmFja0Jh
c2U6OkVycm9yKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViUGFnZVByb3h5OjppbnNlcnRBdHRhY2ht
ZW50KFJlZjxBUEk6OkF0dGFjaG1lbnQ+JiYgYXR0YWNobWVudCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNhbGxiYWNrKQogewotICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgewot
ICAgICAgICBjYWxsYmFjayhDYWxsYmFja0Jhc2U6OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVk
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIGF1dG8gYXR0YWNobWVudElkZW50aWZp
ZXIgPSBhdHRhY2htZW50LT5pZGVudGlmaWVyKCk7Ci0gICAgYXV0byBjYWxsYmFja0lEID0gbV9j
YWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5OjppbnNlcnRBdHRhY2htZW50Il9zKSk7Ci0g
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SW5zZXJ0QXR0YWNobWVudChhdHRhY2htZW50SWRl
bnRpZmllciwgYXR0YWNobWVudC0+ZmlsZVNpemVGb3JEaXNwbGF5KCksIGF0dGFjaG1lbnQtPmZp
bGVOYW1lKCksIGF0dGFjaG1lbnQtPmNvbnRlbnRUeXBlKCksIGNhbGxiYWNrSUQpKTsKKyAgICBz
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6Okluc2VydEF0dGFjaG1lbnQoYXR0
YWNobWVudElkZW50aWZpZXIsIGF0dGFjaG1lbnQtPmZpbGVTaXplRm9yRGlzcGxheSgpLCBhdHRh
Y2htZW50LT5maWxlTmFtZSgpLCBhdHRhY2htZW50LT5jb250ZW50VHlwZSgpKSwgV1RGTW92ZShj
YWxsYmFjaykpOwogICAgIG1fYXR0YWNobWVudElkZW50aWZpZXJUb0F0dGFjaG1lbnRNYXAuc2V0
KGF0dGFjaG1lbnRJZGVudGlmaWVyLCBXVEZNb3ZlKGF0dGFjaG1lbnQpKTsKIH0KIAotdm9pZCBX
ZWJQYWdlUHJveHk6OnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IEFQSTo6QXR0YWNo
bWVudCYgYXR0YWNobWVudCwgRnVuY3Rpb248dm9pZChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBj
YWxsYmFjaykKK3ZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhj
b25zdCBBUEk6OkF0dGFjaG1lbnQmIGF0dGFjaG1lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjYWxsYmFjaykKIHsKLSAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKLSAgICAg
ICAgY2FsbGJhY2soQ2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJbnZhbGlkYXRlZCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2UgZGF0YVJlZmVyZW5jZTsKICAgICBpZiAoYXV0byBkYXRhID0gYXR0YWNobWVudC5lbmNsb3Np
bmdJbWFnZURhdGEoKSkKICAgICAgICAgZGF0YVJlZmVyZW5jZSA9IHsgKmRhdGEgfTsKIAotICAg
IGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSwgbV9w
cm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6dXBk
YXRlQXR0YWNobWVudEF0dHJpYnV0ZXMiX3MpKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpVcGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhhdHRhY2htZW50LmlkZW50aWZpZXIoKSwgYXR0
YWNobWVudC5maWxlU2l6ZUZvckRpc3BsYXkoKSwgYXR0YWNobWVudC5jb250ZW50VHlwZSgpLCBh
dHRhY2htZW50LmZpbGVOYW1lKCksIFdURk1vdmUoZGF0YVJlZmVyZW5jZSksIGNhbGxiYWNrSUQp
KTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZUF0dGFj
aG1lbnRBdHRyaWJ1dGVzKGF0dGFjaG1lbnQuaWRlbnRpZmllcigpLCBhdHRhY2htZW50LmZpbGVT
aXplRm9yRGlzcGxheSgpLCBhdHRhY2htZW50LmNvbnRlbnRUeXBlKCksIGF0dGFjaG1lbnQuZmls
ZU5hbWUoKSwgV1RGTW92ZShkYXRhUmVmZXJlbmNlKSksIFdURk1vdmUoY2FsbGJhY2spKTsKIH0K
IAogI2lmIEhBVkUoUVVJQ0tMT09LX1RIVU1CTkFJTElORykKQEAgLTk3OTksNyArOTY5MCw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpkaWRJbnNlcnRBdHRhY2htZW50V2l0aElkZW50aWZpZXIoY29u
c3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjCiAgICAgcGFnZUNsaWVudCgpLmRpZEluc2VydEF0dGFj
aG1lbnQoYXR0YWNobWVudC5nZXQoKSwgc291cmNlKTsKIAogICAgIGlmICghYXR0YWNobWVudC0+
aXNFbXB0eSgpICYmIGhhc0VuY2xvc2luZ0ltYWdlKQotICAgICAgICB1cGRhdGVBdHRhY2htZW50
QXR0cmlidXRlcyhhdHRhY2htZW50LmdldCgpLCBbXSAoYXV0bykgeyB9KTsKKyAgICAgICAgdXBk
YXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoYXR0YWNobWVudC5nZXQoKSwgW10geyB9KTsKIH0KIAog
dm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlbW92ZUF0dGFjaG1lbnRXaXRoSWRlbnRpZmllcihjb25z
dCBTdHJpbmcmIGlkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CmluZGV4IDZhNDIxNDNlOTA3NjBkMjgwMGI2MGZkZGQ0ZTc3OGM2NTVkMGExY2QuLjkyZTBmZjdh
ZmQxYjZhZDU2YWQ3NTFkYjNmZGI3NTZjNzE2NzhkZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCkBAIC0zODAsOCArMzgwLDYgQEAgZW51bSBjbGFzcyBQcm9jZXNzU3dh
cFJlcXVlc3RlZEJ5Q2xpZW50IDogYm9vbDsKIGVudW0gY2xhc3MgVW5kb09yUmVkbyA6IGJvb2w7
CiBlbnVtIGNsYXNzIFdlYkNvbnRlbnRNb2RlIDogdWludDhfdDsKIAotdHlwZWRlZiBHZW5lcmlj
Q2FsbGJhY2s8Y29uc3QgU3RyaW5nJj4gU3RyaW5nQ2FsbGJhY2s7Ci0KICNpZiBIQVZFKFZJU0lC
SUxJVFlfUFJPUEFHQVRJT05fVklFVykKIHVzaW5nIExheWVySG9zdGluZ0NvbnRleHRJRCA9IHVp
bnQzMl90OwogI2VuZGlmCkBAIC03NjQsNyArNzYyLDcgQEAgcHVibGljOgogICAgIHZvaWQgdXBk
YXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50LCBib29s
IGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQsIFJlc3BlY3RTZWxlY3Rpb25BbmNob3Is
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgdXBkYXRlU2VsZWN0
aW9uV2l0aEV4dGVudFBvaW50QW5kQm91bmRhcnkoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQsIFdl
YkNvcmU6OlRleHRHcmFudWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVt
ZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIHJlcXVlc3RB
dXRvY29ycmVjdGlvbkRhdGEoY29uc3QgU3RyaW5nJiB0ZXh0Rm9yQXV0b2NvcnJlY3Rpb24sIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQXV0b2NvcnJlY3Rpb25EYXRhKT4mJik7Ci0gICAgdm9p
ZCBhcHBseUF1dG9jb3JyZWN0aW9uKGNvbnN0IFN0cmluZyYgY29ycmVjdGlvbiwgY29uc3QgU3Ry
aW5nJiBvcmlnaW5hbFRleHQsIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2Fs
bGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAgIHZvaWQgYXBwbHlBdXRvY29ycmVjdGlvbihjb25z
dCBTdHJpbmcmIGNvcnJlY3Rpb24sIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxUZXh0LCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKICAgICBib29sIGFwcGx5QXV0b2Nv
cnJlY3Rpb24oY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFs
VGV4dCk7CiAgICAgdm9pZCByZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0KCk7CiAgICAgdm9p
ZCBoYW5kbGVBdXRvY29ycmVjdGlvbkNvbnRleHQoY29uc3QgV2ViQXV0b2NvcnJlY3Rpb25Db250
ZXh0Jik7CkBAIC0xMTE0LDIyICsxMTEyLDIyIEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZEZhaWxU
b0ZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBkaWRGaW5kU3RyaW5nTWF0Y2hl
cyhjb25zdCBTdHJpbmcmLCBjb25zdCBWZWN0b3I8VmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+PiYg
bWF0Y2hSZWN0cywgaW50MzJfdCBmaXJzdEluZGV4QWZ0ZXJTZWxlY3Rpb24pOwogCi0gICAgdm9p
ZCBnZXRDb250ZW50c0FzU3RyaW5nKENvbnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXMs
IFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4m
Jik7CisgICAgdm9pZCBnZXRDb250ZW50c0FzU3RyaW5nKENvbnRlbnRBc1N0cmluZ0luY2x1ZGVz
Q2hpbGRGcmFtZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOwog
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgZ2V0Q29udGVudHNBc0F0dHJpYnV0ZWRTdHJp
bmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpBdHRyaWJ1dGVkU3RyaW5n
Jik+JiYpOwogI2VuZGlmCi0gICAgdm9pZCBnZXRCeXRlY29kZVByb2ZpbGUoV1RGOjpGdW5jdGlv
bjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7Ci0gICAgdm9p
ZCBnZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3Ry
aW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAgIHZvaWQgZ2V0Qnl0ZWNvZGVQcm9m
aWxlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOworICAgIHZvaWQg
Z2V0U2FtcGxpbmdQcm9maWxlck91dHB1dChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0
cmluZyYpPiYmKTsKIAogI2lmIEVOQUJMRShNSFRNTCkKICAgICB2b2lkIGdldENvbnRlbnRzQXNN
SFRNTERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBUEk6OkRhdGEqKT4mJik7CiAjZW5kaWYK
ICAgICB2b2lkIGdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKFdlYkZyYW1lUHJveHkqLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6RGF0YSopPiYmKTsKICAgICB2b2lkIGdldFJlc291cmNl
RGF0YUZyb21GcmFtZShXZWJGcmFtZVByb3h5JiwgQVBJOjpVUkwqLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKEFQSTo6RGF0YSopPiYmKTsKLSAgICB2b2lkIGdldFJlbmRlclRyZWVFeHRlcm5hbFJl
cHJlc2VudGF0aW9uKFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tC
YXNlOjpFcnJvcik+JiYpOwotICAgIHZvaWQgZ2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5n
KFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+
JiYpOworICAgIHZvaWQgZ2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJik7CisgICAgdm9pZCBnZXRTZWxlY3Rp
b25PckNvbnRlbnRzQXNTdHJpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcm
KT4mJik7CiAgICAgdm9pZCBnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoQVBJOjpEYXRhKik+JiYpOwotICAgIHZvaWQgZ2V0U291cmNlRm9yRnJhbWUo
V2ViRnJhbWVQcm94eSosIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJh
Y2tCYXNlOjpFcnJvcik+JiYpOworICAgIHZvaWQgZ2V0U291cmNlRm9yRnJhbWUoV2ViRnJhbWVQ
cm94eSosIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOwogICAgIHZv
aWQgZ2V0V2ViQXJjaGl2ZU9mRnJhbWUoV2ViRnJhbWVQcm94eSosIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoQVBJOjpEYXRhKik+JiYpOwogICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1l
KFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoRXhwZWN0ZWQ8UmVmUHRyPEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgV2ViQ29yZTo6
RXhjZXB0aW9uRGV0YWlscz4mJik+JiYpOwogICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluRnJhbWVJ
blNjcmlwdFdvcmxkKFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIE9wdGlvbmFs
PFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIEFQSTo6Q29udGVudFdvcmxkJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChFeHBlY3RlZDxSZWZQdHI8QVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+
LCBXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiYmKT4mJik7CkBAIC0xNDc3LDcgKzE0NzUsNyBA
QCBwdWJsaWM6CiAKICAgICBib29sIHNjcm9sbGluZ1VwZGF0ZXNEaXNhYmxlZEZvclRlc3Rpbmco
KTsKIAotICAgIHZvaWQgaW5zdGFsbEFjdGl2aXR5U3RhdGVDaGFuZ2VDb21wbGV0aW9uSGFuZGxl
cihGdW5jdGlvbjx2b2lkKCk+JiYpOworICAgIHZvaWQgaW5zdGFsbEFjdGl2aXR5U3RhdGVDaGFu
Z2VDb21wbGV0aW9uSGFuZGxlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAjaWYg
VVNFKFVOSUZJRURfVEVYVF9DSEVDS0lORykKICAgICB2b2lkIGNoZWNrVGV4dE9mUGFyYWdyYXBo
KGNvbnN0IFN0cmluZyYgdGV4dCwgT3B0aW9uU2V0PFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGU+
IGNoZWNraW5nVHlwZXMsIGludDMyX3QgaW5zZXJ0aW9uUG9pbnQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoVmVjdG9yPFdlYkNvcmU6OlRleHRDaGVja2luZ1Jlc3VsdD4mJik+JiYpOwpAQCAtMTYx
NSw4ICsxNjEzLDggQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkK
ICAgICBSZWZQdHI8QVBJOjpBdHRhY2htZW50PiBhdHRhY2htZW50Rm9ySWRlbnRpZmllcihjb25z
dCBTdHJpbmcmIGlkZW50aWZpZXIpIGNvbnN0OwotICAgIHZvaWQgaW5zZXJ0QXR0YWNobWVudChS
ZWY8QVBJOjpBdHRhY2htZW50PiYmLCBGdW5jdGlvbjx2b2lkKENhbGxiYWNrQmFzZTo6RXJyb3Ip
PiYmKTsKLSAgICB2b2lkIHVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IEFQSTo6QXR0
YWNobWVudCYsIEZ1bmN0aW9uPHZvaWQoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAgIHZv
aWQgaW5zZXJ0QXR0YWNobWVudChSZWY8QVBJOjpBdHRhY2htZW50PiYmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgdXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoY29u
c3QgQVBJOjpBdHRhY2htZW50JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2
b2lkIHNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YUZvcklkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6U2VyaWFsaXpl
ZEF0dGFjaG1lbnREYXRhPiYmKT4mJik7CiAgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVu
dGlmaWVyKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgZGlkSW52YWxpZGF0ZURhdGFGb3JBdHRh
Y2htZW50KEFQSTo6QXR0YWNobWVudCYpOwpAQCAtMjE1MywxMCArMjE1MSw2IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBkaXNjYXJkUXVldWVkTW91c2VFdmVudHMoKTsKIAogICAgIHZvaWQgZGlkUmVj
ZWl2ZUV2ZW50KHVpbnQzMl90IG9wYXF1ZVR5cGUsIGJvb2wgaGFuZGxlZCk7Ci0KLSAgICB2b2lk
IHZvaWRDYWxsYmFjayhDYWxsYmFja0lEKTsKLSAgICB2b2lkIHN0cmluZ0NhbGxiYWNrKGNvbnN0
IFN0cmluZyYsIENhbGxiYWNrSUQpOwotICAgIHZvaWQgaW52YWxpZGF0ZVN0cmluZ0NhbGxiYWNr
KENhbGxiYWNrSUQpOwogI2lmIFBMQVRGT1JNKE1BQykKICAgICB2b2lkIGRpZFVwZGF0ZVJlbmRl
cmluZ0FmdGVyQ29tbWl0dGluZ0xvYWQoKTsKICAgICB2b2lkIGZvbnRBdFNlbGVjdGlvbkNhbGxi
YWNrKGNvbnN0IEZvbnRJbmZvJiwgZG91YmxlLCBib29sLCBDYWxsYmFja0lEKTsKQEAgLTIyMzMs
OCArMjIyNyw2IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPE5TQXJyYXk+IG1fZGF0YURldGVj
dGlvblJlc3VsdHM7CiAjZW5kaWYKIAotICAgIHZvaWQgY2xlYXJMb2FkRGVwZW5kZW50Q2FsbGJh
Y2tzKCk7Ci0KICAgICB2b2lkIHBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJv
bGxlckFjdGlvbiwgV2ViQ29yZTo6RHJhZ0RhdGEmLCBjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdl
TmFtZSwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZUFycmF5JiYpOwogCiAgICAgdm9pZCB1cGRhdGVCYWNraW5nU3RvcmVEaXNjYXJkYWJsZVN0YXRl
KCk7CkBAIC0yNDg0LDkgKzI0NzYsNiBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eT4gbV9jcmVkZW50aWFsc01lc3NlbmdlcjsK
ICNlbmRpZgogCi0gICAgQ2FsbGJhY2tNYXAgbV9jYWxsYmFja3M7Ci0gICAgSGFzaFNldDxDYWxs
YmFja0lEPiBtX2xvYWREZXBlbmRlbnRTdHJpbmdDYWxsYmFja0lEczsKLQogICAgIEhhc2hTZXQ8
V2ViRWRpdENvbW1hbmRQcm94eSo+IG1fZWRpdENvbW1hbmRTZXQ7CiAKICNpZiBQTEFURk9STShD
T0NPQSkKQEAgLTI3NjQsNyArMjc1Myw3IEBAIHByaXZhdGU6CiAKICAgICBPcHRpb25TZXQ8V2Vi
Q29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZz4gbV9wb3RlbnRpYWxseUNoYW5nZWRBY3Rpdml0eVN0
YXRlRmxhZ3M7CiAgICAgYm9vbCBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VXYW50c1N5bmNocm9ub3Vz
UmVwbHkgeyBmYWxzZSB9OwotICAgIFZlY3RvcjxDYWxsYmFja0lEPiBtX25leHRBY3Rpdml0eVN0
YXRlQ2hhbmdlQ2FsbGJhY2tzOworICAgIFZlY3RvcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
PiBtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tzOwogCiAgICAgV2ViQ29yZTo6TWVk
aWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIG1fbWVkaWFTdGF0ZSB7IFdlYkNvcmU6Ok1lZGlh
UHJvZHVjZXI6OklzTm90UGxheWluZyB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggNjQ5ZjhlMTJhODgwNzM1ODg2ZDUzZTkw
YTQxMGRkODcwZDcxYWRlZS4uZTljZmRmZTNjNDMzMzE1OWIwMmMzNDliYTg3Y2EwMzliNTk3NDg2
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdl
cy5pbgpAQCAtMTYyLDEwICsxNjIsNiBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAg
ICMgRm9ybXMgbWVzc2FnZXMKICAgICBXaWxsU3VibWl0Rm9ybShXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIHNvdXJjZUZyYW1lSUQsIFZl
Y3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiB0ZXh0RmllbGRWYWx1ZXMsIHVpbnQ2NF90
IGxpc3RlbmVySUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAKLSAgICAjIENhbGxiYWNr
IG1lc3NhZ2VzCi0gICAgVm9pZENhbGxiYWNrKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lE
KQotICAgIFN0cmluZ0NhbGxiYWNrKFN0cmluZyByZXN1bHRTdHJpbmcsIFdlYktpdDo6Q2FsbGJh
Y2tJRCBjYWxsYmFja0lEKQotICAgIEludmFsaWRhdGVTdHJpbmdDYWxsYmFjayhXZWJLaXQ6OkNh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIEludGVy
cHJldEtleUV2ZW50KHN0cnVjdCBXZWJLaXQ6OkVkaXRvclN0YXRlIHN0YXRlLCBib29sIGlzQ2hh
ckV2ZW50KSAtPiAoYm9vbCBoYW5kbGVkKSBTeW5jaHJvbm91cwogICAgIERpZFJlY2VpdmVQb3Np
dGlvbkluZm9ybWF0aW9uKHN0cnVjdCBXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBv
c2l0aW9uIGluZm9ybWF0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggOWQ1NjFmNWQzYmZjNzEwMTg0
ODFiZTJjYmNjMTM4NDY0YTc4MmNkYi4uNDU2ZDdiY2FiYTBhZWNiNTBkMDk5YmNhYjRjNzJjMmU5
MmViMTE5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC0zMjE3LDEwICszMjE3LDcgQEAgRk9SX0VBQ0hf
UFJJVkFURV9XS0NPTlRFTlRWSUVXX0FDVElPTihGT1JXQVJEX0FDVElPTl9UT19XS1dFQlZJRVcp
CiAtICh2b2lkKV9zaGFyZUZvcldlYlZpZXc6KGlkKXNlbmRlcgogewogICAgIFJldGFpblB0cjxX
S0NvbnRlbnRWaWV3PiB2aWV3ID0gc2VsZjsKLSAgICBfcGFnZS0+Z2V0U2VsZWN0aW9uT3JDb250
ZW50c0FzU3RyaW5nKFt2aWV3XShjb25zdCBTdHJpbmcmIHN0cmluZywgV2ViS2l0OjpDYWxsYmFj
a0Jhc2U6OkVycm9yIGVycm9yKSB7Ci0gICAgICAgIGlmIChlcnJvciAhPSBXZWJLaXQ6OkNhbGxi
YWNrQmFzZTo6RXJyb3I6Ok5vbmUpCi0gICAgICAgICAgICByZXR1cm47Ci0KKyAgICBfcGFnZS0+
Z2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKFt2aWV3XShjb25zdCBTdHJpbmcmIHN0cmlu
ZykgewogICAgICAgICBpZiAoIXZpZXctPl90ZXh0SW50ZXJhY3Rpb25Bc3Npc3RhbnQgfHwgIXN0
cmluZyB8fCB2aWV3LT5fcGFnZS0+ZWRpdG9yU3RhdGUoKS5pc01pc3NpbmdQb3N0TGF5b3V0RGF0
YSkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMzc5Niw5ICszNzkzLDcgQEAgV0VCQ09SRV9D
T01NQU5EX0ZPUl9XRUJWSUVXKHBhc3RlQW5kTWF0Y2hTdHlsZSk7CiAjZW5kaWYKIAogICAgIFJl
dGFpblB0cjxXS0NvbnRlbnRWaWV3PiB2aWV3ID0gc2VsZjsKLSAgICBfcGFnZS0+Z2V0U2VsZWN0
aW9uT3JDb250ZW50c0FzU3RyaW5nKFt2aWV3XShjb25zdCBTdHJpbmcmIHN0cmluZywgV2ViS2l0
OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7Ci0gICAgICAgIGlmIChlcnJvciAhPSBXZWJL
aXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpCi0gICAgICAgICAgICByZXR1cm47CisgICAg
X3BhZ2UtPmdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhbdmlld10oY29uc3QgU3RyaW5n
JiBzdHJpbmcpIHsKICAgICAgICAgaWYgKCFzdHJpbmcpCiAgICAgICAgICAgICByZXR1cm47CiAK
QEAgLTM4MTAsOSArMzgwNSw3IEBAIFdFQkNPUkVfQ09NTUFORF9GT1JfV0VCVklFVyhwYXN0ZUFu
ZE1hdGNoU3R5bGUpOwogewogICAgIFJldGFpblB0cjxXS0NvbnRlbnRWaWV3PiB2aWV3ID0gc2Vs
ZjsKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gX3dlYlZpZXcuZ2V0KCk7Ci0g
ICAgX3BhZ2UtPmdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhbdmlldywgd2ViVmlld10o
Y29uc3QgU3RyaW5nJiBzdHJpbmcsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikg
ewotICAgICAgICBpZiAoZXJyb3IgIT0gV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25l
KQotICAgICAgICAgICAgcmV0dXJuOworICAgIF9wYWdlLT5nZXRTZWxlY3Rpb25PckNvbnRlbnRz
QXNTdHJpbmcoW3ZpZXcsIHdlYlZpZXddKGNvbnN0IFN0cmluZyYgc3RyaW5nKSB7CiAgICAgICAg
IFt3ZWJWaWV3IF9hY2Nlc3NpYmlsaXR5RGlkR2V0U3BlYWtTZWxlY3Rpb25Db250ZW50OnN0cmlu
Z107CiAgICAgICAgIGlmIChbdmlldyByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGFjY2Vz
c2liaWxpdHlTcGVha1NlbGVjdGlvblNldENvbnRlbnQ6KV0pCiAgICAgICAgICAgICBbdmlldyBh
Y2Nlc3NpYmlsaXR5U3BlYWtTZWxlY3Rpb25TZXRDb250ZW50OnN0cmluZ107CkBAIC00Mzc4LDcg
KzQzNzEsNyBAQCBzdGF0aWMgdm9pZCBzZWxlY3Rpb25DaGFuZ2VkV2l0aFRvdWNoKFdLQ29udGVu
dFZpZXcgKnZpZXcsIGNvbnN0IFdlYkNvcmU6OkludFBvaQogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgX3BhZ2UtPmFwcGx5QXV0b2NvcnJlY3Rpb24oY29ycmVjdGlvbiwgaW5wdXQsIFt2
aWV3ID0gcmV0YWluUHRyKHNlbGYpLCBjb21wbGV0aW9uID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRp
b25IYW5kbGVyKV0oYXV0byYgc3RyaW5nLCBhdXRvIGVycm9yKSB7CisgICAgX3BhZ2UtPmFwcGx5
QXV0b2NvcnJlY3Rpb24oY29ycmVjdGlvbiwgaW5wdXQsIFt2aWV3ID0gcmV0YWluUHRyKHNlbGYp
LCBjb21wbGV0aW9uID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byYgc3Ry
aW5nKSB7CiAgICAgICAgIGlmIChjb21wbGV0aW9uKQogICAgICAgICAgICAgY29tcGxldGlvbigh
c3RyaW5nLmlzTnVsbCgpID8gW1dLQXV0b2NvcnJlY3Rpb25SZWN0cyBhdXRvY29ycmVjdGlvblJl
Y3RzV2l0aEZpcnN0Q0dSZWN0OnZpZXctPl9hdXRvY29ycmVjdGlvbkRhdGEudGV4dEZpcnN0UmVj
dCBsYXN0Q0dSZWN0OnZpZXctPl9hdXRvY29ycmVjdGlvbkRhdGEudGV4dExhc3RSZWN0XSA6IG5p
bCk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2Vi
UGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94
eUlPUy5tbQppbmRleCBlMTY5YTcyZmM5YjdlNjA2ODBiNGRiNDE5YmU5ZmQ0Mzg1ZjZhMWEyLi42
ODAxMThjOGZkZDg3YjIzNDdkY2E1YzcwN2U5NzA4MjNhYzkwYzQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KQEAgLTQzMCwxNSArNDMwLDkg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RBdXRvY29ycmVjdGlvbkRhdGEoY29uc3QgU3Ry
aW5nJiB0ZXh0Rm9yQXV0b2NvcnJlY3Rpb24KICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlJlcXVlc3RBdXRvY29ycmVjdGlvbkRhdGEodGV4dEZvckF1dG9jb3JyZWN0
aW9uKSwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6YXBwbHlB
dXRvY29ycmVjdGlvbihjb25zdCBTdHJpbmcmIGNvcnJlY3Rpb24sIGNvbnN0IFN0cmluZyYgb3Jp
Z2luYWxUZXh0LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFz
ZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6YXBwbHlB
dXRvY29ycmVjdGlvbihjb25zdCBTdHJpbmcmIGNvcnJlY3Rpb24sIGNvbnN0IFN0cmluZyYgb3Jp
Z2luYWxUZXh0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNhbGxi
YWNrKQogewotICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgewotICAgICAgICBjYWxsYmFj
a0Z1bmN0aW9uKFN0cmluZygpLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1
dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tn
cm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5OjphcHBseUF1dG9jb3JyZWN0aW9uIl9zKSk7Ci0g
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBcHBseUF1dG9jb3JyZWN0aW9u
KGNvcnJlY3Rpb24sIG9yaWdpbmFsVGV4dCwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKKyAg
ICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OkFwcGx5QXV0b2NvcnJlY3Rp
b24oY29ycmVjdGlvbiwgb3JpZ2luYWxUZXh0KSwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCiBi
b29sIFdlYlBhZ2VQcm94eTo6YXBwbHlBdXRvY29ycmVjdGlvbihjb25zdCBTdHJpbmcmIGNvcnJl
Y3Rpb24sIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxUZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9XS1RleHRGaW5kZXJDbGllbnQubW0KaW5kZXggNmE3ZTYyMDdlZDU4Y2I4
M2U4NmNjYjMzM2IxODZjOGY4MTNhNGFjMy4uMjk0M2ViNmFlYTBkODljNGJjYjE1OTk5M2ZkMmFk
Mzc2NzExZjYxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLVGV4
dEZpbmRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tUZXh0
RmluZGVyQ2xpZW50Lm1tCkBAIC0yNDMsNyArMjQzLDcgQEAgcHJpdmF0ZToKIHsKICAgICB2b2lk
ICheY29waWVkQ29tcGxldGlvbkhhbmRsZXIpKE5TU3RyaW5nICopID0gQmxvY2tfY29weShjb21w
bGV0aW9uSGFuZGxlcik7CiAKLSAgICBfcGFnZS0+Z2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3Ry
aW5nKFtjb3BpZWRDb21wbGV0aW9uSGFuZGxlcl0gKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBXZWJL
aXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpIHsKKyAgICBfcGFnZS0+Z2V0U2VsZWN0aW9uT3JDb250
ZW50c0FzU3RyaW5nKFtjb3BpZWRDb21wbGV0aW9uSGFuZGxlcl0gKGNvbnN0IFN0cmluZyYgc3Ry
aW5nKSB7CiAgICAgICAgIGNvcGllZENvbXBsZXRpb25IYW5kbGVyKHN0cmluZyk7CiAgICAgICAg
IEJsb2NrX3JlbGVhc2UoY29waWVkQ29tcGxldGlvbkhhbmRsZXIpOwogICAgIH0pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaAppbmRleCBi
NDg2YjI0NjM2NzYxZWQ4MDQ5NjZhOWUxOGY1OGNiZmQ1NjI4Y2Y1Li5hYTE2ODM0YzIxNjIzYWY5
OWFiYWQ0ZWRhMWFkNDdlMTFhOGNmMDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaApAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvTm90aWZpY2F0aW9uQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RpZmlj
YXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3Jp
Z2luSGFzaC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVm9pZENhbGxiYWNrLmg+CiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuaAppbmRleCAwMGNjMGEwOGQ5
MjYwNGZkZGZiNWNhNjJmNmI4ODU5NWMzMWFiMGQyLi44MWYxZGU0NjFmMWVjM2FiNjBjNjUxOWZl
YmRmMDI4NzdmNmM4OTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5oCkBAIC0zMyw3
ICszMyw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBOb3RpZmljYXRpb25QZXJtaXNz
aW9uQ2FsbGJhY2s7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgVm9pZENh
bGxiYWNrOwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCmluZGV4IDE2
ZmQzYzM2NGZjN2ViOWRiOWYzMTg1OWY2NzJmNDIxNWY1NWI1YWIuLjY0ZDUzMjliODY2MDhiYzAy
ZDQ2N2NkNDNlY2RlZjcyYjU0YTI3MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvRHJhd2luZ0FyZWEuaApAQCAtMTIxLDcgKzEyMSw3IEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaEFmdGVyRW5zdXJpbmdVcGRhdGVkU2Nyb2xsUG9zaXRpb24o
V1RGOjpGdW5jdGlvbjx2b2lkICgpPiYmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBhY3Rpdml0eVN0
YXRlRGlkQ2hhbmdlKE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPiwgQWN0
aXZpdHlTdGF0ZUNoYW5nZUlELCBjb25zdCBWZWN0b3I8Q2FsbGJhY2tJRD4mKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgYWN0aXZpdHlTdGF0ZURpZENoYW5nZShPcHRpb25TZXQ8V2ViQ29yZTo6QWN0
aXZpdHlTdGF0ZTo6RmxhZz4sIEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKCk7IH07
CiAgICAgdmlydHVhbCB2b2lkIHNldExheWVySG9zdGluZ01vZGUoTGF5ZXJIb3N0aW5nTW9kZSkg
eyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgbWFya0xheWVyc1ZvbGF0aWxlSW1tZWRpYXRlbHlJZlBv
c3NpYmxlKCkgeyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaAppbmRleCAyN2Y5MzZmMzE5MDRlMTU4MzQ2NDU0MWY1
ZDA1YTkxMDMwYzIxMDc1Li42MzFmMmE2MTE4YjgwZDBmNzE5NWU2MDczMjJmMWExMDJiMjg4Y2M0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXll
clRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWEuaApAQCAtMTA2LDcgKzEwNiw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIG1haW5GcmFtZUNv
bnRlbnRTaXplQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgb3ZlcnJpZGU7CiAKLSAg
ICB2b2lkIGFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoT3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5
U3RhdGU6OkZsYWc+IGNoYW5nZWQsIEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCwgY29uc3QgVmVjdG9y
PENhbGxiYWNrSUQ+JiBjYWxsYmFja0lEcykgb3ZlcnJpZGU7CisgICAgdm9pZCBhY3Rpdml0eVN0
YXRlRGlkQ2hhbmdlKE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPiBjaGFu
Z2VkLCBBY3Rpdml0eVN0YXRlQ2hhbmdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikg
b3ZlcnJpZGU7CiAKICAgICBib29sIGFkZE1pbGVzdG9uZXNUb0Rpc3BhdGNoKE9wdGlvblNldDxX
ZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmU+KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCmluZGV4IGQ4MjA1NWZmMjA0
NTRkNTVmOTU4YjRjNTA1NzdkOTg4NzliNjYwYTAuLjVhYmU5OWY5ZmI0ZWJhNzVhOTVhMWQxYzg0
ZjgxYmNhMjcwY2RhNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWEubW0KQEAgLTQ4Myw3ICs0ODMsNyBAQCB2b2lkIFJlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhOjpCYWNraW5nU3RvcmVGbHVzaGVyOjpmbHVzaCgpCiAgICAgbV9jb25u
ZWN0aW9uLT5zZW5kTWVzc2FnZShXVEZNb3ZlKG1fY29tbWl0RW5jb2RlciksIHsgfSk7CiB9CiAK
LXZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2Uo
T3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+LCBBY3Rpdml0eVN0YXRlQ2hh
bmdlSUQgYWN0aXZpdHlTdGF0ZUNoYW5nZUlELCBjb25zdCBWZWN0b3I8Q2FsbGJhY2tJRD4mIGNh
bGxiYWNrSURzKQordm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6YWN0aXZpdHlTdGF0
ZURpZENoYW5nZShPcHRpb25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZz4sIEFjdGl2
aXR5U3RhdGVDaGFuZ2VJRCBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjYWxsYmFjaykKIHsKICAgICAvLyBGSVhNRTogU2hvdWxkIHdlIHN1c3BlbmQg
cGFpbnRpbmcgd2hpbGUgbm90IHZpc2libGUsIGxpa2UgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWE/IFByb2JhYmx5LgogCkBAIC00OTUsOCArNDk1LDcgQEAgdm9pZCBSZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZShPcHRpb25TZXQ8V2ViQ29yZTo6
QWN0aXYKIAogICAgIC8vIEZJWE1FOiBXZSBtYXkgd2FudCB0byBtYXRjaCBiZWhhdmlvciBpbiBU
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYSBieSBmaXJpbmcgdGhlc2UgY2FsbGJhY2tzIGFm
dGVyIHRoZSBuZXh0IGNvbXBvc2l0aW5nIGZsdXNoLCByYXRoZXIgdGhhbiBpbW1lZGlhdGVseSBh
ZnRlcgogICAgIC8vIGhhbmRsaW5nIGFuIGFjdGl2aXR5IHN0YXRlIGNoYW5nZS4KLSAgICBmb3Ig
KGF1dG8mIGNhbGxiYWNrSUQgOiBjYWxsYmFja0lEcykKLSAgICAgICAgbV93ZWJQYWdlLnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Vm9pZENhbGxiYWNrKGNhbGxiYWNrSUQpKTsKKyAgICBj
YWxsYmFjaygpOwogfQogCiB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjphZGRUcmFu
c2FjdGlvbkNhbGxiYWNrSUQoQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAxNTllZjIwYzkwZDRjZTJhZjll
ODI5YjY1OTczNmYwMzExZmZhNGVlLi42NDI0MWYyNzA0YzBmMjZmYTZiMjNiZGM1NjNlNTgyZDFj
ZjU3YzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cApAQCAtOTIzLDcgKzkyMyw3IEBAIHZvaWQgV2ViUGFnZTo6cmVpbml0aWFsaXplV2ViUGFnZShX
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICBzZXRTaXplVG9Db250
ZW50QXV0b1NpemVNYXhpbXVtU2l6ZShwYXJhbWV0ZXJzLnNpemVUb0NvbnRlbnRBdXRvU2l6ZU1h
eGltdW1TaXplKTsKIAogICAgIGlmIChtX2FjdGl2aXR5U3RhdGUgIT0gcGFyYW1ldGVycy5hY3Rp
dml0eVN0YXRlKQotICAgICAgICBzZXRBY3Rpdml0eVN0YXRlKHBhcmFtZXRlcnMuYWN0aXZpdHlT
dGF0ZSwgQWN0aXZpdHlTdGF0ZUNoYW5nZUFzeW5jaHJvbm91cywgVmVjdG9yPENhbGxiYWNrSUQ+
KCkpOworICAgICAgICBzZXRBY3Rpdml0eVN0YXRlKHBhcmFtZXRlcnMuYWN0aXZpdHlTdGF0ZSwg
QWN0aXZpdHlTdGF0ZUNoYW5nZUFzeW5jaHJvbm91cywgeyB9KTsKICAgICBpZiAobV9sYXllckhv
c3RpbmdNb2RlICE9IHBhcmFtZXRlcnMubGF5ZXJIb3N0aW5nTW9kZSkKICAgICAgICAgc2V0TGF5
ZXJIb3N0aW5nTW9kZShwYXJhbWV0ZXJzLmxheWVySG9zdGluZ01vZGUpOwogCkBAIC0zMzYyLDcg
KzMzNjIsNyBAQCB2b2lkIFdlYlBhZ2U6OnZpc2liaWxpdHlEaWRDaGFuZ2UoKQogICAgIH0KIH0K
IAotdm9pZCBXZWJQYWdlOjpzZXRBY3Rpdml0eVN0YXRlKE9wdGlvblNldDxBY3Rpdml0eVN0YXRl
OjpGbGFnPiBhY3Rpdml0eVN0YXRlLCBBY3Rpdml0eVN0YXRlQ2hhbmdlSUQgYWN0aXZpdHlTdGF0
ZUNoYW5nZUlELCBjb25zdCBWZWN0b3I8Q2FsbGJhY2tJRD4mIGNhbGxiYWNrSURzKQordm9pZCBX
ZWJQYWdlOjpzZXRBY3Rpdml0eVN0YXRlKE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnPiBh
Y3Rpdml0eVN0YXRlLCBBY3Rpdml0eVN0YXRlQ2hhbmdlSUQgYWN0aXZpdHlTdGF0ZUNoYW5nZUlE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7CiAgICAgTE9HX1dJVEhf
U1RSRUFNKEFjdGl2aXR5U3RhdGUsIHN0cmVhbSA8PCAiV2ViUGFnZSAiIDw8IGlkZW50aWZpZXIo
KS50b1VJbnQ2NCgpIDw8ICIgc2V0QWN0aXZpdHlTdGF0ZSB0byAiIDw8IGFjdGl2aXR5U3RhdGUp
OwogCkBAIC0zMzgxLDcgKzMzODEsNyBAQCB2b2lkIFdlYlBhZ2U6OnNldEFjdGl2aXR5U3RhdGUo
T3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+IGFjdGl2aXR5U3RhdGUsIEFjdAogICAgIGZv
ciAoYXV0byogcGx1Z2luVmlldyA6IG1fcGx1Z2luVmlld3MpCiAgICAgICAgIHBsdWdpblZpZXct
PmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoY2hhbmdlZCk7CiAKLSAgICBtX2RyYXdpbmdBcmVhLT5h
Y3Rpdml0eVN0YXRlRGlkQ2hhbmdlKGNoYW5nZWQsIGFjdGl2aXR5U3RhdGVDaGFuZ2VJRCwgY2Fs
bGJhY2tJRHMpOworICAgIG1fZHJhd2luZ0FyZWEtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoY2hh
bmdlZCwgYWN0aXZpdHlTdGF0ZUNoYW5nZUlELCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkucGFnZUFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UobV9pZGVudGlm
aWVyLCBjaGFuZ2VkKTsKIAogICAgIGlmIChjaGFuZ2VkICYgQWN0aXZpdHlTdGF0ZTo6SXNJbldp
bmRvdykKQEAgLTM2MDgsMTIgKzM2MDgsMTIgQEAgdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0
SW5GcmFtZUluU2NyaXB0V29ybGQoUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWUKICAg
ICBydW5KYXZhU2NyaXB0KHdlYkZyYW1lLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCB3b3JsZERhdGEu
Zmlyc3QsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpn
ZXRDb250ZW50c0FzU3RyaW5nKENvbnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXMgaW5j
bHVkZUNoaWxkRnJhbWVzLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6Omdl
dENvbnRlbnRzQXNTdHJpbmcoQ29udGVudEFzU3RyaW5nSW5jbHVkZXNDaGlsZEZyYW1lcyBpbmNs
dWRlQ2hpbGRGcmFtZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYg
Y2FsbGJhY2spCiB7CiAgICAgc3dpdGNoIChpbmNsdWRlQ2hpbGRGcmFtZXMpIHsKICAgICBjYXNl
IENvbnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXM6Ok5vOiB7CiAgICAgICAgIFN0cmlu
ZyByZXN1bHRTdHJpbmcgPSBtX21haW5GcmFtZS0+Y29udGVudHNBc1N0cmluZygpOwotICAgICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlN0cmluZ0NhbGxiYWNrKHJlc3VsdFN0cmlu
ZywgY2FsbGJhY2tJRCkpOworICAgICAgICBjYWxsYmFjayhyZXN1bHRTdHJpbmcpOwogICAgICAg
ICBicmVhazsKICAgICB9CiAgICAgY2FzZSBDb250ZW50QXNTdHJpbmdJbmNsdWRlc0NoaWxkRnJh
bWVzOjpZZXM6IHsKQEAgLTM2MjcsNyArMzYyNyw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0Q29udGVu
dHNBc1N0cmluZyhDb250ZW50QXNTdHJpbmdJbmNsdWRlc0NoaWxkRnJhbWVzIGluY2x1ZGVDaGls
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OlN0cmluZ0NhbGxiYWNrKGJ1aWxkZXIudG9TdHJpbmcoKSwgY2FsbGJhY2tJRCkp
OworICAgICAgICBjYWxsYmFjayhidWlsZGVyLnRvU3RyaW5nKCkpOwogICAgICAgICBicmVhazsK
ICAgICB9CiAgICAgfQpAQCAtMzY0MCwxMCArMzY0MCw5IEBAIHZvaWQgV2ViUGFnZTo6Z2V0Q29u
dGVudHNBc01IVE1MRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6U2hhcmVk
QnVmCiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQYWdlOjpnZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXBy
ZXNlbnRhdGlvbihDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OmdldFJlbmRl
clRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
U3RyaW5nJik+JiYgY2FsbGJhY2spCiB7Ci0gICAgU3RyaW5nIHJlc3VsdFN0cmluZyA9IHJlbmRl
clRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKCk7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpTdHJpbmdDYWxsYmFjayhyZXN1bHRTdHJpbmcsIGNhbGxiYWNrSUQpKTsKKyAgICBj
YWxsYmFjayhyZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbigpKTsKIH0KIAogc3RhdGlj
IEZyYW1lKiBmcmFtZVdpdGhTZWxlY3Rpb24oUGFnZSogcGFnZSkKQEAgLTM2NzIsMjIgKzM2NzEs
MjIgQEAgdm9pZCBXZWJQYWdlOjpnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXQKICAgICBjYWxsYmFjayhkYXRhUmVmZXJlbmNl
KTsKIH0KIAotdm9pZCBXZWJQYWdlOjpnZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcoQ2Fs
bGJhY2tJRCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpnZXRTZWxlY3Rpb25PckNvbnRlbnRz
QXNTdHJpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjYWxsYmFj
aykKIHsKICAgICBXZWJGcmFtZSogZm9jdXNlZE9yTWFpbkZyYW1lID0gV2ViRnJhbWU6OmZyb21D
b3JlRnJhbWUobV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKSk7
CiAgICAgU3RyaW5nIHJlc3VsdFN0cmluZyA9IGZvY3VzZWRPck1haW5GcmFtZS0+c2VsZWN0aW9u
QXNTdHJpbmcoKTsKICAgICBpZiAocmVzdWx0U3RyaW5nLmlzRW1wdHkoKSkKICAgICAgICAgcmVz
dWx0U3RyaW5nID0gZm9jdXNlZE9yTWFpbkZyYW1lLT5jb250ZW50c0FzU3RyaW5nKCk7Ci0gICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTdHJpbmdDYWxsYmFjayhyZXN1bHRTdHJpbmcs
IGNhbGxiYWNrSUQpKTsKKyAgICBjYWxsYmFjayhyZXN1bHRTdHJpbmcpOwogfQogCi12b2lkIFdl
YlBhZ2U6OmdldFNvdXJjZUZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBDYWxsYmFj
a0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OmdldFNvdXJjZUZvckZyYW1lKEZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYm
IGNhbGxiYWNrKQogewogICAgIFN0cmluZyByZXN1bHRTdHJpbmc7CiAgICAgaWYgKFdlYkZyYW1l
KiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpKQogICAg
ICAgIHJlc3VsdFN0cmluZyA9IGZyYW1lLT5zb3VyY2UoKTsKIAotICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6U3RyaW5nQ2FsbGJhY2socmVzdWx0U3RyaW5nLCBjYWxsYmFja0lEKSk7
CisgICAgY2FsbGJhY2socmVzdWx0U3RyaW5nKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpnZXRNYWlu
UmVzb3VyY2VEYXRhT2ZGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmKT4mJiBjYWxs
YmFjaykKQEAgLTY0MzgsMzMgKzY0MzcsMjkgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVDYWNoZWRE
b2N1bWVudExvYWRlcihXZWJEb2N1bWVudExvYWRlciYgZG9jdW1lbnRMb2FkZXIsIEZyYW0KICAg
ICB9CiB9CiAKLXZvaWQgV2ViUGFnZTo6Z2V0Qnl0ZWNvZGVQcm9maWxlKENhbGxiYWNrSUQgY2Fs
bGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6Z2V0Qnl0ZWNvZGVQcm9maWxlKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY2FsbGJhY2spCiB7Ci0gICAgaWYgKExJS0VMWSgh
Y29tbW9uVk0oKS5tX3BlckJ5dGVjb2RlUHJvZmlsZXIpKSB7Ci0gICAgICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6U3RyaW5nQ2FsbGJhY2soU3RyaW5nKCksIGNhbGxiYWNrSUQpKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoTElLRUxZKCFjb21tb25WTSgpLm1fcGVy
Qnl0ZWNvZGVQcm9maWxlcikpCisgICAgICAgIHJldHVybiBjYWxsYmFjayh7IH0pOwogCiAgICAg
U3RyaW5nIHJlc3VsdCA9IGNvbW1vblZNKCkubV9wZXJCeXRlY29kZVByb2ZpbGVyLT50b0pTT04o
KTsKICAgICBBU1NFUlQocmVzdWx0Lmxlbmd0aCgpKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OlN0cmluZ0NhbGxiYWNrKHJlc3VsdCwgY2FsbGJhY2tJRCkpOworICAgIGNhbGxi
YWNrKHJlc3VsdCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Z2V0U2FtcGxpbmdQcm9maWxlck91dHB1
dChDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OmdldFNhbXBsaW5nUHJvZmls
ZXJPdXRwdXQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjYWxsYmFj
aykKIHsKICNpZiBFTkFCTEUoU0FNUExJTkdfUFJPRklMRVIpCiAgICAgU2FtcGxpbmdQcm9maWxl
ciogc2FtcGxpbmdQcm9maWxlciA9IGNvbW1vblZNKCkuc2FtcGxpbmdQcm9maWxlcigpOwotICAg
IGlmICghc2FtcGxpbmdQcm9maWxlcikgewotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkludmFsaWRhdGVTdHJpbmdDYWxsYmFjayhjYWxsYmFja0lEKSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9CisgICAgaWYgKCFzYW1wbGluZ1Byb2ZpbGVyKQorICAgICAgICByZXR1cm4g
Y2FsbGJhY2soeyB9KTsKIAogICAgIFN0cmluZ1ByaW50U3RyZWFtIHJlc3VsdDsKICAgICBzYW1w
bGluZ1Byb2ZpbGVyLT5yZXBvcnRUb3BGdW5jdGlvbnMocmVzdWx0KTsKICAgICBzYW1wbGluZ1By
b2ZpbGVyLT5yZXBvcnRUb3BCeXRlY29kZXMocmVzdWx0KTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OlN0cmluZ0NhbGxiYWNrKHJlc3VsdC50b1N0cmluZygpLCBjYWxsYmFja0lE
KSk7CisgICAgY2FsbGJhY2socmVzdWx0LnRvU3RyaW5nKCkpOwogI2Vsc2UKLSAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkludmFsaWRhdGVTdHJpbmdDYWxsYmFjayhjYWxsYmFja0lE
KSk7CisgICAgY2FsbGJhY2soeyB9KTsKICNlbmRpZgogfQogCkBAIC02OTEwLDIxICs2OTA1LDIx
IEBAIHZvaWQgV2ViUGFnZTo6dm9pY2VzRGlkQ2hhbmdlKCkKIAogI2lmIEVOQUJMRShBVFRBQ0hN
RU5UX0VMRU1FTlQpCiAKLXZvaWQgV2ViUGFnZTo6aW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJp
bmcmIGlkZW50aWZpZXIsIE9wdGlvbmFsPHVpbnQ2NF90PiYmIGZpbGVTaXplLCBjb25zdCBTdHJp
bmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCit2b2lkIFdlYlBhZ2U6Omluc2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVu
dGlmaWVyLCBPcHRpb25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxl
TmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNhbGxiYWNrKQogewogICAgIGF1dG8mIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xs
ZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBmcmFtZS5lZGl0b3IoKS5pbnNlcnRBdHRh
Y2htZW50KGlkZW50aWZpZXIsIFdURk1vdmUoZmlsZVNpemUpLCBmaWxlTmFtZSwgY29udGVudFR5
cGUpOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Vm9pZENhbGxiYWNrKGNhbGxi
YWNrSUQpKTsKKyAgICBjYWxsYmFjaygpOwogfQogCi12b2lkIFdlYlBhZ2U6OnVwZGF0ZUF0dGFj
aG1lbnRBdHRyaWJ1dGVzKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgT3B0aW9uYWw8dWludDY0
X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYg
ZmlsZU5hbWUsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZW5jbG9zaW5nSW1hZ2VEYXRhLCBD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OnVwZGF0ZUF0dGFjaG1lbnRBdHRy
aWJ1dGVzKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgT3B0aW9uYWw8dWludDY0X3Q+JiYgZmls
ZVNpemUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUs
IGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZW5jbG9zaW5nSW1hZ2VEYXRhLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKGF1dG8gYXR0YWNobWVudCA9
IGF0dGFjaG1lbnRFbGVtZW50V2l0aElkZW50aWZpZXIoaWRlbnRpZmllcikpIHsKICAgICAgICAg
YXR0YWNobWVudC0+ZG9jdW1lbnQoKS51cGRhdGVMYXlvdXQoKTsKICAgICAgICAgYXR0YWNobWVu
dC0+dXBkYXRlQXR0cmlidXRlcyhXVEZNb3ZlKGZpbGVTaXplKSwgY29udGVudFR5cGUsIGZpbGVO
YW1lKTsKICAgICAgICAgYXR0YWNobWVudC0+dXBkYXRlRW5jbG9zaW5nSW1hZ2VXaXRoRGF0YShj
b250ZW50VHlwZSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoZW5jbG9zaW5nSW1hZ2VEYXRhLmRhdGEo
KSwgZW5jbG9zaW5nSW1hZ2VEYXRhLnNpemUoKSkpOwogICAgIH0KLSAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OlZvaWRDYWxsYmFjayhjYWxsYmFja0lEKSk7CisgICAgY2FsbGJhY2so
KTsKIH0KIAogdm9pZCBXZWJQYWdlOjp1cGRhdGVBdHRhY2htZW50SWNvbihjb25zdCBTdHJpbmcm
IGlkZW50aWZpZXIsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBxbFRodW1ibmFpbEhh
bmRsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBl
YjUyNDg5MDI4MTUwMjZhNDdiYTlkOGM1MGM3YzhmY2I0NWUxOWUwLi5jZjA0MjYyZjcxZDlhMGQx
Nzg1MDAxYTkwOWQxMDU2OTFhMzYxMzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCkBAIC03NTMsNyArNzUzLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVw
bGFjZURpY3RhdGVkVGV4dChjb25zdCBTdHJpbmcmIG9sZFRleHQsIGNvbnN0IFN0cmluZyYgbmV3
VGV4dCk7CiAgICAgdm9pZCByZXBsYWNlU2VsZWN0ZWRUZXh0KGNvbnN0IFN0cmluZyYgb2xkVGV4
dCwgY29uc3QgU3RyaW5nJiBuZXdUZXh0KTsKICAgICB2b2lkIHJlcXVlc3RBdXRvY29ycmVjdGlv
bkRhdGEoY29uc3QgU3RyaW5nJiB0ZXh0Rm9yQXV0b2NvcnJlY3Rpb24sIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoV2ViQXV0b2NvcnJlY3Rpb25EYXRhKT4mJiByZXBseSk7Ci0gICAgdm9pZCBhcHBs
eUF1dG9jb3JyZWN0aW9uKGNvbnN0IFN0cmluZyYgY29ycmVjdGlvbiwgY29uc3QgU3RyaW5nJiBv
cmlnaW5hbFRleHQsIENhbGxiYWNrSUQpOworICAgIHZvaWQgYXBwbHlBdXRvY29ycmVjdGlvbihj
b25zdCBTdHJpbmcmIGNvcnJlY3Rpb24sIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxUZXh0LCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKICAgICB2b2lkIHN5bmNBcHBs
eUF1dG9jb3JyZWN0aW9uKGNvbnN0IFN0cmluZyYgY29ycmVjdGlvbiwgY29uc3QgU3RyaW5nJiBv
cmlnaW5hbFRleHQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQg
cmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dCgpOwogICAgIHZvaWQgZ2V0UG9zaXRpb25JbmZv
cm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mJik+JiYpOwpAQCAt
MTE0OSw4ICsxMTQ5LDggQEAgcHVibGljOgogICAgIFJlZjxXZWJDb3JlOjpEb2N1bWVudExvYWRl
cj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIoV2ViQ29yZTo6RnJhbWUmLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYpOwogICAgIHZv
aWQgdXBkYXRlQ2FjaGVkRG9jdW1lbnRMb2FkZXIoV2ViRG9jdW1lbnRMb2FkZXImLCBXZWJDb3Jl
OjpGcmFtZSYpOwogCi0gICAgdm9pZCBnZXRCeXRlY29kZVByb2ZpbGUoQ2FsbGJhY2tJRCk7Ci0g
ICAgdm9pZCBnZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KENhbGxiYWNrSUQpOworICAgIHZvaWQg
Z2V0Qnl0ZWNvZGVQcm9maWxlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+
JiYpOworICAgIHZvaWQgZ2V0U2FtcGxpbmdQcm9maWxlck91dHB1dChDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKICAgICAKICNpZiBFTkFCTEUoU0VSVklDRV9DT05U
Uk9MUykgfHwgRU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKQogICAgIHZvaWQgaGFu
ZGxlVGVsZXBob25lTnVtYmVyQ2xpY2soY29uc3QgU3RyaW5nJiBudW1iZXIsIGNvbnN0IFdlYkNv
cmU6OkludFBvaW50Jik7CkBAIC0xMjUzLDggKzEyNTMsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
aG93Q29udGFjdFBpY2tlcihjb25zdCBXZWJDb3JlOjpDb250YWN0c1JlcXVlc3REYXRhJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6Q29udGFjdEluZm8+
PiYmKT4mJik7CiAgICAgCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKLSAgICB2b2lk
IGluc2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBPcHRpb25hbDx1aW50
NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSwgQ2FsbGJhY2tJRCk7Ci0gICAgdm9pZCB1cGRhdGVBdHRhY2htZW50QXR0cmli
dXRlcyhjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIE9wdGlvbmFsPHVpbnQ2NF90PiYmIGZpbGVT
aXplLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGVuY2xvc2luZ0ltYWdlRGF0YSwgQ2FsbGJhY2tJRCk7
CisgICAgdm9pZCBpbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgT3B0
aW9uYWw8dWludDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0
IFN0cmluZyYgY29udGVudFR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAg
dm9pZCB1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIs
IE9wdGlvbmFsPHVpbnQ2NF90PiYmIGZpbGVTaXplLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
LCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGVuY2xv
c2luZ0ltYWdlRGF0YSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHVw
ZGF0ZUF0dGFjaG1lbnRJY29uKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU2hhcmVh
YmxlQml0bWFwOjpIYW5kbGUmIHFsVGh1bWJuYWlsSGFuZGxlKTsKICNlbmRpZgogCkBAIC0xNTE1
LDcgKzE1MTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0SW5pdGlhbEZvY3VzKGJvb2wgZm9y
d2FyZCwgYm9vbCBpc0tleWJvYXJkRXZlbnRWYWxpZCwgY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCB1cGRhdGVJc0luV2luZG93
KGJvb2wgaXNJbml0aWFsU3RhdGUgPSBmYWxzZSk7CiAgICAgdm9pZCB2aXNpYmlsaXR5RGlkQ2hh
bmdlKCk7Ci0gICAgdm9pZCBzZXRBY3Rpdml0eVN0YXRlKE9wdGlvblNldDxXZWJDb3JlOjpBY3Rp
dml0eVN0YXRlOjpGbGFnPiwgQWN0aXZpdHlTdGF0ZUNoYW5nZUlELCBjb25zdCBWZWN0b3I8Q2Fs
bGJhY2tJRD4mIGNhbGxiYWNrSURzKTsKKyAgICB2b2lkIHNldEFjdGl2aXR5U3RhdGUoT3B0aW9u
U2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+LCBBY3Rpdml0eVN0YXRlQ2hhbmdlSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCB2YWxpZGF0ZUNvbW1hbmQo
Y29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sLCBpbnQzMl90KT4mJik7
CiAgICAgdm9pZCBleGVjdXRlRWRpdENvbW1hbmQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
Jik7CiAgICAgdm9pZCBzZXRFZGl0YWJsZShib29sKTsKQEAgLTE1ODAsNyArMTU4MCw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCB2aWV3V2lsbFN0YXJ0TGl2ZVJlc2l6ZSgpOwogICAgIHZvaWQgdmll
d1dpbGxFbmRMaXZlUmVzaXplKCk7CiAKLSAgICB2b2lkIGdldENvbnRlbnRzQXNTdHJpbmcoQ29u
dGVudEFzU3RyaW5nSW5jbHVkZXNDaGlsZEZyYW1lcywgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBn
ZXRDb250ZW50c0FzU3RyaW5nKENvbnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXMsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOwogI2lmIFBMQVRGT1JNKENP
Q09BKQogICAgIHZvaWQgZ2V0Q29udGVudHNBc0F0dHJpYnV0ZWRTdHJpbmcoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpBdHRyaWJ1dGVkU3RyaW5nJik+JiYpOwogI2VuZGlm
CkBAIC0xNTg5LDEwICsxNTg5LDEwIEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICB2b2lkIGdldE1h
aW5SZXNvdXJjZURhdGFPZkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmKT4mJik7
CiAgICAgdm9pZCBnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIHJlc291cmNlVVJMLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYpPiYmKTsKLSAgICB2b2lkIGdldFJl
bmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKENhbGxiYWNrSUQpOwotICAgIHZvaWQgZ2V0
U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKENhbGxiYWNrSUQpOworICAgIHZvaWQgZ2V0UmVu
ZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBTdHJpbmcmKT4mJik7CisgICAgdm9pZCBnZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmco
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJik7CiAgICAgdm9pZCBnZXRT
ZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJik+JiYpOwotICAgIHZvaWQgZ2V0U291cmNlRm9yRnJhbWUoV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIGdldFNvdXJjZUZvckZy
YW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBTdHJpbmcmKT4mJik7CiAgICAgdm9pZCBnZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJik+JiYpOwogICAgIHZvaWQgcnVuSmF2YVNjcmlwdChXZWJGcmFtZSosIFdlYkNvcmU6
OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIENvbnRlbnRXb3JsZElkZW50aWZpZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgT3B0aW9u
YWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4mKT4mJik7CiAgICAgdm9pZCBydW5KYXZhU2Ny
aXB0SW5GcmFtZUluU2NyaXB0V29ybGQoV2ViQ29yZTo6UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMm
JiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgY29uc3Qgc3RkOjpwYWlyPENv
bnRlbnRXb3JsZElkZW50aWZpZXIsIFN0cmluZz4mIHdvcmxkRGF0YSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBPcHRpb25hbDxXZWJDb3Jl
OjpFeGNlcHRpb25EZXRhaWxzPiYpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDhjZmNjNDljZjZmMzgwNzZh
ZjljMzIzMTkzYWQzNzUzNDhhNDQ4ZjAuLjM0YjEyYzQ2NDQ0ZmYxNTVhNWUxNDMyMTk5YWQ4YTE3
ODk5MTU4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMjIsNyArMjIsNyBAQAogCiBtZXNzYWdlcyAtPiBXZWJQ
YWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBTZXRJbml0aWFsRm9jdXMoYm9vbCBmb3J3YXJkLCBi
b29sIGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBXZWJLaXQ6OldlYktleWJvYXJkRXZlbnQgZXZlbnQp
IC0+ICgpIEFzeW5jCi0gICAgU2V0QWN0aXZpdHlTdGF0ZShPcHRpb25TZXQ8V2ViQ29yZTo6QWN0
aXZpdHlTdGF0ZTo6RmxhZz4gYWN0aXZpdHlTdGF0ZSwgV2ViS2l0OjpBY3Rpdml0eVN0YXRlQ2hh
bmdlSUQgYWN0aXZpdHlTdGF0ZUNoYW5nZUlELCBWZWN0b3I8V2ViS2l0OjpDYWxsYmFja0lEPiBj
YWxsYmFja0lEcykKKyAgICBTZXRBY3Rpdml0eVN0YXRlKE9wdGlvblNldDxXZWJDb3JlOjpBY3Rp
dml0eVN0YXRlOjpGbGFnPiBhY3Rpdml0eVN0YXRlLCBXZWJLaXQ6OkFjdGl2aXR5U3RhdGVDaGFu
Z2VJRCBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQpIC0+ICgpIEFzeW5jCiAgICAgU2V0TGF5ZXJIb3N0
aW5nTW9kZShlbnVtOnVpbnQ4X3QgV2ViS2l0OjpMYXllckhvc3RpbmdNb2RlIGxheWVySG9zdGlu
Z01vZGUpCiAKICAgICBTZXRCYWNrZ3JvdW5kQ29sb3IoT3B0aW9uYWw8V2ViQ29yZTo6Q29sb3I+
IGNvbG9yKQpAQCAtODIsNyArODIsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2Vp
dmVyIHsKICAgICBSZXBsYWNlRGljdGF0ZWRUZXh0KFN0cmluZyBvbGRUZXh0LCBTdHJpbmcgbmV3
VGV4dCkKICAgICBSZXBsYWNlU2VsZWN0ZWRUZXh0KFN0cmluZyBvbGRUZXh0LCBTdHJpbmcgbmV3
VGV4dCkKICAgICBSZXF1ZXN0QXV0b2NvcnJlY3Rpb25EYXRhKFN0cmluZyB0ZXh0Rm9yQXV0b2Nv
cnJlY3Rpb24pIC0+IChzdHJ1Y3QgV2ViS2l0OjpXZWJBdXRvY29ycmVjdGlvbkRhdGEgZGF0YSkg
QXN5bmMKLSAgICBBcHBseUF1dG9jb3JyZWN0aW9uKFN0cmluZyBjb3JyZWN0aW9uLCBTdHJpbmcg
b3JpZ2luYWxUZXh0LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBBcHBseUF1
dG9jb3JyZWN0aW9uKFN0cmluZyBjb3JyZWN0aW9uLCBTdHJpbmcgb3JpZ2luYWxUZXh0KSAtPiAo
U3RyaW5nIHN0cmluZykgQXN5bmMKICAgICBTeW5jQXBwbHlBdXRvY29ycmVjdGlvbihTdHJpbmcg
Y29ycmVjdGlvbiwgU3RyaW5nIG9yaWdpbmFsVGV4dCkgLT4gKGJvb2wgYXV0b2NvcnJlY3Rpb25B
cHBsaWVkKSBTeW5jaHJvbm91cwogICAgIFJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRleHQoKQog
ICAgIFJlcXVlc3RFdmFzaW9uUmVjdHNBYm92ZVNlbGVjdGlvbigpIC0+IChWZWN0b3I8V2ViQ29y
ZTo6RmxvYXRSZWN0PiByZWN0cykgQXN5bmMKQEAgLTIwNCw3ICsyMDQsNyBAQCBHZW5lcmF0ZVN5
bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRp
bmdDb21tYW5kVHlwZQogICAgIFJlc3RvcmVTZWxlY3Rpb25JbkZvY3VzZWRFZGl0YWJsZUVsZW1l
bnQoKQogCiAgICAgIyBDYWxsYmFja3MuCi0gICAgR2V0Q29udGVudHNBc1N0cmluZyhlbnVtOmJv
b2wgV2ViS2l0OjpDb250ZW50QXNTdHJpbmdJbmNsdWRlc0NoaWxkRnJhbWVzIGluQ2hpbGRGcmFt
ZXMsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIEdldENvbnRlbnRzQXNTdHJp
bmcoZW51bTpib29sIFdlYktpdDo6Q29udGVudEFzU3RyaW5nSW5jbHVkZXNDaGlsZEZyYW1lcyBp
bkNoaWxkRnJhbWVzKSAtPiAoU3RyaW5nIHN0cmluZykgQXN5bmMKICAgICBHZXRBbGxGcmFtZXMo
KSAtPiAoc3RydWN0IFdlYktpdDo6RnJhbWVUcmVlTm9kZURhdGEgbWFpbkZyYW1lKSBBc3luYwog
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIEdldENvbnRlbnRzQXNBdHRyaWJ1dGVkU3RyaW5nKCkg
LT4gKHN0cnVjdCBXZWJDb3JlOjpBdHRyaWJ1dGVkU3RyaW5nIHJlc3VsdCkgQXN5bmMKQEAgLTIx
NCwxMCArMjE0LDEwIEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50
OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAjZW5kaWYKICAgICBHZXRN
YWluUmVzb3VyY2VEYXRhT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkg
LT4gKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlKSBBc3luYwog
ICAgIEdldFJlc291cmNlRGF0YUZyb21GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgU3RyaW5nIHJlc291cmNlVVJMKSAtPiAoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJl
bmNlIGRhdGFSZWZlcmVuY2UpIEFzeW5jCi0gICAgR2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVz
ZW50YXRpb24oV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCi0gICAgR2V0U2VsZWN0aW9u
T3JDb250ZW50c0FzU3RyaW5nKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIEdl
dFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKCkgLT4gKFN0cmluZyBzdHJpbmcpIEFz
eW5jCisgICAgR2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKCkgLT4gKFN0cmluZyBzdHJp
bmcpIEFzeW5jCiAgICAgR2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YSgpIC0+IChJUEM6OkRh
dGFSZWZlcmVuY2UgZGF0YSkgQXN5bmMKLSAgICBHZXRTb3VyY2VGb3JGcmFtZShXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisg
ICAgR2V0U291cmNlRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpIC0+
IChTdHJpbmcgc3RyaW5nKSBBc3luYwogICAgIEdldFdlYkFyY2hpdmVPZkZyYW1lKFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciBmcmFtZUlEKSAtPiAoSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZl
cmVuY2UpIEFzeW5jCiAKICAgICBSdW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQoc3Ry
dWN0IFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzIHBhcmFtZXRlcnMsIE9wdGlvbmFs
PFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgc3RkOjpwYWlyPFdlYktpdDo6Q29u
dGVudFdvcmxkSWRlbnRpZmllciwgU3RyaW5nPiB3b3JsZCkgLT4gKElQQzo6RGF0YVJlZmVyZW5j
ZSByZXN1bHREYXRhLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxz
KSBBc3luYwpAQCAtNDg3LDkgKzQ4Nyw5IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1h
bmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAgICAg
U2V0U2Nyb2xsUGlubmluZ0JlaGF2aW9yKHVpbnQzMl90IHBpbm5pbmcpCiAgICAgU2V0U2Nyb2xs
YmFyT3ZlcmxheVN0eWxlKE9wdGlvbmFsPHVpbnQzMl90PiBzY3JvbGxiYXJTdHlsZSkKIAotICAg
IEdldEJ5dGVjb2RlUHJvZmlsZShXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBH
ZXRCeXRlY29kZVByb2ZpbGUoKSAtPiAoU3RyaW5nIHN0cmluZykgQXN5bmMKIAotICAgIEdldFNh
bXBsaW5nUHJvZmlsZXJPdXRwdXQoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAg
R2V0U2FtcGxpbmdQcm9maWxlck91dHB1dCgpIC0+IChTdHJpbmcgc3RyaW5nKSBBc3luYwogICAg
IAogICAgIFRha2VTbmFwc2hvdChXZWJDb3JlOjpJbnRSZWN0IHNuYXBzaG90UmVjdCwgV2ViQ29y
ZTo6SW50U2l6ZSBiaXRtYXBTaXplLCB1aW50MzJfdCBvcHRpb25zKSAtPiAoV2ViS2l0OjpTaGFy
ZWFibGVCaXRtYXA6OkhhbmRsZSBpbWFnZSkgQXN5bmMKICNpZiBQTEFURk9STShNQUMpCkBAIC01
NjUsOCArNTY1LDggQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4
X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKICAgICBTZXRJc1N1c3BlbmRl
ZChib29sIHN1c3BlbmRlZCkKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCi0gICAg
SW5zZXJ0QXR0YWNobWVudChTdHJpbmcgaWRlbnRpZmllciwgT3B0aW9uYWw8dWludDY0X3Q+IGZp
bGVTaXplLCBTdHJpbmcgZmlsZU5hbWUsIFN0cmluZyBjb250ZW50VHlwZSwgV2ViS2l0OjpDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCi0gICAgVXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoU3RyaW5n
IGlkZW50aWZpZXIsIE9wdGlvbmFsPHVpbnQ2NF90PiBmaWxlU2l6ZSwgU3RyaW5nIGNvbnRlbnRU
eXBlLCBTdHJpbmcgZmlsZU5hbWUsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBlbmNs
b3NpbmdJbWFnZURhdGEsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIEluc2Vy
dEF0dGFjaG1lbnQoU3RyaW5nIGlkZW50aWZpZXIsIE9wdGlvbmFsPHVpbnQ2NF90PiBmaWxlU2l6
ZSwgU3RyaW5nIGZpbGVOYW1lLCBTdHJpbmcgY29udGVudFR5cGUpIC0+ICgpIEFzeW5jCisgICAg
VXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoU3RyaW5nIGlkZW50aWZpZXIsIE9wdGlvbmFsPHVp
bnQ2NF90PiBmaWxlU2l6ZSwgU3RyaW5nIGNvbnRlbnRUeXBlLCBTdHJpbmcgZmlsZU5hbWUsIElQ
Qzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBlbmNsb3NpbmdJbWFnZURhdGEpIC0+ICgpIEFz
eW5jCiAgICAgVXBkYXRlQXR0YWNobWVudEljb24oU3RyaW5nIGlkZW50aWZpZXIsIFdlYktpdDo6
U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgcWxUaHVtYm5haWxIYW5kbGUpCiAjZW5kaWYKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1Mu
bW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpp
bmRleCAyNDVlNDk5M2RkZTYxNGFlMGYyMWZmN2U0OWZjZmI4ODFlNzI0YmVjLi5mNjcwM2Q3MDRj
OWZhNjRjMGQwMGFjOWEwY2JiOGQ3MWM2NDc0MjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtMjM1MSw5ICsyMzUxLDkg
QEAgdm9pZCBXZWJQYWdlOjpyZXF1ZXN0QXV0b2NvcnJlY3Rpb25EYXRhKGNvbnN0IFN0cmluZyYg
dGV4dEZvckF1dG9jb3JyZWN0aW9uLCBDb20KICAgICByZXBseSh7IFdURk1vdmUocm9vdFZpZXdT
ZWxlY3Rpb25SZWN0cykgLCAoX19icmlkZ2UgVUlGb250ICopZm9udCB9KTsKIH0KIAotdm9pZCBX
ZWJQYWdlOjphcHBseUF1dG9jb3JyZWN0aW9uKGNvbnN0IFN0cmluZyYgY29ycmVjdGlvbiwgY29u
c3QgU3RyaW5nJiBvcmlnaW5hbFRleHQsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2Vi
UGFnZTo6YXBwbHlBdXRvY29ycmVjdGlvbihjb25zdCBTdHJpbmcmIGNvcnJlY3Rpb24sIGNvbnN0
IFN0cmluZyYgb3JpZ2luYWxUZXh0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmlu
ZyYpPiYmIGNhbGxiYWNrKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U3Ry
aW5nQ2FsbGJhY2soYXBwbHlBdXRvY29ycmVjdGlvbkludGVybmFsKGNvcnJlY3Rpb24sIG9yaWdp
bmFsVGV4dCkgPyBjb3JyZWN0aW9uIDogU3RyaW5nKCksIGNhbGxiYWNrSUQpKTsKKyAgICBjYWxs
YmFjayhhcHBseUF1dG9jb3JyZWN0aW9uSW50ZXJuYWwoY29ycmVjdGlvbiwgb3JpZ2luYWxUZXh0
KSA/IGNvcnJlY3Rpb24gOiBTdHJpbmcoKSk7CiB9CiAKIFNlY29uZHMgV2ViUGFnZTo6ZXZlbnRU
aHJvdHRsaW5nRGVsYXkoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWEuaAppbmRleCBiNGVmZmZmZjhmNzJmNmJlYTI0YTVhZDE0ODcxOWRjY2RkNWI4MGRjLi43N2E4
MDQyZjg4NDE1ODhkODIwZWM0Y2ZkYTViZjE0N2JmZWQ1MWRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWEuaApAQCAtODIsNyArODIsNyBAQCBwcml2YXRlOgogCiAgICAg
Ym9vbCBzaG91bGRVc2VUaWxlZEJhY2tpbmdGb3JGcmFtZVZpZXcoY29uc3QgV2ViQ29yZTo6RnJh
bWVWaWV3JikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGFjdGl2aXR5U3RhdGVEaWRDaGFu
Z2UoT3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+IGNoYW5nZWQsIEFjdGl2
aXR5U3RhdGVDaGFuZ2VJRCwgY29uc3QgVmVjdG9yPENhbGxiYWNrSUQ+Jikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0
eVN0YXRlOjpGbGFnPiBjaGFuZ2VkLCBBY3Rpdml0eVN0YXRlQ2hhbmdlSUQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGF0dGFjaFZpZXdPdmVybGF5
R3JhcGhpY3NMYXllcihXZWJDb3JlOjpHcmFwaGljc0xheWVyKikgb3ZlcnJpZGU7CiAKQEAgLTE1
MSw3ICsxNTEsNyBAQCBwcml2YXRlOgogICAgIGRvdWJsZSBtX3RyYW5zaWVudFpvb21TY2FsZSB7
IDEgfTsKICAgICBXZWJDb3JlOjpGbG9hdFBvaW50IG1fdHJhbnNpZW50Wm9vbU9yaWdpbjsKIAot
ICAgIFZlY3RvcjxDYWxsYmFja0lEPiBtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJ
RHM7CisgICAgVmVjdG9yPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4+IG1fbmV4dEFjdGl2aXR5
U3RhdGVDaGFuZ2VDYWxsYmFja3M7CiAgICAgQWN0aXZpdHlTdGF0ZUNoYW5nZUlEIG1fYWN0aXZp
dHlTdGF0ZUNoYW5nZUlEIHsgQWN0aXZpdHlTdGF0ZUNoYW5nZUFzeW5jaHJvbm91cyB9OwogCiAg
ICAgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI+IG1fdmlld092ZXJsYXlSb290TGF5ZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KaW5kZXggNmIxMmU5OTUy
ZDUzNjk1YzQ3MTVkZTM3NTk2ZmE2YjUyZjEwMzE1Yi4uMTZhOTRhMDFhNWI1NGU5MmMxZGE3NTUz
M2IwNDdhMjc4NGNiNjA4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YS5tbQpAQCAtNDk4LDkgKzQ5OCw4IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWE6OmhhbmRsZUFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja3MoKQogICAgIGlmIChtX2FjdGl2
aXR5U3RhdGVDaGFuZ2VJRCAhPSBBY3Rpdml0eVN0YXRlQ2hhbmdlQXN5bmNocm9ub3VzKQogICAg
ICAgICBtX3dlYlBhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRVcGRhdGVBY3Rp
dml0eVN0YXRlKCkpOwogCi0gICAgZm9yIChhdXRvJiBjYWxsYmFja0lEIDogbV9uZXh0QWN0aXZp
dHlTdGF0ZUNoYW5nZUNhbGxiYWNrSURzKQotICAgICAgICBtX3dlYlBhZ2Uuc2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpWb2lkQ2FsbGJhY2soY2FsbGJhY2tJRCkpOwotICAgIG1fbmV4dEFj
dGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja0lEcy5jbGVhcigpOworICAgIGZvciAoYXV0byYgY2Fs
bGJhY2sgOiBzdGQ6OmV4Y2hhbmdlKG1fbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja3Ms
IHsgfSkpCisgICAgICAgIGNhbGxiYWNrKCk7CiAKICAgICBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VJ
RCA9IEFjdGl2aXR5U3RhdGVDaGFuZ2VBc3luY2hyb25vdXM7CiB9CkBAIC01MzEsOSArNTMwLDkg
QEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6aGFuZGxlQWN0aXZpdHlTdGF0
ZUNoYW5nZUNhbGxiYWNrc0lmTmVlZGVkKCkKICAgICB9IGZvclBoYXNlOmtDQVRyYW5zYWN0aW9u
UGhhc2VQb3N0Q29tbWl0XTsKIH0KIAotdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZShPcHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4g
Y2hhbmdlZCwgQWN0aXZpdHlTdGF0ZUNoYW5nZUlEIGFjdGl2aXR5U3RhdGVDaGFuZ2VJRCwgY29u
c3QgVmVjdG9yPENhbGxiYWNrSUQ+JiBuZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrSURz
KQordm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6YWN0aXZpdHlTdGF0ZURpZENo
YW5nZShPcHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4gY2hhbmdlZCwgQWN0aXZpdHlTdGF0
ZUNoYW5nZUlEIGFjdGl2aXR5U3RhdGVDaGFuZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIG5leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2spCiB7Ci0gICAgbV9uZXh0QWN0aXZp
dHlTdGF0ZUNoYW5nZUNhbGxiYWNrSURzLmFwcGVuZFZlY3RvcihuZXh0QWN0aXZpdHlTdGF0ZUNo
YW5nZUNhbGxiYWNrSURzKTsKKyAgICBtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tz
LmFwcGVuZChXVEZNb3ZlKG5leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2spKTsKICAgICBt
X2FjdGl2aXR5U3RhdGVDaGFuZ2VJRCA9IHN0ZDo6bWF4KG1fYWN0aXZpdHlTdGF0ZUNoYW5nZUlE
LCBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQpOwogCiAgICAgaWYgKGNoYW5nZWQgJiBBY3Rpdml0eVN0
YXRlOjpJc1Zpc2libGUpIHsKQEAgLTU0Myw3ICs1NDIsNyBAQCB2b2lkIFRpbGVkQ29yZUFuaW1h
dGlvbkRyYXdpbmdBcmVhOjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKE9wdGlvblNldDxBY3Rpdml0
eVN0YQogICAgICAgICAgICAgc3VzcGVuZFBhaW50aW5nKCk7CiAgICAgfQogCi0gICAgaWYgKG1f
YWN0aXZpdHlTdGF0ZUNoYW5nZUlEICE9IEFjdGl2aXR5U3RhdGVDaGFuZ2VBc3luY2hyb25vdXMg
fHwgIW1fbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja0lEcy5pc0VtcHR5KCkpIHsKKyAg
ICBpZiAobV9hY3Rpdml0eVN0YXRlQ2hhbmdlSUQgIT0gQWN0aXZpdHlTdGF0ZUNoYW5nZUFzeW5j
aHJvbm91cyB8fCAhbV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrcy5pc0VtcHR5KCkp
IHsKICAgICAgICAgbV9zaG91bGRIYW5kbGVBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tzID0g
dHJ1ZTsKICAgICAgICAgdHJpZ2dlclJlbmRlcmluZ1VwZGF0ZSgpOwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419850</attachid>
            <date>2021-02-10 08:54:18 -0800</date>
            <delta_ts>2021-02-10 11:14:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221653-20210210085417.patch</filename>
            <type>text/plain</type>
            <size>71888</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNjM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJlYWFkNDhmZTMzMTkwMTJj
MjllN2EwODhkYTcwMDE1YTUwMzMwYWEuLjkwZjVmZTU1OTBiZTBjMTQwYjJlZWI4MTNmOGVkZmMx
NzRiYzk0ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTEgQEAKKzIwMjEtMDItMDkgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBTdG9wIHVzaW5n
IEdlbmVyaWNDYWxsYmFjayBmcm9tIFdlYlBhZ2VQcm94eQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxNjUzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlcmUgYXJlIHN0aWxsIHR3byB1c2VzIGluIHRo
ZSBEcmF3aW5nQXJlYVByb3h5IGltcGxlbWVudGF0aW9ucywgYnV0IHRob3NlIGFyZSBxdWl0ZSB0
YW5nbGVkIGFuZCBkZXNlcnZlIHRoZWlyIG93biBwYXRjaC4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQVBJQXR0YWNobWVudC5jcHA6CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OnVwZGF0
ZUF0dHJpYnV0ZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCk6CisgICAgICAgIChXS1BhZ2VSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNl
bnRhdGlvbik6CisgICAgICAgIChXS1BhZ2VHZXRTb3VyY2VGb3JGcmFtZSk6CisgICAgICAgIChX
S1BhZ2VHZXRDb250ZW50c0FzU3RyaW5nKToKKyAgICAgICAgKFdLUGFnZUdldEJ5dGVjb2RlUHJv
ZmlsZSk6CisgICAgICAgIChXS1BhZ2VHZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KToKKyAgICAg
ICAgKFdURjo6RnVuY3Rpb248dm9pZCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW06CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6
OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2luc2VydEF0
dGFjaG1lbnRXaXRoRmlsZVdyYXBwZXI6Y29udGVudFR5cGU6Y29tcGxldGlvbjpdKToKKyAgICAg
ICAgKC1bV0tXZWJWaWV3IF9nZXRDb250ZW50c0FzU3RyaW5nV2l0aENvbXBsZXRpb25IYW5kbGVy
Ol0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2dldENvbnRlbnRzT2ZBbGxGcmFtZXNBc1N0cmlu
Z1dpdGhDb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L19XS0F0dGFjaG1lbnQubW06CisgICAgICAgICgtW19XS0F0dGFjaG1lbnQgc2V0RmlsZVdyYXBw
ZXI6Y29udGVudFR5cGU6Y29tcGxldGlvbjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2Ev
V2ViVmlld0ltcGwubW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzdGFydFNwZWFr
aW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmg6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6ZGlzcGF0Y2hBY3Rpdml0eVN0YXRlQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpnZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0U291cmNlRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmdldENvbnRlbnRzQXNTdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmdldEJ5dGVjb2RlUHJvZmlsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6Z2V0U2FtcGxpbmdQcm9maWxlck91dHB1dCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmRpZEZhaWxMb2FkRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6Omluc3RhbGxBY3Rpdml0eVN0YXRlQ2hhbmdlQ29tcGxldGlvbkhhbmRsZXIpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omluc2VydEF0dGFjaG1lbnQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRJbnNlcnRBdHRhY2htZW50V2l0aElkZW50aWZpZXIp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNsZWFyTG9hZERlcGVuZGVudENhbGxi
YWNrcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dm9pZENhbGxi
YWNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzdHJpbmdDYWxs
YmFjayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW52YWxpZGF0
ZVN0cmluZ0NhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAg
ICAgKC1bV0tDb250ZW50VmlldyBfc2hhcmVGb3JXZWJWaWV3Ol0pOgorICAgICAgICAoLVtXS0Nv
bnRlbnRWaWV3IF9kZWZpbmVGb3JXZWJWaWV3Ol0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3
IGFjY2Vzc2liaWxpdHlSZXRyaWV2ZVNwZWFrU2VsZWN0aW9uQ29udGVudF0pOgorICAgICAgICAo
LVtXS0NvbnRlbnRWaWV3IGFwcGx5QXV0b2NvcnJlY3Rpb246dG9TdHJpbmc6d2l0aENvbXBsZXRp
b25IYW5kbGVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmFwcGx5QXV0b2NvcnJlY3Rpb24pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tUZXh0RmluZGVyQ2xpZW50Lm1tOgorICAgICAgICAo
LVtXS1RleHRGaW5kZXJDbGllbnQgZ2V0U2VsZWN0ZWRUZXh0Ol0pOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNs
aWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oOgorICAg
ICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhOjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OnJlaW5pdGlhbGl6ZVdlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRB
Y3Rpdml0eVN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0Q29udGVudHNBc1N0
cmluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldFJlbmRlclRyZWVFeHRlcm5hbFJl
cHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0U2VsZWN0aW9uT3JD
b250ZW50c0FzU3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0U291cmNlRm9y
RnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRCeXRlY29kZVByb2ZpbGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aW5zZXJ0QXR0YWNobWVudCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2Vi
UGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YXBwbHlBdXRvY29ycmVjdGlv
bik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWEubW06CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1h
dGlvbkRyYXdpbmdBcmVhOjpoYW5kbGVBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tzKToKKyAg
ICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmFjdGl2aXR5U3Rh
dGVEaWRDaGFuZ2UpOgorCiAyMDIxLTAyLTA5ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVu
c2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVXNlIENvbXBsZXRpb25IYW5kbGVyIGluc3RlYWQg
b2YgQXBwbGljYXRpb25NYW5pZmVzdENhbGxiYWNrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJQXR0YWNobWVudC5jcHAKaW5kZXggMTM4NmVkNjNlY2EyNzliMDA3MDZkMTdiOWNj
MmJiNTFhOGEyOTFjNy4uYjE4MjBlMDQ4YzA3NzU2MWM5ODFiMTkzZmYzYjVkMzQ2NzAwMTgwMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcApAQCAt
NDksMTUgKzQ5LDE1IEBAIEF0dGFjaG1lbnQ6On5BdHRhY2htZW50KCkKIHsKIH0KIAotdm9pZCBB
dHRhY2htZW50Ojp1cGRhdGVBdHRyaWJ1dGVzKEZ1bmN0aW9uPHZvaWQoV2ViS2l0OjpDYWxsYmFj
a0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFjaykKK3ZvaWQgQXR0YWNobWVudDo6dXBkYXRlQXR0cmli
dXRlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFt
X3dlYlBhZ2UpIHsKLSAgICAgICAgY2FsbGJhY2soV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9y
OjpPd25lcldhc0ludmFsaWRhdGVkKTsKKyAgICAgICAgY2FsbGJhY2soKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAogICAgIGlmIChtX3dlYlBhZ2UtPndpbGxVcGRhdGVBdHRhY2htZW50QXR0
cmlidXRlcygqdGhpcykgPT0gV2ViS2l0OjpXZWJQYWdlUHJveHk6OlNob3VsZFVwZGF0ZUF0dGFj
aG1lbnRBdHRyaWJ1dGVzOjpObykgewotICAgICAgICBjYWxsYmFjayhXZWJLaXQ6OkNhbGxiYWNr
QmFzZTo6RXJyb3I6Ok5vbmUpOworICAgICAgICBjYWxsYmFjaygpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0
YWNobWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaApp
bmRleCAyZTA2NDlhOGRkMDEyZWMwYWUxN2Y2ZjU1ZjQxODdhOWVkNjAxNjliLi43YmE0NGZhYzg5
MjlkODU2MWY4NGE4ODhjOWVmNmM2ODc1NmU2MTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElBdHRhY2htZW50LmgKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogICAgIGVu
dW0gY2xhc3MgSW5zZXJ0aW9uU3RhdGUgOiB1aW50OF90IHsgTm90SW5zZXJ0ZWQsIEluc2VydGVk
IH07CiAKICAgICBjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJu
IG1faWRlbnRpZmllcjsgfQotICAgIHZvaWQgdXBkYXRlQXR0cmlidXRlcyhGdW5jdGlvbjx2b2lk
KFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAgIHZvaWQgdXBkYXRlQXR0cmli
dXRlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAgICAgdm9pZCBpbnZhbGlkYXRl
KCk7CiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gISFtX3dlYlBhZ2U7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCmluZGV4IDRlZjg0YTgxYThmY2I2
OGUyZTljZGI0MzU2NzE4NDc3Y2YwNzQ1YzkuLjYyYTU0Yjc0NmMzYWIyZjFhYjMyY2VkNzE0NjRj
NGM0ZGRmMWU5ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
UGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApA
QCAtMjUzNCwzNiArMjUzNCwzNiBAQCB2b2lkIFdLUGFnZVJ1bkphdmFTY3JpcHRJbk1haW5GcmFt
ZV9iKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBzY3JpcHRSZWYsCiB9CiAjZW5kaWYK
IAotc3RhdGljIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgV2ViS2l0OjpDYWxs
YmFja0Jhc2U6OkVycm9yKT4gdG9HZW5lcmljQ2FsbGJhY2tGdW5jdGlvbih2b2lkKiBjb250ZXh0
LCB2b2lkICgqY2FsbGJhY2spKFdLU3RyaW5nUmVmLCBXS0Vycm9yUmVmLCB2b2lkKikpCitzdGF0
aWMgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4gdG9TdHJpbmdDYWxsYmFj
ayh2b2lkKiBjb250ZXh0LCB2b2lkKCpjYWxsYmFjaykoV0tTdHJpbmdSZWYsIFdLRXJyb3JSZWYs
IHZvaWQqKSkKIHsKLSAgICByZXR1cm4gW2NvbnRleHQsIGNhbGxiYWNrXShjb25zdCBTdHJpbmcm
IHJldHVyblZhbHVlLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKLSAgICAg
ICAgY2FsbGJhY2sodG9BUEkoQVBJOjpTdHJpbmc6OmNyZWF0ZShyZXR1cm5WYWx1ZSkucHRyKCkp
LCBlcnJvciAhPSBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUgPyB0b0FQSShBUEk6
OkVycm9yOjpjcmVhdGUoKS5wdHIoKSkgOiAwLCBjb250ZXh0KTsKKyAgICByZXR1cm4gW2NvbnRl
eHQsIGNhbGxiYWNrXSAoY29uc3QgU3RyaW5nJiByZXR1cm5WYWx1ZSkgeworICAgICAgICBjYWxs
YmFjayh0b0FQSShBUEk6OlN0cmluZzo6Y3JlYXRlKHJldHVyblZhbHVlKS5wdHIoKSksIG51bGxw
dHIsIGNvbnRleHQpOwogICAgIH07CiB9CiAKIHZvaWQgV0tQYWdlUmVuZGVyVHJlZUV4dGVybmFs
UmVwcmVzZW50YXRpb24oV0tQYWdlUmVmIHBhZ2VSZWYsIHZvaWQqIGNvbnRleHQsIFdLUGFnZVJl
bmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uRnVuY3Rpb24gY2FsbGJhY2spCiB7Ci0gICAg
dG9JbXBsKHBhZ2VSZWYpLT5nZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbih0b0dl
bmVyaWNDYWxsYmFja0Z1bmN0aW9uKGNvbnRleHQsIGNhbGxiYWNrKSk7CisgICAgdG9JbXBsKHBh
Z2VSZWYpLT5nZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbih0b1N0cmluZ0NhbGxi
YWNrKGNvbnRleHQsIGNhbGxiYWNrKSk7CiB9CiAKIHZvaWQgV0tQYWdlR2V0U291cmNlRm9yRnJh
bWUoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLRnJhbWVSZWYgZnJhbWVSZWYsIHZvaWQqIGNvbnRleHQs
IFdLUGFnZUdldFNvdXJjZUZvckZyYW1lRnVuY3Rpb24gY2FsbGJhY2spCiB7Ci0gICAgdG9JbXBs
KHBhZ2VSZWYpLT5nZXRTb3VyY2VGb3JGcmFtZSh0b0ltcGwoZnJhbWVSZWYpLCB0b0dlbmVyaWND
YWxsYmFja0Z1bmN0aW9uKGNvbnRleHQsIGNhbGxiYWNrKSk7CisgICAgdG9JbXBsKHBhZ2VSZWYp
LT5nZXRTb3VyY2VGb3JGcmFtZSh0b0ltcGwoZnJhbWVSZWYpLCB0b1N0cmluZ0NhbGxiYWNrKGNv
bnRleHQsIGNhbGxiYWNrKSk7CiB9CiAKIHZvaWQgV0tQYWdlR2V0Q29udGVudHNBc1N0cmluZyhX
S1BhZ2VSZWYgcGFnZVJlZiwgdm9pZCogY29udGV4dCwgV0tQYWdlR2V0Q29udGVudHNBc1N0cmlu
Z0Z1bmN0aW9uIGNhbGxiYWNrKQogewotICAgIHRvSW1wbChwYWdlUmVmKS0+Z2V0Q29udGVudHNB
c1N0cmluZyhDb250ZW50QXNTdHJpbmdJbmNsdWRlc0NoaWxkRnJhbWVzOjpObywgdG9HZW5lcmlj
Q2FsbGJhY2tGdW5jdGlvbihjb250ZXh0LCBjYWxsYmFjaykpOworICAgIHRvSW1wbChwYWdlUmVm
KS0+Z2V0Q29udGVudHNBc1N0cmluZyhDb250ZW50QXNTdHJpbmdJbmNsdWRlc0NoaWxkRnJhbWVz
OjpObywgdG9TdHJpbmdDYWxsYmFjayhjb250ZXh0LCBjYWxsYmFjaykpOwogfQogCiB2b2lkIFdL
UGFnZUdldEJ5dGVjb2RlUHJvZmlsZShXS1BhZ2VSZWYgcGFnZVJlZiwgdm9pZCogY29udGV4dCwg
V0tQYWdlR2V0Qnl0ZWNvZGVQcm9maWxlRnVuY3Rpb24gY2FsbGJhY2spCiB7Ci0gICAgdG9JbXBs
KHBhZ2VSZWYpLT5nZXRCeXRlY29kZVByb2ZpbGUodG9HZW5lcmljQ2FsbGJhY2tGdW5jdGlvbihj
b250ZXh0LCBjYWxsYmFjaykpOworICAgIHRvSW1wbChwYWdlUmVmKS0+Z2V0Qnl0ZWNvZGVQcm9m
aWxlKHRvU3RyaW5nQ2FsbGJhY2soY29udGV4dCwgY2FsbGJhY2spKTsKIH0KIAogdm9pZCBXS1Bh
Z2VHZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KFdLUGFnZVJlZiBwYWdlUmVmLCB2b2lkKiBjb250
ZXh0LCBXS1BhZ2VHZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0RnVuY3Rpb24gY2FsbGJhY2spCiB7
Ci0gICAgdG9JbXBsKHBhZ2VSZWYpLT5nZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KHRvR2VuZXJp
Y0NhbGxiYWNrRnVuY3Rpb24oY29udGV4dCwgY2FsbGJhY2spKTsKKyAgICB0b0ltcGwocGFnZVJl
ZiktPmdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQodG9TdHJpbmdDYWxsYmFjayhjb250ZXh0LCBj
YWxsYmFjaykpOwogfQogCiB2b2lkIFdLUGFnZUdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEo
V0tQYWdlUmVmIHBhZ2VSZWYsIHZvaWQqIGNvbnRleHQsIFdLUGFnZUdldFNlbGVjdGlvbkFzV2Vi
QXJjaGl2ZURhdGFGdW5jdGlvbiBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tCmluZGV4IDNjMWUwNmFm
MDNkOTRmN2RhN2QwZDIwMWZhYjdhY2VmMjFlMDA3YWUuLjEyOTJjY2NjZjg4ZTg4OTM5ZmY5ZmRl
NDQ5NWEzNGYyOWRhOTJiYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQpAQCAtMTg3LDcgKzE4Nyw3IEBAIHZv
aWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmCiAgICAgICAgIHJldHVybjsKIAogICAgIHNldEZpbGVXcmFw
cGVyQW5kVXBkYXRlQ29udGVudFR5cGUoZmlsZVdyYXBwZXIsIGNvbnRlbnRUeXBlKTsKLSAgICBt
X3dlYlBhZ2UtPnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKCp0aGlzLCBbXSAoYXV0bykgeyB9
KTsKKyAgICBtX3dlYlBhZ2UtPnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKCp0aGlzLCBbXSB7
IH0pOwogfQogCiB2b2lkIEF0dGFjaG1lbnQ6OnNldEZpbGVXcmFwcGVyR2VuZXJhdG9yKEZ1bmN0
aW9uPFJldGFpblB0cjxOU0ZpbGVXcmFwcGVyPih2b2lkKT4mJiBmaWxlV3JhcHBlckdlbmVyYXRv
cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmlu
ZGV4IDJjZTNkMjRhY2E0YTI4ZTYyM2RiOGY3MjdlMjllODE1NDkwNWY0YmYuLjY0MjE4NTQ2ZGE3
ZmJkMzcyNjllN2I2MzBlZjEwZTQ0MzcxMzdjYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMjI4Myw5ICsyMjgzLDkgQEAgc3RhdGlj
IFJldGFpblB0cjxOU0FycmF5PiB3a1RleHRNYW5pcHVsYXRpb25FcnJvcnMoTlNBcnJheTxfV0tU
ZXh0TWFuaXB1bGF0aW9uSXQKICAgICBhdXRvIGlkZW50aWZpZXIgPSBjcmVhdGVDYW5vbmljYWxV
VUlEU3RyaW5nKCk7CiAgICAgYXV0byBhdHRhY2htZW50ID0gQVBJOjpBdHRhY2htZW50OjpjcmVh
dGUoaWRlbnRpZmllciwgKl9wYWdlKTsKICAgICBhdHRhY2htZW50LT5zZXRGaWxlV3JhcHBlckFu
ZFVwZGF0ZUNvbnRlbnRUeXBlKGZpbGVXcmFwcGVyLCBjb250ZW50VHlwZSk7Ci0gICAgX3BhZ2Ut
Pmluc2VydEF0dGFjaG1lbnQoYXR0YWNobWVudC5jb3B5UmVmKCksIFtjYXB0dXJlZEhhbmRsZXIg
PSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoV2ViS2l0OjpDYWxsYmFja0Jhc2U6
OkVycm9yIGVycm9yKSB7CisgICAgX3BhZ2UtPmluc2VydEF0dGFjaG1lbnQoYXR0YWNobWVudC5j
b3B5UmVmKCksIFtjYXB0dXJlZEhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRs
ZXIpXSB7CiAgICAgICAgIGlmIChjYXB0dXJlZEhhbmRsZXIpCi0gICAgICAgICAgICBjYXB0dXJl
ZEhhbmRsZXIoZXJyb3IgPT0gV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKTsKKyAg
ICAgICAgICAgIGNhcHR1cmVkSGFuZGxlcih0cnVlKTsKICAgICB9KTsKICNpZiBIQVZFKFFVSUNL
TE9PS19USFVNQk5BSUxJTkcpCiAgICAgX3BhZ2UtPnJlcXVlc3RUaHVtYm5haWxXaXRoRmlsZVdy
YXBwZXIoZmlsZVdyYXBwZXIsIGlkZW50aWZpZXIpOwpAQCAtMjUzMSwyNSArMjUzMSwxNSBAQCBz
dGF0aWMgaW5saW5lIE9wdGlvblNldDxXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmU+IGxheW91dE1p
bGVzdG9uZXMoX1dLUmVuZGVyaW5nUAogCiAtICh2b2lkKV9nZXRDb250ZW50c0FzU3RyaW5nV2l0
aENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1N0cmluZyAqLCBOU0Vycm9yICopKWNvbXBs
ZXRpb25IYW5kbGVyCiB7Ci0gICAgYXV0byBoYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRp
b25IYW5kbGVyKTsKLQotICAgIF9wYWdlLT5nZXRDb250ZW50c0FzU3RyaW5nKFdlYktpdDo6Q29u
dGVudEFzU3RyaW5nSW5jbHVkZXNDaGlsZEZyYW1lczo6Tm8sIFtoYW5kbGVyXShTdHJpbmcgc3Ry
aW5nLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKLSAgICAgICAgaWYgKGVy
cm9yICE9IFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSkgewotICAgICAgICAgICAg
Ly8gRklYTUU6IFBpcGUgYSBwcm9wZXIgZXJyb3IgaW4gZnJvbSB0aGUgV2ViUGFnZVByb3h5Lgot
ICAgICAgICAgICAgaGFuZGxlcihuaWwsIFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9y
RG9tYWluIGNvZGU6c3RhdGljX2Nhc3Q8aW50PihlcnJvcikgdXNlckluZm86bmlsXSk7Ci0gICAg
ICAgIH0gZWxzZQotICAgICAgICAgICAgaGFuZGxlcihzdHJpbmcsIG5pbCk7CisgICAgX3BhZ2Ut
PmdldENvbnRlbnRzQXNTdHJpbmcoV2ViS2l0OjpDb250ZW50QXNTdHJpbmdJbmNsdWRlc0NoaWxk
RnJhbWVzOjpObywgW2hhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShT
dHJpbmcgc3RyaW5nKSB7CisgICAgICAgIGhhbmRsZXIoc3RyaW5nLCBuaWwpOwogICAgIH0pOwog
fQogCiAtICh2b2lkKV9nZXRDb250ZW50c09mQWxsRnJhbWVzQXNTdHJpbmdXaXRoQ29tcGxldGlv
bkhhbmRsZXI6KHZvaWQgKF4pKE5TU3RyaW5nICopKWNvbXBsZXRpb25IYW5kbGVyCiB7Ci0gICAg
YXV0byBoYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICBfcGFn
ZS0+Z2V0Q29udGVudHNBc1N0cmluZyhXZWJLaXQ6OkNvbnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hp
bGRGcmFtZXM6OlllcywgW2hhbmRsZXJdKFN0cmluZyBzdHJpbmcsIFdlYktpdDo6Q2FsbGJhY2tC
YXNlOjpFcnJvciBlcnJvcikgewotICAgICAgICBpZiAoZXJyb3IgIT0gV2ViS2l0OjpDYWxsYmFj
a0Jhc2U6OkVycm9yOjpOb25lKQotICAgICAgICAgICAgaGFuZGxlcihuaWwpOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICBoYW5kbGVyKHN0cmluZyk7CisgICAgX3BhZ2UtPmdldENvbnRlbnRz
QXNTdHJpbmcoV2ViS2l0OjpDb250ZW50QXNTdHJpbmdJbmNsdWRlc0NoaWxkRnJhbWVzOjpZZXMs
IFtoYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oU3RyaW5nIHN0cmlu
ZykgeworICAgICAgICBoYW5kbGVyKHN0cmluZyk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdHRhY2htZW50Lm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F0dGFjaG1lbnQubW0KaW5kZXggMDBk
OTY0ZmNjMTcwN2RlNjVmNTVjNDlhNTA4YjVjNGU2M2IwM2M1My4uNWU4YjhiYmJiZGZiYTY0MDdm
OWZmMzdmYmE4MmYyNjhkNDlmMmIxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS0F0dGFjaG1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS0F0dGFjaG1lbnQubW0KQEAgLTMyLDYgKzMyLDcgQEAKICNpbXBvcnQg
PFdlYkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TaGFyZWRCdWZm
ZXIuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgorI2ltcG9ydCA8d3RmL0NvbXBsZXRpb25I
YW5kbGVyLmg+CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCA8TW9iaWxlQ29y
ZVNlcnZpY2VzL01vYmlsZUNvcmVTZXJ2aWNlcy5oPgpAQCAtMTM5LDE0ICsxNDAsOSBAQCBzdGF0
aWMgY29uc3QgTlNJbnRlZ2VyIEludmFsaWRBdHRhY2htZW50RXJyb3JDb2RlID0gMjsKICAgICAv
LyBmcm9tIHRoZSBTUEkgY2xpZW50LCB0aGUgY29ycmVzcG9uZGluZyBmaWxlIHBhdGggb2YgdGhl
IGRhdGEgaXMgdW5rbm93biwgaWYgaXQgZXZlbiBleGlzdHMgYXQgYWxsLgogICAgIF9hdHRhY2ht
ZW50LT5zZXRGaWxlUGF0aCh7IH0pOwogICAgIF9hdHRhY2htZW50LT5zZXRGaWxlV3JhcHBlckFu
ZFVwZGF0ZUNvbnRlbnRUeXBlKGZpbGVXcmFwcGVyLCBjb250ZW50VHlwZSk7Ci0gICAgX2F0dGFj
aG1lbnQtPnVwZGF0ZUF0dHJpYnV0ZXMoW2NhcHR1cmVkQmxvY2sgPSBtYWtlQmxvY2tQdHIoY29t
cGxldGlvbkhhbmRsZXIpXSAoYXV0byBlcnJvcikgewotICAgICAgICBpZiAoIWNhcHR1cmVkQmxv
Y2spCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKGVycm9yID09IFdlYktpdDo6
Q2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSkKKyAgICBfYXR0YWNobWVudC0+dXBkYXRlQXR0cmli
dXRlcyhbY2FwdHVyZWRCbG9jayA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIHsK
KyAgICAgICAgaWYgKGNhcHR1cmVkQmxvY2spCiAgICAgICAgICAgICBjYXB0dXJlZEJsb2NrKG5p
bCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNhcHR1cmVkQmxvY2soW05TRXJyb3IgZXJy
b3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpVbnNwZWNpZmllZEF0dGFjaG1lbnRFcnJv
ckNvZGUgdXNlckluZm86bmlsXSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KaW5kZXggNTBlMjI1NTE4NWIxNDE1MTQ4NGU1ZDAy
N2FlYzQyYjhlY2IzNDg4NS4uMWJmOTA4NGM1M2ZlZDVlYjYzMTk2ODQ2NjdiM2FiODI3NGI3Yjhk
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAg
LTMxNjIsOSArMzE2Miw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldFVzZXJJbnRlcmZhY2VJdGVt
U3RhdGUoTlNTdHJpbmcgKmNvbW1hbmROYW1lLCBib29sIGVuYWJsZWQsCiB2b2lkIFdlYlZpZXdJ
bXBsOjpzdGFydFNwZWFraW5nKCkKIHsKICAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQ
cm9jZXNzUHJpdmlsZWdlOjpDYW5Db21tdW5pY2F0ZVdpdGhXaW5kb3dTZXJ2ZXIpKTsKLSAgICBt
X3BhZ2UtPmdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhbXShjb25zdCBTdHJpbmcmIHN0
cmluZywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7Ci0gICAgICAgIGlmIChl
cnJvciAhPSBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpCi0gICAgICAgICAgICBy
ZXR1cm47CisgICAgbV9wYWdlLT5nZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcoW10oY29u
c3QgU3RyaW5nJiBzdHJpbmcpIHsKICAgICAgICAgaWYgKCFzdHJpbmcpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dlbmVyaWNDYWxs
YmFjay5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmgKaW5kZXgg
YzM2NTgxMWQwYTYyZmQ4NDJlOTQ0ODkwMGVkYjZhMmI0ZmU0NzgxOS4uMDM1NDE5ZDAyMTk0MzRl
NTcwZmQ3YmQ1M2MwZTk0MGVmYmRlMTFkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2Vu
ZXJpY0NhbGxiYWNrLmgKQEAgLTE0NiwxNCArMTQ2LDYgQEAgcHJpdmF0ZToKICNlbmRpZgogfTsK
IAotdGVtcGxhdGU8dHlwZW5hbWUgQVBJUmV0dXJuVmFsdWVUeXBlLCB0eXBlbmFtZSBJbnRlcm5h
bFJldHVyblZhbHVlVHlwZSA9IHR5cGVuYW1lIEFQSVR5cGVJbmZvPEFQSVJldHVyblZhbHVlVHlw
ZT46OkltcGxUeXBlKj4KLXN0YXRpYyB0eXBlbmFtZSBHZW5lcmljQ2FsbGJhY2s8SW50ZXJuYWxS
ZXR1cm5WYWx1ZVR5cGU+OjpDYWxsYmFja0Z1bmN0aW9uIHRvR2VuZXJpY0NhbGxiYWNrRnVuY3Rp
b24odm9pZCogY29udGV4dCwgdm9pZCAoKmNhbGxiYWNrKShBUElSZXR1cm5WYWx1ZVR5cGUsIFdL
RXJyb3JSZWYsIHZvaWQqKSkKLXsKLSAgICByZXR1cm4gW2NvbnRleHQsIGNhbGxiYWNrXShJbnRl
cm5hbFJldHVyblZhbHVlVHlwZSByZXR1cm5WYWx1ZSwgQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJv
cikgewotICAgICAgICBjYWxsYmFjayh0b0FQSShyZXR1cm5WYWx1ZSksIGVycm9yICE9IENhbGxi
YWNrQmFzZTo6RXJyb3I6Ok5vbmUgPyB0b0FQSShBUEk6OkVycm9yOjpjcmVhdGUoKS5wdHIoKSkg
OiAwLCBjb250ZXh0KTsKLSAgICB9OwotfQotCiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazw+IFZv
aWRDYWxsYmFjazsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDY5ODcyNzdiYjFiZDljMGJkMjg1YWNiYzM3OWU3MjFl
ZDU2N2Y2MjIuLjI3OGQ4OTVhNWM4N2Y3NjJlNzhlOTBmZWM2NzcwOTU0YTZlNjZhZGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMjAxNiwxMCArMjAxNiwx
MiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlzcGF0Y2hBY3Rpdml0eVN0YXRlQ2hhbmdlKCkKIAog
ICAgIGF1dG8gYWN0aXZpdHlTdGF0ZUNoYW5nZUlEID0gbV9hY3Rpdml0eVN0YXRlQ2hhbmdlV2Fu
dHNTeW5jaHJvbm91c1JlcGx5ID8gdGFrZU5leHRBY3Rpdml0eVN0YXRlQ2hhbmdlSUQoKSA6IHN0
YXRpY19jYXN0PEFjdGl2aXR5U3RhdGVDaGFuZ2VJRD4oQWN0aXZpdHlTdGF0ZUNoYW5nZUFzeW5j
aHJvbm91cyk7CiAKLSAgICBpZiAoY2hhbmdlZCB8fCBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQgIT0g
QWN0aXZpdHlTdGF0ZUNoYW5nZUFzeW5jaHJvbm91cyB8fCAhbV9uZXh0QWN0aXZpdHlTdGF0ZUNo
YW5nZUNhbGxiYWNrcy5pc0VtcHR5KCkpCi0gICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlNldEFjdGl2aXR5U3RhdGUobV9hY3Rpdml0eVN0YXRlLCBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQs
IG1fbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja3MpKTsKLQotICAgIG1fbmV4dEFjdGl2
aXR5U3RhdGVDaGFuZ2VDYWxsYmFja3MuY2xlYXIoKTsKKyAgICBpZiAoY2hhbmdlZCB8fCBhY3Rp
dml0eVN0YXRlQ2hhbmdlSUQgIT0gQWN0aXZpdHlTdGF0ZUNoYW5nZUFzeW5jaHJvbm91cyB8fCAh
bV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrcy5pc0VtcHR5KCkpIHsKKyAgICAgICAg
c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRBY3Rpdml0eVN0YXRlKG1f
YWN0aXZpdHlTdGF0ZSwgYWN0aXZpdHlTdGF0ZUNoYW5nZUlEKSwgW2NhbGxiYWNrcyA9IHN0ZDo6
ZXhjaGFuZ2UobV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrcywgeyB9KV0gKCkgbXV0
YWJsZSB7CisgICAgICAgICAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogY2FsbGJhY2tzKQorICAg
ICAgICAgICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAgIH0pOworICAgIH0KIAogICAgIC8vIFRo
aXMgbXVzdCBoYXBwZW4gYWZ0ZXIgdGhlIFNldEFjdGl2aXR5U3RhdGUgbWVzc2FnZSBpcyBzZW50
LCB0byBlbnN1cmUgdGhlIHBhZ2UgdmlzaWJpbGl0eSBldmVudCBjYW4gZmlyZS4KICAgICB1cGRh
dGVUaHJvdHRsZVN0YXRlKCk7CkBAIC00MDc3LDM5ICs0MDc5LDE5IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpydW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQoUnVuSmF2YVNjcmlwdFBhcmFt
ZXRlcnMmJiBwCiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpnZXRSZW5kZXJUcmVl
RXh0ZXJuYWxSZXByZXNlbnRhdGlvbihXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYs
IENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQ
cm94eTo6Z2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjYWxsYmFjaykKIHsKLSAgICBpZiAoIWhhc1J1bm5p
bmdQcm9jZXNzKCkpIHsKLSAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihTdHJpbmcoKSwgQ2FsbGJh
Y2tCYXNlOjpFcnJvcjo6VW5rbm93bik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0g
ICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5j
dGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdl
UHJveHk6OmdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uIl9zKSk7Ci0gICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24o
Y2FsbGJhY2tJRCkpOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6
R2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oKSwgV1RGTW92ZShjYWxsYmFjaykp
OwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U291cmNlRm9yRnJhbWUoV2ViRnJhbWVQcm94
eSogZnJhbWUsIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNl
OjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5OjpnZXRTb3Vy
Y2VGb3JGcmFtZShXZWJGcmFtZVByb3h5KiBmcmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBTdHJpbmcmKT4mJiBjYWxsYmFjaykKIHsKLSAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNz
KCkpIHsKLSAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihTdHJpbmcoKSwgQ2FsbGJhY2tCYXNlOjpF
cnJvcjo6VW5rbm93bik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgYXV0byBj
YWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1f
cHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6Omdl
dFNvdXJjZUZvckZyYW1lIl9zKSk7Ci0gICAgbV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJ
RHMuYWRkKGNhbGxiYWNrSUQpOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNvdXJj
ZUZvckZyYW1lKGZyYW1lLT5mcmFtZUlEKCksIGNhbGxiYWNrSUQpKTsKKyAgICBzZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNvdXJjZUZvckZyYW1lKGZyYW1lLT5mcmFt
ZUlEKCkpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpnZXRD
b250ZW50c0FzU3RyaW5nKENvbnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXMgaW5jbHVk
ZXNDaGlsZEZyYW1lcywgV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYsIENhbGxiYWNr
QmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0
Q29udGVudHNBc1N0cmluZyhDb250ZW50QXNTdHJpbmdJbmNsdWRlc0NoaWxkRnJhbWVzIGluY2x1
ZGVzQ2hpbGRGcmFtZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYg
Y2FsbGJhY2spCiB7Ci0gICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7Ci0gICAgICAgIGNh
bGxiYWNrRnVuY3Rpb24oU3RyaW5nKCksIENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24pOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFj
a3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OmdldENvbnRlbnRzQXNTdHJpbmciX3Mp
KTsKLSAgICBtX2xvYWREZXBlbmRlbnRTdHJpbmdDYWxsYmFja0lEcy5hZGQoY2FsbGJhY2tJRCk7
Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0Q29udGVudHNBc1N0cmluZyhpbmNsdWRl
c0NoaWxkRnJhbWVzLCBjYWxsYmFja0lEKSk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpXZWJQYWdlOjpHZXRDb250ZW50c0FzU3RyaW5nKGluY2x1ZGVzQ2hpbGRGcmFtZXMpLCBX
VEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTQxMjksMjgg
KzQxMTEsMTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldEFsbEZyYW1lcyhDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKEZyYW1lVHJlZU5vZGVEYXRhJiYpPiYmIGMKICAgICBzZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6OldlYlBhZ2U6OkdldEFsbEZyYW1lcygpLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpnZXRCeXRlY29kZVByb2ZpbGUoV1RG
OjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBj
YWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6OmdldEJ5dGVjb2RlUHJvZmlsZShD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNhbGxiYWNrKQogewotICAg
IGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgewotICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKFN0
cmluZygpLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICAKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92
ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0
aXZpdHkoIldlYlBhZ2VQcm94eTo6Z2V0Qnl0ZWNvZGVQcm9maWxlIl9zKSk7Ci0gICAgbV9sb2Fk
RGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHMuYWRkKGNhbGxiYWNrSUQpOwotICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkdldEJ5dGVjb2RlUHJvZmlsZShjYWxsYmFja0lEKSk7CisgICAgc2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRCeXRlY29kZVByb2ZpbGUoKSwg
V1RGTW92ZShjYWxsYmFjaykpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2FtcGxpbmdQ
cm9maWxlck91dHB1dChXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNr
QmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0
U2FtcGxpbmdQcm9maWxlck91dHB1dChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmlu
ZyYpPiYmIGNhbGxiYWNrKQogewotICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgewotICAg
ICAgICBjYWxsYmFja0Z1bmN0aW9uKFN0cmluZygpLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtu
b3duKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBhdXRvIGNhbGxiYWNrSUQg
PSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50
aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6Z2V0U2FtcGxpbmdQ
cm9maWxlck91dHB1dCJfcykpOwotICAgIG1fbG9hZERlcGVuZGVudFN0cmluZ0NhbGxiYWNrSURz
LmFkZChjYWxsYmFja0lEKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTYW1wbGlu
Z1Byb2ZpbGVyT3V0cHV0KGNhbGxiYWNrSUQpKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVz
c2FnZXM6OldlYlBhZ2U6OkdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQoKSwgV1RGTW92ZShjYWxs
YmFjaykpOwogfQogCiBzdGF0aWMgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIGRhdGEpPiB0b0FQSURhdGFDYWxsYmFjayhDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKEFQSTo6RGF0YSopPiYmIGNhbGxiYWNrKQpAQCAtNDE2NywxNSArNDEzNSw5IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpnZXRDb250ZW50c0FzTUhUTUxEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoQVBJOjpEYXRhKik+JiYKIH0KICNlbmRpZgogCi12b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2Vs
ZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5n
JiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFn
ZVByb3h5OjpnZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjYWxsYmFjaykKIHsKLSAgICBpZiAoIWhhc1J1bm5pbmdQ
cm9jZXNzKCkpIHsKLSAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihTdHJpbmcoKSwgQ2FsbGJhY2tC
YXNlOjpFcnJvcjo6VW5rbm93bik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAg
YXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlv
biksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJv
eHk6OmdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyJfcykpOwotICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhjYWxsYmFja0lEKSk7
CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTZWxlY3Rpb25P
ckNvbnRlbnRzQXNTdHJpbmcoKSwgY2FsbGJhY2spOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6
RGF0YSopPiYmIGNhbGxiYWNrKQpAQCAtNDU4MCwxNSArNDU0Miw2IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQ
cm94eT4mJiBwCiAgICAgICAgIG1fcHJvdmlzaW9uYWxQYWdlID0gbnVsbHB0cjsKIH0KIAotdm9p
ZCBXZWJQYWdlUHJveHk6OmNsZWFyTG9hZERlcGVuZGVudENhbGxiYWNrcygpCi17Ci0gICAgSGFz
aFNldDxDYWxsYmFja0lEPiBsb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHMgPSBXVEZNb3Zl
KG1fbG9hZERlcGVuZGVudFN0cmluZ0NhbGxiYWNrSURzKTsKLSAgICBmb3IgKGF1dG8mIGNhbGxi
YWNrSUQgOiBsb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHMpIHsKLSAgICAgICAgaWYgKGF1
dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPFN0cmluZ0NhbGxiYWNrPihjYWxsYmFja0lE
KSkKLSAgICAgICAgICAgIGNhbGxiYWNrLT5pbnZhbGlkYXRlKCk7Ci0gICAgfQotfQotCiAjaWYg
RU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKIHN0YXRpYyBPcHRpb25TZXQ8Q3Jvc3NT
aXRlTmF2aWdhdGlvbkRhdGFUcmFuc2Zlcjo6RmxhZz4gY2hlY2tJZk5hdmlnYXRpb25Db250YWlu
c0RhdGFUcmFuc2Zlcihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEgcmVxdWVzdGVyT3JpZ2luLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIGN1cnJlbnRSZXF1ZXN0KQogewpAQCAtNDY2Myw4ICs0NjE2
LDYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZShGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYKICAgICBwYWdlQ2xpZW50KCkucmVzZXRTZWN1
cmVJbnB1dFN0YXRlKCk7CiAjZW5kaWYKIAotICAgIGNsZWFyTG9hZERlcGVuZGVudENhbGxiYWNr
cygpOwotCiAgICAgZnJhbWUtPmRpZENvbW1pdExvYWQobWltZVR5cGUsIHdlYkNlcnRpZmljYXRl
SW5mbywgY29udGFpbnNQbHVnaW5Eb2N1bWVudCk7CiAKICAgICBpZiAoZnJhbWUtPmlzTWFpbkZy
YW1lKCkpIHsKQEAgLTQ4MjcsOCArNDc3OCw2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWls
TG9hZEZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJiYKICAg
ICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkgJiYgbmF2aWdhdGlvbklEKQogICAgICAgICBuYXZp
Z2F0aW9uID0gbmF2aWdhdGlvblN0YXRlKCkubmF2aWdhdGlvbihuYXZpZ2F0aW9uSUQpOwogCi0g
ICAgY2xlYXJMb2FkRGVwZW5kZW50Q2FsbGJhY2tzKCk7Ci0KICAgICBhdXRvIHRyYW5zYWN0aW9u
ID0gbV9wYWdlTG9hZFN0YXRlLnRyYW5zYWN0aW9uKCk7CiAKICAgICBib29sIGlzTWFpbkZyYW1l
ID0gZnJhbWUtPmlzTWFpbkZyYW1lKCk7CkBAIC03MTE0LDQ1ICs3MDYzLDYgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZFJlY2VpdmVFdmVudCh1aW50MzJfdCBvcGFxdWVUeXBlLCBib29sIGhhbmRs
ZWQpCiAgICAgfQogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6dm9pZENhbGxiYWNrKENhbGxiYWNr
SUQgY2FsbGJhY2tJRCkKLXsKLSAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3MudGFrZTxW
b2lkQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOwotICAgIGlmICghY2FsbGJhY2spIHsKLSAgICAgICAg
Ly8gRklYTUU6IExvZyBlcnJvciBvciBhc3NlcnQuCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrKCk7Ci19Ci0KLXZvaWQgV2ViUGFnZVByb3h5
OjpzdHJpbmdDYWxsYmFjayhjb25zdCBTdHJpbmcmIHJlc3VsdFN0cmluZywgQ2FsbGJhY2tJRCBj
YWxsYmFja0lEKQotewotICAgIGF1dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPFN0cmlu
Z0NhbGxiYWNrPihjYWxsYmFja0lEKTsKLSAgICBpZiAoIWNhbGxiYWNrKSB7Ci0gICAgICAgIC8v
IEZJWE1FOiBMb2cgZXJyb3Igb3IgYXNzZXJ0LgotICAgICAgICAvLyB0aGlzIGNhbiB2YWxpZGx5
IGhhcHBlbiBpZiBhIGxvYWQgaW52YWxpZGF0ZWQgdGhlIGNhbGxiYWNrLCB0aG91Z2gKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIG1fbG9hZERlcGVuZGVudFN0cmluZ0NhbGxiYWNrSURz
LnJlbW92ZShjYWxsYmFja0lEKTsKLQotICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRo
UmV0dXJuVmFsdWUocmVzdWx0U3RyaW5nLmltcGwoKSk7Ci19Ci0KLXZvaWQgV2ViUGFnZVByb3h5
OjppbnZhbGlkYXRlU3RyaW5nQ2FsbGJhY2soQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQotewotICAg
IGF1dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPFN0cmluZ0NhbGxiYWNrPihjYWxsYmFj
a0lEKTsKLSAgICBpZiAoIWNhbGxiYWNrKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBMb2cgZXJyb3Ig
b3IgYXNzZXJ0LgotICAgICAgICAvLyB0aGlzIGNhbiB2YWxpZGx5IGhhcHBlbiBpZiBhIGxvYWQg
aW52YWxpZGF0ZWQgdGhlIGNhbGxiYWNrLCB0aG91Z2gKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIG1fbG9hZERlcGVuZGVudFN0cmluZ0NhbGxiYWNrSURzLnJlbW92ZShjYWxsYmFja0lE
KTsKLQotICAgIGNhbGxiYWNrLT5pbnZhbGlkYXRlKCk7Ci19Ci0KIHZvaWQgV2ViUGFnZVByb3h5
OjplZGl0b3JTdGF0ZUNoYW5nZWQoY29uc3QgRWRpdG9yU3RhdGUmIGVkaXRvclN0YXRlKQogewog
ICAgIHVwZGF0ZUVkaXRvclN0YXRlKGVkaXRvclN0YXRlKTsKQEAgLTc1NTYsOSArNzQ2Niw2IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpyZXNldFN0YXRlKFJlc2V0U3RhdGVSZWFzb24gcmVzZXRTdGF0
ZVJlYXNvbikKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgbV9jYWxsYmFja3MuaW52YWxp
ZGF0ZShlcnJvcik7Ci0gICAgbV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHMuY2xlYXIo
KTsKLQogICAgIGZvciAoYXV0byYgZWRpdENvbW1hbmQgOiBzdGQ6OmV4Y2hhbmdlKG1fZWRpdENv
bW1hbmRTZXQsIHsgfSkpCiAgICAgICAgIGVkaXRDb21tYW5kLT5pbnZhbGlkYXRlKCk7CiAKQEAg
LTkyMzMsMTggKzkxNDAsMTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEVuZE1hZ25pZmljYXRp
b25HZXN0dXJlKCkKIAogI2VuZGlmCiAKLXZvaWQgV2ViUGFnZVByb3h5OjppbnN0YWxsQWN0aXZp
dHlTdGF0ZUNoYW5nZUNvbXBsZXRpb25IYW5kbGVyKEZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFnZVByb3h5OjppbnN0YWxsQWN0aXZpdHlTdGF0ZUNoYW5n
ZUNvbXBsZXRpb25IYW5kbGVyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gdm9p
ZENhbGxiYWNrID0gVm9pZENhbGxiYWNrOjpjcmVhdGUoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildIChhdXRvKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKCk7Ci0gICAgfSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHko
IldlYlBhZ2VQcm94eTo6aW5zdGFsbEFjdGl2aXR5U3RhdGVDaGFuZ2VDb21wbGV0aW9uSGFuZGxl
ciJfcykpOwotICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKHZv
aWRDYWxsYmFjaykpOwotICAgIG1fbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja3MuYXBw
ZW5kKGNhbGxiYWNrSUQpOworICAgIG1fbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja3Mu
YXBwZW5kKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OmltYWdlT3JNZWRpYURvY3VtZW50U2l6ZUNoYW5nZWQoY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYgbmV3U2l6ZSkKQEAgLTk2MTgsMzIgKzk1MjEsMjAgQEAgUmVmUHRyPEFQSTo6QXR0YWNobWVu
dD4gV2ViUGFnZVByb3h5OjphdHRhY2htZW50Rm9ySWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlk
ZW4KICAgICByZXR1cm4gbV9hdHRhY2htZW50SWRlbnRpZmllclRvQXR0YWNobWVudE1hcC5nZXQo
aWRlbnRpZmllcik7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjppbnNlcnRBdHRhY2htZW50KFJl
ZjxBUEk6OkF0dGFjaG1lbnQ+JiYgYXR0YWNobWVudCwgRnVuY3Rpb248dm9pZChDYWxsYmFja0Jh
c2U6OkVycm9yKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViUGFnZVByb3h5OjppbnNlcnRBdHRhY2ht
ZW50KFJlZjxBUEk6OkF0dGFjaG1lbnQ+JiYgYXR0YWNobWVudCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNhbGxiYWNrKQogewotICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgewot
ICAgICAgICBjYWxsYmFjayhDYWxsYmFja0Jhc2U6OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVk
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIGF1dG8gYXR0YWNobWVudElkZW50aWZp
ZXIgPSBhdHRhY2htZW50LT5pZGVudGlmaWVyKCk7Ci0gICAgYXV0byBjYWxsYmFja0lEID0gbV9j
YWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5OjppbnNlcnRBdHRhY2htZW50Il9zKSk7Ci0g
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SW5zZXJ0QXR0YWNobWVudChhdHRhY2htZW50SWRl
bnRpZmllciwgYXR0YWNobWVudC0+ZmlsZVNpemVGb3JEaXNwbGF5KCksIGF0dGFjaG1lbnQtPmZp
bGVOYW1lKCksIGF0dGFjaG1lbnQtPmNvbnRlbnRUeXBlKCksIGNhbGxiYWNrSUQpKTsKKyAgICBz
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6Okluc2VydEF0dGFjaG1lbnQoYXR0
YWNobWVudElkZW50aWZpZXIsIGF0dGFjaG1lbnQtPmZpbGVTaXplRm9yRGlzcGxheSgpLCBhdHRh
Y2htZW50LT5maWxlTmFtZSgpLCBhdHRhY2htZW50LT5jb250ZW50VHlwZSgpKSwgV1RGTW92ZShj
YWxsYmFjaykpOwogICAgIG1fYXR0YWNobWVudElkZW50aWZpZXJUb0F0dGFjaG1lbnRNYXAuc2V0
KGF0dGFjaG1lbnRJZGVudGlmaWVyLCBXVEZNb3ZlKGF0dGFjaG1lbnQpKTsKIH0KIAotdm9pZCBX
ZWJQYWdlUHJveHk6OnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IEFQSTo6QXR0YWNo
bWVudCYgYXR0YWNobWVudCwgRnVuY3Rpb248dm9pZChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBj
YWxsYmFjaykKK3ZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhj
b25zdCBBUEk6OkF0dGFjaG1lbnQmIGF0dGFjaG1lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjYWxsYmFjaykKIHsKLSAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKLSAgICAg
ICAgY2FsbGJhY2soQ2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJbnZhbGlkYXRlZCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2UgZGF0YVJlZmVyZW5jZTsKICAgICBpZiAoYXV0byBkYXRhID0gYXR0YWNobWVudC5lbmNsb3Np
bmdJbWFnZURhdGEoKSkKICAgICAgICAgZGF0YVJlZmVyZW5jZSA9IHsgKmRhdGEgfTsKIAotICAg
IGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSwgbV9w
cm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6dXBk
YXRlQXR0YWNobWVudEF0dHJpYnV0ZXMiX3MpKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpVcGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhhdHRhY2htZW50LmlkZW50aWZpZXIoKSwgYXR0
YWNobWVudC5maWxlU2l6ZUZvckRpc3BsYXkoKSwgYXR0YWNobWVudC5jb250ZW50VHlwZSgpLCBh
dHRhY2htZW50LmZpbGVOYW1lKCksIFdURk1vdmUoZGF0YVJlZmVyZW5jZSksIGNhbGxiYWNrSUQp
KTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZUF0dGFj
aG1lbnRBdHRyaWJ1dGVzKGF0dGFjaG1lbnQuaWRlbnRpZmllcigpLCBhdHRhY2htZW50LmZpbGVT
aXplRm9yRGlzcGxheSgpLCBhdHRhY2htZW50LmNvbnRlbnRUeXBlKCksIGF0dGFjaG1lbnQuZmls
ZU5hbWUoKSwgV1RGTW92ZShkYXRhUmVmZXJlbmNlKSksIFdURk1vdmUoY2FsbGJhY2spKTsKIH0K
IAogI2lmIEhBVkUoUVVJQ0tMT09LX1RIVU1CTkFJTElORykKQEAgLTk3OTksNyArOTY5MCw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpkaWRJbnNlcnRBdHRhY2htZW50V2l0aElkZW50aWZpZXIoY29u
c3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjCiAgICAgcGFnZUNsaWVudCgpLmRpZEluc2VydEF0dGFj
aG1lbnQoYXR0YWNobWVudC5nZXQoKSwgc291cmNlKTsKIAogICAgIGlmICghYXR0YWNobWVudC0+
aXNFbXB0eSgpICYmIGhhc0VuY2xvc2luZ0ltYWdlKQotICAgICAgICB1cGRhdGVBdHRhY2htZW50
QXR0cmlidXRlcyhhdHRhY2htZW50LmdldCgpLCBbXSAoYXV0bykgeyB9KTsKKyAgICAgICAgdXBk
YXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoYXR0YWNobWVudC5nZXQoKSwgW10geyB9KTsKIH0KIAog
dm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlbW92ZUF0dGFjaG1lbnRXaXRoSWRlbnRpZmllcihjb25z
dCBTdHJpbmcmIGlkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CmluZGV4IDZhNDIxNDNlOTA3NjBkMjgwMGI2MGZkZGQ0ZTc3OGM2NTVkMGExY2QuLjkyZTBmZjdh
ZmQxYjZhZDU2YWQ3NTFkYjNmZGI3NTZjNzE2NzhkZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCkBAIC0zODAsOCArMzgwLDYgQEAgZW51bSBjbGFzcyBQcm9jZXNzU3dh
cFJlcXVlc3RlZEJ5Q2xpZW50IDogYm9vbDsKIGVudW0gY2xhc3MgVW5kb09yUmVkbyA6IGJvb2w7
CiBlbnVtIGNsYXNzIFdlYkNvbnRlbnRNb2RlIDogdWludDhfdDsKIAotdHlwZWRlZiBHZW5lcmlj
Q2FsbGJhY2s8Y29uc3QgU3RyaW5nJj4gU3RyaW5nQ2FsbGJhY2s7Ci0KICNpZiBIQVZFKFZJU0lC
SUxJVFlfUFJPUEFHQVRJT05fVklFVykKIHVzaW5nIExheWVySG9zdGluZ0NvbnRleHRJRCA9IHVp
bnQzMl90OwogI2VuZGlmCkBAIC03NjQsNyArNzYyLDcgQEAgcHVibGljOgogICAgIHZvaWQgdXBk
YXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50LCBib29s
IGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQsIFJlc3BlY3RTZWxlY3Rpb25BbmNob3Is
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgdXBkYXRlU2VsZWN0
aW9uV2l0aEV4dGVudFBvaW50QW5kQm91bmRhcnkoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQsIFdl
YkNvcmU6OlRleHRHcmFudWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVt
ZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIHJlcXVlc3RB
dXRvY29ycmVjdGlvbkRhdGEoY29uc3QgU3RyaW5nJiB0ZXh0Rm9yQXV0b2NvcnJlY3Rpb24sIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQXV0b2NvcnJlY3Rpb25EYXRhKT4mJik7Ci0gICAgdm9p
ZCBhcHBseUF1dG9jb3JyZWN0aW9uKGNvbnN0IFN0cmluZyYgY29ycmVjdGlvbiwgY29uc3QgU3Ry
aW5nJiBvcmlnaW5hbFRleHQsIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2Fs
bGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAgIHZvaWQgYXBwbHlBdXRvY29ycmVjdGlvbihjb25z
dCBTdHJpbmcmIGNvcnJlY3Rpb24sIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxUZXh0LCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKICAgICBib29sIGFwcGx5QXV0b2Nv
cnJlY3Rpb24oY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFs
VGV4dCk7CiAgICAgdm9pZCByZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0KCk7CiAgICAgdm9p
ZCBoYW5kbGVBdXRvY29ycmVjdGlvbkNvbnRleHQoY29uc3QgV2ViQXV0b2NvcnJlY3Rpb25Db250
ZXh0Jik7CkBAIC0xMTE0LDIyICsxMTEyLDIyIEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZEZhaWxU
b0ZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBkaWRGaW5kU3RyaW5nTWF0Y2hl
cyhjb25zdCBTdHJpbmcmLCBjb25zdCBWZWN0b3I8VmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+PiYg
bWF0Y2hSZWN0cywgaW50MzJfdCBmaXJzdEluZGV4QWZ0ZXJTZWxlY3Rpb24pOwogCi0gICAgdm9p
ZCBnZXRDb250ZW50c0FzU3RyaW5nKENvbnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXMs
IFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4m
Jik7CisgICAgdm9pZCBnZXRDb250ZW50c0FzU3RyaW5nKENvbnRlbnRBc1N0cmluZ0luY2x1ZGVz
Q2hpbGRGcmFtZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOwog
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgZ2V0Q29udGVudHNBc0F0dHJpYnV0ZWRTdHJp
bmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpBdHRyaWJ1dGVkU3RyaW5n
Jik+JiYpOwogI2VuZGlmCi0gICAgdm9pZCBnZXRCeXRlY29kZVByb2ZpbGUoV1RGOjpGdW5jdGlv
bjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7Ci0gICAgdm9p
ZCBnZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3Ry
aW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAgIHZvaWQgZ2V0Qnl0ZWNvZGVQcm9m
aWxlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOworICAgIHZvaWQg
Z2V0U2FtcGxpbmdQcm9maWxlck91dHB1dChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0
cmluZyYpPiYmKTsKIAogI2lmIEVOQUJMRShNSFRNTCkKICAgICB2b2lkIGdldENvbnRlbnRzQXNN
SFRNTERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBUEk6OkRhdGEqKT4mJik7CiAjZW5kaWYK
ICAgICB2b2lkIGdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKFdlYkZyYW1lUHJveHkqLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6RGF0YSopPiYmKTsKICAgICB2b2lkIGdldFJlc291cmNl
RGF0YUZyb21GcmFtZShXZWJGcmFtZVByb3h5JiwgQVBJOjpVUkwqLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKEFQSTo6RGF0YSopPiYmKTsKLSAgICB2b2lkIGdldFJlbmRlclRyZWVFeHRlcm5hbFJl
cHJlc2VudGF0aW9uKFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tC
YXNlOjpFcnJvcik+JiYpOwotICAgIHZvaWQgZ2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5n
KFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+
JiYpOworICAgIHZvaWQgZ2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJik7CisgICAgdm9pZCBnZXRTZWxlY3Rp
b25PckNvbnRlbnRzQXNTdHJpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcm
KT4mJik7CiAgICAgdm9pZCBnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoQVBJOjpEYXRhKik+JiYpOwotICAgIHZvaWQgZ2V0U291cmNlRm9yRnJhbWUo
V2ViRnJhbWVQcm94eSosIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJh
Y2tCYXNlOjpFcnJvcik+JiYpOworICAgIHZvaWQgZ2V0U291cmNlRm9yRnJhbWUoV2ViRnJhbWVQ
cm94eSosIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOwogICAgIHZv
aWQgZ2V0V2ViQXJjaGl2ZU9mRnJhbWUoV2ViRnJhbWVQcm94eSosIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoQVBJOjpEYXRhKik+JiYpOwogICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1l
KFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoRXhwZWN0ZWQ8UmVmUHRyPEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgV2ViQ29yZTo6
RXhjZXB0aW9uRGV0YWlscz4mJik+JiYpOwogICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluRnJhbWVJ
blNjcmlwdFdvcmxkKFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIE9wdGlvbmFs
PFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIEFQSTo6Q29udGVudFdvcmxkJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChFeHBlY3RlZDxSZWZQdHI8QVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+
LCBXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiYmKT4mJik7CkBAIC0xNDc3LDcgKzE0NzUsNyBA
QCBwdWJsaWM6CiAKICAgICBib29sIHNjcm9sbGluZ1VwZGF0ZXNEaXNhYmxlZEZvclRlc3Rpbmco
KTsKIAotICAgIHZvaWQgaW5zdGFsbEFjdGl2aXR5U3RhdGVDaGFuZ2VDb21wbGV0aW9uSGFuZGxl
cihGdW5jdGlvbjx2b2lkKCk+JiYpOworICAgIHZvaWQgaW5zdGFsbEFjdGl2aXR5U3RhdGVDaGFu
Z2VDb21wbGV0aW9uSGFuZGxlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAjaWYg
VVNFKFVOSUZJRURfVEVYVF9DSEVDS0lORykKICAgICB2b2lkIGNoZWNrVGV4dE9mUGFyYWdyYXBo
KGNvbnN0IFN0cmluZyYgdGV4dCwgT3B0aW9uU2V0PFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGU+
IGNoZWNraW5nVHlwZXMsIGludDMyX3QgaW5zZXJ0aW9uUG9pbnQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoVmVjdG9yPFdlYkNvcmU6OlRleHRDaGVja2luZ1Jlc3VsdD4mJik+JiYpOwpAQCAtMTYx
NSw4ICsxNjEzLDggQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkK
ICAgICBSZWZQdHI8QVBJOjpBdHRhY2htZW50PiBhdHRhY2htZW50Rm9ySWRlbnRpZmllcihjb25z
dCBTdHJpbmcmIGlkZW50aWZpZXIpIGNvbnN0OwotICAgIHZvaWQgaW5zZXJ0QXR0YWNobWVudChS
ZWY8QVBJOjpBdHRhY2htZW50PiYmLCBGdW5jdGlvbjx2b2lkKENhbGxiYWNrQmFzZTo6RXJyb3Ip
PiYmKTsKLSAgICB2b2lkIHVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IEFQSTo6QXR0
YWNobWVudCYsIEZ1bmN0aW9uPHZvaWQoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAgIHZv
aWQgaW5zZXJ0QXR0YWNobWVudChSZWY8QVBJOjpBdHRhY2htZW50PiYmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgdXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoY29u
c3QgQVBJOjpBdHRhY2htZW50JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2
b2lkIHNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YUZvcklkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6U2VyaWFsaXpl
ZEF0dGFjaG1lbnREYXRhPiYmKT4mJik7CiAgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVu
dGlmaWVyKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgZGlkSW52YWxpZGF0ZURhdGFGb3JBdHRh
Y2htZW50KEFQSTo6QXR0YWNobWVudCYpOwpAQCAtMjE1MywxMCArMjE1MSw2IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBkaXNjYXJkUXVldWVkTW91c2VFdmVudHMoKTsKIAogICAgIHZvaWQgZGlkUmVj
ZWl2ZUV2ZW50KHVpbnQzMl90IG9wYXF1ZVR5cGUsIGJvb2wgaGFuZGxlZCk7Ci0KLSAgICB2b2lk
IHZvaWRDYWxsYmFjayhDYWxsYmFja0lEKTsKLSAgICB2b2lkIHN0cmluZ0NhbGxiYWNrKGNvbnN0
IFN0cmluZyYsIENhbGxiYWNrSUQpOwotICAgIHZvaWQgaW52YWxpZGF0ZVN0cmluZ0NhbGxiYWNr
KENhbGxiYWNrSUQpOwogI2lmIFBMQVRGT1JNKE1BQykKICAgICB2b2lkIGRpZFVwZGF0ZVJlbmRl
cmluZ0FmdGVyQ29tbWl0dGluZ0xvYWQoKTsKICAgICB2b2lkIGZvbnRBdFNlbGVjdGlvbkNhbGxi
YWNrKGNvbnN0IEZvbnRJbmZvJiwgZG91YmxlLCBib29sLCBDYWxsYmFja0lEKTsKQEAgLTIyMzMs
OCArMjIyNyw2IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPE5TQXJyYXk+IG1fZGF0YURldGVj
dGlvblJlc3VsdHM7CiAjZW5kaWYKIAotICAgIHZvaWQgY2xlYXJMb2FkRGVwZW5kZW50Q2FsbGJh
Y2tzKCk7Ci0KICAgICB2b2lkIHBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJv
bGxlckFjdGlvbiwgV2ViQ29yZTo6RHJhZ0RhdGEmLCBjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdl
TmFtZSwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZUFycmF5JiYpOwogCiAgICAgdm9pZCB1cGRhdGVCYWNraW5nU3RvcmVEaXNjYXJkYWJsZVN0YXRl
KCk7CkBAIC0yNDg0LDkgKzI0NzYsNiBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eT4gbV9jcmVkZW50aWFsc01lc3NlbmdlcjsK
ICNlbmRpZgogCi0gICAgQ2FsbGJhY2tNYXAgbV9jYWxsYmFja3M7Ci0gICAgSGFzaFNldDxDYWxs
YmFja0lEPiBtX2xvYWREZXBlbmRlbnRTdHJpbmdDYWxsYmFja0lEczsKLQogICAgIEhhc2hTZXQ8
V2ViRWRpdENvbW1hbmRQcm94eSo+IG1fZWRpdENvbW1hbmRTZXQ7CiAKICNpZiBQTEFURk9STShD
T0NPQSkKQEAgLTI3NjQsNyArMjc1Myw3IEBAIHByaXZhdGU6CiAKICAgICBPcHRpb25TZXQ8V2Vi
Q29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZz4gbV9wb3RlbnRpYWxseUNoYW5nZWRBY3Rpdml0eVN0
YXRlRmxhZ3M7CiAgICAgYm9vbCBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VXYW50c1N5bmNocm9ub3Vz
UmVwbHkgeyBmYWxzZSB9OwotICAgIFZlY3RvcjxDYWxsYmFja0lEPiBtX25leHRBY3Rpdml0eVN0
YXRlQ2hhbmdlQ2FsbGJhY2tzOworICAgIFZlY3RvcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
PiBtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tzOwogCiAgICAgV2ViQ29yZTo6TWVk
aWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIG1fbWVkaWFTdGF0ZSB7IFdlYkNvcmU6Ok1lZGlh
UHJvZHVjZXI6OklzTm90UGxheWluZyB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggNjQ5ZjhlMTJhODgwNzM1ODg2ZDUzZTkw
YTQxMGRkODcwZDcxYWRlZS4uZTljZmRmZTNjNDMzMzE1OWIwMmMzNDliYTg3Y2EwMzliNTk3NDg2
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdl
cy5pbgpAQCAtMTYyLDEwICsxNjIsNiBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAg
ICMgRm9ybXMgbWVzc2FnZXMKICAgICBXaWxsU3VibWl0Rm9ybShXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIHNvdXJjZUZyYW1lSUQsIFZl
Y3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiB0ZXh0RmllbGRWYWx1ZXMsIHVpbnQ2NF90
IGxpc3RlbmVySUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAKLSAgICAjIENhbGxiYWNr
IG1lc3NhZ2VzCi0gICAgVm9pZENhbGxiYWNrKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lE
KQotICAgIFN0cmluZ0NhbGxiYWNrKFN0cmluZyByZXN1bHRTdHJpbmcsIFdlYktpdDo6Q2FsbGJh
Y2tJRCBjYWxsYmFja0lEKQotICAgIEludmFsaWRhdGVTdHJpbmdDYWxsYmFjayhXZWJLaXQ6OkNh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIEludGVy
cHJldEtleUV2ZW50KHN0cnVjdCBXZWJLaXQ6OkVkaXRvclN0YXRlIHN0YXRlLCBib29sIGlzQ2hh
ckV2ZW50KSAtPiAoYm9vbCBoYW5kbGVkKSBTeW5jaHJvbm91cwogICAgIERpZFJlY2VpdmVQb3Np
dGlvbkluZm9ybWF0aW9uKHN0cnVjdCBXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBv
c2l0aW9uIGluZm9ybWF0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggOWQ1NjFmNWQzYmZjNzEwMTg0
ODFiZTJjYmNjMTM4NDY0YTc4MmNkYi4uNDU2ZDdiY2FiYTBhZWNiNTBkMDk5YmNhYjRjNzJjMmU5
MmViMTE5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC0zMjE3LDEwICszMjE3LDcgQEAgRk9SX0VBQ0hf
UFJJVkFURV9XS0NPTlRFTlRWSUVXX0FDVElPTihGT1JXQVJEX0FDVElPTl9UT19XS1dFQlZJRVcp
CiAtICh2b2lkKV9zaGFyZUZvcldlYlZpZXc6KGlkKXNlbmRlcgogewogICAgIFJldGFpblB0cjxX
S0NvbnRlbnRWaWV3PiB2aWV3ID0gc2VsZjsKLSAgICBfcGFnZS0+Z2V0U2VsZWN0aW9uT3JDb250
ZW50c0FzU3RyaW5nKFt2aWV3XShjb25zdCBTdHJpbmcmIHN0cmluZywgV2ViS2l0OjpDYWxsYmFj
a0Jhc2U6OkVycm9yIGVycm9yKSB7Ci0gICAgICAgIGlmIChlcnJvciAhPSBXZWJLaXQ6OkNhbGxi
YWNrQmFzZTo6RXJyb3I6Ok5vbmUpCi0gICAgICAgICAgICByZXR1cm47Ci0KKyAgICBfcGFnZS0+
Z2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKFt2aWV3XShjb25zdCBTdHJpbmcmIHN0cmlu
ZykgewogICAgICAgICBpZiAoIXZpZXctPl90ZXh0SW50ZXJhY3Rpb25Bc3Npc3RhbnQgfHwgIXN0
cmluZyB8fCB2aWV3LT5fcGFnZS0+ZWRpdG9yU3RhdGUoKS5pc01pc3NpbmdQb3N0TGF5b3V0RGF0
YSkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMzc5Niw5ICszNzkzLDcgQEAgV0VCQ09SRV9D
T01NQU5EX0ZPUl9XRUJWSUVXKHBhc3RlQW5kTWF0Y2hTdHlsZSk7CiAjZW5kaWYKIAogICAgIFJl
dGFpblB0cjxXS0NvbnRlbnRWaWV3PiB2aWV3ID0gc2VsZjsKLSAgICBfcGFnZS0+Z2V0U2VsZWN0
aW9uT3JDb250ZW50c0FzU3RyaW5nKFt2aWV3XShjb25zdCBTdHJpbmcmIHN0cmluZywgV2ViS2l0
OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7Ci0gICAgICAgIGlmIChlcnJvciAhPSBXZWJL
aXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpCi0gICAgICAgICAgICByZXR1cm47CisgICAg
X3BhZ2UtPmdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhbdmlld10oY29uc3QgU3RyaW5n
JiBzdHJpbmcpIHsKICAgICAgICAgaWYgKCFzdHJpbmcpCiAgICAgICAgICAgICByZXR1cm47CiAK
QEAgLTM4MTAsOSArMzgwNSw3IEBAIFdFQkNPUkVfQ09NTUFORF9GT1JfV0VCVklFVyhwYXN0ZUFu
ZE1hdGNoU3R5bGUpOwogewogICAgIFJldGFpblB0cjxXS0NvbnRlbnRWaWV3PiB2aWV3ID0gc2Vs
ZjsKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gX3dlYlZpZXcuZ2V0KCk7Ci0g
ICAgX3BhZ2UtPmdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhbdmlldywgd2ViVmlld10o
Y29uc3QgU3RyaW5nJiBzdHJpbmcsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikg
ewotICAgICAgICBpZiAoZXJyb3IgIT0gV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25l
KQotICAgICAgICAgICAgcmV0dXJuOworICAgIF9wYWdlLT5nZXRTZWxlY3Rpb25PckNvbnRlbnRz
QXNTdHJpbmcoW3ZpZXcsIHdlYlZpZXddKGNvbnN0IFN0cmluZyYgc3RyaW5nKSB7CiAgICAgICAg
IFt3ZWJWaWV3IF9hY2Nlc3NpYmlsaXR5RGlkR2V0U3BlYWtTZWxlY3Rpb25Db250ZW50OnN0cmlu
Z107CiAgICAgICAgIGlmIChbdmlldyByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGFjY2Vz
c2liaWxpdHlTcGVha1NlbGVjdGlvblNldENvbnRlbnQ6KV0pCiAgICAgICAgICAgICBbdmlldyBh
Y2Nlc3NpYmlsaXR5U3BlYWtTZWxlY3Rpb25TZXRDb250ZW50OnN0cmluZ107CkBAIC00Mzc4LDcg
KzQzNzEsNyBAQCBzdGF0aWMgdm9pZCBzZWxlY3Rpb25DaGFuZ2VkV2l0aFRvdWNoKFdLQ29udGVu
dFZpZXcgKnZpZXcsIGNvbnN0IFdlYkNvcmU6OkludFBvaQogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgX3BhZ2UtPmFwcGx5QXV0b2NvcnJlY3Rpb24oY29ycmVjdGlvbiwgaW5wdXQsIFt2
aWV3ID0gcmV0YWluUHRyKHNlbGYpLCBjb21wbGV0aW9uID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRp
b25IYW5kbGVyKV0oYXV0byYgc3RyaW5nLCBhdXRvIGVycm9yKSB7CisgICAgX3BhZ2UtPmFwcGx5
QXV0b2NvcnJlY3Rpb24oY29ycmVjdGlvbiwgaW5wdXQsIFt2aWV3ID0gcmV0YWluUHRyKHNlbGYp
LCBjb21wbGV0aW9uID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byYgc3Ry
aW5nKSB7CiAgICAgICAgIGlmIChjb21wbGV0aW9uKQogICAgICAgICAgICAgY29tcGxldGlvbigh
c3RyaW5nLmlzTnVsbCgpID8gW1dLQXV0b2NvcnJlY3Rpb25SZWN0cyBhdXRvY29ycmVjdGlvblJl
Y3RzV2l0aEZpcnN0Q0dSZWN0OnZpZXctPl9hdXRvY29ycmVjdGlvbkRhdGEudGV4dEZpcnN0UmVj
dCBsYXN0Q0dSZWN0OnZpZXctPl9hdXRvY29ycmVjdGlvbkRhdGEudGV4dExhc3RSZWN0XSA6IG5p
bCk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2Vi
UGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94
eUlPUy5tbQppbmRleCBlMTY5YTcyZmM5YjdlNjA2ODBiNGRiNDE5YmU5ZmQ0Mzg1ZjZhMWEyLi42
ODAxMThjOGZkZDg3YjIzNDdkY2E1YzcwN2U5NzA4MjNhYzkwYzQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KQEAgLTQzMCwxNSArNDMwLDkg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RBdXRvY29ycmVjdGlvbkRhdGEoY29uc3QgU3Ry
aW5nJiB0ZXh0Rm9yQXV0b2NvcnJlY3Rpb24KICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlJlcXVlc3RBdXRvY29ycmVjdGlvbkRhdGEodGV4dEZvckF1dG9jb3JyZWN0
aW9uKSwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6YXBwbHlB
dXRvY29ycmVjdGlvbihjb25zdCBTdHJpbmcmIGNvcnJlY3Rpb24sIGNvbnN0IFN0cmluZyYgb3Jp
Z2luYWxUZXh0LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFz
ZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6YXBwbHlB
dXRvY29ycmVjdGlvbihjb25zdCBTdHJpbmcmIGNvcnJlY3Rpb24sIGNvbnN0IFN0cmluZyYgb3Jp
Z2luYWxUZXh0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNhbGxi
YWNrKQogewotICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgewotICAgICAgICBjYWxsYmFj
a0Z1bmN0aW9uKFN0cmluZygpLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1
dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tn
cm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5OjphcHBseUF1dG9jb3JyZWN0aW9uIl9zKSk7Ci0g
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBcHBseUF1dG9jb3JyZWN0aW9u
KGNvcnJlY3Rpb24sIG9yaWdpbmFsVGV4dCwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKKyAg
ICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OkFwcGx5QXV0b2NvcnJlY3Rp
b24oY29ycmVjdGlvbiwgb3JpZ2luYWxUZXh0KSwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCiBi
b29sIFdlYlBhZ2VQcm94eTo6YXBwbHlBdXRvY29ycmVjdGlvbihjb25zdCBTdHJpbmcmIGNvcnJl
Y3Rpb24sIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxUZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9XS1RleHRGaW5kZXJDbGllbnQubW0KaW5kZXggNmE3ZTYyMDdlZDU4Y2I4
M2U4NmNjYjMzM2IxODZjOGY4MTNhNGFjMy4uMjk0M2ViNmFlYTBkODljNGJjYjE1OTk5M2ZkMmFk
Mzc2NzExZjYxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLVGV4
dEZpbmRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tUZXh0
RmluZGVyQ2xpZW50Lm1tCkBAIC0yNDMsNyArMjQzLDcgQEAgcHJpdmF0ZToKIHsKICAgICB2b2lk
ICheY29waWVkQ29tcGxldGlvbkhhbmRsZXIpKE5TU3RyaW5nICopID0gQmxvY2tfY29weShjb21w
bGV0aW9uSGFuZGxlcik7CiAKLSAgICBfcGFnZS0+Z2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3Ry
aW5nKFtjb3BpZWRDb21wbGV0aW9uSGFuZGxlcl0gKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBXZWJL
aXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpIHsKKyAgICBfcGFnZS0+Z2V0U2VsZWN0aW9uT3JDb250
ZW50c0FzU3RyaW5nKFtjb3BpZWRDb21wbGV0aW9uSGFuZGxlcl0gKGNvbnN0IFN0cmluZyYgc3Ry
aW5nKSB7CiAgICAgICAgIGNvcGllZENvbXBsZXRpb25IYW5kbGVyKHN0cmluZyk7CiAgICAgICAg
IEJsb2NrX3JlbGVhc2UoY29waWVkQ29tcGxldGlvbkhhbmRsZXIpOwogICAgIH0pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaAppbmRleCBi
NDg2YjI0NjM2NzYxZWQ4MDQ5NjZhOWUxOGY1OGNiZmQ1NjI4Y2Y1Li5hYTE2ODM0YzIxNjIzYWY5
OWFiYWQ0ZWRhMWFkNDdlMTFhOGNmMDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaApAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvTm90aWZpY2F0aW9uQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RpZmlj
YXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3Jp
Z2luSGFzaC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVm9pZENhbGxiYWNrLmg+CiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuaAppbmRleCAwMGNjMGEwOGQ5
MjYwNGZkZGZiNWNhNjJmNmI4ODU5NWMzMWFiMGQyLi44MWYxZGU0NjFmMWVjM2FiNjBjNjUxOWZl
YmRmMDI4NzdmNmM4OTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5oCkBAIC0zMyw3
ICszMyw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBOb3RpZmljYXRpb25QZXJtaXNz
aW9uQ2FsbGJhY2s7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgVm9pZENh
bGxiYWNrOwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGlu
YXRlZEdyYXBoaWNzLmNwcAppbmRleCBmYTE3ZGI2NzdmZmRmMGQ0ZDhjMmZmMjU0ZGE1MjhlY2I3
Yjk2YjkzLi4zZTk2N2E2ZjVjNmNkMzc1MTczZjUxMzQ2MDdjYzVhZWU0Y2E4ODViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L0RyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5h
dGVkR3JhcGhpY3MuY3BwCkBAIC0zODUsNyArMzg1LDcgQEAgUmVmUHRyPERpc3BsYXlSZWZyZXNo
TW9uaXRvcj4gRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzOjpjcmVhdGVEaXNwbGF5UmVm
cmUKICAgICByZXR1cm4gbV9sYXllclRyZWVIb3N0LT5jcmVhdGVEaXNwbGF5UmVmcmVzaE1vbml0
b3IoZGlzcGxheUlEKTsKIH0KIAotdm9pZCBEcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3M6
OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+IGNo
YW5nZWQsIEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCwgY29uc3QgVmVjdG9yPENhbGxiYWNrSUQ+JikK
K3ZvaWQgRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzOjphY3Rpdml0eVN0YXRlRGlkQ2hh
bmdlKE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnPiBjaGFuZ2VkLCBBY3Rpdml0eVN0YXRl
Q2hhbmdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBpZiAoY2hhbmdlZCAmIEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSkgewogICAgICAg
ICBpZiAobV93ZWJQYWdlLmlzVmlzaWJsZSgpKQpAQCAtMzkzLDYgKzM5Myw3IEBAIHZvaWQgRHJh
d2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzOjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKE9wdGlv
blNldDxBY3Rpdml0eVN0CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHN1c3BlbmRQYWludGlu
ZygpOwogICAgIH0KKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCiB2b2lkIERyYXdpbmdB
cmVhQ29vcmRpbmF0ZWRHcmFwaGljczo6YXR0YWNoVmlld092ZXJsYXlHcmFwaGljc0xheWVyKEdy
YXBoaWNzTGF5ZXIqIHZpZXdPdmVybGF5Um9vdExheWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNv
b3JkaW5hdGVkR3JhcGhpY3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmgKaW5kZXgg
YmI0MDk0YjUzMDY5ZmFiM2Y5MmE0ZDAzZjViNWNlYTIyY2ExYzM3Mi4uZjk2YzRiYjU3NjM0ZmY0
MDEwZWRlYmJhODUxZDY3ZWY5NGMwZjRiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVk
R3JhcGhpY3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5oCkBAIC03Nyw3ICs3
Nyw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgUmVmUHRyPFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNo
TW9uaXRvcj4gY3JlYXRlRGlzcGxheVJlZnJlc2hNb25pdG9yKFdlYkNvcmU6OlBsYXRmb3JtRGlz
cGxheUlEKSBvdmVycmlkZTsKIAotICAgIHZvaWQgYWN0aXZpdHlTdGF0ZURpZENoYW5nZShPcHRp
b25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZz4sIEFjdGl2aXR5U3RhdGVDaGFuZ2VJ
RCwgY29uc3QgVmVjdG9yPENhbGxiYWNrSUQ+JiAvKiBjYWxsYmFja0lEcyAqLykgb3ZlcnJpZGU7
CisgICAgdm9pZCBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKE9wdGlvblNldDxXZWJDb3JlOjpBY3Rp
dml0eVN0YXRlOjpGbGFnPiwgQWN0aXZpdHlTdGF0ZUNoYW5nZUlELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgYXR0YWNoVmlld092ZXJsYXlHcmFwaGlj
c0xheWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKSBvdmVycmlkZTsKIAogICAgIC8vIElQQyBt
ZXNzYWdlIGhhbmRsZXJzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Ry
YXdpbmdBcmVhLmgKaW5kZXggMTZmZDNjMzY0ZmM3ZWI5ZGI5ZjMxODU5ZjY3MmY0MjE1ZjU1YjVh
Yi4uNjRkNTMyOWI4NjYwOGJjMDJkNDY3Y2Q0M2VjZGVmNzJiNTRhMjcxZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCkBAIC0xMjEsNyArMTIx
LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoQWZ0ZXJFbnN1cmluZ1Vw
ZGF0ZWRTY3JvbGxQb3NpdGlvbihXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYpOwogCi0gICAgdmly
dHVhbCB2b2lkIGFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoT3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2
aXR5U3RhdGU6OkZsYWc+LCBBY3Rpdml0eVN0YXRlQ2hhbmdlSUQsIGNvbnN0IFZlY3RvcjxDYWxs
YmFja0lEPiYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKE9w
dGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPiwgQWN0aXZpdHlTdGF0ZUNoYW5n
ZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29t
cGxldGlvbkhhbmRsZXIoKTsgfTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJIb3N0aW5nTW9k
ZShMYXllckhvc3RpbmdNb2RlKSB7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBtYXJrTGF5ZXJzVm9s
YXRpbGVJbW1lZGlhdGVseUlmUG9zc2libGUoKSB7IHJldHVybiB0cnVlOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oCmluZGV4IDI3Zjkz
NmYzMTkwNGUxNTgzNDY0NTQxZjVkMDVhOTEwMzBjMjEwNzUuLjYzMWYyYTYxMThiODBkMGY3MTk1
ZTYwNzMyMmYxYTEwMmIyODhjYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYS5oCkBAIC0xMDYsNyArMTA2LDcgQEAgcHJpdmF0ZToKIAog
ICAgIHZvaWQgbWFpbkZyYW1lQ29udGVudFNpemVDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6OkludFNp
emUmKSBvdmVycmlkZTsKIAotICAgIHZvaWQgYWN0aXZpdHlTdGF0ZURpZENoYW5nZShPcHRpb25T
ZXQ8V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZz4gY2hhbmdlZCwgQWN0aXZpdHlTdGF0ZUNo
YW5nZUlELCBjb25zdCBWZWN0b3I8Q2FsbGJhY2tJRD4mIGNhbGxiYWNrSURzKSBvdmVycmlkZTsK
KyAgICB2b2lkIGFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoT3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2
aXR5U3RhdGU6OkZsYWc+IGNoYW5nZWQsIEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKIAogICAgIGJvb2wgYWRkTWlsZXN0b25lc1Rv
RGlzcGF0Y2goT3B0aW9uU2V0PFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZT4pIG92ZXJyaWRlOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXll
clRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEu
bW0KaW5kZXggZDgyMDU1ZmYyMDQ1NGQ1NWY5NThiNGM1MDU3N2Q5ODg3OWI2NjBhMC4uNWFiZTk5
ZjlmYjRlYmE3NWE5NWExZDFjODRmODFiY2EyNzBjZGE3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQpAQCAtNDgzLDcgKzQ4Myw3
IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OkJhY2tpbmdTdG9yZUZsdXNoZXI6
OmZsdXNoKCkKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmRNZXNzYWdlKFdURk1vdmUobV9jb21taXRF
bmNvZGVyKSwgeyB9KTsKIH0KIAotdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6YWN0
aXZpdHlTdGF0ZURpZENoYW5nZShPcHRpb25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6Rmxh
Zz4sIEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQsIGNvbnN0IFZl
Y3RvcjxDYWxsYmFja0lEPiYgY2FsbGJhY2tJRHMpCit2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhOjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0
eVN0YXRlOjpGbGFnPiwgQWN0aXZpdHlTdGF0ZUNoYW5nZUlEIGFjdGl2aXR5U3RhdGVDaGFuZ2VJ
RCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrKQogewogICAgIC8vIEZJWE1F
OiBTaG91bGQgd2Ugc3VzcGVuZCBwYWludGluZyB3aGlsZSBub3QgdmlzaWJsZSwgbGlrZSBUaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYT8gUHJvYmFibHkuCiAKQEAgLTQ5NSw4ICs0OTUsNyBA
QCB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdl
KE9wdGlvblNldDxXZWJDb3JlOjpBY3RpdgogCiAgICAgLy8gRklYTUU6IFdlIG1heSB3YW50IHRv
IG1hdGNoIGJlaGF2aW9yIGluIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhIGJ5IGZpcmlu
ZyB0aGVzZSBjYWxsYmFja3MgYWZ0ZXIgdGhlIG5leHQgY29tcG9zaXRpbmcgZmx1c2gsIHJhdGhl
ciB0aGFuIGltbWVkaWF0ZWx5IGFmdGVyCiAgICAgLy8gaGFuZGxpbmcgYW4gYWN0aXZpdHkgc3Rh
dGUgY2hhbmdlLgotICAgIGZvciAoYXV0byYgY2FsbGJhY2tJRCA6IGNhbGxiYWNrSURzKQotICAg
ICAgICBtX3dlYlBhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpWb2lkQ2FsbGJhY2so
Y2FsbGJhY2tJRCkpOworICAgIGNhbGxiYWNrKCk7CiB9CiAKIHZvaWQgUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWE6OmFkZFRyYW5zYWN0aW9uQ2FsbGJhY2tJRChDYWxsYmFja0lEIGNhbGxiYWNr
SUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4
IDE1OWVmMjBjOTBkNGNlMmFmOWU4MjliNjU5NzM2ZjAzMTFmZmE0ZWUuLjY0MjQxZjI3MDRjMGYy
NmZhNmIyM2JkYzU2M2U1ODJkMWNmNTdjMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC05MjMsNyArOTIzLDcgQEAgdm9pZCBXZWJQYWdlOjpy
ZWluaXRpYWxpemVXZWJQYWdlKFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJz
KQogICAgIHNldFNpemVUb0NvbnRlbnRBdXRvU2l6ZU1heGltdW1TaXplKHBhcmFtZXRlcnMuc2l6
ZVRvQ29udGVudEF1dG9TaXplTWF4aW11bVNpemUpOwogCiAgICAgaWYgKG1fYWN0aXZpdHlTdGF0
ZSAhPSBwYXJhbWV0ZXJzLmFjdGl2aXR5U3RhdGUpCi0gICAgICAgIHNldEFjdGl2aXR5U3RhdGUo
cGFyYW1ldGVycy5hY3Rpdml0eVN0YXRlLCBBY3Rpdml0eVN0YXRlQ2hhbmdlQXN5bmNocm9ub3Vz
LCBWZWN0b3I8Q2FsbGJhY2tJRD4oKSk7CisgICAgICAgIHNldEFjdGl2aXR5U3RhdGUocGFyYW1l
dGVycy5hY3Rpdml0eVN0YXRlLCBBY3Rpdml0eVN0YXRlQ2hhbmdlQXN5bmNocm9ub3VzLCB7IH0p
OwogICAgIGlmIChtX2xheWVySG9zdGluZ01vZGUgIT0gcGFyYW1ldGVycy5sYXllckhvc3RpbmdN
b2RlKQogICAgICAgICBzZXRMYXllckhvc3RpbmdNb2RlKHBhcmFtZXRlcnMubGF5ZXJIb3N0aW5n
TW9kZSk7CiAKQEAgLTMzNjIsNyArMzM2Miw3IEBAIHZvaWQgV2ViUGFnZTo6dmlzaWJpbGl0eURp
ZENoYW5nZSgpCiAgICAgfQogfQogCi12b2lkIFdlYlBhZ2U6OnNldEFjdGl2aXR5U3RhdGUoT3B0
aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+IGFjdGl2aXR5U3RhdGUsIEFjdGl2aXR5U3RhdGVD
aGFuZ2VJRCBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQsIGNvbnN0IFZlY3RvcjxDYWxsYmFja0lEPiYg
Y2FsbGJhY2tJRHMpCit2b2lkIFdlYlBhZ2U6OnNldEFjdGl2aXR5U3RhdGUoT3B0aW9uU2V0PEFj
dGl2aXR5U3RhdGU6OkZsYWc+IGFjdGl2aXR5U3RhdGUsIEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCBh
Y3Rpdml0eVN0YXRlQ2hhbmdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFj
aykKIHsKICAgICBMT0dfV0lUSF9TVFJFQU0oQWN0aXZpdHlTdGF0ZSwgc3RyZWFtIDw8ICJXZWJQ
YWdlICIgPDwgaWRlbnRpZmllcigpLnRvVUludDY0KCkgPDwgIiBzZXRBY3Rpdml0eVN0YXRlIHRv
ICIgPDwgYWN0aXZpdHlTdGF0ZSk7CiAKQEAgLTMzODEsNyArMzM4MSw3IEBAIHZvaWQgV2ViUGFn
ZTo6c2V0QWN0aXZpdHlTdGF0ZShPcHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4gYWN0aXZp
dHlTdGF0ZSwgQWN0CiAgICAgZm9yIChhdXRvKiBwbHVnaW5WaWV3IDogbV9wbHVnaW5WaWV3cykK
ICAgICAgICAgcGx1Z2luVmlldy0+YWN0aXZpdHlTdGF0ZURpZENoYW5nZShjaGFuZ2VkKTsKIAot
ICAgIG1fZHJhd2luZ0FyZWEtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoY2hhbmdlZCwgYWN0aXZp
dHlTdGF0ZUNoYW5nZUlELCBjYWxsYmFja0lEcyk7CisgICAgbV9kcmF3aW5nQXJlYS0+YWN0aXZp
dHlTdGF0ZURpZENoYW5nZShjaGFuZ2VkLCBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQsIFdURk1vdmUo
Y2FsbGJhY2spKTsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYWdlQWN0aXZpdHlTdGF0
ZURpZENoYW5nZShtX2lkZW50aWZpZXIsIGNoYW5nZWQpOwogCiAgICAgaWYgKGNoYW5nZWQgJiBB
Y3Rpdml0eVN0YXRlOjpJc0luV2luZG93KQpAQCAtMzYwOCwxMiArMzYwOCwxMiBAQCB2b2lkIFdl
YlBhZ2U6OnJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZChSdW5KYXZhU2NyaXB0UGFy
YW1ldGVycyYmIHBhcmFtZQogICAgIHJ1bkphdmFTY3JpcHQod2ViRnJhbWUsIFdURk1vdmUocGFy
YW1ldGVycyksIHdvcmxkRGF0YS5maXJzdCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwog
fQogCi12b2lkIFdlYlBhZ2U6OmdldENvbnRlbnRzQXNTdHJpbmcoQ29udGVudEFzU3RyaW5nSW5j
bHVkZXNDaGlsZEZyYW1lcyBpbmNsdWRlQ2hpbGRGcmFtZXMsIENhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKK3ZvaWQgV2ViUGFnZTo6Z2V0Q29udGVudHNBc1N0cmluZyhDb250ZW50QXNTdHJpbmdJbmNs
dWRlc0NoaWxkRnJhbWVzIGluY2x1ZGVDaGlsZEZyYW1lcywgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBTdHJpbmcmKT4mJiBjYWxsYmFjaykKIHsKICAgICBzd2l0Y2ggKGluY2x1ZGVDaGls
ZEZyYW1lcykgewogICAgIGNhc2UgQ29udGVudEFzU3RyaW5nSW5jbHVkZXNDaGlsZEZyYW1lczo6
Tm86IHsKICAgICAgICAgU3RyaW5nIHJlc3VsdFN0cmluZyA9IG1fbWFpbkZyYW1lLT5jb250ZW50
c0FzU3RyaW5nKCk7Ci0gICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U3RyaW5n
Q2FsbGJhY2socmVzdWx0U3RyaW5nLCBjYWxsYmFja0lEKSk7CisgICAgICAgIGNhbGxiYWNrKHJl
c3VsdFN0cmluZyk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIENvbnRlbnRBc1N0
cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXM6OlllczogewpAQCAtMzYyNyw3ICszNjI3LDcgQEAgdm9p
ZCBXZWJQYWdlOjpnZXRDb250ZW50c0FzU3RyaW5nKENvbnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hp
bGRGcmFtZXMgaW5jbHVkZUNoaWwKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U3RyaW5nQ2FsbGJhY2soYnVpbGRlci50b1N0
cmluZygpLCBjYWxsYmFja0lEKSk7CisgICAgICAgIGNhbGxiYWNrKGJ1aWxkZXIudG9TdHJpbmco
KSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICB9CkBAIC0zNjQwLDEwICszNjQwLDkgQEAg
dm9pZCBXZWJQYWdlOjpnZXRDb250ZW50c0FzTUhUTUxEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgSVBDOjpTaGFyZWRCdWYKIH0KICNlbmRpZgogCi12b2lkIFdlYlBhZ2U6OmdldFJl
bmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3Zv
aWQgV2ViUGFnZTo6Z2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjYWxsYmFjaykKIHsKLSAgICBTdHJpbmcg
cmVzdWx0U3RyaW5nID0gcmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oKTsKLSAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlN0cmluZ0NhbGxiYWNrKHJlc3VsdFN0cmluZywg
Y2FsbGJhY2tJRCkpOworICAgIGNhbGxiYWNrKHJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0
aW9uKCkpOwogfQogCiBzdGF0aWMgRnJhbWUqIGZyYW1lV2l0aFNlbGVjdGlvbihQYWdlKiBwYWdl
KQpAQCAtMzY3MiwyMiArMzY3MSwyMiBAQCB2b2lkIFdlYlBhZ2U6OmdldFNlbGVjdGlvbkFzV2Vi
QXJjaGl2ZURhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdAogICAgIGNh
bGxiYWNrKGRhdGFSZWZlcmVuY2UpOwogfQogCi12b2lkIFdlYlBhZ2U6OmdldFNlbGVjdGlvbk9y
Q29udGVudHNBc1N0cmluZyhDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6Omdl
dFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFN0cmluZyYpPiYmIGNhbGxiYWNrKQogewogICAgIFdlYkZyYW1lKiBmb2N1c2VkT3JNYWluRnJh
bWUgPSBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZShtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZv
Y3VzZWRPck1haW5GcmFtZSgpKTsKICAgICBTdHJpbmcgcmVzdWx0U3RyaW5nID0gZm9jdXNlZE9y
TWFpbkZyYW1lLT5zZWxlY3Rpb25Bc1N0cmluZygpOwogICAgIGlmIChyZXN1bHRTdHJpbmcuaXNF
bXB0eSgpKQogICAgICAgICByZXN1bHRTdHJpbmcgPSBmb2N1c2VkT3JNYWluRnJhbWUtPmNvbnRl
bnRzQXNTdHJpbmcoKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlN0cmluZ0Nh
bGxiYWNrKHJlc3VsdFN0cmluZywgY2FsbGJhY2tJRCkpOworICAgIGNhbGxiYWNrKHJlc3VsdFN0
cmluZyk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Z2V0U291cmNlRm9yRnJhbWUoRnJhbWVJZGVudGlm
aWVyIGZyYW1lSUQsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6Z2V0U291
cmNlRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgU3RyaW5nJik+JiYgY2FsbGJhY2spCiB7CiAgICAgU3RyaW5nIHJlc3VsdFN0cmlu
ZzsKICAgICBpZiAoV2ViRnJhbWUqIGZyYW1lID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2Vi
RnJhbWUoZnJhbWVJRCkpCiAgICAgICAgcmVzdWx0U3RyaW5nID0gZnJhbWUtPnNvdXJjZSgpOwog
Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTdHJpbmdDYWxsYmFjayhyZXN1bHRT
dHJpbmcsIGNhbGxiYWNrSUQpKTsKKyAgICBjYWxsYmFjayhyZXN1bHRTdHJpbmcpOwogfQogCiB2
b2lkIFdlYlBhZ2U6OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKEZyYW1lSWRlbnRpZmllciBm
cmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0
YVJlZmVyZW5jZSYpPiYmIGNhbGxiYWNrKQpAQCAtNjQzOCwzMyArNjQzNywyOSBAQCB2b2lkIFdl
YlBhZ2U6OnVwZGF0ZUNhY2hlZERvY3VtZW50TG9hZGVyKFdlYkRvY3VtZW50TG9hZGVyJiBkb2N1
bWVudExvYWRlciwgRnJhbQogICAgIH0KIH0KIAotdm9pZCBXZWJQYWdlOjpnZXRCeXRlY29kZVBy
b2ZpbGUoQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpnZXRCeXRlY29kZVBy
b2ZpbGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjYWxsYmFjaykK
IHsKLSAgICBpZiAoTElLRUxZKCFjb21tb25WTSgpLm1fcGVyQnl0ZWNvZGVQcm9maWxlcikpIHsK
LSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTdHJpbmdDYWxsYmFjayhTdHJp
bmcoKSwgY2FsbGJhY2tJRCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmIChMSUtF
TFkoIWNvbW1vblZNKCkubV9wZXJCeXRlY29kZVByb2ZpbGVyKSkKKyAgICAgICAgcmV0dXJuIGNh
bGxiYWNrKHsgfSk7CiAKICAgICBTdHJpbmcgcmVzdWx0ID0gY29tbW9uVk0oKS5tX3BlckJ5dGVj
b2RlUHJvZmlsZXItPnRvSlNPTigpOwogICAgIEFTU0VSVChyZXN1bHQubGVuZ3RoKCkpOwotICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U3RyaW5nQ2FsbGJhY2socmVzdWx0LCBjYWxs
YmFja0lEKSk7CisgICAgY2FsbGJhY2socmVzdWx0KTsKIH0KIAotdm9pZCBXZWJQYWdlOjpnZXRT
YW1wbGluZ1Byb2ZpbGVyT3V0cHV0KENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFn
ZTo6Z2V0U2FtcGxpbmdQcm9maWxlck91dHB1dChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFN0cmluZyYpPiYmIGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShTQU1QTElOR19QUk9GSUxFUikK
ICAgICBTYW1wbGluZ1Byb2ZpbGVyKiBzYW1wbGluZ1Byb2ZpbGVyID0gY29tbW9uVk0oKS5zYW1w
bGluZ1Byb2ZpbGVyKCk7Ci0gICAgaWYgKCFzYW1wbGluZ1Byb2ZpbGVyKSB7Ci0gICAgICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SW52YWxpZGF0ZVN0cmluZ0NhbGxiYWNrKGNhbGxi
YWNrSUQpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoIXNhbXBsaW5nUHJvZmls
ZXIpCisgICAgICAgIHJldHVybiBjYWxsYmFjayh7IH0pOwogCiAgICAgU3RyaW5nUHJpbnRTdHJl
YW0gcmVzdWx0OwogICAgIHNhbXBsaW5nUHJvZmlsZXItPnJlcG9ydFRvcEZ1bmN0aW9ucyhyZXN1
bHQpOwogICAgIHNhbXBsaW5nUHJvZmlsZXItPnJlcG9ydFRvcEJ5dGVjb2RlcyhyZXN1bHQpOwot
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U3RyaW5nQ2FsbGJhY2socmVzdWx0LnRv
U3RyaW5nKCksIGNhbGxiYWNrSUQpKTsKKyAgICBjYWxsYmFjayhyZXN1bHQudG9TdHJpbmcoKSk7
CiAjZWxzZQotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SW52YWxpZGF0ZVN0cmlu
Z0NhbGxiYWNrKGNhbGxiYWNrSUQpKTsKKyAgICBjYWxsYmFjayh7IH0pOwogI2VuZGlmCiB9CiAK
QEAgLTY5MTAsMjEgKzY5MDUsMjEgQEAgdm9pZCBXZWJQYWdlOjp2b2ljZXNEaWRDaGFuZ2UoKQog
CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKIAotdm9pZCBXZWJQYWdlOjppbnNlcnRB
dHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgT3B0aW9uYWw8dWludDY0X3Q+JiYg
ZmlsZVNpemUsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6aW5zZXJ0QXR0YWNobWVu
dChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIE9wdGlvbmFsPHVpbnQ2NF90PiYmIGZpbGVTaXpl
LCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7CiAgICAgYXV0byYgZnJhbWUgPSBt
X3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAgIGZyYW1l
LmVkaXRvcigpLmluc2VydEF0dGFjaG1lbnQoaWRlbnRpZmllciwgV1RGTW92ZShmaWxlU2l6ZSks
IGZpbGVOYW1lLCBjb250ZW50VHlwZSk7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpWb2lkQ2FsbGJhY2soY2FsbGJhY2tJRCkpOworICAgIGNhbGxiYWNrKCk7CiB9CiAKLXZvaWQg
V2ViUGFnZTo6dXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoY29uc3QgU3RyaW5nJiBpZGVudGlm
aWVyLCBPcHRpb25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBl
bmNsb3NpbmdJbWFnZURhdGEsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6
dXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBPcHRp
b25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29u
c3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBlbmNsb3NpbmdJ
bWFnZURhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFjaykKIHsKICAgICBp
ZiAoYXV0byBhdHRhY2htZW50ID0gYXR0YWNobWVudEVsZW1lbnRXaXRoSWRlbnRpZmllcihpZGVu
dGlmaWVyKSkgewogICAgICAgICBhdHRhY2htZW50LT5kb2N1bWVudCgpLnVwZGF0ZUxheW91dCgp
OwogICAgICAgICBhdHRhY2htZW50LT51cGRhdGVBdHRyaWJ1dGVzKFdURk1vdmUoZmlsZVNpemUp
LCBjb250ZW50VHlwZSwgZmlsZU5hbWUpOwogICAgICAgICBhdHRhY2htZW50LT51cGRhdGVFbmNs
b3NpbmdJbWFnZVdpdGhEYXRhKGNvbnRlbnRUeXBlLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShlbmNs
b3NpbmdJbWFnZURhdGEuZGF0YSgpLCBlbmNsb3NpbmdJbWFnZURhdGEuc2l6ZSgpKSk7CiAgICAg
fQotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Vm9pZENhbGxiYWNrKGNhbGxiYWNr
SUQpKTsKKyAgICBjYWxsYmFjaygpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnVwZGF0ZUF0dGFjaG1l
bnRJY29uKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpI
YW5kbGUmIHFsVGh1bWJuYWlsSGFuZGxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCmluZGV4IGViNTI0ODkwMjgxNTAyNmE0N2JhOWQ4YzUwYzdjOGZjYjQ1ZTE5
ZTAuLmNmMDQyNjJmNzFkOWEwZDE3ODUwMDFhOTA5ZDEwNTY5MWEzNjEzMTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTc1Myw3ICs3NTMsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCByZXBsYWNlRGljdGF0ZWRUZXh0KGNvbnN0IFN0cmluZyYgb2xkVGV4
dCwgY29uc3QgU3RyaW5nJiBuZXdUZXh0KTsKICAgICB2b2lkIHJlcGxhY2VTZWxlY3RlZFRleHQo
Y29uc3QgU3RyaW5nJiBvbGRUZXh0LCBjb25zdCBTdHJpbmcmIG5ld1RleHQpOwogICAgIHZvaWQg
cmVxdWVzdEF1dG9jb3JyZWN0aW9uRGF0YShjb25zdCBTdHJpbmcmIHRleHRGb3JBdXRvY29ycmVj
dGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJBdXRvY29ycmVjdGlvbkRhdGEpPiYmIHJl
cGx5KTsKLSAgICB2b2lkIGFwcGx5QXV0b2NvcnJlY3Rpb24oY29uc3QgU3RyaW5nJiBjb3JyZWN0
aW9uLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVGV4dCwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBh
cHBseUF1dG9jb3JyZWN0aW9uKGNvbnN0IFN0cmluZyYgY29ycmVjdGlvbiwgY29uc3QgU3RyaW5n
JiBvcmlnaW5hbFRleHQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYp
OwogICAgIHZvaWQgc3luY0FwcGx5QXV0b2NvcnJlY3Rpb24oY29uc3QgU3RyaW5nJiBjb3JyZWN0
aW9uLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVGV4dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJik7CiAgICAgdm9pZCByZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0KCk7CiAgICAg
dm9pZCBnZXRQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25S
ZXF1ZXN0JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQ
b3NpdGlvbiYmKT4mJik7CkBAIC0xMTQ5LDggKzExNDksOCBAQCBwdWJsaWM6CiAgICAgUmVmPFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcihXZWJDb3JlOjpGcmFt
ZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlN1YnN0
aXR1dGVEYXRhJik7CiAgICAgdm9pZCB1cGRhdGVDYWNoZWREb2N1bWVudExvYWRlcihXZWJEb2N1
bWVudExvYWRlciYsIFdlYkNvcmU6OkZyYW1lJik7CiAKLSAgICB2b2lkIGdldEJ5dGVjb2RlUHJv
ZmlsZShDYWxsYmFja0lEKTsKLSAgICB2b2lkIGdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQoQ2Fs
bGJhY2tJRCk7CisgICAgdm9pZCBnZXRCeXRlY29kZVByb2ZpbGUoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBTdHJpbmcmKT4mJik7CisgICAgdm9pZCBnZXRTYW1wbGluZ1Byb2ZpbGVyT3V0
cHV0KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOwogICAgIAogI2lm
IEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKSB8fCBFTkFCTEUoVEVMRVBIT05FX05VTUJFUl9ERVRF
Q1RJT04pCiAgICAgdm9pZCBoYW5kbGVUZWxlcGhvbmVOdW1iZXJDbGljayhjb25zdCBTdHJpbmcm
IG51bWJlciwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKQEAgLTEyNTMsOCArMTI1Myw4IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNob3dDb250YWN0UGlja2VyKGNvbnN0IFdlYkNvcmU6OkNvbnRh
Y3RzUmVxdWVzdERhdGEmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFZlY3RvcjxX
ZWJDb3JlOjpDb250YWN0SW5mbz4+JiYpPiYmKTsKICAgICAKICNpZiBFTkFCTEUoQVRUQUNITUVO
VF9FTEVNRU5UKQotICAgIHZvaWQgaW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50
aWZpZXIsIE9wdGlvbmFsPHVpbnQ2NF90PiYmIGZpbGVTaXplLCBjb25zdCBTdHJpbmcmIGZpbGVO
YW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBDYWxsYmFja0lEKTsKLSAgICB2b2lkIHVw
ZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgT3B0aW9u
YWw8dWludDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0
IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZW5jbG9zaW5nSW1h
Z2VEYXRhLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIGluc2VydEF0dGFjaG1lbnQoY29uc3QgU3Ry
aW5nJiBpZGVudGlmaWVyLCBPcHRpb25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3Ry
aW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0
IFN0cmluZyYgaWRlbnRpZmllciwgT3B0aW9uYWw8dWludDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0
IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYgZW5jbG9zaW5nSW1hZ2VEYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwogICAgIHZvaWQgdXBkYXRlQXR0YWNobWVudEljb24oY29uc3QgU3RyaW5nJiBpZGVu
dGlmaWVyLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgcWxUaHVtYm5haWxIYW5kbGUp
OwogI2VuZGlmCiAKQEAgLTE1MTUsNyArMTUxNSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRJ
bml0aWFsRm9jdXMoYm9vbCBmb3J3YXJkLCBib29sIGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBjb25z
dCBXZWJLZXlib2FyZEV2ZW50JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2
b2lkIHVwZGF0ZUlzSW5XaW5kb3coYm9vbCBpc0luaXRpYWxTdGF0ZSA9IGZhbHNlKTsKICAgICB2
b2lkIHZpc2liaWxpdHlEaWRDaGFuZ2UoKTsKLSAgICB2b2lkIHNldEFjdGl2aXR5U3RhdGUoT3B0
aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+LCBBY3Rpdml0eVN0YXRlQ2hhbmdl
SUQsIGNvbnN0IFZlY3RvcjxDYWxsYmFja0lEPiYgY2FsbGJhY2tJRHMpOworICAgIHZvaWQgc2V0
QWN0aXZpdHlTdGF0ZShPcHRpb25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZz4sIEFj
dGl2aXR5U3RhdGVDaGFuZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2
b2lkIHZhbGlkYXRlQ29tbWFuZChjb25zdCBTdHJpbmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wsIGludDMyX3QpPiYmKTsKICAgICB2b2lkIGV4ZWN1dGVFZGl0Q29tbWFuZChjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHNldEVkaXRhYmxlKGJvb2wpOwpAQCAt
MTU4MCw3ICsxNTgwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHZpZXdXaWxsU3RhcnRMaXZlUmVz
aXplKCk7CiAgICAgdm9pZCB2aWV3V2lsbEVuZExpdmVSZXNpemUoKTsKIAotICAgIHZvaWQgZ2V0
Q29udGVudHNBc1N0cmluZyhDb250ZW50QXNTdHJpbmdJbmNsdWRlc0NoaWxkRnJhbWVzLCBDYWxs
YmFja0lEKTsKKyAgICB2b2lkIGdldENvbnRlbnRzQXNTdHJpbmcoQ29udGVudEFzU3RyaW5nSW5j
bHVkZXNDaGlsZEZyYW1lcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4m
Jik7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBnZXRDb250ZW50c0FzQXR0cmlidXRl
ZFN0cmluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkF0dHJpYnV0ZWRT
dHJpbmcmKT4mJik7CiAjZW5kaWYKQEAgLTE1ODksMTAgKzE1ODksMTAgQEAgcHJpdmF0ZToKICNl
bmRpZgogICAgIHZvaWQgZ2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUoV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVy
RGF0YVJlZmVyZW5jZSYpPiYmKTsKICAgICB2b2lkIGdldFJlc291cmNlRGF0YUZyb21GcmFtZShX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VVUkwsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJik+
JiYpOwotICAgIHZvaWQgZ2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oQ2FsbGJh
Y2tJRCk7Ci0gICAgdm9pZCBnZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcoQ2FsbGJhY2tJ
RCk7CisgICAgdm9pZCBnZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKKyAgICB2b2lkIGdldFNlbGVjdGlv
bk9yQ29udGVudHNBc1N0cmluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYp
PiYmKTsKICAgICB2b2lkIGdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKT4mJik7Ci0gICAgdm9pZCBnZXRT
b3VyY2VGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIENhbGxiYWNrSUQpOworICAg
IHZvaWQgZ2V0U291cmNlRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKICAgICB2b2lkIGdldFdlYkFyY2hp
dmVPZkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKT4mJik7CiAgICAgdm9pZCBydW5KYXZhU2NyaXB0
KFdlYkZyYW1lKiwgV2ViQ29yZTo6UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiwgQ29udGVudFdv
cmxkSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiYpPiYmKTsK
ICAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZChXZWJDb3JlOjpSdW5K
YXZhU2NyaXB0UGFyYW1ldGVycyYmLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+
LCBjb25zdCBzdGQ6OnBhaXI8Q29udGVudFdvcmxkSWRlbnRpZmllciwgU3RyaW5nPiYgd29ybGRE
YXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNv
bnN0IE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+Jik+JiYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5k
ZXggOGNmY2M0OWNmNmYzODA3NmFmOWMzMjMxOTNhZDM3NTM0OGE0NDhmMC4uMzRiMTJjNDY0NDRm
ZjE1NWE1ZTE0MzIxOTlhZDhhMTc4OTkxNTgyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0yMiw3ICsyMiw3IEBA
CiAKIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNldEluaXRpYWxG
b2N1cyhib29sIGZvcndhcmQsIGJvb2wgaXNLZXlib2FyZEV2ZW50VmFsaWQsIFdlYktpdDo6V2Vi
S2V5Ym9hcmRFdmVudCBldmVudCkgLT4gKCkgQXN5bmMKLSAgICBTZXRBY3Rpdml0eVN0YXRlKE9w
dGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPiBhY3Rpdml0eVN0YXRlLCBXZWJL
aXQ6OkFjdGl2aXR5U3RhdGVDaGFuZ2VJRCBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQsIFZlY3RvcjxX
ZWJLaXQ6OkNhbGxiYWNrSUQ+IGNhbGxiYWNrSURzKQorICAgIFNldEFjdGl2aXR5U3RhdGUoT3B0
aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+IGFjdGl2aXR5U3RhdGUsIFdlYktp
dDo6QWN0aXZpdHlTdGF0ZUNoYW5nZUlEIGFjdGl2aXR5U3RhdGVDaGFuZ2VJRCkgLT4gKCkgQXN5
bmMKICAgICBTZXRMYXllckhvc3RpbmdNb2RlKGVudW06dWludDhfdCBXZWJLaXQ6OkxheWVySG9z
dGluZ01vZGUgbGF5ZXJIb3N0aW5nTW9kZSkKIAogICAgIFNldEJhY2tncm91bmRDb2xvcihPcHRp
b25hbDxXZWJDb3JlOjpDb2xvcj4gY29sb3IpCkBAIC04Miw3ICs4Miw3IEBAIG1lc3NhZ2VzIC0+
IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIFJlcGxhY2VEaWN0YXRlZFRleHQoU3RyaW5n
IG9sZFRleHQsIFN0cmluZyBuZXdUZXh0KQogICAgIFJlcGxhY2VTZWxlY3RlZFRleHQoU3RyaW5n
IG9sZFRleHQsIFN0cmluZyBuZXdUZXh0KQogICAgIFJlcXVlc3RBdXRvY29ycmVjdGlvbkRhdGEo
U3RyaW5nIHRleHRGb3JBdXRvY29ycmVjdGlvbikgLT4gKHN0cnVjdCBXZWJLaXQ6OldlYkF1dG9j
b3JyZWN0aW9uRGF0YSBkYXRhKSBBc3luYwotICAgIEFwcGx5QXV0b2NvcnJlY3Rpb24oU3RyaW5n
IGNvcnJlY3Rpb24sIFN0cmluZyBvcmlnaW5hbFRleHQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxs
YmFja0lEKQorICAgIEFwcGx5QXV0b2NvcnJlY3Rpb24oU3RyaW5nIGNvcnJlY3Rpb24sIFN0cmlu
ZyBvcmlnaW5hbFRleHQpIC0+IChTdHJpbmcgc3RyaW5nKSBBc3luYwogICAgIFN5bmNBcHBseUF1
dG9jb3JyZWN0aW9uKFN0cmluZyBjb3JyZWN0aW9uLCBTdHJpbmcgb3JpZ2luYWxUZXh0KSAtPiAo
Ym9vbCBhdXRvY29ycmVjdGlvbkFwcGxpZWQpIFN5bmNocm9ub3VzCiAgICAgUmVxdWVzdEF1dG9j
b3JyZWN0aW9uQ29udGV4dCgpCiAgICAgUmVxdWVzdEV2YXNpb25SZWN0c0Fib3ZlU2VsZWN0aW9u
KCkgLT4gKFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Q+IHJlY3RzKSBBc3luYwpAQCAtMjA0LDcg
KzIwNCw3IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdl
YktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAgICAgUmVzdG9yZVNlbGVjdGlvbklu
Rm9jdXNlZEVkaXRhYmxlRWxlbWVudCgpCiAKICAgICAjIENhbGxiYWNrcy4KLSAgICBHZXRDb250
ZW50c0FzU3RyaW5nKGVudW06Ym9vbCBXZWJLaXQ6OkNvbnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hp
bGRGcmFtZXMgaW5DaGlsZEZyYW1lcywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisg
ICAgR2V0Q29udGVudHNBc1N0cmluZyhlbnVtOmJvb2wgV2ViS2l0OjpDb250ZW50QXNTdHJpbmdJ
bmNsdWRlc0NoaWxkRnJhbWVzIGluQ2hpbGRGcmFtZXMpIC0+IChTdHJpbmcgc3RyaW5nKSBBc3lu
YwogICAgIEdldEFsbEZyYW1lcygpIC0+IChzdHJ1Y3QgV2ViS2l0OjpGcmFtZVRyZWVOb2RlRGF0
YSBtYWluRnJhbWUpIEFzeW5jCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgR2V0Q29udGVudHNB
c0F0dHJpYnV0ZWRTdHJpbmcoKSAtPiAoc3RydWN0IFdlYkNvcmU6OkF0dHJpYnV0ZWRTdHJpbmcg
cmVzdWx0KSBBc3luYwpAQCAtMjE0LDEwICsyMTQsMTAgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0
aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5
cGUKICNlbmRpZgogICAgIEdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciBmcmFtZUlEKSAtPiAoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRh
dGFSZWZlcmVuY2UpIEFzeW5jCiAgICAgR2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBTdHJpbmcgcmVzb3VyY2VVUkwpIC0+IChJUEM6OlNo
YXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZSkgQXN5bmMKLSAgICBHZXRSZW5k
ZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKLSAgICBHZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcoV2ViS2l0OjpDYWxsYmFja0lE
IGNhbGxiYWNrSUQpCisgICAgR2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oKSAt
PiAoU3RyaW5nIHN0cmluZykgQXN5bmMKKyAgICBHZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJp
bmcoKSAtPiAoU3RyaW5nIHN0cmluZykgQXN5bmMKICAgICBHZXRTZWxlY3Rpb25Bc1dlYkFyY2hp
dmVEYXRhKCkgLT4gKElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhKSBBc3luYwotICAgIEdldFNvdXJj
ZUZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJLaXQ6OkNhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKKyAgICBHZXRTb3VyY2VGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCkgLT4gKFN0cmluZyBzdHJpbmcpIEFzeW5jCiAgICAgR2V0V2ViQXJj
aGl2ZU9mRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpIC0+IChJUEM6OkRh
dGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZSkgQXN5bmMKIAogICAgIFJ1bkphdmFTY3JpcHRJbkZy
YW1lSW5TY3JpcHRXb3JsZChzdHJ1Y3QgV2ViQ29yZTo6UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMg
cGFyYW1ldGVycywgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBz
dGQ6OnBhaXI8V2ViS2l0OjpDb250ZW50V29ybGRJZGVudGlmaWVyLCBTdHJpbmc+IHdvcmxkKSAt
PiAoSVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VsdERhdGEsIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2Vw
dGlvbkRldGFpbHM+IGRldGFpbHMpIEFzeW5jCkBAIC00ODcsOSArNDg3LDkgQEAgR2VuZXJhdGVT
eW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0
aW5nQ29tbWFuZFR5cGUKICAgICBTZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IodWludDMyX3QgcGlu
bmluZykKICAgICBTZXRTY3JvbGxiYXJPdmVybGF5U3R5bGUoT3B0aW9uYWw8dWludDMyX3Q+IHNj
cm9sbGJhclN0eWxlKQogCi0gICAgR2V0Qnl0ZWNvZGVQcm9maWxlKFdlYktpdDo6Q2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQorICAgIEdldEJ5dGVjb2RlUHJvZmlsZSgpIC0+IChTdHJpbmcgc3RyaW5n
KSBBc3luYwogCi0gICAgR2V0U2FtcGxpbmdQcm9maWxlck91dHB1dChXZWJLaXQ6OkNhbGxiYWNr
SUQgY2FsbGJhY2tJRCkKKyAgICBHZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KCkgLT4gKFN0cmlu
ZyBzdHJpbmcpIEFzeW5jCiAgICAgCiAgICAgVGFrZVNuYXBzaG90KFdlYkNvcmU6OkludFJlY3Qg
c25hcHNob3RSZWN0LCBXZWJDb3JlOjpJbnRTaXplIGJpdG1hcFNpemUsIHVpbnQzMl90IG9wdGlv
bnMpIC0+IChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGltYWdlKSBBc3luYwogI2lm
IFBMQVRGT1JNKE1BQykKQEAgLTU2NSw4ICs1NjUsOCBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRp
bmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlw
ZQogICAgIFNldElzU3VzcGVuZGVkKGJvb2wgc3VzcGVuZGVkKQogCiAjaWYgRU5BQkxFKEFUVEFD
SE1FTlRfRUxFTUVOVCkKLSAgICBJbnNlcnRBdHRhY2htZW50KFN0cmluZyBpZGVudGlmaWVyLCBP
cHRpb25hbDx1aW50NjRfdD4gZmlsZVNpemUsIFN0cmluZyBmaWxlTmFtZSwgU3RyaW5nIGNvbnRl
bnRUeXBlLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKLSAgICBVcGRhdGVBdHRhY2ht
ZW50QXR0cmlidXRlcyhTdHJpbmcgaWRlbnRpZmllciwgT3B0aW9uYWw8dWludDY0X3Q+IGZpbGVT
aXplLCBTdHJpbmcgY29udGVudFR5cGUsIFN0cmluZyBmaWxlTmFtZSwgSVBDOjpTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlIGVuY2xvc2luZ0ltYWdlRGF0YSwgV2ViS2l0OjpDYWxsYmFja0lEIGNh
bGxiYWNrSUQpCisgICAgSW5zZXJ0QXR0YWNobWVudChTdHJpbmcgaWRlbnRpZmllciwgT3B0aW9u
YWw8dWludDY0X3Q+IGZpbGVTaXplLCBTdHJpbmcgZmlsZU5hbWUsIFN0cmluZyBjb250ZW50VHlw
ZSkgLT4gKCkgQXN5bmMKKyAgICBVcGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhTdHJpbmcgaWRl
bnRpZmllciwgT3B0aW9uYWw8dWludDY0X3Q+IGZpbGVTaXplLCBTdHJpbmcgY29udGVudFR5cGUs
IFN0cmluZyBmaWxlTmFtZSwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGVuY2xvc2lu
Z0ltYWdlRGF0YSkgLT4gKCkgQXN5bmMKICAgICBVcGRhdGVBdHRhY2htZW50SWNvbihTdHJpbmcg
aWRlbnRpZmllciwgV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBxbFRodW1ibmFpbEhh
bmRsZSkKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDI0NWU0OTkzZGRlNjE0YWUwZjIxZmY3ZTQ5ZmNmYjg4
MWU3MjRiZWMuLmY2NzAzZDcwNGM5ZmE2NGMwZDAwYWM5YTBjYmI4ZDcxYzY0NzQyMTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
CkBAIC0yMzUxLDkgKzIzNTEsOSBAQCB2b2lkIFdlYlBhZ2U6OnJlcXVlc3RBdXRvY29ycmVjdGlv
bkRhdGEoY29uc3QgU3RyaW5nJiB0ZXh0Rm9yQXV0b2NvcnJlY3Rpb24sIENvbQogICAgIHJlcGx5
KHsgV1RGTW92ZShyb290Vmlld1NlbGVjdGlvblJlY3RzKSAsIChfX2JyaWRnZSBVSUZvbnQgKilm
b250IH0pOwogfQogCi12b2lkIFdlYlBhZ2U6OmFwcGx5QXV0b2NvcnJlY3Rpb24oY29uc3QgU3Ry
aW5nJiBjb3JyZWN0aW9uLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVGV4dCwgQ2FsbGJhY2tJRCBj
YWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjphcHBseUF1dG9jb3JyZWN0aW9uKGNvbnN0IFN0cmlu
ZyYgY29ycmVjdGlvbiwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbFRleHQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY2FsbGJhY2spCiB7Ci0gICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpTdHJpbmdDYWxsYmFjayhhcHBseUF1dG9jb3JyZWN0aW9uSW50ZXJu
YWwoY29ycmVjdGlvbiwgb3JpZ2luYWxUZXh0KSA/IGNvcnJlY3Rpb24gOiBTdHJpbmcoKSwgY2Fs
bGJhY2tJRCkpOworICAgIGNhbGxiYWNrKGFwcGx5QXV0b2NvcnJlY3Rpb25JbnRlcm5hbChjb3Jy
ZWN0aW9uLCBvcmlnaW5hbFRleHQpID8gY29ycmVjdGlvbiA6IFN0cmluZygpKTsKIH0KIAogU2Vj
b25kcyBXZWJQYWdlOjpldmVudFRocm90dGxpbmdEZWxheSgpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCmluZGV4IGI0ZWZmZmZmOGY3MmY2YmVhMjRhNWFkMTQ4
NzE5ZGNjZGQ1YjgwZGMuLjc3YTgwNDJmODg0MTU4OGQ4MjBlYzRjZmRhNWJmMTQ3YmZlZDUxZGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCkBAIC04Miw3ICs4Miw3
IEBAIHByaXZhdGU6CiAKICAgICBib29sIHNob3VsZFVzZVRpbGVkQmFja2luZ0ZvckZyYW1lVmll
dyhjb25zdCBXZWJDb3JlOjpGcmFtZVZpZXcmKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZvaWQg
YWN0aXZpdHlTdGF0ZURpZENoYW5nZShPcHRpb25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6
RmxhZz4gY2hhbmdlZCwgQWN0aXZpdHlTdGF0ZUNoYW5nZUlELCBjb25zdCBWZWN0b3I8Q2FsbGJh
Y2tJRD4mKSBvdmVycmlkZTsKKyAgICB2b2lkIGFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoT3B0aW9u
U2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+IGNoYW5nZWQsIEFjdGl2aXR5U3RhdGVD
aGFuZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKIAogICAgIHZv
aWQgYXR0YWNoVmlld092ZXJsYXlHcmFwaGljc0xheWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIq
KSBvdmVycmlkZTsKIApAQCAtMTUxLDcgKzE1MSw3IEBAIHByaXZhdGU6CiAgICAgZG91YmxlIG1f
dHJhbnNpZW50Wm9vbVNjYWxlIHsgMSB9OwogICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgbV90cmFu
c2llbnRab29tT3JpZ2luOwogCi0gICAgVmVjdG9yPENhbGxiYWNrSUQ+IG1fbmV4dEFjdGl2aXR5
U3RhdGVDaGFuZ2VDYWxsYmFja0lEczsKKyAgICBWZWN0b3I8Q29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPj4gbV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrczsKICAgICBBY3Rpdml0eVN0
YXRlQ2hhbmdlSUQgbV9hY3Rpdml0eVN0YXRlQ2hhbmdlSUQgeyBBY3Rpdml0eVN0YXRlQ2hhbmdl
QXN5bmNocm9ub3VzIH07CiAKICAgICBSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NMYXllcj4gbV92
aWV3T3ZlcmxheVJvb3RMYXllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbSBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YS5tbQppbmRleCA2YjEyZTk5NTJkNTM2OTVjNDcxNWRlMzc1OTZmYTZiNTJmMTAzMTViLi4xNmE5
NGEwMWE1YjU0ZTkyYzFkYTc1NTMzYjA0N2EyNzg0Y2I2MDhiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWEubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCkBAIC00OTgsOSArNDk4LDggQEAgdm9pZCBUaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYTo6aGFuZGxlQWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNr
cygpCiAgICAgaWYgKG1fYWN0aXZpdHlTdGF0ZUNoYW5nZUlEICE9IEFjdGl2aXR5U3RhdGVDaGFu
Z2VBc3luY2hyb25vdXMpCiAgICAgICAgIG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkRpZFVwZGF0ZUFjdGl2aXR5U3RhdGUoKSk7CiAKLSAgICBmb3IgKGF1dG8mIGNhbGxi
YWNrSUQgOiBtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJRHMpCi0gICAgICAgIG1f
d2ViUGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlZvaWRDYWxsYmFjayhjYWxsYmFj
a0lEKSk7Ci0gICAgbV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrSURzLmNsZWFyKCk7
CisgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IHN0ZDo6ZXhjaGFuZ2UobV9uZXh0QWN0aXZpdHlT
dGF0ZUNoYW5nZUNhbGxiYWNrcywgeyB9KSkKKyAgICAgICAgY2FsbGJhY2soKTsKIAogICAgIG1f
YWN0aXZpdHlTdGF0ZUNoYW5nZUlEID0gQWN0aXZpdHlTdGF0ZUNoYW5nZUFzeW5jaHJvbm91czsK
IH0KQEAgLTUzMSw5ICs1MzAsOSBAQCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
OjpoYW5kbGVBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tzSWZOZWVkZWQoKQogICAgIH0gZm9y
UGhhc2U6a0NBVHJhbnNhY3Rpb25QaGFzZVBvc3RDb21taXRdOwogfQogCi12b2lkIFRpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKE9wdGlvblNldDxB
Y3Rpdml0eVN0YXRlOjpGbGFnPiBjaGFuZ2VkLCBBY3Rpdml0eVN0YXRlQ2hhbmdlSUQgYWN0aXZp
dHlTdGF0ZUNoYW5nZUlELCBjb25zdCBWZWN0b3I8Q2FsbGJhY2tJRD4mIG5leHRBY3Rpdml0eVN0
YXRlQ2hhbmdlQ2FsbGJhY2tJRHMpCit2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
OjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnPiBj
aGFuZ2VkLCBBY3Rpdml0eVN0YXRlQ2hhbmdlSUQgYWN0aXZpdHlTdGF0ZUNoYW5nZUlELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFjaykK
IHsKLSAgICBtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJRHMuYXBwZW5kVmVjdG9y
KG5leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJRHMpOworICAgIG1fbmV4dEFjdGl2aXR5
U3RhdGVDaGFuZ2VDYWxsYmFja3MuYXBwZW5kKFdURk1vdmUobmV4dEFjdGl2aXR5U3RhdGVDaGFu
Z2VDYWxsYmFjaykpOwogICAgIG1fYWN0aXZpdHlTdGF0ZUNoYW5nZUlEID0gc3RkOjptYXgobV9h
Y3Rpdml0eVN0YXRlQ2hhbmdlSUQsIGFjdGl2aXR5U3RhdGVDaGFuZ2VJRCk7CiAKICAgICBpZiAo
Y2hhbmdlZCAmIEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSkgewpAQCAtNTQzLDcgKzU0Miw3IEBA
IHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmFjdGl2aXR5U3RhdGVEaWRDaGFu
Z2UoT3B0aW9uU2V0PEFjdGl2aXR5U3RhCiAgICAgICAgICAgICBzdXNwZW5kUGFpbnRpbmcoKTsK
ICAgICB9CiAKLSAgICBpZiAobV9hY3Rpdml0eVN0YXRlQ2hhbmdlSUQgIT0gQWN0aXZpdHlTdGF0
ZUNoYW5nZUFzeW5jaHJvbm91cyB8fCAhbV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNr
SURzLmlzRW1wdHkoKSkgeworICAgIGlmIChtX2FjdGl2aXR5U3RhdGVDaGFuZ2VJRCAhPSBBY3Rp
dml0eVN0YXRlQ2hhbmdlQXN5bmNocm9ub3VzIHx8ICFtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdl
Q2FsbGJhY2tzLmlzRW1wdHkoKSkgewogICAgICAgICBtX3Nob3VsZEhhbmRsZUFjdGl2aXR5U3Rh
dGVDaGFuZ2VDYWxsYmFja3MgPSB0cnVlOwogICAgICAgICB0cmlnZ2VyUmVuZGVyaW5nVXBkYXRl
KCk7CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419870</attachid>
            <date>2021-02-10 11:14:48 -0800</date>
            <delta_ts>2021-02-11 13:45:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221653-20210210111448.patch</filename>
            <type>text/plain</type>
            <size>71891</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNjM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJlYWFkNDhmZTMzMTkwMTJj
MjllN2EwODhkYTcwMDE1YTUwMzMwYWEuLjllMDVmOGE1N2I4YTE3NWM5N2IyODZkMTRmMTVhZDgz
YTM2MzBjMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTEgQEAKKzIwMjEtMDItMTAgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBTdG9wIHVzaW5n
IEdlbmVyaWNDYWxsYmFjayBmcm9tIFdlYlBhZ2VQcm94eQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxNjUzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlcmUgYXJlIHN0aWxsIHR3byB1c2VzIGluIHRo
ZSBEcmF3aW5nQXJlYVByb3h5IGltcGxlbWVudGF0aW9ucywgYnV0IHRob3NlIGFyZSBxdWl0ZSB0
YW5nbGVkIGFuZCBkZXNlcnZlIHRoZWlyIG93biBwYXRjaC4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQVBJQXR0YWNobWVudC5jcHA6CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OnVwZGF0
ZUF0dHJpYnV0ZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCk6CisgICAgICAgIChXS1BhZ2VSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNl
bnRhdGlvbik6CisgICAgICAgIChXS1BhZ2VHZXRTb3VyY2VGb3JGcmFtZSk6CisgICAgICAgIChX
S1BhZ2VHZXRDb250ZW50c0FzU3RyaW5nKToKKyAgICAgICAgKFdLUGFnZUdldEJ5dGVjb2RlUHJv
ZmlsZSk6CisgICAgICAgIChXS1BhZ2VHZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KToKKyAgICAg
ICAgKFdURjo6RnVuY3Rpb248dm9pZCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW06CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6
OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2luc2VydEF0
dGFjaG1lbnRXaXRoRmlsZVdyYXBwZXI6Y29udGVudFR5cGU6Y29tcGxldGlvbjpdKToKKyAgICAg
ICAgKC1bV0tXZWJWaWV3IF9nZXRDb250ZW50c0FzU3RyaW5nV2l0aENvbXBsZXRpb25IYW5kbGVy
Ol0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2dldENvbnRlbnRzT2ZBbGxGcmFtZXNBc1N0cmlu
Z1dpdGhDb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L19XS0F0dGFjaG1lbnQubW06CisgICAgICAgICgtW19XS0F0dGFjaG1lbnQgc2V0RmlsZVdyYXBw
ZXI6Y29udGVudFR5cGU6Y29tcGxldGlvbjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2Ev
V2ViVmlld0ltcGwubW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzdGFydFNwZWFr
aW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmg6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6ZGlzcGF0Y2hBY3Rpdml0eVN0YXRlQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpnZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0U291cmNlRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmdldENvbnRlbnRzQXNTdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmdldEJ5dGVjb2RlUHJvZmlsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6Z2V0U2FtcGxpbmdQcm9maWxlck91dHB1dCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmRpZEZhaWxMb2FkRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6Omluc3RhbGxBY3Rpdml0eVN0YXRlQ2hhbmdlQ29tcGxldGlvbkhhbmRsZXIpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omluc2VydEF0dGFjaG1lbnQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRJbnNlcnRBdHRhY2htZW50V2l0aElkZW50aWZpZXIp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNsZWFyTG9hZERlcGVuZGVudENhbGxi
YWNrcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dm9pZENhbGxi
YWNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzdHJpbmdDYWxs
YmFjayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW52YWxpZGF0
ZVN0cmluZ0NhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAg
ICAgKC1bV0tDb250ZW50VmlldyBfc2hhcmVGb3JXZWJWaWV3Ol0pOgorICAgICAgICAoLVtXS0Nv
bnRlbnRWaWV3IF9kZWZpbmVGb3JXZWJWaWV3Ol0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3
IGFjY2Vzc2liaWxpdHlSZXRyaWV2ZVNwZWFrU2VsZWN0aW9uQ29udGVudF0pOgorICAgICAgICAo
LVtXS0NvbnRlbnRWaWV3IGFwcGx5QXV0b2NvcnJlY3Rpb246dG9TdHJpbmc6d2l0aENvbXBsZXRp
b25IYW5kbGVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmFwcGx5QXV0b2NvcnJlY3Rpb24pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tUZXh0RmluZGVyQ2xpZW50Lm1tOgorICAgICAgICAo
LVtXS1RleHRGaW5kZXJDbGllbnQgZ2V0U2VsZWN0ZWRUZXh0Ol0pOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNs
aWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oOgorICAg
ICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhOjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OnJlaW5pdGlhbGl6ZVdlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRB
Y3Rpdml0eVN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0Q29udGVudHNBc1N0
cmluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldFJlbmRlclRyZWVFeHRlcm5hbFJl
cHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0U2VsZWN0aW9uT3JD
b250ZW50c0FzU3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0U291cmNlRm9y
RnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRCeXRlY29kZVByb2ZpbGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aW5zZXJ0QXR0YWNobWVudCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2Vi
UGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YXBwbHlBdXRvY29ycmVjdGlv
bik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWEubW06CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1h
dGlvbkRyYXdpbmdBcmVhOjpoYW5kbGVBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tzKToKKyAg
ICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmFjdGl2aXR5U3Rh
dGVEaWRDaGFuZ2UpOgorCiAyMDIxLTAyLTA5ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVu
c2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVXNlIENvbXBsZXRpb25IYW5kbGVyIGluc3RlYWQg
b2YgQXBwbGljYXRpb25NYW5pZmVzdENhbGxiYWNrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJQXR0YWNobWVudC5jcHAKaW5kZXggMTM4NmVkNjNlY2EyNzliMDA3MDZkMTdiOWNj
MmJiNTFhOGEyOTFjNy4uYjE4MjBlMDQ4YzA3NzU2MWM5ODFiMTkzZmYzYjVkMzQ2NzAwMTgwMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcApAQCAt
NDksMTUgKzQ5LDE1IEBAIEF0dGFjaG1lbnQ6On5BdHRhY2htZW50KCkKIHsKIH0KIAotdm9pZCBB
dHRhY2htZW50Ojp1cGRhdGVBdHRyaWJ1dGVzKEZ1bmN0aW9uPHZvaWQoV2ViS2l0OjpDYWxsYmFj
a0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFjaykKK3ZvaWQgQXR0YWNobWVudDo6dXBkYXRlQXR0cmli
dXRlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFt
X3dlYlBhZ2UpIHsKLSAgICAgICAgY2FsbGJhY2soV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9y
OjpPd25lcldhc0ludmFsaWRhdGVkKTsKKyAgICAgICAgY2FsbGJhY2soKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAogICAgIGlmIChtX3dlYlBhZ2UtPndpbGxVcGRhdGVBdHRhY2htZW50QXR0
cmlidXRlcygqdGhpcykgPT0gV2ViS2l0OjpXZWJQYWdlUHJveHk6OlNob3VsZFVwZGF0ZUF0dGFj
aG1lbnRBdHRyaWJ1dGVzOjpObykgewotICAgICAgICBjYWxsYmFjayhXZWJLaXQ6OkNhbGxiYWNr
QmFzZTo6RXJyb3I6Ok5vbmUpOworICAgICAgICBjYWxsYmFjaygpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0
YWNobWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaApp
bmRleCAyZTA2NDlhOGRkMDEyZWMwYWUxN2Y2ZjU1ZjQxODdhOWVkNjAxNjliLi43YmE0NGZhYzg5
MjlkODU2MWY4NGE4ODhjOWVmNmM2ODc1NmU2MTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElBdHRhY2htZW50LmgKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogICAgIGVu
dW0gY2xhc3MgSW5zZXJ0aW9uU3RhdGUgOiB1aW50OF90IHsgTm90SW5zZXJ0ZWQsIEluc2VydGVk
IH07CiAKICAgICBjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJu
IG1faWRlbnRpZmllcjsgfQotICAgIHZvaWQgdXBkYXRlQXR0cmlidXRlcyhGdW5jdGlvbjx2b2lk
KFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAgIHZvaWQgdXBkYXRlQXR0cmli
dXRlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAgICAgdm9pZCBpbnZhbGlkYXRl
KCk7CiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gISFtX3dlYlBhZ2U7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCmluZGV4IDRlZjg0YTgxYThmY2I2
OGUyZTljZGI0MzU2NzE4NDc3Y2YwNzQ1YzkuLjYyYTU0Yjc0NmMzYWIyZjFhYjMyY2VkNzE0NjRj
NGM0ZGRmMWU5ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
UGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApA
QCAtMjUzNCwzNiArMjUzNCwzNiBAQCB2b2lkIFdLUGFnZVJ1bkphdmFTY3JpcHRJbk1haW5GcmFt
ZV9iKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBzY3JpcHRSZWYsCiB9CiAjZW5kaWYK
IAotc3RhdGljIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgV2ViS2l0OjpDYWxs
YmFja0Jhc2U6OkVycm9yKT4gdG9HZW5lcmljQ2FsbGJhY2tGdW5jdGlvbih2b2lkKiBjb250ZXh0
LCB2b2lkICgqY2FsbGJhY2spKFdLU3RyaW5nUmVmLCBXS0Vycm9yUmVmLCB2b2lkKikpCitzdGF0
aWMgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4gdG9TdHJpbmdDYWxsYmFj
ayh2b2lkKiBjb250ZXh0LCB2b2lkKCpjYWxsYmFjaykoV0tTdHJpbmdSZWYsIFdLRXJyb3JSZWYs
IHZvaWQqKSkKIHsKLSAgICByZXR1cm4gW2NvbnRleHQsIGNhbGxiYWNrXShjb25zdCBTdHJpbmcm
IHJldHVyblZhbHVlLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKLSAgICAg
ICAgY2FsbGJhY2sodG9BUEkoQVBJOjpTdHJpbmc6OmNyZWF0ZShyZXR1cm5WYWx1ZSkucHRyKCkp
LCBlcnJvciAhPSBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUgPyB0b0FQSShBUEk6
OkVycm9yOjpjcmVhdGUoKS5wdHIoKSkgOiAwLCBjb250ZXh0KTsKKyAgICByZXR1cm4gW2NvbnRl
eHQsIGNhbGxiYWNrXSAoY29uc3QgU3RyaW5nJiByZXR1cm5WYWx1ZSkgeworICAgICAgICBjYWxs
YmFjayh0b0FQSShBUEk6OlN0cmluZzo6Y3JlYXRlKHJldHVyblZhbHVlKS5wdHIoKSksIG51bGxw
dHIsIGNvbnRleHQpOwogICAgIH07CiB9CiAKIHZvaWQgV0tQYWdlUmVuZGVyVHJlZUV4dGVybmFs
UmVwcmVzZW50YXRpb24oV0tQYWdlUmVmIHBhZ2VSZWYsIHZvaWQqIGNvbnRleHQsIFdLUGFnZVJl
bmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uRnVuY3Rpb24gY2FsbGJhY2spCiB7Ci0gICAg
dG9JbXBsKHBhZ2VSZWYpLT5nZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbih0b0dl
bmVyaWNDYWxsYmFja0Z1bmN0aW9uKGNvbnRleHQsIGNhbGxiYWNrKSk7CisgICAgdG9JbXBsKHBh
Z2VSZWYpLT5nZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbih0b1N0cmluZ0NhbGxi
YWNrKGNvbnRleHQsIGNhbGxiYWNrKSk7CiB9CiAKIHZvaWQgV0tQYWdlR2V0U291cmNlRm9yRnJh
bWUoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLRnJhbWVSZWYgZnJhbWVSZWYsIHZvaWQqIGNvbnRleHQs
IFdLUGFnZUdldFNvdXJjZUZvckZyYW1lRnVuY3Rpb24gY2FsbGJhY2spCiB7Ci0gICAgdG9JbXBs
KHBhZ2VSZWYpLT5nZXRTb3VyY2VGb3JGcmFtZSh0b0ltcGwoZnJhbWVSZWYpLCB0b0dlbmVyaWND
YWxsYmFja0Z1bmN0aW9uKGNvbnRleHQsIGNhbGxiYWNrKSk7CisgICAgdG9JbXBsKHBhZ2VSZWYp
LT5nZXRTb3VyY2VGb3JGcmFtZSh0b0ltcGwoZnJhbWVSZWYpLCB0b1N0cmluZ0NhbGxiYWNrKGNv
bnRleHQsIGNhbGxiYWNrKSk7CiB9CiAKIHZvaWQgV0tQYWdlR2V0Q29udGVudHNBc1N0cmluZyhX
S1BhZ2VSZWYgcGFnZVJlZiwgdm9pZCogY29udGV4dCwgV0tQYWdlR2V0Q29udGVudHNBc1N0cmlu
Z0Z1bmN0aW9uIGNhbGxiYWNrKQogewotICAgIHRvSW1wbChwYWdlUmVmKS0+Z2V0Q29udGVudHNB
c1N0cmluZyhDb250ZW50QXNTdHJpbmdJbmNsdWRlc0NoaWxkRnJhbWVzOjpObywgdG9HZW5lcmlj
Q2FsbGJhY2tGdW5jdGlvbihjb250ZXh0LCBjYWxsYmFjaykpOworICAgIHRvSW1wbChwYWdlUmVm
KS0+Z2V0Q29udGVudHNBc1N0cmluZyhDb250ZW50QXNTdHJpbmdJbmNsdWRlc0NoaWxkRnJhbWVz
OjpObywgdG9TdHJpbmdDYWxsYmFjayhjb250ZXh0LCBjYWxsYmFjaykpOwogfQogCiB2b2lkIFdL
UGFnZUdldEJ5dGVjb2RlUHJvZmlsZShXS1BhZ2VSZWYgcGFnZVJlZiwgdm9pZCogY29udGV4dCwg
V0tQYWdlR2V0Qnl0ZWNvZGVQcm9maWxlRnVuY3Rpb24gY2FsbGJhY2spCiB7Ci0gICAgdG9JbXBs
KHBhZ2VSZWYpLT5nZXRCeXRlY29kZVByb2ZpbGUodG9HZW5lcmljQ2FsbGJhY2tGdW5jdGlvbihj
b250ZXh0LCBjYWxsYmFjaykpOworICAgIHRvSW1wbChwYWdlUmVmKS0+Z2V0Qnl0ZWNvZGVQcm9m
aWxlKHRvU3RyaW5nQ2FsbGJhY2soY29udGV4dCwgY2FsbGJhY2spKTsKIH0KIAogdm9pZCBXS1Bh
Z2VHZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KFdLUGFnZVJlZiBwYWdlUmVmLCB2b2lkKiBjb250
ZXh0LCBXS1BhZ2VHZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0RnVuY3Rpb24gY2FsbGJhY2spCiB7
Ci0gICAgdG9JbXBsKHBhZ2VSZWYpLT5nZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KHRvR2VuZXJp
Y0NhbGxiYWNrRnVuY3Rpb24oY29udGV4dCwgY2FsbGJhY2spKTsKKyAgICB0b0ltcGwocGFnZVJl
ZiktPmdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQodG9TdHJpbmdDYWxsYmFjayhjb250ZXh0LCBj
YWxsYmFjaykpOwogfQogCiB2b2lkIFdLUGFnZUdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEo
V0tQYWdlUmVmIHBhZ2VSZWYsIHZvaWQqIGNvbnRleHQsIFdLUGFnZUdldFNlbGVjdGlvbkFzV2Vi
QXJjaGl2ZURhdGFGdW5jdGlvbiBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tCmluZGV4IDNjMWUwNmFm
MDNkOTRmN2RhN2QwZDIwMWZhYjdhY2VmMjFlMDA3YWUuLjEyOTJjY2NjZjg4ZTg4OTM5ZmY5ZmRl
NDQ5NWEzNGYyOWRhOTJiYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQpAQCAtMTg3LDcgKzE4Nyw3IEBAIHZv
aWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmCiAgICAgICAgIHJldHVybjsKIAogICAgIHNldEZpbGVXcmFw
cGVyQW5kVXBkYXRlQ29udGVudFR5cGUoZmlsZVdyYXBwZXIsIGNvbnRlbnRUeXBlKTsKLSAgICBt
X3dlYlBhZ2UtPnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKCp0aGlzLCBbXSAoYXV0bykgeyB9
KTsKKyAgICBtX3dlYlBhZ2UtPnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKCp0aGlzLCBbXSB7
IH0pOwogfQogCiB2b2lkIEF0dGFjaG1lbnQ6OnNldEZpbGVXcmFwcGVyR2VuZXJhdG9yKEZ1bmN0
aW9uPFJldGFpblB0cjxOU0ZpbGVXcmFwcGVyPih2b2lkKT4mJiBmaWxlV3JhcHBlckdlbmVyYXRv
cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmlu
ZGV4IDJjZTNkMjRhY2E0YTI4ZTYyM2RiOGY3MjdlMjllODE1NDkwNWY0YmYuLjY0MjE4NTQ2ZGE3
ZmJkMzcyNjllN2I2MzBlZjEwZTQ0MzcxMzdjYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMjI4Myw5ICsyMjgzLDkgQEAgc3RhdGlj
IFJldGFpblB0cjxOU0FycmF5PiB3a1RleHRNYW5pcHVsYXRpb25FcnJvcnMoTlNBcnJheTxfV0tU
ZXh0TWFuaXB1bGF0aW9uSXQKICAgICBhdXRvIGlkZW50aWZpZXIgPSBjcmVhdGVDYW5vbmljYWxV
VUlEU3RyaW5nKCk7CiAgICAgYXV0byBhdHRhY2htZW50ID0gQVBJOjpBdHRhY2htZW50OjpjcmVh
dGUoaWRlbnRpZmllciwgKl9wYWdlKTsKICAgICBhdHRhY2htZW50LT5zZXRGaWxlV3JhcHBlckFu
ZFVwZGF0ZUNvbnRlbnRUeXBlKGZpbGVXcmFwcGVyLCBjb250ZW50VHlwZSk7Ci0gICAgX3BhZ2Ut
Pmluc2VydEF0dGFjaG1lbnQoYXR0YWNobWVudC5jb3B5UmVmKCksIFtjYXB0dXJlZEhhbmRsZXIg
PSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoV2ViS2l0OjpDYWxsYmFja0Jhc2U6
OkVycm9yIGVycm9yKSB7CisgICAgX3BhZ2UtPmluc2VydEF0dGFjaG1lbnQoYXR0YWNobWVudC5j
b3B5UmVmKCksIFtjYXB0dXJlZEhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRs
ZXIpXSB7CiAgICAgICAgIGlmIChjYXB0dXJlZEhhbmRsZXIpCi0gICAgICAgICAgICBjYXB0dXJl
ZEhhbmRsZXIoZXJyb3IgPT0gV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKTsKKyAg
ICAgICAgICAgIGNhcHR1cmVkSGFuZGxlcih0cnVlKTsKICAgICB9KTsKICNpZiBIQVZFKFFVSUNL
TE9PS19USFVNQk5BSUxJTkcpCiAgICAgX3BhZ2UtPnJlcXVlc3RUaHVtYm5haWxXaXRoRmlsZVdy
YXBwZXIoZmlsZVdyYXBwZXIsIGlkZW50aWZpZXIpOwpAQCAtMjUzMSwyNSArMjUzMSwxNSBAQCBz
dGF0aWMgaW5saW5lIE9wdGlvblNldDxXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmU+IGxheW91dE1p
bGVzdG9uZXMoX1dLUmVuZGVyaW5nUAogCiAtICh2b2lkKV9nZXRDb250ZW50c0FzU3RyaW5nV2l0
aENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1N0cmluZyAqLCBOU0Vycm9yICopKWNvbXBs
ZXRpb25IYW5kbGVyCiB7Ci0gICAgYXV0byBoYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRp
b25IYW5kbGVyKTsKLQotICAgIF9wYWdlLT5nZXRDb250ZW50c0FzU3RyaW5nKFdlYktpdDo6Q29u
dGVudEFzU3RyaW5nSW5jbHVkZXNDaGlsZEZyYW1lczo6Tm8sIFtoYW5kbGVyXShTdHJpbmcgc3Ry
aW5nLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKLSAgICAgICAgaWYgKGVy
cm9yICE9IFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSkgewotICAgICAgICAgICAg
Ly8gRklYTUU6IFBpcGUgYSBwcm9wZXIgZXJyb3IgaW4gZnJvbSB0aGUgV2ViUGFnZVByb3h5Lgot
ICAgICAgICAgICAgaGFuZGxlcihuaWwsIFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9y
RG9tYWluIGNvZGU6c3RhdGljX2Nhc3Q8aW50PihlcnJvcikgdXNlckluZm86bmlsXSk7Ci0gICAg
ICAgIH0gZWxzZQotICAgICAgICAgICAgaGFuZGxlcihzdHJpbmcsIG5pbCk7CisgICAgX3BhZ2Ut
PmdldENvbnRlbnRzQXNTdHJpbmcoV2ViS2l0OjpDb250ZW50QXNTdHJpbmdJbmNsdWRlc0NoaWxk
RnJhbWVzOjpObywgW2hhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShT
dHJpbmcgc3RyaW5nKSB7CisgICAgICAgIGhhbmRsZXIoc3RyaW5nLCBuaWwpOwogICAgIH0pOwog
fQogCiAtICh2b2lkKV9nZXRDb250ZW50c09mQWxsRnJhbWVzQXNTdHJpbmdXaXRoQ29tcGxldGlv
bkhhbmRsZXI6KHZvaWQgKF4pKE5TU3RyaW5nICopKWNvbXBsZXRpb25IYW5kbGVyCiB7Ci0gICAg
YXV0byBoYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICBfcGFn
ZS0+Z2V0Q29udGVudHNBc1N0cmluZyhXZWJLaXQ6OkNvbnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hp
bGRGcmFtZXM6OlllcywgW2hhbmRsZXJdKFN0cmluZyBzdHJpbmcsIFdlYktpdDo6Q2FsbGJhY2tC
YXNlOjpFcnJvciBlcnJvcikgewotICAgICAgICBpZiAoZXJyb3IgIT0gV2ViS2l0OjpDYWxsYmFj
a0Jhc2U6OkVycm9yOjpOb25lKQotICAgICAgICAgICAgaGFuZGxlcihuaWwpOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICBoYW5kbGVyKHN0cmluZyk7CisgICAgX3BhZ2UtPmdldENvbnRlbnRz
QXNTdHJpbmcoV2ViS2l0OjpDb250ZW50QXNTdHJpbmdJbmNsdWRlc0NoaWxkRnJhbWVzOjpZZXMs
IFtoYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oU3RyaW5nIHN0cmlu
ZykgeworICAgICAgICBoYW5kbGVyKHN0cmluZyk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdHRhY2htZW50Lm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F0dGFjaG1lbnQubW0KaW5kZXggMDBk
OTY0ZmNjMTcwN2RlNjVmNTVjNDlhNTA4YjVjNGU2M2IwM2M1My4uNWU4YjhiYmJiZGZiYTY0MDdm
OWZmMzdmYmE4MmYyNjhkNDlmMmIxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS0F0dGFjaG1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS0F0dGFjaG1lbnQubW0KQEAgLTMyLDYgKzMyLDcgQEAKICNpbXBvcnQg
PFdlYkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TaGFyZWRCdWZm
ZXIuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgorI2ltcG9ydCA8d3RmL0NvbXBsZXRpb25I
YW5kbGVyLmg+CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCA8TW9iaWxlQ29y
ZVNlcnZpY2VzL01vYmlsZUNvcmVTZXJ2aWNlcy5oPgpAQCAtMTM5LDE0ICsxNDAsOSBAQCBzdGF0
aWMgY29uc3QgTlNJbnRlZ2VyIEludmFsaWRBdHRhY2htZW50RXJyb3JDb2RlID0gMjsKICAgICAv
LyBmcm9tIHRoZSBTUEkgY2xpZW50LCB0aGUgY29ycmVzcG9uZGluZyBmaWxlIHBhdGggb2YgdGhl
IGRhdGEgaXMgdW5rbm93biwgaWYgaXQgZXZlbiBleGlzdHMgYXQgYWxsLgogICAgIF9hdHRhY2ht
ZW50LT5zZXRGaWxlUGF0aCh7IH0pOwogICAgIF9hdHRhY2htZW50LT5zZXRGaWxlV3JhcHBlckFu
ZFVwZGF0ZUNvbnRlbnRUeXBlKGZpbGVXcmFwcGVyLCBjb250ZW50VHlwZSk7Ci0gICAgX2F0dGFj
aG1lbnQtPnVwZGF0ZUF0dHJpYnV0ZXMoW2NhcHR1cmVkQmxvY2sgPSBtYWtlQmxvY2tQdHIoY29t
cGxldGlvbkhhbmRsZXIpXSAoYXV0byBlcnJvcikgewotICAgICAgICBpZiAoIWNhcHR1cmVkQmxv
Y2spCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKGVycm9yID09IFdlYktpdDo6
Q2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSkKKyAgICBfYXR0YWNobWVudC0+dXBkYXRlQXR0cmli
dXRlcyhbY2FwdHVyZWRCbG9jayA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIHsK
KyAgICAgICAgaWYgKGNhcHR1cmVkQmxvY2spCiAgICAgICAgICAgICBjYXB0dXJlZEJsb2NrKG5p
bCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNhcHR1cmVkQmxvY2soW05TRXJyb3IgZXJy
b3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpVbnNwZWNpZmllZEF0dGFjaG1lbnRFcnJv
ckNvZGUgdXNlckluZm86bmlsXSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KaW5kZXggNTBlMjI1NTE4NWIxNDE1MTQ4NGU1ZDAy
N2FlYzQyYjhlY2IzNDg4NS4uMWJmOTA4NGM1M2ZlZDVlYjYzMTk2ODQ2NjdiM2FiODI3NGI3Yjhk
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAg
LTMxNjIsOSArMzE2Miw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldFVzZXJJbnRlcmZhY2VJdGVt
U3RhdGUoTlNTdHJpbmcgKmNvbW1hbmROYW1lLCBib29sIGVuYWJsZWQsCiB2b2lkIFdlYlZpZXdJ
bXBsOjpzdGFydFNwZWFraW5nKCkKIHsKICAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQ
cm9jZXNzUHJpdmlsZWdlOjpDYW5Db21tdW5pY2F0ZVdpdGhXaW5kb3dTZXJ2ZXIpKTsKLSAgICBt
X3BhZ2UtPmdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhbXShjb25zdCBTdHJpbmcmIHN0
cmluZywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7Ci0gICAgICAgIGlmIChl
cnJvciAhPSBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpCi0gICAgICAgICAgICBy
ZXR1cm47CisgICAgbV9wYWdlLT5nZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcoW10oY29u
c3QgU3RyaW5nJiBzdHJpbmcpIHsKICAgICAgICAgaWYgKCFzdHJpbmcpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dlbmVyaWNDYWxs
YmFjay5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmgKaW5kZXgg
YzM2NTgxMWQwYTYyZmQ4NDJlOTQ0ODkwMGVkYjZhMmI0ZmU0NzgxOS4uMDM1NDE5ZDAyMTk0MzRl
NTcwZmQ3YmQ1M2MwZTk0MGVmYmRlMTFkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2Vu
ZXJpY0NhbGxiYWNrLmgKQEAgLTE0NiwxNCArMTQ2LDYgQEAgcHJpdmF0ZToKICNlbmRpZgogfTsK
IAotdGVtcGxhdGU8dHlwZW5hbWUgQVBJUmV0dXJuVmFsdWVUeXBlLCB0eXBlbmFtZSBJbnRlcm5h
bFJldHVyblZhbHVlVHlwZSA9IHR5cGVuYW1lIEFQSVR5cGVJbmZvPEFQSVJldHVyblZhbHVlVHlw
ZT46OkltcGxUeXBlKj4KLXN0YXRpYyB0eXBlbmFtZSBHZW5lcmljQ2FsbGJhY2s8SW50ZXJuYWxS
ZXR1cm5WYWx1ZVR5cGU+OjpDYWxsYmFja0Z1bmN0aW9uIHRvR2VuZXJpY0NhbGxiYWNrRnVuY3Rp
b24odm9pZCogY29udGV4dCwgdm9pZCAoKmNhbGxiYWNrKShBUElSZXR1cm5WYWx1ZVR5cGUsIFdL
RXJyb3JSZWYsIHZvaWQqKSkKLXsKLSAgICByZXR1cm4gW2NvbnRleHQsIGNhbGxiYWNrXShJbnRl
cm5hbFJldHVyblZhbHVlVHlwZSByZXR1cm5WYWx1ZSwgQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJv
cikgewotICAgICAgICBjYWxsYmFjayh0b0FQSShyZXR1cm5WYWx1ZSksIGVycm9yICE9IENhbGxi
YWNrQmFzZTo6RXJyb3I6Ok5vbmUgPyB0b0FQSShBUEk6OkVycm9yOjpjcmVhdGUoKS5wdHIoKSkg
OiAwLCBjb250ZXh0KTsKLSAgICB9OwotfQotCiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazw+IFZv
aWRDYWxsYmFjazsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDY5ODcyNzdiYjFiZDljMGJkMjg1YWNiYzM3OWU3MjFl
ZDU2N2Y2MjIuLjI3OGQ4OTVhNWM4N2Y3NjJlNzhlOTBmZWM2NzcwOTU0YTZlNjZhZGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMjAxNiwxMCArMjAxNiwx
MiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlzcGF0Y2hBY3Rpdml0eVN0YXRlQ2hhbmdlKCkKIAog
ICAgIGF1dG8gYWN0aXZpdHlTdGF0ZUNoYW5nZUlEID0gbV9hY3Rpdml0eVN0YXRlQ2hhbmdlV2Fu
dHNTeW5jaHJvbm91c1JlcGx5ID8gdGFrZU5leHRBY3Rpdml0eVN0YXRlQ2hhbmdlSUQoKSA6IHN0
YXRpY19jYXN0PEFjdGl2aXR5U3RhdGVDaGFuZ2VJRD4oQWN0aXZpdHlTdGF0ZUNoYW5nZUFzeW5j
aHJvbm91cyk7CiAKLSAgICBpZiAoY2hhbmdlZCB8fCBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQgIT0g
QWN0aXZpdHlTdGF0ZUNoYW5nZUFzeW5jaHJvbm91cyB8fCAhbV9uZXh0QWN0aXZpdHlTdGF0ZUNo
YW5nZUNhbGxiYWNrcy5pc0VtcHR5KCkpCi0gICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlNldEFjdGl2aXR5U3RhdGUobV9hY3Rpdml0eVN0YXRlLCBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQs
IG1fbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja3MpKTsKLQotICAgIG1fbmV4dEFjdGl2
aXR5U3RhdGVDaGFuZ2VDYWxsYmFja3MuY2xlYXIoKTsKKyAgICBpZiAoY2hhbmdlZCB8fCBhY3Rp
dml0eVN0YXRlQ2hhbmdlSUQgIT0gQWN0aXZpdHlTdGF0ZUNoYW5nZUFzeW5jaHJvbm91cyB8fCAh
bV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrcy5pc0VtcHR5KCkpIHsKKyAgICAgICAg
c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRBY3Rpdml0eVN0YXRlKG1f
YWN0aXZpdHlTdGF0ZSwgYWN0aXZpdHlTdGF0ZUNoYW5nZUlEKSwgW2NhbGxiYWNrcyA9IHN0ZDo6
ZXhjaGFuZ2UobV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrcywgeyB9KV0gKCkgbXV0
YWJsZSB7CisgICAgICAgICAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogY2FsbGJhY2tzKQorICAg
ICAgICAgICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAgIH0pOworICAgIH0KIAogICAgIC8vIFRo
aXMgbXVzdCBoYXBwZW4gYWZ0ZXIgdGhlIFNldEFjdGl2aXR5U3RhdGUgbWVzc2FnZSBpcyBzZW50
LCB0byBlbnN1cmUgdGhlIHBhZ2UgdmlzaWJpbGl0eSBldmVudCBjYW4gZmlyZS4KICAgICB1cGRh
dGVUaHJvdHRsZVN0YXRlKCk7CkBAIC00MDc3LDM5ICs0MDc5LDE5IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpydW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQoUnVuSmF2YVNjcmlwdFBhcmFt
ZXRlcnMmJiBwCiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpnZXRSZW5kZXJUcmVl
RXh0ZXJuYWxSZXByZXNlbnRhdGlvbihXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYs
IENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQ
cm94eTo6Z2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjYWxsYmFjaykKIHsKLSAgICBpZiAoIWhhc1J1bm5p
bmdQcm9jZXNzKCkpIHsKLSAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihTdHJpbmcoKSwgQ2FsbGJh
Y2tCYXNlOjpFcnJvcjo6VW5rbm93bik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0g
ICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5j
dGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdl
UHJveHk6OmdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uIl9zKSk7Ci0gICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24o
Y2FsbGJhY2tJRCkpOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6
R2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oKSwgV1RGTW92ZShjYWxsYmFjaykp
OwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U291cmNlRm9yRnJhbWUoV2ViRnJhbWVQcm94
eSogZnJhbWUsIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNl
OjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5OjpnZXRTb3Vy
Y2VGb3JGcmFtZShXZWJGcmFtZVByb3h5KiBmcmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBTdHJpbmcmKT4mJiBjYWxsYmFjaykKIHsKLSAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNz
KCkpIHsKLSAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihTdHJpbmcoKSwgQ2FsbGJhY2tCYXNlOjpF
cnJvcjo6VW5rbm93bik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgYXV0byBj
YWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1f
cHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6Omdl
dFNvdXJjZUZvckZyYW1lIl9zKSk7Ci0gICAgbV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJ
RHMuYWRkKGNhbGxiYWNrSUQpOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNvdXJj
ZUZvckZyYW1lKGZyYW1lLT5mcmFtZUlEKCksIGNhbGxiYWNrSUQpKTsKKyAgICBzZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNvdXJjZUZvckZyYW1lKGZyYW1lLT5mcmFt
ZUlEKCkpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpnZXRD
b250ZW50c0FzU3RyaW5nKENvbnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXMgaW5jbHVk
ZXNDaGlsZEZyYW1lcywgV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYsIENhbGxiYWNr
QmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0
Q29udGVudHNBc1N0cmluZyhDb250ZW50QXNTdHJpbmdJbmNsdWRlc0NoaWxkRnJhbWVzIGluY2x1
ZGVzQ2hpbGRGcmFtZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYg
Y2FsbGJhY2spCiB7Ci0gICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7Ci0gICAgICAgIGNh
bGxiYWNrRnVuY3Rpb24oU3RyaW5nKCksIENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24pOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFj
a3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OmdldENvbnRlbnRzQXNTdHJpbmciX3Mp
KTsKLSAgICBtX2xvYWREZXBlbmRlbnRTdHJpbmdDYWxsYmFja0lEcy5hZGQoY2FsbGJhY2tJRCk7
Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0Q29udGVudHNBc1N0cmluZyhpbmNsdWRl
c0NoaWxkRnJhbWVzLCBjYWxsYmFja0lEKSk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpXZWJQYWdlOjpHZXRDb250ZW50c0FzU3RyaW5nKGluY2x1ZGVzQ2hpbGRGcmFtZXMpLCBX
VEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTQxMjksMjgg
KzQxMTEsMTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldEFsbEZyYW1lcyhDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKEZyYW1lVHJlZU5vZGVEYXRhJiYpPiYmIGMKICAgICBzZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6OldlYlBhZ2U6OkdldEFsbEZyYW1lcygpLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpnZXRCeXRlY29kZVByb2ZpbGUoV1RG
OjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBj
YWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6OmdldEJ5dGVjb2RlUHJvZmlsZShD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNhbGxiYWNrKQogewotICAg
IGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgewotICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKFN0
cmluZygpLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICAKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92
ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0
aXZpdHkoIldlYlBhZ2VQcm94eTo6Z2V0Qnl0ZWNvZGVQcm9maWxlIl9zKSk7Ci0gICAgbV9sb2Fk
RGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHMuYWRkKGNhbGxiYWNrSUQpOwotICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkdldEJ5dGVjb2RlUHJvZmlsZShjYWxsYmFja0lEKSk7CisgICAgc2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRCeXRlY29kZVByb2ZpbGUoKSwg
V1RGTW92ZShjYWxsYmFjaykpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2FtcGxpbmdQ
cm9maWxlck91dHB1dChXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNr
QmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0
U2FtcGxpbmdQcm9maWxlck91dHB1dChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmlu
ZyYpPiYmIGNhbGxiYWNrKQogewotICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgewotICAg
ICAgICBjYWxsYmFja0Z1bmN0aW9uKFN0cmluZygpLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtu
b3duKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBhdXRvIGNhbGxiYWNrSUQg
PSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50
aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6Z2V0U2FtcGxpbmdQ
cm9maWxlck91dHB1dCJfcykpOwotICAgIG1fbG9hZERlcGVuZGVudFN0cmluZ0NhbGxiYWNrSURz
LmFkZChjYWxsYmFja0lEKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTYW1wbGlu
Z1Byb2ZpbGVyT3V0cHV0KGNhbGxiYWNrSUQpKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVz
c2FnZXM6OldlYlBhZ2U6OkdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQoKSwgV1RGTW92ZShjYWxs
YmFjaykpOwogfQogCiBzdGF0aWMgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIGRhdGEpPiB0b0FQSURhdGFDYWxsYmFjayhDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKEFQSTo6RGF0YSopPiYmIGNhbGxiYWNrKQpAQCAtNDE2NywxNSArNDEzNSw5IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpnZXRDb250ZW50c0FzTUhUTUxEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoQVBJOjpEYXRhKik+JiYKIH0KICNlbmRpZgogCi12b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2Vs
ZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5n
JiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFn
ZVByb3h5OjpnZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjYWxsYmFjaykKIHsKLSAgICBpZiAoIWhhc1J1bm5pbmdQ
cm9jZXNzKCkpIHsKLSAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihTdHJpbmcoKSwgQ2FsbGJhY2tC
YXNlOjpFcnJvcjo6VW5rbm93bik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAg
YXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlv
biksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJv
eHk6OmdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyJfcykpOwotICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhjYWxsYmFja0lEKSk7
CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTZWxlY3Rpb25P
ckNvbnRlbnRzQXNTdHJpbmcoKSwgY2FsbGJhY2spOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6
RGF0YSopPiYmIGNhbGxiYWNrKQpAQCAtNDU4MCwxNSArNDU0Miw2IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQ
cm94eT4mJiBwCiAgICAgICAgIG1fcHJvdmlzaW9uYWxQYWdlID0gbnVsbHB0cjsKIH0KIAotdm9p
ZCBXZWJQYWdlUHJveHk6OmNsZWFyTG9hZERlcGVuZGVudENhbGxiYWNrcygpCi17Ci0gICAgSGFz
aFNldDxDYWxsYmFja0lEPiBsb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHMgPSBXVEZNb3Zl
KG1fbG9hZERlcGVuZGVudFN0cmluZ0NhbGxiYWNrSURzKTsKLSAgICBmb3IgKGF1dG8mIGNhbGxi
YWNrSUQgOiBsb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHMpIHsKLSAgICAgICAgaWYgKGF1
dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPFN0cmluZ0NhbGxiYWNrPihjYWxsYmFja0lE
KSkKLSAgICAgICAgICAgIGNhbGxiYWNrLT5pbnZhbGlkYXRlKCk7Ci0gICAgfQotfQotCiAjaWYg
RU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKIHN0YXRpYyBPcHRpb25TZXQ8Q3Jvc3NT
aXRlTmF2aWdhdGlvbkRhdGFUcmFuc2Zlcjo6RmxhZz4gY2hlY2tJZk5hdmlnYXRpb25Db250YWlu
c0RhdGFUcmFuc2Zlcihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEgcmVxdWVzdGVyT3JpZ2luLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIGN1cnJlbnRSZXF1ZXN0KQogewpAQCAtNDY2Myw4ICs0NjE2
LDYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZShGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYKICAgICBwYWdlQ2xpZW50KCkucmVzZXRTZWN1
cmVJbnB1dFN0YXRlKCk7CiAjZW5kaWYKIAotICAgIGNsZWFyTG9hZERlcGVuZGVudENhbGxiYWNr
cygpOwotCiAgICAgZnJhbWUtPmRpZENvbW1pdExvYWQobWltZVR5cGUsIHdlYkNlcnRpZmljYXRl
SW5mbywgY29udGFpbnNQbHVnaW5Eb2N1bWVudCk7CiAKICAgICBpZiAoZnJhbWUtPmlzTWFpbkZy
YW1lKCkpIHsKQEAgLTQ4MjcsOCArNDc3OCw2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWls
TG9hZEZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJiYKICAg
ICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkgJiYgbmF2aWdhdGlvbklEKQogICAgICAgICBuYXZp
Z2F0aW9uID0gbmF2aWdhdGlvblN0YXRlKCkubmF2aWdhdGlvbihuYXZpZ2F0aW9uSUQpOwogCi0g
ICAgY2xlYXJMb2FkRGVwZW5kZW50Q2FsbGJhY2tzKCk7Ci0KICAgICBhdXRvIHRyYW5zYWN0aW9u
ID0gbV9wYWdlTG9hZFN0YXRlLnRyYW5zYWN0aW9uKCk7CiAKICAgICBib29sIGlzTWFpbkZyYW1l
ID0gZnJhbWUtPmlzTWFpbkZyYW1lKCk7CkBAIC03MTE0LDQ1ICs3MDYzLDYgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZFJlY2VpdmVFdmVudCh1aW50MzJfdCBvcGFxdWVUeXBlLCBib29sIGhhbmRs
ZWQpCiAgICAgfQogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6dm9pZENhbGxiYWNrKENhbGxiYWNr
SUQgY2FsbGJhY2tJRCkKLXsKLSAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3MudGFrZTxW
b2lkQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOwotICAgIGlmICghY2FsbGJhY2spIHsKLSAgICAgICAg
Ly8gRklYTUU6IExvZyBlcnJvciBvciBhc3NlcnQuCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrKCk7Ci19Ci0KLXZvaWQgV2ViUGFnZVByb3h5
OjpzdHJpbmdDYWxsYmFjayhjb25zdCBTdHJpbmcmIHJlc3VsdFN0cmluZywgQ2FsbGJhY2tJRCBj
YWxsYmFja0lEKQotewotICAgIGF1dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPFN0cmlu
Z0NhbGxiYWNrPihjYWxsYmFja0lEKTsKLSAgICBpZiAoIWNhbGxiYWNrKSB7Ci0gICAgICAgIC8v
IEZJWE1FOiBMb2cgZXJyb3Igb3IgYXNzZXJ0LgotICAgICAgICAvLyB0aGlzIGNhbiB2YWxpZGx5
IGhhcHBlbiBpZiBhIGxvYWQgaW52YWxpZGF0ZWQgdGhlIGNhbGxiYWNrLCB0aG91Z2gKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIG1fbG9hZERlcGVuZGVudFN0cmluZ0NhbGxiYWNrSURz
LnJlbW92ZShjYWxsYmFja0lEKTsKLQotICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRo
UmV0dXJuVmFsdWUocmVzdWx0U3RyaW5nLmltcGwoKSk7Ci19Ci0KLXZvaWQgV2ViUGFnZVByb3h5
OjppbnZhbGlkYXRlU3RyaW5nQ2FsbGJhY2soQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQotewotICAg
IGF1dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPFN0cmluZ0NhbGxiYWNrPihjYWxsYmFj
a0lEKTsKLSAgICBpZiAoIWNhbGxiYWNrKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBMb2cgZXJyb3Ig
b3IgYXNzZXJ0LgotICAgICAgICAvLyB0aGlzIGNhbiB2YWxpZGx5IGhhcHBlbiBpZiBhIGxvYWQg
aW52YWxpZGF0ZWQgdGhlIGNhbGxiYWNrLCB0aG91Z2gKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIG1fbG9hZERlcGVuZGVudFN0cmluZ0NhbGxiYWNrSURzLnJlbW92ZShjYWxsYmFja0lE
KTsKLQotICAgIGNhbGxiYWNrLT5pbnZhbGlkYXRlKCk7Ci19Ci0KIHZvaWQgV2ViUGFnZVByb3h5
OjplZGl0b3JTdGF0ZUNoYW5nZWQoY29uc3QgRWRpdG9yU3RhdGUmIGVkaXRvclN0YXRlKQogewog
ICAgIHVwZGF0ZUVkaXRvclN0YXRlKGVkaXRvclN0YXRlKTsKQEAgLTc1NTYsOSArNzQ2Niw2IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpyZXNldFN0YXRlKFJlc2V0U3RhdGVSZWFzb24gcmVzZXRTdGF0
ZVJlYXNvbikKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgbV9jYWxsYmFja3MuaW52YWxp
ZGF0ZShlcnJvcik7Ci0gICAgbV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHMuY2xlYXIo
KTsKLQogICAgIGZvciAoYXV0byYgZWRpdENvbW1hbmQgOiBzdGQ6OmV4Y2hhbmdlKG1fZWRpdENv
bW1hbmRTZXQsIHsgfSkpCiAgICAgICAgIGVkaXRDb21tYW5kLT5pbnZhbGlkYXRlKCk7CiAKQEAg
LTkyMzMsMTggKzkxNDAsMTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEVuZE1hZ25pZmljYXRp
b25HZXN0dXJlKCkKIAogI2VuZGlmCiAKLXZvaWQgV2ViUGFnZVByb3h5OjppbnN0YWxsQWN0aXZp
dHlTdGF0ZUNoYW5nZUNvbXBsZXRpb25IYW5kbGVyKEZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFnZVByb3h5OjppbnN0YWxsQWN0aXZpdHlTdGF0ZUNoYW5n
ZUNvbXBsZXRpb25IYW5kbGVyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gdm9p
ZENhbGxiYWNrID0gVm9pZENhbGxiYWNrOjpjcmVhdGUoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildIChhdXRvKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKCk7Ci0gICAgfSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHko
IldlYlBhZ2VQcm94eTo6aW5zdGFsbEFjdGl2aXR5U3RhdGVDaGFuZ2VDb21wbGV0aW9uSGFuZGxl
ciJfcykpOwotICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKHZv
aWRDYWxsYmFjaykpOwotICAgIG1fbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja3MuYXBw
ZW5kKGNhbGxiYWNrSUQpOworICAgIG1fbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja3Mu
YXBwZW5kKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OmltYWdlT3JNZWRpYURvY3VtZW50U2l6ZUNoYW5nZWQoY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYgbmV3U2l6ZSkKQEAgLTk2MTgsMzIgKzk1MjEsMjAgQEAgUmVmUHRyPEFQSTo6QXR0YWNobWVu
dD4gV2ViUGFnZVByb3h5OjphdHRhY2htZW50Rm9ySWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlk
ZW4KICAgICByZXR1cm4gbV9hdHRhY2htZW50SWRlbnRpZmllclRvQXR0YWNobWVudE1hcC5nZXQo
aWRlbnRpZmllcik7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjppbnNlcnRBdHRhY2htZW50KFJl
ZjxBUEk6OkF0dGFjaG1lbnQ+JiYgYXR0YWNobWVudCwgRnVuY3Rpb248dm9pZChDYWxsYmFja0Jh
c2U6OkVycm9yKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViUGFnZVByb3h5OjppbnNlcnRBdHRhY2ht
ZW50KFJlZjxBUEk6OkF0dGFjaG1lbnQ+JiYgYXR0YWNobWVudCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNhbGxiYWNrKQogewotICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgewot
ICAgICAgICBjYWxsYmFjayhDYWxsYmFja0Jhc2U6OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVk
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIGF1dG8gYXR0YWNobWVudElkZW50aWZp
ZXIgPSBhdHRhY2htZW50LT5pZGVudGlmaWVyKCk7Ci0gICAgYXV0byBjYWxsYmFja0lEID0gbV9j
YWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5OjppbnNlcnRBdHRhY2htZW50Il9zKSk7Ci0g
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SW5zZXJ0QXR0YWNobWVudChhdHRhY2htZW50SWRl
bnRpZmllciwgYXR0YWNobWVudC0+ZmlsZVNpemVGb3JEaXNwbGF5KCksIGF0dGFjaG1lbnQtPmZp
bGVOYW1lKCksIGF0dGFjaG1lbnQtPmNvbnRlbnRUeXBlKCksIGNhbGxiYWNrSUQpKTsKKyAgICBz
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6Okluc2VydEF0dGFjaG1lbnQoYXR0
YWNobWVudElkZW50aWZpZXIsIGF0dGFjaG1lbnQtPmZpbGVTaXplRm9yRGlzcGxheSgpLCBhdHRh
Y2htZW50LT5maWxlTmFtZSgpLCBhdHRhY2htZW50LT5jb250ZW50VHlwZSgpKSwgV1RGTW92ZShj
YWxsYmFjaykpOwogICAgIG1fYXR0YWNobWVudElkZW50aWZpZXJUb0F0dGFjaG1lbnRNYXAuc2V0
KGF0dGFjaG1lbnRJZGVudGlmaWVyLCBXVEZNb3ZlKGF0dGFjaG1lbnQpKTsKIH0KIAotdm9pZCBX
ZWJQYWdlUHJveHk6OnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IEFQSTo6QXR0YWNo
bWVudCYgYXR0YWNobWVudCwgRnVuY3Rpb248dm9pZChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBj
YWxsYmFjaykKK3ZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhj
b25zdCBBUEk6OkF0dGFjaG1lbnQmIGF0dGFjaG1lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjYWxsYmFjaykKIHsKLSAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKLSAgICAg
ICAgY2FsbGJhY2soQ2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJbnZhbGlkYXRlZCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2UgZGF0YVJlZmVyZW5jZTsKICAgICBpZiAoYXV0byBkYXRhID0gYXR0YWNobWVudC5lbmNsb3Np
bmdJbWFnZURhdGEoKSkKICAgICAgICAgZGF0YVJlZmVyZW5jZSA9IHsgKmRhdGEgfTsKIAotICAg
IGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSwgbV9w
cm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6dXBk
YXRlQXR0YWNobWVudEF0dHJpYnV0ZXMiX3MpKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpVcGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhhdHRhY2htZW50LmlkZW50aWZpZXIoKSwgYXR0
YWNobWVudC5maWxlU2l6ZUZvckRpc3BsYXkoKSwgYXR0YWNobWVudC5jb250ZW50VHlwZSgpLCBh
dHRhY2htZW50LmZpbGVOYW1lKCksIFdURk1vdmUoZGF0YVJlZmVyZW5jZSksIGNhbGxiYWNrSUQp
KTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZUF0dGFj
aG1lbnRBdHRyaWJ1dGVzKGF0dGFjaG1lbnQuaWRlbnRpZmllcigpLCBhdHRhY2htZW50LmZpbGVT
aXplRm9yRGlzcGxheSgpLCBhdHRhY2htZW50LmNvbnRlbnRUeXBlKCksIGF0dGFjaG1lbnQuZmls
ZU5hbWUoKSwgV1RGTW92ZShkYXRhUmVmZXJlbmNlKSksIFdURk1vdmUoY2FsbGJhY2spKTsKIH0K
IAogI2lmIEhBVkUoUVVJQ0tMT09LX1RIVU1CTkFJTElORykKQEAgLTk3OTksNyArOTY5MCw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpkaWRJbnNlcnRBdHRhY2htZW50V2l0aElkZW50aWZpZXIoY29u
c3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjCiAgICAgcGFnZUNsaWVudCgpLmRpZEluc2VydEF0dGFj
aG1lbnQoYXR0YWNobWVudC5nZXQoKSwgc291cmNlKTsKIAogICAgIGlmICghYXR0YWNobWVudC0+
aXNFbXB0eSgpICYmIGhhc0VuY2xvc2luZ0ltYWdlKQotICAgICAgICB1cGRhdGVBdHRhY2htZW50
QXR0cmlidXRlcyhhdHRhY2htZW50LmdldCgpLCBbXSAoYXV0bykgeyB9KTsKKyAgICAgICAgdXBk
YXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoYXR0YWNobWVudC5nZXQoKSwgW10geyB9KTsKIH0KIAog
dm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlbW92ZUF0dGFjaG1lbnRXaXRoSWRlbnRpZmllcihjb25z
dCBTdHJpbmcmIGlkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CmluZGV4IDZhNDIxNDNlOTA3NjBkMjgwMGI2MGZkZGQ0ZTc3OGM2NTVkMGExY2QuLjkyZTBmZjdh
ZmQxYjZhZDU2YWQ3NTFkYjNmZGI3NTZjNzE2NzhkZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCkBAIC0zODAsOCArMzgwLDYgQEAgZW51bSBjbGFzcyBQcm9jZXNzU3dh
cFJlcXVlc3RlZEJ5Q2xpZW50IDogYm9vbDsKIGVudW0gY2xhc3MgVW5kb09yUmVkbyA6IGJvb2w7
CiBlbnVtIGNsYXNzIFdlYkNvbnRlbnRNb2RlIDogdWludDhfdDsKIAotdHlwZWRlZiBHZW5lcmlj
Q2FsbGJhY2s8Y29uc3QgU3RyaW5nJj4gU3RyaW5nQ2FsbGJhY2s7Ci0KICNpZiBIQVZFKFZJU0lC
SUxJVFlfUFJPUEFHQVRJT05fVklFVykKIHVzaW5nIExheWVySG9zdGluZ0NvbnRleHRJRCA9IHVp
bnQzMl90OwogI2VuZGlmCkBAIC03NjQsNyArNzYyLDcgQEAgcHVibGljOgogICAgIHZvaWQgdXBk
YXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50LCBib29s
IGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQsIFJlc3BlY3RTZWxlY3Rpb25BbmNob3Is
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgdXBkYXRlU2VsZWN0
aW9uV2l0aEV4dGVudFBvaW50QW5kQm91bmRhcnkoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQsIFdl
YkNvcmU6OlRleHRHcmFudWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVt
ZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIHJlcXVlc3RB
dXRvY29ycmVjdGlvbkRhdGEoY29uc3QgU3RyaW5nJiB0ZXh0Rm9yQXV0b2NvcnJlY3Rpb24sIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQXV0b2NvcnJlY3Rpb25EYXRhKT4mJik7Ci0gICAgdm9p
ZCBhcHBseUF1dG9jb3JyZWN0aW9uKGNvbnN0IFN0cmluZyYgY29ycmVjdGlvbiwgY29uc3QgU3Ry
aW5nJiBvcmlnaW5hbFRleHQsIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2Fs
bGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAgIHZvaWQgYXBwbHlBdXRvY29ycmVjdGlvbihjb25z
dCBTdHJpbmcmIGNvcnJlY3Rpb24sIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxUZXh0LCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKICAgICBib29sIGFwcGx5QXV0b2Nv
cnJlY3Rpb24oY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFs
VGV4dCk7CiAgICAgdm9pZCByZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0KCk7CiAgICAgdm9p
ZCBoYW5kbGVBdXRvY29ycmVjdGlvbkNvbnRleHQoY29uc3QgV2ViQXV0b2NvcnJlY3Rpb25Db250
ZXh0Jik7CkBAIC0xMTE0LDIyICsxMTEyLDIyIEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZEZhaWxU
b0ZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBkaWRGaW5kU3RyaW5nTWF0Y2hl
cyhjb25zdCBTdHJpbmcmLCBjb25zdCBWZWN0b3I8VmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+PiYg
bWF0Y2hSZWN0cywgaW50MzJfdCBmaXJzdEluZGV4QWZ0ZXJTZWxlY3Rpb24pOwogCi0gICAgdm9p
ZCBnZXRDb250ZW50c0FzU3RyaW5nKENvbnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXMs
IFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4m
Jik7CisgICAgdm9pZCBnZXRDb250ZW50c0FzU3RyaW5nKENvbnRlbnRBc1N0cmluZ0luY2x1ZGVz
Q2hpbGRGcmFtZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOwog
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgZ2V0Q29udGVudHNBc0F0dHJpYnV0ZWRTdHJp
bmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpBdHRyaWJ1dGVkU3RyaW5n
Jik+JiYpOwogI2VuZGlmCi0gICAgdm9pZCBnZXRCeXRlY29kZVByb2ZpbGUoV1RGOjpGdW5jdGlv
bjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7Ci0gICAgdm9p
ZCBnZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3Ry
aW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAgIHZvaWQgZ2V0Qnl0ZWNvZGVQcm9m
aWxlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOworICAgIHZvaWQg
Z2V0U2FtcGxpbmdQcm9maWxlck91dHB1dChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0
cmluZyYpPiYmKTsKIAogI2lmIEVOQUJMRShNSFRNTCkKICAgICB2b2lkIGdldENvbnRlbnRzQXNN
SFRNTERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBUEk6OkRhdGEqKT4mJik7CiAjZW5kaWYK
ICAgICB2b2lkIGdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKFdlYkZyYW1lUHJveHkqLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6RGF0YSopPiYmKTsKICAgICB2b2lkIGdldFJlc291cmNl
RGF0YUZyb21GcmFtZShXZWJGcmFtZVByb3h5JiwgQVBJOjpVUkwqLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKEFQSTo6RGF0YSopPiYmKTsKLSAgICB2b2lkIGdldFJlbmRlclRyZWVFeHRlcm5hbFJl
cHJlc2VudGF0aW9uKFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tC
YXNlOjpFcnJvcik+JiYpOwotICAgIHZvaWQgZ2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5n
KFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+
JiYpOworICAgIHZvaWQgZ2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJik7CisgICAgdm9pZCBnZXRTZWxlY3Rp
b25PckNvbnRlbnRzQXNTdHJpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcm
KT4mJik7CiAgICAgdm9pZCBnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoQVBJOjpEYXRhKik+JiYpOwotICAgIHZvaWQgZ2V0U291cmNlRm9yRnJhbWUo
V2ViRnJhbWVQcm94eSosIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJh
Y2tCYXNlOjpFcnJvcik+JiYpOworICAgIHZvaWQgZ2V0U291cmNlRm9yRnJhbWUoV2ViRnJhbWVQ
cm94eSosIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOwogICAgIHZv
aWQgZ2V0V2ViQXJjaGl2ZU9mRnJhbWUoV2ViRnJhbWVQcm94eSosIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoQVBJOjpEYXRhKik+JiYpOwogICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1l
KFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoRXhwZWN0ZWQ8UmVmUHRyPEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgV2ViQ29yZTo6
RXhjZXB0aW9uRGV0YWlscz4mJik+JiYpOwogICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluRnJhbWVJ
blNjcmlwdFdvcmxkKFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIE9wdGlvbmFs
PFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIEFQSTo6Q29udGVudFdvcmxkJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChFeHBlY3RlZDxSZWZQdHI8QVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+
LCBXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiYmKT4mJik7CkBAIC0xNDc3LDcgKzE0NzUsNyBA
QCBwdWJsaWM6CiAKICAgICBib29sIHNjcm9sbGluZ1VwZGF0ZXNEaXNhYmxlZEZvclRlc3Rpbmco
KTsKIAotICAgIHZvaWQgaW5zdGFsbEFjdGl2aXR5U3RhdGVDaGFuZ2VDb21wbGV0aW9uSGFuZGxl
cihGdW5jdGlvbjx2b2lkKCk+JiYpOworICAgIHZvaWQgaW5zdGFsbEFjdGl2aXR5U3RhdGVDaGFu
Z2VDb21wbGV0aW9uSGFuZGxlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAjaWYg
VVNFKFVOSUZJRURfVEVYVF9DSEVDS0lORykKICAgICB2b2lkIGNoZWNrVGV4dE9mUGFyYWdyYXBo
KGNvbnN0IFN0cmluZyYgdGV4dCwgT3B0aW9uU2V0PFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGU+
IGNoZWNraW5nVHlwZXMsIGludDMyX3QgaW5zZXJ0aW9uUG9pbnQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoVmVjdG9yPFdlYkNvcmU6OlRleHRDaGVja2luZ1Jlc3VsdD4mJik+JiYpOwpAQCAtMTYx
NSw4ICsxNjEzLDggQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkK
ICAgICBSZWZQdHI8QVBJOjpBdHRhY2htZW50PiBhdHRhY2htZW50Rm9ySWRlbnRpZmllcihjb25z
dCBTdHJpbmcmIGlkZW50aWZpZXIpIGNvbnN0OwotICAgIHZvaWQgaW5zZXJ0QXR0YWNobWVudChS
ZWY8QVBJOjpBdHRhY2htZW50PiYmLCBGdW5jdGlvbjx2b2lkKENhbGxiYWNrQmFzZTo6RXJyb3Ip
PiYmKTsKLSAgICB2b2lkIHVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IEFQSTo6QXR0
YWNobWVudCYsIEZ1bmN0aW9uPHZvaWQoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAgIHZv
aWQgaW5zZXJ0QXR0YWNobWVudChSZWY8QVBJOjpBdHRhY2htZW50PiYmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgdXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoY29u
c3QgQVBJOjpBdHRhY2htZW50JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2
b2lkIHNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YUZvcklkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6U2VyaWFsaXpl
ZEF0dGFjaG1lbnREYXRhPiYmKT4mJik7CiAgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVu
dGlmaWVyKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgZGlkSW52YWxpZGF0ZURhdGFGb3JBdHRh
Y2htZW50KEFQSTo6QXR0YWNobWVudCYpOwpAQCAtMjE1MywxMCArMjE1MSw2IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBkaXNjYXJkUXVldWVkTW91c2VFdmVudHMoKTsKIAogICAgIHZvaWQgZGlkUmVj
ZWl2ZUV2ZW50KHVpbnQzMl90IG9wYXF1ZVR5cGUsIGJvb2wgaGFuZGxlZCk7Ci0KLSAgICB2b2lk
IHZvaWRDYWxsYmFjayhDYWxsYmFja0lEKTsKLSAgICB2b2lkIHN0cmluZ0NhbGxiYWNrKGNvbnN0
IFN0cmluZyYsIENhbGxiYWNrSUQpOwotICAgIHZvaWQgaW52YWxpZGF0ZVN0cmluZ0NhbGxiYWNr
KENhbGxiYWNrSUQpOwogI2lmIFBMQVRGT1JNKE1BQykKICAgICB2b2lkIGRpZFVwZGF0ZVJlbmRl
cmluZ0FmdGVyQ29tbWl0dGluZ0xvYWQoKTsKICAgICB2b2lkIGZvbnRBdFNlbGVjdGlvbkNhbGxi
YWNrKGNvbnN0IEZvbnRJbmZvJiwgZG91YmxlLCBib29sLCBDYWxsYmFja0lEKTsKQEAgLTIyMzMs
OCArMjIyNyw2IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPE5TQXJyYXk+IG1fZGF0YURldGVj
dGlvblJlc3VsdHM7CiAjZW5kaWYKIAotICAgIHZvaWQgY2xlYXJMb2FkRGVwZW5kZW50Q2FsbGJh
Y2tzKCk7Ci0KICAgICB2b2lkIHBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJv
bGxlckFjdGlvbiwgV2ViQ29yZTo6RHJhZ0RhdGEmLCBjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdl
TmFtZSwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZUFycmF5JiYpOwogCiAgICAgdm9pZCB1cGRhdGVCYWNraW5nU3RvcmVEaXNjYXJkYWJsZVN0YXRl
KCk7CkBAIC0yNDg0LDkgKzI0NzYsNiBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eT4gbV9jcmVkZW50aWFsc01lc3NlbmdlcjsK
ICNlbmRpZgogCi0gICAgQ2FsbGJhY2tNYXAgbV9jYWxsYmFja3M7Ci0gICAgSGFzaFNldDxDYWxs
YmFja0lEPiBtX2xvYWREZXBlbmRlbnRTdHJpbmdDYWxsYmFja0lEczsKLQogICAgIEhhc2hTZXQ8
V2ViRWRpdENvbW1hbmRQcm94eSo+IG1fZWRpdENvbW1hbmRTZXQ7CiAKICNpZiBQTEFURk9STShD
T0NPQSkKQEAgLTI3NjQsNyArMjc1Myw3IEBAIHByaXZhdGU6CiAKICAgICBPcHRpb25TZXQ8V2Vi
Q29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZz4gbV9wb3RlbnRpYWxseUNoYW5nZWRBY3Rpdml0eVN0
YXRlRmxhZ3M7CiAgICAgYm9vbCBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VXYW50c1N5bmNocm9ub3Vz
UmVwbHkgeyBmYWxzZSB9OwotICAgIFZlY3RvcjxDYWxsYmFja0lEPiBtX25leHRBY3Rpdml0eVN0
YXRlQ2hhbmdlQ2FsbGJhY2tzOworICAgIFZlY3RvcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
PiBtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tzOwogCiAgICAgV2ViQ29yZTo6TWVk
aWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIG1fbWVkaWFTdGF0ZSB7IFdlYkNvcmU6Ok1lZGlh
UHJvZHVjZXI6OklzTm90UGxheWluZyB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggNjQ5ZjhlMTJhODgwNzM1ODg2ZDUzZTkw
YTQxMGRkODcwZDcxYWRlZS4uZTljZmRmZTNjNDMzMzE1OWIwMmMzNDliYTg3Y2EwMzliNTk3NDg2
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdl
cy5pbgpAQCAtMTYyLDEwICsxNjIsNiBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAg
ICMgRm9ybXMgbWVzc2FnZXMKICAgICBXaWxsU3VibWl0Rm9ybShXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIHNvdXJjZUZyYW1lSUQsIFZl
Y3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiB0ZXh0RmllbGRWYWx1ZXMsIHVpbnQ2NF90
IGxpc3RlbmVySUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAKLSAgICAjIENhbGxiYWNr
IG1lc3NhZ2VzCi0gICAgVm9pZENhbGxiYWNrKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lE
KQotICAgIFN0cmluZ0NhbGxiYWNrKFN0cmluZyByZXN1bHRTdHJpbmcsIFdlYktpdDo6Q2FsbGJh
Y2tJRCBjYWxsYmFja0lEKQotICAgIEludmFsaWRhdGVTdHJpbmdDYWxsYmFjayhXZWJLaXQ6OkNh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIEludGVy
cHJldEtleUV2ZW50KHN0cnVjdCBXZWJLaXQ6OkVkaXRvclN0YXRlIHN0YXRlLCBib29sIGlzQ2hh
ckV2ZW50KSAtPiAoYm9vbCBoYW5kbGVkKSBTeW5jaHJvbm91cwogICAgIERpZFJlY2VpdmVQb3Np
dGlvbkluZm9ybWF0aW9uKHN0cnVjdCBXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBv
c2l0aW9uIGluZm9ybWF0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggOWQ1NjFmNWQzYmZjNzEwMTg0
ODFiZTJjYmNjMTM4NDY0YTc4MmNkYi4uNDU2ZDdiY2FiYTBhZWNiNTBkMDk5YmNhYjRjNzJjMmU5
MmViMTE5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC0zMjE3LDEwICszMjE3LDcgQEAgRk9SX0VBQ0hf
UFJJVkFURV9XS0NPTlRFTlRWSUVXX0FDVElPTihGT1JXQVJEX0FDVElPTl9UT19XS1dFQlZJRVcp
CiAtICh2b2lkKV9zaGFyZUZvcldlYlZpZXc6KGlkKXNlbmRlcgogewogICAgIFJldGFpblB0cjxX
S0NvbnRlbnRWaWV3PiB2aWV3ID0gc2VsZjsKLSAgICBfcGFnZS0+Z2V0U2VsZWN0aW9uT3JDb250
ZW50c0FzU3RyaW5nKFt2aWV3XShjb25zdCBTdHJpbmcmIHN0cmluZywgV2ViS2l0OjpDYWxsYmFj
a0Jhc2U6OkVycm9yIGVycm9yKSB7Ci0gICAgICAgIGlmIChlcnJvciAhPSBXZWJLaXQ6OkNhbGxi
YWNrQmFzZTo6RXJyb3I6Ok5vbmUpCi0gICAgICAgICAgICByZXR1cm47Ci0KKyAgICBfcGFnZS0+
Z2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKFt2aWV3XShjb25zdCBTdHJpbmcmIHN0cmlu
ZykgewogICAgICAgICBpZiAoIXZpZXctPl90ZXh0SW50ZXJhY3Rpb25Bc3Npc3RhbnQgfHwgIXN0
cmluZyB8fCB2aWV3LT5fcGFnZS0+ZWRpdG9yU3RhdGUoKS5pc01pc3NpbmdQb3N0TGF5b3V0RGF0
YSkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMzc5Niw5ICszNzkzLDcgQEAgV0VCQ09SRV9D
T01NQU5EX0ZPUl9XRUJWSUVXKHBhc3RlQW5kTWF0Y2hTdHlsZSk7CiAjZW5kaWYKIAogICAgIFJl
dGFpblB0cjxXS0NvbnRlbnRWaWV3PiB2aWV3ID0gc2VsZjsKLSAgICBfcGFnZS0+Z2V0U2VsZWN0
aW9uT3JDb250ZW50c0FzU3RyaW5nKFt2aWV3XShjb25zdCBTdHJpbmcmIHN0cmluZywgV2ViS2l0
OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7Ci0gICAgICAgIGlmIChlcnJvciAhPSBXZWJL
aXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpCi0gICAgICAgICAgICByZXR1cm47CisgICAg
X3BhZ2UtPmdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhbdmlld10oY29uc3QgU3RyaW5n
JiBzdHJpbmcpIHsKICAgICAgICAgaWYgKCFzdHJpbmcpCiAgICAgICAgICAgICByZXR1cm47CiAK
QEAgLTM4MTAsOSArMzgwNSw3IEBAIFdFQkNPUkVfQ09NTUFORF9GT1JfV0VCVklFVyhwYXN0ZUFu
ZE1hdGNoU3R5bGUpOwogewogICAgIFJldGFpblB0cjxXS0NvbnRlbnRWaWV3PiB2aWV3ID0gc2Vs
ZjsKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gX3dlYlZpZXcuZ2V0KCk7Ci0g
ICAgX3BhZ2UtPmdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhbdmlldywgd2ViVmlld10o
Y29uc3QgU3RyaW5nJiBzdHJpbmcsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikg
ewotICAgICAgICBpZiAoZXJyb3IgIT0gV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25l
KQotICAgICAgICAgICAgcmV0dXJuOworICAgIF9wYWdlLT5nZXRTZWxlY3Rpb25PckNvbnRlbnRz
QXNTdHJpbmcoW3ZpZXcsIHdlYlZpZXddKGNvbnN0IFN0cmluZyYgc3RyaW5nKSB7CiAgICAgICAg
IFt3ZWJWaWV3IF9hY2Nlc3NpYmlsaXR5RGlkR2V0U3BlYWtTZWxlY3Rpb25Db250ZW50OnN0cmlu
Z107CiAgICAgICAgIGlmIChbdmlldyByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGFjY2Vz
c2liaWxpdHlTcGVha1NlbGVjdGlvblNldENvbnRlbnQ6KV0pCiAgICAgICAgICAgICBbdmlldyBh
Y2Nlc3NpYmlsaXR5U3BlYWtTZWxlY3Rpb25TZXRDb250ZW50OnN0cmluZ107CkBAIC00Mzc4LDcg
KzQzNzEsNyBAQCBzdGF0aWMgdm9pZCBzZWxlY3Rpb25DaGFuZ2VkV2l0aFRvdWNoKFdLQ29udGVu
dFZpZXcgKnZpZXcsIGNvbnN0IFdlYkNvcmU6OkludFBvaQogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgX3BhZ2UtPmFwcGx5QXV0b2NvcnJlY3Rpb24oY29ycmVjdGlvbiwgaW5wdXQsIFt2
aWV3ID0gcmV0YWluUHRyKHNlbGYpLCBjb21wbGV0aW9uID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRp
b25IYW5kbGVyKV0oYXV0byYgc3RyaW5nLCBhdXRvIGVycm9yKSB7CisgICAgX3BhZ2UtPmFwcGx5
QXV0b2NvcnJlY3Rpb24oY29ycmVjdGlvbiwgaW5wdXQsIFt2aWV3ID0gcmV0YWluUHRyKHNlbGYp
LCBjb21wbGV0aW9uID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byYgc3Ry
aW5nKSB7CiAgICAgICAgIGlmIChjb21wbGV0aW9uKQogICAgICAgICAgICAgY29tcGxldGlvbigh
c3RyaW5nLmlzTnVsbCgpID8gW1dLQXV0b2NvcnJlY3Rpb25SZWN0cyBhdXRvY29ycmVjdGlvblJl
Y3RzV2l0aEZpcnN0Q0dSZWN0OnZpZXctPl9hdXRvY29ycmVjdGlvbkRhdGEudGV4dEZpcnN0UmVj
dCBsYXN0Q0dSZWN0OnZpZXctPl9hdXRvY29ycmVjdGlvbkRhdGEudGV4dExhc3RSZWN0XSA6IG5p
bCk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2Vi
UGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94
eUlPUy5tbQppbmRleCBlMTY5YTcyZmM5YjdlNjA2ODBiNGRiNDE5YmU5ZmQ0Mzg1ZjZhMWEyLi42
ODAxMThjOGZkZDg3YjIzNDdkY2E1YzcwN2U5NzA4MjNhYzkwYzQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KQEAgLTQzMCwxNSArNDMwLDkg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RBdXRvY29ycmVjdGlvbkRhdGEoY29uc3QgU3Ry
aW5nJiB0ZXh0Rm9yQXV0b2NvcnJlY3Rpb24KICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlJlcXVlc3RBdXRvY29ycmVjdGlvbkRhdGEodGV4dEZvckF1dG9jb3JyZWN0
aW9uKSwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6YXBwbHlB
dXRvY29ycmVjdGlvbihjb25zdCBTdHJpbmcmIGNvcnJlY3Rpb24sIGNvbnN0IFN0cmluZyYgb3Jp
Z2luYWxUZXh0LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFz
ZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6YXBwbHlB
dXRvY29ycmVjdGlvbihjb25zdCBTdHJpbmcmIGNvcnJlY3Rpb24sIGNvbnN0IFN0cmluZyYgb3Jp
Z2luYWxUZXh0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNhbGxi
YWNrKQogewotICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgewotICAgICAgICBjYWxsYmFj
a0Z1bmN0aW9uKFN0cmluZygpLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1
dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tn
cm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5OjphcHBseUF1dG9jb3JyZWN0aW9uIl9zKSk7Ci0g
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBcHBseUF1dG9jb3JyZWN0aW9u
KGNvcnJlY3Rpb24sIG9yaWdpbmFsVGV4dCwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKKyAg
ICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OkFwcGx5QXV0b2NvcnJlY3Rp
b24oY29ycmVjdGlvbiwgb3JpZ2luYWxUZXh0KSwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCiBi
b29sIFdlYlBhZ2VQcm94eTo6YXBwbHlBdXRvY29ycmVjdGlvbihjb25zdCBTdHJpbmcmIGNvcnJl
Y3Rpb24sIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxUZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9XS1RleHRGaW5kZXJDbGllbnQubW0KaW5kZXggNmE3ZTYyMDdlZDU4Y2I4
M2U4NmNjYjMzM2IxODZjOGY4MTNhNGFjMy4uMjk0M2ViNmFlYTBkODljNGJjYjE1OTk5M2ZkMmFk
Mzc2NzExZjYxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLVGV4
dEZpbmRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tUZXh0
RmluZGVyQ2xpZW50Lm1tCkBAIC0yNDMsNyArMjQzLDcgQEAgcHJpdmF0ZToKIHsKICAgICB2b2lk
ICheY29waWVkQ29tcGxldGlvbkhhbmRsZXIpKE5TU3RyaW5nICopID0gQmxvY2tfY29weShjb21w
bGV0aW9uSGFuZGxlcik7CiAKLSAgICBfcGFnZS0+Z2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3Ry
aW5nKFtjb3BpZWRDb21wbGV0aW9uSGFuZGxlcl0gKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBXZWJL
aXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpIHsKKyAgICBfcGFnZS0+Z2V0U2VsZWN0aW9uT3JDb250
ZW50c0FzU3RyaW5nKFtjb3BpZWRDb21wbGV0aW9uSGFuZGxlcl0gKGNvbnN0IFN0cmluZyYgc3Ry
aW5nKSB7CiAgICAgICAgIGNvcGllZENvbXBsZXRpb25IYW5kbGVyKHN0cmluZyk7CiAgICAgICAg
IEJsb2NrX3JlbGVhc2UoY29waWVkQ29tcGxldGlvbkhhbmRsZXIpOwogICAgIH0pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaAppbmRleCBi
NDg2YjI0NjM2NzYxZWQ4MDQ5NjZhOWUxOGY1OGNiZmQ1NjI4Y2Y1Li5hYTE2ODM0YzIxNjIzYWY5
OWFiYWQ0ZWRhMWFkNDdlMTFhOGNmMDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaApAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvTm90aWZpY2F0aW9uQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RpZmlj
YXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3Jp
Z2luSGFzaC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVm9pZENhbGxiYWNrLmg+CiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuaAppbmRleCAwMGNjMGEwOGQ5
MjYwNGZkZGZiNWNhNjJmNmI4ODU5NWMzMWFiMGQyLi44MWYxZGU0NjFmMWVjM2FiNjBjNjUxOWZl
YmRmMDI4NzdmNmM4OTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5oCkBAIC0zMyw3
ICszMyw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBOb3RpZmljYXRpb25QZXJtaXNz
aW9uQ2FsbGJhY2s7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgVm9pZENh
bGxiYWNrOwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGlu
YXRlZEdyYXBoaWNzLmNwcAppbmRleCBmYTE3ZGI2NzdmZmRmMGQ0ZDhjMmZmMjU0ZGE1MjhlY2I3
Yjk2YjkzLi4zZTk2N2E2ZjVjNmNkMzc1MTczZjUxMzQ2MDdjYzVhZWU0Y2E4ODViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L0RyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5h
dGVkR3JhcGhpY3MuY3BwCkBAIC0zODUsNyArMzg1LDcgQEAgUmVmUHRyPERpc3BsYXlSZWZyZXNo
TW9uaXRvcj4gRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzOjpjcmVhdGVEaXNwbGF5UmVm
cmUKICAgICByZXR1cm4gbV9sYXllclRyZWVIb3N0LT5jcmVhdGVEaXNwbGF5UmVmcmVzaE1vbml0
b3IoZGlzcGxheUlEKTsKIH0KIAotdm9pZCBEcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3M6
OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+IGNo
YW5nZWQsIEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCwgY29uc3QgVmVjdG9yPENhbGxiYWNrSUQ+JikK
K3ZvaWQgRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzOjphY3Rpdml0eVN0YXRlRGlkQ2hh
bmdlKE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnPiBjaGFuZ2VkLCBBY3Rpdml0eVN0YXRl
Q2hhbmdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBpZiAoY2hhbmdlZCAmIEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSkgewogICAgICAg
ICBpZiAobV93ZWJQYWdlLmlzVmlzaWJsZSgpKQpAQCAtMzkzLDYgKzM5Myw3IEBAIHZvaWQgRHJh
d2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzOjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKE9wdGlv
blNldDxBY3Rpdml0eVN0CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHN1c3BlbmRQYWludGlu
ZygpOwogICAgIH0KKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCiB2b2lkIERyYXdpbmdB
cmVhQ29vcmRpbmF0ZWRHcmFwaGljczo6YXR0YWNoVmlld092ZXJsYXlHcmFwaGljc0xheWVyKEdy
YXBoaWNzTGF5ZXIqIHZpZXdPdmVybGF5Um9vdExheWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNv
b3JkaW5hdGVkR3JhcGhpY3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmgKaW5kZXgg
YmI0MDk0YjUzMDY5ZmFiM2Y5MmE0ZDAzZjViNWNlYTIyY2ExYzM3Mi4uZjk2YzRiYjU3NjM0ZmY0
MDEwZWRlYmJhODUxZDY3ZWY5NGMwZjRiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVk
R3JhcGhpY3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5oCkBAIC03Nyw3ICs3
Nyw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgUmVmUHRyPFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNo
TW9uaXRvcj4gY3JlYXRlRGlzcGxheVJlZnJlc2hNb25pdG9yKFdlYkNvcmU6OlBsYXRmb3JtRGlz
cGxheUlEKSBvdmVycmlkZTsKIAotICAgIHZvaWQgYWN0aXZpdHlTdGF0ZURpZENoYW5nZShPcHRp
b25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZz4sIEFjdGl2aXR5U3RhdGVDaGFuZ2VJ
RCwgY29uc3QgVmVjdG9yPENhbGxiYWNrSUQ+JiAvKiBjYWxsYmFja0lEcyAqLykgb3ZlcnJpZGU7
CisgICAgdm9pZCBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKE9wdGlvblNldDxXZWJDb3JlOjpBY3Rp
dml0eVN0YXRlOjpGbGFnPiwgQWN0aXZpdHlTdGF0ZUNoYW5nZUlELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgYXR0YWNoVmlld092ZXJsYXlHcmFwaGlj
c0xheWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKSBvdmVycmlkZTsKIAogICAgIC8vIElQQyBt
ZXNzYWdlIGhhbmRsZXJzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Ry
YXdpbmdBcmVhLmgKaW5kZXggMTZmZDNjMzY0ZmM3ZWI5ZGI5ZjMxODU5ZjY3MmY0MjE1ZjU1YjVh
Yi4uNjRkNTMyOWI4NjYwOGJjMDJkNDY3Y2Q0M2VjZGVmNzJiNTRhMjcxZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCkBAIC0xMjEsNyArMTIx
LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoQWZ0ZXJFbnN1cmluZ1Vw
ZGF0ZWRTY3JvbGxQb3NpdGlvbihXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYpOwogCi0gICAgdmly
dHVhbCB2b2lkIGFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoT3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2
aXR5U3RhdGU6OkZsYWc+LCBBY3Rpdml0eVN0YXRlQ2hhbmdlSUQsIGNvbnN0IFZlY3RvcjxDYWxs
YmFja0lEPiYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKE9w
dGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPiwgQWN0aXZpdHlTdGF0ZUNoYW5n
ZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29t
cGxldGlvbkhhbmRsZXIoKTsgfTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJIb3N0aW5nTW9k
ZShMYXllckhvc3RpbmdNb2RlKSB7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBtYXJrTGF5ZXJzVm9s
YXRpbGVJbW1lZGlhdGVseUlmUG9zc2libGUoKSB7IHJldHVybiB0cnVlOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oCmluZGV4IDI3Zjkz
NmYzMTkwNGUxNTgzNDY0NTQxZjVkMDVhOTEwMzBjMjEwNzUuLjYzMWYyYTYxMThiODBkMGY3MTk1
ZTYwNzMyMmYxYTEwMmIyODhjYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYS5oCkBAIC0xMDYsNyArMTA2LDcgQEAgcHJpdmF0ZToKIAog
ICAgIHZvaWQgbWFpbkZyYW1lQ29udGVudFNpemVDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6OkludFNp
emUmKSBvdmVycmlkZTsKIAotICAgIHZvaWQgYWN0aXZpdHlTdGF0ZURpZENoYW5nZShPcHRpb25T
ZXQ8V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZz4gY2hhbmdlZCwgQWN0aXZpdHlTdGF0ZUNo
YW5nZUlELCBjb25zdCBWZWN0b3I8Q2FsbGJhY2tJRD4mIGNhbGxiYWNrSURzKSBvdmVycmlkZTsK
KyAgICB2b2lkIGFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoT3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2
aXR5U3RhdGU6OkZsYWc+IGNoYW5nZWQsIEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKIAogICAgIGJvb2wgYWRkTWlsZXN0b25lc1Rv
RGlzcGF0Y2goT3B0aW9uU2V0PFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZT4pIG92ZXJyaWRlOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXll
clRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEu
bW0KaW5kZXggZDgyMDU1ZmYyMDQ1NGQ1NWY5NThiNGM1MDU3N2Q5ODg3OWI2NjBhMC4uNWFiZTk5
ZjlmYjRlYmE3NWE5NWExZDFjODRmODFiY2EyNzBjZGE3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQpAQCAtNDgzLDcgKzQ4Myw3
IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OkJhY2tpbmdTdG9yZUZsdXNoZXI6
OmZsdXNoKCkKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmRNZXNzYWdlKFdURk1vdmUobV9jb21taXRF
bmNvZGVyKSwgeyB9KTsKIH0KIAotdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6YWN0
aXZpdHlTdGF0ZURpZENoYW5nZShPcHRpb25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6Rmxh
Zz4sIEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQsIGNvbnN0IFZl
Y3RvcjxDYWxsYmFja0lEPiYgY2FsbGJhY2tJRHMpCit2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhOjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0
eVN0YXRlOjpGbGFnPiwgQWN0aXZpdHlTdGF0ZUNoYW5nZUlEIGFjdGl2aXR5U3RhdGVDaGFuZ2VJ
RCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrKQogewogICAgIC8vIEZJWE1F
OiBTaG91bGQgd2Ugc3VzcGVuZCBwYWludGluZyB3aGlsZSBub3QgdmlzaWJsZSwgbGlrZSBUaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYT8gUHJvYmFibHkuCiAKQEAgLTQ5NSw4ICs0OTUsNyBA
QCB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdl
KE9wdGlvblNldDxXZWJDb3JlOjpBY3RpdgogCiAgICAgLy8gRklYTUU6IFdlIG1heSB3YW50IHRv
IG1hdGNoIGJlaGF2aW9yIGluIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhIGJ5IGZpcmlu
ZyB0aGVzZSBjYWxsYmFja3MgYWZ0ZXIgdGhlIG5leHQgY29tcG9zaXRpbmcgZmx1c2gsIHJhdGhl
ciB0aGFuIGltbWVkaWF0ZWx5IGFmdGVyCiAgICAgLy8gaGFuZGxpbmcgYW4gYWN0aXZpdHkgc3Rh
dGUgY2hhbmdlLgotICAgIGZvciAoYXV0byYgY2FsbGJhY2tJRCA6IGNhbGxiYWNrSURzKQotICAg
ICAgICBtX3dlYlBhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpWb2lkQ2FsbGJhY2so
Y2FsbGJhY2tJRCkpOworICAgIGNhbGxiYWNrKCk7CiB9CiAKIHZvaWQgUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWE6OmFkZFRyYW5zYWN0aW9uQ2FsbGJhY2tJRChDYWxsYmFja0lEIGNhbGxiYWNr
SUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4
IDE1OWVmMjBjOTBkNGNlMmFmOWU4MjliNjU5NzM2ZjAzMTFmZmE0ZWUuLmI1MTk4NzFhMDRiNTNl
ZWZkZjRiY2UyMmU4ZTNlNWRmMjUxN2M1MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC05MjMsNyArOTIzLDcgQEAgdm9pZCBXZWJQYWdlOjpy
ZWluaXRpYWxpemVXZWJQYWdlKFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJz
KQogICAgIHNldFNpemVUb0NvbnRlbnRBdXRvU2l6ZU1heGltdW1TaXplKHBhcmFtZXRlcnMuc2l6
ZVRvQ29udGVudEF1dG9TaXplTWF4aW11bVNpemUpOwogCiAgICAgaWYgKG1fYWN0aXZpdHlTdGF0
ZSAhPSBwYXJhbWV0ZXJzLmFjdGl2aXR5U3RhdGUpCi0gICAgICAgIHNldEFjdGl2aXR5U3RhdGUo
cGFyYW1ldGVycy5hY3Rpdml0eVN0YXRlLCBBY3Rpdml0eVN0YXRlQ2hhbmdlQXN5bmNocm9ub3Vz
LCBWZWN0b3I8Q2FsbGJhY2tJRD4oKSk7CisgICAgICAgIHNldEFjdGl2aXR5U3RhdGUocGFyYW1l
dGVycy5hY3Rpdml0eVN0YXRlLCBBY3Rpdml0eVN0YXRlQ2hhbmdlQXN5bmNocm9ub3VzLCBbXSB7
IH0pOwogICAgIGlmIChtX2xheWVySG9zdGluZ01vZGUgIT0gcGFyYW1ldGVycy5sYXllckhvc3Rp
bmdNb2RlKQogICAgICAgICBzZXRMYXllckhvc3RpbmdNb2RlKHBhcmFtZXRlcnMubGF5ZXJIb3N0
aW5nTW9kZSk7CiAKQEAgLTMzNjIsNyArMzM2Miw3IEBAIHZvaWQgV2ViUGFnZTo6dmlzaWJpbGl0
eURpZENoYW5nZSgpCiAgICAgfQogfQogCi12b2lkIFdlYlBhZ2U6OnNldEFjdGl2aXR5U3RhdGUo
T3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+IGFjdGl2aXR5U3RhdGUsIEFjdGl2aXR5U3Rh
dGVDaGFuZ2VJRCBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQsIGNvbnN0IFZlY3RvcjxDYWxsYmFja0lE
PiYgY2FsbGJhY2tJRHMpCit2b2lkIFdlYlBhZ2U6OnNldEFjdGl2aXR5U3RhdGUoT3B0aW9uU2V0
PEFjdGl2aXR5U3RhdGU6OkZsYWc+IGFjdGl2aXR5U3RhdGUsIEFjdGl2aXR5U3RhdGVDaGFuZ2VJ
RCBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxs
YmFjaykKIHsKICAgICBMT0dfV0lUSF9TVFJFQU0oQWN0aXZpdHlTdGF0ZSwgc3RyZWFtIDw8ICJX
ZWJQYWdlICIgPDwgaWRlbnRpZmllcigpLnRvVUludDY0KCkgPDwgIiBzZXRBY3Rpdml0eVN0YXRl
IHRvICIgPDwgYWN0aXZpdHlTdGF0ZSk7CiAKQEAgLTMzODEsNyArMzM4MSw3IEBAIHZvaWQgV2Vi
UGFnZTo6c2V0QWN0aXZpdHlTdGF0ZShPcHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4gYWN0
aXZpdHlTdGF0ZSwgQWN0CiAgICAgZm9yIChhdXRvKiBwbHVnaW5WaWV3IDogbV9wbHVnaW5WaWV3
cykKICAgICAgICAgcGx1Z2luVmlldy0+YWN0aXZpdHlTdGF0ZURpZENoYW5nZShjaGFuZ2VkKTsK
IAotICAgIG1fZHJhd2luZ0FyZWEtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoY2hhbmdlZCwgYWN0
aXZpdHlTdGF0ZUNoYW5nZUlELCBjYWxsYmFja0lEcyk7CisgICAgbV9kcmF3aW5nQXJlYS0+YWN0
aXZpdHlTdGF0ZURpZENoYW5nZShjaGFuZ2VkLCBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQsIFdURk1v
dmUoY2FsbGJhY2spKTsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYWdlQWN0aXZpdHlT
dGF0ZURpZENoYW5nZShtX2lkZW50aWZpZXIsIGNoYW5nZWQpOwogCiAgICAgaWYgKGNoYW5nZWQg
JiBBY3Rpdml0eVN0YXRlOjpJc0luV2luZG93KQpAQCAtMzYwOCwxMiArMzYwOCwxMiBAQCB2b2lk
IFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZChSdW5KYXZhU2NyaXB0
UGFyYW1ldGVycyYmIHBhcmFtZQogICAgIHJ1bkphdmFTY3JpcHQod2ViRnJhbWUsIFdURk1vdmUo
cGFyYW1ldGVycyksIHdvcmxkRGF0YS5maXJzdCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogfQogCi12b2lkIFdlYlBhZ2U6OmdldENvbnRlbnRzQXNTdHJpbmcoQ29udGVudEFzU3RyaW5n
SW5jbHVkZXNDaGlsZEZyYW1lcyBpbmNsdWRlQ2hpbGRGcmFtZXMsIENhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKK3ZvaWQgV2ViUGFnZTo6Z2V0Q29udGVudHNBc1N0cmluZyhDb250ZW50QXNTdHJpbmdJ
bmNsdWRlc0NoaWxkRnJhbWVzIGluY2x1ZGVDaGlsZEZyYW1lcywgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjYWxsYmFjaykKIHsKICAgICBzd2l0Y2ggKGluY2x1ZGVD
aGlsZEZyYW1lcykgewogICAgIGNhc2UgQ29udGVudEFzU3RyaW5nSW5jbHVkZXNDaGlsZEZyYW1l
czo6Tm86IHsKICAgICAgICAgU3RyaW5nIHJlc3VsdFN0cmluZyA9IG1fbWFpbkZyYW1lLT5jb250
ZW50c0FzU3RyaW5nKCk7Ci0gICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U3Ry
aW5nQ2FsbGJhY2socmVzdWx0U3RyaW5nLCBjYWxsYmFja0lEKSk7CisgICAgICAgIGNhbGxiYWNr
KHJlc3VsdFN0cmluZyk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIENvbnRlbnRB
c1N0cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXM6OlllczogewpAQCAtMzYyNyw3ICszNjI3LDcgQEAg
dm9pZCBXZWJQYWdlOjpnZXRDb250ZW50c0FzU3RyaW5nKENvbnRlbnRBc1N0cmluZ0luY2x1ZGVz
Q2hpbGRGcmFtZXMgaW5jbHVkZUNoaWwKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAg
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U3RyaW5nQ2FsbGJhY2soYnVpbGRlci50
b1N0cmluZygpLCBjYWxsYmFja0lEKSk7CisgICAgICAgIGNhbGxiYWNrKGJ1aWxkZXIudG9TdHJp
bmcoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICB9CkBAIC0zNjQwLDEwICszNjQwLDkg
QEAgdm9pZCBXZWJQYWdlOjpnZXRDb250ZW50c0FzTUhUTUxEYXRhKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgSVBDOjpTaGFyZWRCdWYKIH0KICNlbmRpZgogCi12b2lkIFdlYlBhZ2U6Omdl
dFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKENhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
K3ZvaWQgV2ViUGFnZTo6Z2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjYWxsYmFjaykKIHsKLSAgICBTdHJp
bmcgcmVzdWx0U3RyaW5nID0gcmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oKTsKLSAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlN0cmluZ0NhbGxiYWNrKHJlc3VsdFN0cmlu
ZywgY2FsbGJhY2tJRCkpOworICAgIGNhbGxiYWNrKHJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2Vu
dGF0aW9uKCkpOwogfQogCiBzdGF0aWMgRnJhbWUqIGZyYW1lV2l0aFNlbGVjdGlvbihQYWdlKiBw
YWdlKQpAQCAtMzY3MiwyMiArMzY3MSwyMiBAQCB2b2lkIFdlYlBhZ2U6OmdldFNlbGVjdGlvbkFz
V2ViQXJjaGl2ZURhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdAogICAg
IGNhbGxiYWNrKGRhdGFSZWZlcmVuY2UpOwogfQogCi12b2lkIFdlYlBhZ2U6OmdldFNlbGVjdGlv
bk9yQ29udGVudHNBc1N0cmluZyhDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6
OmdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFN0cmluZyYpPiYmIGNhbGxiYWNrKQogewogICAgIFdlYkZyYW1lKiBmb2N1c2VkT3JNYWlu
RnJhbWUgPSBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZShtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigp
LmZvY3VzZWRPck1haW5GcmFtZSgpKTsKICAgICBTdHJpbmcgcmVzdWx0U3RyaW5nID0gZm9jdXNl
ZE9yTWFpbkZyYW1lLT5zZWxlY3Rpb25Bc1N0cmluZygpOwogICAgIGlmIChyZXN1bHRTdHJpbmcu
aXNFbXB0eSgpKQogICAgICAgICByZXN1bHRTdHJpbmcgPSBmb2N1c2VkT3JNYWluRnJhbWUtPmNv
bnRlbnRzQXNTdHJpbmcoKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlN0cmlu
Z0NhbGxiYWNrKHJlc3VsdFN0cmluZywgY2FsbGJhY2tJRCkpOworICAgIGNhbGxiYWNrKHJlc3Vs
dFN0cmluZyk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Z2V0U291cmNlRm9yRnJhbWUoRnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6Z2V0
U291cmNlRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY2FsbGJhY2spCiB7CiAgICAgU3RyaW5nIHJlc3VsdFN0
cmluZzsKICAgICBpZiAoV2ViRnJhbWUqIGZyYW1lID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
d2ViRnJhbWUoZnJhbWVJRCkpCiAgICAgICAgcmVzdWx0U3RyaW5nID0gZnJhbWUtPnNvdXJjZSgp
OwogCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTdHJpbmdDYWxsYmFjayhyZXN1
bHRTdHJpbmcsIGNhbGxiYWNrSUQpKTsKKyAgICBjYWxsYmFjayhyZXN1bHRTdHJpbmcpOwogfQog
CiB2b2lkIFdlYlBhZ2U6OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKEZyYW1lSWRlbnRpZmll
ciBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVy
RGF0YVJlZmVyZW5jZSYpPiYmIGNhbGxiYWNrKQpAQCAtNjQzOCwzMyArNjQzNywyOSBAQCB2b2lk
IFdlYlBhZ2U6OnVwZGF0ZUNhY2hlZERvY3VtZW50TG9hZGVyKFdlYkRvY3VtZW50TG9hZGVyJiBk
b2N1bWVudExvYWRlciwgRnJhbQogICAgIH0KIH0KIAotdm9pZCBXZWJQYWdlOjpnZXRCeXRlY29k
ZVByb2ZpbGUoQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpnZXRCeXRlY29k
ZVByb2ZpbGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjYWxsYmFj
aykKIHsKLSAgICBpZiAoTElLRUxZKCFjb21tb25WTSgpLm1fcGVyQnl0ZWNvZGVQcm9maWxlcikp
IHsKLSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTdHJpbmdDYWxsYmFjayhT
dHJpbmcoKSwgY2FsbGJhY2tJRCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmIChM
SUtFTFkoIWNvbW1vblZNKCkubV9wZXJCeXRlY29kZVByb2ZpbGVyKSkKKyAgICAgICAgcmV0dXJu
IGNhbGxiYWNrKHsgfSk7CiAKICAgICBTdHJpbmcgcmVzdWx0ID0gY29tbW9uVk0oKS5tX3BlckJ5
dGVjb2RlUHJvZmlsZXItPnRvSlNPTigpOwogICAgIEFTU0VSVChyZXN1bHQubGVuZ3RoKCkpOwot
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U3RyaW5nQ2FsbGJhY2socmVzdWx0LCBj
YWxsYmFja0lEKSk7CisgICAgY2FsbGJhY2socmVzdWx0KTsKIH0KIAotdm9pZCBXZWJQYWdlOjpn
ZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2Vi
UGFnZTo6Z2V0U2FtcGxpbmdQcm9maWxlck91dHB1dChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFN0cmluZyYpPiYmIGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShTQU1QTElOR19QUk9GSUxF
UikKICAgICBTYW1wbGluZ1Byb2ZpbGVyKiBzYW1wbGluZ1Byb2ZpbGVyID0gY29tbW9uVk0oKS5z
YW1wbGluZ1Byb2ZpbGVyKCk7Ci0gICAgaWYgKCFzYW1wbGluZ1Byb2ZpbGVyKSB7Ci0gICAgICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SW52YWxpZGF0ZVN0cmluZ0NhbGxiYWNrKGNh
bGxiYWNrSUQpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoIXNhbXBsaW5nUHJv
ZmlsZXIpCisgICAgICAgIHJldHVybiBjYWxsYmFjayh7IH0pOwogCiAgICAgU3RyaW5nUHJpbnRT
dHJlYW0gcmVzdWx0OwogICAgIHNhbXBsaW5nUHJvZmlsZXItPnJlcG9ydFRvcEZ1bmN0aW9ucyhy
ZXN1bHQpOwogICAgIHNhbXBsaW5nUHJvZmlsZXItPnJlcG9ydFRvcEJ5dGVjb2RlcyhyZXN1bHQp
OwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U3RyaW5nQ2FsbGJhY2socmVzdWx0
LnRvU3RyaW5nKCksIGNhbGxiYWNrSUQpKTsKKyAgICBjYWxsYmFjayhyZXN1bHQudG9TdHJpbmco
KSk7CiAjZWxzZQotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SW52YWxpZGF0ZVN0
cmluZ0NhbGxiYWNrKGNhbGxiYWNrSUQpKTsKKyAgICBjYWxsYmFjayh7IH0pOwogI2VuZGlmCiB9
CiAKQEAgLTY5MTAsMjEgKzY5MDUsMjEgQEAgdm9pZCBXZWJQYWdlOjp2b2ljZXNEaWRDaGFuZ2Uo
KQogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKIAotdm9pZCBXZWJQYWdlOjppbnNl
cnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgT3B0aW9uYWw8dWludDY0X3Q+
JiYgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVu
dFR5cGUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6aW5zZXJ0QXR0YWNo
bWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIE9wdGlvbmFsPHVpbnQ2NF90PiYmIGZpbGVT
aXplLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7CiAgICAgYXV0byYgZnJhbWUg
PSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAgIGZy
YW1lLmVkaXRvcigpLmluc2VydEF0dGFjaG1lbnQoaWRlbnRpZmllciwgV1RGTW92ZShmaWxlU2l6
ZSksIGZpbGVOYW1lLCBjb250ZW50VHlwZSk7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpWb2lkQ2FsbGJhY2soY2FsbGJhY2tJRCkpOworICAgIGNhbGxiYWNrKCk7CiB9CiAKLXZv
aWQgV2ViUGFnZTo6dXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoY29uc3QgU3RyaW5nJiBpZGVu
dGlmaWVyLCBPcHRpb25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiBlbmNsb3NpbmdJbWFnZURhdGEsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFn
ZTo6dXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBP
cHRpb25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwg
Y29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBlbmNsb3Np
bmdJbWFnZURhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFjaykKIHsKICAg
ICBpZiAoYXV0byBhdHRhY2htZW50ID0gYXR0YWNobWVudEVsZW1lbnRXaXRoSWRlbnRpZmllcihp
ZGVudGlmaWVyKSkgewogICAgICAgICBhdHRhY2htZW50LT5kb2N1bWVudCgpLnVwZGF0ZUxheW91
dCgpOwogICAgICAgICBhdHRhY2htZW50LT51cGRhdGVBdHRyaWJ1dGVzKFdURk1vdmUoZmlsZVNp
emUpLCBjb250ZW50VHlwZSwgZmlsZU5hbWUpOwogICAgICAgICBhdHRhY2htZW50LT51cGRhdGVF
bmNsb3NpbmdJbWFnZVdpdGhEYXRhKGNvbnRlbnRUeXBlLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShl
bmNsb3NpbmdJbWFnZURhdGEuZGF0YSgpLCBlbmNsb3NpbmdJbWFnZURhdGEuc2l6ZSgpKSk7CiAg
ICAgfQotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Vm9pZENhbGxiYWNrKGNhbGxi
YWNrSUQpKTsKKyAgICBjYWxsYmFjaygpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnVwZGF0ZUF0dGFj
aG1lbnRJY29uKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU2hhcmVhYmxlQml0bWFw
OjpIYW5kbGUmIHFsVGh1bWJuYWlsSGFuZGxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCmluZGV4IGViNTI0ODkwMjgxNTAyNmE0N2JhOWQ4YzUwYzdjOGZjYjQ1
ZTE5ZTAuLmNmMDQyNjJmNzFkOWEwZDE3ODUwMDFhOTA5ZDEwNTY5MWEzNjEzMTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTc1Myw3ICs3NTMsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCByZXBsYWNlRGljdGF0ZWRUZXh0KGNvbnN0IFN0cmluZyYgb2xk
VGV4dCwgY29uc3QgU3RyaW5nJiBuZXdUZXh0KTsKICAgICB2b2lkIHJlcGxhY2VTZWxlY3RlZFRl
eHQoY29uc3QgU3RyaW5nJiBvbGRUZXh0LCBjb25zdCBTdHJpbmcmIG5ld1RleHQpOwogICAgIHZv
aWQgcmVxdWVzdEF1dG9jb3JyZWN0aW9uRGF0YShjb25zdCBTdHJpbmcmIHRleHRGb3JBdXRvY29y
cmVjdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJBdXRvY29ycmVjdGlvbkRhdGEpPiYm
IHJlcGx5KTsKLSAgICB2b2lkIGFwcGx5QXV0b2NvcnJlY3Rpb24oY29uc3QgU3RyaW5nJiBjb3Jy
ZWN0aW9uLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVGV4dCwgQ2FsbGJhY2tJRCk7CisgICAgdm9p
ZCBhcHBseUF1dG9jb3JyZWN0aW9uKGNvbnN0IFN0cmluZyYgY29ycmVjdGlvbiwgY29uc3QgU3Ry
aW5nJiBvcmlnaW5hbFRleHQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+
JiYpOwogICAgIHZvaWQgc3luY0FwcGx5QXV0b2NvcnJlY3Rpb24oY29uc3QgU3RyaW5nJiBjb3Jy
ZWN0aW9uLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVGV4dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJik7CiAgICAgdm9pZCByZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0KCk7CiAg
ICAgdm9pZCBnZXRQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRp
b25SZXF1ZXN0JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJbnRlcmFjdGlvbkluZm9ybWF0aW9u
QXRQb3NpdGlvbiYmKT4mJik7CkBAIC0xMTQ5LDggKzExNDksOCBAQCBwdWJsaWM6CiAgICAgUmVm
PFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcihXZWJDb3JlOjpG
cmFtZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlN1
YnN0aXR1dGVEYXRhJik7CiAgICAgdm9pZCB1cGRhdGVDYWNoZWREb2N1bWVudExvYWRlcihXZWJE
b2N1bWVudExvYWRlciYsIFdlYkNvcmU6OkZyYW1lJik7CiAKLSAgICB2b2lkIGdldEJ5dGVjb2Rl
UHJvZmlsZShDYWxsYmFja0lEKTsKLSAgICB2b2lkIGdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQo
Q2FsbGJhY2tJRCk7CisgICAgdm9pZCBnZXRCeXRlY29kZVByb2ZpbGUoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJik7CisgICAgdm9pZCBnZXRTYW1wbGluZ1Byb2ZpbGVy
T3V0cHV0KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOwogICAgIAog
I2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKSB8fCBFTkFCTEUoVEVMRVBIT05FX05VTUJFUl9E
RVRFQ1RJT04pCiAgICAgdm9pZCBoYW5kbGVUZWxlcGhvbmVOdW1iZXJDbGljayhjb25zdCBTdHJp
bmcmIG51bWJlciwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKQEAgLTEyNTMsOCArMTI1Myw4
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNob3dDb250YWN0UGlja2VyKGNvbnN0IFdlYkNvcmU6OkNv
bnRhY3RzUmVxdWVzdERhdGEmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFZlY3Rv
cjxXZWJDb3JlOjpDb250YWN0SW5mbz4+JiYpPiYmKTsKICAgICAKICNpZiBFTkFCTEUoQVRUQUNI
TUVOVF9FTEVNRU5UKQotICAgIHZvaWQgaW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlk
ZW50aWZpZXIsIE9wdGlvbmFsPHVpbnQ2NF90PiYmIGZpbGVTaXplLCBjb25zdCBTdHJpbmcmIGZp
bGVOYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBDYWxsYmFja0lEKTsKLSAgICB2b2lk
IHVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgT3B0
aW9uYWw8dWludDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNv
bnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZW5jbG9zaW5n
SW1hZ2VEYXRhLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIGluc2VydEF0dGFjaG1lbnQoY29uc3Qg
U3RyaW5nJiBpZGVudGlmaWVyLCBPcHRpb25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3Qg
U3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGNv
bnN0IFN0cmluZyYgaWRlbnRpZmllciwgT3B0aW9uYWw8dWludDY0X3Q+JiYgZmlsZVNpemUsIGNv
bnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYgZW5jbG9zaW5nSW1hZ2VEYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwogICAgIHZvaWQgdXBkYXRlQXR0YWNobWVudEljb24oY29uc3QgU3RyaW5nJiBp
ZGVudGlmaWVyLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgcWxUaHVtYm5haWxIYW5k
bGUpOwogI2VuZGlmCiAKQEAgLTE1MTUsNyArMTUxNSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
ZXRJbml0aWFsRm9jdXMoYm9vbCBmb3J3YXJkLCBib29sIGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBj
b25zdCBXZWJLZXlib2FyZEV2ZW50JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAg
ICB2b2lkIHVwZGF0ZUlzSW5XaW5kb3coYm9vbCBpc0luaXRpYWxTdGF0ZSA9IGZhbHNlKTsKICAg
ICB2b2lkIHZpc2liaWxpdHlEaWRDaGFuZ2UoKTsKLSAgICB2b2lkIHNldEFjdGl2aXR5U3RhdGUo
T3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+LCBBY3Rpdml0eVN0YXRlQ2hh
bmdlSUQsIGNvbnN0IFZlY3RvcjxDYWxsYmFja0lEPiYgY2FsbGJhY2tJRHMpOworICAgIHZvaWQg
c2V0QWN0aXZpdHlTdGF0ZShPcHRpb25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZz4s
IEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAg
ICB2b2lkIHZhbGlkYXRlQ29tbWFuZChjb25zdCBTdHJpbmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wsIGludDMyX3QpPiYmKTsKICAgICB2b2lkIGV4ZWN1dGVFZGl0Q29tbWFuZChjb25z
dCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHNldEVkaXRhYmxlKGJvb2wpOwpA
QCAtMTU4MCw3ICsxNTgwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHZpZXdXaWxsU3RhcnRMaXZl
UmVzaXplKCk7CiAgICAgdm9pZCB2aWV3V2lsbEVuZExpdmVSZXNpemUoKTsKIAotICAgIHZvaWQg
Z2V0Q29udGVudHNBc1N0cmluZyhDb250ZW50QXNTdHJpbmdJbmNsdWRlc0NoaWxkRnJhbWVzLCBD
YWxsYmFja0lEKTsKKyAgICB2b2lkIGdldENvbnRlbnRzQXNTdHJpbmcoQ29udGVudEFzU3RyaW5n
SW5jbHVkZXNDaGlsZEZyYW1lcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcm
KT4mJik7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBnZXRDb250ZW50c0FzQXR0cmli
dXRlZFN0cmluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkF0dHJpYnV0
ZWRTdHJpbmcmKT4mJik7CiAjZW5kaWYKQEAgLTE1ODksMTAgKzE1ODksMTAgQEAgcHJpdmF0ZToK
ICNlbmRpZgogICAgIHZvaWQgZ2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUoV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6U2hhcmVkQnVm
ZmVyRGF0YVJlZmVyZW5jZSYpPiYmKTsKICAgICB2b2lkIGdldFJlc291cmNlRGF0YUZyb21GcmFt
ZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VVUkwsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNl
Jik+JiYpOwotICAgIHZvaWQgZ2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oQ2Fs
bGJhY2tJRCk7Ci0gICAgdm9pZCBnZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcoQ2FsbGJh
Y2tJRCk7CisgICAgdm9pZCBnZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKKyAgICB2b2lkIGdldFNlbGVj
dGlvbk9yQ29udGVudHNBc1N0cmluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmlu
ZyYpPiYmKTsKICAgICB2b2lkIGdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKT4mJik7Ci0gICAgdm9pZCBn
ZXRTb3VyY2VGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIENhbGxiYWNrSUQpOwor
ICAgIHZvaWQgZ2V0U291cmNlRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKICAgICB2b2lkIGdldFdlYkFy
Y2hpdmVPZkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKT4mJik7CiAgICAgdm9pZCBydW5KYXZhU2Ny
aXB0KFdlYkZyYW1lKiwgV2ViQ29yZTo6UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiwgQ29udGVu
dFdvcmxkSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiYpPiYm
KTsKICAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZChXZWJDb3JlOjpS
dW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXI+LCBjb25zdCBzdGQ6OnBhaXI8Q29udGVudFdvcmxkSWRlbnRpZmllciwgU3RyaW5nPiYgd29y
bGREYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYs
IGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+Jik+JiYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4K
aW5kZXggOGNmY2M0OWNmNmYzODA3NmFmOWMzMjMxOTNhZDM3NTM0OGE0NDhmMC4uMzRiMTJjNDY0
NDRmZjE1NWE1ZTE0MzIxOTlhZDhhMTc4OTkxNTgyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0yMiw3ICsyMiw3
IEBACiAKIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNldEluaXRp
YWxGb2N1cyhib29sIGZvcndhcmQsIGJvb2wgaXNLZXlib2FyZEV2ZW50VmFsaWQsIFdlYktpdDo6
V2ViS2V5Ym9hcmRFdmVudCBldmVudCkgLT4gKCkgQXN5bmMKLSAgICBTZXRBY3Rpdml0eVN0YXRl
KE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPiBhY3Rpdml0eVN0YXRlLCBX
ZWJLaXQ6OkFjdGl2aXR5U3RhdGVDaGFuZ2VJRCBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQsIFZlY3Rv
cjxXZWJLaXQ6OkNhbGxiYWNrSUQ+IGNhbGxiYWNrSURzKQorICAgIFNldEFjdGl2aXR5U3RhdGUo
T3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+IGFjdGl2aXR5U3RhdGUsIFdl
YktpdDo6QWN0aXZpdHlTdGF0ZUNoYW5nZUlEIGFjdGl2aXR5U3RhdGVDaGFuZ2VJRCkgLT4gKCkg
QXN5bmMKICAgICBTZXRMYXllckhvc3RpbmdNb2RlKGVudW06dWludDhfdCBXZWJLaXQ6OkxheWVy
SG9zdGluZ01vZGUgbGF5ZXJIb3N0aW5nTW9kZSkKIAogICAgIFNldEJhY2tncm91bmRDb2xvcihP
cHRpb25hbDxXZWJDb3JlOjpDb2xvcj4gY29sb3IpCkBAIC04Miw3ICs4Miw3IEBAIG1lc3NhZ2Vz
IC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIFJlcGxhY2VEaWN0YXRlZFRleHQoU3Ry
aW5nIG9sZFRleHQsIFN0cmluZyBuZXdUZXh0KQogICAgIFJlcGxhY2VTZWxlY3RlZFRleHQoU3Ry
aW5nIG9sZFRleHQsIFN0cmluZyBuZXdUZXh0KQogICAgIFJlcXVlc3RBdXRvY29ycmVjdGlvbkRh
dGEoU3RyaW5nIHRleHRGb3JBdXRvY29ycmVjdGlvbikgLT4gKHN0cnVjdCBXZWJLaXQ6OldlYkF1
dG9jb3JyZWN0aW9uRGF0YSBkYXRhKSBBc3luYwotICAgIEFwcGx5QXV0b2NvcnJlY3Rpb24oU3Ry
aW5nIGNvcnJlY3Rpb24sIFN0cmluZyBvcmlnaW5hbFRleHQsIFdlYktpdDo6Q2FsbGJhY2tJRCBj
YWxsYmFja0lEKQorICAgIEFwcGx5QXV0b2NvcnJlY3Rpb24oU3RyaW5nIGNvcnJlY3Rpb24sIFN0
cmluZyBvcmlnaW5hbFRleHQpIC0+IChTdHJpbmcgc3RyaW5nKSBBc3luYwogICAgIFN5bmNBcHBs
eUF1dG9jb3JyZWN0aW9uKFN0cmluZyBjb3JyZWN0aW9uLCBTdHJpbmcgb3JpZ2luYWxUZXh0KSAt
PiAoYm9vbCBhdXRvY29ycmVjdGlvbkFwcGxpZWQpIFN5bmNocm9ub3VzCiAgICAgUmVxdWVzdEF1
dG9jb3JyZWN0aW9uQ29udGV4dCgpCiAgICAgUmVxdWVzdEV2YXNpb25SZWN0c0Fib3ZlU2VsZWN0
aW9uKCkgLT4gKFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Q+IHJlY3RzKSBBc3luYwpAQCAtMjA0
LDcgKzIwNCw3IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90
IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAgICAgUmVzdG9yZVNlbGVjdGlv
bkluRm9jdXNlZEVkaXRhYmxlRWxlbWVudCgpCiAKICAgICAjIENhbGxiYWNrcy4KLSAgICBHZXRD
b250ZW50c0FzU3RyaW5nKGVudW06Ym9vbCBXZWJLaXQ6OkNvbnRlbnRBc1N0cmluZ0luY2x1ZGVz
Q2hpbGRGcmFtZXMgaW5DaGlsZEZyYW1lcywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQp
CisgICAgR2V0Q29udGVudHNBc1N0cmluZyhlbnVtOmJvb2wgV2ViS2l0OjpDb250ZW50QXNTdHJp
bmdJbmNsdWRlc0NoaWxkRnJhbWVzIGluQ2hpbGRGcmFtZXMpIC0+IChTdHJpbmcgc3RyaW5nKSBB
c3luYwogICAgIEdldEFsbEZyYW1lcygpIC0+IChzdHJ1Y3QgV2ViS2l0OjpGcmFtZVRyZWVOb2Rl
RGF0YSBtYWluRnJhbWUpIEFzeW5jCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgR2V0Q29udGVu
dHNBc0F0dHJpYnV0ZWRTdHJpbmcoKSAtPiAoc3RydWN0IFdlYkNvcmU6OkF0dHJpYnV0ZWRTdHJp
bmcgcmVzdWx0KSBBc3luYwpAQCAtMjE0LDEwICsyMTQsMTAgQEAgR2VuZXJhdGVTeW50aGV0aWNF
ZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFu
ZFR5cGUKICNlbmRpZgogICAgIEdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciBmcmFtZUlEKSAtPiAoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNl
IGRhdGFSZWZlcmVuY2UpIEFzeW5jCiAgICAgR2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBTdHJpbmcgcmVzb3VyY2VVUkwpIC0+IChJUEM6
OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZSkgQXN5bmMKLSAgICBHZXRS
ZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKLSAgICBHZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcoV2ViS2l0OjpDYWxsYmFj
a0lEIGNhbGxiYWNrSUQpCisgICAgR2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24o
KSAtPiAoU3RyaW5nIHN0cmluZykgQXN5bmMKKyAgICBHZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNT
dHJpbmcoKSAtPiAoU3RyaW5nIHN0cmluZykgQXN5bmMKICAgICBHZXRTZWxlY3Rpb25Bc1dlYkFy
Y2hpdmVEYXRhKCkgLT4gKElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhKSBBc3luYwotICAgIEdldFNv
dXJjZUZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJLaXQ6OkNh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBHZXRTb3VyY2VGb3JGcmFtZShXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCkgLT4gKFN0cmluZyBzdHJpbmcpIEFzeW5jCiAgICAgR2V0V2Vi
QXJjaGl2ZU9mRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpIC0+IChJUEM6
OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZSkgQXN5bmMKIAogICAgIFJ1bkphdmFTY3JpcHRJ
bkZyYW1lSW5TY3JpcHRXb3JsZChzdHJ1Y3QgV2ViQ29yZTo6UnVuSmF2YVNjcmlwdFBhcmFtZXRl
cnMgcGFyYW1ldGVycywgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlE
LCBzdGQ6OnBhaXI8V2ViS2l0OjpDb250ZW50V29ybGRJZGVudGlmaWVyLCBTdHJpbmc+IHdvcmxk
KSAtPiAoSVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VsdERhdGEsIE9wdGlvbmFsPFdlYkNvcmU6OkV4
Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMpIEFzeW5jCkBAIC00ODcsOSArNDg3LDkgQEAgR2VuZXJh
dGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNF
ZGl0aW5nQ29tbWFuZFR5cGUKICAgICBTZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IodWludDMyX3Qg
cGlubmluZykKICAgICBTZXRTY3JvbGxiYXJPdmVybGF5U3R5bGUoT3B0aW9uYWw8dWludDMyX3Q+
IHNjcm9sbGJhclN0eWxlKQogCi0gICAgR2V0Qnl0ZWNvZGVQcm9maWxlKFdlYktpdDo6Q2FsbGJh
Y2tJRCBjYWxsYmFja0lEKQorICAgIEdldEJ5dGVjb2RlUHJvZmlsZSgpIC0+IChTdHJpbmcgc3Ry
aW5nKSBBc3luYwogCi0gICAgR2V0U2FtcGxpbmdQcm9maWxlck91dHB1dChXZWJLaXQ6OkNhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKKyAgICBHZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KCkgLT4gKFN0
cmluZyBzdHJpbmcpIEFzeW5jCiAgICAgCiAgICAgVGFrZVNuYXBzaG90KFdlYkNvcmU6OkludFJl
Y3Qgc25hcHNob3RSZWN0LCBXZWJDb3JlOjpJbnRTaXplIGJpdG1hcFNpemUsIHVpbnQzMl90IG9w
dGlvbnMpIC0+IChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGltYWdlKSBBc3luYwog
I2lmIFBMQVRGT1JNKE1BQykKQEAgLTU2NSw4ICs1NjUsOCBAQCBHZW5lcmF0ZVN5bnRoZXRpY0Vk
aXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5k
VHlwZQogICAgIFNldElzU3VzcGVuZGVkKGJvb2wgc3VzcGVuZGVkKQogCiAjaWYgRU5BQkxFKEFU
VEFDSE1FTlRfRUxFTUVOVCkKLSAgICBJbnNlcnRBdHRhY2htZW50KFN0cmluZyBpZGVudGlmaWVy
LCBPcHRpb25hbDx1aW50NjRfdD4gZmlsZVNpemUsIFN0cmluZyBmaWxlTmFtZSwgU3RyaW5nIGNv
bnRlbnRUeXBlLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKLSAgICBVcGRhdGVBdHRh
Y2htZW50QXR0cmlidXRlcyhTdHJpbmcgaWRlbnRpZmllciwgT3B0aW9uYWw8dWludDY0X3Q+IGZp
bGVTaXplLCBTdHJpbmcgY29udGVudFR5cGUsIFN0cmluZyBmaWxlTmFtZSwgSVBDOjpTaGFyZWRC
dWZmZXJEYXRhUmVmZXJlbmNlIGVuY2xvc2luZ0ltYWdlRGF0YSwgV2ViS2l0OjpDYWxsYmFja0lE
IGNhbGxiYWNrSUQpCisgICAgSW5zZXJ0QXR0YWNobWVudChTdHJpbmcgaWRlbnRpZmllciwgT3B0
aW9uYWw8dWludDY0X3Q+IGZpbGVTaXplLCBTdHJpbmcgZmlsZU5hbWUsIFN0cmluZyBjb250ZW50
VHlwZSkgLT4gKCkgQXN5bmMKKyAgICBVcGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhTdHJpbmcg
aWRlbnRpZmllciwgT3B0aW9uYWw8dWludDY0X3Q+IGZpbGVTaXplLCBTdHJpbmcgY29udGVudFR5
cGUsIFN0cmluZyBmaWxlTmFtZSwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGVuY2xv
c2luZ0ltYWdlRGF0YSkgLT4gKCkgQXN5bmMKICAgICBVcGRhdGVBdHRhY2htZW50SWNvbihTdHJp
bmcgaWRlbnRpZmllciwgV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBxbFRodW1ibmFp
bEhhbmRsZSkKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDI0NWU0OTkzZGRlNjE0YWUwZjIxZmY3ZTQ5ZmNm
Yjg4MWU3MjRiZWMuLmY2NzAzZDcwNGM5ZmE2NGMwZDAwYWM5YTBjYmI4ZDcxYzY0NzQyMTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9T
Lm1tCkBAIC0yMzUxLDkgKzIzNTEsOSBAQCB2b2lkIFdlYlBhZ2U6OnJlcXVlc3RBdXRvY29ycmVj
dGlvbkRhdGEoY29uc3QgU3RyaW5nJiB0ZXh0Rm9yQXV0b2NvcnJlY3Rpb24sIENvbQogICAgIHJl
cGx5KHsgV1RGTW92ZShyb290Vmlld1NlbGVjdGlvblJlY3RzKSAsIChfX2JyaWRnZSBVSUZvbnQg
Kilmb250IH0pOwogfQogCi12b2lkIFdlYlBhZ2U6OmFwcGx5QXV0b2NvcnJlY3Rpb24oY29uc3Qg
U3RyaW5nJiBjb3JyZWN0aW9uLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVGV4dCwgQ2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjphcHBseUF1dG9jb3JyZWN0aW9uKGNvbnN0IFN0
cmluZyYgY29ycmVjdGlvbiwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbFRleHQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY2FsbGJhY2spCiB7Ci0gICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpTdHJpbmdDYWxsYmFjayhhcHBseUF1dG9jb3JyZWN0aW9uSW50
ZXJuYWwoY29ycmVjdGlvbiwgb3JpZ2luYWxUZXh0KSA/IGNvcnJlY3Rpb24gOiBTdHJpbmcoKSwg
Y2FsbGJhY2tJRCkpOworICAgIGNhbGxiYWNrKGFwcGx5QXV0b2NvcnJlY3Rpb25JbnRlcm5hbChj
b3JyZWN0aW9uLCBvcmlnaW5hbFRleHQpID8gY29ycmVjdGlvbiA6IFN0cmluZygpKTsKIH0KIAog
U2Vjb25kcyBXZWJQYWdlOjpldmVudFRocm90dGxpbmdEZWxheSgpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCmluZGV4IGI0ZWZmZmZmOGY3MmY2YmVhMjRhNWFk
MTQ4NzE5ZGNjZGQ1YjgwZGMuLjc3YTgwNDJmODg0MTU4OGQ4MjBlYzRjZmRhNWJmMTQ3YmZlZDUx
ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCkBAIC04Miw3ICs4
Miw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIHNob3VsZFVzZVRpbGVkQmFja2luZ0ZvckZyYW1l
Vmlldyhjb25zdCBXZWJDb3JlOjpGcmFtZVZpZXcmKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZv
aWQgYWN0aXZpdHlTdGF0ZURpZENoYW5nZShPcHRpb25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlTdGF0
ZTo6RmxhZz4gY2hhbmdlZCwgQWN0aXZpdHlTdGF0ZUNoYW5nZUlELCBjb25zdCBWZWN0b3I8Q2Fs
bGJhY2tJRD4mKSBvdmVycmlkZTsKKyAgICB2b2lkIGFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoT3B0
aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+IGNoYW5nZWQsIEFjdGl2aXR5U3Rh
dGVDaGFuZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKIAogICAg
IHZvaWQgYXR0YWNoVmlld092ZXJsYXlHcmFwaGljc0xheWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXIqKSBvdmVycmlkZTsKIApAQCAtMTUxLDcgKzE1MSw3IEBAIHByaXZhdGU6CiAgICAgZG91Ymxl
IG1fdHJhbnNpZW50Wm9vbVNjYWxlIHsgMSB9OwogICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgbV90
cmFuc2llbnRab29tT3JpZ2luOwogCi0gICAgVmVjdG9yPENhbGxiYWNrSUQ+IG1fbmV4dEFjdGl2
aXR5U3RhdGVDaGFuZ2VDYWxsYmFja0lEczsKKyAgICBWZWN0b3I8Q29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPj4gbV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrczsKICAgICBBY3Rpdml0
eVN0YXRlQ2hhbmdlSUQgbV9hY3Rpdml0eVN0YXRlQ2hhbmdlSUQgeyBBY3Rpdml0eVN0YXRlQ2hh
bmdlQXN5bmNocm9ub3VzIH07CiAKICAgICBSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NMYXllcj4g
bV92aWV3T3ZlcmxheVJvb3RMYXllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbSBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5n
QXJlYS5tbQppbmRleCA2YjEyZTk5NTJkNTM2OTVjNDcxNWRlMzc1OTZmYTZiNTJmMTAzMTViLi4x
NmE5NGEwMWE1YjU0ZTkyYzFkYTc1NTMzYjA0N2EyNzg0Y2I2MDhiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWEubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVk
Q29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCkBAIC00OTgsOSArNDk4LDggQEAgdm9pZCBUaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6aGFuZGxlQWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxi
YWNrcygpCiAgICAgaWYgKG1fYWN0aXZpdHlTdGF0ZUNoYW5nZUlEICE9IEFjdGl2aXR5U3RhdGVD
aGFuZ2VBc3luY2hyb25vdXMpCiAgICAgICAgIG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkRpZFVwZGF0ZUFjdGl2aXR5U3RhdGUoKSk7CiAKLSAgICBmb3IgKGF1dG8mIGNh
bGxiYWNrSUQgOiBtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJRHMpCi0gICAgICAg
IG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlZvaWRDYWxsYmFjayhjYWxs
YmFja0lEKSk7Ci0gICAgbV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrSURzLmNsZWFy
KCk7CisgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IHN0ZDo6ZXhjaGFuZ2UobV9uZXh0QWN0aXZp
dHlTdGF0ZUNoYW5nZUNhbGxiYWNrcywgeyB9KSkKKyAgICAgICAgY2FsbGJhY2soKTsKIAogICAg
IG1fYWN0aXZpdHlTdGF0ZUNoYW5nZUlEID0gQWN0aXZpdHlTdGF0ZUNoYW5nZUFzeW5jaHJvbm91
czsKIH0KQEAgLTUzMSw5ICs1MzAsOSBAQCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhOjpoYW5kbGVBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tzSWZOZWVkZWQoKQogICAgIH0g
Zm9yUGhhc2U6a0NBVHJhbnNhY3Rpb25QaGFzZVBvc3RDb21taXRdOwogfQogCi12b2lkIFRpbGVk
Q29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKE9wdGlvblNl
dDxBY3Rpdml0eVN0YXRlOjpGbGFnPiBjaGFuZ2VkLCBBY3Rpdml0eVN0YXRlQ2hhbmdlSUQgYWN0
aXZpdHlTdGF0ZUNoYW5nZUlELCBjb25zdCBWZWN0b3I8Q2FsbGJhY2tJRD4mIG5leHRBY3Rpdml0
eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJRHMpCit2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhOjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFn
PiBjaGFuZ2VkLCBBY3Rpdml0eVN0YXRlQ2hhbmdlSUQgYWN0aXZpdHlTdGF0ZUNoYW5nZUlELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFj
aykKIHsKLSAgICBtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJRHMuYXBwZW5kVmVj
dG9yKG5leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJRHMpOworICAgIG1fbmV4dEFjdGl2
aXR5U3RhdGVDaGFuZ2VDYWxsYmFja3MuYXBwZW5kKFdURk1vdmUobmV4dEFjdGl2aXR5U3RhdGVD
aGFuZ2VDYWxsYmFjaykpOwogICAgIG1fYWN0aXZpdHlTdGF0ZUNoYW5nZUlEID0gc3RkOjptYXgo
bV9hY3Rpdml0eVN0YXRlQ2hhbmdlSUQsIGFjdGl2aXR5U3RhdGVDaGFuZ2VJRCk7CiAKICAgICBp
ZiAoY2hhbmdlZCAmIEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSkgewpAQCAtNTQzLDcgKzU0Miw3
IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmFjdGl2aXR5U3RhdGVEaWRD
aGFuZ2UoT3B0aW9uU2V0PEFjdGl2aXR5U3RhCiAgICAgICAgICAgICBzdXNwZW5kUGFpbnRpbmco
KTsKICAgICB9CiAKLSAgICBpZiAobV9hY3Rpdml0eVN0YXRlQ2hhbmdlSUQgIT0gQWN0aXZpdHlT
dGF0ZUNoYW5nZUFzeW5jaHJvbm91cyB8fCAhbV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxi
YWNrSURzLmlzRW1wdHkoKSkgeworICAgIGlmIChtX2FjdGl2aXR5U3RhdGVDaGFuZ2VJRCAhPSBB
Y3Rpdml0eVN0YXRlQ2hhbmdlQXN5bmNocm9ub3VzIHx8ICFtX25leHRBY3Rpdml0eVN0YXRlQ2hh
bmdlQ2FsbGJhY2tzLmlzRW1wdHkoKSkgewogICAgICAgICBtX3Nob3VsZEhhbmRsZUFjdGl2aXR5
U3RhdGVDaGFuZ2VDYWxsYmFja3MgPSB0cnVlOwogICAgICAgICB0cmlnZ2VyUmVuZGVyaW5nVXBk
YXRlKCk7CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420038</attachid>
            <date>2021-02-11 13:45:08 -0800</date>
            <delta_ts>2021-02-11 14:51:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221653-20210211134507.patch</filename>
            <type>text/plain</type>
            <size>72586</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNzQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGM3ZDRmOTBjMGRkYmE4ODhl
Njg1MDYyYThlYWQ1M2Y5ZmYyNTlhNWEuLmEyNzVhZDU3NDU5MjdmNWI0YWM2MDM5MTc2MTE0Njgw
MDY1ZGQyMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTEgQEAKKzIwMjEtMDItMTEgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBTdG9wIHVzaW5n
IEdlbmVyaWNDYWxsYmFjayBmcm9tIFdlYlBhZ2VQcm94eQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxNjUzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Q2hyaXMgRHVtZXouCisKKyAgICAgICAgVGhlcmUgYXJlIHN0aWxsIHR3byB1c2VzIGluIHRoZSBE
cmF3aW5nQXJlYVByb3h5IGltcGxlbWVudGF0aW9ucywgYnV0IHRob3NlIGFyZSBxdWl0ZSB0YW5n
bGVkIGFuZCBkZXNlcnZlIHRoZWlyIG93biBwYXRjaC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJQXR0YWNobWVudC5jcHA6CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OnVwZGF0ZUF0
dHJpYnV0ZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCk6CisgICAgICAgIChXS1BhZ2VSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRh
dGlvbik6CisgICAgICAgIChXS1BhZ2VHZXRTb3VyY2VGb3JGcmFtZSk6CisgICAgICAgIChXS1Bh
Z2VHZXRDb250ZW50c0FzU3RyaW5nKToKKyAgICAgICAgKFdLUGFnZUdldEJ5dGVjb2RlUHJvZmls
ZSk6CisgICAgICAgIChXS1BhZ2VHZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KToKKyAgICAgICAg
KFdURjo6RnVuY3Rpb248dm9pZCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9BUElBdHRhY2htZW50Q29jb2EubW06CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OnVw
ZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2luc2VydEF0dGFj
aG1lbnRXaXRoRmlsZVdyYXBwZXI6Y29udGVudFR5cGU6Y29tcGxldGlvbjpdKToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IF9nZXRDb250ZW50c0FzU3RyaW5nV2l0aENvbXBsZXRpb25IYW5kbGVyOl0p
OgorICAgICAgICAoLVtXS1dlYlZpZXcgX2dldENvbnRlbnRzT2ZBbGxGcmFtZXNBc1N0cmluZ1dp
dGhDb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19X
S0F0dGFjaG1lbnQubW06CisgICAgICAgICgtW19XS0F0dGFjaG1lbnQgc2V0RmlsZVdyYXBwZXI6
Y29udGVudFR5cGU6Y29tcGxldGlvbjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2Vi
Vmlld0ltcGwubW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzdGFydFNwZWFraW5n
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
ZGlzcGF0Y2hBY3Rpdml0eVN0YXRlQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpnZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6Z2V0U291cmNlRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmdldENvbnRlbnRzQXNTdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmdldEJ5dGVjb2RlUHJvZmlsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6Z2V0U2FtcGxpbmdQcm9maWxlck91dHB1dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6Z2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmRpZEZhaWxMb2FkRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnJlc2V0U3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
Omluc3RhbGxBY3Rpdml0eVN0YXRlQ2hhbmdlQ29tcGxldGlvbkhhbmRsZXIpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6Omluc2VydEF0dGFjaG1lbnQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpkaWRJbnNlcnRBdHRhY2htZW50V2l0aElkZW50aWZpZXIpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNsZWFyTG9hZERlcGVuZGVudENhbGxiYWNr
cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dm9pZENhbGxiYWNr
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzdHJpbmdDYWxsYmFj
ayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW52YWxpZGF0ZVN0
cmluZ0NhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBfc2hhcmVGb3JXZWJWaWV3Ol0pOgorICAgICAgICAoLVtXS0NvbnRl
bnRWaWV3IF9kZWZpbmVGb3JXZWJWaWV3Ol0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGFj
Y2Vzc2liaWxpdHlSZXRyaWV2ZVNwZWFrU2VsZWN0aW9uQ29udGVudF0pOgorICAgICAgICAoLVtX
S0NvbnRlbnRWaWV3IGFwcGx5QXV0b2NvcnJlY3Rpb246dG9TdHJpbmc6d2l0aENvbXBsZXRpb25I
YW5kbGVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmFwcGx5QXV0b2NvcnJlY3Rpb24pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tUZXh0RmluZGVyQ2xpZW50Lm1tOgorICAgICAgICAoLVtX
S1RleHRGaW5kZXJDbGllbnQgZ2V0U2VsZWN0ZWRUZXh0Ol0pOgorICAgICAgICAqIFdlYlByb2Nl
c3MvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVu
dC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oOgorICAgICAg
ICAoV2ViS2l0OjpEcmF3aW5nQXJlYTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUv
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhOjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OnJlaW5pdGlhbGl6ZVdlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRBY3Rp
dml0eVN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0Q29udGVudHNBc1N0cmlu
Zyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJl
c2VudGF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0U2VsZWN0aW9uT3JDb250
ZW50c0FzU3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0U291cmNlRm9yRnJh
bWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRCeXRlY29kZVByb2ZpbGUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6aW5zZXJ0QXR0YWNobWVudCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFn
ZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YXBwbHlBdXRvY29ycmVjdGlvbik6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWEubW06CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlv
bkRyYXdpbmdBcmVhOjpoYW5kbGVBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tzKToKKyAgICAg
ICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmFjdGl2aXR5U3RhdGVE
aWRDaGFuZ2UpOgorCiAyMDIxLTAyLTExICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUu
Y29tPgogCiAgICAgICAgIFttYWNPU10gQWRkIHRlbGVtZXRyeSBmb3IgYSBsaWtlbHktdW51c2Vk
IGNhbGwgdG8gaXBjLXBvc2l4LXNobS1yZWFkLWRhdGEgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAKaW5kZXggMTM4NmVkNjNlY2EyNzliMDA3MDZkMTdi
OWNjMmJiNTFhOGEyOTFjNy4uYjE4MjBlMDQ4YzA3NzU2MWM5ODFiMTkzZmYzYjVkMzQ2NzAwMTgw
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcApA
QCAtNDksMTUgKzQ5LDE1IEBAIEF0dGFjaG1lbnQ6On5BdHRhY2htZW50KCkKIHsKIH0KIAotdm9p
ZCBBdHRhY2htZW50Ojp1cGRhdGVBdHRyaWJ1dGVzKEZ1bmN0aW9uPHZvaWQoV2ViS2l0OjpDYWxs
YmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFjaykKK3ZvaWQgQXR0YWNobWVudDo6dXBkYXRlQXR0
cmlidXRlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7CiAgICAgaWYg
KCFtX3dlYlBhZ2UpIHsKLSAgICAgICAgY2FsbGJhY2soV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVy
cm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsKKyAgICAgICAgY2FsbGJhY2soKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAogICAgIGlmIChtX3dlYlBhZ2UtPndpbGxVcGRhdGVBdHRhY2htZW50
QXR0cmlidXRlcygqdGhpcykgPT0gV2ViS2l0OjpXZWJQYWdlUHJveHk6OlNob3VsZFVwZGF0ZUF0
dGFjaG1lbnRBdHRyaWJ1dGVzOjpObykgewotICAgICAgICBjYWxsYmFjayhXZWJLaXQ6OkNhbGxi
YWNrQmFzZTo6RXJyb3I6Ok5vbmUpOworICAgICAgICBjYWxsYmFjaygpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
QXR0YWNobWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQu
aAppbmRleCAyZTA2NDlhOGRkMDEyZWMwYWUxN2Y2ZjU1ZjQxODdhOWVkNjAxNjliLi43YmE0NGZh
Yzg5MjlkODU2MWY4NGE4ODhjOWVmNmM2ODc1NmU2MTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogICAg
IGVudW0gY2xhc3MgSW5zZXJ0aW9uU3RhdGUgOiB1aW50OF90IHsgTm90SW5zZXJ0ZWQsIEluc2Vy
dGVkIH07CiAKICAgICBjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0
dXJuIG1faWRlbnRpZmllcjsgfQotICAgIHZvaWQgdXBkYXRlQXR0cmlidXRlcyhGdW5jdGlvbjx2
b2lkKFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAgIHZvaWQgdXBkYXRlQXR0
cmlidXRlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAgICAgdm9pZCBpbnZhbGlk
YXRlKCk7CiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gISFtX3dlYlBhZ2U7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCmluZGV4IDRlZjg0YTgxYThm
Y2I2OGUyZTljZGI0MzU2NzE4NDc3Y2YwNzQ1YzkuLjYyYTU0Yjc0NmMzYWIyZjFhYjMyY2VkNzE0
NjRjNGM0ZGRmMWU5ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNw
cApAQCAtMjUzNCwzNiArMjUzNCwzNiBAQCB2b2lkIFdLUGFnZVJ1bkphdmFTY3JpcHRJbk1haW5G
cmFtZV9iKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBzY3JpcHRSZWYsCiB9CiAjZW5k
aWYKIAotc3RhdGljIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgV2ViS2l0OjpD
YWxsYmFja0Jhc2U6OkVycm9yKT4gdG9HZW5lcmljQ2FsbGJhY2tGdW5jdGlvbih2b2lkKiBjb250
ZXh0LCB2b2lkICgqY2FsbGJhY2spKFdLU3RyaW5nUmVmLCBXS0Vycm9yUmVmLCB2b2lkKikpCitz
dGF0aWMgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4gdG9TdHJpbmdDYWxs
YmFjayh2b2lkKiBjb250ZXh0LCB2b2lkKCpjYWxsYmFjaykoV0tTdHJpbmdSZWYsIFdLRXJyb3JS
ZWYsIHZvaWQqKSkKIHsKLSAgICByZXR1cm4gW2NvbnRleHQsIGNhbGxiYWNrXShjb25zdCBTdHJp
bmcmIHJldHVyblZhbHVlLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKLSAg
ICAgICAgY2FsbGJhY2sodG9BUEkoQVBJOjpTdHJpbmc6OmNyZWF0ZShyZXR1cm5WYWx1ZSkucHRy
KCkpLCBlcnJvciAhPSBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUgPyB0b0FQSShB
UEk6OkVycm9yOjpjcmVhdGUoKS5wdHIoKSkgOiAwLCBjb250ZXh0KTsKKyAgICByZXR1cm4gW2Nv
bnRleHQsIGNhbGxiYWNrXSAoY29uc3QgU3RyaW5nJiByZXR1cm5WYWx1ZSkgeworICAgICAgICBj
YWxsYmFjayh0b0FQSShBUEk6OlN0cmluZzo6Y3JlYXRlKHJldHVyblZhbHVlKS5wdHIoKSksIG51
bGxwdHIsIGNvbnRleHQpOwogICAgIH07CiB9CiAKIHZvaWQgV0tQYWdlUmVuZGVyVHJlZUV4dGVy
bmFsUmVwcmVzZW50YXRpb24oV0tQYWdlUmVmIHBhZ2VSZWYsIHZvaWQqIGNvbnRleHQsIFdLUGFn
ZVJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uRnVuY3Rpb24gY2FsbGJhY2spCiB7Ci0g
ICAgdG9JbXBsKHBhZ2VSZWYpLT5nZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbih0
b0dlbmVyaWNDYWxsYmFja0Z1bmN0aW9uKGNvbnRleHQsIGNhbGxiYWNrKSk7CisgICAgdG9JbXBs
KHBhZ2VSZWYpLT5nZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbih0b1N0cmluZ0Nh
bGxiYWNrKGNvbnRleHQsIGNhbGxiYWNrKSk7CiB9CiAKIHZvaWQgV0tQYWdlR2V0U291cmNlRm9y
RnJhbWUoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLRnJhbWVSZWYgZnJhbWVSZWYsIHZvaWQqIGNvbnRl
eHQsIFdLUGFnZUdldFNvdXJjZUZvckZyYW1lRnVuY3Rpb24gY2FsbGJhY2spCiB7Ci0gICAgdG9J
bXBsKHBhZ2VSZWYpLT5nZXRTb3VyY2VGb3JGcmFtZSh0b0ltcGwoZnJhbWVSZWYpLCB0b0dlbmVy
aWNDYWxsYmFja0Z1bmN0aW9uKGNvbnRleHQsIGNhbGxiYWNrKSk7CisgICAgdG9JbXBsKHBhZ2VS
ZWYpLT5nZXRTb3VyY2VGb3JGcmFtZSh0b0ltcGwoZnJhbWVSZWYpLCB0b1N0cmluZ0NhbGxiYWNr
KGNvbnRleHQsIGNhbGxiYWNrKSk7CiB9CiAKIHZvaWQgV0tQYWdlR2V0Q29udGVudHNBc1N0cmlu
ZyhXS1BhZ2VSZWYgcGFnZVJlZiwgdm9pZCogY29udGV4dCwgV0tQYWdlR2V0Q29udGVudHNBc1N0
cmluZ0Z1bmN0aW9uIGNhbGxiYWNrKQogewotICAgIHRvSW1wbChwYWdlUmVmKS0+Z2V0Q29udGVu
dHNBc1N0cmluZyhDb250ZW50QXNTdHJpbmdJbmNsdWRlc0NoaWxkRnJhbWVzOjpObywgdG9HZW5l
cmljQ2FsbGJhY2tGdW5jdGlvbihjb250ZXh0LCBjYWxsYmFjaykpOworICAgIHRvSW1wbChwYWdl
UmVmKS0+Z2V0Q29udGVudHNBc1N0cmluZyhDb250ZW50QXNTdHJpbmdJbmNsdWRlc0NoaWxkRnJh
bWVzOjpObywgdG9TdHJpbmdDYWxsYmFjayhjb250ZXh0LCBjYWxsYmFjaykpOwogfQogCiB2b2lk
IFdLUGFnZUdldEJ5dGVjb2RlUHJvZmlsZShXS1BhZ2VSZWYgcGFnZVJlZiwgdm9pZCogY29udGV4
dCwgV0tQYWdlR2V0Qnl0ZWNvZGVQcm9maWxlRnVuY3Rpb24gY2FsbGJhY2spCiB7Ci0gICAgdG9J
bXBsKHBhZ2VSZWYpLT5nZXRCeXRlY29kZVByb2ZpbGUodG9HZW5lcmljQ2FsbGJhY2tGdW5jdGlv
bihjb250ZXh0LCBjYWxsYmFjaykpOworICAgIHRvSW1wbChwYWdlUmVmKS0+Z2V0Qnl0ZWNvZGVQ
cm9maWxlKHRvU3RyaW5nQ2FsbGJhY2soY29udGV4dCwgY2FsbGJhY2spKTsKIH0KIAogdm9pZCBX
S1BhZ2VHZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KFdLUGFnZVJlZiBwYWdlUmVmLCB2b2lkKiBj
b250ZXh0LCBXS1BhZ2VHZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0RnVuY3Rpb24gY2FsbGJhY2sp
CiB7Ci0gICAgdG9JbXBsKHBhZ2VSZWYpLT5nZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KHRvR2Vu
ZXJpY0NhbGxiYWNrRnVuY3Rpb24oY29udGV4dCwgY2FsbGJhY2spKTsKKyAgICB0b0ltcGwocGFn
ZVJlZiktPmdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQodG9TdHJpbmdDYWxsYmFjayhjb250ZXh0
LCBjYWxsYmFjaykpOwogfQogCiB2b2lkIFdLUGFnZUdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURh
dGEoV0tQYWdlUmVmIHBhZ2VSZWYsIHZvaWQqIGNvbnRleHQsIFdLUGFnZUdldFNlbGVjdGlvbkFz
V2ViQXJjaGl2ZURhdGFGdW5jdGlvbiBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tCmluZGV4IDNjMWUw
NmFmMDNkOTRmN2RhN2QwZDIwMWZhYjdhY2VmMjFlMDA3YWUuLjEyOTJjY2NjZjg4ZTg4OTM5ZmY5
ZmRlNDQ5NWEzNGYyOWRhOTJiYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQpAQCAtMTg3LDcgKzE4Nyw3IEBA
IHZvaWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmCiAgICAgICAgIHJldHVybjsKIAogICAgIHNldEZpbGVX
cmFwcGVyQW5kVXBkYXRlQ29udGVudFR5cGUoZmlsZVdyYXBwZXIsIGNvbnRlbnRUeXBlKTsKLSAg
ICBtX3dlYlBhZ2UtPnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKCp0aGlzLCBbXSAoYXV0bykg
eyB9KTsKKyAgICBtX3dlYlBhZ2UtPnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKCp0aGlzLCBb
XSB7IH0pOwogfQogCiB2b2lkIEF0dGFjaG1lbnQ6OnNldEZpbGVXcmFwcGVyR2VuZXJhdG9yKEZ1
bmN0aW9uPFJldGFpblB0cjxOU0ZpbGVXcmFwcGVyPih2b2lkKT4mJiBmaWxlV3JhcHBlckdlbmVy
YXRvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
CmluZGV4IGM1NWJkYjU0OWE3ZjdjNTQ3ZWUwNjEzYmEwN2MwOTU5MjcyNTdkZWEuLjQ5NDYxNmU5
MjYwNGZkYzY5M2Q0NWExYjlmZmJlYjlhMWFkZmJlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMjMxMyw5ICsyMzEzLDkgQEAgc3Rh
dGljIFJldGFpblB0cjxOU0FycmF5PiB3a1RleHRNYW5pcHVsYXRpb25FcnJvcnMoTlNBcnJheTxf
V0tUZXh0TWFuaXB1bGF0aW9uSXQKICAgICBhdXRvIGlkZW50aWZpZXIgPSBjcmVhdGVDYW5vbmlj
YWxVVUlEU3RyaW5nKCk7CiAgICAgYXV0byBhdHRhY2htZW50ID0gQVBJOjpBdHRhY2htZW50Ojpj
cmVhdGUoaWRlbnRpZmllciwgKl9wYWdlKTsKICAgICBhdHRhY2htZW50LT5zZXRGaWxlV3JhcHBl
ckFuZFVwZGF0ZUNvbnRlbnRUeXBlKGZpbGVXcmFwcGVyLCBjb250ZW50VHlwZSk7Ci0gICAgX3Bh
Z2UtPmluc2VydEF0dGFjaG1lbnQoYXR0YWNobWVudC5jb3B5UmVmKCksIFtjYXB0dXJlZEhhbmRs
ZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoV2ViS2l0OjpDYWxsYmFja0Jh
c2U6OkVycm9yIGVycm9yKSB7CisgICAgX3BhZ2UtPmluc2VydEF0dGFjaG1lbnQoYXR0YWNobWVu
dC5jb3B5UmVmKCksIFtjYXB0dXJlZEhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhh
bmRsZXIpXSB7CiAgICAgICAgIGlmIChjYXB0dXJlZEhhbmRsZXIpCi0gICAgICAgICAgICBjYXB0
dXJlZEhhbmRsZXIoZXJyb3IgPT0gV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKTsK
KyAgICAgICAgICAgIGNhcHR1cmVkSGFuZGxlcih0cnVlKTsKICAgICB9KTsKICNpZiBIQVZFKFFV
SUNLTE9PS19USFVNQk5BSUxJTkcpCiAgICAgX3BhZ2UtPnJlcXVlc3RUaHVtYm5haWxXaXRoRmls
ZVdyYXBwZXIoZmlsZVdyYXBwZXIsIGlkZW50aWZpZXIpOwpAQCAtMjU2MSwyNSArMjU2MSwxNSBA
QCBzdGF0aWMgaW5saW5lIE9wdGlvblNldDxXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmU+IGxheW91
dE1pbGVzdG9uZXMoX1dLUmVuZGVyaW5nUAogCiAtICh2b2lkKV9nZXRDb250ZW50c0FzU3RyaW5n
V2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1N0cmluZyAqLCBOU0Vycm9yICopKWNv
bXBsZXRpb25IYW5kbGVyCiB7Ci0gICAgYXV0byBoYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBs
ZXRpb25IYW5kbGVyKTsKLQotICAgIF9wYWdlLT5nZXRDb250ZW50c0FzU3RyaW5nKFdlYktpdDo6
Q29udGVudEFzU3RyaW5nSW5jbHVkZXNDaGlsZEZyYW1lczo6Tm8sIFtoYW5kbGVyXShTdHJpbmcg
c3RyaW5nLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKLSAgICAgICAgaWYg
KGVycm9yICE9IFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSkgewotICAgICAgICAg
ICAgLy8gRklYTUU6IFBpcGUgYSBwcm9wZXIgZXJyb3IgaW4gZnJvbSB0aGUgV2ViUGFnZVByb3h5
LgotICAgICAgICAgICAgaGFuZGxlcihuaWwsIFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vy
cm9yRG9tYWluIGNvZGU6c3RhdGljX2Nhc3Q8aW50PihlcnJvcikgdXNlckluZm86bmlsXSk7Ci0g
ICAgICAgIH0gZWxzZQotICAgICAgICAgICAgaGFuZGxlcihzdHJpbmcsIG5pbCk7CisgICAgX3Bh
Z2UtPmdldENvbnRlbnRzQXNTdHJpbmcoV2ViS2l0OjpDb250ZW50QXNTdHJpbmdJbmNsdWRlc0No
aWxkRnJhbWVzOjpObywgW2hhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIp
XShTdHJpbmcgc3RyaW5nKSB7CisgICAgICAgIGhhbmRsZXIoc3RyaW5nLCBuaWwpOwogICAgIH0p
OwogfQogCiAtICh2b2lkKV9nZXRDb250ZW50c09mQWxsRnJhbWVzQXNTdHJpbmdXaXRoQ29tcGxl
dGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TU3RyaW5nICopKWNvbXBsZXRpb25IYW5kbGVyCiB7Ci0g
ICAgYXV0byBoYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICBf
cGFnZS0+Z2V0Q29udGVudHNBc1N0cmluZyhXZWJLaXQ6OkNvbnRlbnRBc1N0cmluZ0luY2x1ZGVz
Q2hpbGRGcmFtZXM6OlllcywgW2hhbmRsZXJdKFN0cmluZyBzdHJpbmcsIFdlYktpdDo6Q2FsbGJh
Y2tCYXNlOjpFcnJvciBlcnJvcikgewotICAgICAgICBpZiAoZXJyb3IgIT0gV2ViS2l0OjpDYWxs
YmFja0Jhc2U6OkVycm9yOjpOb25lKQotICAgICAgICAgICAgaGFuZGxlcihuaWwpOwotICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBoYW5kbGVyKHN0cmluZyk7CisgICAgX3BhZ2UtPmdldENvbnRl
bnRzQXNTdHJpbmcoV2ViS2l0OjpDb250ZW50QXNTdHJpbmdJbmNsdWRlc0NoaWxkRnJhbWVzOjpZ
ZXMsIFtoYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oU3RyaW5nIHN0
cmluZykgeworICAgICAgICBoYW5kbGVyKHN0cmluZyk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdHRhY2htZW50Lm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F0dGFjaG1lbnQubW0KaW5kZXgg
MDBkOTY0ZmNjMTcwN2RlNjVmNTVjNDlhNTA4YjVjNGU2M2IwM2M1My4uNWU4YjhiYmJiZGZiYTY0
MDdmOWZmMzdmYmE4MmYyNjhkNDlmMmIxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0F0dGFjaG1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0F0dGFjaG1lbnQubW0KQEAgLTMyLDYgKzMyLDcgQEAKICNpbXBv
cnQgPFdlYkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TaGFyZWRC
dWZmZXIuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgorI2ltcG9ydCA8d3RmL0NvbXBsZXRp
b25IYW5kbGVyLmg+CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCA8TW9iaWxl
Q29yZVNlcnZpY2VzL01vYmlsZUNvcmVTZXJ2aWNlcy5oPgpAQCAtMTM5LDE0ICsxNDAsOSBAQCBz
dGF0aWMgY29uc3QgTlNJbnRlZ2VyIEludmFsaWRBdHRhY2htZW50RXJyb3JDb2RlID0gMjsKICAg
ICAvLyBmcm9tIHRoZSBTUEkgY2xpZW50LCB0aGUgY29ycmVzcG9uZGluZyBmaWxlIHBhdGggb2Yg
dGhlIGRhdGEgaXMgdW5rbm93biwgaWYgaXQgZXZlbiBleGlzdHMgYXQgYWxsLgogICAgIF9hdHRh
Y2htZW50LT5zZXRGaWxlUGF0aCh7IH0pOwogICAgIF9hdHRhY2htZW50LT5zZXRGaWxlV3JhcHBl
ckFuZFVwZGF0ZUNvbnRlbnRUeXBlKGZpbGVXcmFwcGVyLCBjb250ZW50VHlwZSk7Ci0gICAgX2F0
dGFjaG1lbnQtPnVwZGF0ZUF0dHJpYnV0ZXMoW2NhcHR1cmVkQmxvY2sgPSBtYWtlQmxvY2tQdHIo
Y29tcGxldGlvbkhhbmRsZXIpXSAoYXV0byBlcnJvcikgewotICAgICAgICBpZiAoIWNhcHR1cmVk
QmxvY2spCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKGVycm9yID09IFdlYktp
dDo6Q2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSkKKyAgICBfYXR0YWNobWVudC0+dXBkYXRlQXR0
cmlidXRlcyhbY2FwdHVyZWRCbG9jayA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcild
IHsKKyAgICAgICAgaWYgKGNhcHR1cmVkQmxvY2spCiAgICAgICAgICAgICBjYXB0dXJlZEJsb2Nr
KG5pbCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNhcHR1cmVkQmxvY2soW05TRXJyb3Ig
ZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpVbnNwZWNpZmllZEF0dGFjaG1lbnRF
cnJvckNvZGUgdXNlckluZm86bmlsXSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KaW5kZXggNTBlMjI1NTE4NWIxNDE1MTQ4NGU1
ZDAyN2FlYzQyYjhlY2IzNDg4NS4uMWJmOTA4NGM1M2ZlZDVlYjYzMTk2ODQ2NjdiM2FiODI3NGI3
YjhkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0lt
cGwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0K
QEAgLTMxNjIsOSArMzE2Miw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldFVzZXJJbnRlcmZhY2VJ
dGVtU3RhdGUoTlNTdHJpbmcgKmNvbW1hbmROYW1lLCBib29sIGVuYWJsZWQsCiB2b2lkIFdlYlZp
ZXdJbXBsOjpzdGFydFNwZWFraW5nKCkKIHsKICAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVn
ZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5Db21tdW5pY2F0ZVdpdGhXaW5kb3dTZXJ2ZXIpKTsKLSAg
ICBtX3BhZ2UtPmdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhbXShjb25zdCBTdHJpbmcm
IHN0cmluZywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7Ci0gICAgICAgIGlm
IChlcnJvciAhPSBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpCi0gICAgICAgICAg
ICByZXR1cm47CisgICAgbV9wYWdlLT5nZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcoW10o
Y29uc3QgU3RyaW5nJiBzdHJpbmcpIHsKICAgICAgICAgaWYgKCFzdHJpbmcpCiAgICAgICAgICAg
ICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dlbmVyaWND
YWxsYmFjay5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmgKaW5k
ZXggYzM2NTgxMWQwYTYyZmQ4NDJlOTQ0ODkwMGVkYjZhMmI0ZmU0NzgxOS4uMDM1NDE5ZDAyMTk0
MzRlNTcwZmQ3YmQ1M2MwZTk0MGVmYmRlMTFkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
R2VuZXJpY0NhbGxiYWNrLmgKQEAgLTE0NiwxNCArMTQ2LDYgQEAgcHJpdmF0ZToKICNlbmRpZgog
fTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgQVBJUmV0dXJuVmFsdWVUeXBlLCB0eXBlbmFtZSBJbnRl
cm5hbFJldHVyblZhbHVlVHlwZSA9IHR5cGVuYW1lIEFQSVR5cGVJbmZvPEFQSVJldHVyblZhbHVl
VHlwZT46OkltcGxUeXBlKj4KLXN0YXRpYyB0eXBlbmFtZSBHZW5lcmljQ2FsbGJhY2s8SW50ZXJu
YWxSZXR1cm5WYWx1ZVR5cGU+OjpDYWxsYmFja0Z1bmN0aW9uIHRvR2VuZXJpY0NhbGxiYWNrRnVu
Y3Rpb24odm9pZCogY29udGV4dCwgdm9pZCAoKmNhbGxiYWNrKShBUElSZXR1cm5WYWx1ZVR5cGUs
IFdLRXJyb3JSZWYsIHZvaWQqKSkKLXsKLSAgICByZXR1cm4gW2NvbnRleHQsIGNhbGxiYWNrXShJ
bnRlcm5hbFJldHVyblZhbHVlVHlwZSByZXR1cm5WYWx1ZSwgQ2FsbGJhY2tCYXNlOjpFcnJvciBl
cnJvcikgewotICAgICAgICBjYWxsYmFjayh0b0FQSShyZXR1cm5WYWx1ZSksIGVycm9yICE9IENh
bGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUgPyB0b0FQSShBUEk6OkVycm9yOjpjcmVhdGUoKS5wdHIo
KSkgOiAwLCBjb250ZXh0KTsKLSAgICB9OwotfQotCiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazw+
IFZvaWRDYWxsYmFjazsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGNkM2JhY2MyMzA2NTlkYzk3YTE1YzNjNTYxYzQ4
MzU1YmVhOTdkNzAuLjQ4ZDc0ZTJmYTU3ZjQ0MDlkOWUzMDFiNzZiOTU1MTk2OWUzNjBmNjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNjEzLDYgKzYxMyw5
IEBAIFdlYlBhZ2VQcm94eTo6fldlYlBhZ2VQcm94eSgpCiAjaWYgUExBVEZPUk0oTUFDQ0FUQUxZ
U1QpCiAgICAgRW5kb3dtZW50U3RhdGVUcmFja2VyOjpzaW5nbGV0b24oKS5yZW1vdmVDbGllbnQo
KnRoaXMpOwogI2VuZGlmCisgICAgCisgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IG1fbmV4dEFj
dGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja3MpCisgICAgICAgIGNhbGxiYWNrKCk7CiB9CiAKIC8v
IEZJWE1FOiBTaG91bGQgcmV0dXJuIGEgY29uc3QgUGFnZUNsaWVudCYgYW5kIGFkZCBhIHNlcGFy
YXRlIG5vbi1jb25zdApAQCAtMjAxNiwxMCArMjAxOSwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
ZGlzcGF0Y2hBY3Rpdml0eVN0YXRlQ2hhbmdlKCkKIAogICAgIGF1dG8gYWN0aXZpdHlTdGF0ZUNo
YW5nZUlEID0gbV9hY3Rpdml0eVN0YXRlQ2hhbmdlV2FudHNTeW5jaHJvbm91c1JlcGx5ID8gdGFr
ZU5leHRBY3Rpdml0eVN0YXRlQ2hhbmdlSUQoKSA6IHN0YXRpY19jYXN0PEFjdGl2aXR5U3RhdGVD
aGFuZ2VJRD4oQWN0aXZpdHlTdGF0ZUNoYW5nZUFzeW5jaHJvbm91cyk7CiAKLSAgICBpZiAoY2hh
bmdlZCB8fCBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQgIT0gQWN0aXZpdHlTdGF0ZUNoYW5nZUFzeW5j
aHJvbm91cyB8fCAhbV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrcy5pc0VtcHR5KCkp
Ci0gICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEFjdGl2aXR5U3RhdGUobV9hY3Rp
dml0eVN0YXRlLCBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQsIG1fbmV4dEFjdGl2aXR5U3RhdGVDaGFu
Z2VDYWxsYmFja3MpKTsKLQotICAgIG1fbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja3Mu
Y2xlYXIoKTsKKyAgICBpZiAoY2hhbmdlZCB8fCBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQgIT0gQWN0
aXZpdHlTdGF0ZUNoYW5nZUFzeW5jaHJvbm91cyB8fCAhbV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5n
ZUNhbGxiYWNrcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpXZWJQYWdlOjpTZXRBY3Rpdml0eVN0YXRlKG1fYWN0aXZpdHlTdGF0ZSwgYWN0aXZpdHlT
dGF0ZUNoYW5nZUlEKSwgW2NhbGxiYWNrcyA9IHN0ZDo6ZXhjaGFuZ2UobV9uZXh0QWN0aXZpdHlT
dGF0ZUNoYW5nZUNhbGxiYWNrcywgeyB9KV0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBmb3Ig
KGF1dG8mIGNhbGxiYWNrIDogY2FsbGJhY2tzKQorICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7
CisgICAgICAgIH0pOworICAgIH0KIAogICAgIC8vIFRoaXMgbXVzdCBoYXBwZW4gYWZ0ZXIgdGhl
IFNldEFjdGl2aXR5U3RhdGUgbWVzc2FnZSBpcyBzZW50LCB0byBlbnN1cmUgdGhlIHBhZ2Ugdmlz
aWJpbGl0eSBldmVudCBjYW4gZmlyZS4KICAgICB1cGRhdGVUaHJvdHRsZVN0YXRlKCk7CkBAIC00
MDc3LDM5ICs0MDgyLDE5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5GcmFt
ZUluU2NyaXB0V29ybGQoUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwCiAgICAgfSk7CiB9CiAK
LXZvaWQgV2ViUGFnZVByb3h5OjpnZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihX
VEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYm
IGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0UmVuZGVyVHJlZUV4dGVy
bmFsUmVwcmVzZW50YXRpb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4m
JiBjYWxsYmFjaykKIHsKLSAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKLSAgICAgICAg
Y2FsbGJhY2tGdW5jdGlvbihTdHJpbmcoKSwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgYXV0byBjYWxsYmFja0lEID0gbV9j
YWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0
bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OmdldFJlbmRlclRyZWVFeHRl
cm5hbFJlcHJlc2VudGF0aW9uIl9zKSk7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0
UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oY2FsbGJhY2tJRCkpOworICAgIHNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6R2V0UmVuZGVyVHJlZUV4dGVybmFsUmVw
cmVzZW50YXRpb24oKSwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94
eTo6Z2V0U291cmNlRm9yRnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUsIFdURjo6RnVuY3Rpb248
dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5j
dGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5OjpnZXRTb3VyY2VGb3JGcmFtZShXZWJGcmFtZVByb3h5
KiBmcmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjYWxsYmFj
aykKIHsKLSAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKLSAgICAgICAgY2FsbGJhY2tG
dW5jdGlvbihTdHJpbmcoKSwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OmdldFNvdXJjZUZvckZyYW1lIl9zKSk7Ci0g
ICAgbV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHMuYWRkKGNhbGxiYWNrSUQpOwotICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNvdXJjZUZvckZyYW1lKGZyYW1lLT5mcmFtZUlE
KCksIGNhbGxiYWNrSUQpKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBh
Z2U6OkdldFNvdXJjZUZvckZyYW1lKGZyYW1lLT5mcmFtZUlEKCkpLCBXVEZNb3ZlKGNhbGxiYWNr
KSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpnZXRDb250ZW50c0FzU3RyaW5nKENvbnRlbnRB
c1N0cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXMgaW5jbHVkZXNDaGlsZEZyYW1lcywgV1RGOjpGdW5j
dGlvbjx2b2lkKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNr
RnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0Q29udGVudHNBc1N0cmluZyhDb250ZW50
QXNTdHJpbmdJbmNsdWRlc0NoaWxkRnJhbWVzIGluY2x1ZGVzQ2hpbGRGcmFtZXMsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY2FsbGJhY2spCiB7Ci0gICAgaWYgKCFo
YXNSdW5uaW5nUHJvY2VzcygpKSB7Ci0gICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oU3RyaW5nKCks
IENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24pOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tG
dW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQ
YWdlUHJveHk6OmdldENvbnRlbnRzQXNTdHJpbmciX3MpKTsKLSAgICBtX2xvYWREZXBlbmRlbnRT
dHJpbmdDYWxsYmFja0lEcy5hZGQoY2FsbGJhY2tJRCk7Ci0gICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6R2V0Q29udGVudHNBc1N0cmluZyhpbmNsdWRlc0NoaWxkRnJhbWVzLCBjYWxsYmFja0lE
KSk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRDb250ZW50
c0FzU3RyaW5nKGluY2x1ZGVzQ2hpbGRGcmFtZXMpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAK
ICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTQxMjksMjggKzQxMTQsMTQgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmdldEFsbEZyYW1lcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEZyYW1lVHJlZU5vZGVE
YXRhJiYpPiYmIGMKICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6Okdl
dEFsbEZyYW1lcygpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgV2Vi
UGFnZVByb3h5OjpnZXRCeXRlY29kZVByb2ZpbGUoV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBT
dHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBX
ZWJQYWdlUHJveHk6OmdldEJ5dGVjb2RlUHJvZmlsZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFN0cmluZyYpPiYmIGNhbGxiYWNrKQogewotICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3Mo
KSkgewotICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKFN0cmluZygpLCBDYWxsYmFja0Jhc2U6OkVy
cm9yOjpVbmtub3duKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBhdXRvIGNh
bGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9w
cm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6Z2V0
Qnl0ZWNvZGVQcm9maWxlIl9zKSk7Ci0gICAgbV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJ
RHMuYWRkKGNhbGxiYWNrSUQpOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldEJ5dGVj
b2RlUHJvZmlsZShjYWxsYmFja0lEKSk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpXZWJQYWdlOjpHZXRCeXRlY29kZVByb2ZpbGUoKSwgV1RGTW92ZShjYWxsYmFjaykpOwogfQog
Ci12b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2FtcGxpbmdQcm9maWxlck91dHB1dChXVEY6OkZ1bmN0
aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNr
RnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2FtcGxpbmdQcm9maWxlck91dHB1dChD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNhbGxiYWNrKQogewotICAg
IGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgewotICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKFN0
cmluZygpLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICAKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92
ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0
aXZpdHkoIldlYlBhZ2VQcm94eTo6Z2V0U2FtcGxpbmdQcm9maWxlck91dHB1dCJfcykpOwotICAg
IG1fbG9hZERlcGVuZGVudFN0cmluZ0NhbGxiYWNrSURzLmFkZChjYWxsYmFja0lEKTsKLSAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KGNhbGxiYWNr
SUQpKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNhbXBs
aW5nUHJvZmlsZXJPdXRwdXQoKSwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCiBzdGF0aWMgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpPiB0b0FQ
SURhdGFDYWxsYmFjayhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6RGF0YSopPiYmIGNhbGxi
YWNrKQpAQCAtNDE2NywxNSArNDEzOCw5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRDb250ZW50
c0FzTUhUTUxEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJOjpEYXRhKik+JiYKIH0KICNl
bmRpZgogCi12b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5n
KFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+
JiYgY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5OjpnZXRTZWxlY3Rpb25PckNv
bnRlbnRzQXNTdHJpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJiBj
YWxsYmFjaykKIHsKLSAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKLSAgICAgICAgY2Fs
bGJhY2tGdW5jdGlvbihTdHJpbmcoKSwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxs
YmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVy
KCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OmdldFNlbGVjdGlvbk9yQ29udGVu
dHNBc1N0cmluZyJfcykpOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNlbGVjdGlv
bk9yQ29udGVudHNBc1N0cmluZyhjYWxsYmFja0lEKSk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5
KE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcoKSwgY2Fs
bGJhY2spOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZl
RGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6RGF0YSopPiYmIGNhbGxiYWNrKQpAQCAt
NDU4MCwxNSArNDU0NSw2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxM
b2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwCiAgICAgICAgIG1fcHJv
dmlzaW9uYWxQYWdlID0gbnVsbHB0cjsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmNsZWFyTG9h
ZERlcGVuZGVudENhbGxiYWNrcygpCi17Ci0gICAgSGFzaFNldDxDYWxsYmFja0lEPiBsb2FkRGVw
ZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHMgPSBXVEZNb3ZlKG1fbG9hZERlcGVuZGVudFN0cmluZ0Nh
bGxiYWNrSURzKTsKLSAgICBmb3IgKGF1dG8mIGNhbGxiYWNrSUQgOiBsb2FkRGVwZW5kZW50U3Ry
aW5nQ2FsbGJhY2tJRHMpIHsKLSAgICAgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNr
cy50YWtlPFN0cmluZ0NhbGxiYWNrPihjYWxsYmFja0lEKSkKLSAgICAgICAgICAgIGNhbGxiYWNr
LT5pbnZhbGlkYXRlKCk7Ci0gICAgfQotfQotCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RB
VElTVElDUykKIHN0YXRpYyBPcHRpb25TZXQ8Q3Jvc3NTaXRlTmF2aWdhdGlvbkRhdGFUcmFuc2Zl
cjo6RmxhZz4gY2hlY2tJZk5hdmlnYXRpb25Db250YWluc0RhdGFUcmFuc2Zlcihjb25zdCBTZWN1
cml0eU9yaWdpbkRhdGEgcmVxdWVzdGVyT3JpZ2luLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGN1
cnJlbnRSZXF1ZXN0KQogewpAQCAtNDY2Myw4ICs0NjE5LDYgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmRpZENvbW1pdExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZv
RGF0YSYKICAgICBwYWdlQ2xpZW50KCkucmVzZXRTZWN1cmVJbnB1dFN0YXRlKCk7CiAjZW5kaWYK
IAotICAgIGNsZWFyTG9hZERlcGVuZGVudENhbGxiYWNrcygpOwotCiAgICAgZnJhbWUtPmRpZENv
bW1pdExvYWQobWltZVR5cGUsIHdlYkNlcnRpZmljYXRlSW5mbywgY29udGFpbnNQbHVnaW5Eb2N1
bWVudCk7CiAKICAgICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpIHsKQEAgLTQ4MjcsOCArNDc4
MSw2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsTG9hZEZvckZyYW1lKEZyYW1lSWRlbnRp
ZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJiYKICAgICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1l
KCkgJiYgbmF2aWdhdGlvbklEKQogICAgICAgICBuYXZpZ2F0aW9uID0gbmF2aWdhdGlvblN0YXRl
KCkubmF2aWdhdGlvbihuYXZpZ2F0aW9uSUQpOwogCi0gICAgY2xlYXJMb2FkRGVwZW5kZW50Q2Fs
bGJhY2tzKCk7Ci0KICAgICBhdXRvIHRyYW5zYWN0aW9uID0gbV9wYWdlTG9hZFN0YXRlLnRyYW5z
YWN0aW9uKCk7CiAKICAgICBib29sIGlzTWFpbkZyYW1lID0gZnJhbWUtPmlzTWFpbkZyYW1lKCk7
CkBAIC03MTE2LDQ1ICs3MDY4LDYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVFdmVu
dCh1aW50MzJfdCBvcGFxdWVUeXBlLCBib29sIGhhbmRsZWQpCiAgICAgfQogfQogCi12b2lkIFdl
YlBhZ2VQcm94eTo6dm9pZENhbGxiYWNrKENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKLXsKLSAgICBh
dXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3MudGFrZTxWb2lkQ2FsbGJhY2s+KGNhbGxiYWNrSUQp
OwotICAgIGlmICghY2FsbGJhY2spIHsKLSAgICAgICAgLy8gRklYTUU6IExvZyBlcnJvciBvciBh
c3NlcnQuCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBjYWxsYmFjay0+cGVyZm9ybUNh
bGxiYWNrKCk7Ci19Ci0KLXZvaWQgV2ViUGFnZVByb3h5OjpzdHJpbmdDYWxsYmFjayhjb25zdCBT
dHJpbmcmIHJlc3VsdFN0cmluZywgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQotewotICAgIGF1dG8g
Y2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPFN0cmluZ0NhbGxiYWNrPihjYWxsYmFja0lEKTsK
LSAgICBpZiAoIWNhbGxiYWNrKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBMb2cgZXJyb3Igb3IgYXNz
ZXJ0LgotICAgICAgICAvLyB0aGlzIGNhbiB2YWxpZGx5IGhhcHBlbiBpZiBhIGxvYWQgaW52YWxp
ZGF0ZWQgdGhlIGNhbGxiYWNrLCB0aG91Z2gKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IG1fbG9hZERlcGVuZGVudFN0cmluZ0NhbGxiYWNrSURzLnJlbW92ZShjYWxsYmFja0lEKTsKLQot
ICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUocmVzdWx0U3RyaW5n
LmltcGwoKSk7Ci19Ci0KLXZvaWQgV2ViUGFnZVByb3h5OjppbnZhbGlkYXRlU3RyaW5nQ2FsbGJh
Y2soQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQotewotICAgIGF1dG8gY2FsbGJhY2sgPSBtX2NhbGxi
YWNrcy50YWtlPFN0cmluZ0NhbGxiYWNrPihjYWxsYmFja0lEKTsKLSAgICBpZiAoIWNhbGxiYWNr
KSB7Ci0gICAgICAgIC8vIEZJWE1FOiBMb2cgZXJyb3Igb3IgYXNzZXJ0LgotICAgICAgICAvLyB0
aGlzIGNhbiB2YWxpZGx5IGhhcHBlbiBpZiBhIGxvYWQgaW52YWxpZGF0ZWQgdGhlIGNhbGxiYWNr
LCB0aG91Z2gKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIG1fbG9hZERlcGVuZGVudFN0
cmluZ0NhbGxiYWNrSURzLnJlbW92ZShjYWxsYmFja0lEKTsKLQotICAgIGNhbGxiYWNrLT5pbnZh
bGlkYXRlKCk7Ci19Ci0KIHZvaWQgV2ViUGFnZVByb3h5OjplZGl0b3JTdGF0ZUNoYW5nZWQoY29u
c3QgRWRpdG9yU3RhdGUmIGVkaXRvclN0YXRlKQogewogICAgIHVwZGF0ZUVkaXRvclN0YXRlKGVk
aXRvclN0YXRlKTsKQEAgLTc1NTgsOSArNzQ3MSw2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXNl
dFN0YXRlKFJlc2V0U3RhdGVSZWFzb24gcmVzZXRTdGF0ZVJlYXNvbikKICAgICAgICAgYnJlYWs7
CiAgICAgfQogCi0gICAgbV9jYWxsYmFja3MuaW52YWxpZGF0ZShlcnJvcik7Ci0gICAgbV9sb2Fk
RGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHMuY2xlYXIoKTsKLQogICAgIGZvciAoYXV0byYgZWRp
dENvbW1hbmQgOiBzdGQ6OmV4Y2hhbmdlKG1fZWRpdENvbW1hbmRTZXQsIHsgfSkpCiAgICAgICAg
IGVkaXRDb21tYW5kLT5pbnZhbGlkYXRlKCk7CiAKQEAgLTkyMzUsMTggKzkxNDUsMTQgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmRpZEVuZE1hZ25pZmljYXRpb25HZXN0dXJlKCkKIAogI2VuZGlmCiAK
LXZvaWQgV2ViUGFnZVByb3h5OjppbnN0YWxsQWN0aXZpdHlTdGF0ZUNoYW5nZUNvbXBsZXRpb25I
YW5kbGVyKEZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFn
ZVByb3h5OjppbnN0YWxsQWN0aXZpdHlTdGF0ZUNoYW5nZUNvbXBsZXRpb25IYW5kbGVyKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIWhh
c1J1bm5pbmdQcm9jZXNzKCkpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gdm9pZENhbGxiYWNrID0gVm9pZENhbGxiYWNr
OjpjcmVhdGUoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
IChhdXRvKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Ci0gICAgfSwgbV9wcm9jZXNz
LT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6aW5zdGFsbEFj
dGl2aXR5U3RhdGVDaGFuZ2VDb21wbGV0aW9uSGFuZGxlciJfcykpOwotICAgIGF1dG8gY2FsbGJh
Y2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKHZvaWRDYWxsYmFjaykpOwotICAgIG1fbmV4
dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja3MuYXBwZW5kKGNhbGxiYWNrSUQpOworICAgIG1f
bmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja3MuYXBwZW5kKFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmltYWdlT3JNZWRpYURvY3VtZW50
U2l6ZUNoYW5nZWQoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgbmV3U2l6ZSkKQEAgLTk2MjAsMzIg
Kzk1MjYsMjAgQEAgUmVmUHRyPEFQSTo6QXR0YWNobWVudD4gV2ViUGFnZVByb3h5OjphdHRhY2ht
ZW50Rm9ySWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW4KICAgICByZXR1cm4gbV9hdHRhY2ht
ZW50SWRlbnRpZmllclRvQXR0YWNobWVudE1hcC5nZXQoaWRlbnRpZmllcik7CiB9CiAKLXZvaWQg
V2ViUGFnZVByb3h5OjppbnNlcnRBdHRhY2htZW50KFJlZjxBUEk6OkF0dGFjaG1lbnQ+JiYgYXR0
YWNobWVudCwgRnVuY3Rpb248dm9pZChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFjaykK
K3ZvaWQgV2ViUGFnZVByb3h5OjppbnNlcnRBdHRhY2htZW50KFJlZjxBUEk6OkF0dGFjaG1lbnQ+
JiYgYXR0YWNobWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrKQogewot
ICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgewotICAgICAgICBjYWxsYmFjayhDYWxsYmFj
a0Jhc2U6OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQogICAgIGF1dG8gYXR0YWNobWVudElkZW50aWZpZXIgPSBhdHRhY2htZW50LT5pZGVudGlm
aWVyKCk7Ci0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2Fs
bGJhY2spLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFn
ZVByb3h5OjppbnNlcnRBdHRhY2htZW50Il9zKSk7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6SW5zZXJ0QXR0YWNobWVudChhdHRhY2htZW50SWRlbnRpZmllciwgYXR0YWNobWVudC0+Zmls
ZVNpemVGb3JEaXNwbGF5KCksIGF0dGFjaG1lbnQtPmZpbGVOYW1lKCksIGF0dGFjaG1lbnQtPmNv
bnRlbnRUeXBlKCksIGNhbGxiYWNrSUQpKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6OldlYlBhZ2U6Okluc2VydEF0dGFjaG1lbnQoYXR0YWNobWVudElkZW50aWZpZXIsIGF0dGFj
aG1lbnQtPmZpbGVTaXplRm9yRGlzcGxheSgpLCBhdHRhY2htZW50LT5maWxlTmFtZSgpLCBhdHRh
Y2htZW50LT5jb250ZW50VHlwZSgpKSwgV1RGTW92ZShjYWxsYmFjaykpOwogICAgIG1fYXR0YWNo
bWVudElkZW50aWZpZXJUb0F0dGFjaG1lbnRNYXAuc2V0KGF0dGFjaG1lbnRJZGVudGlmaWVyLCBX
VEZNb3ZlKGF0dGFjaG1lbnQpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZUF0dGFj
aG1lbnRBdHRyaWJ1dGVzKGNvbnN0IEFQSTo6QXR0YWNobWVudCYgYXR0YWNobWVudCwgRnVuY3Rp
b248dm9pZChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViUGFnZVBy
b3h5Ojp1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25zdCBBUEk6OkF0dGFjaG1lbnQmIGF0
dGFjaG1lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFjaykKIHsKLSAgICBp
ZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKLSAgICAgICAgY2FsbGJhY2soQ2FsbGJhY2tCYXNl
OjpFcnJvcjo6T3duZXJXYXNJbnZhbGlkYXRlZCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
ICAgICBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZTsKICAgICBp
ZiAoYXV0byBkYXRhID0gYXR0YWNobWVudC5lbmNsb3NpbmdJbWFnZURhdGEoKSkKICAgICAgICAg
ZGF0YVJlZmVyZW5jZSA9IHsgKmRhdGEgfTsKIAotICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2Fs
bGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNr
Z3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6dXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMi
X3MpKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVBdHRhY2htZW50QXR0cmli
dXRlcyhhdHRhY2htZW50LmlkZW50aWZpZXIoKSwgYXR0YWNobWVudC5maWxlU2l6ZUZvckRpc3Bs
YXkoKSwgYXR0YWNobWVudC5jb250ZW50VHlwZSgpLCBhdHRhY2htZW50LmZpbGVOYW1lKCksIFdU
Rk1vdmUoZGF0YVJlZmVyZW5jZSksIGNhbGxiYWNrSUQpKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGF0dGFjaG1l
bnQuaWRlbnRpZmllcigpLCBhdHRhY2htZW50LmZpbGVTaXplRm9yRGlzcGxheSgpLCBhdHRhY2ht
ZW50LmNvbnRlbnRUeXBlKCksIGF0dGFjaG1lbnQuZmlsZU5hbWUoKSwgV1RGTW92ZShkYXRhUmVm
ZXJlbmNlKSksIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAogI2lmIEhBVkUoUVVJQ0tMT09LX1RI
VU1CTkFJTElORykKQEAgLTk4MDEsNyArOTY5NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRJ
bnNlcnRBdHRhY2htZW50V2l0aElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBj
CiAgICAgcGFnZUNsaWVudCgpLmRpZEluc2VydEF0dGFjaG1lbnQoYXR0YWNobWVudC5nZXQoKSwg
c291cmNlKTsKIAogICAgIGlmICghYXR0YWNobWVudC0+aXNFbXB0eSgpICYmIGhhc0VuY2xvc2lu
Z0ltYWdlKQotICAgICAgICB1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhhdHRhY2htZW50Lmdl
dCgpLCBbXSAoYXV0bykgeyB9KTsKKyAgICAgICAgdXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMo
YXR0YWNobWVudC5nZXQoKSwgW10geyB9KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJl
bW92ZUF0dGFjaG1lbnRXaXRoSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGY0YzM5ZWI4ZTU0Mzg2ZTQ4
YjhlMmM4MWVjOTkwNmVlNDQ4YjE3MTcuLjMxNGRhMzU0YTc0Y2IxOWVjYTQxN2M0NGU2ODk0OGQ5
MGRiYWI3MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0zODAs
OCArMzgwLDYgQEAgZW51bSBjbGFzcyBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IDogYm9v
bDsKIGVudW0gY2xhc3MgVW5kb09yUmVkbyA6IGJvb2w7CiBlbnVtIGNsYXNzIFdlYkNvbnRlbnRN
b2RlIDogdWludDhfdDsKIAotdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgU3RyaW5nJj4g
U3RyaW5nQ2FsbGJhY2s7Ci0KICNpZiBIQVZFKFZJU0lCSUxJVFlfUFJPUEFHQVRJT05fVklFVykK
IHVzaW5nIExheWVySG9zdGluZ0NvbnRleHRJRCA9IHVpbnQzMl90OwogI2VuZGlmCkBAIC03NjQs
NyArNzYyLDcgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBv
aW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNl
ZEVsZW1lbnQsIFJlc3BlY3RTZWxlY3Rpb25BbmNob3IsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYpOwogICAgIHZvaWQgdXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50QW5kQm91
bmRhcnkoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQsIFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSwg
Ym9vbCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIHJlcXVlc3RBdXRvY29ycmVjdGlvbkRhdGEoY29uc3Qg
U3RyaW5nJiB0ZXh0Rm9yQXV0b2NvcnJlY3Rpb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vi
QXV0b2NvcnJlY3Rpb25EYXRhKT4mJik7Ci0gICAgdm9pZCBhcHBseUF1dG9jb3JyZWN0aW9uKGNv
bnN0IFN0cmluZyYgY29ycmVjdGlvbiwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbFRleHQsIFdURjo6
RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwor
ICAgIHZvaWQgYXBwbHlBdXRvY29ycmVjdGlvbihjb25zdCBTdHJpbmcmIGNvcnJlY3Rpb24sIGNv
bnN0IFN0cmluZyYgb3JpZ2luYWxUZXh0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0
cmluZyYpPiYmKTsKICAgICBib29sIGFwcGx5QXV0b2NvcnJlY3Rpb24oY29uc3QgU3RyaW5nJiBj
b3JyZWN0aW9uLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVGV4dCk7CiAgICAgdm9pZCByZXF1ZXN0
QXV0b2NvcnJlY3Rpb25Db250ZXh0KCk7CiAgICAgdm9pZCBoYW5kbGVBdXRvY29ycmVjdGlvbkNv
bnRleHQoY29uc3QgV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0Jik7CkBAIC0xMTE0LDIyICsxMTEy
LDIyIEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZEZhaWxUb0ZpbmRTdHJpbmcoY29uc3QgU3RyaW5n
Jik7CiAgICAgdm9pZCBkaWRGaW5kU3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmLCBjb25zdCBW
ZWN0b3I8VmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+PiYgbWF0Y2hSZWN0cywgaW50MzJfdCBmaXJz
dEluZGV4QWZ0ZXJTZWxlY3Rpb24pOwogCi0gICAgdm9pZCBnZXRDb250ZW50c0FzU3RyaW5nKENv
bnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXMsIFdURjo6RnVuY3Rpb248dm9pZChjb25z
dCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CisgICAgdm9pZCBnZXRDb250ZW50
c0FzU3RyaW5nKENvbnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXMsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
IHZvaWQgZ2V0Q29udGVudHNBc0F0dHJpYnV0ZWRTdHJpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBXZWJDb3JlOjpBdHRyaWJ1dGVkU3RyaW5nJik+JiYpOwogI2VuZGlmCi0gICAgdm9p
ZCBnZXRCeXRlY29kZVByb2ZpbGUoV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBD
YWxsYmFja0Jhc2U6OkVycm9yKT4mJik7Ci0gICAgdm9pZCBnZXRTYW1wbGluZ1Byb2ZpbGVyT3V0
cHV0KFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJv
cik+JiYpOworICAgIHZvaWQgZ2V0Qnl0ZWNvZGVQcm9maWxlKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgU3RyaW5nJik+JiYpOworICAgIHZvaWQgZ2V0U2FtcGxpbmdQcm9maWxlck91dHB1
dChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKIAogI2lmIEVOQUJM
RShNSFRNTCkKICAgICB2b2lkIGdldENvbnRlbnRzQXNNSFRNTERhdGEoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChBUEk6OkRhdGEqKT4mJik7CiAjZW5kaWYKICAgICB2b2lkIGdldE1haW5SZXNvdXJj
ZURhdGFPZkZyYW1lKFdlYkZyYW1lUHJveHkqLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6
RGF0YSopPiYmKTsKICAgICB2b2lkIGdldFJlc291cmNlRGF0YUZyb21GcmFtZShXZWJGcmFtZVBy
b3h5JiwgQVBJOjpVUkwqLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6RGF0YSopPiYmKTsK
LSAgICB2b2lkIGdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKFdURjo6RnVuY3Rp
b248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwotICAgIHZv
aWQgZ2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKFdURjo6RnVuY3Rpb248dm9pZCAoY29u
c3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAgIHZvaWQgZ2V0UmVuZGVy
VHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBT
dHJpbmcmKT4mJik7CisgICAgdm9pZCBnZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJik7CiAgICAgdm9pZCBnZXRTZWxl
Y3Rpb25Bc1dlYkFyY2hpdmVEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJOjpEYXRhKik+
JiYpOwotICAgIHZvaWQgZ2V0U291cmNlRm9yRnJhbWUoV2ViRnJhbWVQcm94eSosIFdURjo6RnVu
Y3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAg
IHZvaWQgZ2V0U291cmNlRm9yRnJhbWUoV2ViRnJhbWVQcm94eSosIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOwogICAgIHZvaWQgZ2V0V2ViQXJjaGl2ZU9mRnJhbWUo
V2ViRnJhbWVQcm94eSosIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJOjpEYXRhKik+JiYpOwog
ICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQ
YXJhbWV0ZXJzJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8UmVmUHRyPEFQSTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgV2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4mJik+JiYp
OwogICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKFdlYkNvcmU6OlJ1
bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
cj4sIEFQSTo6Q29udGVudFdvcmxkJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxS
ZWZQdHI8QVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBXZWJDb3JlOjpFeGNlcHRpb25EZXRh
aWxzPiYmKT4mJik7CkBAIC0xNDc3LDcgKzE0NzUsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIHNj
cm9sbGluZ1VwZGF0ZXNEaXNhYmxlZEZvclRlc3RpbmcoKTsKIAotICAgIHZvaWQgaW5zdGFsbEFj
dGl2aXR5U3RhdGVDaGFuZ2VDb21wbGV0aW9uSGFuZGxlcihGdW5jdGlvbjx2b2lkKCk+JiYpOwor
ICAgIHZvaWQgaW5zdGFsbEFjdGl2aXR5U3RhdGVDaGFuZ2VDb21wbGV0aW9uSGFuZGxlcihDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAjaWYgVVNFKFVOSUZJRURfVEVYVF9DSEVDS0lO
RykKICAgICB2b2lkIGNoZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0IFN0cmluZyYgdGV4dCwgT3B0
aW9uU2V0PFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGU+IGNoZWNraW5nVHlwZXMsIGludDMyX3Qg
aW5zZXJ0aW9uUG9pbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OlRl
eHRDaGVja2luZ1Jlc3VsdD4mJik+JiYpOwpAQCAtMTYxNSw4ICsxNjEzLDggQEAgcHVibGljOgog
CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICBSZWZQdHI8QVBJOjpBdHRhY2ht
ZW50PiBhdHRhY2htZW50Rm9ySWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpIGNv
bnN0OwotICAgIHZvaWQgaW5zZXJ0QXR0YWNobWVudChSZWY8QVBJOjpBdHRhY2htZW50PiYmLCBG
dW5jdGlvbjx2b2lkKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKLSAgICB2b2lkIHVwZGF0ZUF0
dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IEFQSTo6QXR0YWNobWVudCYsIEZ1bmN0aW9uPHZvaWQo
Q2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAgIHZvaWQgaW5zZXJ0QXR0YWNobWVudChSZWY8
QVBJOjpBdHRhY2htZW50PiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZv
aWQgdXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoY29uc3QgQVBJOjpBdHRhY2htZW50JiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNlcmlhbGl6ZWRBdHRhY2htZW50
RGF0YUZvcklkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiYmKT4mJik7
CiAgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpOwog
ICAgIHZvaWQgZGlkSW52YWxpZGF0ZURhdGFGb3JBdHRhY2htZW50KEFQSTo6QXR0YWNobWVudCYp
OwpAQCAtMjE1MywxMCArMjE1MSw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaXNjYXJkUXVldWVk
TW91c2VFdmVudHMoKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZUV2ZW50KHVpbnQzMl90IG9wYXF1
ZVR5cGUsIGJvb2wgaGFuZGxlZCk7Ci0KLSAgICB2b2lkIHZvaWRDYWxsYmFjayhDYWxsYmFja0lE
KTsKLSAgICB2b2lkIHN0cmluZ0NhbGxiYWNrKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrSUQpOwot
ICAgIHZvaWQgaW52YWxpZGF0ZVN0cmluZ0NhbGxiYWNrKENhbGxiYWNrSUQpOwogI2lmIFBMQVRG
T1JNKE1BQykKICAgICB2b2lkIGRpZFVwZGF0ZVJlbmRlcmluZ0FmdGVyQ29tbWl0dGluZ0xvYWQo
KTsKICAgICB2b2lkIGZvbnRBdFNlbGVjdGlvbkNhbGxiYWNrKGNvbnN0IEZvbnRJbmZvJiwgZG91
YmxlLCBib29sLCBDYWxsYmFja0lEKTsKQEAgLTIyMzMsOCArMjIyNyw2IEBAIHByaXZhdGU6CiAg
ICAgUmV0YWluUHRyPE5TQXJyYXk+IG1fZGF0YURldGVjdGlvblJlc3VsdHM7CiAjZW5kaWYKIAot
ICAgIHZvaWQgY2xlYXJMb2FkRGVwZW5kZW50Q2FsbGJhY2tzKCk7Ci0KICAgICB2b2lkIHBlcmZv
cm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbiwgV2ViQ29yZTo6RHJh
Z0RhdGEmLCBjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFtZSwgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlJiYsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5JiYpOwogCiAgICAgdm9pZCB1
cGRhdGVCYWNraW5nU3RvcmVEaXNjYXJkYWJsZVN0YXRlKCk7CkBAIC0yNDg0LDkgKzI0NzYsNiBA
QCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3JQcm94eT4gbV9jcmVkZW50aWFsc01lc3NlbmdlcjsKICNlbmRpZgogCi0gICAgQ2FsbGJhY2tN
YXAgbV9jYWxsYmFja3M7Ci0gICAgSGFzaFNldDxDYWxsYmFja0lEPiBtX2xvYWREZXBlbmRlbnRT
dHJpbmdDYWxsYmFja0lEczsKLQogICAgIEhhc2hTZXQ8V2ViRWRpdENvbW1hbmRQcm94eSo+IG1f
ZWRpdENvbW1hbmRTZXQ7CiAKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTI3NjQsNyArMjc1Myw3
IEBAIHByaXZhdGU6CiAKICAgICBPcHRpb25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6Rmxh
Zz4gbV9wb3RlbnRpYWxseUNoYW5nZWRBY3Rpdml0eVN0YXRlRmxhZ3M7CiAgICAgYm9vbCBtX2Fj
dGl2aXR5U3RhdGVDaGFuZ2VXYW50c1N5bmNocm9ub3VzUmVwbHkgeyBmYWxzZSB9OwotICAgIFZl
Y3RvcjxDYWxsYmFja0lEPiBtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tzOworICAg
IFZlY3RvcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+PiBtX25leHRBY3Rpdml0eVN0YXRlQ2hh
bmdlQ2FsbGJhY2tzOwogCiAgICAgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZs
YWdzIG1fbWVkaWFTdGF0ZSB7IFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6OklzTm90UGxheWluZyB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMu
aW4KaW5kZXggNDkxOWJjOTg4ZTljNWZjYTcyZmZjOGMyMWEzZmMxNDMwYjI4YzA1YS4uMDViZjIx
YmZmYjdkN2NlOWQwYjEwNDIwMjc5ZTc5ZThlMTgwZTVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMTYyLDEwICsxNjIsNiBA
QCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgICMgRm9ybXMgbWVzc2FnZXMKICAgICBX
aWxsU3VibWl0Rm9ybShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyIHNvdXJjZUZyYW1lSUQsIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBT
dHJpbmc+PiB0ZXh0RmllbGRWYWx1ZXMsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6VXNl
ckRhdGEgdXNlckRhdGEpCiAKLSAgICAjIENhbGxiYWNrIG1lc3NhZ2VzCi0gICAgVm9pZENhbGxi
YWNrKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQotICAgIFN0cmluZ0NhbGxiYWNrKFN0
cmluZyByZXN1bHRTdHJpbmcsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQotICAgIElu
dmFsaWRhdGVTdHJpbmdDYWxsYmFjayhXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIEludGVycHJldEtleUV2ZW50KHN0cnVjdCBXZWJL
aXQ6OkVkaXRvclN0YXRlIHN0YXRlLCBib29sIGlzQ2hhckV2ZW50KSAtPiAoYm9vbCBoYW5kbGVk
KSBTeW5jaHJvbm91cwogICAgIERpZFJlY2VpdmVQb3NpdGlvbkluZm9ybWF0aW9uKHN0cnVjdCBX
ZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uIGluZm9ybWF0aW9uKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24ubW0KaW5kZXggY2VjODdjNThmMDExY2E3ZGE0OTkzY2YxNTNjMWQ2ZmU3MjQ1YTRiOC4u
NjdhZDFiZWZkNDNmM2MwMTc5ODUyMGYwMGU5OTk2NWVmYjgxZTJmYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1t
CkBAIC0zMjI2LDEwICszMjI2LDcgQEAgRk9SX0VBQ0hfUFJJVkFURV9XS0NPTlRFTlRWSUVXX0FD
VElPTihGT1JXQVJEX0FDVElPTl9UT19XS1dFQlZJRVcpCiAtICh2b2lkKV9zaGFyZUZvcldlYlZp
ZXc6KGlkKXNlbmRlcgogewogICAgIFJldGFpblB0cjxXS0NvbnRlbnRWaWV3PiB2aWV3ID0gc2Vs
ZjsKLSAgICBfcGFnZS0+Z2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKFt2aWV3XShjb25z
dCBTdHJpbmcmIHN0cmluZywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7Ci0g
ICAgICAgIGlmIChlcnJvciAhPSBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpCi0g
ICAgICAgICAgICByZXR1cm47Ci0KKyAgICBfcGFnZS0+Z2V0U2VsZWN0aW9uT3JDb250ZW50c0Fz
U3RyaW5nKFt2aWV3XShjb25zdCBTdHJpbmcmIHN0cmluZykgewogICAgICAgICBpZiAoIXZpZXct
Pl90ZXh0SW50ZXJhY3Rpb25Bc3Npc3RhbnQgfHwgIXN0cmluZyB8fCB2aWV3LT5fcGFnZS0+ZWRp
dG9yU3RhdGUoKS5pc01pc3NpbmdQb3N0TGF5b3V0RGF0YSkKICAgICAgICAgICAgIHJldHVybjsK
IApAQCAtMzgyOSw5ICszODI2LDcgQEAgV0VCQ09SRV9DT01NQU5EX0ZPUl9XRUJWSUVXKHBhc3Rl
QW5kTWF0Y2hTdHlsZSk7CiAjZW5kaWYKIAogICAgIFJldGFpblB0cjxXS0NvbnRlbnRWaWV3PiB2
aWV3ID0gc2VsZjsKLSAgICBfcGFnZS0+Z2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKFt2
aWV3XShjb25zdCBTdHJpbmcmIHN0cmluZywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVy
cm9yKSB7Ci0gICAgICAgIGlmIChlcnJvciAhPSBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3I6
Ok5vbmUpCi0gICAgICAgICAgICByZXR1cm47CisgICAgX3BhZ2UtPmdldFNlbGVjdGlvbk9yQ29u
dGVudHNBc1N0cmluZyhbdmlld10oY29uc3QgU3RyaW5nJiBzdHJpbmcpIHsKICAgICAgICAgaWYg
KCFzdHJpbmcpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTM4NDMsOSArMzgzOCw3IEBAIFdF
QkNPUkVfQ09NTUFORF9GT1JfV0VCVklFVyhwYXN0ZUFuZE1hdGNoU3R5bGUpOwogewogICAgIFJl
dGFpblB0cjxXS0NvbnRlbnRWaWV3PiB2aWV3ID0gc2VsZjsKICAgICBSZXRhaW5QdHI8V0tXZWJW
aWV3PiB3ZWJWaWV3ID0gX3dlYlZpZXcuZ2V0KCk7Ci0gICAgX3BhZ2UtPmdldFNlbGVjdGlvbk9y
Q29udGVudHNBc1N0cmluZyhbdmlldywgd2ViVmlld10oY29uc3QgU3RyaW5nJiBzdHJpbmcsIFdl
YktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgewotICAgICAgICBpZiAoZXJyb3IgIT0g
V2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKQotICAgICAgICAgICAgcmV0dXJuOwor
ICAgIF9wYWdlLT5nZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcoW3ZpZXcsIHdlYlZpZXdd
KGNvbnN0IFN0cmluZyYgc3RyaW5nKSB7CiAgICAgICAgIFt3ZWJWaWV3IF9hY2Nlc3NpYmlsaXR5
RGlkR2V0U3BlYWtTZWxlY3Rpb25Db250ZW50OnN0cmluZ107CiAgICAgICAgIGlmIChbdmlldyBy
ZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGFjY2Vzc2liaWxpdHlTcGVha1NlbGVjdGlvblNl
dENvbnRlbnQ6KV0pCiAgICAgICAgICAgICBbdmlldyBhY2Nlc3NpYmlsaXR5U3BlYWtTZWxlY3Rp
b25TZXRDb250ZW50OnN0cmluZ107CkBAIC00NDExLDcgKzQ0MDQsNyBAQCBzdGF0aWMgdm9pZCBz
ZWxlY3Rpb25DaGFuZ2VkV2l0aFRvdWNoKFdLQ29udGVudFZpZXcgKnZpZXcsIGNvbnN0IFdlYkNv
cmU6OkludFBvaQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgX3BhZ2UtPmFwcGx5QXV0
b2NvcnJlY3Rpb24oY29ycmVjdGlvbiwgaW5wdXQsIFt2aWV3ID0gcmV0YWluUHRyKHNlbGYpLCBj
b21wbGV0aW9uID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byYgc3RyaW5n
LCBhdXRvIGVycm9yKSB7CisgICAgX3BhZ2UtPmFwcGx5QXV0b2NvcnJlY3Rpb24oY29ycmVjdGlv
biwgaW5wdXQsIFt2aWV3ID0gcmV0YWluUHRyKHNlbGYpLCBjb21wbGV0aW9uID0gbWFrZUJsb2Nr
UHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byYgc3RyaW5nKSB7CiAgICAgICAgIGlmIChjb21w
bGV0aW9uKQogICAgICAgICAgICAgY29tcGxldGlvbighc3RyaW5nLmlzTnVsbCgpID8gW1dLQXV0
b2NvcnJlY3Rpb25SZWN0cyBhdXRvY29ycmVjdGlvblJlY3RzV2l0aEZpcnN0Q0dSZWN0OnZpZXct
Pl9hdXRvY29ycmVjdGlvbkRhdGEudGV4dEZpcnN0UmVjdCBsYXN0Q0dSZWN0OnZpZXctPl9hdXRv
Y29ycmVjdGlvbkRhdGEudGV4dExhc3RSZWN0XSA6IG5pbCk7CiAgICAgfSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCBlMTY5YTcyZmM5
YjdlNjA2ODBiNGRiNDE5YmU5ZmQ0Mzg1ZjZhMWEyLi42ODAxMThjOGZkZDg3YjIzNDdkY2E1Yzcw
N2U5NzA4MjNhYzkwYzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQ
YWdlUHJveHlJT1MubW0KQEAgLTQzMCwxNSArNDMwLDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJl
cXVlc3RBdXRvY29ycmVjdGlvbkRhdGEoY29uc3QgU3RyaW5nJiB0ZXh0Rm9yQXV0b2NvcnJlY3Rp
b24KICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3RBdXRv
Y29ycmVjdGlvbkRhdGEodGV4dEZvckF1dG9jb3JyZWN0aW9uKSwgV1RGTW92ZShjYWxsYmFjaykp
OwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6YXBwbHlBdXRvY29ycmVjdGlvbihjb25zdCBTdHJp
bmcmIGNvcnJlY3Rpb24sIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxUZXh0LCBXVEY6OkZ1bmN0aW9u
PHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVu
Y3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6YXBwbHlBdXRvY29ycmVjdGlvbihjb25zdCBTdHJp
bmcmIGNvcnJlY3Rpb24sIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxUZXh0LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNhbGxiYWNrKQogewotICAgIGlmICghaGFzUnVu
bmluZ1Byb2Nlc3MoKSkgewotICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKFN0cmluZygpLCBDYWxs
YmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rp
b24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVBy
b3h5OjphcHBseUF1dG9jb3JyZWN0aW9uIl9zKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpBcHBseUF1dG9jb3JyZWN0aW9uKGNvcnJlY3Rpb24sIG9yaWdpbmFsVGV4
dCwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVz
c2FnZXM6OldlYlBhZ2U6OkFwcGx5QXV0b2NvcnJlY3Rpb24oY29ycmVjdGlvbiwgb3JpZ2luYWxU
ZXh0KSwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCiBib29sIFdlYlBhZ2VQcm94eTo6YXBwbHlB
dXRvY29ycmVjdGlvbihjb25zdCBTdHJpbmcmIGNvcnJlY3Rpb24sIGNvbnN0IFN0cmluZyYgb3Jp
Z2luYWxUZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLVGV4
dEZpbmRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1RleHRGaW5k
ZXJDbGllbnQubW0KaW5kZXggNmE3ZTYyMDdlZDU4Y2I4M2U4NmNjYjMzM2IxODZjOGY4MTNhNGFj
My4uMjk0M2ViNmFlYTBkODljNGJjYjE1OTk5M2ZkMmFkMzc2NzExZjYxOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNsaWVudC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tUZXh0RmluZGVyQ2xpZW50Lm1tCkBAIC0yNDMs
NyArMjQzLDcgQEAgcHJpdmF0ZToKIHsKICAgICB2b2lkICheY29waWVkQ29tcGxldGlvbkhhbmRs
ZXIpKE5TU3RyaW5nICopID0gQmxvY2tfY29weShjb21wbGV0aW9uSGFuZGxlcik7CiAKLSAgICBf
cGFnZS0+Z2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKFtjb3BpZWRDb21wbGV0aW9uSGFu
ZGxlcl0gKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3Ip
IHsKKyAgICBfcGFnZS0+Z2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKFtjb3BpZWRDb21w
bGV0aW9uSGFuZGxlcl0gKGNvbnN0IFN0cmluZyYgc3RyaW5nKSB7CiAgICAgICAgIGNvcGllZENv
bXBsZXRpb25IYW5kbGVyKHN0cmluZyk7CiAgICAgICAgIEJsb2NrX3JlbGVhc2UoY29waWVkQ29t
cGxldGlvbkhhbmRsZXIpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaAppbmRleCBiNDg2YjI0NjM2NzYxZWQ4MDQ5NjZhOWUx
OGY1OGNiZmQ1NjI4Y2Y1Li5hYTE2ODM0YzIxNjIzYWY5OWFiYWQ0ZWRhMWFkNDdlMTFhOGNmMDg3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXIuaApAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTm90aWZpY2F0aW9uQ2xp
ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2su
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luSGFzaC5oPgotI2luY2x1ZGUgPFdl
YkNvcmUvVm9pZENhbGxiYWNrLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25D
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJOb3Rp
ZmljYXRpb25DbGllbnQuaAppbmRleCAwMGNjMGEwOGQ5MjYwNGZkZGZiNWNhNjJmNmI4ODU5NWMz
MWFiMGQyLi44MWYxZGU0NjFmMWVjM2FiNjBjNjUxOWZlYmRmMDI4NzdmNmM4OTNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0
aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5oCkBAIC0zMyw3ICszMyw2IEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2s7CiBjbGFzcyBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgVm9pZENhbGxiYWNrOwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGlu
YXRlZEdyYXBoaWNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcAppbmRleCBm
YTE3ZGI2NzdmZmRmMGQ0ZDhjMmZmMjU0ZGE1MjhlY2I3Yjk2YjkzLi4zZTk2N2E2ZjVjNmNkMzc1
MTczZjUxMzQ2MDdjYzVhZWU0Y2E4ODViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0ZWRH
cmFwaGljcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRp
bmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCkBAIC0zODUs
NyArMzg1LDcgQEAgUmVmUHRyPERpc3BsYXlSZWZyZXNoTW9uaXRvcj4gRHJhd2luZ0FyZWFDb29y
ZGluYXRlZEdyYXBoaWNzOjpjcmVhdGVEaXNwbGF5UmVmcmUKICAgICByZXR1cm4gbV9sYXllclRy
ZWVIb3N0LT5jcmVhdGVEaXNwbGF5UmVmcmVzaE1vbml0b3IoZGlzcGxheUlEKTsKIH0KIAotdm9p
ZCBEcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3M6OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2Uo
T3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+IGNoYW5nZWQsIEFjdGl2aXR5U3RhdGVDaGFu
Z2VJRCwgY29uc3QgVmVjdG9yPENhbGxiYWNrSUQ+JikKK3ZvaWQgRHJhd2luZ0FyZWFDb29yZGlu
YXRlZEdyYXBoaWNzOjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKE9wdGlvblNldDxBY3Rpdml0eVN0
YXRlOjpGbGFnPiBjaGFuZ2VkLCBBY3Rpdml0eVN0YXRlQ2hhbmdlSUQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoY2hhbmdlZCAmIEFj
dGl2aXR5U3RhdGU6OklzVmlzaWJsZSkgewogICAgICAgICBpZiAobV93ZWJQYWdlLmlzVmlzaWJs
ZSgpKQpAQCAtMzkzLDYgKzM5Myw3IEBAIHZvaWQgRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBo
aWNzOjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKE9wdGlvblNldDxBY3Rpdml0eVN0CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIHN1c3BlbmRQYWludGluZygpOwogICAgIH0KKyAgICBjb21wbGV0
aW9uSGFuZGxlcigpOwogfQogCiB2b2lkIERyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljczo6
YXR0YWNoVmlld092ZXJsYXlHcmFwaGljc0xheWVyKEdyYXBoaWNzTGF5ZXIqIHZpZXdPdmVybGF5
Um9vdExheWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2lu
Z0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmgKaW5kZXggYmI0MDk0YjUzMDY5ZmFiM2Y5MmE0ZDAz
ZjViNWNlYTIyY2ExYzM3Mi4uZjk2YzRiYjU3NjM0ZmY0MDEwZWRlYmJhODUxZDY3ZWY5NGMwZjRi
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVh
Q29vcmRpbmF0ZWRHcmFwaGljcy5oCkBAIC03Nyw3ICs3Nyw3IEBAIHByaXZhdGU6CiAgICAgCiAg
ICAgUmVmUHRyPFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcj4gY3JlYXRlRGlzcGxheVJl
ZnJlc2hNb25pdG9yKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheUlEKSBvdmVycmlkZTsKIAotICAg
IHZvaWQgYWN0aXZpdHlTdGF0ZURpZENoYW5nZShPcHRpb25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlT
dGF0ZTo6RmxhZz4sIEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCwgY29uc3QgVmVjdG9yPENhbGxiYWNr
SUQ+JiAvKiBjYWxsYmFja0lEcyAqLykgb3ZlcnJpZGU7CisgICAgdm9pZCBhY3Rpdml0eVN0YXRl
RGlkQ2hhbmdlKE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPiwgQWN0aXZp
dHlTdGF0ZUNoYW5nZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgYXR0YWNoVmlld092ZXJsYXlHcmFwaGljc0xheWVyKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXIqKSBvdmVycmlkZTsKIAogICAgIC8vIElQQyBtZXNzYWdlIGhhbmRsZXJzLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKaW5kZXggMTZmZDNj
MzY0ZmM3ZWI5ZGI5ZjMxODU5ZjY3MmY0MjE1ZjU1YjVhYi4uNjRkNTMyOWI4NjYwOGJjMDJkNDY3
Y2Q0M2VjZGVmNzJiNTRhMjcxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9EcmF3aW5nQXJlYS5oCkBAIC0xMjEsNyArMTIxLDcgQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoQWZ0ZXJFbnN1cmluZ1VwZGF0ZWRTY3JvbGxQb3NpdGlvbihXVEY6
OkZ1bmN0aW9uPHZvaWQgKCk+JiYpOwogCi0gICAgdmlydHVhbCB2b2lkIGFjdGl2aXR5U3RhdGVE
aWRDaGFuZ2UoT3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+LCBBY3Rpdml0
eVN0YXRlQ2hhbmdlSUQsIGNvbnN0IFZlY3RvcjxDYWxsYmFja0lEPiYpIHsgfQorICAgIHZpcnR1
YWwgdm9pZCBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0
eVN0YXRlOjpGbGFnPiwgQWN0aXZpdHlTdGF0ZUNoYW5nZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoKTsgfTsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJIb3N0aW5nTW9kZShMYXllckhvc3RpbmdNb2RlKSB7IH0K
IAogICAgIHZpcnR1YWwgYm9vbCBtYXJrTGF5ZXJzVm9sYXRpbGVJbW1lZGlhdGVseUlmUG9zc2li
bGUoKSB7IHJldHVybiB0cnVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYS5oCmluZGV4IDI3ZjkzNmYzMTkwNGUxNTgzNDY0NTQxZjVkMDVh
OTEwMzBjMjEwNzUuLjYzMWYyYTYxMThiODBkMGY3MTk1ZTYwNzMyMmYxYTEwMmIyODhjYzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5o
CkBAIC0xMDYsNyArMTA2LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgbWFpbkZyYW1lQ29udGVu
dFNpemVDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSBvdmVycmlkZTsKIAotICAgIHZv
aWQgYWN0aXZpdHlTdGF0ZURpZENoYW5nZShPcHRpb25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlTdGF0
ZTo6RmxhZz4gY2hhbmdlZCwgQWN0aXZpdHlTdGF0ZUNoYW5nZUlELCBjb25zdCBWZWN0b3I8Q2Fs
bGJhY2tJRD4mIGNhbGxiYWNrSURzKSBvdmVycmlkZTsKKyAgICB2b2lkIGFjdGl2aXR5U3RhdGVE
aWRDaGFuZ2UoT3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+IGNoYW5nZWQs
IEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVy
cmlkZTsKIAogICAgIGJvb2wgYWRkTWlsZXN0b25lc1RvRGlzcGF0Y2goT3B0aW9uU2V0PFdlYkNv
cmU6OkxheW91dE1pbGVzdG9uZT4pIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXll
clRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KaW5kZXggZDgyMDU1ZmYyMDQ1NGQ1
NWY5NThiNGM1MDU3N2Q5ODg3OWI2NjBhMC4uNWFiZTk5ZjlmYjRlYmE3NWE5NWExZDFjODRmODFi
Y2EyNzBjZGE3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYS5tbQpAQCAtNDgzLDcgKzQ4Myw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWE6OkJhY2tpbmdTdG9yZUZsdXNoZXI6OmZsdXNoKCkKICAgICBtX2Nvbm5lY3Rp
b24tPnNlbmRNZXNzYWdlKFdURk1vdmUobV9jb21taXRFbmNvZGVyKSwgeyB9KTsKIH0KIAotdm9p
ZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZShPcHRp
b25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZz4sIEFjdGl2aXR5U3RhdGVDaGFuZ2VJ
RCBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQsIGNvbnN0IFZlY3RvcjxDYWxsYmFja0lEPiYgY2FsbGJh
Y2tJRHMpCit2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjphY3Rpdml0eVN0YXRlRGlk
Q2hhbmdlKE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPiwgQWN0aXZpdHlT
dGF0ZUNoYW5nZUlEIGFjdGl2aXR5U3RhdGVDaGFuZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNhbGxiYWNrKQogewogICAgIC8vIEZJWE1FOiBTaG91bGQgd2Ugc3VzcGVuZCBwYWlu
dGluZyB3aGlsZSBub3QgdmlzaWJsZSwgbGlrZSBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YT8gUHJvYmFibHkuCiAKQEAgLTQ5NSw4ICs0OTUsNyBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhOjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKE9wdGlvblNldDxXZWJDb3JlOjpBY3Rp
dgogCiAgICAgLy8gRklYTUU6IFdlIG1heSB3YW50IHRvIG1hdGNoIGJlaGF2aW9yIGluIFRpbGVk
Q29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhIGJ5IGZpcmluZyB0aGVzZSBjYWxsYmFja3MgYWZ0ZXIg
dGhlIG5leHQgY29tcG9zaXRpbmcgZmx1c2gsIHJhdGhlciB0aGFuIGltbWVkaWF0ZWx5IGFmdGVy
CiAgICAgLy8gaGFuZGxpbmcgYW4gYWN0aXZpdHkgc3RhdGUgY2hhbmdlLgotICAgIGZvciAoYXV0
byYgY2FsbGJhY2tJRCA6IGNhbGxiYWNrSURzKQotICAgICAgICBtX3dlYlBhZ2Uuc2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpWb2lkQ2FsbGJhY2soY2FsbGJhY2tJRCkpOworICAgIGNhbGxi
YWNrKCk7CiB9CiAKIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmFkZFRyYW5zYWN0
aW9uQ2FsbGJhY2tJRChDYWxsYmFja0lEIGNhbGxiYWNrSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDc2M2JjYWI4Njk2MmM3OWI2NzJmYzMz
MzEyM2M3MTRlYzJjZTEzNjYuLmQyYjQyOTBlNTA0ZWVhODU2MWNjMTA3ZmZiYmU3MTgxZWViMDYw
ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBA
IC05MjMsNyArOTIzLDcgQEAgdm9pZCBXZWJQYWdlOjpyZWluaXRpYWxpemVXZWJQYWdlKFdlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgIHNldFNpemVUb0NvbnRlbnRB
dXRvU2l6ZU1heGltdW1TaXplKHBhcmFtZXRlcnMuc2l6ZVRvQ29udGVudEF1dG9TaXplTWF4aW11
bVNpemUpOwogCiAgICAgaWYgKG1fYWN0aXZpdHlTdGF0ZSAhPSBwYXJhbWV0ZXJzLmFjdGl2aXR5
U3RhdGUpCi0gICAgICAgIHNldEFjdGl2aXR5U3RhdGUocGFyYW1ldGVycy5hY3Rpdml0eVN0YXRl
LCBBY3Rpdml0eVN0YXRlQ2hhbmdlQXN5bmNocm9ub3VzLCBWZWN0b3I8Q2FsbGJhY2tJRD4oKSk7
CisgICAgICAgIHNldEFjdGl2aXR5U3RhdGUocGFyYW1ldGVycy5hY3Rpdml0eVN0YXRlLCBBY3Rp
dml0eVN0YXRlQ2hhbmdlQXN5bmNocm9ub3VzLCBbXSB7IH0pOwogICAgIGlmIChtX2xheWVySG9z
dGluZ01vZGUgIT0gcGFyYW1ldGVycy5sYXllckhvc3RpbmdNb2RlKQogICAgICAgICBzZXRMYXll
ckhvc3RpbmdNb2RlKHBhcmFtZXRlcnMubGF5ZXJIb3N0aW5nTW9kZSk7CiAKQEAgLTMzNjIsNyAr
MzM2Miw3IEBAIHZvaWQgV2ViUGFnZTo6dmlzaWJpbGl0eURpZENoYW5nZSgpCiAgICAgfQogfQog
Ci12b2lkIFdlYlBhZ2U6OnNldEFjdGl2aXR5U3RhdGUoT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6
OkZsYWc+IGFjdGl2aXR5U3RhdGUsIEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCBhY3Rpdml0eVN0YXRl
Q2hhbmdlSUQsIGNvbnN0IFZlY3RvcjxDYWxsYmFja0lEPiYgY2FsbGJhY2tJRHMpCit2b2lkIFdl
YlBhZ2U6OnNldEFjdGl2aXR5U3RhdGUoT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+IGFj
dGl2aXR5U3RhdGUsIEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFjaykKIHsKICAgICBMT0dfV0lUSF9T
VFJFQU0oQWN0aXZpdHlTdGF0ZSwgc3RyZWFtIDw8ICJXZWJQYWdlICIgPDwgaWRlbnRpZmllcigp
LnRvVUludDY0KCkgPDwgIiBzZXRBY3Rpdml0eVN0YXRlIHRvICIgPDwgYWN0aXZpdHlTdGF0ZSk7
CiAKQEAgLTMzODEsNyArMzM4MSw3IEBAIHZvaWQgV2ViUGFnZTo6c2V0QWN0aXZpdHlTdGF0ZShP
cHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4gYWN0aXZpdHlTdGF0ZSwgQWN0CiAgICAgZm9y
IChhdXRvKiBwbHVnaW5WaWV3IDogbV9wbHVnaW5WaWV3cykKICAgICAgICAgcGx1Z2luVmlldy0+
YWN0aXZpdHlTdGF0ZURpZENoYW5nZShjaGFuZ2VkKTsKIAotICAgIG1fZHJhd2luZ0FyZWEtPmFj
dGl2aXR5U3RhdGVEaWRDaGFuZ2UoY2hhbmdlZCwgYWN0aXZpdHlTdGF0ZUNoYW5nZUlELCBjYWxs
YmFja0lEcyk7CisgICAgbV9kcmF3aW5nQXJlYS0+YWN0aXZpdHlTdGF0ZURpZENoYW5nZShjaGFu
Z2VkLCBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKICAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5wYWdlQWN0aXZpdHlTdGF0ZURpZENoYW5nZShtX2lkZW50aWZp
ZXIsIGNoYW5nZWQpOwogCiAgICAgaWYgKGNoYW5nZWQgJiBBY3Rpdml0eVN0YXRlOjpJc0luV2lu
ZG93KQpAQCAtMzYwOCwxMiArMzYwOCwxMiBAQCB2b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJ
bkZyYW1lSW5TY3JpcHRXb3JsZChSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZQogICAg
IHJ1bkphdmFTY3JpcHQod2ViRnJhbWUsIFdURk1vdmUocGFyYW1ldGVycyksIHdvcmxkRGF0YS5m
aXJzdCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFdlYlBhZ2U6Omdl
dENvbnRlbnRzQXNTdHJpbmcoQ29udGVudEFzU3RyaW5nSW5jbHVkZXNDaGlsZEZyYW1lcyBpbmNs
dWRlQ2hpbGRGcmFtZXMsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6Z2V0
Q29udGVudHNBc1N0cmluZyhDb250ZW50QXNTdHJpbmdJbmNsdWRlc0NoaWxkRnJhbWVzIGluY2x1
ZGVDaGlsZEZyYW1lcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJiBj
YWxsYmFjaykKIHsKICAgICBzd2l0Y2ggKGluY2x1ZGVDaGlsZEZyYW1lcykgewogICAgIGNhc2Ug
Q29udGVudEFzU3RyaW5nSW5jbHVkZXNDaGlsZEZyYW1lczo6Tm86IHsKICAgICAgICAgU3RyaW5n
IHJlc3VsdFN0cmluZyA9IG1fbWFpbkZyYW1lLT5jb250ZW50c0FzU3RyaW5nKCk7Ci0gICAgICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U3RyaW5nQ2FsbGJhY2socmVzdWx0U3RyaW5n
LCBjYWxsYmFja0lEKSk7CisgICAgICAgIGNhbGxiYWNrKHJlc3VsdFN0cmluZyk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICBjYXNlIENvbnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hpbGRGcmFt
ZXM6OlllczogewpAQCAtMzYyNyw3ICszNjI3LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRDb250ZW50
c0FzU3RyaW5nKENvbnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXMgaW5jbHVkZUNoaWwK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6U3RyaW5nQ2FsbGJhY2soYnVpbGRlci50b1N0cmluZygpLCBjYWxsYmFja0lEKSk7
CisgICAgICAgIGNhbGxiYWNrKGJ1aWxkZXIudG9TdHJpbmcoKSk7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KICAgICB9CkBAIC0zNjQwLDEwICszNjQwLDkgQEAgdm9pZCBXZWJQYWdlOjpnZXRDb250
ZW50c0FzTUhUTUxEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTaGFyZWRC
dWYKIH0KICNlbmRpZgogCi12b2lkIFdlYlBhZ2U6OmdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJl
c2VudGF0aW9uKENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6Z2V0UmVuZGVy
VHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBT
dHJpbmcmKT4mJiBjYWxsYmFjaykKIHsKLSAgICBTdHJpbmcgcmVzdWx0U3RyaW5nID0gcmVuZGVy
VHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OlN0cmluZ0NhbGxiYWNrKHJlc3VsdFN0cmluZywgY2FsbGJhY2tJRCkpOworICAgIGNh
bGxiYWNrKHJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKCkpOwogfQogCiBzdGF0aWMg
RnJhbWUqIGZyYW1lV2l0aFNlbGVjdGlvbihQYWdlKiBwYWdlKQpAQCAtMzY3MiwyMiArMzY3MSwy
MiBAQCB2b2lkIFdlYlBhZ2U6OmdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdAogICAgIGNhbGxiYWNrKGRhdGFSZWZlcmVuY2Up
OwogfQogCi12b2lkIFdlYlBhZ2U6OmdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OmdldFNlbGVjdGlvbk9yQ29udGVudHNB
c1N0cmluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNhbGxiYWNr
KQogewogICAgIFdlYkZyYW1lKiBmb2N1c2VkT3JNYWluRnJhbWUgPSBXZWJGcmFtZTo6ZnJvbUNv
cmVGcmFtZShtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpKTsK
ICAgICBTdHJpbmcgcmVzdWx0U3RyaW5nID0gZm9jdXNlZE9yTWFpbkZyYW1lLT5zZWxlY3Rpb25B
c1N0cmluZygpOwogICAgIGlmIChyZXN1bHRTdHJpbmcuaXNFbXB0eSgpKQogICAgICAgICByZXN1
bHRTdHJpbmcgPSBmb2N1c2VkT3JNYWluRnJhbWUtPmNvbnRlbnRzQXNTdHJpbmcoKTsKLSAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlN0cmluZ0NhbGxiYWNrKHJlc3VsdFN0cmluZywg
Y2FsbGJhY2tJRCkpOworICAgIGNhbGxiYWNrKHJlc3VsdFN0cmluZyk7CiB9CiAKLXZvaWQgV2Vi
UGFnZTo6Z2V0U291cmNlRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIENhbGxiYWNr
SUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6Z2V0U291cmNlRm9yRnJhbWUoRnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYg
Y2FsbGJhY2spCiB7CiAgICAgU3RyaW5nIHJlc3VsdFN0cmluZzsKICAgICBpZiAoV2ViRnJhbWUq
IGZyYW1lID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCkpCiAgICAg
ICAgcmVzdWx0U3RyaW5nID0gZnJhbWUtPnNvdXJjZSgpOwogCi0gICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpTdHJpbmdDYWxsYmFjayhyZXN1bHRTdHJpbmcsIGNhbGxiYWNrSUQpKTsK
KyAgICBjYWxsYmFjayhyZXN1bHRTdHJpbmcpOwogfQogCiB2b2lkIFdlYlBhZ2U6OmdldE1haW5S
ZXNvdXJjZURhdGFPZkZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYpPiYmIGNhbGxi
YWNrKQpAQCAtNjQzOCwzMyArNjQzNywyOSBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZUNhY2hlZERv
Y3VtZW50TG9hZGVyKFdlYkRvY3VtZW50TG9hZGVyJiBkb2N1bWVudExvYWRlciwgRnJhbQogICAg
IH0KIH0KIAotdm9pZCBXZWJQYWdlOjpnZXRCeXRlY29kZVByb2ZpbGUoQ2FsbGJhY2tJRCBjYWxs
YmFja0lEKQordm9pZCBXZWJQYWdlOjpnZXRCeXRlY29kZVByb2ZpbGUoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjYWxsYmFjaykKIHsKLSAgICBpZiAoTElLRUxZKCFj
b21tb25WTSgpLm1fcGVyQnl0ZWNvZGVQcm9maWxlcikpIHsKLSAgICAgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpTdHJpbmdDYWxsYmFjayhTdHJpbmcoKSwgY2FsbGJhY2tJRCkpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmIChMSUtFTFkoIWNvbW1vblZNKCkubV9wZXJC
eXRlY29kZVByb2ZpbGVyKSkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKHsgfSk7CiAKICAgICBT
dHJpbmcgcmVzdWx0ID0gY29tbW9uVk0oKS5tX3BlckJ5dGVjb2RlUHJvZmlsZXItPnRvSlNPTigp
OwogICAgIEFTU0VSVChyZXN1bHQubGVuZ3RoKCkpOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6U3RyaW5nQ2FsbGJhY2socmVzdWx0LCBjYWxsYmFja0lEKSk7CisgICAgY2FsbGJh
Y2socmVzdWx0KTsKIH0KIAotdm9pZCBXZWJQYWdlOjpnZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0
KENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6Z2V0U2FtcGxpbmdQcm9maWxl
ck91dHB1dChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNhbGxiYWNr
KQogewogI2lmIEVOQUJMRShTQU1QTElOR19QUk9GSUxFUikKICAgICBTYW1wbGluZ1Byb2ZpbGVy
KiBzYW1wbGluZ1Byb2ZpbGVyID0gY29tbW9uVk0oKS5zYW1wbGluZ1Byb2ZpbGVyKCk7Ci0gICAg
aWYgKCFzYW1wbGluZ1Byb2ZpbGVyKSB7Ci0gICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6SW52YWxpZGF0ZVN0cmluZ0NhbGxiYWNrKGNhbGxiYWNrSUQpKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KKyAgICBpZiAoIXNhbXBsaW5nUHJvZmlsZXIpCisgICAgICAgIHJldHVybiBj
YWxsYmFjayh7IH0pOwogCiAgICAgU3RyaW5nUHJpbnRTdHJlYW0gcmVzdWx0OwogICAgIHNhbXBs
aW5nUHJvZmlsZXItPnJlcG9ydFRvcEZ1bmN0aW9ucyhyZXN1bHQpOwogICAgIHNhbXBsaW5nUHJv
ZmlsZXItPnJlcG9ydFRvcEJ5dGVjb2RlcyhyZXN1bHQpOwotICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6U3RyaW5nQ2FsbGJhY2socmVzdWx0LnRvU3RyaW5nKCksIGNhbGxiYWNrSUQp
KTsKKyAgICBjYWxsYmFjayhyZXN1bHQudG9TdHJpbmcoKSk7CiAjZWxzZQotICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6SW52YWxpZGF0ZVN0cmluZ0NhbGxiYWNrKGNhbGxiYWNrSUQp
KTsKKyAgICBjYWxsYmFjayh7IH0pOwogI2VuZGlmCiB9CiAKQEAgLTY5MTAsMjEgKzY5MDUsMjEg
QEAgdm9pZCBXZWJQYWdlOjp2b2ljZXNEaWRDaGFuZ2UoKQogCiAjaWYgRU5BQkxFKEFUVEFDSE1F
TlRfRUxFTUVOVCkKIAotdm9pZCBXZWJQYWdlOjppbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmlu
ZyYgaWRlbnRpZmllciwgT3B0aW9uYWw8dWludDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0cmlu
ZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIENhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKK3ZvaWQgV2ViUGFnZTo6aW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50
aWZpZXIsIE9wdGlvbmFsPHVpbnQ2NF90PiYmIGZpbGVTaXplLCBjb25zdCBTdHJpbmcmIGZpbGVO
YW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY2FsbGJhY2spCiB7CiAgICAgYXV0byYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxl
cigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAgIGZyYW1lLmVkaXRvcigpLmluc2VydEF0dGFj
aG1lbnQoaWRlbnRpZmllciwgV1RGTW92ZShmaWxlU2l6ZSksIGZpbGVOYW1lLCBjb250ZW50VHlw
ZSk7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpWb2lkQ2FsbGJhY2soY2FsbGJh
Y2tJRCkpOworICAgIGNhbGxiYWNrKCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6dXBkYXRlQXR0YWNo
bWVudEF0dHJpYnV0ZXMoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBPcHRpb25hbDx1aW50NjRf
dD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBm
aWxlTmFtZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBlbmNsb3NpbmdJbWFnZURhdGEsIENh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6dXBkYXRlQXR0YWNobWVudEF0dHJp
YnV0ZXMoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBPcHRpb25hbDx1aW50NjRfdD4mJiBmaWxl
U2l6ZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwg
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBlbmNsb3NpbmdJbWFnZURhdGEsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFjaykKIHsKICAgICBpZiAoYXV0byBhdHRhY2htZW50ID0g
YXR0YWNobWVudEVsZW1lbnRXaXRoSWRlbnRpZmllcihpZGVudGlmaWVyKSkgewogICAgICAgICBh
dHRhY2htZW50LT5kb2N1bWVudCgpLnVwZGF0ZUxheW91dCgpOwogICAgICAgICBhdHRhY2htZW50
LT51cGRhdGVBdHRyaWJ1dGVzKFdURk1vdmUoZmlsZVNpemUpLCBjb250ZW50VHlwZSwgZmlsZU5h
bWUpOwogICAgICAgICBhdHRhY2htZW50LT51cGRhdGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRhKGNv
bnRlbnRUeXBlLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShlbmNsb3NpbmdJbWFnZURhdGEuZGF0YSgp
LCBlbmNsb3NpbmdJbWFnZURhdGEuc2l6ZSgpKSk7CiAgICAgfQotICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6Vm9pZENhbGxiYWNrKGNhbGxiYWNrSUQpKTsKKyAgICBjYWxsYmFjaygp
OwogfQogCiB2b2lkIFdlYlBhZ2U6OnVwZGF0ZUF0dGFjaG1lbnRJY29uKGNvbnN0IFN0cmluZyYg
aWRlbnRpZmllciwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIHFsVGh1bWJuYWlsSGFu
ZGxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGVi
NTI0ODkwMjgxNTAyNmE0N2JhOWQ4YzUwYzdjOGZjYjQ1ZTE5ZTAuLmNmMDQyNjJmNzFkOWEwZDE3
ODUwMDFhOTA5ZDEwNTY5MWEzNjEzMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKQEAgLTc1Myw3ICs3NTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXBs
YWNlRGljdGF0ZWRUZXh0KGNvbnN0IFN0cmluZyYgb2xkVGV4dCwgY29uc3QgU3RyaW5nJiBuZXdU
ZXh0KTsKICAgICB2b2lkIHJlcGxhY2VTZWxlY3RlZFRleHQoY29uc3QgU3RyaW5nJiBvbGRUZXh0
LCBjb25zdCBTdHJpbmcmIG5ld1RleHQpOwogICAgIHZvaWQgcmVxdWVzdEF1dG9jb3JyZWN0aW9u
RGF0YShjb25zdCBTdHJpbmcmIHRleHRGb3JBdXRvY29ycmVjdGlvbiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChXZWJBdXRvY29ycmVjdGlvbkRhdGEpPiYmIHJlcGx5KTsKLSAgICB2b2lkIGFwcGx5
QXV0b2NvcnJlY3Rpb24oY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uLCBjb25zdCBTdHJpbmcmIG9y
aWdpbmFsVGV4dCwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBhcHBseUF1dG9jb3JyZWN0aW9uKGNv
bnN0IFN0cmluZyYgY29ycmVjdGlvbiwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbFRleHQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOwogICAgIHZvaWQgc3luY0FwcGx5
QXV0b2NvcnJlY3Rpb24oY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uLCBjb25zdCBTdHJpbmcmIG9y
aWdpbmFsVGV4dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBy
ZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0KCk7CiAgICAgdm9pZCBnZXRQb3NpdGlvbkluZm9y
bWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0JiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYmKT4mJik7CkBAIC0x
MTQ5LDggKzExNDksOCBAQCBwdWJsaWM6CiAgICAgUmVmPFdlYkNvcmU6OkRvY3VtZW50TG9hZGVy
PiBjcmVhdGVEb2N1bWVudExvYWRlcihXZWJDb3JlOjpGcmFtZSYsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJik7CiAgICAgdm9p
ZCB1cGRhdGVDYWNoZWREb2N1bWVudExvYWRlcihXZWJEb2N1bWVudExvYWRlciYsIFdlYkNvcmU6
OkZyYW1lJik7CiAKLSAgICB2b2lkIGdldEJ5dGVjb2RlUHJvZmlsZShDYWxsYmFja0lEKTsKLSAg
ICB2b2lkIGdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQoQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBn
ZXRCeXRlY29kZVByb2ZpbGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4m
Jik7CisgICAgdm9pZCBnZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOwogICAgIAogI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRS
T0xTKSB8fCBFTkFCTEUoVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pCiAgICAgdm9pZCBoYW5k
bGVUZWxlcGhvbmVOdW1iZXJDbGljayhjb25zdCBTdHJpbmcmIG51bWJlciwgY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmKTsKQEAgLTEyNTMsOCArMTI1Myw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNo
b3dDb250YWN0UGlja2VyKGNvbnN0IFdlYkNvcmU6OkNvbnRhY3RzUmVxdWVzdERhdGEmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpDb250YWN0SW5mbz4+
JiYpPiYmKTsKICAgICAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQotICAgIHZvaWQg
aW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIE9wdGlvbmFsPHVpbnQ2
NF90PiYmIGZpbGVTaXplLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIGNv
bnRlbnRUeXBlLCBDYWxsYmFja0lEKTsKLSAgICB2b2lkIHVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1
dGVzKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgT3B0aW9uYWw8dWludDY0X3Q+JiYgZmlsZVNp
emUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZW5jbG9zaW5nSW1hZ2VEYXRhLCBDYWxsYmFja0lEKTsK
KyAgICB2b2lkIGluc2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBPcHRp
b25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2
b2lkIHVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwg
T3B0aW9uYWw8dWludDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUs
IGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZW5jbG9z
aW5nSW1hZ2VEYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgdXBk
YXRlQXR0YWNobWVudEljb24oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTaGFyZWFi
bGVCaXRtYXA6OkhhbmRsZSYgcWxUaHVtYm5haWxIYW5kbGUpOwogI2VuZGlmCiAKQEAgLTE1MTUs
NyArMTUxNSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRJbml0aWFsRm9jdXMoYm9vbCBmb3J3
YXJkLCBib29sIGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBjb25zdCBXZWJLZXlib2FyZEV2ZW50Jiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHVwZGF0ZUlzSW5XaW5kb3co
Ym9vbCBpc0luaXRpYWxTdGF0ZSA9IGZhbHNlKTsKICAgICB2b2lkIHZpc2liaWxpdHlEaWRDaGFu
Z2UoKTsKLSAgICB2b2lkIHNldEFjdGl2aXR5U3RhdGUoT3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2
aXR5U3RhdGU6OkZsYWc+LCBBY3Rpdml0eVN0YXRlQ2hhbmdlSUQsIGNvbnN0IFZlY3RvcjxDYWxs
YmFja0lEPiYgY2FsbGJhY2tJRHMpOworICAgIHZvaWQgc2V0QWN0aXZpdHlTdGF0ZShPcHRpb25T
ZXQ8V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZz4sIEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHZhbGlkYXRlQ29tbWFuZChj
b25zdCBTdHJpbmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wsIGludDMyX3QpPiYmKTsK
ICAgICB2b2lkIGV4ZWN1dGVFZGl0Q29tbWFuZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
KTsKICAgICB2b2lkIHNldEVkaXRhYmxlKGJvb2wpOwpAQCAtMTU4MCw3ICsxNTgwLDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHZpZXdXaWxsU3RhcnRMaXZlUmVzaXplKCk7CiAgICAgdm9pZCB2aWV3
V2lsbEVuZExpdmVSZXNpemUoKTsKIAotICAgIHZvaWQgZ2V0Q29udGVudHNBc1N0cmluZyhDb250
ZW50QXNTdHJpbmdJbmNsdWRlc0NoaWxkRnJhbWVzLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIGdl
dENvbnRlbnRzQXNTdHJpbmcoQ29udGVudEFzU3RyaW5nSW5jbHVkZXNDaGlsZEZyYW1lcywgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJik7CiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgdm9pZCBnZXRDb250ZW50c0FzQXR0cmlidXRlZFN0cmluZyhDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkF0dHJpYnV0ZWRTdHJpbmcmKT4mJik7CiAjZW5kaWYK
QEAgLTE1ODksMTAgKzE1ODksMTAgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgIHZvaWQgZ2V0TWFp
blJlc291cmNlRGF0YU9mRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYpPiYmKTsK
ICAgICB2b2lkIGdldFJlc291cmNlRGF0YUZyb21GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VVUkwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJik+JiYpOwotICAgIHZvaWQgZ2V0UmVu
ZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oQ2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBnZXRT
ZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcoQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBnZXRSZW5k
ZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFN0cmluZyYpPiYmKTsKKyAgICB2b2lkIGdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKICAgICB2b2lkIGdldFNl
bGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmKT4mJik7Ci0gICAgdm9pZCBnZXRTb3VyY2VGb3JGcmFtZShXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIsIENhbGxiYWNrSUQpOworICAgIHZvaWQgZ2V0U291cmNlRm9yRnJh
bWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFN0cmluZyYpPiYmKTsKICAgICB2b2lkIGdldFdlYkFyY2hpdmVPZkZyYW1lKFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmKT4mJik7CiAgICAgdm9pZCBydW5KYXZhU2NyaXB0KFdlYkZyYW1lKiwgV2ViQ29yZTo6
UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiwgQ29udGVudFdvcmxkSWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBPcHRpb25h
bDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiYpPiYmKTsKICAgICB2b2lkIHJ1bkphdmFTY3Jp
cHRJbkZyYW1lSW5TY3JpcHRXb3JsZChXZWJDb3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYm
LCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBjb25zdCBzdGQ6OnBhaXI8Q29u
dGVudFdvcmxkSWRlbnRpZmllciwgU3RyaW5nPiYgd29ybGREYXRhLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6
OkV4Y2VwdGlvbkRldGFpbHM+Jik+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggOGNmY2M0OWNmNmYzODA3NmFm
OWMzMjMxOTNhZDM3NTM0OGE0NDhmMC4uMzRiMTJjNDY0NDRmZjE1NWE1ZTE0MzIxOTlhZDhhMTc4
OTkxNTgyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0yMiw3ICsyMiw3IEBACiAKIG1lc3NhZ2VzIC0+IFdlYlBh
Z2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNldEluaXRpYWxGb2N1cyhib29sIGZvcndhcmQsIGJv
b2wgaXNLZXlib2FyZEV2ZW50VmFsaWQsIFdlYktpdDo6V2ViS2V5Ym9hcmRFdmVudCBldmVudCkg
LT4gKCkgQXN5bmMKLSAgICBTZXRBY3Rpdml0eVN0YXRlKE9wdGlvblNldDxXZWJDb3JlOjpBY3Rp
dml0eVN0YXRlOjpGbGFnPiBhY3Rpdml0eVN0YXRlLCBXZWJLaXQ6OkFjdGl2aXR5U3RhdGVDaGFu
Z2VJRCBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQsIFZlY3RvcjxXZWJLaXQ6OkNhbGxiYWNrSUQ+IGNh
bGxiYWNrSURzKQorICAgIFNldEFjdGl2aXR5U3RhdGUoT3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2
aXR5U3RhdGU6OkZsYWc+IGFjdGl2aXR5U3RhdGUsIFdlYktpdDo6QWN0aXZpdHlTdGF0ZUNoYW5n
ZUlEIGFjdGl2aXR5U3RhdGVDaGFuZ2VJRCkgLT4gKCkgQXN5bmMKICAgICBTZXRMYXllckhvc3Rp
bmdNb2RlKGVudW06dWludDhfdCBXZWJLaXQ6OkxheWVySG9zdGluZ01vZGUgbGF5ZXJIb3N0aW5n
TW9kZSkKIAogICAgIFNldEJhY2tncm91bmRDb2xvcihPcHRpb25hbDxXZWJDb3JlOjpDb2xvcj4g
Y29sb3IpCkBAIC04Miw3ICs4Miw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2
ZXIgewogICAgIFJlcGxhY2VEaWN0YXRlZFRleHQoU3RyaW5nIG9sZFRleHQsIFN0cmluZyBuZXdU
ZXh0KQogICAgIFJlcGxhY2VTZWxlY3RlZFRleHQoU3RyaW5nIG9sZFRleHQsIFN0cmluZyBuZXdU
ZXh0KQogICAgIFJlcXVlc3RBdXRvY29ycmVjdGlvbkRhdGEoU3RyaW5nIHRleHRGb3JBdXRvY29y
cmVjdGlvbikgLT4gKHN0cnVjdCBXZWJLaXQ6OldlYkF1dG9jb3JyZWN0aW9uRGF0YSBkYXRhKSBB
c3luYwotICAgIEFwcGx5QXV0b2NvcnJlY3Rpb24oU3RyaW5nIGNvcnJlY3Rpb24sIFN0cmluZyBv
cmlnaW5hbFRleHQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIEFwcGx5QXV0
b2NvcnJlY3Rpb24oU3RyaW5nIGNvcnJlY3Rpb24sIFN0cmluZyBvcmlnaW5hbFRleHQpIC0+IChT
dHJpbmcgc3RyaW5nKSBBc3luYwogICAgIFN5bmNBcHBseUF1dG9jb3JyZWN0aW9uKFN0cmluZyBj
b3JyZWN0aW9uLCBTdHJpbmcgb3JpZ2luYWxUZXh0KSAtPiAoYm9vbCBhdXRvY29ycmVjdGlvbkFw
cGxpZWQpIFN5bmNocm9ub3VzCiAgICAgUmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dCgpCiAg
ICAgUmVxdWVzdEV2YXNpb25SZWN0c0Fib3ZlU2VsZWN0aW9uKCkgLT4gKFZlY3RvcjxXZWJDb3Jl
OjpGbG9hdFJlY3Q+IHJlY3RzKSBBc3luYwpAQCAtMjA0LDcgKzIwNCw3IEBAIEdlbmVyYXRlU3lu
dGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGlu
Z0NvbW1hbmRUeXBlCiAgICAgUmVzdG9yZVNlbGVjdGlvbkluRm9jdXNlZEVkaXRhYmxlRWxlbWVu
dCgpCiAKICAgICAjIENhbGxiYWNrcy4KLSAgICBHZXRDb250ZW50c0FzU3RyaW5nKGVudW06Ym9v
bCBXZWJLaXQ6OkNvbnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXMgaW5DaGlsZEZyYW1l
cywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgR2V0Q29udGVudHNBc1N0cmlu
ZyhlbnVtOmJvb2wgV2ViS2l0OjpDb250ZW50QXNTdHJpbmdJbmNsdWRlc0NoaWxkRnJhbWVzIGlu
Q2hpbGRGcmFtZXMpIC0+IChTdHJpbmcgc3RyaW5nKSBBc3luYwogICAgIEdldEFsbEZyYW1lcygp
IC0+IChzdHJ1Y3QgV2ViS2l0OjpGcmFtZVRyZWVOb2RlRGF0YSBtYWluRnJhbWUpIEFzeW5jCiAj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgR2V0Q29udGVudHNBc0F0dHJpYnV0ZWRTdHJpbmcoKSAt
PiAoc3RydWN0IFdlYkNvcmU6OkF0dHJpYnV0ZWRTdHJpbmcgcmVzdWx0KSBBc3luYwpAQCAtMjE0
LDEwICsyMTQsMTAgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4
X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKICNlbmRpZgogICAgIEdldE1h
aW5SZXNvdXJjZURhdGFPZkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlEKSAt
PiAoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UpIEFzeW5jCiAg
ICAgR2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCBTdHJpbmcgcmVzb3VyY2VVUkwpIC0+IChJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2UgZGF0YVJlZmVyZW5jZSkgQXN5bmMKLSAgICBHZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNl
bnRhdGlvbihXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKLSAgICBHZXRTZWxlY3Rpb25P
ckNvbnRlbnRzQXNTdHJpbmcoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgR2V0
UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oKSAtPiAoU3RyaW5nIHN0cmluZykgQXN5
bmMKKyAgICBHZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcoKSAtPiAoU3RyaW5nIHN0cmlu
ZykgQXN5bmMKICAgICBHZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKCkgLT4gKElQQzo6RGF0
YVJlZmVyZW5jZSBkYXRhKSBBc3luYwotICAgIEdldFNvdXJjZUZvckZyYW1lKFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAg
ICBHZXRTb3VyY2VGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkgLT4g
KFN0cmluZyBzdHJpbmcpIEFzeW5jCiAgICAgR2V0V2ViQXJjaGl2ZU9mRnJhbWUoV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpIC0+IChJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVy
ZW5jZSkgQXN5bmMKIAogICAgIFJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZChzdHJ1
Y3QgV2ViQ29yZTo6UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMgcGFyYW1ldGVycywgT3B0aW9uYWw8
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBzdGQ6OnBhaXI8V2ViS2l0OjpDb250
ZW50V29ybGRJZGVudGlmaWVyLCBTdHJpbmc+IHdvcmxkKSAtPiAoSVBDOjpEYXRhUmVmZXJlbmNl
IHJlc3VsdERhdGEsIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMp
IEFzeW5jCkBAIC00ODcsOSArNDg3LDkgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFu
ZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKICAgICBT
ZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IodWludDMyX3QgcGlubmluZykKICAgICBTZXRTY3JvbGxi
YXJPdmVybGF5U3R5bGUoT3B0aW9uYWw8dWludDMyX3Q+IHNjcm9sbGJhclN0eWxlKQogCi0gICAg
R2V0Qnl0ZWNvZGVQcm9maWxlKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIEdl
dEJ5dGVjb2RlUHJvZmlsZSgpIC0+IChTdHJpbmcgc3RyaW5nKSBBc3luYwogCi0gICAgR2V0U2Ft
cGxpbmdQcm9maWxlck91dHB1dChXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBH
ZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KCkgLT4gKFN0cmluZyBzdHJpbmcpIEFzeW5jCiAgICAg
CiAgICAgVGFrZVNuYXBzaG90KFdlYkNvcmU6OkludFJlY3Qgc25hcHNob3RSZWN0LCBXZWJDb3Jl
OjpJbnRTaXplIGJpdG1hcFNpemUsIHVpbnQzMl90IG9wdGlvbnMpIC0+IChXZWJLaXQ6OlNoYXJl
YWJsZUJpdG1hcDo6SGFuZGxlIGltYWdlKSBBc3luYwogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTU2
NSw4ICs1NjUsOCBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhf
dCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogICAgIFNldElzU3VzcGVuZGVk
KGJvb2wgc3VzcGVuZGVkKQogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKLSAgICBJ
bnNlcnRBdHRhY2htZW50KFN0cmluZyBpZGVudGlmaWVyLCBPcHRpb25hbDx1aW50NjRfdD4gZmls
ZVNpemUsIFN0cmluZyBmaWxlTmFtZSwgU3RyaW5nIGNvbnRlbnRUeXBlLCBXZWJLaXQ6OkNhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKLSAgICBVcGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhTdHJpbmcg
aWRlbnRpZmllciwgT3B0aW9uYWw8dWludDY0X3Q+IGZpbGVTaXplLCBTdHJpbmcgY29udGVudFR5
cGUsIFN0cmluZyBmaWxlTmFtZSwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGVuY2xv
c2luZ0ltYWdlRGF0YSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgSW5zZXJ0
QXR0YWNobWVudChTdHJpbmcgaWRlbnRpZmllciwgT3B0aW9uYWw8dWludDY0X3Q+IGZpbGVTaXpl
LCBTdHJpbmcgZmlsZU5hbWUsIFN0cmluZyBjb250ZW50VHlwZSkgLT4gKCkgQXN5bmMKKyAgICBV
cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhTdHJpbmcgaWRlbnRpZmllciwgT3B0aW9uYWw8dWlu
dDY0X3Q+IGZpbGVTaXplLCBTdHJpbmcgY29udGVudFR5cGUsIFN0cmluZyBmaWxlTmFtZSwgSVBD
OjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGVuY2xvc2luZ0ltYWdlRGF0YSkgLT4gKCkgQXN5
bmMKICAgICBVcGRhdGVBdHRhY2htZW50SWNvbihTdHJpbmcgaWRlbnRpZmllciwgV2ViS2l0OjpT
aGFyZWFibGVCaXRtYXA6OkhhbmRsZSBxbFRodW1ibmFpbEhhbmRsZSkKICNlbmRpZgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmlu
ZGV4IDI0NWU0OTkzZGRlNjE0YWUwZjIxZmY3ZTQ5ZmNmYjg4MWU3MjRiZWMuLmY2NzAzZDcwNGM5
ZmE2NGMwZDAwYWM5YTBjYmI4ZDcxYzY0NzQyMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0yMzUxLDkgKzIzNTEsOSBA
QCB2b2lkIFdlYlBhZ2U6OnJlcXVlc3RBdXRvY29ycmVjdGlvbkRhdGEoY29uc3QgU3RyaW5nJiB0
ZXh0Rm9yQXV0b2NvcnJlY3Rpb24sIENvbQogICAgIHJlcGx5KHsgV1RGTW92ZShyb290Vmlld1Nl
bGVjdGlvblJlY3RzKSAsIChfX2JyaWRnZSBVSUZvbnQgKilmb250IH0pOwogfQogCi12b2lkIFdl
YlBhZ2U6OmFwcGx5QXV0b2NvcnJlY3Rpb24oY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uLCBjb25z
dCBTdHJpbmcmIG9yaWdpbmFsVGV4dCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQordm9pZCBXZWJQ
YWdlOjphcHBseUF1dG9jb3JyZWN0aW9uKGNvbnN0IFN0cmluZyYgY29ycmVjdGlvbiwgY29uc3Qg
U3RyaW5nJiBvcmlnaW5hbFRleHQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5n
Jik+JiYgY2FsbGJhY2spCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTdHJp
bmdDYWxsYmFjayhhcHBseUF1dG9jb3JyZWN0aW9uSW50ZXJuYWwoY29ycmVjdGlvbiwgb3JpZ2lu
YWxUZXh0KSA/IGNvcnJlY3Rpb24gOiBTdHJpbmcoKSwgY2FsbGJhY2tJRCkpOworICAgIGNhbGxi
YWNrKGFwcGx5QXV0b2NvcnJlY3Rpb25JbnRlcm5hbChjb3JyZWN0aW9uLCBvcmlnaW5hbFRleHQp
ID8gY29ycmVjdGlvbiA6IFN0cmluZygpKTsKIH0KIAogU2Vjb25kcyBXZWJQYWdlOjpldmVudFRo
cm90dGxpbmdEZWxheSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YS5oCmluZGV4IGI0ZWZmZmZmOGY3MmY2YmVhMjRhNWFkMTQ4NzE5ZGNjZGQ1YjgwZGMuLjc3YTgw
NDJmODg0MTU4OGQ4MjBlYzRjZmRhNWJmMTQ3YmZlZDUxZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYS5oCkBAIC04Miw3ICs4Miw3IEBAIHByaXZhdGU6CiAKICAgICBi
b29sIHNob3VsZFVzZVRpbGVkQmFja2luZ0ZvckZyYW1lVmlldyhjb25zdCBXZWJDb3JlOjpGcmFt
ZVZpZXcmKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZvaWQgYWN0aXZpdHlTdGF0ZURpZENoYW5n
ZShPcHRpb25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZz4gY2hhbmdlZCwgQWN0aXZp
dHlTdGF0ZUNoYW5nZUlELCBjb25zdCBWZWN0b3I8Q2FsbGJhY2tJRD4mKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoT3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5
U3RhdGU6OkZsYWc+IGNoYW5nZWQsIEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgYXR0YWNoVmlld092ZXJsYXlH
cmFwaGljc0xheWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKSBvdmVycmlkZTsKIApAQCAtMTUx
LDcgKzE1MSw3IEBAIHByaXZhdGU6CiAgICAgZG91YmxlIG1fdHJhbnNpZW50Wm9vbVNjYWxlIHsg
MSB9OwogICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgbV90cmFuc2llbnRab29tT3JpZ2luOwogCi0g
ICAgVmVjdG9yPENhbGxiYWNrSUQ+IG1fbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja0lE
czsKKyAgICBWZWN0b3I8Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPj4gbV9uZXh0QWN0aXZpdHlT
dGF0ZUNoYW5nZUNhbGxiYWNrczsKICAgICBBY3Rpdml0eVN0YXRlQ2hhbmdlSUQgbV9hY3Rpdml0
eVN0YXRlQ2hhbmdlSUQgeyBBY3Rpdml0eVN0YXRlQ2hhbmdlQXN5bmNocm9ub3VzIH07CiAKICAg
ICBSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NMYXllcj4gbV92aWV3T3ZlcmxheVJvb3RMYXllcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQppbmRleCA2YjEyZTk5NTJk
NTM2OTVjNDcxNWRlMzc1OTZmYTZiNTJmMTAzMTViLi5mNmNmMTFhYTUyMGJlYzVkYzY5MTc0ZDdj
OTZhYzUyODAyYWUwZTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
Lm1tCkBAIC0xMDIsNiArMTAyLDggQEAgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OlRp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhKFdlYlBhZ2UmIHdlYlBhZ2UsIGMKIFRpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjp+VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEoKQog
ewogICAgIGludmFsaWRhdGVSZW5kZXJpbmdVcGRhdGVSdW5Mb29wT2JzZXJ2ZXIoKTsKKyAgICBm
b3IgKGF1dG8mIGNhbGxiYWNrIDogbV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrcykK
KyAgICAgICAgY2FsbGJhY2soKTsKIH0KIAogdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5n
QXJlYTo6c2VuZERpZEZpcnN0TGF5ZXJGbHVzaElmTmVlZGVkKCkKQEAgLTQ5OCw5ICs1MDAsOCBA
QCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpoYW5kbGVBY3Rpdml0eVN0YXRl
Q2hhbmdlQ2FsbGJhY2tzKCkKICAgICBpZiAobV9hY3Rpdml0eVN0YXRlQ2hhbmdlSUQgIT0gQWN0
aXZpdHlTdGF0ZUNoYW5nZUFzeW5jaHJvbm91cykKICAgICAgICAgbV93ZWJQYWdlLnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSgpKTsKIAotICAgIGZv
ciAoYXV0byYgY2FsbGJhY2tJRCA6IG1fbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja0lE
cykKLSAgICAgICAgbV93ZWJQYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Vm9pZENh
bGxiYWNrKGNhbGxiYWNrSUQpKTsKLSAgICBtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJh
Y2tJRHMuY2xlYXIoKTsKKyAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogc3RkOjpleGNoYW5nZSht
X25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tzLCB7IH0pKQorICAgICAgICBjYWxsYmFj
aygpOwogCiAgICAgbV9hY3Rpdml0eVN0YXRlQ2hhbmdlSUQgPSBBY3Rpdml0eVN0YXRlQ2hhbmdl
QXN5bmNocm9ub3VzOwogfQpAQCAtNTMxLDkgKzUzMiw5IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWE6OmhhbmRsZUFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja3NJZk5lZWRl
ZCgpCiAgICAgfSBmb3JQaGFzZTprQ0FUcmFuc2FjdGlvblBoYXNlUG9zdENvbW1pdF07CiB9CiAK
LXZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmFjdGl2aXR5U3RhdGVEaWRDaGFu
Z2UoT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+IGNoYW5nZWQsIEFjdGl2aXR5U3RhdGVD
aGFuZ2VJRCBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQsIGNvbnN0IFZlY3RvcjxDYWxsYmFja0lEPiYg
bmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja0lEcykKK3ZvaWQgVGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWE6OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoT3B0aW9uU2V0PEFjdGl2aXR5
U3RhdGU6OkZsYWc+IGNoYW5nZWQsIEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCBhY3Rpdml0eVN0YXRl
Q2hhbmdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBuZXh0QWN0aXZpdHlTdGF0ZUNo
YW5nZUNhbGxiYWNrKQogewotICAgIG1fbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja0lE
cy5hcHBlbmRWZWN0b3IobmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja0lEcyk7CisgICAg
bV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrcy5hcHBlbmQoV1RGTW92ZShuZXh0QWN0
aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrKSk7CiAgICAgbV9hY3Rpdml0eVN0YXRlQ2hhbmdlSUQg
PSBzdGQ6Om1heChtX2FjdGl2aXR5U3RhdGVDaGFuZ2VJRCwgYWN0aXZpdHlTdGF0ZUNoYW5nZUlE
KTsKIAogICAgIGlmIChjaGFuZ2VkICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKSB7CkBAIC01
NDMsNyArNTQ0LDcgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6YWN0aXZp
dHlTdGF0ZURpZENoYW5nZShPcHRpb25TZXQ8QWN0aXZpdHlTdGEKICAgICAgICAgICAgIHN1c3Bl
bmRQYWludGluZygpOwogICAgIH0KIAotICAgIGlmIChtX2FjdGl2aXR5U3RhdGVDaGFuZ2VJRCAh
PSBBY3Rpdml0eVN0YXRlQ2hhbmdlQXN5bmNocm9ub3VzIHx8ICFtX25leHRBY3Rpdml0eVN0YXRl
Q2hhbmdlQ2FsbGJhY2tJRHMuaXNFbXB0eSgpKSB7CisgICAgaWYgKG1fYWN0aXZpdHlTdGF0ZUNo
YW5nZUlEICE9IEFjdGl2aXR5U3RhdGVDaGFuZ2VBc3luY2hyb25vdXMgfHwgIW1fbmV4dEFjdGl2
aXR5U3RhdGVDaGFuZ2VDYWxsYmFja3MuaXNFbXB0eSgpKSB7CiAgICAgICAgIG1fc2hvdWxkSGFu
ZGxlQWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrcyA9IHRydWU7CiAgICAgICAgIHRyaWdnZXJS
ZW5kZXJpbmdVcGRhdGUoKTsKICAgICB9Cg==
</data>
<flag name="commit-queue"
          id="438448"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420044</attachid>
            <date>2021-02-11 14:21:55 -0800</date>
            <delta_ts>2021-02-15 13:15:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221653-20210211142155.patch</filename>
            <type>text/plain</type>
            <size>73207</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNzQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGM3ZDRmOTBjMGRkYmE4ODhl
Njg1MDYyYThlYWQ1M2Y5ZmYyNTlhNWEuLmEyNzVhZDU3NDU5MjdmNWI0YWM2MDM5MTc2MTE0Njgw
MDY1ZGQyMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTEgQEAKKzIwMjEtMDItMTEgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBTdG9wIHVzaW5n
IEdlbmVyaWNDYWxsYmFjayBmcm9tIFdlYlBhZ2VQcm94eQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxNjUzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Q2hyaXMgRHVtZXouCisKKyAgICAgICAgVGhlcmUgYXJlIHN0aWxsIHR3byB1c2VzIGluIHRoZSBE
cmF3aW5nQXJlYVByb3h5IGltcGxlbWVudGF0aW9ucywgYnV0IHRob3NlIGFyZSBxdWl0ZSB0YW5n
bGVkIGFuZCBkZXNlcnZlIHRoZWlyIG93biBwYXRjaC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJQXR0YWNobWVudC5jcHA6CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OnVwZGF0ZUF0
dHJpYnV0ZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCk6CisgICAgICAgIChXS1BhZ2VSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRh
dGlvbik6CisgICAgICAgIChXS1BhZ2VHZXRTb3VyY2VGb3JGcmFtZSk6CisgICAgICAgIChXS1Bh
Z2VHZXRDb250ZW50c0FzU3RyaW5nKToKKyAgICAgICAgKFdLUGFnZUdldEJ5dGVjb2RlUHJvZmls
ZSk6CisgICAgICAgIChXS1BhZ2VHZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KToKKyAgICAgICAg
KFdURjo6RnVuY3Rpb248dm9pZCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9BUElBdHRhY2htZW50Q29jb2EubW06CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OnVw
ZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2luc2VydEF0dGFj
aG1lbnRXaXRoRmlsZVdyYXBwZXI6Y29udGVudFR5cGU6Y29tcGxldGlvbjpdKToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IF9nZXRDb250ZW50c0FzU3RyaW5nV2l0aENvbXBsZXRpb25IYW5kbGVyOl0p
OgorICAgICAgICAoLVtXS1dlYlZpZXcgX2dldENvbnRlbnRzT2ZBbGxGcmFtZXNBc1N0cmluZ1dp
dGhDb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19X
S0F0dGFjaG1lbnQubW06CisgICAgICAgICgtW19XS0F0dGFjaG1lbnQgc2V0RmlsZVdyYXBwZXI6
Y29udGVudFR5cGU6Y29tcGxldGlvbjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2Vi
Vmlld0ltcGwubW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzdGFydFNwZWFraW5n
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
ZGlzcGF0Y2hBY3Rpdml0eVN0YXRlQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpnZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6Z2V0U291cmNlRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmdldENvbnRlbnRzQXNTdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmdldEJ5dGVjb2RlUHJvZmlsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6Z2V0U2FtcGxpbmdQcm9maWxlck91dHB1dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6Z2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmRpZEZhaWxMb2FkRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnJlc2V0U3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
Omluc3RhbGxBY3Rpdml0eVN0YXRlQ2hhbmdlQ29tcGxldGlvbkhhbmRsZXIpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6Omluc2VydEF0dGFjaG1lbnQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpkaWRJbnNlcnRBdHRhY2htZW50V2l0aElkZW50aWZpZXIpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNsZWFyTG9hZERlcGVuZGVudENhbGxiYWNr
cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dm9pZENhbGxiYWNr
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzdHJpbmdDYWxsYmFj
ayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW52YWxpZGF0ZVN0
cmluZ0NhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBfc2hhcmVGb3JXZWJWaWV3Ol0pOgorICAgICAgICAoLVtXS0NvbnRl
bnRWaWV3IF9kZWZpbmVGb3JXZWJWaWV3Ol0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGFj
Y2Vzc2liaWxpdHlSZXRyaWV2ZVNwZWFrU2VsZWN0aW9uQ29udGVudF0pOgorICAgICAgICAoLVtX
S0NvbnRlbnRWaWV3IGFwcGx5QXV0b2NvcnJlY3Rpb246dG9TdHJpbmc6d2l0aENvbXBsZXRpb25I
YW5kbGVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmFwcGx5QXV0b2NvcnJlY3Rpb24pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tUZXh0RmluZGVyQ2xpZW50Lm1tOgorICAgICAgICAoLVtX
S1RleHRGaW5kZXJDbGllbnQgZ2V0U2VsZWN0ZWRUZXh0Ol0pOgorICAgICAgICAqIFdlYlByb2Nl
c3MvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVu
dC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oOgorICAgICAg
ICAoV2ViS2l0OjpEcmF3aW5nQXJlYTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUv
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhOjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OnJlaW5pdGlhbGl6ZVdlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRBY3Rp
dml0eVN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0Q29udGVudHNBc1N0cmlu
Zyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJl
c2VudGF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0U2VsZWN0aW9uT3JDb250
ZW50c0FzU3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0U291cmNlRm9yRnJh
bWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRCeXRlY29kZVByb2ZpbGUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6aW5zZXJ0QXR0YWNobWVudCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFn
ZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YXBwbHlBdXRvY29ycmVjdGlvbik6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWEubW06CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlv
bkRyYXdpbmdBcmVhOjpoYW5kbGVBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tzKToKKyAgICAg
ICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmFjdGl2aXR5U3RhdGVE
aWRDaGFuZ2UpOgorCiAyMDIxLTAyLTExICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUu
Y29tPgogCiAgICAgICAgIFttYWNPU10gQWRkIHRlbGVtZXRyeSBmb3IgYSBsaWtlbHktdW51c2Vk
IGNhbGwgdG8gaXBjLXBvc2l4LXNobS1yZWFkLWRhdGEgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAKaW5kZXggMTM4NmVkNjNlY2EyNzliMDA3MDZkMTdi
OWNjMmJiNTFhOGEyOTFjNy4uYjE4MjBlMDQ4YzA3NzU2MWM5ODFiMTkzZmYzYjVkMzQ2NzAwMTgw
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcApA
QCAtNDksMTUgKzQ5LDE1IEBAIEF0dGFjaG1lbnQ6On5BdHRhY2htZW50KCkKIHsKIH0KIAotdm9p
ZCBBdHRhY2htZW50Ojp1cGRhdGVBdHRyaWJ1dGVzKEZ1bmN0aW9uPHZvaWQoV2ViS2l0OjpDYWxs
YmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFjaykKK3ZvaWQgQXR0YWNobWVudDo6dXBkYXRlQXR0
cmlidXRlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7CiAgICAgaWYg
KCFtX3dlYlBhZ2UpIHsKLSAgICAgICAgY2FsbGJhY2soV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVy
cm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsKKyAgICAgICAgY2FsbGJhY2soKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAogICAgIGlmIChtX3dlYlBhZ2UtPndpbGxVcGRhdGVBdHRhY2htZW50
QXR0cmlidXRlcygqdGhpcykgPT0gV2ViS2l0OjpXZWJQYWdlUHJveHk6OlNob3VsZFVwZGF0ZUF0
dGFjaG1lbnRBdHRyaWJ1dGVzOjpObykgewotICAgICAgICBjYWxsYmFjayhXZWJLaXQ6OkNhbGxi
YWNrQmFzZTo6RXJyb3I6Ok5vbmUpOworICAgICAgICBjYWxsYmFjaygpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
QXR0YWNobWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQu
aAppbmRleCAyZTA2NDlhOGRkMDEyZWMwYWUxN2Y2ZjU1ZjQxODdhOWVkNjAxNjliLi43YmE0NGZh
Yzg5MjlkODU2MWY4NGE4ODhjOWVmNmM2ODc1NmU2MTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogICAg
IGVudW0gY2xhc3MgSW5zZXJ0aW9uU3RhdGUgOiB1aW50OF90IHsgTm90SW5zZXJ0ZWQsIEluc2Vy
dGVkIH07CiAKICAgICBjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0
dXJuIG1faWRlbnRpZmllcjsgfQotICAgIHZvaWQgdXBkYXRlQXR0cmlidXRlcyhGdW5jdGlvbjx2
b2lkKFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAgIHZvaWQgdXBkYXRlQXR0
cmlidXRlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAgICAgdm9pZCBpbnZhbGlk
YXRlKCk7CiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gISFtX3dlYlBhZ2U7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCmluZGV4IDRlZjg0YTgxYThm
Y2I2OGUyZTljZGI0MzU2NzE4NDc3Y2YwNzQ1YzkuLjYyYTU0Yjc0NmMzYWIyZjFhYjMyY2VkNzE0
NjRjNGM0ZGRmMWU5ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNw
cApAQCAtMjUzNCwzNiArMjUzNCwzNiBAQCB2b2lkIFdLUGFnZVJ1bkphdmFTY3JpcHRJbk1haW5G
cmFtZV9iKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBzY3JpcHRSZWYsCiB9CiAjZW5k
aWYKIAotc3RhdGljIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgV2ViS2l0OjpD
YWxsYmFja0Jhc2U6OkVycm9yKT4gdG9HZW5lcmljQ2FsbGJhY2tGdW5jdGlvbih2b2lkKiBjb250
ZXh0LCB2b2lkICgqY2FsbGJhY2spKFdLU3RyaW5nUmVmLCBXS0Vycm9yUmVmLCB2b2lkKikpCitz
dGF0aWMgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4gdG9TdHJpbmdDYWxs
YmFjayh2b2lkKiBjb250ZXh0LCB2b2lkKCpjYWxsYmFjaykoV0tTdHJpbmdSZWYsIFdLRXJyb3JS
ZWYsIHZvaWQqKSkKIHsKLSAgICByZXR1cm4gW2NvbnRleHQsIGNhbGxiYWNrXShjb25zdCBTdHJp
bmcmIHJldHVyblZhbHVlLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKLSAg
ICAgICAgY2FsbGJhY2sodG9BUEkoQVBJOjpTdHJpbmc6OmNyZWF0ZShyZXR1cm5WYWx1ZSkucHRy
KCkpLCBlcnJvciAhPSBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUgPyB0b0FQSShB
UEk6OkVycm9yOjpjcmVhdGUoKS5wdHIoKSkgOiAwLCBjb250ZXh0KTsKKyAgICByZXR1cm4gW2Nv
bnRleHQsIGNhbGxiYWNrXSAoY29uc3QgU3RyaW5nJiByZXR1cm5WYWx1ZSkgeworICAgICAgICBj
YWxsYmFjayh0b0FQSShBUEk6OlN0cmluZzo6Y3JlYXRlKHJldHVyblZhbHVlKS5wdHIoKSksIG51
bGxwdHIsIGNvbnRleHQpOwogICAgIH07CiB9CiAKIHZvaWQgV0tQYWdlUmVuZGVyVHJlZUV4dGVy
bmFsUmVwcmVzZW50YXRpb24oV0tQYWdlUmVmIHBhZ2VSZWYsIHZvaWQqIGNvbnRleHQsIFdLUGFn
ZVJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uRnVuY3Rpb24gY2FsbGJhY2spCiB7Ci0g
ICAgdG9JbXBsKHBhZ2VSZWYpLT5nZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbih0
b0dlbmVyaWNDYWxsYmFja0Z1bmN0aW9uKGNvbnRleHQsIGNhbGxiYWNrKSk7CisgICAgdG9JbXBs
KHBhZ2VSZWYpLT5nZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbih0b1N0cmluZ0Nh
bGxiYWNrKGNvbnRleHQsIGNhbGxiYWNrKSk7CiB9CiAKIHZvaWQgV0tQYWdlR2V0U291cmNlRm9y
RnJhbWUoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLRnJhbWVSZWYgZnJhbWVSZWYsIHZvaWQqIGNvbnRl
eHQsIFdLUGFnZUdldFNvdXJjZUZvckZyYW1lRnVuY3Rpb24gY2FsbGJhY2spCiB7Ci0gICAgdG9J
bXBsKHBhZ2VSZWYpLT5nZXRTb3VyY2VGb3JGcmFtZSh0b0ltcGwoZnJhbWVSZWYpLCB0b0dlbmVy
aWNDYWxsYmFja0Z1bmN0aW9uKGNvbnRleHQsIGNhbGxiYWNrKSk7CisgICAgdG9JbXBsKHBhZ2VS
ZWYpLT5nZXRTb3VyY2VGb3JGcmFtZSh0b0ltcGwoZnJhbWVSZWYpLCB0b1N0cmluZ0NhbGxiYWNr
KGNvbnRleHQsIGNhbGxiYWNrKSk7CiB9CiAKIHZvaWQgV0tQYWdlR2V0Q29udGVudHNBc1N0cmlu
ZyhXS1BhZ2VSZWYgcGFnZVJlZiwgdm9pZCogY29udGV4dCwgV0tQYWdlR2V0Q29udGVudHNBc1N0
cmluZ0Z1bmN0aW9uIGNhbGxiYWNrKQogewotICAgIHRvSW1wbChwYWdlUmVmKS0+Z2V0Q29udGVu
dHNBc1N0cmluZyhDb250ZW50QXNTdHJpbmdJbmNsdWRlc0NoaWxkRnJhbWVzOjpObywgdG9HZW5l
cmljQ2FsbGJhY2tGdW5jdGlvbihjb250ZXh0LCBjYWxsYmFjaykpOworICAgIHRvSW1wbChwYWdl
UmVmKS0+Z2V0Q29udGVudHNBc1N0cmluZyhDb250ZW50QXNTdHJpbmdJbmNsdWRlc0NoaWxkRnJh
bWVzOjpObywgdG9TdHJpbmdDYWxsYmFjayhjb250ZXh0LCBjYWxsYmFjaykpOwogfQogCiB2b2lk
IFdLUGFnZUdldEJ5dGVjb2RlUHJvZmlsZShXS1BhZ2VSZWYgcGFnZVJlZiwgdm9pZCogY29udGV4
dCwgV0tQYWdlR2V0Qnl0ZWNvZGVQcm9maWxlRnVuY3Rpb24gY2FsbGJhY2spCiB7Ci0gICAgdG9J
bXBsKHBhZ2VSZWYpLT5nZXRCeXRlY29kZVByb2ZpbGUodG9HZW5lcmljQ2FsbGJhY2tGdW5jdGlv
bihjb250ZXh0LCBjYWxsYmFjaykpOworICAgIHRvSW1wbChwYWdlUmVmKS0+Z2V0Qnl0ZWNvZGVQ
cm9maWxlKHRvU3RyaW5nQ2FsbGJhY2soY29udGV4dCwgY2FsbGJhY2spKTsKIH0KIAogdm9pZCBX
S1BhZ2VHZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KFdLUGFnZVJlZiBwYWdlUmVmLCB2b2lkKiBj
b250ZXh0LCBXS1BhZ2VHZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0RnVuY3Rpb24gY2FsbGJhY2sp
CiB7Ci0gICAgdG9JbXBsKHBhZ2VSZWYpLT5nZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KHRvR2Vu
ZXJpY0NhbGxiYWNrRnVuY3Rpb24oY29udGV4dCwgY2FsbGJhY2spKTsKKyAgICB0b0ltcGwocGFn
ZVJlZiktPmdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQodG9TdHJpbmdDYWxsYmFjayhjb250ZXh0
LCBjYWxsYmFjaykpOwogfQogCiB2b2lkIFdLUGFnZUdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURh
dGEoV0tQYWdlUmVmIHBhZ2VSZWYsIHZvaWQqIGNvbnRleHQsIFdLUGFnZUdldFNlbGVjdGlvbkFz
V2ViQXJjaGl2ZURhdGFGdW5jdGlvbiBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tCmluZGV4IDNjMWUw
NmFmMDNkOTRmN2RhN2QwZDIwMWZhYjdhY2VmMjFlMDA3YWUuLjEyOTJjY2NjZjg4ZTg4OTM5ZmY5
ZmRlNDQ5NWEzNGYyOWRhOTJiYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQpAQCAtMTg3LDcgKzE4Nyw3IEBA
IHZvaWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmCiAgICAgICAgIHJldHVybjsKIAogICAgIHNldEZpbGVX
cmFwcGVyQW5kVXBkYXRlQ29udGVudFR5cGUoZmlsZVdyYXBwZXIsIGNvbnRlbnRUeXBlKTsKLSAg
ICBtX3dlYlBhZ2UtPnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKCp0aGlzLCBbXSAoYXV0bykg
eyB9KTsKKyAgICBtX3dlYlBhZ2UtPnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKCp0aGlzLCBb
XSB7IH0pOwogfQogCiB2b2lkIEF0dGFjaG1lbnQ6OnNldEZpbGVXcmFwcGVyR2VuZXJhdG9yKEZ1
bmN0aW9uPFJldGFpblB0cjxOU0ZpbGVXcmFwcGVyPih2b2lkKT4mJiBmaWxlV3JhcHBlckdlbmVy
YXRvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
CmluZGV4IGM1NWJkYjU0OWE3ZjdjNTQ3ZWUwNjEzYmEwN2MwOTU5MjcyNTdkZWEuLjQ5NDYxNmU5
MjYwNGZkYzY5M2Q0NWExYjlmZmJlYjlhMWFkZmJlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMjMxMyw5ICsyMzEzLDkgQEAgc3Rh
dGljIFJldGFpblB0cjxOU0FycmF5PiB3a1RleHRNYW5pcHVsYXRpb25FcnJvcnMoTlNBcnJheTxf
V0tUZXh0TWFuaXB1bGF0aW9uSXQKICAgICBhdXRvIGlkZW50aWZpZXIgPSBjcmVhdGVDYW5vbmlj
YWxVVUlEU3RyaW5nKCk7CiAgICAgYXV0byBhdHRhY2htZW50ID0gQVBJOjpBdHRhY2htZW50Ojpj
cmVhdGUoaWRlbnRpZmllciwgKl9wYWdlKTsKICAgICBhdHRhY2htZW50LT5zZXRGaWxlV3JhcHBl
ckFuZFVwZGF0ZUNvbnRlbnRUeXBlKGZpbGVXcmFwcGVyLCBjb250ZW50VHlwZSk7Ci0gICAgX3Bh
Z2UtPmluc2VydEF0dGFjaG1lbnQoYXR0YWNobWVudC5jb3B5UmVmKCksIFtjYXB0dXJlZEhhbmRs
ZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoV2ViS2l0OjpDYWxsYmFja0Jh
c2U6OkVycm9yIGVycm9yKSB7CisgICAgX3BhZ2UtPmluc2VydEF0dGFjaG1lbnQoYXR0YWNobWVu
dC5jb3B5UmVmKCksIFtjYXB0dXJlZEhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhh
bmRsZXIpXSB7CiAgICAgICAgIGlmIChjYXB0dXJlZEhhbmRsZXIpCi0gICAgICAgICAgICBjYXB0
dXJlZEhhbmRsZXIoZXJyb3IgPT0gV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKTsK
KyAgICAgICAgICAgIGNhcHR1cmVkSGFuZGxlcih0cnVlKTsKICAgICB9KTsKICNpZiBIQVZFKFFV
SUNLTE9PS19USFVNQk5BSUxJTkcpCiAgICAgX3BhZ2UtPnJlcXVlc3RUaHVtYm5haWxXaXRoRmls
ZVdyYXBwZXIoZmlsZVdyYXBwZXIsIGlkZW50aWZpZXIpOwpAQCAtMjU2MSwyNSArMjU2MSwxNSBA
QCBzdGF0aWMgaW5saW5lIE9wdGlvblNldDxXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmU+IGxheW91
dE1pbGVzdG9uZXMoX1dLUmVuZGVyaW5nUAogCiAtICh2b2lkKV9nZXRDb250ZW50c0FzU3RyaW5n
V2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1N0cmluZyAqLCBOU0Vycm9yICopKWNv
bXBsZXRpb25IYW5kbGVyCiB7Ci0gICAgYXV0byBoYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBs
ZXRpb25IYW5kbGVyKTsKLQotICAgIF9wYWdlLT5nZXRDb250ZW50c0FzU3RyaW5nKFdlYktpdDo6
Q29udGVudEFzU3RyaW5nSW5jbHVkZXNDaGlsZEZyYW1lczo6Tm8sIFtoYW5kbGVyXShTdHJpbmcg
c3RyaW5nLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKLSAgICAgICAgaWYg
KGVycm9yICE9IFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSkgewotICAgICAgICAg
ICAgLy8gRklYTUU6IFBpcGUgYSBwcm9wZXIgZXJyb3IgaW4gZnJvbSB0aGUgV2ViUGFnZVByb3h5
LgotICAgICAgICAgICAgaGFuZGxlcihuaWwsIFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vy
cm9yRG9tYWluIGNvZGU6c3RhdGljX2Nhc3Q8aW50PihlcnJvcikgdXNlckluZm86bmlsXSk7Ci0g
ICAgICAgIH0gZWxzZQotICAgICAgICAgICAgaGFuZGxlcihzdHJpbmcsIG5pbCk7CisgICAgX3Bh
Z2UtPmdldENvbnRlbnRzQXNTdHJpbmcoV2ViS2l0OjpDb250ZW50QXNTdHJpbmdJbmNsdWRlc0No
aWxkRnJhbWVzOjpObywgW2hhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIp
XShTdHJpbmcgc3RyaW5nKSB7CisgICAgICAgIGhhbmRsZXIoc3RyaW5nLCBuaWwpOwogICAgIH0p
OwogfQogCiAtICh2b2lkKV9nZXRDb250ZW50c09mQWxsRnJhbWVzQXNTdHJpbmdXaXRoQ29tcGxl
dGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TU3RyaW5nICopKWNvbXBsZXRpb25IYW5kbGVyCiB7Ci0g
ICAgYXV0byBoYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICBf
cGFnZS0+Z2V0Q29udGVudHNBc1N0cmluZyhXZWJLaXQ6OkNvbnRlbnRBc1N0cmluZ0luY2x1ZGVz
Q2hpbGRGcmFtZXM6OlllcywgW2hhbmRsZXJdKFN0cmluZyBzdHJpbmcsIFdlYktpdDo6Q2FsbGJh
Y2tCYXNlOjpFcnJvciBlcnJvcikgewotICAgICAgICBpZiAoZXJyb3IgIT0gV2ViS2l0OjpDYWxs
YmFja0Jhc2U6OkVycm9yOjpOb25lKQotICAgICAgICAgICAgaGFuZGxlcihuaWwpOwotICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBoYW5kbGVyKHN0cmluZyk7CisgICAgX3BhZ2UtPmdldENvbnRl
bnRzQXNTdHJpbmcoV2ViS2l0OjpDb250ZW50QXNTdHJpbmdJbmNsdWRlc0NoaWxkRnJhbWVzOjpZ
ZXMsIFtoYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oU3RyaW5nIHN0
cmluZykgeworICAgICAgICBoYW5kbGVyKHN0cmluZyk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdHRhY2htZW50Lm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F0dGFjaG1lbnQubW0KaW5kZXgg
MDBkOTY0ZmNjMTcwN2RlNjVmNTVjNDlhNTA4YjVjNGU2M2IwM2M1My4uNWU4YjhiYmJiZGZiYTY0
MDdmOWZmMzdmYmE4MmYyNjhkNDlmMmIxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0F0dGFjaG1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0F0dGFjaG1lbnQubW0KQEAgLTMyLDYgKzMyLDcgQEAKICNpbXBv
cnQgPFdlYkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TaGFyZWRC
dWZmZXIuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgorI2ltcG9ydCA8d3RmL0NvbXBsZXRp
b25IYW5kbGVyLmg+CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCA8TW9iaWxl
Q29yZVNlcnZpY2VzL01vYmlsZUNvcmVTZXJ2aWNlcy5oPgpAQCAtMTM5LDE0ICsxNDAsOSBAQCBz
dGF0aWMgY29uc3QgTlNJbnRlZ2VyIEludmFsaWRBdHRhY2htZW50RXJyb3JDb2RlID0gMjsKICAg
ICAvLyBmcm9tIHRoZSBTUEkgY2xpZW50LCB0aGUgY29ycmVzcG9uZGluZyBmaWxlIHBhdGggb2Yg
dGhlIGRhdGEgaXMgdW5rbm93biwgaWYgaXQgZXZlbiBleGlzdHMgYXQgYWxsLgogICAgIF9hdHRh
Y2htZW50LT5zZXRGaWxlUGF0aCh7IH0pOwogICAgIF9hdHRhY2htZW50LT5zZXRGaWxlV3JhcHBl
ckFuZFVwZGF0ZUNvbnRlbnRUeXBlKGZpbGVXcmFwcGVyLCBjb250ZW50VHlwZSk7Ci0gICAgX2F0
dGFjaG1lbnQtPnVwZGF0ZUF0dHJpYnV0ZXMoW2NhcHR1cmVkQmxvY2sgPSBtYWtlQmxvY2tQdHIo
Y29tcGxldGlvbkhhbmRsZXIpXSAoYXV0byBlcnJvcikgewotICAgICAgICBpZiAoIWNhcHR1cmVk
QmxvY2spCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKGVycm9yID09IFdlYktp
dDo6Q2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSkKKyAgICBfYXR0YWNobWVudC0+dXBkYXRlQXR0
cmlidXRlcyhbY2FwdHVyZWRCbG9jayA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcild
IHsKKyAgICAgICAgaWYgKGNhcHR1cmVkQmxvY2spCiAgICAgICAgICAgICBjYXB0dXJlZEJsb2Nr
KG5pbCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNhcHR1cmVkQmxvY2soW05TRXJyb3Ig
ZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpVbnNwZWNpZmllZEF0dGFjaG1lbnRF
cnJvckNvZGUgdXNlckluZm86bmlsXSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KaW5kZXggNTBlMjI1NTE4NWIxNDE1MTQ4NGU1
ZDAyN2FlYzQyYjhlY2IzNDg4NS4uMWJmOTA4NGM1M2ZlZDVlYjYzMTk2ODQ2NjdiM2FiODI3NGI3
YjhkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0lt
cGwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0K
QEAgLTMxNjIsOSArMzE2Miw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldFVzZXJJbnRlcmZhY2VJ
dGVtU3RhdGUoTlNTdHJpbmcgKmNvbW1hbmROYW1lLCBib29sIGVuYWJsZWQsCiB2b2lkIFdlYlZp
ZXdJbXBsOjpzdGFydFNwZWFraW5nKCkKIHsKICAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVn
ZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5Db21tdW5pY2F0ZVdpdGhXaW5kb3dTZXJ2ZXIpKTsKLSAg
ICBtX3BhZ2UtPmdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhbXShjb25zdCBTdHJpbmcm
IHN0cmluZywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7Ci0gICAgICAgIGlm
IChlcnJvciAhPSBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpCi0gICAgICAgICAg
ICByZXR1cm47CisgICAgbV9wYWdlLT5nZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcoW10o
Y29uc3QgU3RyaW5nJiBzdHJpbmcpIHsKICAgICAgICAgaWYgKCFzdHJpbmcpCiAgICAgICAgICAg
ICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dlbmVyaWND
YWxsYmFjay5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmgKaW5k
ZXggYzM2NTgxMWQwYTYyZmQ4NDJlOTQ0ODkwMGVkYjZhMmI0ZmU0NzgxOS4uMDM1NDE5ZDAyMTk0
MzRlNTcwZmQ3YmQ1M2MwZTk0MGVmYmRlMTFkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
R2VuZXJpY0NhbGxiYWNrLmgKQEAgLTE0NiwxNCArMTQ2LDYgQEAgcHJpdmF0ZToKICNlbmRpZgog
fTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgQVBJUmV0dXJuVmFsdWVUeXBlLCB0eXBlbmFtZSBJbnRl
cm5hbFJldHVyblZhbHVlVHlwZSA9IHR5cGVuYW1lIEFQSVR5cGVJbmZvPEFQSVJldHVyblZhbHVl
VHlwZT46OkltcGxUeXBlKj4KLXN0YXRpYyB0eXBlbmFtZSBHZW5lcmljQ2FsbGJhY2s8SW50ZXJu
YWxSZXR1cm5WYWx1ZVR5cGU+OjpDYWxsYmFja0Z1bmN0aW9uIHRvR2VuZXJpY0NhbGxiYWNrRnVu
Y3Rpb24odm9pZCogY29udGV4dCwgdm9pZCAoKmNhbGxiYWNrKShBUElSZXR1cm5WYWx1ZVR5cGUs
IFdLRXJyb3JSZWYsIHZvaWQqKSkKLXsKLSAgICByZXR1cm4gW2NvbnRleHQsIGNhbGxiYWNrXShJ
bnRlcm5hbFJldHVyblZhbHVlVHlwZSByZXR1cm5WYWx1ZSwgQ2FsbGJhY2tCYXNlOjpFcnJvciBl
cnJvcikgewotICAgICAgICBjYWxsYmFjayh0b0FQSShyZXR1cm5WYWx1ZSksIGVycm9yICE9IENh
bGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUgPyB0b0FQSShBUEk6OkVycm9yOjpjcmVhdGUoKS5wdHIo
KSkgOiAwLCBjb250ZXh0KTsKLSAgICB9OwotfQotCiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazw+
IFZvaWRDYWxsYmFjazsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGNkM2JhY2MyMzA2NTlkYzk3YTE1YzNjNTYxYzQ4
MzU1YmVhOTdkNzAuLjQ4ZDc0ZTJmYTU3ZjQ0MDlkOWUzMDFiNzZiOTU1MTk2OWUzNjBmNjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNjEzLDYgKzYxMyw5
IEBAIFdlYlBhZ2VQcm94eTo6fldlYlBhZ2VQcm94eSgpCiAjaWYgUExBVEZPUk0oTUFDQ0FUQUxZ
U1QpCiAgICAgRW5kb3dtZW50U3RhdGVUcmFja2VyOjpzaW5nbGV0b24oKS5yZW1vdmVDbGllbnQo
KnRoaXMpOwogI2VuZGlmCisgICAgCisgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IG1fbmV4dEFj
dGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja3MpCisgICAgICAgIGNhbGxiYWNrKCk7CiB9CiAKIC8v
IEZJWE1FOiBTaG91bGQgcmV0dXJuIGEgY29uc3QgUGFnZUNsaWVudCYgYW5kIGFkZCBhIHNlcGFy
YXRlIG5vbi1jb25zdApAQCAtMjAxNiwxMCArMjAxOSwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
ZGlzcGF0Y2hBY3Rpdml0eVN0YXRlQ2hhbmdlKCkKIAogICAgIGF1dG8gYWN0aXZpdHlTdGF0ZUNo
YW5nZUlEID0gbV9hY3Rpdml0eVN0YXRlQ2hhbmdlV2FudHNTeW5jaHJvbm91c1JlcGx5ID8gdGFr
ZU5leHRBY3Rpdml0eVN0YXRlQ2hhbmdlSUQoKSA6IHN0YXRpY19jYXN0PEFjdGl2aXR5U3RhdGVD
aGFuZ2VJRD4oQWN0aXZpdHlTdGF0ZUNoYW5nZUFzeW5jaHJvbm91cyk7CiAKLSAgICBpZiAoY2hh
bmdlZCB8fCBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQgIT0gQWN0aXZpdHlTdGF0ZUNoYW5nZUFzeW5j
aHJvbm91cyB8fCAhbV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrcy5pc0VtcHR5KCkp
Ci0gICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEFjdGl2aXR5U3RhdGUobV9hY3Rp
dml0eVN0YXRlLCBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQsIG1fbmV4dEFjdGl2aXR5U3RhdGVDaGFu
Z2VDYWxsYmFja3MpKTsKLQotICAgIG1fbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja3Mu
Y2xlYXIoKTsKKyAgICBpZiAoY2hhbmdlZCB8fCBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQgIT0gQWN0
aXZpdHlTdGF0ZUNoYW5nZUFzeW5jaHJvbm91cyB8fCAhbV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5n
ZUNhbGxiYWNrcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpXZWJQYWdlOjpTZXRBY3Rpdml0eVN0YXRlKG1fYWN0aXZpdHlTdGF0ZSwgYWN0aXZpdHlT
dGF0ZUNoYW5nZUlEKSwgW2NhbGxiYWNrcyA9IHN0ZDo6ZXhjaGFuZ2UobV9uZXh0QWN0aXZpdHlT
dGF0ZUNoYW5nZUNhbGxiYWNrcywgeyB9KV0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBmb3Ig
KGF1dG8mIGNhbGxiYWNrIDogY2FsbGJhY2tzKQorICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7
CisgICAgICAgIH0pOworICAgIH0KIAogICAgIC8vIFRoaXMgbXVzdCBoYXBwZW4gYWZ0ZXIgdGhl
IFNldEFjdGl2aXR5U3RhdGUgbWVzc2FnZSBpcyBzZW50LCB0byBlbnN1cmUgdGhlIHBhZ2Ugdmlz
aWJpbGl0eSBldmVudCBjYW4gZmlyZS4KICAgICB1cGRhdGVUaHJvdHRsZVN0YXRlKCk7CkBAIC00
MDc3LDM5ICs0MDgyLDE5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5GcmFt
ZUluU2NyaXB0V29ybGQoUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwCiAgICAgfSk7CiB9CiAK
LXZvaWQgV2ViUGFnZVByb3h5OjpnZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihX
VEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYm
IGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0UmVuZGVyVHJlZUV4dGVy
bmFsUmVwcmVzZW50YXRpb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4m
JiBjYWxsYmFjaykKIHsKLSAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKLSAgICAgICAg
Y2FsbGJhY2tGdW5jdGlvbihTdHJpbmcoKSwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgYXV0byBjYWxsYmFja0lEID0gbV9j
YWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0
bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OmdldFJlbmRlclRyZWVFeHRl
cm5hbFJlcHJlc2VudGF0aW9uIl9zKSk7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0
UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oY2FsbGJhY2tJRCkpOworICAgIHNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6R2V0UmVuZGVyVHJlZUV4dGVybmFsUmVw
cmVzZW50YXRpb24oKSwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94
eTo6Z2V0U291cmNlRm9yRnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUsIFdURjo6RnVuY3Rpb248
dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5j
dGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5OjpnZXRTb3VyY2VGb3JGcmFtZShXZWJGcmFtZVByb3h5
KiBmcmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjYWxsYmFj
aykKIHsKLSAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKLSAgICAgICAgY2FsbGJhY2tG
dW5jdGlvbihTdHJpbmcoKSwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OmdldFNvdXJjZUZvckZyYW1lIl9zKSk7Ci0g
ICAgbV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHMuYWRkKGNhbGxiYWNrSUQpOwotICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNvdXJjZUZvckZyYW1lKGZyYW1lLT5mcmFtZUlE
KCksIGNhbGxiYWNrSUQpKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBh
Z2U6OkdldFNvdXJjZUZvckZyYW1lKGZyYW1lLT5mcmFtZUlEKCkpLCBXVEZNb3ZlKGNhbGxiYWNr
KSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpnZXRDb250ZW50c0FzU3RyaW5nKENvbnRlbnRB
c1N0cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXMgaW5jbHVkZXNDaGlsZEZyYW1lcywgV1RGOjpGdW5j
dGlvbjx2b2lkKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNr
RnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0Q29udGVudHNBc1N0cmluZyhDb250ZW50
QXNTdHJpbmdJbmNsdWRlc0NoaWxkRnJhbWVzIGluY2x1ZGVzQ2hpbGRGcmFtZXMsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY2FsbGJhY2spCiB7Ci0gICAgaWYgKCFo
YXNSdW5uaW5nUHJvY2VzcygpKSB7Ci0gICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oU3RyaW5nKCks
IENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24pOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tG
dW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQ
YWdlUHJveHk6OmdldENvbnRlbnRzQXNTdHJpbmciX3MpKTsKLSAgICBtX2xvYWREZXBlbmRlbnRT
dHJpbmdDYWxsYmFja0lEcy5hZGQoY2FsbGJhY2tJRCk7Ci0gICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6R2V0Q29udGVudHNBc1N0cmluZyhpbmNsdWRlc0NoaWxkRnJhbWVzLCBjYWxsYmFja0lE
KSk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRDb250ZW50
c0FzU3RyaW5nKGluY2x1ZGVzQ2hpbGRGcmFtZXMpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAK
ICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTQxMjksMjggKzQxMTQsMTQgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmdldEFsbEZyYW1lcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEZyYW1lVHJlZU5vZGVE
YXRhJiYpPiYmIGMKICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6Okdl
dEFsbEZyYW1lcygpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgV2Vi
UGFnZVByb3h5OjpnZXRCeXRlY29kZVByb2ZpbGUoV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBT
dHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBX
ZWJQYWdlUHJveHk6OmdldEJ5dGVjb2RlUHJvZmlsZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFN0cmluZyYpPiYmIGNhbGxiYWNrKQogewotICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3Mo
KSkgewotICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKFN0cmluZygpLCBDYWxsYmFja0Jhc2U6OkVy
cm9yOjpVbmtub3duKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBhdXRvIGNh
bGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9w
cm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6Z2V0
Qnl0ZWNvZGVQcm9maWxlIl9zKSk7Ci0gICAgbV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJ
RHMuYWRkKGNhbGxiYWNrSUQpOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldEJ5dGVj
b2RlUHJvZmlsZShjYWxsYmFja0lEKSk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpXZWJQYWdlOjpHZXRCeXRlY29kZVByb2ZpbGUoKSwgV1RGTW92ZShjYWxsYmFjaykpOwogfQog
Ci12b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2FtcGxpbmdQcm9maWxlck91dHB1dChXVEY6OkZ1bmN0
aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNr
RnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2FtcGxpbmdQcm9maWxlck91dHB1dChD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNhbGxiYWNrKQogewotICAg
IGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgewotICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKFN0
cmluZygpLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICAKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92
ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0
aXZpdHkoIldlYlBhZ2VQcm94eTo6Z2V0U2FtcGxpbmdQcm9maWxlck91dHB1dCJfcykpOwotICAg
IG1fbG9hZERlcGVuZGVudFN0cmluZ0NhbGxiYWNrSURzLmFkZChjYWxsYmFja0lEKTsKLSAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KGNhbGxiYWNr
SUQpKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNhbXBs
aW5nUHJvZmlsZXJPdXRwdXQoKSwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCiBzdGF0aWMgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpPiB0b0FQ
SURhdGFDYWxsYmFjayhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6RGF0YSopPiYmIGNhbGxi
YWNrKQpAQCAtNDE2NywxNSArNDEzOCw5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRDb250ZW50
c0FzTUhUTUxEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJOjpEYXRhKik+JiYKIH0KICNl
bmRpZgogCi12b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5n
KFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+
JiYgY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5OjpnZXRTZWxlY3Rpb25PckNv
bnRlbnRzQXNTdHJpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJiBj
YWxsYmFjaykKIHsKLSAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKLSAgICAgICAgY2Fs
bGJhY2tGdW5jdGlvbihTdHJpbmcoKSwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxs
YmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVy
KCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OmdldFNlbGVjdGlvbk9yQ29udGVu
dHNBc1N0cmluZyJfcykpOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNlbGVjdGlv
bk9yQ29udGVudHNBc1N0cmluZyhjYWxsYmFja0lEKSk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5
KE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcoKSwgY2Fs
bGJhY2spOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZl
RGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6RGF0YSopPiYmIGNhbGxiYWNrKQpAQCAt
NDU4MCwxNSArNDU0NSw2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxM
b2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwCiAgICAgICAgIG1fcHJv
dmlzaW9uYWxQYWdlID0gbnVsbHB0cjsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmNsZWFyTG9h
ZERlcGVuZGVudENhbGxiYWNrcygpCi17Ci0gICAgSGFzaFNldDxDYWxsYmFja0lEPiBsb2FkRGVw
ZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHMgPSBXVEZNb3ZlKG1fbG9hZERlcGVuZGVudFN0cmluZ0Nh
bGxiYWNrSURzKTsKLSAgICBmb3IgKGF1dG8mIGNhbGxiYWNrSUQgOiBsb2FkRGVwZW5kZW50U3Ry
aW5nQ2FsbGJhY2tJRHMpIHsKLSAgICAgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNr
cy50YWtlPFN0cmluZ0NhbGxiYWNrPihjYWxsYmFja0lEKSkKLSAgICAgICAgICAgIGNhbGxiYWNr
LT5pbnZhbGlkYXRlKCk7Ci0gICAgfQotfQotCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RB
VElTVElDUykKIHN0YXRpYyBPcHRpb25TZXQ8Q3Jvc3NTaXRlTmF2aWdhdGlvbkRhdGFUcmFuc2Zl
cjo6RmxhZz4gY2hlY2tJZk5hdmlnYXRpb25Db250YWluc0RhdGFUcmFuc2Zlcihjb25zdCBTZWN1
cml0eU9yaWdpbkRhdGEgcmVxdWVzdGVyT3JpZ2luLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGN1
cnJlbnRSZXF1ZXN0KQogewpAQCAtNDY2Myw4ICs0NjE5LDYgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmRpZENvbW1pdExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZv
RGF0YSYKICAgICBwYWdlQ2xpZW50KCkucmVzZXRTZWN1cmVJbnB1dFN0YXRlKCk7CiAjZW5kaWYK
IAotICAgIGNsZWFyTG9hZERlcGVuZGVudENhbGxiYWNrcygpOwotCiAgICAgZnJhbWUtPmRpZENv
bW1pdExvYWQobWltZVR5cGUsIHdlYkNlcnRpZmljYXRlSW5mbywgY29udGFpbnNQbHVnaW5Eb2N1
bWVudCk7CiAKICAgICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpIHsKQEAgLTQ4MjcsOCArNDc4
MSw2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsTG9hZEZvckZyYW1lKEZyYW1lSWRlbnRp
ZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJiYKICAgICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1l
KCkgJiYgbmF2aWdhdGlvbklEKQogICAgICAgICBuYXZpZ2F0aW9uID0gbmF2aWdhdGlvblN0YXRl
KCkubmF2aWdhdGlvbihuYXZpZ2F0aW9uSUQpOwogCi0gICAgY2xlYXJMb2FkRGVwZW5kZW50Q2Fs
bGJhY2tzKCk7Ci0KICAgICBhdXRvIHRyYW5zYWN0aW9uID0gbV9wYWdlTG9hZFN0YXRlLnRyYW5z
YWN0aW9uKCk7CiAKICAgICBib29sIGlzTWFpbkZyYW1lID0gZnJhbWUtPmlzTWFpbkZyYW1lKCk7
CkBAIC03MTE2LDQ1ICs3MDY4LDYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVFdmVu
dCh1aW50MzJfdCBvcGFxdWVUeXBlLCBib29sIGhhbmRsZWQpCiAgICAgfQogfQogCi12b2lkIFdl
YlBhZ2VQcm94eTo6dm9pZENhbGxiYWNrKENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKLXsKLSAgICBh
dXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3MudGFrZTxWb2lkQ2FsbGJhY2s+KGNhbGxiYWNrSUQp
OwotICAgIGlmICghY2FsbGJhY2spIHsKLSAgICAgICAgLy8gRklYTUU6IExvZyBlcnJvciBvciBh
c3NlcnQuCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBjYWxsYmFjay0+cGVyZm9ybUNh
bGxiYWNrKCk7Ci19Ci0KLXZvaWQgV2ViUGFnZVByb3h5OjpzdHJpbmdDYWxsYmFjayhjb25zdCBT
dHJpbmcmIHJlc3VsdFN0cmluZywgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQotewotICAgIGF1dG8g
Y2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPFN0cmluZ0NhbGxiYWNrPihjYWxsYmFja0lEKTsK
LSAgICBpZiAoIWNhbGxiYWNrKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBMb2cgZXJyb3Igb3IgYXNz
ZXJ0LgotICAgICAgICAvLyB0aGlzIGNhbiB2YWxpZGx5IGhhcHBlbiBpZiBhIGxvYWQgaW52YWxp
ZGF0ZWQgdGhlIGNhbGxiYWNrLCB0aG91Z2gKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IG1fbG9hZERlcGVuZGVudFN0cmluZ0NhbGxiYWNrSURzLnJlbW92ZShjYWxsYmFja0lEKTsKLQot
ICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUocmVzdWx0U3RyaW5n
LmltcGwoKSk7Ci19Ci0KLXZvaWQgV2ViUGFnZVByb3h5OjppbnZhbGlkYXRlU3RyaW5nQ2FsbGJh
Y2soQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQotewotICAgIGF1dG8gY2FsbGJhY2sgPSBtX2NhbGxi
YWNrcy50YWtlPFN0cmluZ0NhbGxiYWNrPihjYWxsYmFja0lEKTsKLSAgICBpZiAoIWNhbGxiYWNr
KSB7Ci0gICAgICAgIC8vIEZJWE1FOiBMb2cgZXJyb3Igb3IgYXNzZXJ0LgotICAgICAgICAvLyB0
aGlzIGNhbiB2YWxpZGx5IGhhcHBlbiBpZiBhIGxvYWQgaW52YWxpZGF0ZWQgdGhlIGNhbGxiYWNr
LCB0aG91Z2gKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIG1fbG9hZERlcGVuZGVudFN0
cmluZ0NhbGxiYWNrSURzLnJlbW92ZShjYWxsYmFja0lEKTsKLQotICAgIGNhbGxiYWNrLT5pbnZh
bGlkYXRlKCk7Ci19Ci0KIHZvaWQgV2ViUGFnZVByb3h5OjplZGl0b3JTdGF0ZUNoYW5nZWQoY29u
c3QgRWRpdG9yU3RhdGUmIGVkaXRvclN0YXRlKQogewogICAgIHVwZGF0ZUVkaXRvclN0YXRlKGVk
aXRvclN0YXRlKTsKQEAgLTc1NTgsOSArNzQ3MSw2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXNl
dFN0YXRlKFJlc2V0U3RhdGVSZWFzb24gcmVzZXRTdGF0ZVJlYXNvbikKICAgICAgICAgYnJlYWs7
CiAgICAgfQogCi0gICAgbV9jYWxsYmFja3MuaW52YWxpZGF0ZShlcnJvcik7Ci0gICAgbV9sb2Fk
RGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHMuY2xlYXIoKTsKLQogICAgIGZvciAoYXV0byYgZWRp
dENvbW1hbmQgOiBzdGQ6OmV4Y2hhbmdlKG1fZWRpdENvbW1hbmRTZXQsIHsgfSkpCiAgICAgICAg
IGVkaXRDb21tYW5kLT5pbnZhbGlkYXRlKCk7CiAKQEAgLTkyMzUsMTggKzkxNDUsMTQgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmRpZEVuZE1hZ25pZmljYXRpb25HZXN0dXJlKCkKIAogI2VuZGlmCiAK
LXZvaWQgV2ViUGFnZVByb3h5OjppbnN0YWxsQWN0aXZpdHlTdGF0ZUNoYW5nZUNvbXBsZXRpb25I
YW5kbGVyKEZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFn
ZVByb3h5OjppbnN0YWxsQWN0aXZpdHlTdGF0ZUNoYW5nZUNvbXBsZXRpb25IYW5kbGVyKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIWhh
c1J1bm5pbmdQcm9jZXNzKCkpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gdm9pZENhbGxiYWNrID0gVm9pZENhbGxiYWNr
OjpjcmVhdGUoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
IChhdXRvKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Ci0gICAgfSwgbV9wcm9jZXNz
LT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6aW5zdGFsbEFj
dGl2aXR5U3RhdGVDaGFuZ2VDb21wbGV0aW9uSGFuZGxlciJfcykpOwotICAgIGF1dG8gY2FsbGJh
Y2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKHZvaWRDYWxsYmFjaykpOwotICAgIG1fbmV4
dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja3MuYXBwZW5kKGNhbGxiYWNrSUQpOworICAgIG1f
bmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja3MuYXBwZW5kKFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmltYWdlT3JNZWRpYURvY3VtZW50
U2l6ZUNoYW5nZWQoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgbmV3U2l6ZSkKQEAgLTk2MjAsMzIg
Kzk1MjYsMjAgQEAgUmVmUHRyPEFQSTo6QXR0YWNobWVudD4gV2ViUGFnZVByb3h5OjphdHRhY2ht
ZW50Rm9ySWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW4KICAgICByZXR1cm4gbV9hdHRhY2ht
ZW50SWRlbnRpZmllclRvQXR0YWNobWVudE1hcC5nZXQoaWRlbnRpZmllcik7CiB9CiAKLXZvaWQg
V2ViUGFnZVByb3h5OjppbnNlcnRBdHRhY2htZW50KFJlZjxBUEk6OkF0dGFjaG1lbnQ+JiYgYXR0
YWNobWVudCwgRnVuY3Rpb248dm9pZChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFjaykK
K3ZvaWQgV2ViUGFnZVByb3h5OjppbnNlcnRBdHRhY2htZW50KFJlZjxBUEk6OkF0dGFjaG1lbnQ+
JiYgYXR0YWNobWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrKQogewot
ICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgewotICAgICAgICBjYWxsYmFjayhDYWxsYmFj
a0Jhc2U6OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQogICAgIGF1dG8gYXR0YWNobWVudElkZW50aWZpZXIgPSBhdHRhY2htZW50LT5pZGVudGlm
aWVyKCk7Ci0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2Fs
bGJhY2spLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFn
ZVByb3h5OjppbnNlcnRBdHRhY2htZW50Il9zKSk7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6SW5zZXJ0QXR0YWNobWVudChhdHRhY2htZW50SWRlbnRpZmllciwgYXR0YWNobWVudC0+Zmls
ZVNpemVGb3JEaXNwbGF5KCksIGF0dGFjaG1lbnQtPmZpbGVOYW1lKCksIGF0dGFjaG1lbnQtPmNv
bnRlbnRUeXBlKCksIGNhbGxiYWNrSUQpKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6OldlYlBhZ2U6Okluc2VydEF0dGFjaG1lbnQoYXR0YWNobWVudElkZW50aWZpZXIsIGF0dGFj
aG1lbnQtPmZpbGVTaXplRm9yRGlzcGxheSgpLCBhdHRhY2htZW50LT5maWxlTmFtZSgpLCBhdHRh
Y2htZW50LT5jb250ZW50VHlwZSgpKSwgV1RGTW92ZShjYWxsYmFjaykpOwogICAgIG1fYXR0YWNo
bWVudElkZW50aWZpZXJUb0F0dGFjaG1lbnRNYXAuc2V0KGF0dGFjaG1lbnRJZGVudGlmaWVyLCBX
VEZNb3ZlKGF0dGFjaG1lbnQpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZUF0dGFj
aG1lbnRBdHRyaWJ1dGVzKGNvbnN0IEFQSTo6QXR0YWNobWVudCYgYXR0YWNobWVudCwgRnVuY3Rp
b248dm9pZChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViUGFnZVBy
b3h5Ojp1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25zdCBBUEk6OkF0dGFjaG1lbnQmIGF0
dGFjaG1lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFjaykKIHsKLSAgICBp
ZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKLSAgICAgICAgY2FsbGJhY2soQ2FsbGJhY2tCYXNl
OjpFcnJvcjo6T3duZXJXYXNJbnZhbGlkYXRlZCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
ICAgICBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZTsKICAgICBp
ZiAoYXV0byBkYXRhID0gYXR0YWNobWVudC5lbmNsb3NpbmdJbWFnZURhdGEoKSkKICAgICAgICAg
ZGF0YVJlZmVyZW5jZSA9IHsgKmRhdGEgfTsKIAotICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2Fs
bGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNr
Z3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6dXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMi
X3MpKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVBdHRhY2htZW50QXR0cmli
dXRlcyhhdHRhY2htZW50LmlkZW50aWZpZXIoKSwgYXR0YWNobWVudC5maWxlU2l6ZUZvckRpc3Bs
YXkoKSwgYXR0YWNobWVudC5jb250ZW50VHlwZSgpLCBhdHRhY2htZW50LmZpbGVOYW1lKCksIFdU
Rk1vdmUoZGF0YVJlZmVyZW5jZSksIGNhbGxiYWNrSUQpKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGF0dGFjaG1l
bnQuaWRlbnRpZmllcigpLCBhdHRhY2htZW50LmZpbGVTaXplRm9yRGlzcGxheSgpLCBhdHRhY2ht
ZW50LmNvbnRlbnRUeXBlKCksIGF0dGFjaG1lbnQuZmlsZU5hbWUoKSwgV1RGTW92ZShkYXRhUmVm
ZXJlbmNlKSksIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAogI2lmIEhBVkUoUVVJQ0tMT09LX1RI
VU1CTkFJTElORykKQEAgLTk4MDEsNyArOTY5NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRJ
bnNlcnRBdHRhY2htZW50V2l0aElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBj
CiAgICAgcGFnZUNsaWVudCgpLmRpZEluc2VydEF0dGFjaG1lbnQoYXR0YWNobWVudC5nZXQoKSwg
c291cmNlKTsKIAogICAgIGlmICghYXR0YWNobWVudC0+aXNFbXB0eSgpICYmIGhhc0VuY2xvc2lu
Z0ltYWdlKQotICAgICAgICB1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhhdHRhY2htZW50Lmdl
dCgpLCBbXSAoYXV0bykgeyB9KTsKKyAgICAgICAgdXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMo
YXR0YWNobWVudC5nZXQoKSwgW10geyB9KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJl
bW92ZUF0dGFjaG1lbnRXaXRoSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGY0YzM5ZWI4ZTU0Mzg2ZTQ4
YjhlMmM4MWVjOTkwNmVlNDQ4YjE3MTcuLjMxNGRhMzU0YTc0Y2IxOWVjYTQxN2M0NGU2ODk0OGQ5
MGRiYWI3MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0zODAs
OCArMzgwLDYgQEAgZW51bSBjbGFzcyBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IDogYm9v
bDsKIGVudW0gY2xhc3MgVW5kb09yUmVkbyA6IGJvb2w7CiBlbnVtIGNsYXNzIFdlYkNvbnRlbnRN
b2RlIDogdWludDhfdDsKIAotdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgU3RyaW5nJj4g
U3RyaW5nQ2FsbGJhY2s7Ci0KICNpZiBIQVZFKFZJU0lCSUxJVFlfUFJPUEFHQVRJT05fVklFVykK
IHVzaW5nIExheWVySG9zdGluZ0NvbnRleHRJRCA9IHVpbnQzMl90OwogI2VuZGlmCkBAIC03NjQs
NyArNzYyLDcgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBv
aW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNl
ZEVsZW1lbnQsIFJlc3BlY3RTZWxlY3Rpb25BbmNob3IsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYpOwogICAgIHZvaWQgdXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50QW5kQm91
bmRhcnkoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQsIFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSwg
Ym9vbCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIHJlcXVlc3RBdXRvY29ycmVjdGlvbkRhdGEoY29uc3Qg
U3RyaW5nJiB0ZXh0Rm9yQXV0b2NvcnJlY3Rpb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vi
QXV0b2NvcnJlY3Rpb25EYXRhKT4mJik7Ci0gICAgdm9pZCBhcHBseUF1dG9jb3JyZWN0aW9uKGNv
bnN0IFN0cmluZyYgY29ycmVjdGlvbiwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbFRleHQsIFdURjo6
RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwor
ICAgIHZvaWQgYXBwbHlBdXRvY29ycmVjdGlvbihjb25zdCBTdHJpbmcmIGNvcnJlY3Rpb24sIGNv
bnN0IFN0cmluZyYgb3JpZ2luYWxUZXh0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0
cmluZyYpPiYmKTsKICAgICBib29sIGFwcGx5QXV0b2NvcnJlY3Rpb24oY29uc3QgU3RyaW5nJiBj
b3JyZWN0aW9uLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVGV4dCk7CiAgICAgdm9pZCByZXF1ZXN0
QXV0b2NvcnJlY3Rpb25Db250ZXh0KCk7CiAgICAgdm9pZCBoYW5kbGVBdXRvY29ycmVjdGlvbkNv
bnRleHQoY29uc3QgV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0Jik7CkBAIC0xMTE0LDIyICsxMTEy
LDIyIEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZEZhaWxUb0ZpbmRTdHJpbmcoY29uc3QgU3RyaW5n
Jik7CiAgICAgdm9pZCBkaWRGaW5kU3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmLCBjb25zdCBW
ZWN0b3I8VmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+PiYgbWF0Y2hSZWN0cywgaW50MzJfdCBmaXJz
dEluZGV4QWZ0ZXJTZWxlY3Rpb24pOwogCi0gICAgdm9pZCBnZXRDb250ZW50c0FzU3RyaW5nKENv
bnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXMsIFdURjo6RnVuY3Rpb248dm9pZChjb25z
dCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CisgICAgdm9pZCBnZXRDb250ZW50
c0FzU3RyaW5nKENvbnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXMsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
IHZvaWQgZ2V0Q29udGVudHNBc0F0dHJpYnV0ZWRTdHJpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBXZWJDb3JlOjpBdHRyaWJ1dGVkU3RyaW5nJik+JiYpOwogI2VuZGlmCi0gICAgdm9p
ZCBnZXRCeXRlY29kZVByb2ZpbGUoV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBD
YWxsYmFja0Jhc2U6OkVycm9yKT4mJik7Ci0gICAgdm9pZCBnZXRTYW1wbGluZ1Byb2ZpbGVyT3V0
cHV0KFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJv
cik+JiYpOworICAgIHZvaWQgZ2V0Qnl0ZWNvZGVQcm9maWxlKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgU3RyaW5nJik+JiYpOworICAgIHZvaWQgZ2V0U2FtcGxpbmdQcm9maWxlck91dHB1
dChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKIAogI2lmIEVOQUJM
RShNSFRNTCkKICAgICB2b2lkIGdldENvbnRlbnRzQXNNSFRNTERhdGEoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChBUEk6OkRhdGEqKT4mJik7CiAjZW5kaWYKICAgICB2b2lkIGdldE1haW5SZXNvdXJj
ZURhdGFPZkZyYW1lKFdlYkZyYW1lUHJveHkqLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6
RGF0YSopPiYmKTsKICAgICB2b2lkIGdldFJlc291cmNlRGF0YUZyb21GcmFtZShXZWJGcmFtZVBy
b3h5JiwgQVBJOjpVUkwqLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6RGF0YSopPiYmKTsK
LSAgICB2b2lkIGdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKFdURjo6RnVuY3Rp
b248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwotICAgIHZv
aWQgZ2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKFdURjo6RnVuY3Rpb248dm9pZCAoY29u
c3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAgIHZvaWQgZ2V0UmVuZGVy
VHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBT
dHJpbmcmKT4mJik7CisgICAgdm9pZCBnZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJik7CiAgICAgdm9pZCBnZXRTZWxl
Y3Rpb25Bc1dlYkFyY2hpdmVEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJOjpEYXRhKik+
JiYpOwotICAgIHZvaWQgZ2V0U291cmNlRm9yRnJhbWUoV2ViRnJhbWVQcm94eSosIFdURjo6RnVu
Y3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAg
IHZvaWQgZ2V0U291cmNlRm9yRnJhbWUoV2ViRnJhbWVQcm94eSosIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOwogICAgIHZvaWQgZ2V0V2ViQXJjaGl2ZU9mRnJhbWUo
V2ViRnJhbWVQcm94eSosIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJOjpEYXRhKik+JiYpOwog
ICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQ
YXJhbWV0ZXJzJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8UmVmUHRyPEFQSTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgV2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4mJik+JiYp
OwogICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKFdlYkNvcmU6OlJ1
bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
cj4sIEFQSTo6Q29udGVudFdvcmxkJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxS
ZWZQdHI8QVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBXZWJDb3JlOjpFeGNlcHRpb25EZXRh
aWxzPiYmKT4mJik7CkBAIC0xNDc3LDcgKzE0NzUsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIHNj
cm9sbGluZ1VwZGF0ZXNEaXNhYmxlZEZvclRlc3RpbmcoKTsKIAotICAgIHZvaWQgaW5zdGFsbEFj
dGl2aXR5U3RhdGVDaGFuZ2VDb21wbGV0aW9uSGFuZGxlcihGdW5jdGlvbjx2b2lkKCk+JiYpOwor
ICAgIHZvaWQgaW5zdGFsbEFjdGl2aXR5U3RhdGVDaGFuZ2VDb21wbGV0aW9uSGFuZGxlcihDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAjaWYgVVNFKFVOSUZJRURfVEVYVF9DSEVDS0lO
RykKICAgICB2b2lkIGNoZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0IFN0cmluZyYgdGV4dCwgT3B0
aW9uU2V0PFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGU+IGNoZWNraW5nVHlwZXMsIGludDMyX3Qg
aW5zZXJ0aW9uUG9pbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OlRl
eHRDaGVja2luZ1Jlc3VsdD4mJik+JiYpOwpAQCAtMTYxNSw4ICsxNjEzLDggQEAgcHVibGljOgog
CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICBSZWZQdHI8QVBJOjpBdHRhY2ht
ZW50PiBhdHRhY2htZW50Rm9ySWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpIGNv
bnN0OwotICAgIHZvaWQgaW5zZXJ0QXR0YWNobWVudChSZWY8QVBJOjpBdHRhY2htZW50PiYmLCBG
dW5jdGlvbjx2b2lkKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKLSAgICB2b2lkIHVwZGF0ZUF0
dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IEFQSTo6QXR0YWNobWVudCYsIEZ1bmN0aW9uPHZvaWQo
Q2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAgIHZvaWQgaW5zZXJ0QXR0YWNobWVudChSZWY8
QVBJOjpBdHRhY2htZW50PiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZv
aWQgdXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoY29uc3QgQVBJOjpBdHRhY2htZW50JiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNlcmlhbGl6ZWRBdHRhY2htZW50
RGF0YUZvcklkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiYmKT4mJik7
CiAgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpOwog
ICAgIHZvaWQgZGlkSW52YWxpZGF0ZURhdGFGb3JBdHRhY2htZW50KEFQSTo6QXR0YWNobWVudCYp
OwpAQCAtMjE1MywxMCArMjE1MSw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaXNjYXJkUXVldWVk
TW91c2VFdmVudHMoKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZUV2ZW50KHVpbnQzMl90IG9wYXF1
ZVR5cGUsIGJvb2wgaGFuZGxlZCk7Ci0KLSAgICB2b2lkIHZvaWRDYWxsYmFjayhDYWxsYmFja0lE
KTsKLSAgICB2b2lkIHN0cmluZ0NhbGxiYWNrKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrSUQpOwot
ICAgIHZvaWQgaW52YWxpZGF0ZVN0cmluZ0NhbGxiYWNrKENhbGxiYWNrSUQpOwogI2lmIFBMQVRG
T1JNKE1BQykKICAgICB2b2lkIGRpZFVwZGF0ZVJlbmRlcmluZ0FmdGVyQ29tbWl0dGluZ0xvYWQo
KTsKICAgICB2b2lkIGZvbnRBdFNlbGVjdGlvbkNhbGxiYWNrKGNvbnN0IEZvbnRJbmZvJiwgZG91
YmxlLCBib29sLCBDYWxsYmFja0lEKTsKQEAgLTIyMzMsOCArMjIyNyw2IEBAIHByaXZhdGU6CiAg
ICAgUmV0YWluUHRyPE5TQXJyYXk+IG1fZGF0YURldGVjdGlvblJlc3VsdHM7CiAjZW5kaWYKIAot
ICAgIHZvaWQgY2xlYXJMb2FkRGVwZW5kZW50Q2FsbGJhY2tzKCk7Ci0KICAgICB2b2lkIHBlcmZv
cm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbiwgV2ViQ29yZTo6RHJh
Z0RhdGEmLCBjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFtZSwgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlJiYsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5JiYpOwogCiAgICAgdm9pZCB1
cGRhdGVCYWNraW5nU3RvcmVEaXNjYXJkYWJsZVN0YXRlKCk7CkBAIC0yNDg0LDkgKzI0NzYsNiBA
QCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3JQcm94eT4gbV9jcmVkZW50aWFsc01lc3NlbmdlcjsKICNlbmRpZgogCi0gICAgQ2FsbGJhY2tN
YXAgbV9jYWxsYmFja3M7Ci0gICAgSGFzaFNldDxDYWxsYmFja0lEPiBtX2xvYWREZXBlbmRlbnRT
dHJpbmdDYWxsYmFja0lEczsKLQogICAgIEhhc2hTZXQ8V2ViRWRpdENvbW1hbmRQcm94eSo+IG1f
ZWRpdENvbW1hbmRTZXQ7CiAKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTI3NjQsNyArMjc1Myw3
IEBAIHByaXZhdGU6CiAKICAgICBPcHRpb25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6Rmxh
Zz4gbV9wb3RlbnRpYWxseUNoYW5nZWRBY3Rpdml0eVN0YXRlRmxhZ3M7CiAgICAgYm9vbCBtX2Fj
dGl2aXR5U3RhdGVDaGFuZ2VXYW50c1N5bmNocm9ub3VzUmVwbHkgeyBmYWxzZSB9OwotICAgIFZl
Y3RvcjxDYWxsYmFja0lEPiBtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tzOworICAg
IFZlY3RvcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+PiBtX25leHRBY3Rpdml0eVN0YXRlQ2hh
bmdlQ2FsbGJhY2tzOwogCiAgICAgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZs
YWdzIG1fbWVkaWFTdGF0ZSB7IFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6OklzTm90UGxheWluZyB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMu
aW4KaW5kZXggNDkxOWJjOTg4ZTljNWZjYTcyZmZjOGMyMWEzZmMxNDMwYjI4YzA1YS4uMDViZjIx
YmZmYjdkN2NlOWQwYjEwNDIwMjc5ZTc5ZThlMTgwZTVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMTYyLDEwICsxNjIsNiBA
QCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgICMgRm9ybXMgbWVzc2FnZXMKICAgICBX
aWxsU3VibWl0Rm9ybShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyIHNvdXJjZUZyYW1lSUQsIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBT
dHJpbmc+PiB0ZXh0RmllbGRWYWx1ZXMsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6VXNl
ckRhdGEgdXNlckRhdGEpCiAKLSAgICAjIENhbGxiYWNrIG1lc3NhZ2VzCi0gICAgVm9pZENhbGxi
YWNrKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQotICAgIFN0cmluZ0NhbGxiYWNrKFN0
cmluZyByZXN1bHRTdHJpbmcsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQotICAgIElu
dmFsaWRhdGVTdHJpbmdDYWxsYmFjayhXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIEludGVycHJldEtleUV2ZW50KHN0cnVjdCBXZWJL
aXQ6OkVkaXRvclN0YXRlIHN0YXRlLCBib29sIGlzQ2hhckV2ZW50KSAtPiAoYm9vbCBoYW5kbGVk
KSBTeW5jaHJvbm91cwogICAgIERpZFJlY2VpdmVQb3NpdGlvbkluZm9ybWF0aW9uKHN0cnVjdCBX
ZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uIGluZm9ybWF0aW9uKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24ubW0KaW5kZXggY2VjODdjNThmMDExY2E3ZGE0OTkzY2YxNTNjMWQ2ZmU3MjQ1YTRiOC4u
N2Q3MTBhMWYwN2E2MWRkZTk5OTI5NWFmNmUzNjVlY2E4YjI3MWI1MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1t
CkBAIC0zMjI2LDEwICszMjI2LDcgQEAgRk9SX0VBQ0hfUFJJVkFURV9XS0NPTlRFTlRWSUVXX0FD
VElPTihGT1JXQVJEX0FDVElPTl9UT19XS1dFQlZJRVcpCiAtICh2b2lkKV9zaGFyZUZvcldlYlZp
ZXc6KGlkKXNlbmRlcgogewogICAgIFJldGFpblB0cjxXS0NvbnRlbnRWaWV3PiB2aWV3ID0gc2Vs
ZjsKLSAgICBfcGFnZS0+Z2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKFt2aWV3XShjb25z
dCBTdHJpbmcmIHN0cmluZywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7Ci0g
ICAgICAgIGlmIChlcnJvciAhPSBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpCi0g
ICAgICAgICAgICByZXR1cm47Ci0KKyAgICBfcGFnZS0+Z2V0U2VsZWN0aW9uT3JDb250ZW50c0Fz
U3RyaW5nKFt2aWV3XShjb25zdCBTdHJpbmcmIHN0cmluZykgewogICAgICAgICBpZiAoIXZpZXct
Pl90ZXh0SW50ZXJhY3Rpb25Bc3Npc3RhbnQgfHwgIXN0cmluZyB8fCB2aWV3LT5fcGFnZS0+ZWRp
dG9yU3RhdGUoKS5pc01pc3NpbmdQb3N0TGF5b3V0RGF0YSkKICAgICAgICAgICAgIHJldHVybjsK
IApAQCAtMzI0MywxMSArMzI0MCwxMSBAQCBGT1JfRUFDSF9QUklWQVRFX1dLQ09OVEVOVFZJRVdf
QUNUSU9OKEZPUldBUkRfQUNUSU9OX1RPX1dLV0VCVklFVykKIAogLSAodm9pZClfdHJhbnNsYXRl
Rm9yV2ViVmlldzooaWQpc2VuZGVyCiB7Ci0gICAgX3BhZ2UtPmdldFNlbGVjdGlvbk9yQ29udGVu
dHNBc1N0cmluZyhbd2Vha1NlbGYgPSBXZWFrT2JqQ1B0cjxXS0NvbnRlbnRWaWV3PihzZWxmKV0g
KGNvbnN0IFN0cmluZyYgc3RyaW5nLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3Ip
IHsKKyAgICBfcGFnZS0+Z2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKFt3ZWFrU2VsZiA9
IFdlYWtPYmpDUHRyPFdLQ29udGVudFZpZXc+KHNlbGYpXSAoY29uc3QgU3RyaW5nJiBzdHJpbmcp
IHsKICAgICAgICAgaWYgKCF3ZWFrU2VsZikKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAg
ICBpZiAoZXJyb3IgIT0gV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lIHx8IHN0cmlu
Zy5pc0VtcHR5KCkpCisgICAgICAgIGlmIChzdHJpbmcuaXNFbXB0eSgpKQogICAgICAgICAgICAg
cmV0dXJuOwogCiAgICAgICAgIGF1dG8gc3Ryb25nU2VsZiA9IHdlYWtTZWxmLmdldCgpOwpAQCAt
MzgyOSw5ICszODI2LDcgQEAgV0VCQ09SRV9DT01NQU5EX0ZPUl9XRUJWSUVXKHBhc3RlQW5kTWF0
Y2hTdHlsZSk7CiAjZW5kaWYKIAogICAgIFJldGFpblB0cjxXS0NvbnRlbnRWaWV3PiB2aWV3ID0g
c2VsZjsKLSAgICBfcGFnZS0+Z2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKFt2aWV3XShj
b25zdCBTdHJpbmcmIHN0cmluZywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7
Ci0gICAgICAgIGlmIChlcnJvciAhPSBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUp
Ci0gICAgICAgICAgICByZXR1cm47CisgICAgX3BhZ2UtPmdldFNlbGVjdGlvbk9yQ29udGVudHNB
c1N0cmluZyhbdmlld10oY29uc3QgU3RyaW5nJiBzdHJpbmcpIHsKICAgICAgICAgaWYgKCFzdHJp
bmcpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTM4NDMsOSArMzgzOCw3IEBAIFdFQkNPUkVf
Q09NTUFORF9GT1JfV0VCVklFVyhwYXN0ZUFuZE1hdGNoU3R5bGUpOwogewogICAgIFJldGFpblB0
cjxXS0NvbnRlbnRWaWV3PiB2aWV3ID0gc2VsZjsKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3
ZWJWaWV3ID0gX3dlYlZpZXcuZ2V0KCk7Ci0gICAgX3BhZ2UtPmdldFNlbGVjdGlvbk9yQ29udGVu
dHNBc1N0cmluZyhbdmlldywgd2ViVmlld10oY29uc3QgU3RyaW5nJiBzdHJpbmcsIFdlYktpdDo6
Q2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgewotICAgICAgICBpZiAoZXJyb3IgIT0gV2ViS2l0
OjpDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKQotICAgICAgICAgICAgcmV0dXJuOworICAgIF9w
YWdlLT5nZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcoW3ZpZXcsIHdlYlZpZXddKGNvbnN0
IFN0cmluZyYgc3RyaW5nKSB7CiAgICAgICAgIFt3ZWJWaWV3IF9hY2Nlc3NpYmlsaXR5RGlkR2V0
U3BlYWtTZWxlY3Rpb25Db250ZW50OnN0cmluZ107CiAgICAgICAgIGlmIChbdmlldyByZXNwb25k
c1RvU2VsZWN0b3I6QHNlbGVjdG9yKGFjY2Vzc2liaWxpdHlTcGVha1NlbGVjdGlvblNldENvbnRl
bnQ6KV0pCiAgICAgICAgICAgICBbdmlldyBhY2Nlc3NpYmlsaXR5U3BlYWtTZWxlY3Rpb25TZXRD
b250ZW50OnN0cmluZ107CkBAIC00NDExLDcgKzQ0MDQsNyBAQCBzdGF0aWMgdm9pZCBzZWxlY3Rp
b25DaGFuZ2VkV2l0aFRvdWNoKFdLQ29udGVudFZpZXcgKnZpZXcsIGNvbnN0IFdlYkNvcmU6Oklu
dFBvaQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgX3BhZ2UtPmFwcGx5QXV0b2NvcnJl
Y3Rpb24oY29ycmVjdGlvbiwgaW5wdXQsIFt2aWV3ID0gcmV0YWluUHRyKHNlbGYpLCBjb21wbGV0
aW9uID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byYgc3RyaW5nLCBhdXRv
IGVycm9yKSB7CisgICAgX3BhZ2UtPmFwcGx5QXV0b2NvcnJlY3Rpb24oY29ycmVjdGlvbiwgaW5w
dXQsIFt2aWV3ID0gcmV0YWluUHRyKHNlbGYpLCBjb21wbGV0aW9uID0gbWFrZUJsb2NrUHRyKGNv
bXBsZXRpb25IYW5kbGVyKV0oYXV0byYgc3RyaW5nKSB7CiAgICAgICAgIGlmIChjb21wbGV0aW9u
KQogICAgICAgICAgICAgY29tcGxldGlvbighc3RyaW5nLmlzTnVsbCgpID8gW1dLQXV0b2NvcnJl
Y3Rpb25SZWN0cyBhdXRvY29ycmVjdGlvblJlY3RzV2l0aEZpcnN0Q0dSZWN0OnZpZXctPl9hdXRv
Y29ycmVjdGlvbkRhdGEudGV4dEZpcnN0UmVjdCBsYXN0Q0dSZWN0OnZpZXctPl9hdXRvY29ycmVj
dGlvbkRhdGEudGV4dExhc3RSZWN0XSA6IG5pbCk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCBlMTY5YTcyZmM5YjdlNjA2
ODBiNGRiNDE5YmU5ZmQ0Mzg1ZjZhMWEyLi42ODAxMThjOGZkZDg3YjIzNDdkY2E1YzcwN2U5NzA4
MjNhYzkwYzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFn
ZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJv
eHlJT1MubW0KQEAgLTQzMCwxNSArNDMwLDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RB
dXRvY29ycmVjdGlvbkRhdGEoY29uc3QgU3RyaW5nJiB0ZXh0Rm9yQXV0b2NvcnJlY3Rpb24KICAg
ICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3RBdXRvY29ycmVj
dGlvbkRhdGEodGV4dEZvckF1dG9jb3JyZWN0aW9uKSwgV1RGTW92ZShjYWxsYmFjaykpOwogfQog
Ci12b2lkIFdlYlBhZ2VQcm94eTo6YXBwbHlBdXRvY29ycmVjdGlvbihjb25zdCBTdHJpbmcmIGNv
cnJlY3Rpb24sIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxUZXh0LCBXVEY6OkZ1bmN0aW9uPHZvaWQg
KGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24p
Cit2b2lkIFdlYlBhZ2VQcm94eTo6YXBwbHlBdXRvY29ycmVjdGlvbihjb25zdCBTdHJpbmcmIGNv
cnJlY3Rpb24sIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxUZXh0LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNhbGxiYWNrKQogewotICAgIGlmICghaGFzUnVubmluZ1By
b2Nlc3MoKSkgewotICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKFN0cmluZygpLCBDYWxsYmFja0Jh
c2U6OkVycm9yOjpVbmtub3duKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGF1dG8g
Y2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBt
X3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5Ojph
cHBseUF1dG9jb3JyZWN0aW9uIl9zKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpBcHBseUF1dG9jb3JyZWN0aW9uKGNvcnJlY3Rpb24sIG9yaWdpbmFsVGV4dCwgY2Fs
bGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6
OldlYlBhZ2U6OkFwcGx5QXV0b2NvcnJlY3Rpb24oY29ycmVjdGlvbiwgb3JpZ2luYWxUZXh0KSwg
V1RGTW92ZShjYWxsYmFjaykpOwogfQogCiBib29sIFdlYlBhZ2VQcm94eTo6YXBwbHlBdXRvY29y
cmVjdGlvbihjb25zdCBTdHJpbmcmIGNvcnJlY3Rpb24sIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxU
ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRl
ckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1RleHRGaW5kZXJDbGll
bnQubW0KaW5kZXggNmE3ZTYyMDdlZDU4Y2I4M2U4NmNjYjMzM2IxODZjOGY4MTNhNGFjMy4uMjk0
M2ViNmFlYTBkODljNGJjYjE1OTk5M2ZkMmFkMzc2NzExZjYxOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNsaWVudC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tUZXh0RmluZGVyQ2xpZW50Lm1tCkBAIC0yNDMsNyArMjQz
LDcgQEAgcHJpdmF0ZToKIHsKICAgICB2b2lkICheY29waWVkQ29tcGxldGlvbkhhbmRsZXIpKE5T
U3RyaW5nICopID0gQmxvY2tfY29weShjb21wbGV0aW9uSGFuZGxlcik7CiAKLSAgICBfcGFnZS0+
Z2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKFtjb3BpZWRDb21wbGV0aW9uSGFuZGxlcl0g
KGNvbnN0IFN0cmluZyYgc3RyaW5nLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpIHsKKyAg
ICBfcGFnZS0+Z2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKFtjb3BpZWRDb21wbGV0aW9u
SGFuZGxlcl0gKGNvbnN0IFN0cmluZyYgc3RyaW5nKSB7CiAgICAgICAgIGNvcGllZENvbXBsZXRp
b25IYW5kbGVyKHN0cmluZyk7CiAgICAgICAgIEJsb2NrX3JlbGVhc2UoY29waWVkQ29tcGxldGlv
bkhhbmRsZXIpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXIuaAppbmRleCBiNDg2YjI0NjM2NzYxZWQ4MDQ5NjZhOWUxOGY1OGNi
ZmQ1NjI4Y2Y1Li5hYTE2ODM0YzIxNjIzYWY5OWFiYWQ0ZWRhMWFkNDdlMTFhOGNmMDg3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaApA
QCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTm90aWZpY2F0aW9uQ2xpZW50Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luSGFzaC5oPgotI2luY2x1ZGUgPFdlYkNvcmUv
Vm9pZENhbGxiYWNrLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRp
b25DbGllbnQuaAppbmRleCAwMGNjMGEwOGQ5MjYwNGZkZGZiNWNhNjJmNmI4ODU5NWMzMWFiMGQy
Li44MWYxZGU0NjFmMWVjM2FiNjBjNjUxOWZlYmRmMDI4NzdmNmM4OTNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5v
dGlmaWNhdGlvbkNsaWVudC5oCkBAIC0zMyw3ICszMyw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2s7CiBjbGFzcyBTY3JpcHRFeGVj
dXRpb25Db250ZXh0OwotY2xhc3MgVm9pZENhbGxiYWNrOwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdy
YXBoaWNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcAppbmRleCBmYTE3ZGI2
NzdmZmRmMGQ0ZDhjMmZmMjU0ZGE1MjhlY2I3Yjk2YjkzLi4zZTk2N2E2ZjVjNmNkMzc1MTczZjUx
MzQ2MDdjYzVhZWU0Y2E4ODViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGlj
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRH
cmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCkBAIC0zODUsNyArMzg1
LDcgQEAgUmVmUHRyPERpc3BsYXlSZWZyZXNoTW9uaXRvcj4gRHJhd2luZ0FyZWFDb29yZGluYXRl
ZEdyYXBoaWNzOjpjcmVhdGVEaXNwbGF5UmVmcmUKICAgICByZXR1cm4gbV9sYXllclRyZWVIb3N0
LT5jcmVhdGVEaXNwbGF5UmVmcmVzaE1vbml0b3IoZGlzcGxheUlEKTsKIH0KIAotdm9pZCBEcmF3
aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3M6OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoT3B0aW9u
U2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+IGNoYW5nZWQsIEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCwg
Y29uc3QgVmVjdG9yPENhbGxiYWNrSUQ+JikKK3ZvaWQgRHJhd2luZ0FyZWFDb29yZGluYXRlZEdy
YXBoaWNzOjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpG
bGFnPiBjaGFuZ2VkLCBBY3Rpdml0eVN0YXRlQ2hhbmdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoY2hhbmdlZCAmIEFjdGl2aXR5
U3RhdGU6OklzVmlzaWJsZSkgewogICAgICAgICBpZiAobV93ZWJQYWdlLmlzVmlzaWJsZSgpKQpA
QCAtMzkzLDYgKzM5Myw3IEBAIHZvaWQgRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzOjph
Y3Rpdml0eVN0YXRlRGlkQ2hhbmdlKE9wdGlvblNldDxBY3Rpdml0eVN0CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIHN1c3BlbmRQYWludGluZygpOwogICAgIH0KKyAgICBjb21wbGV0aW9uSGFu
ZGxlcigpOwogfQogCiB2b2lkIERyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljczo6YXR0YWNo
Vmlld092ZXJsYXlHcmFwaGljc0xheWVyKEdyYXBoaWNzTGF5ZXIqIHZpZXdPdmVybGF5Um9vdExh
eWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRp
bmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFD
b29yZGluYXRlZEdyYXBoaWNzLmgKaW5kZXggYmI0MDk0YjUzMDY5ZmFiM2Y5MmE0ZDAzZjViNWNl
YTIyY2ExYzM3Mi4uZjk2YzRiYjU3NjM0ZmY0MDEwZWRlYmJhODUxZDY3ZWY5NGMwZjRiNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFw
aGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhQ29vcmRp
bmF0ZWRHcmFwaGljcy5oCkBAIC03Nyw3ICs3Nyw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgUmVm
UHRyPFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcj4gY3JlYXRlRGlzcGxheVJlZnJlc2hN
b25pdG9yKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheUlEKSBvdmVycmlkZTsKIAotICAgIHZvaWQg
YWN0aXZpdHlTdGF0ZURpZENoYW5nZShPcHRpb25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6
RmxhZz4sIEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCwgY29uc3QgVmVjdG9yPENhbGxiYWNrSUQ+JiAv
KiBjYWxsYmFja0lEcyAqLykgb3ZlcnJpZGU7CisgICAgdm9pZCBhY3Rpdml0eVN0YXRlRGlkQ2hh
bmdlKE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPiwgQWN0aXZpdHlTdGF0
ZUNoYW5nZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIG92ZXJyaWRlOwogICAgIHZv
aWQgYXR0YWNoVmlld092ZXJsYXlHcmFwaGljc0xheWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIq
KSBvdmVycmlkZTsKIAogICAgIC8vIElQQyBtZXNzYWdlIGhhbmRsZXJzLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKaW5kZXggMTZmZDNjMzY0ZmM3
ZWI5ZGI5ZjMxODU5ZjY3MmY0MjE1ZjU1YjVhYi4uNjRkNTMyOWI4NjYwOGJjMDJkNDY3Y2Q0M2Vj
ZGVmNzJiNTRhMjcxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvRHJhd2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9E
cmF3aW5nQXJlYS5oCkBAIC0xMjEsNyArMTIxLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoQWZ0ZXJFbnN1cmluZ1VwZGF0ZWRTY3JvbGxQb3NpdGlvbihXVEY6OkZ1bmN0
aW9uPHZvaWQgKCk+JiYpOwogCi0gICAgdmlydHVhbCB2b2lkIGFjdGl2aXR5U3RhdGVEaWRDaGFu
Z2UoT3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+LCBBY3Rpdml0eVN0YXRl
Q2hhbmdlSUQsIGNvbnN0IFZlY3RvcjxDYWxsYmFja0lEPiYpIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRl
OjpGbGFnPiwgQWN0aXZpdHlTdGF0ZUNoYW5nZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoKTsgfTsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0TGF5ZXJIb3N0aW5nTW9kZShMYXllckhvc3RpbmdNb2RlKSB7IH0KIAogICAg
IHZpcnR1YWwgYm9vbCBtYXJrTGF5ZXJzVm9sYXRpbGVJbW1lZGlhdGVseUlmUG9zc2libGUoKSB7
IHJldHVybiB0cnVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYS5oCmluZGV4IDI3ZjkzNmYzMTkwNGUxNTgzNDY0NTQxZjVkMDVhOTEwMzBj
MjEwNzUuLjYzMWYyYTYxMThiODBkMGY3MTk1ZTYwNzMyMmYxYTEwMmIyODhjYzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oCkBAIC0x
MDYsNyArMTA2LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgbWFpbkZyYW1lQ29udGVudFNpemVD
aGFuZ2VkKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSBvdmVycmlkZTsKIAotICAgIHZvaWQgYWN0
aXZpdHlTdGF0ZURpZENoYW5nZShPcHRpb25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6Rmxh
Zz4gY2hhbmdlZCwgQWN0aXZpdHlTdGF0ZUNoYW5nZUlELCBjb25zdCBWZWN0b3I8Q2FsbGJhY2tJ
RD4mIGNhbGxiYWNrSURzKSBvdmVycmlkZTsKKyAgICB2b2lkIGFjdGl2aXR5U3RhdGVEaWRDaGFu
Z2UoT3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+IGNoYW5nZWQsIEFjdGl2
aXR5U3RhdGVDaGFuZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsK
IAogICAgIGJvb2wgYWRkTWlsZXN0b25lc1RvRGlzcGF0Y2goT3B0aW9uU2V0PFdlYkNvcmU6Okxh
eW91dE1pbGVzdG9uZT4pIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWEubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUv
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KaW5kZXggZDgyMDU1ZmYyMDQ1NGQ1NWY5NThi
NGM1MDU3N2Q5ODg3OWI2NjBhMC4uNWFiZTk5ZjlmYjRlYmE3NWE5NWExZDFjODRmODFiY2EyNzBj
ZGE3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYS5tbQpAQCAtNDgzLDcgKzQ4Myw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWE6OkJhY2tpbmdTdG9yZUZsdXNoZXI6OmZsdXNoKCkKICAgICBtX2Nvbm5lY3Rpb24tPnNl
bmRNZXNzYWdlKFdURk1vdmUobV9jb21taXRFbmNvZGVyKSwgeyB9KTsKIH0KIAotdm9pZCBSZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZShPcHRpb25TZXQ8
V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZz4sIEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCBhY3Rp
dml0eVN0YXRlQ2hhbmdlSUQsIGNvbnN0IFZlY3RvcjxDYWxsYmFja0lEPiYgY2FsbGJhY2tJRHMp
Cit2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdl
KE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPiwgQWN0aXZpdHlTdGF0ZUNo
YW5nZUlEIGFjdGl2aXR5U3RhdGVDaGFuZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
IGNhbGxiYWNrKQogewogICAgIC8vIEZJWE1FOiBTaG91bGQgd2Ugc3VzcGVuZCBwYWludGluZyB3
aGlsZSBub3QgdmlzaWJsZSwgbGlrZSBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYT8gUHJv
YmFibHkuCiAKQEAgLTQ5NSw4ICs0OTUsNyBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhOjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKE9wdGlvblNldDxXZWJDb3JlOjpBY3RpdgogCiAg
ICAgLy8gRklYTUU6IFdlIG1heSB3YW50IHRvIG1hdGNoIGJlaGF2aW9yIGluIFRpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhIGJ5IGZpcmluZyB0aGVzZSBjYWxsYmFja3MgYWZ0ZXIgdGhlIG5l
eHQgY29tcG9zaXRpbmcgZmx1c2gsIHJhdGhlciB0aGFuIGltbWVkaWF0ZWx5IGFmdGVyCiAgICAg
Ly8gaGFuZGxpbmcgYW4gYWN0aXZpdHkgc3RhdGUgY2hhbmdlLgotICAgIGZvciAoYXV0byYgY2Fs
bGJhY2tJRCA6IGNhbGxiYWNrSURzKQotICAgICAgICBtX3dlYlBhZ2Uuc2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpWb2lkQ2FsbGJhY2soY2FsbGJhY2tJRCkpOworICAgIGNhbGxiYWNrKCk7
CiB9CiAKIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmFkZFRyYW5zYWN0aW9uQ2Fs
bGJhY2tJRChDYWxsYmFja0lEIGNhbGxiYWNrSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDc2M2JjYWI4Njk2MmM3OWI2NzJmYzMzMzEyM2M3
MTRlYzJjZTEzNjYuLmQyYjQyOTBlNTA0ZWVhODU2MWNjMTA3ZmZiYmU3MTgxZWViMDYwZTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC05MjMs
NyArOTIzLDcgQEAgdm9pZCBXZWJQYWdlOjpyZWluaXRpYWxpemVXZWJQYWdlKFdlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgIHNldFNpemVUb0NvbnRlbnRBdXRvU2l6
ZU1heGltdW1TaXplKHBhcmFtZXRlcnMuc2l6ZVRvQ29udGVudEF1dG9TaXplTWF4aW11bVNpemUp
OwogCiAgICAgaWYgKG1fYWN0aXZpdHlTdGF0ZSAhPSBwYXJhbWV0ZXJzLmFjdGl2aXR5U3RhdGUp
Ci0gICAgICAgIHNldEFjdGl2aXR5U3RhdGUocGFyYW1ldGVycy5hY3Rpdml0eVN0YXRlLCBBY3Rp
dml0eVN0YXRlQ2hhbmdlQXN5bmNocm9ub3VzLCBWZWN0b3I8Q2FsbGJhY2tJRD4oKSk7CisgICAg
ICAgIHNldEFjdGl2aXR5U3RhdGUocGFyYW1ldGVycy5hY3Rpdml0eVN0YXRlLCBBY3Rpdml0eVN0
YXRlQ2hhbmdlQXN5bmNocm9ub3VzLCBbXSB7IH0pOwogICAgIGlmIChtX2xheWVySG9zdGluZ01v
ZGUgIT0gcGFyYW1ldGVycy5sYXllckhvc3RpbmdNb2RlKQogICAgICAgICBzZXRMYXllckhvc3Rp
bmdNb2RlKHBhcmFtZXRlcnMubGF5ZXJIb3N0aW5nTW9kZSk7CiAKQEAgLTMzNjIsNyArMzM2Miw3
IEBAIHZvaWQgV2ViUGFnZTo6dmlzaWJpbGl0eURpZENoYW5nZSgpCiAgICAgfQogfQogCi12b2lk
IFdlYlBhZ2U6OnNldEFjdGl2aXR5U3RhdGUoT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+
IGFjdGl2aXR5U3RhdGUsIEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCBhY3Rpdml0eVN0YXRlQ2hhbmdl
SUQsIGNvbnN0IFZlY3RvcjxDYWxsYmFja0lEPiYgY2FsbGJhY2tJRHMpCit2b2lkIFdlYlBhZ2U6
OnNldEFjdGl2aXR5U3RhdGUoT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+IGFjdGl2aXR5
U3RhdGUsIEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFjaykKIHsKICAgICBMT0dfV0lUSF9TVFJFQU0o
QWN0aXZpdHlTdGF0ZSwgc3RyZWFtIDw8ICJXZWJQYWdlICIgPDwgaWRlbnRpZmllcigpLnRvVUlu
dDY0KCkgPDwgIiBzZXRBY3Rpdml0eVN0YXRlIHRvICIgPDwgYWN0aXZpdHlTdGF0ZSk7CiAKQEAg
LTMzODEsNyArMzM4MSw3IEBAIHZvaWQgV2ViUGFnZTo6c2V0QWN0aXZpdHlTdGF0ZShPcHRpb25T
ZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4gYWN0aXZpdHlTdGF0ZSwgQWN0CiAgICAgZm9yIChhdXRv
KiBwbHVnaW5WaWV3IDogbV9wbHVnaW5WaWV3cykKICAgICAgICAgcGx1Z2luVmlldy0+YWN0aXZp
dHlTdGF0ZURpZENoYW5nZShjaGFuZ2VkKTsKIAotICAgIG1fZHJhd2luZ0FyZWEtPmFjdGl2aXR5
U3RhdGVEaWRDaGFuZ2UoY2hhbmdlZCwgYWN0aXZpdHlTdGF0ZUNoYW5nZUlELCBjYWxsYmFja0lE
cyk7CisgICAgbV9kcmF3aW5nQXJlYS0+YWN0aXZpdHlTdGF0ZURpZENoYW5nZShjaGFuZ2VkLCBh
Y3Rpdml0eVN0YXRlQ2hhbmdlSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKICAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5wYWdlQWN0aXZpdHlTdGF0ZURpZENoYW5nZShtX2lkZW50aWZpZXIsIGNo
YW5nZWQpOwogCiAgICAgaWYgKGNoYW5nZWQgJiBBY3Rpdml0eVN0YXRlOjpJc0luV2luZG93KQpA
QCAtMzYwOCwxMiArMzYwOCwxMiBAQCB2b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJbkZyYW1l
SW5TY3JpcHRXb3JsZChSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZQogICAgIHJ1bkph
dmFTY3JpcHQod2ViRnJhbWUsIFdURk1vdmUocGFyYW1ldGVycyksIHdvcmxkRGF0YS5maXJzdCwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFdlYlBhZ2U6OmdldENvbnRl
bnRzQXNTdHJpbmcoQ29udGVudEFzU3RyaW5nSW5jbHVkZXNDaGlsZEZyYW1lcyBpbmNsdWRlQ2hp
bGRGcmFtZXMsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6Z2V0Q29udGVu
dHNBc1N0cmluZyhDb250ZW50QXNTdHJpbmdJbmNsdWRlc0NoaWxkRnJhbWVzIGluY2x1ZGVDaGls
ZEZyYW1lcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjYWxsYmFj
aykKIHsKICAgICBzd2l0Y2ggKGluY2x1ZGVDaGlsZEZyYW1lcykgewogICAgIGNhc2UgQ29udGVu
dEFzU3RyaW5nSW5jbHVkZXNDaGlsZEZyYW1lczo6Tm86IHsKICAgICAgICAgU3RyaW5nIHJlc3Vs
dFN0cmluZyA9IG1fbWFpbkZyYW1lLT5jb250ZW50c0FzU3RyaW5nKCk7Ci0gICAgICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U3RyaW5nQ2FsbGJhY2socmVzdWx0U3RyaW5nLCBjYWxs
YmFja0lEKSk7CisgICAgICAgIGNhbGxiYWNrKHJlc3VsdFN0cmluZyk7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KICAgICBjYXNlIENvbnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXM6Olll
czogewpAQCAtMzYyNyw3ICszNjI3LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRDb250ZW50c0FzU3Ry
aW5nKENvbnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXMgaW5jbHVkZUNoaWwKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6U3RyaW5nQ2FsbGJhY2soYnVpbGRlci50b1N0cmluZygpLCBjYWxsYmFja0lEKSk7CisgICAg
ICAgIGNhbGxiYWNrKGJ1aWxkZXIudG9TdHJpbmcoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
ICAgICB9CkBAIC0zNjQwLDEwICszNjQwLDkgQEAgdm9pZCBXZWJQYWdlOjpnZXRDb250ZW50c0Fz
TUhUTUxEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTaGFyZWRCdWYKIH0K
ICNlbmRpZgogCi12b2lkIFdlYlBhZ2U6OmdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0
aW9uKENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6Z2V0UmVuZGVyVHJlZUV4
dGVybmFsUmVwcmVzZW50YXRpb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcm
KT4mJiBjYWxsYmFjaykKIHsKLSAgICBTdHJpbmcgcmVzdWx0U3RyaW5nID0gcmVuZGVyVHJlZUV4
dGVybmFsUmVwcmVzZW50YXRpb24oKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OlN0cmluZ0NhbGxiYWNrKHJlc3VsdFN0cmluZywgY2FsbGJhY2tJRCkpOworICAgIGNhbGxiYWNr
KHJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKCkpOwogfQogCiBzdGF0aWMgRnJhbWUq
IGZyYW1lV2l0aFNlbGVjdGlvbihQYWdlKiBwYWdlKQpAQCAtMzY3MiwyMiArMzY3MSwyMiBAQCB2
b2lkIFdlYlBhZ2U6OmdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBJUEM6OkRhdAogICAgIGNhbGxiYWNrKGRhdGFSZWZlcmVuY2UpOwogfQog
Ci12b2lkIFdlYlBhZ2U6OmdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhDYWxsYmFja0lE
IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OmdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmlu
ZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNhbGxiYWNrKQogewog
ICAgIFdlYkZyYW1lKiBmb2N1c2VkT3JNYWluRnJhbWUgPSBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFt
ZShtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpKTsKICAgICBT
dHJpbmcgcmVzdWx0U3RyaW5nID0gZm9jdXNlZE9yTWFpbkZyYW1lLT5zZWxlY3Rpb25Bc1N0cmlu
ZygpOwogICAgIGlmIChyZXN1bHRTdHJpbmcuaXNFbXB0eSgpKQogICAgICAgICByZXN1bHRTdHJp
bmcgPSBmb2N1c2VkT3JNYWluRnJhbWUtPmNvbnRlbnRzQXNTdHJpbmcoKTsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OlN0cmluZ0NhbGxiYWNrKHJlc3VsdFN0cmluZywgY2FsbGJh
Y2tJRCkpOworICAgIGNhbGxiYWNrKHJlc3VsdFN0cmluZyk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6
Z2V0U291cmNlRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIENhbGxiYWNrSUQgY2Fs
bGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6Z2V0U291cmNlRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY2FsbGJh
Y2spCiB7CiAgICAgU3RyaW5nIHJlc3VsdFN0cmluZzsKICAgICBpZiAoV2ViRnJhbWUqIGZyYW1l
ID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCkpCiAgICAgICAgcmVz
dWx0U3RyaW5nID0gZnJhbWUtPnNvdXJjZSgpOwogCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpTdHJpbmdDYWxsYmFjayhyZXN1bHRTdHJpbmcsIGNhbGxiYWNrSUQpKTsKKyAgICBj
YWxsYmFjayhyZXN1bHRTdHJpbmcpOwogfQogCiB2b2lkIFdlYlBhZ2U6OmdldE1haW5SZXNvdXJj
ZURhdGFPZkZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYpPiYmIGNhbGxiYWNrKQpA
QCAtNjQzOCwzMyArNjQzNywyOSBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZUNhY2hlZERvY3VtZW50
TG9hZGVyKFdlYkRvY3VtZW50TG9hZGVyJiBkb2N1bWVudExvYWRlciwgRnJhbQogICAgIH0KIH0K
IAotdm9pZCBXZWJQYWdlOjpnZXRCeXRlY29kZVByb2ZpbGUoQ2FsbGJhY2tJRCBjYWxsYmFja0lE
KQordm9pZCBXZWJQYWdlOjpnZXRCeXRlY29kZVByb2ZpbGUoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBTdHJpbmcmKT4mJiBjYWxsYmFjaykKIHsKLSAgICBpZiAoTElLRUxZKCFjb21tb25W
TSgpLm1fcGVyQnl0ZWNvZGVQcm9maWxlcikpIHsKLSAgICAgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpTdHJpbmdDYWxsYmFjayhTdHJpbmcoKSwgY2FsbGJhY2tJRCkpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQorICAgIGlmIChMSUtFTFkoIWNvbW1vblZNKCkubV9wZXJCeXRlY29k
ZVByb2ZpbGVyKSkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKHsgfSk7CiAKICAgICBTdHJpbmcg
cmVzdWx0ID0gY29tbW9uVk0oKS5tX3BlckJ5dGVjb2RlUHJvZmlsZXItPnRvSlNPTigpOwogICAg
IEFTU0VSVChyZXN1bHQubGVuZ3RoKCkpOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6U3RyaW5nQ2FsbGJhY2socmVzdWx0LCBjYWxsYmFja0lEKSk7CisgICAgY2FsbGJhY2socmVz
dWx0KTsKIH0KIAotdm9pZCBXZWJQYWdlOjpnZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KENhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6Z2V0U2FtcGxpbmdQcm9maWxlck91dHB1
dChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNhbGxiYWNrKQogewog
I2lmIEVOQUJMRShTQU1QTElOR19QUk9GSUxFUikKICAgICBTYW1wbGluZ1Byb2ZpbGVyKiBzYW1w
bGluZ1Byb2ZpbGVyID0gY29tbW9uVk0oKS5zYW1wbGluZ1Byb2ZpbGVyKCk7Ci0gICAgaWYgKCFz
YW1wbGluZ1Byb2ZpbGVyKSB7Ci0gICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
SW52YWxpZGF0ZVN0cmluZ0NhbGxiYWNrKGNhbGxiYWNrSUQpKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KKyAgICBpZiAoIXNhbXBsaW5nUHJvZmlsZXIpCisgICAgICAgIHJldHVybiBjYWxsYmFj
ayh7IH0pOwogCiAgICAgU3RyaW5nUHJpbnRTdHJlYW0gcmVzdWx0OwogICAgIHNhbXBsaW5nUHJv
ZmlsZXItPnJlcG9ydFRvcEZ1bmN0aW9ucyhyZXN1bHQpOwogICAgIHNhbXBsaW5nUHJvZmlsZXIt
PnJlcG9ydFRvcEJ5dGVjb2RlcyhyZXN1bHQpOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6U3RyaW5nQ2FsbGJhY2socmVzdWx0LnRvU3RyaW5nKCksIGNhbGxiYWNrSUQpKTsKKyAg
ICBjYWxsYmFjayhyZXN1bHQudG9TdHJpbmcoKSk7CiAjZWxzZQotICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6SW52YWxpZGF0ZVN0cmluZ0NhbGxiYWNrKGNhbGxiYWNrSUQpKTsKKyAg
ICBjYWxsYmFjayh7IH0pOwogI2VuZGlmCiB9CiAKQEAgLTY5MTAsMjEgKzY5MDUsMjEgQEAgdm9p
ZCBXZWJQYWdlOjp2b2ljZXNEaWRDaGFuZ2UoKQogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxF
TUVOVCkKIAotdm9pZCBXZWJQYWdlOjppbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRl
bnRpZmllciwgT3B0aW9uYWw8dWludDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYgZmls
ZU5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
K3ZvaWQgV2ViUGFnZTo6aW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIs
IE9wdGlvbmFsPHVpbnQ2NF90PiYmIGZpbGVTaXplLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2Fs
bGJhY2spCiB7CiAgICAgYXV0byYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZv
Y3VzZWRPck1haW5GcmFtZSgpOwogICAgIGZyYW1lLmVkaXRvcigpLmluc2VydEF0dGFjaG1lbnQo
aWRlbnRpZmllciwgV1RGTW92ZShmaWxlU2l6ZSksIGZpbGVOYW1lLCBjb250ZW50VHlwZSk7Ci0g
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpWb2lkQ2FsbGJhY2soY2FsbGJhY2tJRCkp
OworICAgIGNhbGxiYWNrKCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6dXBkYXRlQXR0YWNobWVudEF0
dHJpYnV0ZXMoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBPcHRpb25hbDx1aW50NjRfdD4mJiBm
aWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFt
ZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBlbmNsb3NpbmdJbWFnZURhdGEsIENhbGxiYWNr
SUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6dXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMo
Y29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBPcHRpb25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwg
Y29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiBlbmNsb3NpbmdJbWFnZURhdGEsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjYWxsYmFjaykKIHsKICAgICBpZiAoYXV0byBhdHRhY2htZW50ID0gYXR0YWNo
bWVudEVsZW1lbnRXaXRoSWRlbnRpZmllcihpZGVudGlmaWVyKSkgewogICAgICAgICBhdHRhY2ht
ZW50LT5kb2N1bWVudCgpLnVwZGF0ZUxheW91dCgpOwogICAgICAgICBhdHRhY2htZW50LT51cGRh
dGVBdHRyaWJ1dGVzKFdURk1vdmUoZmlsZVNpemUpLCBjb250ZW50VHlwZSwgZmlsZU5hbWUpOwog
ICAgICAgICBhdHRhY2htZW50LT51cGRhdGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRhKGNvbnRlbnRU
eXBlLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShlbmNsb3NpbmdJbWFnZURhdGEuZGF0YSgpLCBlbmNs
b3NpbmdJbWFnZURhdGEuc2l6ZSgpKSk7CiAgICAgfQotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6Vm9pZENhbGxiYWNrKGNhbGxiYWNrSUQpKTsKKyAgICBjYWxsYmFjaygpOwogfQog
CiB2b2lkIFdlYlBhZ2U6OnVwZGF0ZUF0dGFjaG1lbnRJY29uKGNvbnN0IFN0cmluZyYgaWRlbnRp
ZmllciwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIHFsVGh1bWJuYWlsSGFuZGxlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGViNTI0ODkw
MjgxNTAyNmE0N2JhOWQ4YzUwYzdjOGZjYjQ1ZTE5ZTAuLmNmMDQyNjJmNzFkOWEwZDE3ODUwMDFh
OTA5ZDEwNTY5MWEzNjEzMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKQEAgLTc1Myw3ICs3NTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXBsYWNlRGlj
dGF0ZWRUZXh0KGNvbnN0IFN0cmluZyYgb2xkVGV4dCwgY29uc3QgU3RyaW5nJiBuZXdUZXh0KTsK
ICAgICB2b2lkIHJlcGxhY2VTZWxlY3RlZFRleHQoY29uc3QgU3RyaW5nJiBvbGRUZXh0LCBjb25z
dCBTdHJpbmcmIG5ld1RleHQpOwogICAgIHZvaWQgcmVxdWVzdEF1dG9jb3JyZWN0aW9uRGF0YShj
b25zdCBTdHJpbmcmIHRleHRGb3JBdXRvY29ycmVjdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChXZWJBdXRvY29ycmVjdGlvbkRhdGEpPiYmIHJlcGx5KTsKLSAgICB2b2lkIGFwcGx5QXV0b2Nv
cnJlY3Rpb24oY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFs
VGV4dCwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBhcHBseUF1dG9jb3JyZWN0aW9uKGNvbnN0IFN0
cmluZyYgY29ycmVjdGlvbiwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbFRleHQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOwogICAgIHZvaWQgc3luY0FwcGx5QXV0b2Nv
cnJlY3Rpb24oY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFs
VGV4dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCByZXF1ZXN0
QXV0b2NvcnJlY3Rpb25Db250ZXh0KCk7CiAgICAgdm9pZCBnZXRQb3NpdGlvbkluZm9ybWF0aW9u
KGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0JiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYmKT4mJik7CkBAIC0xMTQ5LDgg
KzExNDksOCBAQCBwdWJsaWM6CiAgICAgUmVmPFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyPiBjcmVh
dGVEb2N1bWVudExvYWRlcihXZWJDb3JlOjpGcmFtZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJik7CiAgICAgdm9pZCB1cGRh
dGVDYWNoZWREb2N1bWVudExvYWRlcihXZWJEb2N1bWVudExvYWRlciYsIFdlYkNvcmU6OkZyYW1l
Jik7CiAKLSAgICB2b2lkIGdldEJ5dGVjb2RlUHJvZmlsZShDYWxsYmFja0lEKTsKLSAgICB2b2lk
IGdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQoQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBnZXRCeXRl
Y29kZVByb2ZpbGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJik7Cisg
ICAgdm9pZCBnZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgU3RyaW5nJik+JiYpOwogICAgIAogI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKSB8
fCBFTkFCTEUoVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pCiAgICAgdm9pZCBoYW5kbGVUZWxl
cGhvbmVOdW1iZXJDbGljayhjb25zdCBTdHJpbmcmIG51bWJlciwgY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmKTsKQEAgLTEyNTMsOCArMTI1Myw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNob3dDb250
YWN0UGlja2VyKGNvbnN0IFdlYkNvcmU6OkNvbnRhY3RzUmVxdWVzdERhdGEmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpDb250YWN0SW5mbz4+JiYpPiYm
KTsKICAgICAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQotICAgIHZvaWQgaW5zZXJ0
QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIE9wdGlvbmFsPHVpbnQ2NF90PiYm
IGZpbGVTaXplLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlLCBDYWxsYmFja0lEKTsKLSAgICB2b2lkIHVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGNv
bnN0IFN0cmluZyYgaWRlbnRpZmllciwgT3B0aW9uYWw8dWludDY0X3Q+JiYgZmlsZVNpemUsIGNv
bnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYgZW5jbG9zaW5nSW1hZ2VEYXRhLCBDYWxsYmFja0lEKTsKKyAgICB2
b2lkIGluc2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBPcHRpb25hbDx1
aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHVw
ZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgT3B0aW9u
YWw8dWludDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0
IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZW5jbG9zaW5nSW1h
Z2VEYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgdXBkYXRlQXR0
YWNobWVudEljb24oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTaGFyZWFibGVCaXRt
YXA6OkhhbmRsZSYgcWxUaHVtYm5haWxIYW5kbGUpOwogI2VuZGlmCiAKQEAgLTE1MTUsNyArMTUx
NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRJbml0aWFsRm9jdXMoYm9vbCBmb3J3YXJkLCBi
b29sIGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBjb25zdCBXZWJLZXlib2FyZEV2ZW50JiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHVwZGF0ZUlzSW5XaW5kb3coYm9vbCBp
c0luaXRpYWxTdGF0ZSA9IGZhbHNlKTsKICAgICB2b2lkIHZpc2liaWxpdHlEaWRDaGFuZ2UoKTsK
LSAgICB2b2lkIHNldEFjdGl2aXR5U3RhdGUoT3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5U3Rh
dGU6OkZsYWc+LCBBY3Rpdml0eVN0YXRlQ2hhbmdlSUQsIGNvbnN0IFZlY3RvcjxDYWxsYmFja0lE
PiYgY2FsbGJhY2tJRHMpOworICAgIHZvaWQgc2V0QWN0aXZpdHlTdGF0ZShPcHRpb25TZXQ8V2Vi
Q29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZz4sIEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHZhbGlkYXRlQ29tbWFuZChjb25zdCBT
dHJpbmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wsIGludDMyX3QpPiYmKTsKICAgICB2
b2lkIGV4ZWN1dGVFZGl0Q29tbWFuZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKICAg
ICB2b2lkIHNldEVkaXRhYmxlKGJvb2wpOwpAQCAtMTU4MCw3ICsxNTgwLDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHZpZXdXaWxsU3RhcnRMaXZlUmVzaXplKCk7CiAgICAgdm9pZCB2aWV3V2lsbEVu
ZExpdmVSZXNpemUoKTsKIAotICAgIHZvaWQgZ2V0Q29udGVudHNBc1N0cmluZyhDb250ZW50QXNT
dHJpbmdJbmNsdWRlc0NoaWxkRnJhbWVzLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIGdldENvbnRl
bnRzQXNTdHJpbmcoQ29udGVudEFzU3RyaW5nSW5jbHVkZXNDaGlsZEZyYW1lcywgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJik7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgdm9pZCBnZXRDb250ZW50c0FzQXR0cmlidXRlZFN0cmluZyhDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFdlYkNvcmU6OkF0dHJpYnV0ZWRTdHJpbmcmKT4mJik7CiAjZW5kaWYKQEAgLTE1
ODksMTAgKzE1ODksMTAgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgIHZvaWQgZ2V0TWFpblJlc291
cmNlRGF0YU9mRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYpPiYmKTsKICAgICB2
b2lkIGdldFJlc291cmNlRGF0YUZyb21GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgcmVzb3VyY2VVUkwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBD
OjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJik+JiYpOwotICAgIHZvaWQgZ2V0UmVuZGVyVHJl
ZUV4dGVybmFsUmVwcmVzZW50YXRpb24oQ2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBnZXRTZWxlY3Rp
b25PckNvbnRlbnRzQXNTdHJpbmcoQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBnZXRSZW5kZXJUcmVl
RXh0ZXJuYWxSZXByZXNlbnRhdGlvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmlu
ZyYpPiYmKTsKKyAgICB2b2lkIGdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKICAgICB2b2lkIGdldFNlbGVjdGlv
bkFzV2ViQXJjaGl2ZURhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmKT4mJik7Ci0gICAgdm9pZCBnZXRTb3VyY2VGb3JGcmFtZShXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIsIENhbGxiYWNrSUQpOworICAgIHZvaWQgZ2V0U291cmNlRm9yRnJhbWUoV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmlu
ZyYpPiYmKTsKICAgICB2b2lkIGdldFdlYkFyY2hpdmVPZkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
KT4mJik7CiAgICAgdm9pZCBydW5KYXZhU2NyaXB0KFdlYkZyYW1lKiwgV2ViQ29yZTo6UnVuSmF2
YVNjcmlwdFBhcmFtZXRlcnMmJiwgQ29udGVudFdvcmxkSWRlbnRpZmllciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBPcHRpb25hbDxXZWJD
b3JlOjpFeGNlcHRpb25EZXRhaWxzPiYpPiYmKTsKICAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbkZy
YW1lSW5TY3JpcHRXb3JsZChXZWJDb3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmLCBPcHRp
b25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBjb25zdCBzdGQ6OnBhaXI8Q29udGVudFdv
cmxkSWRlbnRpZmllciwgU3RyaW5nPiYgd29ybGREYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2Vw
dGlvbkRldGFpbHM+Jik+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggOGNmY2M0OWNmNmYzODA3NmFmOWMzMjMx
OTNhZDM3NTM0OGE0NDhmMC4uMzRiMTJjNDY0NDRmZjE1NWE1ZTE0MzIxOTlhZDhhMTc4OTkxNTgy
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluCkBAIC0yMiw3ICsyMiw3IEBACiAKIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVn
YWN5UmVjZWl2ZXIgewogICAgIFNldEluaXRpYWxGb2N1cyhib29sIGZvcndhcmQsIGJvb2wgaXNL
ZXlib2FyZEV2ZW50VmFsaWQsIFdlYktpdDo6V2ViS2V5Ym9hcmRFdmVudCBldmVudCkgLT4gKCkg
QXN5bmMKLSAgICBTZXRBY3Rpdml0eVN0YXRlKE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0
YXRlOjpGbGFnPiBhY3Rpdml0eVN0YXRlLCBXZWJLaXQ6OkFjdGl2aXR5U3RhdGVDaGFuZ2VJRCBh
Y3Rpdml0eVN0YXRlQ2hhbmdlSUQsIFZlY3RvcjxXZWJLaXQ6OkNhbGxiYWNrSUQ+IGNhbGxiYWNr
SURzKQorICAgIFNldEFjdGl2aXR5U3RhdGUoT3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5U3Rh
dGU6OkZsYWc+IGFjdGl2aXR5U3RhdGUsIFdlYktpdDo6QWN0aXZpdHlTdGF0ZUNoYW5nZUlEIGFj
dGl2aXR5U3RhdGVDaGFuZ2VJRCkgLT4gKCkgQXN5bmMKICAgICBTZXRMYXllckhvc3RpbmdNb2Rl
KGVudW06dWludDhfdCBXZWJLaXQ6OkxheWVySG9zdGluZ01vZGUgbGF5ZXJIb3N0aW5nTW9kZSkK
IAogICAgIFNldEJhY2tncm91bmRDb2xvcihPcHRpb25hbDxXZWJDb3JlOjpDb2xvcj4gY29sb3Ip
CkBAIC04Miw3ICs4Miw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewog
ICAgIFJlcGxhY2VEaWN0YXRlZFRleHQoU3RyaW5nIG9sZFRleHQsIFN0cmluZyBuZXdUZXh0KQog
ICAgIFJlcGxhY2VTZWxlY3RlZFRleHQoU3RyaW5nIG9sZFRleHQsIFN0cmluZyBuZXdUZXh0KQog
ICAgIFJlcXVlc3RBdXRvY29ycmVjdGlvbkRhdGEoU3RyaW5nIHRleHRGb3JBdXRvY29ycmVjdGlv
bikgLT4gKHN0cnVjdCBXZWJLaXQ6OldlYkF1dG9jb3JyZWN0aW9uRGF0YSBkYXRhKSBBc3luYwot
ICAgIEFwcGx5QXV0b2NvcnJlY3Rpb24oU3RyaW5nIGNvcnJlY3Rpb24sIFN0cmluZyBvcmlnaW5h
bFRleHQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIEFwcGx5QXV0b2NvcnJl
Y3Rpb24oU3RyaW5nIGNvcnJlY3Rpb24sIFN0cmluZyBvcmlnaW5hbFRleHQpIC0+IChTdHJpbmcg
c3RyaW5nKSBBc3luYwogICAgIFN5bmNBcHBseUF1dG9jb3JyZWN0aW9uKFN0cmluZyBjb3JyZWN0
aW9uLCBTdHJpbmcgb3JpZ2luYWxUZXh0KSAtPiAoYm9vbCBhdXRvY29ycmVjdGlvbkFwcGxpZWQp
IFN5bmNocm9ub3VzCiAgICAgUmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dCgpCiAgICAgUmVx
dWVzdEV2YXNpb25SZWN0c0Fib3ZlU2VsZWN0aW9uKCkgLT4gKFZlY3RvcjxXZWJDb3JlOjpGbG9h
dFJlY3Q+IHJlY3RzKSBBc3luYwpAQCAtMjA0LDcgKzIwNCw3IEBAIEdlbmVyYXRlU3ludGhldGlj
RWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1h
bmRUeXBlCiAgICAgUmVzdG9yZVNlbGVjdGlvbkluRm9jdXNlZEVkaXRhYmxlRWxlbWVudCgpCiAK
ICAgICAjIENhbGxiYWNrcy4KLSAgICBHZXRDb250ZW50c0FzU3RyaW5nKGVudW06Ym9vbCBXZWJL
aXQ6OkNvbnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXMgaW5DaGlsZEZyYW1lcywgV2Vi
S2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgR2V0Q29udGVudHNBc1N0cmluZyhlbnVt
OmJvb2wgV2ViS2l0OjpDb250ZW50QXNTdHJpbmdJbmNsdWRlc0NoaWxkRnJhbWVzIGluQ2hpbGRG
cmFtZXMpIC0+IChTdHJpbmcgc3RyaW5nKSBBc3luYwogICAgIEdldEFsbEZyYW1lcygpIC0+IChz
dHJ1Y3QgV2ViS2l0OjpGcmFtZVRyZWVOb2RlRGF0YSBtYWluRnJhbWUpIEFzeW5jCiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgR2V0Q29udGVudHNBc0F0dHJpYnV0ZWRTdHJpbmcoKSAtPiAoc3Ry
dWN0IFdlYkNvcmU6OkF0dHJpYnV0ZWRTdHJpbmcgcmVzdWx0KSBBc3luYwpAQCAtMjE0LDEwICsy
MTQsMTAgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2Vi
S2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKICNlbmRpZgogICAgIEdldE1haW5SZXNv
dXJjZURhdGFPZkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlEKSAtPiAoSVBD
OjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UpIEFzeW5jCiAgICAgR2V0
UmVzb3VyY2VEYXRhRnJvbUZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBT
dHJpbmcgcmVzb3VyY2VVUkwpIC0+IChJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0
YVJlZmVyZW5jZSkgQXN5bmMKLSAgICBHZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlv
bihXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKLSAgICBHZXRTZWxlY3Rpb25PckNvbnRl
bnRzQXNTdHJpbmcoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgR2V0UmVuZGVy
VHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oKSAtPiAoU3RyaW5nIHN0cmluZykgQXN5bmMKKyAg
ICBHZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcoKSAtPiAoU3RyaW5nIHN0cmluZykgQXN5
bmMKICAgICBHZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKCkgLT4gKElQQzo6RGF0YVJlZmVy
ZW5jZSBkYXRhKSBBc3luYwotICAgIEdldFNvdXJjZUZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBHZXRT
b3VyY2VGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkgLT4gKFN0cmlu
ZyBzdHJpbmcpIEFzeW5jCiAgICAgR2V0V2ViQXJjaGl2ZU9mRnJhbWUoV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQpIC0+IChJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZSkg
QXN5bmMKIAogICAgIFJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZChzdHJ1Y3QgV2Vi
Q29yZTo6UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMgcGFyYW1ldGVycywgT3B0aW9uYWw8V2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBzdGQ6OnBhaXI8V2ViS2l0OjpDb250ZW50V29y
bGRJZGVudGlmaWVyLCBTdHJpbmc+IHdvcmxkKSAtPiAoSVBDOjpEYXRhUmVmZXJlbmNlIHJlc3Vs
dERhdGEsIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMpIEFzeW5j
CkBAIC00ODcsOSArNDg3LDkgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVt
OnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKICAgICBTZXRTY3Jv
bGxQaW5uaW5nQmVoYXZpb3IodWludDMyX3QgcGlubmluZykKICAgICBTZXRTY3JvbGxiYXJPdmVy
bGF5U3R5bGUoT3B0aW9uYWw8dWludDMyX3Q+IHNjcm9sbGJhclN0eWxlKQogCi0gICAgR2V0Qnl0
ZWNvZGVQcm9maWxlKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIEdldEJ5dGVj
b2RlUHJvZmlsZSgpIC0+IChTdHJpbmcgc3RyaW5nKSBBc3luYwogCi0gICAgR2V0U2FtcGxpbmdQ
cm9maWxlck91dHB1dChXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBHZXRTYW1w
bGluZ1Byb2ZpbGVyT3V0cHV0KCkgLT4gKFN0cmluZyBzdHJpbmcpIEFzeW5jCiAgICAgCiAgICAg
VGFrZVNuYXBzaG90KFdlYkNvcmU6OkludFJlY3Qgc25hcHNob3RSZWN0LCBXZWJDb3JlOjpJbnRT
aXplIGJpdG1hcFNpemUsIHVpbnQzMl90IG9wdGlvbnMpIC0+IChXZWJLaXQ6OlNoYXJlYWJsZUJp
dG1hcDo6SGFuZGxlIGltYWdlKSBBc3luYwogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTU2NSw4ICs1
NjUsOCBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJL
aXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogICAgIFNldElzU3VzcGVuZGVkKGJvb2wg
c3VzcGVuZGVkKQogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKLSAgICBJbnNlcnRB
dHRhY2htZW50KFN0cmluZyBpZGVudGlmaWVyLCBPcHRpb25hbDx1aW50NjRfdD4gZmlsZVNpemUs
IFN0cmluZyBmaWxlTmFtZSwgU3RyaW5nIGNvbnRlbnRUeXBlLCBXZWJLaXQ6OkNhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKLSAgICBVcGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhTdHJpbmcgaWRlbnRp
ZmllciwgT3B0aW9uYWw8dWludDY0X3Q+IGZpbGVTaXplLCBTdHJpbmcgY29udGVudFR5cGUsIFN0
cmluZyBmaWxlTmFtZSwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGVuY2xvc2luZ0lt
YWdlRGF0YSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgSW5zZXJ0QXR0YWNo
bWVudChTdHJpbmcgaWRlbnRpZmllciwgT3B0aW9uYWw8dWludDY0X3Q+IGZpbGVTaXplLCBTdHJp
bmcgZmlsZU5hbWUsIFN0cmluZyBjb250ZW50VHlwZSkgLT4gKCkgQXN5bmMKKyAgICBVcGRhdGVB
dHRhY2htZW50QXR0cmlidXRlcyhTdHJpbmcgaWRlbnRpZmllciwgT3B0aW9uYWw8dWludDY0X3Q+
IGZpbGVTaXplLCBTdHJpbmcgY29udGVudFR5cGUsIFN0cmluZyBmaWxlTmFtZSwgSVBDOjpTaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGVuY2xvc2luZ0ltYWdlRGF0YSkgLT4gKCkgQXN5bmMKICAg
ICBVcGRhdGVBdHRhY2htZW50SWNvbihTdHJpbmcgaWRlbnRpZmllciwgV2ViS2l0OjpTaGFyZWFi
bGVCaXRtYXA6OkhhbmRsZSBxbFRodW1ibmFpbEhhbmRsZSkKICNlbmRpZgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDI0
NWU0OTkzZGRlNjE0YWUwZjIxZmY3ZTQ5ZmNmYjg4MWU3MjRiZWMuLmY2NzAzZDcwNGM5ZmE2NGMw
ZDAwYWM5YTBjYmI4ZDcxYzY0NzQyMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0yMzUxLDkgKzIzNTEsOSBAQCB2b2lk
IFdlYlBhZ2U6OnJlcXVlc3RBdXRvY29ycmVjdGlvbkRhdGEoY29uc3QgU3RyaW5nJiB0ZXh0Rm9y
QXV0b2NvcnJlY3Rpb24sIENvbQogICAgIHJlcGx5KHsgV1RGTW92ZShyb290Vmlld1NlbGVjdGlv
blJlY3RzKSAsIChfX2JyaWRnZSBVSUZvbnQgKilmb250IH0pOwogfQogCi12b2lkIFdlYlBhZ2U6
OmFwcGx5QXV0b2NvcnJlY3Rpb24oY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uLCBjb25zdCBTdHJp
bmcmIG9yaWdpbmFsVGV4dCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjph
cHBseUF1dG9jb3JyZWN0aW9uKGNvbnN0IFN0cmluZyYgY29ycmVjdGlvbiwgY29uc3QgU3RyaW5n
JiBvcmlnaW5hbFRleHQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYg
Y2FsbGJhY2spCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTdHJpbmdDYWxs
YmFjayhhcHBseUF1dG9jb3JyZWN0aW9uSW50ZXJuYWwoY29ycmVjdGlvbiwgb3JpZ2luYWxUZXh0
KSA/IGNvcnJlY3Rpb24gOiBTdHJpbmcoKSwgY2FsbGJhY2tJRCkpOworICAgIGNhbGxiYWNrKGFw
cGx5QXV0b2NvcnJlY3Rpb25JbnRlcm5hbChjb3JyZWN0aW9uLCBvcmlnaW5hbFRleHQpID8gY29y
cmVjdGlvbiA6IFN0cmluZygpKTsKIH0KIAogU2Vjb25kcyBXZWJQYWdlOjpldmVudFRocm90dGxp
bmdEZWxheSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCmlu
ZGV4IGI0ZWZmZmZmOGY3MmY2YmVhMjRhNWFkMTQ4NzE5ZGNjZGQ1YjgwZGMuLjc3YTgwNDJmODg0
MTU4OGQ4MjBlYzRjZmRhNWJmMTQ3YmZlZDUxZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRp
b25EcmF3aW5nQXJlYS5oCkBAIC04Miw3ICs4Miw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIHNo
b3VsZFVzZVRpbGVkQmFja2luZ0ZvckZyYW1lVmlldyhjb25zdCBXZWJDb3JlOjpGcmFtZVZpZXcm
KSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZvaWQgYWN0aXZpdHlTdGF0ZURpZENoYW5nZShPcHRp
b25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZz4gY2hhbmdlZCwgQWN0aXZpdHlTdGF0
ZUNoYW5nZUlELCBjb25zdCBWZWN0b3I8Q2FsbGJhY2tJRD4mKSBvdmVycmlkZTsKKyAgICB2b2lk
IGFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoT3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6
OkZsYWc+IGNoYW5nZWQsIEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgYXR0YWNoVmlld092ZXJsYXlHcmFwaGlj
c0xheWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKSBvdmVycmlkZTsKIApAQCAtMTUxLDcgKzE1
MSw3IEBAIHByaXZhdGU6CiAgICAgZG91YmxlIG1fdHJhbnNpZW50Wm9vbVNjYWxlIHsgMSB9Owog
ICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgbV90cmFuc2llbnRab29tT3JpZ2luOwogCi0gICAgVmVj
dG9yPENhbGxiYWNrSUQ+IG1fbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja0lEczsKKyAg
ICBWZWN0b3I8Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPj4gbV9uZXh0QWN0aXZpdHlTdGF0ZUNo
YW5nZUNhbGxiYWNrczsKICAgICBBY3Rpdml0eVN0YXRlQ2hhbmdlSUQgbV9hY3Rpdml0eVN0YXRl
Q2hhbmdlSUQgeyBBY3Rpdml0eVN0YXRlQ2hhbmdlQXN5bmNocm9ub3VzIH07CiAKICAgICBSZWZQ
dHI8V2ViQ29yZTo6R3JhcGhpY3NMYXllcj4gbV92aWV3T3ZlcmxheVJvb3RMYXllcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQppbmRleCA2YjEyZTk5NTJkNTM2OTVj
NDcxNWRlMzc1OTZmYTZiNTJmMTAzMTViLi5mNmNmMTFhYTUyMGJlYzVkYzY5MTc0ZDdjOTZhYzUy
ODAyYWUwZTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCkBA
IC0xMDIsNiArMTAyLDggQEAgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OlRpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhKFdlYlBhZ2UmIHdlYlBhZ2UsIGMKIFRpbGVkQ29yZUFuaW1h
dGlvbkRyYXdpbmdBcmVhOjp+VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEoKQogewogICAg
IGludmFsaWRhdGVSZW5kZXJpbmdVcGRhdGVSdW5Mb29wT2JzZXJ2ZXIoKTsKKyAgICBmb3IgKGF1
dG8mIGNhbGxiYWNrIDogbV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrcykKKyAgICAg
ICAgY2FsbGJhY2soKTsKIH0KIAogdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6
c2VuZERpZEZpcnN0TGF5ZXJGbHVzaElmTmVlZGVkKCkKQEAgLTQ5OCw5ICs1MDAsOCBAQCB2b2lk
IFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpoYW5kbGVBY3Rpdml0eVN0YXRlQ2hhbmdl
Q2FsbGJhY2tzKCkKICAgICBpZiAobV9hY3Rpdml0eVN0YXRlQ2hhbmdlSUQgIT0gQWN0aXZpdHlT
dGF0ZUNoYW5nZUFzeW5jaHJvbm91cykKICAgICAgICAgbV93ZWJQYWdlLnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6RGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSgpKTsKIAotICAgIGZvciAoYXV0
byYgY2FsbGJhY2tJRCA6IG1fbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja0lEcykKLSAg
ICAgICAgbV93ZWJQYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Vm9pZENhbGxiYWNr
KGNhbGxiYWNrSUQpKTsKLSAgICBtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJRHMu
Y2xlYXIoKTsKKyAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogc3RkOjpleGNoYW5nZShtX25leHRB
Y3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tzLCB7IH0pKQorICAgICAgICBjYWxsYmFjaygpOwog
CiAgICAgbV9hY3Rpdml0eVN0YXRlQ2hhbmdlSUQgPSBBY3Rpdml0eVN0YXRlQ2hhbmdlQXN5bmNo
cm9ub3VzOwogfQpAQCAtNTMxLDkgKzUzMiw5IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWE6OmhhbmRsZUFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja3NJZk5lZWRlZCgpCiAg
ICAgfSBmb3JQaGFzZTprQ0FUcmFuc2FjdGlvblBoYXNlUG9zdENvbW1pdF07CiB9CiAKLXZvaWQg
VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoT3B0
aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+IGNoYW5nZWQsIEFjdGl2aXR5U3RhdGVDaGFuZ2VJ
RCBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQsIGNvbnN0IFZlY3RvcjxDYWxsYmFja0lEPiYgbmV4dEFj
dGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja0lEcykKK3ZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWE6OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6
OkZsYWc+IGNoYW5nZWQsIEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCBhY3Rpdml0eVN0YXRlQ2hhbmdl
SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBuZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNh
bGxiYWNrKQogewotICAgIG1fbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja0lEcy5hcHBl
bmRWZWN0b3IobmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja0lEcyk7CisgICAgbV9uZXh0
QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrcy5hcHBlbmQoV1RGTW92ZShuZXh0QWN0aXZpdHlT
dGF0ZUNoYW5nZUNhbGxiYWNrKSk7CiAgICAgbV9hY3Rpdml0eVN0YXRlQ2hhbmdlSUQgPSBzdGQ6
Om1heChtX2FjdGl2aXR5U3RhdGVDaGFuZ2VJRCwgYWN0aXZpdHlTdGF0ZUNoYW5nZUlEKTsKIAog
ICAgIGlmIChjaGFuZ2VkICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKSB7CkBAIC01NDMsNyAr
NTQ0LDcgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6YWN0aXZpdHlTdGF0
ZURpZENoYW5nZShPcHRpb25TZXQ8QWN0aXZpdHlTdGEKICAgICAgICAgICAgIHN1c3BlbmRQYWlu
dGluZygpOwogICAgIH0KIAotICAgIGlmIChtX2FjdGl2aXR5U3RhdGVDaGFuZ2VJRCAhPSBBY3Rp
dml0eVN0YXRlQ2hhbmdlQXN5bmNocm9ub3VzIHx8ICFtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdl
Q2FsbGJhY2tJRHMuaXNFbXB0eSgpKSB7CisgICAgaWYgKG1fYWN0aXZpdHlTdGF0ZUNoYW5nZUlE
ICE9IEFjdGl2aXR5U3RhdGVDaGFuZ2VBc3luY2hyb25vdXMgfHwgIW1fbmV4dEFjdGl2aXR5U3Rh
dGVDaGFuZ2VDYWxsYmFja3MuaXNFbXB0eSgpKSB7CiAgICAgICAgIG1fc2hvdWxkSGFuZGxlQWN0
aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrcyA9IHRydWU7CiAgICAgICAgIHRyaWdnZXJSZW5kZXJp
bmdVcGRhdGUoKTsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420355</attachid>
            <date>2021-02-15 13:14:54 -0800</date>
            <delta_ts>2021-02-15 14:03:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221653-20210215151454.patch</filename>
            <type>text/plain</type>
            <size>1644</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyODczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJkODAzZjM3Mjk3MzY4ZDI4
M2E3YzczMGM4MDcwOGY2NGY0NGFlODUuLjc5ZmJhNDIxYmU2ZTg2YjU0OGUwZGY5NzRiMTZkNjFh
MmYxNmQzMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDItMTUgIE1pY2hhZWwg
Q2F0YW56YXJvICA8bWNhdGFuemFyb0Bnbm9tZS5vcmc+CisKKyAgICAgICAgRml4IC1XdW51c2Vk
LXZhcmlhYmxlIHdhcm5pbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyMTY1MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzQyODAxNDY+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXNldFN0
YXRlKToKKwogMjAyMS0wMi0xNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFVuZXhwZWN0ZWQgQVNTRVJUIHdoZW4gdG91Y2ggZXZlbnRzIGFy
ZSBkaXNwYXRjaGVkIG9uIHRoZSBtYWluIHRocmVhZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKaW5kZXggNDhkNzRlMmZhNTdmNDQwOWQ5ZTMwMWI3NmI5NTUxOTY5ZTM2
MGY2My4uZTI1YmNhOWNmYWQ2YWJkYjE2ZjA2YTJkZmUwZTdhYzg1N2NmNjczNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC03NDU5LDE4ICs3NDU5LDYgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGUoUmVzZXRTdGF0ZVJlYXNvbiByZXNldFN0YXRl
UmVhc29uKQogICAgIG1fd2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5ID0g
bnVsbHB0cjsKICNlbmRpZgogCi0gICAgQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvciB7IH07Ci0g
ICAgc3dpdGNoIChyZXNldFN0YXRlUmVhc29uKSB7Ci0gICAgY2FzZSBSZXNldFN0YXRlUmVhc29u
OjpOYXZpZ2F0aW9uU3dhcDoKLSAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBSZXNldFN0
YXRlUmVhc29uOjpQYWdlSW52YWxpZGF0ZWQ6Ci0gICAgICAgIGVycm9yID0gQ2FsbGJhY2tCYXNl
OjpFcnJvcjo6T3duZXJXYXNJbnZhbGlkYXRlZDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBS
ZXNldFN0YXRlUmVhc29uOjpXZWJQcm9jZXNzRXhpdGVkOgotICAgICAgICBlcnJvciA9IENhbGxi
YWNrQmFzZTo6RXJyb3I6OlByb2Nlc3NFeGl0ZWQ7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQog
ICAgIGZvciAoYXV0byYgZWRpdENvbW1hbmQgOiBzdGQ6OmV4Y2hhbmdlKG1fZWRpdENvbW1hbmRT
ZXQsIHsgfSkpCiAgICAgICAgIGVkaXRDb21tYW5kLT5pbnZhbGlkYXRlKCk7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>