<?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>116132</bug_id>
          
          <creation_ts>2013-05-14 20:41:46 -0700</creation_ts>
          <short_desc>Add variants of the loading APIs that take user data and a way for the injected bundle to find out about them</short_desc>
          <delta_ts>2013-05-17 03:07:22 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>kadam</cc>
    
    <cc>ossy</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>zarvai</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>889112</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-05-14 20:41:46 -0700</bug_when>
    <thetext>Add variants of the loading APIs that take user data and a way for the injected bundle to find out about them</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>889115</commentid>
    <comment_count>1</comment_count>
      <attachid>201786</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-05-14 20:45:27 -0700</bug_when>
    <thetext>Created attachment 201786
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>889116</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-14 20:46:35 -0700</bug_when>
    <thetext>Attachment 201786 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/UIProcess/API/C/WKPage.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/C/WKPage.h&apos;, u&apos;Source/WebKit2/UIProcess/WebPageProxy.cpp&apos;, u&apos;Source/WebKit2/UIProcess/WebPageProxy.h&apos;, u&apos;Source/WebKit2/WebKit2.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.h&apos;, u&apos;Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp&apos;, u&apos;Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.h&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/WebPage.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/WebPage.h&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/WebPage.messages.in&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj&apos;, u&apos;Tools/TestWebKitAPI/Tests/WebKit2/WillLoad.cpp&apos;, u&apos;Tools/TestWebKitAPI/Tests/WebKit2/WillLoad_Bundle.cpp&apos;, u&apos;Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp&apos;]&quot; exit_code: 1
Source/WebKit2/UIProcess/WebPageProxy.h:290:  The parameter name &quot;string&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>889118</commentid>
    <comment_count>3</comment_count>
      <attachid>201786</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-05-14 20:52:25 -0700</bug_when>
    <thetext>Comment on attachment 201786
Patch

Attachment 201786 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/477309</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>890202</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-05-16 21:33:51 -0700</bug_when>
    <thetext>Committed r150242: &lt;http://trac.webkit.org/changeset/150242&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>890230</commentid>
    <comment_count>5</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-05-17 00:14:11 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Committed r150242: &lt;http://trac.webkit.org/changeset/150242&gt;

cc Qt guys, because it broke the build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>890260</commentid>
    <comment_count>6</comment_count>
    <who name="Zoltan Arvai">zarvai</who>
    <bug_when>2013-05-17 03:07:22 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; Committed r150242: &lt;http://trac.webkit.org/changeset/150242&gt;
&gt; 
&gt; cc Qt guys, because it broke the build.

Build fix for Qt landed in
http://trac.webkit.org/changeset/150245</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>201786</attachid>
            <date>2013-05-14 20:45:27 -0700</date>
            <delta_ts>2013-05-15 11:40:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-116132-20130514204424.patch</filename>
            <type>text/plain</type>
            <size>55819</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1MDA5OSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBACisyMDEzLTA1LTE0ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIHZhcmlhbnRzIG9mIHRoZSBsb2Fk
aW5nIEFQSXMgdGhhdCB0YWtlIHVzZXIgZGF0YSBhbmQgYSB3YXkgZm9yIHRoZSBpbmplY3RlZCBi
dW5kbGUgdG8gZmluZCBvdXQgYWJvdXQgdGhlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE2MTMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkcyAiV2l0aFVzZXJEYXRhIiB2ZXJzaW9ucyBvZiBhbGwg
dGhlIGxvYWQgQVBJcyBhbmQgdHdvIG5ldyBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnQgZnVuY3Rp
b25zLAorICAgICAgICB3aWxsTG9hZFVSTFJlcXVlc3QgYW5kIHdpbGxMb2FkRGF0YVJlcXVlc3Qg
dG8gbGV0IHRoZSBidW5kbGUgYWNjZXNzIHRoZW0uCisKKyAgICAgICAgQWRkcyBXZWJLaXQyV2ls
bExvYWRUZXN0LiogQVBJIHRlc3RzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFn
ZS5jcHA6CisgICAgICAgIChXS1BhZ2VMb2FkVVJMV2l0aFVzZXJEYXRhKToKKyAgICAgICAgKFdL
UGFnZUxvYWRVUkxSZXF1ZXN0V2l0aFVzZXJEYXRhKToKKyAgICAgICAgKFdLUGFnZUxvYWRGaWxl
KToKKyAgICAgICAgKFdLUGFnZUxvYWRGaWxlV2l0aFVzZXJEYXRhKToKKyAgICAgICAgKFdLUGFn
ZUxvYWRIVE1MU3RyaW5nV2l0aFVzZXJEYXRhKToKKyAgICAgICAgKFdLUGFnZUxvYWRBbHRlcm5h
dGVIVE1MU3RyaW5nV2l0aFVzZXJEYXRhKToKKyAgICAgICAgKFdLUGFnZUxvYWRQbGFpblRleHRT
dHJpbmdXaXRoVXNlckRhdGEpOgorICAgICAgICAoV0tQYWdlTG9hZFdlYkFyY2hpdmVEYXRhV2l0
aFVzZXJEYXRhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oOgorICAgICAgICAoV2ViUGFnZVByb3h5KToKKyAgICAgICAgKiBXZWJLaXQyLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWRVUkxSZXF1ZXN0KToK
KyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9h
ZERhdGFSZXF1ZXN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgor
CiAyMDEzLTA1LTE0ICBTaW1vbiBDb29wZXIgIDxzY29vcGVyQGFwcGxlLmNvbT4KIAogICAgICAg
ICBBZGQgYSBwcmVmZXJlbmNlIHRoYXQgY2FuIGRpc2FibGUgdGhlIGZha2UgU1lTViBTSE0gc2hp
bQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlz
aW9uIDE1MDAyMikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02NjgsNyArNjY4LDcgQEAgYm9vbCBXZWJQYWdlUHJveHk6Om1h
eWJlSW5pdGlhbGl6ZVNhbmRibwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFdlYlBhZ2VQ
cm94eTo6bG9hZFVSTChjb25zdCBTdHJpbmcmIHVybCkKK3ZvaWQgV2ViUGFnZVByb3h5Ojpsb2Fk
VVJMKGNvbnN0IFN0cmluZyYgdXJsLCBBUElPYmplY3QqIHVzZXJEYXRhKQogewogICAgIHNldFBl
bmRpbmdBUElSZXF1ZXN0VVJMKHVybCk7CiAKQEAgLTY3OSwxMSArNjc5LDExIEBAIHZvaWQgV2Vi
UGFnZVByb3h5Ojpsb2FkVVJMKGNvbnN0IFN0cmluZyYKICAgICBib29sIGNyZWF0ZWRFeHRlbnNp
b24gPSBtYXliZUluaXRpYWxpemVTYW5kYm94RXh0ZW5zaW9uSGFuZGxlKEtVUkwoS1VSTCgpLCB1
cmwpLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKICAgICBpZiAoY3JlYXRlZEV4dGVuc2lvbikK
ICAgICAgICAgbV9wcm9jZXNzLT53aWxsQWNxdWlyZVVuaXZlcnNhbEZpbGVSZWFkU2FuZGJveEV4
dGVuc2lvbigpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFVS
TCh1cmwsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkVVJMKHVybCwgc2FuZGJveEV4dGVuc2lvbkhh
bmRsZSwgV2ViQ29udGV4dFVzZXJNZXNzYWdlRW5jb2Rlcih1c2VyRGF0YSkpLCBtX3BhZ2VJRCk7
CiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCktPnN0YXJ0KCk7CiB9CiAKLXZv
aWQgV2ViUGFnZVByb3h5Ojpsb2FkVVJMUmVxdWVzdChXZWJVUkxSZXF1ZXN0KiB1cmxSZXF1ZXN0
KQordm9pZCBXZWJQYWdlUHJveHk6OmxvYWRVUkxSZXF1ZXN0KFdlYlVSTFJlcXVlc3QqIHVybFJl
cXVlc3QsIEFQSU9iamVjdCogdXNlckRhdGEpCiB7CiAgICAgc2V0UGVuZGluZ0FQSVJlcXVlc3RV
UkwodXJsUmVxdWVzdC0+cmVzb3VyY2VSZXF1ZXN0KCkudXJsKCkpOwogCkBAIC02OTQsNzUgKzY5
NCw3NSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFVSTFJlcXVlc3QoV2ViVVJMCiAgICAgYm9v
bCBjcmVhdGVkRXh0ZW5zaW9uID0gbWF5YmVJbml0aWFsaXplU2FuZGJveEV4dGVuc2lvbkhhbmRs
ZSh1cmxSZXF1ZXN0LT5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKSwgc2FuZGJveEV4dGVuc2lvbkhh
bmRsZSk7CiAgICAgaWYgKGNyZWF0ZWRFeHRlbnNpb24pCiAgICAgICAgIG1fcHJvY2Vzcy0+d2ls
bEFjcXVpcmVVbml2ZXJzYWxGaWxlUmVhZFNhbmRib3hFeHRlbnNpb24oKTsKLSAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRVUkxSZXF1ZXN0KHVybFJlcXVlc3QtPnJl
c291cmNlUmVxdWVzdCgpLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSwgbV9wYWdlSUQpOworICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFVSTFJlcXVlc3QodXJsUmVx
dWVzdC0+cmVzb3VyY2VSZXF1ZXN0KCksIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIFdlYkNvbnRl
eHRVc2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEpKSwgbV9wYWdlSUQpOwogICAgIG1fcHJvY2Vz
cy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLT5zdGFydCgpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94
eTo6bG9hZEhUTUxTdHJpbmcoY29uc3QgU3RyaW5nJiBodG1sU3RyaW5nLCBjb25zdCBTdHJpbmcm
IGJhc2VVUkwpCit2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxl
VVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlc291cmNlRGlyZWN0b3J5VVJMU3RyaW5nLCBBUElP
YmplY3QqIHVzZXJEYXRhKQogewogICAgIGlmICghaXNWYWxpZCgpKQogICAgICAgICByZWF0dGFj
aFRvV2ViUHJvY2VzcygpOwogCi0gICAgbV9wcm9jZXNzLT5hc3N1bWVSZWFkQWNjZXNzVG9CYXNl
VVJMKGJhc2VVUkwpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9h
ZEhUTUxTdHJpbmcoaHRtbFN0cmluZywgYmFzZVVSTCksIG1fcGFnZUlEKTsKKyAgICBLVVJMIGZp
bGVVUkwgPSBLVVJMKEtVUkwoKSwgZmlsZVVSTFN0cmluZyk7CisgICAgaWYgKCFmaWxlVVJMLmlz
TG9jYWxGaWxlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEtVUkwgcmVzb3VyY2VEaXJlY3Rv
cnlVUkw7CisgICAgaWYgKHJlc291cmNlRGlyZWN0b3J5VVJMU3RyaW5nLmlzTnVsbCgpKQorICAg
ICAgICByZXNvdXJjZURpcmVjdG9yeVVSTCA9IEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBBU0NJSUxp
dGVyYWwoImZpbGU6Ly8vIikpOworICAgIGVsc2UgeworICAgICAgICByZXNvdXJjZURpcmVjdG9y
eVVSTCA9IEtVUkwoS1VSTCgpLCByZXNvdXJjZURpcmVjdG9yeVVSTFN0cmluZyk7CisgICAgICAg
IGlmICghcmVzb3VyY2VEaXJlY3RvcnlVUkwuaXNMb2NhbEZpbGUoKSkKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBTdHJpbmcgcmVzb3VyY2VEaXJlY3RvcnlQYXRoID0gcmVzb3Vy
Y2VEaXJlY3RvcnlVUkwuZmlsZVN5c3RlbVBhdGgoKTsKKworICAgIFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlOworICAgIFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZUhhbmRsZShyZXNvdXJjZURpcmVjdG9yeVBhdGgsIFNhbmRib3hFeHRlbnNpb246OlJlYWRP
bmx5LCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBtX3Byb2Nlc3MtPmFzc3VtZVJlYWRB
Y2Nlc3NUb0Jhc2VVUkwocmVzb3VyY2VEaXJlY3RvcnlVUkwpOworICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFVSTChmaWxlVVJMLCBzYW5kYm94RXh0ZW5zaW9uSGFu
ZGxlLCBXZWJDb250ZXh0VXNlck1lc3NhZ2VFbmNvZGVyKHVzZXJEYXRhKSksIG1fcGFnZUlEKTsK
ICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS0+c3RhcnQoKTsKIH0KIAotdm9p
ZCBXZWJQYWdlUHJveHk6OmxvYWRBbHRlcm5hdGVIVE1MU3RyaW5nKGNvbnN0IFN0cmluZyYgaHRt
bFN0cmluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIHVucmVhY2hhYmxl
VVJMKQordm9pZCBXZWJQYWdlUHJveHk6OmxvYWRIVE1MU3RyaW5nKGNvbnN0IFN0cmluZyYgaHRt
bFN0cmluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBBUElPYmplY3QqIHVzZXJEYXRhKQogewog
ICAgIGlmICghaXNWYWxpZCgpKQogICAgICAgICByZWF0dGFjaFRvV2ViUHJvY2VzcygpOwogCi0g
ICAgaWYgKG1fbWFpbkZyYW1lKQotICAgICAgICBtX21haW5GcmFtZS0+c2V0VW5yZWFjaGFibGVV
UkwodW5yZWFjaGFibGVVUkwpOwotCiAgICAgbV9wcm9jZXNzLT5hc3N1bWVSZWFkQWNjZXNzVG9C
YXNlVVJMKGJhc2VVUkwpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
TG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcoaHRtbFN0cmluZywgYmFzZVVSTCwgdW5yZWFjaGFibGVV
UkwpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpM
b2FkSFRNTFN0cmluZyhodG1sU3RyaW5nLCBiYXNlVVJMLCBXZWJDb250ZXh0VXNlck1lc3NhZ2VF
bmNvZGVyKHVzZXJEYXRhKSksIG1fcGFnZUlEKTsKICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVu
ZXNzVGltZXIoKS0+c3RhcnQoKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRQbGFpblRl
eHRTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCit2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZEFs
dGVybmF0ZUhUTUxTdHJpbmcoY29uc3QgU3RyaW5nJiBodG1sU3RyaW5nLCBjb25zdCBTdHJpbmcm
IGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgdW5yZWFjaGFibGVVUkwsIEFQSU9iamVjdCogdXNlckRh
dGEpCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAgICAgIHJlYXR0YWNoVG9XZWJQcm9jZXNz
KCk7CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRQbGFpblRl
eHRTdHJpbmcoc3RyaW5nKSwgbV9wYWdlSUQpOworICAgIGlmIChtX21haW5GcmFtZSkKKyAgICAg
ICAgbV9tYWluRnJhbWUtPnNldFVucmVhY2hhYmxlVVJMKHVucmVhY2hhYmxlVVJMKTsKKworICAg
IG1fcHJvY2Vzcy0+YXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTChiYXNlVVJMKTsKKyAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRBbHRlcm5hdGVIVE1MU3RyaW5nKGh0
bWxTdHJpbmcsIGJhc2VVUkwsIHVucmVhY2hhYmxlVVJMLCBXZWJDb250ZXh0VXNlck1lc3NhZ2VF
bmNvZGVyKHVzZXJEYXRhKSksIG1fcGFnZUlEKTsKICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVu
ZXNzVGltZXIoKS0+c3RhcnQoKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRXZWJBcmNo
aXZlRGF0YShjb25zdCBXZWJEYXRhKiB3ZWJBcmNoaXZlRGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5
Ojpsb2FkUGxhaW5UZXh0U3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBBUElPYmplY3QqIHVz
ZXJEYXRhKQogewogICAgIGlmICghaXNWYWxpZCgpKQogICAgICAgICByZWF0dGFjaFRvV2ViUHJv
Y2VzcygpOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkV2Vi
QXJjaGl2ZURhdGEod2ViQXJjaGl2ZURhdGEtPmRhdGFSZWZlcmVuY2UoKSksIG1fcGFnZUlEKTsK
KyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRQbGFpblRleHRTdHJp
bmcoc3RyaW5nLCBXZWJDb250ZXh0VXNlck1lc3NhZ2VFbmNvZGVyKHVzZXJEYXRhKSksIG1fcGFn
ZUlEKTsKICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS0+c3RhcnQoKTsKIH0K
IAotdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVVSTFN0cmlu
ZywgY29uc3QgU3RyaW5nJiByZXNvdXJjZURpcmVjdG9yeVVSTFN0cmluZykKK3ZvaWQgV2ViUGFn
ZVByb3h5Ojpsb2FkV2ViQXJjaGl2ZURhdGEoY29uc3QgV2ViRGF0YSogd2ViQXJjaGl2ZURhdGEs
IEFQSU9iamVjdCogdXNlckRhdGEpCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAgICAgIHJl
YXR0YWNoVG9XZWJQcm9jZXNzKCk7CiAKLSAgICBLVVJMIGZpbGVVUkwgPSBLVVJMKEtVUkwoKSwg
ZmlsZVVSTFN0cmluZyk7Ci0gICAgaWYgKCFmaWxlVVJMLmlzTG9jYWxGaWxlKCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIEtVUkwgcmVzb3VyY2VEaXJlY3RvcnlVUkw7Ci0gICAgaWYgKHJlc291
cmNlRGlyZWN0b3J5VVJMU3RyaW5nLmlzTnVsbCgpKQotICAgICAgICByZXNvdXJjZURpcmVjdG9y
eVVSTCA9IEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBBU0NJSUxpdGVyYWwoImZpbGU6Ly8vIikpOwot
ICAgIGVsc2UgewotICAgICAgICByZXNvdXJjZURpcmVjdG9yeVVSTCA9IEtVUkwoS1VSTCgpLCBy
ZXNvdXJjZURpcmVjdG9yeVVSTFN0cmluZyk7Ci0gICAgICAgIGlmICghcmVzb3VyY2VEaXJlY3Rv
cnlVUkwuaXNMb2NhbEZpbGUoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBT
dHJpbmcgcmVzb3VyY2VEaXJlY3RvcnlQYXRoID0gcmVzb3VyY2VEaXJlY3RvcnlVUkwuZmlsZVN5
c3RlbVBhdGgoKTsKLQotICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5z
aW9uSGFuZGxlOwotICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShyZXNvdXJjZURp
cmVjdG9yeVBhdGgsIFNhbmRib3hFeHRlbnNpb246OlJlYWRPbmx5LCBzYW5kYm94RXh0ZW5zaW9u
SGFuZGxlKTsKLSAgICBtX3Byb2Nlc3MtPmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwocmVzb3Vy
Y2VEaXJlY3RvcnlVUkwpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
TG9hZFVSTChmaWxlVVJMLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSwgbV9wYWdlSUQpOworICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFdlYkFyY2hpdmVEYXRhKHdl
YkFyY2hpdmVEYXRhLT5kYXRhUmVmZXJlbmNlKCksIFdlYkNvbnRleHRVc2VyTWVzc2FnZUVuY29k
ZXIodXNlckRhdGEpKSwgbV9wYWdlSUQpOwogICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NU
aW1lcigpLT5zdGFydCgpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCShyZXZpc2lvbiAxNTAwMjIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4MiwxMyArMjgyLDEzIEBAIHB1Ymxp
YzoKICAgICBib29sIHRyeUNsb3NlKCk7CiAgICAgYm9vbCBpc0Nsb3NlZCgpIGNvbnN0IHsgcmV0
dXJuIG1faXNDbG9zZWQ7IH0KIAotICAgIHZvaWQgbG9hZFVSTChjb25zdCBTdHJpbmcmKTsKLSAg
ICB2b2lkIGxvYWRVUkxSZXF1ZXN0KFdlYlVSTFJlcXVlc3QqKTsKLSAgICB2b2lkIGxvYWRIVE1M
U3RyaW5nKGNvbnN0IFN0cmluZyYgaHRtbFN0cmluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMKTsK
LSAgICB2b2lkIGxvYWRBbHRlcm5hdGVIVE1MU3RyaW5nKGNvbnN0IFN0cmluZyYgaHRtbFN0cmlu
ZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIHVucmVhY2hhYmxlVVJMKTsK
LSAgICB2b2lkIGxvYWRQbGFpblRleHRTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpOwotICAg
IHZvaWQgbG9hZFdlYkFyY2hpdmVEYXRhKGNvbnN0IFdlYkRhdGEqKTsKLSAgICB2b2lkIGxvYWRG
aWxlKGNvbnN0IFN0cmluZyYgZmlsZVVSTCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURpcmVjdG9y
eVVSTCk7CisgICAgdm9pZCBsb2FkVVJMKGNvbnN0IFN0cmluZyYsIEFQSU9iamVjdCogdXNlckRh
dGEgPSAwKTsKKyAgICB2b2lkIGxvYWRVUkxSZXF1ZXN0KFdlYlVSTFJlcXVlc3QqLCBBUElPYmpl
Y3QqIHVzZXJEYXRhID0gMCk7CisgICAgdm9pZCBsb2FkRmlsZShjb25zdCBTdHJpbmcmIGZpbGVV
UkwsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEaXJlY3RvcnlVUkwsIEFQSU9iamVjdCogdXNlckRh
dGEgPSAwKTsKKyAgICB2b2lkIGxvYWRIVE1MU3RyaW5nKGNvbnN0IFN0cmluZyYgaHRtbFN0cmlu
ZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBBUElPYmplY3QqIHVzZXJEYXRhID0gMCk7CisgICAg
dm9pZCBsb2FkQWx0ZXJuYXRlSFRNTFN0cmluZyhjb25zdCBTdHJpbmcmIGh0bWxTdHJpbmcsIGNv
bnN0IFN0cmluZyYgYmFzZVVSTCwgY29uc3QgU3RyaW5nJiB1bnJlYWNoYWJsZVVSTCwgQVBJT2Jq
ZWN0KiB1c2VyRGF0YSA9IDApOworICAgIHZvaWQgbG9hZFBsYWluVGV4dFN0cmluZyhjb25zdCBT
dHJpbmcmIHN0cmluZywgQVBJT2JqZWN0KiB1c2VyRGF0YSA9IDApOworICAgIHZvaWQgbG9hZFdl
YkFyY2hpdmVEYXRhKGNvbnN0IFdlYkRhdGEqLCBBUElPYmplY3QqIHVzZXJEYXRhID0gMCk7CiAK
ICAgICB2b2lkIHN0b3BMb2FkaW5nKCk7CiAgICAgdm9pZCByZWxvYWQoYm9vbCByZWxvYWRGcm9t
T3JpZ2luKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3Bw
CShyZXZpc2lvbiAxNTAwMjIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQ
YWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsMzQgKzY3LDY5IEBAIHZvaWQgV0tQYWdlTG9h
ZFVSTChXS1BhZ2VSZWYgcGFnZVJlZiwgV0sKICAgICB0b0ltcGwocGFnZVJlZiktPmxvYWRVUkwo
dG9XVEZTdHJpbmcoVVJMUmVmKSk7CiB9CiAKK3ZvaWQgV0tQYWdlTG9hZFVSTFdpdGhVc2VyRGF0
YShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tVUkxSZWYgVVJMUmVmLCBXS1R5cGVSZWYgdXNlckRhdGFS
ZWYpCit7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5sb2FkVVJMKHRvV1RGU3RyaW5nKFVSTFJlZiks
IHRvSW1wbCh1c2VyRGF0YVJlZikpOworfQorCiB2b2lkIFdLUGFnZUxvYWRVUkxSZXF1ZXN0KFdL
UGFnZVJlZiBwYWdlUmVmLCBXS1VSTFJlcXVlc3RSZWYgdXJsUmVxdWVzdFJlZikKIHsKICAgICB0
b0ltcGwocGFnZVJlZiktPmxvYWRVUkxSZXF1ZXN0KHRvSW1wbCh1cmxSZXF1ZXN0UmVmKSk7ICAg
IAogfQogCit2b2lkIFdLUGFnZUxvYWRVUkxSZXF1ZXN0V2l0aFVzZXJEYXRhKFdLUGFnZVJlZiBw
YWdlUmVmLCBXS1VSTFJlcXVlc3RSZWYgdXJsUmVxdWVzdFJlZiwgV0tUeXBlUmVmIHVzZXJEYXRh
UmVmKQoreworICAgIHRvSW1wbChwYWdlUmVmKS0+bG9hZFVSTFJlcXVlc3QodG9JbXBsKHVybFJl
cXVlc3RSZWYpLCB0b0ltcGwodXNlckRhdGFSZWYpKTsgICAgCit9CisKK3ZvaWQgV0tQYWdlTG9h
ZEZpbGUoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLVVJMUmVmIGZpbGVVUkwsIFdLVVJMUmVmIHJlc291
cmNlRGlyZWN0b3J5VVJMKQoreworICAgIHRvSW1wbChwYWdlUmVmKS0+bG9hZEZpbGUodG9XVEZT
dHJpbmcoZmlsZVVSTCksIHRvV1RGU3RyaW5nKHJlc291cmNlRGlyZWN0b3J5VVJMKSk7Cit9CisK
K3ZvaWQgV0tQYWdlTG9hZEZpbGVXaXRoVXNlckRhdGEoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLVVJM
UmVmIGZpbGVVUkwsIFdLVVJMUmVmIHJlc291cmNlRGlyZWN0b3J5VVJMLCBXS1R5cGVSZWYgdXNl
ckRhdGFSZWYpCit7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5sb2FkRmlsZSh0b1dURlN0cmluZyhm
aWxlVVJMKSwgdG9XVEZTdHJpbmcocmVzb3VyY2VEaXJlY3RvcnlVUkwpLCB0b0ltcGwodXNlckRh
dGFSZWYpKTsKK30KKwogdm9pZCBXS1BhZ2VMb2FkSFRNTFN0cmluZyhXS1BhZ2VSZWYgcGFnZVJl
ZiwgV0tTdHJpbmdSZWYgaHRtbFN0cmluZ1JlZiwgV0tVUkxSZWYgYmFzZVVSTFJlZikKIHsKICAg
ICB0b0ltcGwocGFnZVJlZiktPmxvYWRIVE1MU3RyaW5nKHRvV1RGU3RyaW5nKGh0bWxTdHJpbmdS
ZWYpLCB0b1dURlN0cmluZyhiYXNlVVJMUmVmKSk7CiB9CiAKK3ZvaWQgV0tQYWdlTG9hZEhUTUxT
dHJpbmdXaXRoVXNlckRhdGEoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIGh0bWxTdHJp
bmdSZWYsIFdLVVJMUmVmIGJhc2VVUkxSZWYsIFdLVHlwZVJlZiB1c2VyRGF0YVJlZikKK3sKKyAg
ICB0b0ltcGwocGFnZVJlZiktPmxvYWRIVE1MU3RyaW5nKHRvV1RGU3RyaW5nKGh0bWxTdHJpbmdS
ZWYpLCB0b1dURlN0cmluZyhiYXNlVVJMUmVmKSwgdG9JbXBsKHVzZXJEYXRhUmVmKSk7Cit9CisK
IHZvaWQgV0tQYWdlTG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcoV0tQYWdlUmVmIHBhZ2VSZWYsIFdL
U3RyaW5nUmVmIGh0bWxTdHJpbmdSZWYsIFdLVVJMUmVmIGJhc2VVUkxSZWYsIFdLVVJMUmVmIHVu
cmVhY2hhYmxlVVJMUmVmKQogewogICAgIHRvSW1wbChwYWdlUmVmKS0+bG9hZEFsdGVybmF0ZUhU
TUxTdHJpbmcodG9XVEZTdHJpbmcoaHRtbFN0cmluZ1JlZiksIHRvV1RGU3RyaW5nKGJhc2VVUkxS
ZWYpLCB0b1dURlN0cmluZyh1bnJlYWNoYWJsZVVSTFJlZikpOwogfQogCit2b2lkIFdLUGFnZUxv
YWRBbHRlcm5hdGVIVE1MU3RyaW5nV2l0aFVzZXJEYXRhKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1N0
cmluZ1JlZiBodG1sU3RyaW5nUmVmLCBXS1VSTFJlZiBiYXNlVVJMUmVmLCBXS1VSTFJlZiB1bnJl
YWNoYWJsZVVSTFJlZiwgV0tUeXBlUmVmIHVzZXJEYXRhUmVmKQoreworICAgIHRvSW1wbChwYWdl
UmVmKS0+bG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcodG9XVEZTdHJpbmcoaHRtbFN0cmluZ1JlZiks
IHRvV1RGU3RyaW5nKGJhc2VVUkxSZWYpLCB0b1dURlN0cmluZyh1bnJlYWNoYWJsZVVSTFJlZiks
IHRvSW1wbCh1c2VyRGF0YVJlZikpOworfQorCiB2b2lkIFdLUGFnZUxvYWRQbGFpblRleHRTdHJp
bmcoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIHBsYWluVGV4dFN0cmluZ1JlZikKIHsK
ICAgICB0b0ltcGwocGFnZVJlZiktPmxvYWRQbGFpblRleHRTdHJpbmcodG9XVEZTdHJpbmcocGxh
aW5UZXh0U3RyaW5nUmVmKSk7ICAgIAogfQogCit2b2lkIFdLUGFnZUxvYWRQbGFpblRleHRTdHJp
bmdXaXRoVXNlckRhdGEoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIHBsYWluVGV4dFN0
cmluZ1JlZiwgV0tUeXBlUmVmIHVzZXJEYXRhUmVmKQoreworICAgIHRvSW1wbChwYWdlUmVmKS0+
bG9hZFBsYWluVGV4dFN0cmluZyh0b1dURlN0cmluZyhwbGFpblRleHRTdHJpbmdSZWYpLCB0b0lt
cGwodXNlckRhdGFSZWYpKTsgICAgCit9CisKIHZvaWQgV0tQYWdlTG9hZFdlYkFyY2hpdmVEYXRh
KFdLUGFnZVJlZiBwYWdlUmVmLCBXS0RhdGFSZWYgd2ViQXJjaGl2ZURhdGFSZWYpCiB7CiAgICAg
dG9JbXBsKHBhZ2VSZWYpLT5sb2FkV2ViQXJjaGl2ZURhdGEodG9JbXBsKHdlYkFyY2hpdmVEYXRh
UmVmKSk7CiB9CiAKLXZvaWQgV0tQYWdlTG9hZEZpbGUoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLVVJM
UmVmIGZpbGVVUkwsIFdLVVJMUmVmIHJlc291cmNlRGlyZWN0b3J5VVJMKQordm9pZCBXS1BhZ2VM
b2FkV2ViQXJjaGl2ZURhdGFXaXRoVXNlckRhdGEoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLRGF0YVJl
ZiB3ZWJBcmNoaXZlRGF0YVJlZiwgV0tUeXBlUmVmIHVzZXJEYXRhUmVmKQogewotICAgIHRvSW1w
bChwYWdlUmVmKS0+bG9hZEZpbGUodG9XVEZTdHJpbmcoZmlsZVVSTCksIHRvV1RGU3RyaW5nKHJl
c291cmNlRGlyZWN0b3J5VVJMKSk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5sb2FkV2ViQXJjaGl2
ZURhdGEodG9JbXBsKHdlYkFyY2hpdmVEYXRhUmVmKSwgdG9JbXBsKHVzZXJEYXRhUmVmKSk7CiB9
CiAKIHZvaWQgV0tQYWdlU3RvcExvYWRpbmcoV0tQYWdlUmVmIHBhZ2VSZWYpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oCShyZXZpc2lvbiAxNTAwMjIpCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM1NiwxMyArMzU2LDIzIEBAIFdLX0VYUE9SVCBXS1R5cGVJRCBXS1BhZ2VHZXRUeXBlSUQoKTsK
IFdLX0VYUE9SVCBXS0NvbnRleHRSZWYgV0tQYWdlR2V0Q29udGV4dChXS1BhZ2VSZWYgcGFnZSk7
CiBXS19FWFBPUlQgV0tQYWdlR3JvdXBSZWYgV0tQYWdlR2V0UGFnZUdyb3VwKFdLUGFnZVJlZiBw
YWdlKTsKIAorLy8gVVJMIFJlcXVlc3RzCiBXS19FWFBPUlQgdm9pZCBXS1BhZ2VMb2FkVVJMKFdL
UGFnZVJlZiBwYWdlLCBXS1VSTFJlZiB1cmwpOworV0tfRVhQT1JUIHZvaWQgV0tQYWdlTG9hZFVS
TFdpdGhVc2VyRGF0YShXS1BhZ2VSZWYgcGFnZSwgV0tVUkxSZWYgdXJsLCBXS1R5cGVSZWYgdXNl
ckRhdGEpOwogV0tfRVhQT1JUIHZvaWQgV0tQYWdlTG9hZFVSTFJlcXVlc3QoV0tQYWdlUmVmIHBh
Z2UsIFdLVVJMUmVxdWVzdFJlZiB1cmxSZXF1ZXN0KTsKK1dLX0VYUE9SVCB2b2lkIFdLUGFnZUxv
YWRVUkxSZXF1ZXN0V2l0aFVzZXJEYXRhKFdLUGFnZVJlZiBwYWdlLCBXS1VSTFJlcXVlc3RSZWYg
dXJsUmVxdWVzdCwgV0tUeXBlUmVmIHVzZXJEYXRhKTsKK1dLX0VYUE9SVCB2b2lkIFdLUGFnZUxv
YWRGaWxlKFdLUGFnZVJlZiBwYWdlLCBXS1VSTFJlZiBmaWxlVVJMLCBXS1VSTFJlZiByZXNvdXJj
ZURpcmVjdG9yeVVSTCk7CitXS19FWFBPUlQgdm9pZCBXS1BhZ2VMb2FkRmlsZVdpdGhVc2VyRGF0
YShXS1BhZ2VSZWYgcGFnZSwgV0tVUkxSZWYgZmlsZVVSTCwgV0tVUkxSZWYgcmVzb3VyY2VEaXJl
Y3RvcnlVUkwsIFdLVHlwZVJlZiB1c2VyRGF0YSk7CisKKy8vIERhdGEgUmVxdWVzdHMKIFdLX0VY
UE9SVCB2b2lkIFdLUGFnZUxvYWRIVE1MU3RyaW5nKFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1Jl
ZiBodG1sU3RyaW5nLCBXS1VSTFJlZiBiYXNlVVJMKTsKK1dLX0VYUE9SVCB2b2lkIFdLUGFnZUxv
YWRIVE1MU3RyaW5nV2l0aFVzZXJEYXRhKFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBodG1s
U3RyaW5nLCBXS1VSTFJlZiBiYXNlVVJMLCBXS1R5cGVSZWYgdXNlckRhdGEpOwogV0tfRVhQT1JU
IHZvaWQgV0tQYWdlTG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcoV0tQYWdlUmVmIHBhZ2UsIFdLU3Ry
aW5nUmVmIGh0bWxTdHJpbmcsIFdLVVJMUmVmIGJhc2VVUkwsIFdLVVJMUmVmIHVucmVhY2hhYmxl
VVJMKTsKK1dLX0VYUE9SVCB2b2lkIFdLUGFnZUxvYWRBbHRlcm5hdGVIVE1MU3RyaW5nV2l0aFVz
ZXJEYXRhKFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBodG1sU3RyaW5nLCBXS1VSTFJlZiBi
YXNlVVJMLCBXS1VSTFJlZiB1bnJlYWNoYWJsZVVSTCwgV0tUeXBlUmVmIHVzZXJEYXRhKTsKIFdL
X0VYUE9SVCB2b2lkIFdLUGFnZUxvYWRQbGFpblRleHRTdHJpbmcoV0tQYWdlUmVmIHBhZ2UsIFdL
U3RyaW5nUmVmIHBsYWluVGV4dFN0cmluZyk7CitXS19FWFBPUlQgdm9pZCBXS1BhZ2VMb2FkUGxh
aW5UZXh0U3RyaW5nV2l0aFVzZXJEYXRhKFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBwbGFp
blRleHRTdHJpbmcsIFdLVHlwZVJlZiB1c2VyRGF0YSk7CiBXS19FWFBPUlQgdm9pZCBXS1BhZ2VM
b2FkV2ViQXJjaGl2ZURhdGEoV0tQYWdlUmVmIHBhZ2UsIFdLRGF0YVJlZiB3ZWJBcmNoaXZlRGF0
YSk7Ci1XS19FWFBPUlQgdm9pZCBXS1BhZ2VMb2FkRmlsZShXS1BhZ2VSZWYgcGFnZSwgV0tVUkxS
ZWYgZmlsZVVSTCwgV0tVUkxSZWYgcmVzb3VyY2VEaXJlY3RvcnlVUkwpOworV0tfRVhQT1JUIHZv
aWQgV0tQYWdlTG9hZFdlYkFyY2hpdmVEYXRhV2l0aFVzZXJEYXRhKFdLUGFnZVJlZiBwYWdlLCBX
S0RhdGFSZWYgd2ViQXJjaGl2ZURhdGEsIFdLVHlwZVJlZiB1c2VyRGF0YSk7CiAKIFdLX0VYUE9S
VCB2b2lkIFdLUGFnZVN0b3BMb2FkaW5nKFdLUGFnZVJlZiBwYWdlKTsKIFdLX0VYUE9SVCB2b2lk
IFdLUGFnZVJlbG9hZChXS1BhZ2VSZWYgcGFnZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJL
aXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNTAwMjIpCisr
KyBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtp
bmcgY29weSkKQEAgLTk4NSw3ICs5ODUsNiBAQAogCQlCQ0JDQjBDRDEyMTVFMzNBMDBERTU5Q0Eg
LyogSW1tdXRhYmxlRGljdGlvbmFyeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQ0JDQjBDQzEyMTVFMzNBMDBERTU5Q0EgLyogSW1tdXRhYmxlRGlj
dGlvbmFyeS5jcHAgKi87IH07CiAJCUJDQkQzOTE0MTI1QkIxQTgwMEQyQzI5RiAvKiBXZWJQYWdl
UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkNCRDM5MTIxMjVCQjFBODAwRDJDMjlGIC8qIFdlYlBhZ2VQcm94eU1l
c3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCUJDQkQzOTE1MTI1QkIxQTgwMEQyQzI5RiAvKiBX
ZWJQYWdlUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkNCRDM5MTMxMjVCQjFBODAwRDJDMjlGIC8qIFdlYlBhZ2VQcm94eU1lc3Nh
Z2VzLmggKi87IH07Ci0JCUJDQkQzQzNCMTI1QkZBN0EwMEQyQzI5RiAvKiBTdHJpbmdQYWlyVmVj
dG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0JE
M0MzQTEyNUJGQTdBMDBEMkMyOUYgLyogU3RyaW5nUGFpclZlY3Rvci5oICovOyB9OwogCQlCQ0JF
Q0RFNzE2QjY0MTY4MDAwNDdBMUEgLyogWFBDU2VydmljZUVudHJ5UG9pbnQubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0JFQ0RFNTE2QjY0MTY3MDAw
NDdBMUEgLyogWFBDU2VydmljZUVudHJ5UG9pbnQubW0gKi87IH07CiAJCUJDQkVDREU4MTZCNjQx
NjgwMDA0N0ExQSAvKiBYUENTZXJ2aWNlRW50cnlQb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCRUNERTYxNkI2NDE2NzAwMDQ3QTFBIC8qIFhQ
Q1NlcnZpY2VFbnRyeVBvaW50LmggKi87IH07CiAJCUJDQzQzQUJBMTI3Qjk1REMwMDMxN0YxNiAv
KiBQbGF0Zm9ybVBvcHVwTWVudURhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkNDNDNBQjgxMjdCOTVEQzAwMzE3RjE2IC8qIFBsYXRmb3JtUG9w
dXBNZW51RGF0YS5jcHAgKi87IH07CkBAIC0yNDg1LDcgKzI0ODQsNiBAQAogCQlCQ0JEMzhGQTEy
NUJBQjlBMDBEMkMyOUYgLyogV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IFdlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQkNCRDM5MTIxMjVCQjFBODAwRDJDMjlGIC8qIFdlYlBhZ2VQcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJQYWdl
UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
Q0JEMzkxMzEyNUJCMUE4MDBEMkMyOUYgLyogV2ViUGFnZVByb3h5TWVzc2FnZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUGFnZVByb3h5TWVzc2FnZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkNCRDNDM0ExMjVCRkE3QTAwRDJDMjlGIC8qIFN0cmlu
Z1BhaXJWZWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyaW5nUGFp
clZlY3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0JFQ0RDMDE2QjVDRTBE
MDAwNDdBMUEgLyogSW5mby5wbGlzdCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQucGxpc3QueG1sOyBwYXRoID0gSW5mby5wbGlzdDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNCRUNEQzIxNkI1Q0UyQTAwMDQ3QTFBIC8qIFBsdWdp
blNlcnZpY2UuRGV2ZWxvcG1lbnQueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gUGx1Z2luU2Vydmlj
ZS5EZXZlbG9wbWVudC54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNC
RUNERTUxNkI2NDE2NzAwMDQ3QTFBIC8qIFhQQ1NlcnZpY2VFbnRyeVBvaW50Lm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gWFBDU2VydmljZUVudHJ5UG9pbnQubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMjk2LDcgKzMyOTQsNiBAQAogCQkJCUUx
RURGREFEMTYyODg5M0IwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmggKi8sCiAJCQkJNTI3MkIyODgxNDA2OTg1RDAwOTZBNUQwIC8qIFN0YXRpc3RpY3NE
YXRhLmNwcCAqLywKIAkJCQk1MjcyQjI4OTE0MDY5ODVEMDA5NkE1RDAgLyogU3RhdGlzdGljc0Rh
dGEuaCAqLywKLQkJCQlCQ0JEM0MzQTEyNUJGQTdBMDBEMkMyOUYgLyogU3RyaW5nUGFpclZlY3Rv
ci5oICovLAogCQkJCTFBNUU0REEzMTJEM0JEM0QwMDk5QTJCQiAvKiBUZXh0Q2hlY2tlclN0YXRl
LmggKi8sCiAJCQkJMUE2NDI0NUQxMkRFMjlBMTAwQ0FBRTJDIC8qIFVwZGF0ZUluZm8uY3BwICov
LAogCQkJCTFBNjQyNDVDMTJERTI5QTEwMENBQUUyQyAvKiBVcGRhdGVJbmZvLmggKi8sCkBAIC01
NDg1LDcgKzU0ODIsNiBAQAogCQkJCTFBRDMzMDZGMTZCMUQ5OTEwMDRGNjBFNyAvKiBTdG9yYWdl
QXJlYUltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNDRCOTVDMTZCNzNGOUYwMEI3QkJEOCAv
KiBTdG9yYWdlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFCMzFBOTcxNkJDNjg4MTAw
RjZEQkM5IC8qIFN0b3JhZ2VNYW5hZ2VyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAotCQkJCUJD
QkQzQzNCMTI1QkZBN0EwMEQyQzI5RiAvKiBTdHJpbmdQYWlyVmVjdG9yLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQTEzQkVCNDE2MzVBOUM4MDBGMTlDMDMgLyogU3RyaW5nUmVmZXJlbmNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkyOTZCRDg1RDE1MDE5QkMzMDA3MUY0MjQgLyogU3RyaW5nVXRpbGl0
aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTgxNUJBMDE2QTYyMjIxMDA1NDUwMUYgLyogU3lu
Y05ldHdvcmtSZXNvdXJjZUxvYWRlci5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNs
aWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiAxNTAw
MjIpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDEzICszMSw0
NCBAQAogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQuaCIKICNpbmNsdWRlICJX
S0FQSUNhc3QuaCIKICNpbmNsdWRlICJXS0J1bmRsZUFQSUNhc3QuaCIKKyNpbmNsdWRlICJXZWJE
YXRhLmgiCiAjaW5jbHVkZSAiV2ViRXJyb3IuaCIKKyNpbmNsdWRlICJXZWJVUkxSZXF1ZXN0Lmgi
CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCit2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWRVUkxS
ZXF1ZXN0KFdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgQVBJ
T2JqZWN0KiB1c2VyRGF0YSkKK3sKKyAgICBpZiAoIW1fY2xpZW50LndpbGxMb2FkVVJMUmVxdWVz
dCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jbGllbnQud2lsbExvYWRVUkxSZXF1ZXN0KHRv
QVBJKHBhZ2UpLCB0b0FQSShyZXF1ZXN0KSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5jbGll
bnRJbmZvKTsKK30KKworc3RhdGljIHZvaWQgcmVsZWFzZVNoYXJlZEJ1ZmZlcih1bnNpZ25lZCBj
aGFyKiwgY29uc3Qgdm9pZCogZGF0YSkKK3sKKyAgICAvLyBCYWxhbmNlZCBieSByZWYoKSBpbiBJ
bmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QoKS4KKyAg
ICBzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihjb25zdF9jYXN0PHZvaWQqPihkYXRhKSktPmRl
cmVmKCk7Cit9CisKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9h
ZERhdGFSZXF1ZXN0KFdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25z
dCBTdHJpbmcmIGVuY29kaW5nTmFtZSwgY29uc3QgS1VSTCYgdW5yZWFjaGFibGVVUkwsIEFQSU9i
amVjdCogdXNlckRhdGEpCit7CisgICAgaWYgKCFtX2NsaWVudC53aWxsTG9hZERhdGFSZXF1ZXN0
KQorICAgICAgICByZXR1cm47CisKKyAgICBSZWZQdHI8V2ViRGF0YT4gd2ViRGF0YTsKKyAgICBp
ZiAoZGF0YSkgeworICAgICAgICBjb25zdF9jYXN0PFNoYXJlZEJ1ZmZlcio+KGRhdGEpLT5yZWYo
KTsKKyAgICAgICAgd2ViRGF0YSA9IFdlYkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKChjb25z
dCB1bnNpZ25lZCBjaGFyKilkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSwgcmVsZWFzZVNoYXJl
ZEJ1ZmZlciwgZGF0YSk7CisgICAgfQorCisgICAgbV9jbGllbnQud2lsbExvYWREYXRhUmVxdWVz
dCh0b0FQSShwYWdlKSwgdG9BUEkocmVxdWVzdCksIHRvQVBJKHdlYkRhdGEuZ2V0KCkpLCB0b0FQ
SShNSU1FVHlwZS5pbXBsKCkpLCB0b0FQSShlbmNvZGluZ05hbWUuaW1wbCgpKSwgdG9VUkxSZWYo
dW5yZWFjaGFibGVVUkwuc3RyaW5nKCkuaW1wbCgpKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVu
dC5jbGllbnRJbmZvKTsKK30KKwogYm9vbCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6
OnNob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtKFdlYlBhZ2UqIHBhZ2UsIEluamVjdGVkQnVu
ZGxlQmFja0ZvcndhcmRMaXN0SXRlbSogaXRlbSwgUmVmUHRyPEFQSU9iamVjdD4mIHVzZXJEYXRh
KQogewogICAgIGlmICghbV9jbGllbnQuc2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0pCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgJKHJl
dmlzaW9uIDE1MDAyMikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3
LDkgKzM3LDExIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBET01XaW5kb3dFeHRlbnNp
b247CiBjbGFzcyBET01XcmFwcGVyV29ybGQ7CitjbGFzcyBLVVJMOwogY2xhc3MgUmVzb3VyY2VF
cnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Citj
bGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTEsNiArNTMs
OSBAQCBjbGFzcyBXZWJGcmFtZTsKIAogY2xhc3MgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xp
ZW50IDogcHVibGljIEFQSUNsaWVudDxXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnQsIGtXS0J1bmRs
ZVBhZ2VMb2FkZXJDbGllbnRDdXJyZW50VmVyc2lvbj4gewogcHVibGljOgorICAgIHZvaWQgd2ls
bExvYWRVUkxSZXF1ZXN0KFdlYlBhZ2UqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
LCBBUElPYmplY3QqKTsKKyAgICB2b2lkIHdpbGxMb2FkRGF0YVJlcXVlc3QoV2ViUGFnZSosIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ciosIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBB
UElPYmplY3QqKTsKKwogICAgIGJvb2wgc2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0oV2Vi
UGFnZSosIEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbSosIFJlZlB0cjxBUElPYmpl
Y3Q+JiB1c2VyRGF0YSk7CiAgICAgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1l
KFdlYlBhZ2UqLCBXZWJGcmFtZSosIFJlZlB0cjxBUElPYmplY3Q+JiB1c2VyRGF0YSk7CiAgICAg
dm9pZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZShX
ZWJQYWdlKiwgV2ViRnJhbWUqLCBSZWZQdHI8QVBJT2JqZWN0PiYgdXNlckRhdGEpOwpJbmRleDog
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBh
Z2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oCShyZXZpc2lvbiAxNTAwMjIpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTEsNiArMTExLDggQEAgdHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdl
V2lsbERlc3Ryb3lHbAogdHlwZWRlZiBib29sICgqV0tCdW5kbGVQYWdlU2hvdWxkRm9yY2VVbml2
ZXJzYWxBY2Nlc3NGcm9tTG9jYWxVUkxDYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmLCBXS1N0cmlu
Z1JlZiB1cmwsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tCdW5k
bGVQYWdlRGlkTGF5b3V0Q2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0xheW91dE1p
bGVzdG9uZXMgbWlsZXN0b25lcywgV0tUeXBlUmVmKiB1c2VyRGF0YSwgY29uc3Qgdm9pZCAqY2xp
ZW50SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpXS0J1bmRsZVBhZ2VGZWF0dXJlc1VzZWRJblBhZ2VD
YWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQXJyYXlSZWYgZmVhdHVyZVN0cmluZ3Ms
IGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlV2ls
bExvYWRVUkxSZXF1ZXN0Q2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS1VSTFJlcXVl
c3RSZWYgcmVxdWVzdCwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZv
KTsKK3R5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZVdpbGxMb2FkRGF0YVJlcXVlc3RDYWxsYmFj
aykoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0LCBXS0RhdGFS
ZWYgZGF0YSwgV0tTdHJpbmdSZWYgTUlNRVR5cGUsIFdLU3RyaW5nUmVmIGVuY29kaW5nTmFtZSwg
V0tVUkxSZWYgdW5yZWFjaGFibGVVUkwsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCAq
Y2xpZW50SW5mbyk7CiAKIHN0cnVjdCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnQgewogICAgIGlu
dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZlcnNpb247CkBAIC0xNTksNiArMTYxLDggQEAgc3RydWN0IFdLQnVuZGxl
UGFnZUxvYWRlckNsaWVudCB7CiAKICAgICAvLyBWZXJzaW9uIDUKICAgICBXS0J1bmRsZVBhZ2VG
ZWF0dXJlc1VzZWRJblBhZ2VDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmZWF0dXJlc1VzZWRJblBhZ2U7CisgICAgV0tCdW5kbGVQYWdlV2lsbExvYWRVUkxSZXF1ZXN0
Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lsbExvYWRVUkxSZXF1
ZXN0OworICAgIFdLQnVuZGxlUGFnZVdpbGxMb2FkRGF0YVJlcXVlc3RDYWxsYmFjayAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHdpbGxMb2FkRGF0YVJlcXVlc3Q7CiB9OwogdHlwZWRl
ZiBzdHJ1Y3QgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50IFdLQnVuZGxlUGFnZUxvYWRlckNsaWVu
dDsKIApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAkocmV2aXNpb24gMTUwMDIyKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NzQsNTMgKzg3NCw3NSBAQCB2b2lk
IFdlYlBhZ2U6OnNlbmRDbG9zZSgpCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpD
bG9zZVBhZ2UoZmFsc2UpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpsb2FkVVJMKGNvbnN0IFN0cmlu
ZyYgdXJsLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbmRib3hFeHRlbnNpb25I
YW5kbGUpCit2b2lkIFdlYlBhZ2U6OmxvYWRVUkwoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgQ29yZUlQQzo6
TWVzc2FnZURlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgbG9hZFVSTFJlcXVlc3QoUmVzb3VyY2VS
ZXF1ZXN0KEtVUkwoS1VSTCgpLCB1cmwpKSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7CisgICAg
bG9hZFVSTFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KEtVUkwoS1VSTCgpLCB1cmwpKSwgc2FuZGJv
eEV4dGVuc2lvbkhhbmRsZSwgZGVjb2Rlcik7CiB9CiAKLXZvaWQgV2ViUGFnZTo6bG9hZFVSTFJl
cXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCit2b2lkIFdlYlBhZ2U6OmxvYWRV
UkxSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBDb3JlSVBDOjpNZXNzYWdl
RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBTZW5kU3RvcFJlc3BvbnNpdmVuZXNzVGltZXIgc3Rv
cHBlcih0aGlzKTsKIAorICAgIFJlZlB0cjxBUElPYmplY3Q+IHVzZXJEYXRhOworICAgIEluamVj
dGVkQnVuZGxlVXNlck1lc3NhZ2VEZWNvZGVyIHVzZXJNZXNzYWdlRGVjb2Rlcih1c2VyRGF0YSk7
CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh1c2VyTWVzc2FnZURlY29kZXIpKQorICAgICAgICBy
ZXR1cm47CisKICAgICBtX3NhbmRib3hFeHRlbnNpb25UcmFja2VyLmJlZ2luTG9hZChtX21haW5G
cmFtZS5nZXQoKSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7CisKKyAgICAvLyBMZXQgdGhlIElu
amVjdGVkQnVuZGxlIGtub3cgd2UgYXJlIGFib3V0IHRvIHN0YXJ0IHRoZSBsb2FkLCBwYXNzaW5n
IHRoZSB1c2VyIGRhdGEgZnJvbSB0aGUgVUlQcm9jZXNzCisgICAgLy8gdG8gYWxsIHRoZSBjbGll
bnQgdG8gc2V0IHVwIGFueSBuZWVkZWQgc3RhdGUuCisgICAgbV9sb2FkZXJDbGllbnQud2lsbExv
YWRVUkxSZXF1ZXN0KHRoaXMsIHJlcXVlc3QsIHVzZXJEYXRhLmdldCgpKTsKKworICAgIC8vIElu
aXRhdGUgdGhlIGxvYWQgaW4gV2ViQ29yZS4KICAgICBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCkt
PmxvYWRlcigpLT5sb2FkKEZyYW1lTG9hZFJlcXVlc3QobV9tYWluRnJhbWUtPmNvcmVGcmFtZSgp
LCByZXF1ZXN0KSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6bG9hZERhdGEoUGFzc1JlZlB0cjxTaGFy
ZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3Ry
aW5nJiBlbmNvZGluZ05hbWUsIGNvbnN0IEtVUkwmIGJhc2VVUkwsIGNvbnN0IEtVUkwmIHVucmVh
Y2hhYmxlVVJMKQordm9pZCBXZWJQYWdlOjpsb2FkRGF0YShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gc2hhcmVkQnVmZmVyLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVu
Y29kaW5nTmFtZSwgY29uc3QgS1VSTCYgYmFzZVVSTCwgY29uc3QgS1VSTCYgdW5yZWFjaGFibGVV
UkwsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIFNlbmRTdG9wUmVz
cG9uc2l2ZW5lc3NUaW1lciBzdG9wcGVyKHRoaXMpOwogCisgICAgUmVmUHRyPEFQSU9iamVjdD4g
dXNlckRhdGE7CisgICAgSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZURlY29kZXIgdXNlck1lc3Nh
Z2VEZWNvZGVyKHVzZXJEYXRhKTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHVzZXJNZXNzYWdl
RGVjb2RlcikpCisgICAgICAgIHJldHVybjsKKwogICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0
KGJhc2VVUkwpOwogICAgIFN1YnN0aXR1dGVEYXRhIHN1YnN0aXR1dGVEYXRhKHNoYXJlZEJ1ZmZl
ciwgTUlNRVR5cGUsIGVuY29kaW5nTmFtZSwgdW5yZWFjaGFibGVVUkwpOworCisgICAgLy8gTGV0
IHRoZSBJbmplY3RlZEJ1bmRsZSBrbm93IHdlIGFyZSBhYm91dCB0byBzdGFydCB0aGUgbG9hZCwg
cGFzc2luZyB0aGUgdXNlciBkYXRhIGZyb20gdGhlIFVJUHJvY2VzcworICAgIC8vIHRvIGFsbCB0
aGUgY2xpZW50IHRvIHNldCB1cCBhbnkgbmVlZGVkIHN0YXRlLgorICAgIG1fbG9hZGVyQ2xpZW50
LndpbGxMb2FkRGF0YVJlcXVlc3QodGhpcywgcmVxdWVzdCwgc3Vic3RpdHV0ZURhdGEuY29udGVu
dCgpLCBzdWJzdGl0dXRlRGF0YS5taW1lVHlwZSgpLCBzdWJzdGl0dXRlRGF0YS50ZXh0RW5jb2Rp
bmcoKSwgc3Vic3RpdHV0ZURhdGEuZmFpbGluZ1VSTCgpLCB1c2VyRGF0YS5nZXQoKSk7CisKKyAg
ICAvLyBJbml0YXRlIHRoZSBsb2FkIGluIFdlYkNvcmUuCiAgICAgbV9tYWluRnJhbWUtPmNvcmVG
cmFtZSgpLT5sb2FkZXIoKS0+bG9hZChGcmFtZUxvYWRSZXF1ZXN0KG1fbWFpbkZyYW1lLT5jb3Jl
RnJhbWUoKSwgcmVxdWVzdCwgc3Vic3RpdHV0ZURhdGEpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjps
b2FkSFRNTFN0cmluZyhjb25zdCBTdHJpbmcmIGh0bWxTdHJpbmcsIGNvbnN0IFN0cmluZyYgYmFz
ZVVSTFN0cmluZykKK3ZvaWQgV2ViUGFnZTo6bG9hZEhUTUxTdHJpbmcoY29uc3QgU3RyaW5nJiBo
dG1sU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkxTdHJpbmcsIENvcmVJUEM6Ok1lc3NhZ2VE
ZWNvZGVyJiBkZWNvZGVyKQogewogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGh0
bWxTdHJpbmcuY2hhcmFjdGVycygpKSwgaHRtbFN0cmluZy5sZW5ndGgoKSAqIHNpemVvZihVQ2hh
cikpOwogICAgIEtVUkwgYmFzZVVSTCA9IGJhc2VVUkxTdHJpbmcuaXNFbXB0eSgpID8gYmxhbmtV
UkwoKSA6IEtVUkwoS1VSTCgpLCBiYXNlVVJMU3RyaW5nKTsKLSAgICBsb2FkRGF0YShzaGFyZWRC
dWZmZXIsICJ0ZXh0L2h0bWwiLCAidXRmLTE2IiwgYmFzZVVSTCwgS1VSTCgpKTsKKyAgICBsb2Fk
RGF0YShzaGFyZWRCdWZmZXIsICJ0ZXh0L2h0bWwiLCAidXRmLTE2IiwgYmFzZVVSTCwgS1VSTCgp
LCBkZWNvZGVyKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpsb2FkQWx0ZXJuYXRlSFRNTFN0cmluZyhj
b25zdCBTdHJpbmcmIGh0bWxTdHJpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTFN0cmluZywgY29u
c3QgU3RyaW5nJiB1bnJlYWNoYWJsZVVSTFN0cmluZykKK3ZvaWQgV2ViUGFnZTo6bG9hZEFsdGVy
bmF0ZUhUTUxTdHJpbmcoY29uc3QgU3RyaW5nJiBodG1sU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJh
c2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgdW5yZWFjaGFibGVVUkxTdHJpbmcsIENvcmVJUEM6
Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNo
YXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
Y2hhcio+KGh0bWxTdHJpbmcuY2hhcmFjdGVycygpKSwgaHRtbFN0cmluZy5sZW5ndGgoKSAqIHNp
emVvZihVQ2hhcikpOwogICAgIEtVUkwgYmFzZVVSTCA9IGJhc2VVUkxTdHJpbmcuaXNFbXB0eSgp
ID8gYmxhbmtVUkwoKSA6IEtVUkwoS1VSTCgpLCBiYXNlVVJMU3RyaW5nKTsKICAgICBLVVJMIHVu
cmVhY2hhYmxlVVJMID0gdW5yZWFjaGFibGVVUkxTdHJpbmcuaXNFbXB0eSgpID8gS1VSTCgpIDog
S1VSTChLVVJMKCksIHVucmVhY2hhYmxlVVJMU3RyaW5nKTsKLSAgICBsb2FkRGF0YShzaGFyZWRC
dWZmZXIsICJ0ZXh0L2h0bWwiLCAidXRmLTE2IiwgYmFzZVVSTCwgdW5yZWFjaGFibGVVUkwpOwor
ICAgIGxvYWREYXRhKHNoYXJlZEJ1ZmZlciwgInRleHQvaHRtbCIsICJ1dGYtMTYiLCBiYXNlVVJM
LCB1bnJlYWNoYWJsZVVSTCwgZGVjb2Rlcik7CiB9CiAKLXZvaWQgV2ViUGFnZTo6bG9hZFBsYWlu
VGV4dFN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKK3ZvaWQgV2ViUGFnZTo6bG9hZFBsYWlu
VGV4dFN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywgQ29yZUlQQzo6TWVzc2FnZURlY29kZXIm
IGRlY29kZXIpCiB7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oc3RyaW5nLmNo
YXJhY3RlcnMoKSksIHN0cmluZy5sZW5ndGgoKSAqIHNpemVvZihVQ2hhcikpOwotICAgIGxvYWRE
YXRhKHNoYXJlZEJ1ZmZlciwgInRleHQvcGxhaW4iLCAidXRmLTE2IiwgYmxhbmtVUkwoKSwgS1VS
TCgpKTsKKyAgICBsb2FkRGF0YShzaGFyZWRCdWZmZXIsICJ0ZXh0L3BsYWluIiwgInV0Zi0xNiIs
IGJsYW5rVVJMKCksIEtVUkwoKSwgZGVjb2Rlcik7CiB9CiAKLXZvaWQgV2ViUGFnZTo6bG9hZFdl
YkFyY2hpdmVEYXRhKGNvbnN0IENvcmVJUEM6OkRhdGFSZWZlcmVuY2UmIHdlYkFyY2hpdmVEYXRh
KQordm9pZCBXZWJQYWdlOjpsb2FkV2ViQXJjaGl2ZURhdGEoY29uc3QgQ29yZUlQQzo6RGF0YVJl
ZmVyZW5jZSYgd2ViQXJjaGl2ZURhdGEsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVy
KQogewogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHdlYkFyY2hpdmVEYXRhLmRh
dGEoKSksIHdlYkFyY2hpdmVEYXRhLnNpemUoKSAqIHNpemVvZih1aW50OF90KSk7Ci0gICAgbG9h
ZERhdGEoc2hhcmVkQnVmZmVyLCAiYXBwbGljYXRpb24veC13ZWJhcmNoaXZlIiwgInV0Zi0xNiIs
IGJsYW5rVVJMKCksIEtVUkwoKSk7CisgICAgbG9hZERhdGEoc2hhcmVkQnVmZmVyLCAiYXBwbGlj
YXRpb24veC13ZWJhcmNoaXZlIiwgInV0Zi0xNiIsIGJsYW5rVVJMKCksIEtVUkwoKSwgZGVjb2Rl
cik7CiB9CiAKIHZvaWQgV2ViUGFnZTo6bGlua0NsaWNrZWQoY29uc3QgU3RyaW5nJiB1cmwsIGNv
bnN0IFdlYk1vdXNlRXZlbnQmIGV2ZW50KQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCShyZXZpc2lvbiAxNTAwMjIpCisrKyBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02NzUsMTgg
KzY3NSwxOCBAQCBwcml2YXRlOgogCiAgICAgU3RyaW5nIHNvdXJjZUZvckZyYW1lKFdlYkZyYW1l
Kik7CiAKLSAgICB2b2lkIGxvYWREYXRhKFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUsIGNv
bnN0IFdlYkNvcmU6OktVUkwmIGJhc2VVUkwsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZhaWxpbmdV
UkwpOworICAgIHZvaWQgbG9hZERhdGEoUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
LCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSwgY29u
c3QgV2ViQ29yZTo6S1VSTCYgYmFzZVVSTCwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmFpbGluZ1VS
TCwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImKTsKIAogICAgIGJvb2wgcGxhdGZvcm1IYXNMb2Nh
bERhdGFGb3JVUkwoY29uc3QgV2ViQ29yZTo6S1VSTCYpOwogCiAgICAgLy8gQWN0aW9ucwogICAg
IHZvaWQgdHJ5Q2xvc2UoKTsKLSAgICB2b2lkIGxvYWRVUkwoY29uc3QgU3RyaW5nJiwgY29uc3Qg
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJik7Ci0gICAgdm9pZCBsb2FkVVJMUmVxdWVzdChjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUmKTsKLSAgICB2b2lkIGxvYWRIVE1MU3RyaW5nKGNvbnN0IFN0cmluZyYgaHRtbFN0cmluZywg
Y29uc3QgU3RyaW5nJiBiYXNlVVJMKTsKLSAgICB2b2lkIGxvYWRBbHRlcm5hdGVIVE1MU3RyaW5n
KGNvbnN0IFN0cmluZyYgaHRtbFN0cmluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBjb25zdCBT
dHJpbmcmIHVucmVhY2hhYmxlVVJMKTsKLSAgICB2b2lkIGxvYWRQbGFpblRleHRTdHJpbmcoY29u
c3QgU3RyaW5nJik7Ci0gICAgdm9pZCBsb2FkV2ViQXJjaGl2ZURhdGEoY29uc3QgQ29yZUlQQzo6
RGF0YVJlZmVyZW5jZSYpOworICAgIHZvaWQgbG9hZFVSTChjb25zdCBTdHJpbmcmLCBjb25zdCBT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmLCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYpOworICAg
IHZvaWQgbG9hZFVSTFJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImKTsK
KyAgICB2b2lkIGxvYWRIVE1MU3RyaW5nKGNvbnN0IFN0cmluZyYgaHRtbFN0cmluZywgY29uc3Qg
U3RyaW5nJiBiYXNlVVJMLCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYpOworICAgIHZvaWQgbG9h
ZEFsdGVybmF0ZUhUTUxTdHJpbmcoY29uc3QgU3RyaW5nJiBodG1sU3RyaW5nLCBjb25zdCBTdHJp
bmcmIGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgdW5yZWFjaGFibGVVUkwsIENvcmVJUEM6Ok1lc3Nh
Z2VEZWNvZGVyJik7CisgICAgdm9pZCBsb2FkUGxhaW5UZXh0U3RyaW5nKGNvbnN0IFN0cmluZyYs
IENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CisgICAgdm9pZCBsb2FkV2ViQXJjaGl2ZURhdGEo
Y29uc3QgQ29yZUlQQzo6RGF0YVJlZmVyZW5jZSYsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7
CiAgICAgdm9pZCBsaW5rQ2xpY2tlZChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgV2ViTW91c2VF
dmVudCYpOwogICAgIHZvaWQgcmVsb2FkKGJvb2wgcmVsb2FkRnJvbU9yaWdpbiwgY29uc3QgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlJik7CiAgICAgdm9pZCBnb0ZvcndhcmQodWludDY0X3QpOwpJ
bmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW4JKHJldmlzaW9uIDE1MDAyMikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC02Mywx
MyArNjMsMTYgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgR29G
b3J3YXJkKHVpbnQ2NF90IGJhY2tGb3J3YXJkSXRlbUlEKQogICAgIEdvVG9CYWNrRm9yd2FyZEl0
ZW0odWludDY0X3QgYmFja0ZvcndhcmRJdGVtSUQpCiAgICAgVHJ5UmVzdG9yZVNjcm9sbFBvc2l0
aW9uKCkKLSAgICBMb2FkSFRNTFN0cmluZyhXVEY6OlN0cmluZyBodG1sU3RyaW5nLCBXVEY6OlN0
cmluZyBiYXNlVVJMKQotICAgIExvYWRBbHRlcm5hdGVIVE1MU3RyaW5nKFdURjo6U3RyaW5nIGh0
bWxTdHJpbmcsIFdURjo6U3RyaW5nIGJhc2VVUkwsIFdURjo6U3RyaW5nIHVucmVhY2hhYmxlVVJM
KQotICAgIExvYWRQbGFpblRleHRTdHJpbmcoV1RGOjpTdHJpbmcgc3RyaW5nKQotICAgIExvYWRX
ZWJBcmNoaXZlRGF0YShDb3JlSVBDOjpEYXRhUmVmZXJlbmNlIHdlYkFyY2hpdmVEYXRhKQotICAg
IExvYWRVUkwoV1RGOjpTdHJpbmcgdXJsLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQotICAgIExvYWRVUkxSZXF1ZXN0KFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCByZXF1ZXN0LCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBz
YW5kYm94RXh0ZW5zaW9uSGFuZGxlKQorCisgICAgTG9hZFVSTChXVEY6OlN0cmluZyB1cmwsIFdl
YktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIFdl
YktpdDo6V2ViQ29udGV4dFVzZXJNZXNzYWdlRW5jb2RlciB1c2VyRGF0YSkgVmFyaWFkaWMKKyAg
ICBMb2FkVVJMUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgV2ViS2l0
OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgV2ViS2l0
OjpXZWJDb250ZXh0VXNlck1lc3NhZ2VFbmNvZGVyIHVzZXJEYXRhKSBWYXJpYWRpYworICAgIExv
YWRIVE1MU3RyaW5nKFdURjo6U3RyaW5nIGh0bWxTdHJpbmcsIFdURjo6U3RyaW5nIGJhc2VVUkws
IFdlYktpdDo6V2ViQ29udGV4dFVzZXJNZXNzYWdlRW5jb2RlciB1c2VyRGF0YSkgVmFyaWFkaWMK
KyAgICBMb2FkQWx0ZXJuYXRlSFRNTFN0cmluZyhXVEY6OlN0cmluZyBodG1sU3RyaW5nLCBXVEY6
OlN0cmluZyBiYXNlVVJMLCBXVEY6OlN0cmluZyB1bnJlYWNoYWJsZVVSTCwgV2ViS2l0OjpXZWJD
b250ZXh0VXNlck1lc3NhZ2VFbmNvZGVyIHVzZXJEYXRhKSBWYXJpYWRpYworICAgIExvYWRQbGFp
blRleHRTdHJpbmcoV1RGOjpTdHJpbmcgc3RyaW5nLCBXZWJLaXQ6OldlYkNvbnRleHRVc2VyTWVz
c2FnZUVuY29kZXIgdXNlckRhdGEpIFZhcmlhZGljCisgICAgTG9hZFdlYkFyY2hpdmVEYXRhKENv
cmVJUEM6OkRhdGFSZWZlcmVuY2Ugd2ViQXJjaGl2ZURhdGEsIFdlYktpdDo6V2ViQ29udGV4dFVz
ZXJNZXNzYWdlRW5jb2RlciB1c2VyRGF0YSkgVmFyaWFkaWMKKwogICAgIExpbmtDbGlja2VkKFdU
Rjo6U3RyaW5nIHVybCwgV2ViS2l0OjpXZWJNb3VzZUV2ZW50IGV2ZW50KQorCiAgICAgUmVsb2Fk
KGJvb2wgcmVsb2FkRnJvbU9yaWdpbiwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUg
c2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKICAgICBTdG9wTG9hZGluZygpCiAKSW5kZXg6IFRvb2xz
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1MDA5
OSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisy
MDEzLTA1LTE0ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIHZh
cmlhbnRzIG9mIHRoZSBsb2FkaW5nIEFQSXMgdGhhdCB0YWtlIHVzZXIgZGF0YSBhbmQgYSB3YXkg
Zm9yIHRoZSBpbmplY3RlZCBidW5kbGUgdG8gZmluZCBvdXQgYWJvdXQgdGhlbQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE2MTMyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyAiV2l0aFVzZXJEYXRh
IiB2ZXJzaW9ucyBvZiBhbGwgdGhlIGxvYWQgQVBJcyBhbmQgdHdvIG5ldyBXS0J1bmRsZVBhZ2VM
b2FkZXJDbGllbnQgZnVuY3Rpb25zLAorICAgICAgICB3aWxsTG9hZFVSTFJlcXVlc3QgYW5kIHdp
bGxMb2FkRGF0YVJlcXVlc3QgdG8gbGV0IHRoZSBidW5kbGUgYWNjZXNzIHRoZW0uCisKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvV2lsbExvYWQuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvV2lsbExvYWRfQnVu
ZGxlLmNwcDogQWRkZWQuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwOgorCiAyMDEzLTA1LTE0ICBKYWVodW4gTGltICA8bGph
ZWh1bi5saW1Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgRml4IGJ1aWxkIGFmdGVyIHIxNTAwOTAu
CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTUwMDIyKQorKysgVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdv
cmtpbmcgY29weSkKQEAgLTk3LDYgKzk3LDggQEAKIAkJNzZFMTgyREQxNTQ3NTY5MTAwRjFGQURE
IC8qIFdpbGxTZW5kU3VibWl0RXZlbnRfQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2RTE4MkRDMTU0NzU2OTEwMEYxRkFERCAvKiBXaWxs
U2VuZFN1Ym1pdEV2ZW50X0J1bmRsZS5jcHAgKi87IH07CiAJCTc2RTE4MkRGMTU0NzY3RTYwMEYx
RkFERCAvKiBhdXRvLXN1Ym1pdHRpbmctZm9ybS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2RTE4MkRFMTU0NzVBODMwMEYxRkFERCAv
KiBhdXRvLXN1Ym1pdHRpbmctZm9ybS5odG1sICovOyB9OwogCQk3QzhEREFBQjE3MzVERUVFMDBF
QTVBQzAgLyogQ2xvc2VUaGVuVGVybWluYXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDOEREQUE5MTczNURFMUQwMEVBNUFDMCAvKiBDbG9zZVRo
ZW5UZXJtaW5hdGUuY3BwICovOyB9OworCQk3Q0ZCQ0FERjE3NDMyMzRGMDBCMkJGQ0YgLyogV2ls
bExvYWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0NGQkNBREQxNzQzMjM0RjAwQjJCRkNGIC8qIFdpbGxMb2FkLmNwcCAqLzsgfTsKKwkJN0NGQkNB
RTUxNzQzMjM4RjAwQjJCRkNGIC8qIFdpbGxMb2FkX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0ZCQ0FFMzE3NDMyMzhFMDBCMkJGQ0Yg
LyogV2lsbExvYWRfQnVuZGxlLmNwcCAqLzsgfTsKIAkJODFCNTAxOTMxNDBGMjMyMzAwRDlFQjU4
IC8qIFN0cmluZ0J1aWxkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODFCNTAxOTIxNDBGMjMyMzAwRDlFQjU4IC8qIFN0cmluZ0J1aWxkZXIuY3Bw
ICovOyB9OwogCQk4QTJDNzUwRTE2Q0VEOTU1MDAyNEYzNTIgLyogUmVzaXplV2luZG93QWZ0ZXJD
cmFzaC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
QTJDNzUwRDE2Q0VEOTU1MDAyNEYzNTIgLyogUmVzaXplV2luZG93QWZ0ZXJDcmFzaC5jcHAgKi87
IH07CiAJCThBM0FGOTNCMTZDOUVEMjcwMEQyNDhDMSAvKiBSZWxvYWRQYWdlQWZ0ZXJDcmFzaC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4QTNBRjkz
QTE2QzlFRDI3MDBEMjQ4QzEgLyogUmVsb2FkUGFnZUFmdGVyQ3Jhc2guY3BwICovOyB9OwpAQCAt
Mzc4LDYgKzM4MCw4IEBACiAJCTc2RTE4MkRDMTU0NzU2OTEwMEYxRkFERCAvKiBXaWxsU2VuZFN1
Ym1pdEV2ZW50X0J1bmRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXaWxsU2VuZFN1Ym1pdEV2ZW50X0J1bmRsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTc2RTE4MkRFMTU0NzVBODMwMEYxRkFERCAvKiBhdXRvLXN1Ym1pdHRpbmctZm9ybS5o
dG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImF1dG8tc3VibWl0dGluZy1mb3JtLmh0
bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzhEREFBOTE3MzVERTFEMDBFQTVB
QzAgLyogQ2xvc2VUaGVuVGVybWluYXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENsb3NlVGhl
blRlcm1pbmF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDRkJDQUREMTc0
MzIzNEYwMEIyQkZDRiAvKiBXaWxsTG9hZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXaWxsTG9hZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdD
RkJDQUUzMTc0MzIzOEUwMEIyQkZDRiAvKiBXaWxsTG9hZF9CdW5kbGUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2lsbExvYWRfQnVuZGxlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODFCNTAxOTIxNDBGMjMyMzAwRDlFQjU4IC8qIFN0cmluZ0J1
aWxkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU3RyaW5nQnVp
bGRlci5jcHA7IHBhdGggPSBXVEYvU3RyaW5nQnVpbGRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCThBMkM3NTBEMTZDRUQ5NTUwMDI0RjM1MiAvKiBSZXNpemVXaW5kb3dBZnRl
ckNyYXNoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc2l6ZVdp
bmRvd0FmdGVyQ3Jhc2guY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4QTNBRjkz
QTE2QzlFRDI3MDBEMjQ4QzEgLyogUmVsb2FkUGFnZUFmdGVyQ3Jhc2guY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVsb2FkUGFnZUFmdGVyQ3Jhc2guY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzIzLDYgKzcyNyw4IEBACiAJCQkJNTIwQkNGNEIx
NDFFQjA5RTAwOTM3RUE4IC8qIFdlYkFyY2hpdmUuY3BwICovLAogCQkJCTUyMEJDRjRBMTQxRUIw
OUUwMDkzN0VBOCAvKiBXZWJBcmNoaXZlX0J1bmRsZS5jcHAgKi8sCiAJCQkJMEYxN0JCRDQxNUFG
NkM0RDAwN0FCNzUzIC8qIFdlYkNvcmVTdGF0aXN0aWNzV2l0aE5vV2ViUHJvY2Vzcy5jcHAgKi8s
CisJCQkJN0NGQkNBREQxNzQzMjM0RjAwQjJCRkNGIC8qIFdpbGxMb2FkLmNwcCAqLywKKwkJCQk3
Q0ZCQ0FFMzE3NDMyMzhFMDBCMkJGQ0YgLyogV2lsbExvYWRfQnVuZGxlLmNwcCAqLywKIAkJCQk3
NkUxODJEOTE1NDc1NTAxMDBGMUZBREQgLyogV2lsbFNlbmRTdWJtaXRFdmVudC5jcHAgKi8sCiAJ
CQkJNzZFMTgyREMxNTQ3NTY5MTAwRjFGQUREIC8qIFdpbGxTZW5kU3VibWl0RXZlbnRfQnVuZGxl
LmNwcCAqLywKIAkJCQlCQzkwMUUyMjE0OTJBRENFMDA3NEE2NjcgLyogV0tDb25uZWN0aW9uLmNw
cCAqLywKQEAgLTEwOTAsNiArMTA5Niw3IEBACiAJCQkJOTNGMURCMzExNERBMjA3NjAwMjRDMzYy
IC8qIE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk5M0YxREI1NTE0REIxQjczMDAyNEMzNjIgLyogTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5
b3V0RmFpbHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMxODc3ODkxNUVFQzU3NzAwQTlDQ0Uz
IC8qIE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckltYWdlcy5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk3Q0ZCQ0FERjE3NDMyMzRGMDBCMkJGQ0YgLyogV2lsbExvYWQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJOTNGN0U4NkMxNERDOEU0RDAwQzg0QTk5IC8qIE5ld0ZpcnN0VmlzdWFs
bHlOb25FbXB0eUxheW91dEZyYW1lcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzkwOTc3QTEy
NTU3MUFCMDAwODM3NTYgLyogUGFnZUxvYWRCYXNpYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
QzJEMDA0OTEyQTlGREZBMDBFNzMyQTMgLyogUGFnZUxvYWREaWRDaGFuZ2VMb2NhdGlvbldpdGhp
blBhZ2VGb3JGcmFtZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTExODUsNiArMTE5Miw3IEBACiAJ
CQkJOTNGN0U4NkYxNERDOEU1QzAwQzg0QTk5IC8qIE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxh
eW91dEZyYW1lc19CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTJFNUNFNDkxNEQyMUVB
QjAwM0IyQkQ4IC8qIFBhcmVudEZyYW1lX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlD
NTQyMzdGMTE2Qjg5NTdEMDBFNjM4RkMgLyogUGFzdGVib2FyZE5vdGlmaWNhdGlvbnNfQnVuZGxl
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdDRkJDQUU1MTc0MzIzOEYwMEIyQkZDRiAvKiBXaWxs
TG9hZF9CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM1NzVCRDkxMjZGNThFMjAwNkYw
RjEyIC8qIFBsYXRmb3JtVXRpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNTc1QkUw
MTI2RjU5MEQwMDZGMEYxMiAvKiBQbGF0Zm9ybVV0aWxpdGllc01hYy5tbSBpbiBTb3VyY2VzICov
LAogCQkJCUMwQkQ2NjlGMTMxRDNDRkYwMEUxOEYyQSAvKiBSZXNwb25zaXZlbmVzc1RpbWVyRG9l
c250RmlyZUVhcmx5X0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9XaWxsTG9hZC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1dpbGxMb2FkLmNwcAkocmV2aXNpb24gMCkKKysr
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9XaWxsTG9hZC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwyNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiVGVzdC5oIgorCisjaW5jbHVkZSAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNp
bmNsdWRlICJQbGF0Zm9ybVdlYlZpZXcuaCIKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5j
bHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitj
bGFzcyBXZWJLaXQyV2lsbExvYWRUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CitwdWJs
aWM6CisgICAgV2ViS2l0MldpbGxMb2FkVGVzdCgpCisgICAgICAgIDogZGlkUmVjZWl2ZU1lc3Nh
Z2UoZmFsc2UpCisgICAgeworICAgIH0KKworICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4g
Y29udGV4dDsKKyAgICBPd25QdHI8UGxhdGZvcm1XZWJWaWV3PiB3ZWJWaWV3OworCisgICAgV0tS
ZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lOworICAgIFdLUmV0YWluUHRyPFdLVHlw
ZVJlZj4gbWVzc2FnZUJvZHk7CisgICAgYm9vbCBkaWRSZWNlaXZlTWVzc2FnZTsKKworICAgIHN0
YXRpYyB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLQ29udGV4dFJl
ZiwgV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSwgY29uc3Qg
dm9pZCogY2xpZW50SW5mbykKKyAgICB7CisgICAgICAgICgoV2ViS2l0MldpbGxMb2FkVGVzdCop
Y2xpZW50SW5mbyktPm1lc3NhZ2VOYW1lID0gbWVzc2FnZU5hbWU7CisgICAgICAgICgoV2ViS2l0
MldpbGxMb2FkVGVzdCopY2xpZW50SW5mbyktPm1lc3NhZ2VCb2R5ID0gbWVzc2FnZUJvZHk7Cisg
ICAgICAgICgoV2ViS2l0MldpbGxMb2FkVGVzdCopY2xpZW50SW5mbyktPmRpZFJlY2VpdmVNZXNz
YWdlID0gdHJ1ZTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBzZXRJbmplY3RlZEJ1bmRsZUNs
aWVudChXS0NvbnRleHRSZWYgY29udGV4dCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKKyAgICB7
CisgICAgICAgIFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50IGluamVjdGVkQnVuZGxlQ2xp
ZW50OworICAgICAgICBtZW1zZXQoJmluamVjdGVkQnVuZGxlQ2xpZW50LCAwLCBzaXplb2YoaW5q
ZWN0ZWRCdW5kbGVDbGllbnQpKTsKKyAgICAgICAgaW5qZWN0ZWRCdW5kbGVDbGllbnQudmVyc2lv
biA9IGtXS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudEN1cnJlbnRWZXJzaW9uOworICAgICAg
ICBpbmplY3RlZEJ1bmRsZUNsaWVudC5jbGllbnRJbmZvID0gY2xpZW50SW5mbzsKKyAgICAgICAg
aW5qZWN0ZWRCdW5kbGVDbGllbnQuZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUg
PSBkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZTsKKworICAgICAgICBXS0NvbnRl
eHRTZXRJbmplY3RlZEJ1bmRsZUNsaWVudChjb250ZXh0LCAmaW5qZWN0ZWRCdW5kbGVDbGllbnQp
OworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpCisgICAgeworICAgICAgICBjb250
ZXh0ID0gYWRvcHRXSyhVdGlsOjpjcmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0KCJX
aWxsTG9hZFRlc3QiKSk7CisgICAgICAgIHNldEluamVjdGVkQnVuZGxlQ2xpZW50KGNvbnRleHQu
Z2V0KCksIHRoaXMpOworCisgICAgICAgIHdlYlZpZXcgPSBhZG9wdFB0cihuZXcgUGxhdGZvcm1X
ZWJWaWV3KGNvbnRleHQuZ2V0KCkpKTsKKworICAgICAgICBkaWRSZWNlaXZlTWVzc2FnZSA9IGZh
bHNlOworICAgIH0KKworICAgIHZvaWQgdGVzdFdpbGxMb2FkVVJMUmVxdWVzdFJldHVyblZhbHVl
cyhXS1VSTFJlZiBleHBlY3RlZFVSTCwgV0tTdHJpbmdSZWYgZXhwZWN0ZWRVc2VyRGF0YVN0cmlu
ZykKKyAgICB7CisgICAgICAgIGRpZFJlY2VpdmVNZXNzYWdlID0gZmFsc2U7CisgICAgICAgIFV0
aWw6OnJ1bigmZGlkUmVjZWl2ZU1lc3NhZ2UpOworCisgICAgICAgIEVYUEVDVF9XS19TVFJFUSgi
V2lsbExvYWRVUkxSZXF1ZXN0UmV0dXJuIiwgbWVzc2FnZU5hbWUuZ2V0KCkpOworCisgICAgICAg
IEVYUEVDVF9FUShXS0RpY3Rpb25hcnlHZXRUeXBlSUQoKSwgV0tHZXRUeXBlSUQobWVzc2FnZUJv
ZHkuZ2V0KCkpKTsKKyAgICAgICAgV0tEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkgPSBzdGF0aWNf
Y2FzdDxXS0RpY3Rpb25hcnlSZWY+KG1lc3NhZ2VCb2R5LmdldCgpKTsKKworICAgICAgICBpZiAo
ZXhwZWN0ZWRVc2VyRGF0YVN0cmluZykgeworICAgICAgICAgICAgV0tTdHJpbmdSZWYgdXNlckRh
dGFSZXR1cm5WYWx1ZSA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25hcnlHZXRJ
dGVtRm9yS2V5KGRpY3Rpb25hcnksIFV0aWw6OnRvV0soIlVzZXJEYXRhUmV0dXJuIikuZ2V0KCkp
KTsKKyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShleHBlY3RlZFVzZXJEYXRhU3RyaW5nLCB1
c2VyRGF0YVJldHVyblZhbHVlKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBFWFBFQ1Rf
TlVMTChXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KGRpY3Rpb25hcnksIFV0aWw6OnRvV0soIlVz
ZXJEYXRhUmV0dXJuIikuZ2V0KCkpKTsKKworICAgICAgICBXS1VSTFJlcXVlc3RSZWYgdXJsUmVx
dWVzdFJldHVyblZhbHVlID0gc3RhdGljX2Nhc3Q8V0tVUkxSZXF1ZXN0UmVmPihXS0RpY3Rpb25h
cnlHZXRJdGVtRm9yS2V5KGRpY3Rpb25hcnksIFV0aWw6OnRvV0soIlVSTFJlcXVlc3RSZXR1cm4i
KS5nZXQoKSkpOworICAgICAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4gdXJsUmV0dXJuVmFsdWUg
PSBhZG9wdFdLKFdLVVJMUmVxdWVzdENvcHlVUkwodXJsUmVxdWVzdFJldHVyblZhbHVlKSk7Cisg
ICAgICAgIEVYUEVDVF9UUlVFKFdLVVJMSXNFcXVhbChleHBlY3RlZFVSTCwgdXJsUmV0dXJuVmFs
dWUuZ2V0KCkpKTsKKyAgICB9CisKKyAgICB2b2lkIHRlc3RXaWxsTG9hZERhdGFSZXF1ZXN0UmV0
dXJuVmFsdWVzKFdLVVJMUmVmIGV4cGVjdGVkVVJMLCBXS1N0cmluZ1JlZiBleHBlY3RlZE1JTUVU
eXBlLCBXS1N0cmluZ1JlZiBleHBlY3RlZEVuY29kaW5nTmFtZSwgV0tVUkxSZWYgZXhwZWN0ZWRV
bnJlYWNoYWJsZVVSTCwgV0tTdHJpbmdSZWYgZXhwZWN0ZWRVc2VyRGF0YVN0cmluZykKKyAgICB7
CisgICAgICAgIGRpZFJlY2VpdmVNZXNzYWdlID0gZmFsc2U7CisgICAgICAgIFV0aWw6OnJ1bigm
ZGlkUmVjZWl2ZU1lc3NhZ2UpOworCisgICAgICAgIEVYUEVDVF9XS19TVFJFUSgiV2lsbExvYWRE
YXRhUmVxdWVzdFJldHVybiIsIG1lc3NhZ2VOYW1lLmdldCgpKTsKKworICAgICAgICBFWFBFQ1Rf
RVEoV0tEaWN0aW9uYXJ5R2V0VHlwZUlEKCksIFdLR2V0VHlwZUlEKG1lc3NhZ2VCb2R5LmdldCgp
KSk7CisgICAgICAgIFdLRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5ID0gc3RhdGljX2Nhc3Q8V0tE
aWN0aW9uYXJ5UmVmPihtZXNzYWdlQm9keS5nZXQoKSk7CisKKyAgICAgICAgaWYgKGV4cGVjdGVk
VXNlckRhdGFTdHJpbmcpIHsKKyAgICAgICAgICAgIFdLU3RyaW5nUmVmIHVzZXJEYXRhUmV0dXJu
VmFsdWUgPSBzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktl
eShkaWN0aW9uYXJ5LCBVdGlsOjp0b1dLKCJVc2VyRGF0YVJldHVybiIpLmdldCgpKSk7CisgICAg
ICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZXhwZWN0ZWRVc2VyRGF0YVN0cmluZywgdXNlckRhdGFS
ZXR1cm5WYWx1ZSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgRVhQRUNUX05VTEwoV0tE
aWN0aW9uYXJ5R2V0SXRlbUZvcktleShkaWN0aW9uYXJ5LCBVdGlsOjp0b1dLKCJVc2VyRGF0YVJl
dHVybiIpLmdldCgpKSk7CisKKyAgICAgICAgV0tVUkxSZXF1ZXN0UmVmIHVybFJlcXVlc3RSZXR1
cm5WYWx1ZSA9IHN0YXRpY19jYXN0PFdLVVJMUmVxdWVzdFJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRl
bUZvcktleShkaWN0aW9uYXJ5LCBVdGlsOjp0b1dLKCJVUkxSZXF1ZXN0UmV0dXJuIikuZ2V0KCkp
KTsKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+IHVybFJldHVyblZhbHVlID0gYWRvcHRX
SyhXS1VSTFJlcXVlc3RDb3B5VVJMKHVybFJlcXVlc3RSZXR1cm5WYWx1ZSkpOworICAgICAgICBF
WFBFQ1RfVFJVRShXS1VSTElzRXF1YWwoZXhwZWN0ZWRVUkwsIHVybFJldHVyblZhbHVlLmdldCgp
KSk7CisKKyAgICAgICAgV0tTdHJpbmdSZWYgTUlNRVR5cGUgPSBzdGF0aWNfY2FzdDxXS1N0cmlu
Z1JlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShkaWN0aW9uYXJ5LCBVdGlsOjp0b1dLKCJN
SU1FVHlwZVJldHVybiIpLmdldCgpKSk7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShleHBlY3Rl
ZE1JTUVUeXBlLCBNSU1FVHlwZSk7CisKKyAgICAgICAgV0tTdHJpbmdSZWYgZW5jb2RpbmdOYW1l
ID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkoZGlj
dGlvbmFyeSwgVXRpbDo6dG9XSygiRW5jb2RpbmdOYW1lUmV0dXJuIikuZ2V0KCkpKTsKKyAgICAg
ICAgRVhQRUNUX1dLX1NUUkVRKGV4cGVjdGVkRW5jb2RpbmdOYW1lLCBlbmNvZGluZ05hbWUpOwor
CisgICAgICAgIGlmIChleHBlY3RlZFVucmVhY2hhYmxlVVJMKSB7CisgICAgICAgICAgICBXS1VS
TFJlZiB1bnJlYWNoYWJsZVVSTCA9IHN0YXRpY19jYXN0PFdLVVJMUmVmPihXS0RpY3Rpb25hcnlH
ZXRJdGVtRm9yS2V5KGRpY3Rpb25hcnksIFV0aWw6OnRvV0soIlVucmVhY2hhYmxlVVJMUmV0dXJu
IikuZ2V0KCkpKTsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKFdLVVJMSXNFcXVhbChleHBlY3Rl
ZFVucmVhY2hhYmxlVVJMLCB1bnJlYWNoYWJsZVVSTCkpOworICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgIEVYUEVDVF9OVUxMKFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkoZGljdGlvbmFyeSwg
VXRpbDo6dG9XSygiVW5yZWFjaGFibGVVUkxSZXR1cm4iKS5nZXQoKSkpOworICAgIH0KK307CisK
Ky8vIFVSTCBSZXF1ZXN0IHRlc3RzCisKK1RFU1RfRihXZWJLaXQyV2lsbExvYWRUZXN0LCBXS1Bh
Z2VMb2FkVVJMV2l0aFVzZXJEYXRhKQoreworICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiB1cmwg
PSBhZG9wdFdLKFdLVVJMQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJhYm91dDpibGFuayIpKTsKKyAg
ICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gdXNlckRhdGEgPSBVdGlsOjp0b1dLKCJXS1BhZ2VM
b2FkVVJMV2l0aFVzZXJEYXRhIFVzZXJEYXRhIik7CisgICAgV0tQYWdlTG9hZFVSTFdpdGhVc2Vy
RGF0YSh3ZWJWaWV3LT5wYWdlKCksIHVybC5nZXQoKSwgdXNlckRhdGEuZ2V0KCkpOworCisgICAg
dGVzdFdpbGxMb2FkVVJMUmVxdWVzdFJldHVyblZhbHVlcyh1cmwuZ2V0KCksIHVzZXJEYXRhLmdl
dCgpKTsKK30KKworVEVTVF9GKFdlYktpdDJXaWxsTG9hZFRlc3QsIFdLUGFnZUxvYWRVUkwpCit7
CisgICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+IHVybCA9IGFkb3B0V0soV0tVUkxDcmVhdGVXaXRo
VVRGOENTdHJpbmcoImFib3V0OmJsYW5rIikpOworICAgIFdLUGFnZUxvYWRVUkwod2ViVmlldy0+
cGFnZSgpLCB1cmwuZ2V0KCkpOworCisgICAgdGVzdFdpbGxMb2FkVVJMUmVxdWVzdFJldHVyblZh
bHVlcyh1cmwuZ2V0KCksIDApOworfQorCitURVNUX0YoV2ViS2l0MldpbGxMb2FkVGVzdCwgV0tQ
YWdlTG9hZFVSTFJlcXVlc3RXaXRoVXNlckRhdGEpCit7CisgICAgV0tSZXRhaW5QdHI8V0tVUkxS
ZWY+IHVybCA9IGFkb3B0V0soV0tVUkxDcmVhdGVXaXRoVVRGOENTdHJpbmcoImFib3V0OmJsYW5r
IikpOworICAgIFdLUmV0YWluUHRyPFdLVVJMUmVxdWVzdFJlZj4gdXJsUmVxdWVzdCA9IGFkb3B0
V0soV0tVUkxSZXF1ZXN0Q3JlYXRlV2l0aFdLVVJMKHVybC5nZXQoKSkpOworICAgIFdLUmV0YWlu
UHRyPFdLU3RyaW5nUmVmPiB1c2VyRGF0YSA9IFV0aWw6OnRvV0soIldLUGFnZUxvYWRVUkxSZXF1
ZXN0V2l0aFVzZXJEYXRhIFVzZXJEYXRhIik7CisgICAgV0tQYWdlTG9hZFVSTFJlcXVlc3RXaXRo
VXNlckRhdGEod2ViVmlldy0+cGFnZSgpLCB1cmxSZXF1ZXN0LmdldCgpLCB1c2VyRGF0YS5nZXQo
KSk7CisKKyAgICB0ZXN0V2lsbExvYWRVUkxSZXF1ZXN0UmV0dXJuVmFsdWVzKHVybC5nZXQoKSwg
dXNlckRhdGEuZ2V0KCkpOworfQorCitURVNUX0YoV2ViS2l0MldpbGxMb2FkVGVzdCwgV0tQYWdl
TG9hZFVSTFJlcXVlc3QpCit7CisgICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+IHVybCA9IGFkb3B0
V0soV0tVUkxDcmVhdGVXaXRoVVRGOENTdHJpbmcoImFib3V0OmJsYW5rIikpOworICAgIFdLUmV0
YWluUHRyPFdLVVJMUmVxdWVzdFJlZj4gdXJsUmVxdWVzdCA9IGFkb3B0V0soV0tVUkxSZXF1ZXN0
Q3JlYXRlV2l0aFdLVVJMKHVybC5nZXQoKSkpOworICAgIFdLUGFnZUxvYWRVUkxSZXF1ZXN0KHdl
YlZpZXctPnBhZ2UoKSwgdXJsUmVxdWVzdC5nZXQoKSk7CisKKyAgICB0ZXN0V2lsbExvYWRVUkxS
ZXF1ZXN0UmV0dXJuVmFsdWVzKHVybC5nZXQoKSwgMCk7Cit9CisKKy8vIERhdGEgUmVxdWVzdCB0
ZXN0cworCitURVNUX0YoV2ViS2l0MldpbGxMb2FkVGVzdCwgV0tQYWdlTG9hZEhUTUxTdHJpbmdX
aXRoVXNlckRhdGEpCit7CisgICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+IGJhc2VVUkwgPSBhZG9w
dFdLKFdLVVJMQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJhYm91dDpibGFuayIpKTsKKyAgICBXS1Jl
dGFpblB0cjxXS1N0cmluZ1JlZj4gdXNlckRhdGEgPSBVdGlsOjp0b1dLKCJXS1BhZ2VMb2FkSFRN
TFN0cmluZ1dpdGhVc2VyRGF0YSBVc2VyRGF0YSIpOworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5n
UmVmPiBodG1sU3RyaW5nID0gVXRpbDo6dG9XSygiPGJvZHk+SGVsbG8sIFdvcmxkPC9ib2R5PiIp
OworCisgICAgV0tQYWdlTG9hZEhUTUxTdHJpbmdXaXRoVXNlckRhdGEod2ViVmlldy0+cGFnZSgp
LCBodG1sU3RyaW5nLmdldCgpLCBiYXNlVVJMLmdldCgpLCB1c2VyRGF0YS5nZXQoKSk7CisKKyAg
ICB0ZXN0V2lsbExvYWREYXRhUmVxdWVzdFJldHVyblZhbHVlcyhiYXNlVVJMLmdldCgpLCBVdGls
Ojp0b1dLKCJ0ZXh0L2h0bWwiKS5nZXQoKSwgVXRpbDo6dG9XSygidXRmLTE2IikuZ2V0KCksIDAs
IHVzZXJEYXRhLmdldCgpKTsKK30KKworVEVTVF9GKFdlYktpdDJXaWxsTG9hZFRlc3QsIFdLUGFn
ZUxvYWRIVE1MU3RyaW5nKQoreworICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiBiYXNlVVJMID0g
YWRvcHRXSyhXS1VSTENyZWF0ZVdpdGhVVEY4Q1N0cmluZygiYWJvdXQ6YmxhbmsiKSk7CisgICAg
V0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGh0bWxTdHJpbmcgPSBVdGlsOjp0b1dLKCI8Ym9keT5I
ZWxsbywgV29ybGQ8L2JvZHk+Iik7CisKKyAgICBXS1BhZ2VMb2FkSFRNTFN0cmluZyh3ZWJWaWV3
LT5wYWdlKCksIGh0bWxTdHJpbmcuZ2V0KCksIGJhc2VVUkwuZ2V0KCkpOworCisgICAgdGVzdFdp
bGxMb2FkRGF0YVJlcXVlc3RSZXR1cm5WYWx1ZXMoYmFzZVVSTC5nZXQoKSwgVXRpbDo6dG9XSygi
dGV4dC9odG1sIikuZ2V0KCksIFV0aWw6OnRvV0soInV0Zi0xNiIpLmdldCgpLCAwLCAwKTsKK30K
KworVEVTVF9GKFdlYktpdDJXaWxsTG9hZFRlc3QsIFdLUGFnZUxvYWRBbHRlcm5hdGVIVE1MU3Ry
aW5nV2l0aFVzZXJEYXRhKQoreworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBodG1sU3Ry
aW5nID0gVXRpbDo6dG9XSygiPGJvZHk+SGVsbG8sIFdvcmxkPC9ib2R5PiIpOworCisgICAgV0tS
ZXRhaW5QdHI8V0tVUkxSZWY+IGJhc2VVUkwgPSBhZG9wdFdLKFdLVVJMQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKCJhYm91dDpibGFuayIpKTsKKyAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4gdW5yZWFj
aGFibGVVUkwgPSBhZG9wdFdLKFdLVVJMQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJhYm91dDpvdGhl
ciIpKTsKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gdXNlckRhdGEgPSBVdGlsOjp0b1dL
KCJXS1BhZ2VMb2FkQWx0ZXJuYXRlSFRNTFN0cmluZ1dpdGhVc2VyRGF0YSBVc2VyRGF0YSIpOwor
CisgICAgV0tQYWdlTG9hZEFsdGVybmF0ZUhUTUxTdHJpbmdXaXRoVXNlckRhdGEod2ViVmlldy0+
cGFnZSgpLCBodG1sU3RyaW5nLmdldCgpLCBiYXNlVVJMLmdldCgpLCB1bnJlYWNoYWJsZVVSTC5n
ZXQoKSwgdXNlckRhdGEuZ2V0KCkpOworCisgICAgdGVzdFdpbGxMb2FkRGF0YVJlcXVlc3RSZXR1
cm5WYWx1ZXMoYmFzZVVSTC5nZXQoKSwgVXRpbDo6dG9XSygidGV4dC9odG1sIikuZ2V0KCksIFV0
aWw6OnRvV0soInV0Zi0xNiIpLmdldCgpLCB1bnJlYWNoYWJsZVVSTC5nZXQoKSwgdXNlckRhdGEu
Z2V0KCkpOworfQorCitURVNUX0YoV2ViS2l0MldpbGxMb2FkVGVzdCwgV0tQYWdlTG9hZEFsdGVy
bmF0ZUhUTUxTdHJpbmcpCit7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGh0bWxTdHJp
bmcgPSBVdGlsOjp0b1dLKCI8Ym9keT5IZWxsbywgV29ybGQ8L2JvZHk+Iik7CisKKyAgICBXS1Jl
dGFpblB0cjxXS1VSTFJlZj4gYmFzZVVSTCA9IGFkb3B0V0soV0tVUkxDcmVhdGVXaXRoVVRGOENT
dHJpbmcoImFib3V0OmJsYW5rIikpOworICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiB1bnJlYWNo
YWJsZVVSTCA9IGFkb3B0V0soV0tVUkxDcmVhdGVXaXRoVVRGOENTdHJpbmcoImFib3V0Om90aGVy
IikpOworCisgICAgV0tQYWdlTG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcod2ViVmlldy0+cGFnZSgp
LCBodG1sU3RyaW5nLmdldCgpLCBiYXNlVVJMLmdldCgpLCB1bnJlYWNoYWJsZVVSTC5nZXQoKSk7
CisKKyAgICB0ZXN0V2lsbExvYWREYXRhUmVxdWVzdFJldHVyblZhbHVlcyhiYXNlVVJMLmdldCgp
LCBVdGlsOjp0b1dLKCJ0ZXh0L2h0bWwiKS5nZXQoKSwgVXRpbDo6dG9XSygidXRmLTE2IikuZ2V0
KCksIHVucmVhY2hhYmxlVVJMLmdldCgpLCAwKTsKK30KKworVEVTVF9GKFdlYktpdDJXaWxsTG9h
ZFRlc3QsIFdLUGFnZUxvYWRQbGFpblRleHRTdHJpbmdXaXRoVXNlckRhdGEpCit7CisgICAgV0tS
ZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHBsYWludFRleHRTdHJpbmcgPSBVdGlsOjp0b1dLKCJIZWxs
bywgV29ybGQiKTsKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gdXNlckRhdGEgPSBVdGls
Ojp0b1dLKCJXS1BhZ2VMb2FkUGxhaW5UZXh0U3RyaW5nV2l0aFVzZXJEYXRhIFVzZXJEYXRhIik7
CisKKyAgICBXS1BhZ2VMb2FkUGxhaW5UZXh0U3RyaW5nV2l0aFVzZXJEYXRhKHdlYlZpZXctPnBh
Z2UoKSwgcGxhaW50VGV4dFN0cmluZy5nZXQoKSwgdXNlckRhdGEuZ2V0KCkpOworCisgICAgV0tS
ZXRhaW5QdHI8V0tVUkxSZWY+IGJsYW5rVVJMID0gYWRvcHRXSyhXS1VSTENyZWF0ZVdpdGhVVEY4
Q1N0cmluZygiYWJvdXQ6YmxhbmsiKSk7CisgICAgdGVzdFdpbGxMb2FkRGF0YVJlcXVlc3RSZXR1
cm5WYWx1ZXMoYmxhbmtVUkwuZ2V0KCksIFV0aWw6OnRvV0soInRleHQvcGxhaW4iKS5nZXQoKSwg
VXRpbDo6dG9XSygidXRmLTE2IikuZ2V0KCksIDAsIHVzZXJEYXRhLmdldCgpKTsKK30KKworVEVT
VF9GKFdlYktpdDJXaWxsTG9hZFRlc3QsIFdLUGFnZUxvYWRQbGFpblRleHRTdHJpbmcpCit7Cisg
ICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHBsYWludFRleHRTdHJpbmcgPSBVdGlsOjp0b1dL
KCJIZWxsbywgV29ybGQiKTsKKworICAgIFdLUGFnZUxvYWRQbGFpblRleHRTdHJpbmcod2ViVmll
dy0+cGFnZSgpLCBwbGFpbnRUZXh0U3RyaW5nLmdldCgpKTsKKworICAgIFdLUmV0YWluUHRyPFdL
VVJMUmVmPiBibGFua1VSTCA9IGFkb3B0V0soV0tVUkxDcmVhdGVXaXRoVVRGOENTdHJpbmcoImFi
b3V0OmJsYW5rIikpOworICAgIHRlc3RXaWxsTG9hZERhdGFSZXF1ZXN0UmV0dXJuVmFsdWVzKGJs
YW5rVVJMLmdldCgpLCBVdGlsOjp0b1dLKCJ0ZXh0L3BsYWluIikuZ2V0KCksIFV0aWw6OnRvV0so
InV0Zi0xNiIpLmdldCgpLCAwLCAwKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQ
SQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1dpbGxMb2FkX0J1bmRs
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1dp
bGxMb2FkX0J1bmRsZS5jcHAJKHJldmlzaW9uIDApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDIvV2lsbExvYWRfQnVuZGxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDg0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkluamVj
dGVkQnVuZGxlVGVzdC5oIgorCisjaW5jbHVkZSAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbmNs
dWRlIDxXZWJLaXQyL1dLQnVuZGxlUGFnZS5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tSZXRhaW5Q
dHIuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitjbGFzcyBXaWxsTG9hZFRlc3Qg
OiBwdWJsaWMgSW5qZWN0ZWRCdW5kbGVUZXN0IHsKK3B1YmxpYzoKKyAgICBXaWxsTG9hZFRlc3Qo
Y29uc3Qgc3RkOjpzdHJpbmcmIGlkZW50aWZpZXIpCisgICAgICAgIDogSW5qZWN0ZWRCdW5kbGVU
ZXN0KGlkZW50aWZpZXIpCisgICAgeworICAgIH0KKworcHJpdmF0ZToKKyAgICBzdGF0aWMgdm9p
ZCB3aWxsTG9hZFVSTFJlcXVlc3QoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLVVJMUmVxdWVzdFJl
ZiByZXF1ZXN0LCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pCisg
ICAgeworICAgICAgICBXS1JldGFpblB0cjxXS011dGFibGVEaWN0aW9uYXJ5UmVmPiBtZXNzYWdl
Qm9keSA9IGFkb3B0V0soV0tNdXRhYmxlRGljdGlvbmFyeUNyZWF0ZSgpKTsKKworICAgICAgICBX
S0RpY3Rpb25hcnlBZGRJdGVtKG1lc3NhZ2VCb2R5LmdldCgpLCBVdGlsOjp0b1dLKCJVUkxSZXF1
ZXN0UmV0dXJuIikuZ2V0KCksIHJlcXVlc3QpOworICAgICAgICBXS0RpY3Rpb25hcnlBZGRJdGVt
KG1lc3NhZ2VCb2R5LmdldCgpLCBVdGlsOjp0b1dLKCJVc2VyRGF0YVJldHVybiIpLmdldCgpLCB1
c2VyRGF0YSk7CisKKyAgICAgICAgV0tCdW5kbGVQb3N0TWVzc2FnZShJbmplY3RlZEJ1bmRsZUNv
bnRyb2xsZXI6OnNoYXJlZCgpLmJ1bmRsZSgpLCBVdGlsOjp0b1dLKCJXaWxsTG9hZFVSTFJlcXVl
c3RSZXR1cm4iKS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCkpOworICAgIH0KKworICAgIHN0YXRp
YyB2b2lkIHdpbGxMb2FkRGF0YVJlcXVlc3QoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLVVJMUmVx
dWVzdFJlZiByZXF1ZXN0LCBXS0RhdGFSZWYgZGF0YSwgV0tTdHJpbmdSZWYgTUlNRVR5cGUsIFdL
U3RyaW5nUmVmIGVuY29kaW5nTmFtZSwgV0tVUkxSZWYgdW5yZWFjaGFibGVVUkwsIFdLVHlwZVJl
ZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKKyAgICB7CisgICAgICAgIFdLUmV0
YWluUHRyPFdLTXV0YWJsZURpY3Rpb25hcnlSZWY+IG1lc3NhZ2VCb2R5ID0gYWRvcHRXSyhXS011
dGFibGVEaWN0aW9uYXJ5Q3JlYXRlKCkpOworCisgICAgICAgIFdLRGljdGlvbmFyeUFkZEl0ZW0o
bWVzc2FnZUJvZHkuZ2V0KCksIFV0aWw6OnRvV0soIlVSTFJlcXVlc3RSZXR1cm4iKS5nZXQoKSwg
cmVxdWVzdCk7CisgICAgICAgIFdLRGljdGlvbmFyeUFkZEl0ZW0obWVzc2FnZUJvZHkuZ2V0KCks
IFV0aWw6OnRvV0soIkRhdGFSZXR1cm4iKS5nZXQoKSwgZGF0YSk7CisgICAgICAgIFdLRGljdGlv
bmFyeUFkZEl0ZW0obWVzc2FnZUJvZHkuZ2V0KCksIFV0aWw6OnRvV0soIk1JTUVUeXBlUmV0dXJu
IikuZ2V0KCksIE1JTUVUeXBlKTsKKyAgICAgICAgV0tEaWN0aW9uYXJ5QWRkSXRlbShtZXNzYWdl
Qm9keS5nZXQoKSwgVXRpbDo6dG9XSygiRW5jb2RpbmdOYW1lUmV0dXJuIikuZ2V0KCksIGVuY29k
aW5nTmFtZSk7CisgICAgICAgIFdLRGljdGlvbmFyeUFkZEl0ZW0obWVzc2FnZUJvZHkuZ2V0KCks
IFV0aWw6OnRvV0soIlVucmVhY2hhYmxlVVJMUmV0dXJuIikuZ2V0KCksIHVucmVhY2hhYmxlVVJM
KTsKKyAgICAgICAgV0tEaWN0aW9uYXJ5QWRkSXRlbShtZXNzYWdlQm9keS5nZXQoKSwgVXRpbDo6
dG9XSygiVXNlckRhdGFSZXR1cm4iKS5nZXQoKSwgdXNlckRhdGEpOworCisgICAgICAgIFdLQnVu
ZGxlUG9zdE1lc3NhZ2UoSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyOjpzaGFyZWQoKS5idW5kbGUo
KSwgVXRpbDo6dG9XSygiV2lsbExvYWREYXRhUmVxdWVzdFJldHVybiIpLmdldCgpLCBtZXNzYWdl
Qm9keS5nZXQoKSk7CisKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlUGFnZShX
S0J1bmRsZVJlZiwgV0tCdW5kbGVQYWdlUmVmIGJ1bmRsZVBhZ2UpIE9WRVJSSURFCisgICAgewor
ICAgICAgICBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnQgcGFnZUxvYWRlckNsaWVudDsKKyAgICAg
ICAgbWVtc2V0KCZwYWdlTG9hZGVyQ2xpZW50LCAwLCBzaXplb2YocGFnZUxvYWRlckNsaWVudCkp
OworICAgICAgICAKKyAgICAgICAgcGFnZUxvYWRlckNsaWVudC52ZXJzaW9uID0gNTsKKyAgICAg
ICAgcGFnZUxvYWRlckNsaWVudC5jbGllbnRJbmZvID0gdGhpczsKKyAgICAgICAgcGFnZUxvYWRl
ckNsaWVudC53aWxsTG9hZFVSTFJlcXVlc3QgPSB3aWxsTG9hZFVSTFJlcXVlc3Q7CisgICAgICAg
IHBhZ2VMb2FkZXJDbGllbnQud2lsbExvYWREYXRhUmVxdWVzdCA9IHdpbGxMb2FkRGF0YVJlcXVl
c3Q7CisgICAgICAgIAorICAgICAgICBXS0J1bmRsZVBhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KGJ1
bmRsZVBhZ2UsICZwYWdlTG9hZGVyQ2xpZW50KTsKKyAgICB9Cit9OworCitzdGF0aWMgSW5qZWN0
ZWRCdW5kbGVUZXN0OjpSZWdpc3RlcjxXaWxsTG9hZFRlc3Q+IHJlZ2lzdHJhcigiV2lsbExvYWRU
ZXN0Iik7CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKSW5kZXg6IFRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZS5jcHAJKHJldmlzaW9uIDE1MDAyMikKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzI3LDYgKzMyNyw4IEBAIEluamVjdGVkQnVuZGxlUGFnZTo6SW5qZWN0ZWRCdW5kbGVQYWdlKFcK
ICAgICAgICAgMCwgLy8gcmVnaXN0ZXJJbnRlbnRTZXJ2aWNlRm9yRnJhbWUKICAgICAgICAgMCwg
Ly8gZGlkTGF5b3V0CiAgICAgICAgIDAsIC8vIGZlYXR1cmVzVXNlZEluUGFnZQorICAgICAgICAw
LCAvLyB3aWxsTG9hZFVSTFJlcXVlc3QKKyAgICAgICAgMCwgLy8gd2lsbExvYWREYXRhUmVxdWVz
dAogICAgIH07CiAgICAgV0tCdW5kbGVQYWdlU2V0UGFnZUxvYWRlckNsaWVudChtX3BhZ2UsICZs
b2FkZXJDbGllbnQpOwogCg==
</data>
<flag name="review"
          id="223136"
          type_id="1"
          status="+"
          setter="andersca"
    />
    <flag name="commit-queue"
          id="223137"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
      

    </bug>

</bugzilla>