<?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>197093</bug_id>
          
          <creation_ts>2019-04-18 23:12:56 -0700</creation_ts>
          <short_desc>REGRESSION (r230681): Do not use stored credentials if WKBundlePageResourceLoadClient.shouldUseCredentialStorage returns false</short_desc>
          <delta_ts>2019-07-06 19:34: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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, Regression</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>184240</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>cdumez</cc>
    
    <cc>dbates</cc>
    
    <cc>sihui_liu</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1528710</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-04-18 23:12:56 -0700</bug_when>
    <thetext>REGRESSION(r230681) Do not use stored credentials if WKBundlePageResourceLoadClient.shouldUseCredentialStorage returns false</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1528713</commentid>
    <comment_count>1</comment_count>
      <attachid>367788</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-04-18 23:20:50 -0700</bug_when>
    <thetext>Created attachment 367788
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1528780</commentid>
    <comment_count>2</comment_count>
      <attachid>367805</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-04-19 10:03:16 -0700</bug_when>
    <thetext>Created attachment 367805
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1529412</commentid>
    <comment_count>3</comment_count>
      <attachid>367805</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-04-22 14:58:18 -0700</bug_when>
    <thetext>Comment on attachment 367805
Patch

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

&gt; Source/WebKit/UIProcess/WebProcessPool.cpp:1724
&gt; +void WebProcessPool::removeCredential(WebCore::Credential&amp;&amp; credential, WebCore::ProtectionSpace&amp;&amp; protectionSpace, CompletionHandler&lt;void()&gt;&amp;&amp; completionHandler)

Do we really need Credential&amp;&amp; and ProtectionSpace&amp;&amp;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1529415</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-04-22 14:59:12 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #3)
&gt; Comment on attachment 367805 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=367805&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/WebProcessPool.cpp:1724
&gt; &gt; +void WebProcessPool::removeCredential(WebCore::Credential&amp;&amp; credential, WebCore::ProtectionSpace&amp;&amp; protectionSpace, CompletionHandler&lt;void()&gt;&amp;&amp; completionHandler)
&gt; 
&gt; Do we really need Credential&amp;&amp; and ProtectionSpace&amp;&amp;?

It is coming from IPC so I think this is common practice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1529416</commentid>
    <comment_count>5</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-04-22 15:07:28 -0700</bug_when>
    <thetext>&gt; &gt; &gt; Source/WebKit/UIProcess/WebProcessPool.cpp:1724
&gt; &gt; &gt; +void WebProcessPool::removeCredential(WebCore::Credential&amp;&amp; credential, WebCore::ProtectionSpace&amp;&amp; protectionSpace, CompletionHandler&lt;void()&gt;&amp;&amp; completionHandler)
&gt; &gt; 
&gt; &gt; Do we really need Credential&amp;&amp; and ProtectionSpace&amp;&amp;?
&gt; 
&gt; It is coming from IPC so I think this is common practice.

NetworkProcess::removeCredential is coming from IPC and maybe in the future we might need r-values.
WebProcessPool::removeCredential is called directly from SPI and does not seem to need r-values.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1529419</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-04-22 15:08:22 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #5)
&gt; &gt; &gt; &gt; Source/WebKit/UIProcess/WebProcessPool.cpp:1724
&gt; &gt; &gt; &gt; +void WebProcessPool::removeCredential(WebCore::Credential&amp;&amp; credential, WebCore::ProtectionSpace&amp;&amp; protectionSpace, CompletionHandler&lt;void()&gt;&amp;&amp; completionHandler)
&gt; &gt; &gt; 
&gt; &gt; &gt; Do we really need Credential&amp;&amp; and ProtectionSpace&amp;&amp;?
&gt; &gt; 
&gt; &gt; It is coming from IPC so I think this is common practice.
&gt; 
&gt; NetworkProcess::removeCredential is coming from IPC and maybe in the future
&gt; we might need r-values.
&gt; WebProcessPool::removeCredential is called directly from SPI and does not
&gt; seem to need r-values.

Oh, right. I misread which one you were commenting on. Sorry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1529442</commentid>
    <comment_count>7</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-04-22 16:06:22 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/244521/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1529443</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-04-22 16:07:22 -0700</bug_when>
    <thetext>&lt;rdar://problem/50111468&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1550591</commentid>
    <comment_count>9</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2019-07-05 17:46:42 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1550592</commentid>
    <comment_count>10</comment_count>
      <attachid>373556</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2019-07-05 17:46:43 -0700</bug_when>
    <thetext>Created attachment 373556
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1550689</commentid>
    <comment_count>11</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2019-07-06 19:34:22 -0700</bug_when>
    <thetext>The patch is not for this bug...</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>367788</attachid>
            <date>2019-04-18 23:20:50 -0700</date>
            <delta_ts>2019-04-19 10:03:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-197093-20190418232049.patch</filename>
            <type>text/plain</type>
            <size>28491</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDQzNDIpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDE5LTA0LTE4ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUkVHUkVTU0lPTihy
MjMwNjgxKSBEbyBub3QgdXNlIHN0b3JlZCBjcmVkZW50aWFscyBpZiBXS0J1bmRsZVBhZ2VSZXNv
dXJjZUxvYWRDbGllbnQuc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UgcmV0dXJucyBmYWxzZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk3MDkzCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS80OTcwODI2OD4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBPbmx5IGdldCB0aGUgU3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3kgZnJvbSB0aGUgTmV0d29ya0xvYWRDaGVja2VyIGlmIHdlIGhhdmVuJ3QgYWxyZWFkeSBi
ZWVuIHRvbGQgbm90IHRvIHVzZSBjcmVkZW50aWFscy4KKyAgICAgICAgQWxzbyBhZGQgc29tZSB0
ZXN0IGluZnJhc3RydWN0dXJlIGZvciBjbGVhcmluZyBwZXJzaXN0ZW50IGNyZWRlbnRpYWxzIGFk
ZGVkIGJ5IHRoZSB0ZXN0LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVtb3ZlQ3JlZGVudGlh
bCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQpOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZW1vdmVDcmVkZW50aWFsKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW06CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wg
X3JlbW92ZUNyZWRlbnRpYWw6Zm9yUHJvdGVjdGlvblNwYWNlOmNvbXBsZXRpb25IYW5kbGVyOl0p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbDo6cmVtb3ZlQ3JlZGVudGlhbCk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmg6CisKIDIwMTktMDQtMTYgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRh
ZEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgZml4IHRoZSBidWlsZCB3aXRoIHJl
Y2VudCBTREtzLgpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDI0NDMyOSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDcyLDYgKzI0
NzIsMTEgQEAgU3RvcmFnZVF1b3RhTWFuYWdlciYgTmV0d29ya1Byb2Nlc3M6OnN0bwogfQogCiAj
aWYgIVBMQVRGT1JNKENPQ09BKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVtb3ZlQ3JlZGVudGlh
bChXZWJDb3JlOjpDcmVkZW50aWFsJiYsIFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSYmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgY29tcGxl
dGlvbkhhbmRsZXIoKTsKK30KKwogdm9pZCBOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZVByb2Nl
c3MoY29uc3QgQXV4aWxpYXJ5UHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYpCiB7CiB9
CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5o
CShyZXZpc2lvbiAyNDQzMjkpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDYgKzczLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgQ2VydGlmaWNhdGVJbmZvOwogY2xhc3MgQ3VybFByb3h5U2V0dGluZ3M7
CiBjbGFzcyBEb3dubG9hZElEOworY2xhc3MgUHJvdGVjdGlvblNwYWNlOwogY2xhc3MgU3RvcmFn
ZVF1b3RhTWFuYWdlcjsKIGNsYXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjsKIGNsYXNzIFJlc291
cmNlRXJyb3I7CkBAIC00MjksNiArNDMwLDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcGxhdGZv
cm1TeW5jQWxsQ29va2llcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCisgICAgdm9p
ZCByZW1vdmVDcmVkZW50aWFsKFdlYkNvcmU6OkNyZWRlbnRpYWwmJiwgV2ViQ29yZTo6UHJvdGVj
dGlvblNwYWNlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisKICAgICB2b2lkIHJl
Z2lzdGVyVVJMU2NoZW1lQXNTZWN1cmUoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAgdm9pZCBy
ZWdpc3RlclVSTFNjaGVtZUFzQnlwYXNzaW5nQ29udGVudFNlY3VyaXR5UG9saWN5KGNvbnN0IFN0
cmluZyYpIGNvbnN0OwogICAgIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVBc0xvY2FsKGNvbnN0IFN0
cmluZyYpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyNDQzMjkpCisrKyBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCSh3
b3JraW5nIGNvcHkpCkBAIC0xNzEsNCArMTcxLDUgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nl
c3MgTGVnYWN5UmVjZWl2ZQogICAgIENsZWFyQWRDbGlja0F0dHJpYnV0aW9uKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCkgLT4gKCkgQXN5bmMKICAgICBTZXRBZENsaWNrQXR0cmlidXRpb25PdmVy
cmlkZVRpbWVyRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGJvb2wgdmFsdWUp
IC0+ICgpIEFzeW5jCiAgICAgU2V0QWRDbGlja0F0dHJpYnV0aW9uQ29udmVyc2lvblVSTEZvclRl
c3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgdXJsKSAtPiAoKSBBc3luYworICAg
IFJlbW92ZUNyZWRlbnRpYWwoV2ViQ29yZTo6Q3JlZGVudGlhbCBjcmVkZW50aWFsLCBXZWJDb3Jl
OjpQcm90ZWN0aW9uU3BhY2UgcHJvdGVjdGlvblNwYWNlKSAtPiAoKSBBc3luYwogfQpJbmRleDog
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmNwcAkocmV2aXNpb24gMjQ0MzI5KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzQsNyAr
Mjc0LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29yawogCiAgICAg
TmV0d29ya0xvYWRQYXJhbWV0ZXJzIHBhcmFtZXRlcnMgPSBtX3BhcmFtZXRlcnM7CiAgICAgcGFy
YW1ldGVycy5uZXR3b3JrQWN0aXZpdHlUcmFja2VyID0gbV9uZXR3b3JrQWN0aXZpdHlUcmFja2Vy
OwotICAgIGlmIChtX25ldHdvcmtMb2FkQ2hlY2tlcikKKyAgICBpZiAocGFyYW1ldGVycy5zdG9y
ZWRDcmVkZW50aWFsc1BvbGljeSA9PSBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6
VXNlICYmIG1fbmV0d29ya0xvYWRDaGVja2VyKQogICAgICAgICBwYXJhbWV0ZXJzLnN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5ID0gbV9uZXR3b3JrTG9hZENoZWNrZXItPnN0b3JlZENyZWRlbnRpYWxz
UG9saWN5KCk7CiAKICAgICBpZiAocmVxdWVzdC51cmwoKS5wcm90b2NvbElzQmxvYigpKQpJbmRl
eDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29h
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya1Byb2Nlc3NDb2NvYS5tbQkocmV2aXNpb24gMjQ0MzI5KQorKysgU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0yMDUsNiArMjA1LDE4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNsZWFyRGlza0NhY2hl
KFdhbGwKICAgICB9KS5nZXQoKSk7CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlbW92ZUNy
ZWRlbnRpYWwoV2ViQ29yZTo6Q3JlZGVudGlhbCYmIGNyZWRlbnRpYWwsIFdlYkNvcmU6OlByb3Rl
Y3Rpb25TcGFjZSYmIHByb3RlY3Rpb25TcGFjZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIE5TVVJMUHJvdGVjdGlvblNwYWNlICpuc1NwYWNl
ID0gcHJvdGVjdGlvblNwYWNlLm5zU3BhY2UoKTsKKyAgICBOU1VSTENyZWRlbnRpYWwgKm5zQ3Jl
ZGVudGlhbCA9IFtbW05TVVJMQ3JlZGVudGlhbFN0b3JhZ2Ugc2hhcmVkQ3JlZGVudGlhbFN0b3Jh
Z2VdIGNyZWRlbnRpYWxzRm9yUHJvdGVjdGlvblNwYWNlOm5zU3BhY2VdIG9iamVjdEZvcktleTpj
cmVkZW50aWFsLnVzZXIoKV07CisgICAgUkVMRUFTRV9BU1NFUlQobnNDcmVkZW50aWFsKTsKKyAg
ICBSRUxFQVNFX0FTU0VSVChbbnNDcmVkZW50aWFsLnVzZXIgaXNFcXVhbFRvU3RyaW5nOmNyZWRl
bnRpYWwudXNlcigpXSk7CisgICAgUkVMRUFTRV9BU1NFUlQoW25zQ3JlZGVudGlhbC5wYXNzd29y
ZCBpc0VxdWFsVG9TdHJpbmc6Y3JlZGVudGlhbC5wYXNzd29yZCgpXSk7CisgICAgW1tOU1VSTENy
ZWRlbnRpYWxTdG9yYWdlIHNoYXJlZENyZWRlbnRpYWxTdG9yYWdlXSByZW1vdmVDcmVkZW50aWFs
Om5zQ3JlZGVudGlhbCBmb3JQcm90ZWN0aW9uU3BhY2U6bnNTcGFjZV07CisgICAgUkVMRUFTRV9B
U1NFUlQoIVtbW05TVVJMQ3JlZGVudGlhbFN0b3JhZ2Ugc2hhcmVkQ3JlZGVudGlhbFN0b3JhZ2Vd
IGNyZWRlbnRpYWxzRm9yUHJvdGVjdGlvblNwYWNlOm5zU3BhY2VdIG9iamVjdEZvcktleTpjcmVk
ZW50aWFsLnVzZXIoKV0pOworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Cit9CisKICNpZiBQTEFU
Rk9STShNQUMpCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRTaGFyZWRIVFRQQ29va2llU3RvcmFn
ZShjb25zdCBWZWN0b3I8dWludDhfdD4mIGlkZW50aWZpZXIpCiB7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCShyZXZpc2lvbiAyNDQzMjkpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE3MjEsNiArMTcyMSwxMSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjp1c2VUZXN0aW5nTmV0
d29ya1NlCiAgICAgbV9zaG91bGRVc2VUZXN0aW5nTmV0d29ya1Nlc3Npb24gPSB0cnVlOwogfQog
Cit2b2lkIFdlYlByb2Nlc3NQb29sOjpyZW1vdmVDcmVkZW50aWFsKFdlYkNvcmU6OkNyZWRlbnRp
YWwmJiBjcmVkZW50aWFsLCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UmJiBwcm90ZWN0aW9uU3Bh
Y2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAg
ICBtX25ldHdvcmtQcm9jZXNzLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQ
cm9jZXNzOjpSZW1vdmVDcmVkZW50aWFsKGNyZWRlbnRpYWwsIHByb3RlY3Rpb25TcGFjZSksIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVT4KIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNlbmRTeW5jVG9OZXR3b3JraW5nUHJvY2Vz
cyhUJiYgbWVzc2FnZSwgVSYmIHJlcGx5KQogewpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5oCShyZXZpc2lvbiAyNDQzMjkpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MDcsNiArNTA3LDgg
QEAgcHVibGljOgogCiAgICAgdm9pZCBkaXNhYmxlRGVsYXllZFdlYlByb2Nlc3NMYXVuY2goKSB7
IG1faXNEZWxheWVkV2ViUHJvY2Vzc0xhdW5jaERpc2FibGVkID0gdHJ1ZTsgfQogCisgICAgdm9p
ZCByZW1vdmVDcmVkZW50aWFsKFdlYkNvcmU6OkNyZWRlbnRpYWwmJiwgV2ViQ29yZTo6UHJvdGVj
dGlvblNwYWNlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgCiBwcml2YXRl
OgogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCShyZXZpc2lvbiAy
NDQzMjkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9v
bC5tbQkod29ya2luZyBjb3B5KQpAQCAtNTE5LDYgKzUxOSwxMyBAQCAtICh2b2lkKV9wcmVjb25u
ZWN0VG9TZXJ2ZXI6KE5TVVJMICopc2VyCiAgICAgX3Byb2Nlc3NQb29sLT5wcmVjb25uZWN0VG9T
ZXJ2ZXIoc2VydmVyVVJMKTsKIH0KIAorLSAodm9pZClfcmVtb3ZlQ3JlZGVudGlhbDooTlNVUkxD
cmVkZW50aWFsICopY3JlZGVudGlhbCBmb3JQcm90ZWN0aW9uU3BhY2U6KE5TVVJMUHJvdGVjdGlv
blNwYWNlICopcHJvdGVjdGlvblNwYWNlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKCkpY29t
cGxldGlvbkhhbmRsZXIKK3sKKyAgICBfcHJvY2Vzc1Bvb2wtPnJlbW92ZUNyZWRlbnRpYWwoV2Vi
Q29yZTo6Q3JlZGVudGlhbChjcmVkZW50aWFsKSwgV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlKHBy
b3RlY3Rpb25TcGFjZSksIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0
aW9uSGFuZGxlcildIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9KTsKK30K
KwogLSAoc2l6ZV90KV9wbHVnaW5Qcm9jZXNzQ291bnQKIHsKICNpZiAhUExBVEZPUk0oSU9TX0ZB
TUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQ
b29sUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCShyZXZpc2lvbiAyNDQzMjkpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTE2LDYgKzExNiw5IEBACiAtICh2b2lkKV9wcmVjb25uZWN0VG9TZXJ2ZXI6
KE5TVVJMICopc2VydmVyVVJMIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCksIGlvcygx
MS4zKSk7CiAKIC8vIFRlc3Qgb25seS4KKy0gKHZvaWQpX3JlbW92ZUNyZWRlbnRpYWw6KE5TVVJM
Q3JlZGVudGlhbCAqKWNyZWRlbnRpYWwgZm9yUHJvdGVjdGlvblNwYWNlOihOU1VSTFByb3RlY3Rp
b25TcGFjZSAqKXByb3RlY3Rpb25TcGFjZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKSgpKWNv
bXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhX
S19JT1NfVEJBKSk7CisKKy8vIFRlc3Qgb25seS4KIC0gKHZvaWQpX3NldEFsbG93c0FueVNTTENl
cnRpZmljYXRlRm9yU2VydmljZVdvcmtlcjooQk9PTClhbGxvd3MgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcygxMC4xMy40KSwgaW9zKDExLjMpKTsKIC0gKHZvaWQpX3JlZ2lzdGVyVVJMU2NoZW1lU2Vy
dmljZVdvcmtlcnNDYW5IYW5kbGU6KE5TU3RyaW5nICopc2NoZW1lIFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3MoMTAuMTMuNCksIGlvcygxMS4zKSk7CiAtICh2b2lkKV9nZXRBY3RpdmVQYWdlc09yaWdp
bnNJbldlYlByb2Nlc3NGb3JUZXN0aW5nOihwaWRfdClwaWQgY29tcGxldGlvbkhhbmRsZXI6KHZv
aWQoXikoTlNBcnJheTxOU1N0cmluZyAqPiAqKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZB
SUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwpJbmRleDogVG9vbHMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjQ0NDUw
KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzMgQEAKKzIw
MTktMDQtMTggIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKwor
ICAgICAgICBSRUdSRVNTSU9OKHIyMzA2ODEpIERvIG5vdCB1c2Ugc3RvcmVkIGNyZWRlbnRpYWxz
IGlmIFdLQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVudC5zaG91bGRVc2VDcmVkZW50aWFsU3Rv
cmFnZSByZXR1cm5zIGZhbHNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTcwOTMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ5NzA4MjY4PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIHRlc3Qg
dGhhdCBkb2VzIHR3byBsb2Fkcy4gIFRoZSBmaXJzdCBsb2FkIHNob3VsZFVzZUNyZWRlbnRpYWxT
dG9yYWdlIHJldHVybnMgdHJ1ZSBhbmQgd2UgcHJvdmlkZSBhIHBlcnNpc3RlbnQgY3JlZGVudGlh
bC4KKyAgICAgICAgVGhlIHNlY29uZCBsb2FkIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlIHJl
dHVybnMgZmFsc2UgYW5kIHdlIHZlcmlmeSB0aGF0IGEgY2hhbGxlbmdlIGlzIHJlY2VpdmVkIHdp
dGggbm8gc3VnZ2VzdGVkIGNyZWRlbnRpYWwuCisgICAgICAgIFdlIGFsc28gbmVlZCB0byBtYWtl
IHRoZSBUQ1BTZXJ2ZXIgYWJsZSB0byBoYW5kbGUgbW9yZSB0aGFuIG9uZSBjb25uZWN0aW9uIGJl
Y2F1c2Ugd2UgbmVlZCB0aGVzZSB0d28gbG9hZHMgdG8gY29tZSBmcm9tIHRoZSBzYW1lIHByb3Rl
Y3Rpb24gc3BhY2UsCisgICAgICAgIGFuZCBvdXIgY3VycmVudCBDb2NvYSBpbXBsZW1lbnRhdGlv
biBvZiBOZXR3b3JrU2Vzc2lvbiB1c2VzIHR3byBOU1VSTFNlc3Npb25zIHRoYXQgZG9uJ3Qgc2hh
cmUgYSBjb25uZWN0aW9uIGNhY2hlLCBvbmUgZm9yIGxvYWRzIHdpdGggY3JlZGVudGlhbHMKKyAg
ICAgICAgYW5kIG9uZSBmb3IgbG9hZHMgd2l0aG91dCBjcmVkZW50aWFscywgc28gdGhlcmUgYXJl
IHR3byBUQ1AgY29ubmVjdGlvbnMgdG8gdGhlIHNhbWUgc2VydmVyIGluIHRoaXMgdGVzdC4KKwor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVENQU2VydmVyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OlRDUFNlcnZlcjo6VENQU2VydmVyKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRD
UFNlcnZlcjo6flRDUFNlcnZlcik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUQ1BTZXJ2ZXI6
OnNvY2tldEJpbmRMaXN0ZW4pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VENQU2VydmVyOjp3
YWl0Rm9yQW5kUmVwbHlUb1JlcXVlc3RzKTogRGVsZXRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1RDUFNlcnZlci5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvQmFzaWNQcm9wb3NlZENyZWRlbnRpYWxQbHVnSW4ubW06IEFkZGVkLgorICAg
ICAgICAoLVtCYXNpY1Byb3Bvc2VkQ3JlZGVudGlhbFBsdWdJbiB3ZWJQcm9jZXNzUGx1Z0luOmRp
ZENyZWF0ZUJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjpdKToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0NoYWxsZW5nZS5tbToKKyAgICAgICAgKHJlc3BvbmRXaXRo
Q2hhbGxlbmdlVGhlbk9LKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAg
ICAoLVtQcm9wb3NlZENyZWRlbnRpYWxEZWxlZ2F0ZSB3ZWJWaWV3OmRpZEZpbmlzaE5hdmlnYXRp
b246XSk6CisgICAgICAgICgtW1Byb3Bvc2VkQ3JlZGVudGlhbERlbGVnYXRlIHdlYlZpZXc6ZGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAg
ICAgICAoVEVTVCk6CisKIDIwMTktMDQtMTggIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3
ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyNDQ0MzQuCklu
ZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1RDUFNlcnZlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvVGVzdFdlYktpdEFQSS9UQ1BTZXJ2ZXIuY3BwCShyZXZpc2lvbiAyNDQzMjkpCisrKyBUb29s
cy9UZXN0V2ViS2l0QVBJL1RDUFNlcnZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDM1ICsy
OSwzOSBAQAogI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KICNpbmNsdWRlIDx0aHJlYWQ+CiAjaW5j
bHVkZSA8dW5pc3RkLmg+Ci0jaW5jbHVkZSA8dmVjdG9yPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25h
bC5oPgogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKLVRDUFNlcnZlcjo6VENQU2VydmVy
KEZ1bmN0aW9uPHZvaWQoU29ja2V0KT4mJiBzb2NrZXRIYW5kbGVyKQotICAgIDogbV9zb2NrZXRI
YW5kbGVyKFdURk1vdmUoc29ja2V0SGFuZGxlcikpCitUQ1BTZXJ2ZXI6OlRDUFNlcnZlcihGdW5j
dGlvbjx2b2lkKFNvY2tldCk+JiYgY29ubmVjdGlvbkhhbmRsZXIsIHNpemVfdCBjb25uZWN0aW9u
cykKKyAgICA6IG1fY29ubmVjdGlvbkhhbmRsZXIoV1RGTW92ZShjb25uZWN0aW9uSGFuZGxlcikp
CiB7Ci0gICAgc29ja2V0QmluZExpc3RlbigpOwotICAgIG1fdGhyZWFkID0gc3RkOjp0aHJlYWQo
JlRDUFNlcnZlcjo6d2FpdEZvckFuZFJlcGx5VG9SZXF1ZXN0cywgdGhpcyk7CisgICAgYXV0byBs
aXN0ZW5pbmdTb2NrZXQgPSBzb2NrZXRCaW5kTGlzdGVuKGNvbm5lY3Rpb25zKTsKKyAgICBBU1NF
UlQobGlzdGVuaW5nU29ja2V0KTsKKyAgICBtX2xpc3RlbmluZ1RocmVhZCA9IHN0ZDo6dGhyZWFk
KFt0aGlzLCBsaXN0ZW5pbmdTb2NrZXQgPSAqbGlzdGVuaW5nU29ja2V0LCBjb25uZWN0aW9uc10g
eworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvbm5lY3Rpb25zOyArK2kpIHsKKyAg
ICAgICAgICAgIFNvY2tldCBjb25uZWN0aW9uU29ja2V0ID0gYWNjZXB0KGxpc3RlbmluZ1NvY2tl
dCwgbnVsbHB0ciwgbnVsbHB0cik7CisgICAgICAgICAgICBtX2Nvbm5lY3Rpb25UaHJlYWRzLmFw
cGVuZChzdGQ6OnRocmVhZChbdGhpcywgY29ubmVjdGlvblNvY2tldF0geworICAgICAgICAgICAg
ICAgIG1fY29ubmVjdGlvbkhhbmRsZXIoY29ubmVjdGlvblNvY2tldCk7CisgICAgICAgICAgICAg
ICAgc2h1dGRvd24oY29ubmVjdGlvblNvY2tldCwgU0hVVF9SRFdSKTsKKyAgICAgICAgICAgICAg
ICBjbG9zZShjb25uZWN0aW9uU29ja2V0KTsKKyAgICAgICAgICAgIH0pKTsKKyAgICAgICAgfQor
ICAgIH0pOwogfQogCiBUQ1BTZXJ2ZXI6On5UQ1BTZXJ2ZXIoKQogewotICAgIG1fdGhyZWFkLmpv
aW4oKTsKLSAgICBpZiAobV9saXN0ZW5pbmdTb2NrZXQgIT0gSW52YWxpZFNvY2tldCkgewotICAg
ICAgICBjbG9zZShtX2xpc3RlbmluZ1NvY2tldCk7Ci0gICAgICAgIG1fbGlzdGVuaW5nU29ja2V0
ID0gSW52YWxpZFNvY2tldDsKLSAgICB9Ci0gICAgaWYgKG1fY29ubmVjdGlvblNvY2tldCAhPSBJ
bnZhbGlkU29ja2V0KSB7Ci0gICAgICAgIGNsb3NlKG1fY29ubmVjdGlvblNvY2tldCk7Ci0gICAg
ICAgIG1fY29ubmVjdGlvblNvY2tldCA9IEludmFsaWRTb2NrZXQ7Ci0gICAgfQorICAgIG1fbGlz
dGVuaW5nVGhyZWFkLmpvaW4oKTsKKyAgICBmb3IgKGF1dG8mIGNvbm5lY3Rpb25UaHJlYWRzIDog
bV9jb25uZWN0aW9uVGhyZWFkcykKKyAgICAgICAgY29ubmVjdGlvblRocmVhZHMuam9pbigpOwog
fQogCi12b2lkIFRDUFNlcnZlcjo6c29ja2V0QmluZExpc3RlbigpCithdXRvIFRDUFNlcnZlcjo6
c29ja2V0QmluZExpc3RlbihzaXplX3QgY29ubmVjdGlvbnMpIC0+IE9wdGlvbmFsPFNvY2tldD4K
IHsKLSAgICBtX2xpc3RlbmluZ1NvY2tldCA9IHNvY2tldChQRl9JTkVULCBTT0NLX1NUUkVBTSwg
MCk7Ci0gICAgaWYgKG1fbGlzdGVuaW5nU29ja2V0ID09IEludmFsaWRTb2NrZXQpCi0gICAgICAg
IHJldHVybjsKKyAgICBTb2NrZXQgbGlzdGVuaW5nU29ja2V0ID0gc29ja2V0KFBGX0lORVQsIFNP
Q0tfU1RSRUFNLCAwKTsKKyAgICBpZiAobGlzdGVuaW5nU29ja2V0ID09IC0xKQorICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIAogICAgIC8vIFBvcnRzIDQ5MTUyLTY1NTM1IGFyZSB1
bmFsbG9jYXRlZCBwb3J0cy4gVHJ5IHVudGlsIHdlIGZpbmQgb25lIHRoYXQncyBmcmVlLgogICAg
IGZvciAoUG9ydCBwb3J0ID0gNDkxNTI7IHBvcnQ7IHBvcnQrKykgewpAQCAtNjYsMzQgKzcwLDIy
IEBAIHZvaWQgVENQU2VydmVyOjpzb2NrZXRCaW5kTGlzdGVuKCkKICAgICAgICAgbmFtZS5zaW5f
ZmFtaWx5ID0gQUZfSU5FVDsKICAgICAgICAgbmFtZS5zaW5fcG9ydCA9IGh0b25zKHBvcnQpOwog
ICAgICAgICBuYW1lLnNpbl9hZGRyLnNfYWRkciA9IGh0b25sKElOQUREUl9BTlkpOwotICAgICAg
ICBpZiAoYmluZChtX2xpc3RlbmluZ1NvY2tldCwgcmVpbnRlcnByZXRfY2FzdDxzb2NrYWRkcio+
KCZuYW1lKSwgc2l6ZW9mKG5hbWUpKSA8IDApIHsKKyAgICAgICAgaWYgKGJpbmQobGlzdGVuaW5n
U29ja2V0LCByZWludGVycHJldF9jYXN0PHNvY2thZGRyKj4oJm5hbWUpLCBzaXplb2YobmFtZSkp
IDwgMCkgewogICAgICAgICAgICAgLy8gVGhpcyBwb3J0IGlzIGJ1c3kuIFRyeSB0aGUgbmV4dCBw
b3J0LgogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgY29uc3QgdW5z
aWduZWQgbWF4Q29ubmVjdGlvbnMgPSAxOwotICAgICAgICBpZiAobGlzdGVuKG1fbGlzdGVuaW5n
U29ja2V0LCBtYXhDb25uZWN0aW9ucykgPT0gLTEpIHsKKyAgICAgICAgaWYgKGxpc3RlbihsaXN0
ZW5pbmdTb2NrZXQsIGNvbm5lY3Rpb25zKSA9PSAtMSkgewogICAgICAgICAgICAgLy8gTGlzdGVu
aW5nIGZhaWxlZC4KLSAgICAgICAgICAgIGNsb3NlKG1fbGlzdGVuaW5nU29ja2V0KTsKLSAgICAg
ICAgICAgIG1fbGlzdGVuaW5nU29ja2V0ID0gSW52YWxpZFNvY2tldDsKLSAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIGNsb3NlKGxpc3RlbmluZ1NvY2tldCk7CisgICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwogICAgICAgICB9CiAgICAgICAgIG1fcG9ydCA9IHBvcnQ7Ci0g
ICAgICAgIHJldHVybjsgLy8gU3VjY2Vzc2Z1bGx5IHNldCB1cCBsaXN0ZW5pbmcgcG9ydC4KKyAg
ICAgICAgcmV0dXJuIGxpc3RlbmluZ1NvY2tldDsgLy8gU3VjY2Vzc2Z1bGx5IHNldCB1cCBsaXN0
ZW5pbmcgcG9ydC4KICAgICB9CiAgICAgCiAgICAgLy8gQ291bGRuJ3QgZmluZCBhbiBhdmFpbGFi
bGUgcG9ydC4KLSAgICBjbG9zZShtX2xpc3RlbmluZ1NvY2tldCk7Ci0gICAgbV9saXN0ZW5pbmdT
b2NrZXQgPSBJbnZhbGlkU29ja2V0OwotfQotCi12b2lkIFRDUFNlcnZlcjo6d2FpdEZvckFuZFJl
cGx5VG9SZXF1ZXN0cygpCi17Ci0gICAgaWYgKG1fbGlzdGVuaW5nU29ja2V0ID09IEludmFsaWRT
b2NrZXQpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBtX2Nvbm5lY3Rpb25Tb2NrZXQgPSBh
Y2NlcHQobV9saXN0ZW5pbmdTb2NrZXQsIG51bGxwdHIsIG51bGxwdHIpOwotICAgIG1fc29ja2V0
SGFuZGxlcihtX2Nvbm5lY3Rpb25Tb2NrZXQpOwotICAgIHNodXRkb3duKG1fY29ubmVjdGlvblNv
Y2tldCwgU0hVVF9SRFdSKTsKKyAgICBjbG9zZShsaXN0ZW5pbmdTb2NrZXQpOworICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKSW5kZXg6
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVENQU2VydmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVz
dFdlYktpdEFQSS9UQ1BTZXJ2ZXIuaAkocmV2aXNpb24gMjQ0MzI5KQorKysgVG9vbHMvVGVzdFdl
YktpdEFQSS9UQ1BTZXJ2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMzAgKzI3LDI4IEBACiAK
ICNpbmNsdWRlIDx0aHJlYWQ+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CisjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIGNsYXNzIFRDUFNl
cnZlciB7CiBwdWJsaWM6CiAgICAgdXNpbmcgU29ja2V0ID0gaW50OwotICAgIHN0YXRpYyBjb25z
dGV4cHIgU29ja2V0IEludmFsaWRTb2NrZXQgPSAtMTsKICAgICB1c2luZyBQb3J0ID0gdWludDE2
X3Q7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBQb3J0IEludmFsaWRQb3J0ID0gMDsKICAgICAKLSAg
ICBUQ1BTZXJ2ZXIoRnVuY3Rpb248dm9pZChTb2NrZXQpPiYmKTsKKyAgICBUQ1BTZXJ2ZXIoRnVu
Y3Rpb248dm9pZChTb2NrZXQpPiYmLCBzaXplX3QgY29ubmVjdGlvbnMgPSAxKTsKICAgICB+VENQ
U2VydmVyKCk7CiAgICAgCiAgICAgUG9ydCBwb3J0KCkgY29uc3QgeyByZXR1cm4gbV9wb3J0OyB9
CiAgICAgCiBwcml2YXRlOgotICAgIHZvaWQgc29ja2V0QmluZExpc3RlbigpOwotICAgIHZvaWQg
d2FpdEZvckFuZFJlcGx5VG9SZXF1ZXN0cygpOworICAgIE9wdGlvbmFsPFNvY2tldD4gc29ja2V0
QmluZExpc3RlbihzaXplX3QgY29ubmVjdGlvbnMpOwogCiAgICAgUG9ydCBtX3BvcnQgeyBJbnZh
bGlkUG9ydCB9OwotICAgIFNvY2tldCBtX2xpc3RlbmluZ1NvY2tldCB7IEludmFsaWRTb2NrZXQg
fTsKLSAgICBTb2NrZXQgbV9jb25uZWN0aW9uU29ja2V0IHsgSW52YWxpZFNvY2tldCB9OwotICAg
IHN0ZDo6dGhyZWFkIG1fdGhyZWFkOwotICAgIEZ1bmN0aW9uPHZvaWQoU29ja2V0KT4gbV9zb2Nr
ZXRIYW5kbGVyOworICAgIHN0ZDo6dGhyZWFkIG1fbGlzdGVuaW5nVGhyZWFkOworICAgIFZlY3Rv
cjxzdGQ6OnRocmVhZD4gbV9jb25uZWN0aW9uVGhyZWFkczsKKyAgICBGdW5jdGlvbjx2b2lkKFNv
Y2tldCk+IG1fY29ubmVjdGlvbkhhbmRsZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2Vi
S2l0QVBJCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjQ0MzI5KQorKysg
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHdvcmtpbmcgY29weSkKQEAgLTMxMiw2ICszMTIsNyBAQAogCQk1QzIzREYwQjIyNDYwMTU4
MDBGNDU0QjYgLyogQ2hhbGxlbmdlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNUMyM0RGMEEyMjQ1QzlENzAwRjQ1NEI2IC8qIENoYWxsZW5nZS5tbSAq
LzsgfTsKIAkJNUMyOTM2OTMxRDVCRjcwRDAwREVBQjFFIC8qIENvb2tpZUFjY2VwdFBvbGljeS5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMjkzNjkx
MUQ1QkY2M0UwMERFQUIxRSAvKiBDb29raWVBY2NlcHRQb2xpY3kubW0gKi87IH07CiAJCTVDMjkz
Njk2MUQ1QzAwRUQwMERFQUIxRSAvKiBDb29raWVNZXNzYWdlLmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMyOTM2OTQxRDVCRkQxOTAw
REVBQjFFIC8qIENvb2tpZU1lc3NhZ2UuaHRtbCAqLzsgfTsKKwkJNUM0MjU5NDYyMjY2QTY4QTAw
MzlBQTdBIC8qIEJhc2ljUHJvcG9zZWRDcmVkZW50aWFsUGx1Z0luLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM0MjU5NDQyMjY2OUU5QjAwMzlBQTdB
IC8qIEJhc2ljUHJvcG9zZWRDcmVkZW50aWFsUGx1Z0luLm1tICovOyB9OwogCQk1QzRBODQ5NTFG
N0VFRkZDMDBBQ0ZDNTQgLyogQ29uZmlndXJhdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDNEE4NDk0MUY3RUVGRDQwMEFDRkM1NCAvKiBDb25m
aWd1cmF0aW9uLm1tICovOyB9OwogCQk1QzY5QkRENTFGODJBN0VGMDAwRjRGNEIgLyogSmF2YVNj
cmlwdER1cmluZ05hdmlnYXRpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1QzY5QkRENDFGODJBN0VCMDAwRjRGNEIgLyogSmF2YVNjcmlwdER1cmlu
Z05hdmlnYXRpb24ubW0gKi87IH07CiAJCTVDNkUyN0E3MjI0RUVCRUEwMDEyODczNiAvKiBVUkxD
YW5vbmljYWxpemF0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNUM2RTI3QTYyMjRFRUJFQTAwMTI4NzM2IC8qIFVSTENhbm9uaWNhbGl6YXRpb24u
bW0gKi87IH07CkBAIC0xNzIzLDYgKzE3MjQsNyBAQAogCQk1QzIzREYwQTIyNDVDOUQ3MDBGNDU0
QjYgLyogQ2hhbGxlbmdlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gQ2hhbGxlbmdlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzI5MzY5MTFE
NUJGNjNFMDBERUFCMUUgLyogQ29va2llQWNjZXB0UG9saWN5Lm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ29va2llQWNjZXB0UG9saWN5Lm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1QzI5MzY5NDFENUJGRDE5MDBERUFCMUUgLyogQ29va2llTWVz
c2FnZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gQ29va2llTWVzc2FnZS5odG1s
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzQyNTk0NDIyNjY5RTlCMDAzOUFBN0Eg
LyogQmFzaWNQcm9wb3NlZENyZWRlbnRpYWxQbHVnSW4ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBCYXNpY1Byb3Bvc2VkQ3JlZGVudGlhbFBsdWdJbi5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM0QTg0OTQxRjdFRUZENDAwQUNGQzU0IC8qIENv
bmZpZ3VyYXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBD
b25maWd1cmF0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzVFNjMzRDFE
MEI2Nzk0MDA4NUEwMjUgLyogVW5pcXVlUmVmLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFVuaXF1ZVJlZi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTVDNjlCREQ0MUY4MkE3RUIwMDBGNEY0QiAvKiBKYXZhU2NyaXB0RHVyaW5nTmF2aWdhdGlvbi5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEphdmFTY3JpcHREdXJp
bmdOYXZpZ2F0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjUyMyw2ICsy
NTI1LDcgQEAKIAkJCQk3NTRDRUM4MDFGNjcyMkRDMDBEMDAzOUEgLyogQXV0b0ZpbGxBdmFpbGFi
bGUubW0gKi8sCiAJCQkJMkREMzU1MzUxQkQwODM3ODAwNURGNEE3IC8qIEF1dG9MYXlvdXRJbnRl
Z3JhdGlvbi5tbSAqLywKIAkJCQkwN0NEMzJGNTIwNjVCNTQyMDA2NEE0QkUgLyogQVZGb3VuZGF0
aW9uUHJlZmVyZW5jZS5tbSAqLywKKwkJCQk1QzQyNTk0NDIyNjY5RTlCMDAzOUFBN0EgLyogQmFz
aWNQcm9wb3NlZENyZWRlbnRpYWxQbHVnSW4ubW0gKi8sCiAJCQkJMzc0QjdBNUUxREYzNkVFRTAw
QUNDQjZDIC8qIEJ1bmRsZUVkaXRpbmdEZWxlZ2F0ZS5tbSAqLywKIAkJCQkzNzRCN0E1RjFERjM2
RUVFMDBBQ0NCNkMgLyogQnVuZGxlRWRpdGluZ0RlbGVnYXRlUGx1Z0luLm1tICovLAogCQkJCTM3
NEI3QTYyMURGMzczNEMwMEFDQ0I2QyAvKiBCdW5kbGVFZGl0aW5nRGVsZWdhdGVQcm90b2NvbC5o
ICovLApAQCAtNDQ3MSw2ICs0NDc0LDcgQEAKIAkJCWZpbGVzID0gKAogCQkJCTM3RTdERDY3MUVB
MDcxRjMwMDlCMzk2RCAvKiBBZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93ZWRVUkxzUGx1Z2luLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJNzU0Q0VDODExRjY3MjJGMjAwRDAwMzlBIC8qIEF1dG9GaWxs
QXZhaWxhYmxlLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNUM0MjU5NDYyMjY2QTY4QTAwMzlBQTdB
IC8qIEJhc2ljUHJvcG9zZWRDcmVkZW50aWFsUGx1Z0luLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
Mzc0QjdBNjExREYzNzFDRjAwQUNDQjZDIC8qIEJ1bmRsZUVkaXRpbmdEZWxlZ2F0ZVBsdWdJbi5t
bSBpbiBTb3VyY2VzICovLAogCQkJCUExM0VCQkIwMUI4NzQzNkYwMDA5NzExMCAvKiBCdW5kbGVQ
YXJhbWV0ZXJzUGx1Z0luLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzdBNzA5QUYxRTNFQTk3RTAw
Q0E1OTY5IC8qIEJ1bmRsZVJhbmdlSGFuZGxlUGx1Z0luLm1tIGluIFNvdXJjZXMgKi8sCkluZGV4
OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Jhc2ljUHJvcG9zZWRDcmVk
ZW50aWFsUGx1Z0luLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvQmFzaWNQcm9wb3NlZENyZWRlbnRpYWxQbHVnSW4ubW0JKG5vbmV4aXN0ZW50
KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9CYXNpY1Byb3Bvc2Vk
Q3JlZGVudGlhbFBsdWdJbi5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisKKyNpbXBvcnQgPFdlYktpdC9XS0J1bmRsZVBh
Z2UuaD4KKyNpbXBvcnQgPFdlYktpdC9XS0J1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnQuaD4K
KyNpbXBvcnQgPFdlYktpdC9XS1dlYlByb2Nlc3NQbHVnSW4uaD4KKyNpbXBvcnQgPFdlYktpdC9X
S1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXJQcml2YXRlLmg+CisKK0Bp
bnRlcmZhY2UgQmFzaWNQcm9wb3NlZENyZWRlbnRpYWxQbHVnSW4gOiBOU09iamVjdDxXS1dlYlBy
b2Nlc3NQbHVnSW4+CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBCYXNpY1Byb3Bvc2VkQ3JlZGVu
dGlhbFBsdWdJbgorCistICh2b2lkKXdlYlByb2Nlc3NQbHVnSW46KFdLV2ViUHJvY2Vzc1BsdWdJ
bkNvbnRyb2xsZXIgKilwbHVnSW5Db250cm9sbGVyIGRpZENyZWF0ZUJyb3dzZXJDb250ZXh0Q29u
dHJvbGxlcjooV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyICopYnJv
d3NlckNvbnRleHRDb250cm9sbGVyCit7CisgICAgV0tCdW5kbGVQYWdlUmVzb3VyY2VMb2FkQ2xp
ZW50VjEgY2xpZW50OworICAgIG1lbXNldCgmY2xpZW50LCAwLCBzaXplb2YoY2xpZW50KSk7Cisg
ICAgY2xpZW50LmJhc2UudmVyc2lvbiA9IDE7CisgICAgY2xpZW50LnNob3VsZFVzZUNyZWRlbnRp
YWxTdG9yYWdlID0gW10oYXV0by4uLikgeworICAgICAgICBzdGF0aWMgc2l6ZV90IHF1ZXJpZXMg
eyAwIH07CisgICAgICAgIEFTU0VSVChxdWVyaWVzIDwgMik7CisgICAgICAgIHJldHVybiAhcXVl
cmllcysrOworICAgIH07CisgICAgV0tCdW5kbGVQYWdlU2V0UmVzb3VyY2VMb2FkQ2xpZW50KFti
cm93c2VyQ29udGV4dENvbnRyb2xsZXIgX2J1bmRsZVBhZ2VSZWZdLCAmY2xpZW50LmJhc2UpOwor
fQorCitAZW5kCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0No
YWxsZW5nZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0NoYWxsZW5nZS5tbQkocmV2aXNpb24gMjQ0MzI5KQorKysgVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9DaGFsbGVuZ2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTI5
LDYgKzI5LDM3IEBACiAjaW1wb3J0ICJUQ1BTZXJ2ZXIuaCIKICNpbXBvcnQgIlRlc3QuaCIKICNp
bXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKKyNpbXBvcnQgIldLV2ViVmlld0NvbmZpZ3VyYXRpb25F
eHRyYXMuaCIKKyNpbXBvcnQgPFdlYktpdC9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oPgorCitzdGF0
aWMgYm9vbCBuYXZpZ2F0aW9uRmluaXNoZWQ7CisKK3N0YXRpYyB2b2lkIHJlc3BvbmRXaXRoQ2hh
bGxlbmdlVGhlbk9LKGludCBzb2NrZXQpCit7CisgICAgY2hhciByZWFkQnVmZmVyWzEwMDBdOwor
ICAgIGF1dG8gYnl0ZXNSZWFkID0gOjpyZWFkKHNvY2tldCwgcmVhZEJ1ZmZlciwgc2l6ZW9mKHJl
YWRCdWZmZXIpKTsKKyAgICBFWFBFQ1RfR1QoYnl0ZXNSZWFkLCAwKTsKKyAgICBFWFBFQ1RfVFJV
RShzdGF0aWNfY2FzdDxzaXplX3Q+KGJ5dGVzUmVhZCkgPCBzaXplb2YocmVhZEJ1ZmZlcikpOwor
ICAgIAorICAgIGNvbnN0IGNoYXIqIGNoYWxsZW5nZUhlYWRlciA9CisgICAgIkhUVFAvMS4xIDQw
MSBVbmF1dGhvcml6ZWRcclxuIgorICAgICJEYXRlOiBTYXQsIDIzIE1hciAyMDE5IDA2OjI5OjAx
IEdNVFxyXG4iCisgICAgIkNvbnRlbnQtTGVuZ3RoOiAwXHJcbiIKKyAgICAiV1dXLUF1dGhlbnRp
Y2F0ZTogQmFzaWMgcmVhbG09XCJ0ZXN0cmVhbG1cIlxyXG5cclxuIjsKKyAgICBhdXRvIGJ5dGVz
V3JpdHRlbiA9IDo6d3JpdGUoc29ja2V0LCBjaGFsbGVuZ2VIZWFkZXIsIHN0cmxlbihjaGFsbGVu
Z2VIZWFkZXIpKTsKKyAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8c2l6ZV90PihieXRlc1dyaXR0
ZW4pLCBzdHJsZW4oY2hhbGxlbmdlSGVhZGVyKSk7CisgICAgCisgICAgYnl0ZXNSZWFkID0gOjpy
ZWFkKHNvY2tldCwgcmVhZEJ1ZmZlciwgc2l6ZW9mKHJlYWRCdWZmZXIpKTsKKyAgICBFWFBFQ1Rf
R1QoYnl0ZXNSZWFkLCAwKTsKKyAgICBFWFBFQ1RfVFJVRShzdGF0aWNfY2FzdDxzaXplX3Q+KGJ5
dGVzUmVhZCkgPCBzaXplb2YocmVhZEJ1ZmZlcikpOworICAgIAorICAgIGNvbnN0IGNoYXIqIHJl
c3BvbnNlSGVhZGVyID0KKyAgICAiSFRUUC8xLjEgMjAwIE9LXHJcbiIKKyAgICAiQ29udGVudC1M
ZW5ndGg6IDEzXHJcblxyXG4iCisgICAgIkhlbGxvLCBXb3JsZCEiOworICAgIGJ5dGVzV3JpdHRl
biA9IDo6d3JpdGUoc29ja2V0LCByZXNwb25zZUhlYWRlciwgc3RybGVuKHJlc3BvbnNlSGVhZGVy
KSk7CisgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oYnl0ZXNXcml0dGVuKSwgc3Ry
bGVuKHJlc3BvbnNlSGVhZGVyKSk7Cit9CiAKICNpZiBQTEFURk9STShNQUMpCiAKQEAgLTE3MCw3
ICsyMDEsNiBAQCBzdGF0aWMgc3RkOjpwYWlyPFJldGFpblB0cjxOU1VSTENyZWRlbnRpCiAgICAg
fTsKIH0KIAotc3RhdGljIGJvb2wgbmF2aWdhdGlvbkZpbmlzaGVkOwogc3RhdGljIFJldGFpblB0
cjxOU1N0cmluZz4ga2V5Y2hhaW5QYXRoOwogCiBAaW50ZXJmYWNlIENoYWxsZW5nZURlbGVnYXRl
IDogTlNPYmplY3QgPFdLTmF2aWdhdGlvbkRlbGVnYXRlPgpAQCAtMjA4LDMxICsyMzgsNyBAQCBu
YW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIFRFU1QoQ2hhbGxlbmdlLCBTZWNJZGVudGl0eSkK
IHsKLSAgICBUQ1BTZXJ2ZXIgc2VydmVyKFtdIChhdXRvIHNvY2tldCkgewotICAgICAgICBjaGFy
IHJlYWRCdWZmZXJbMTAwMF07Ci0gICAgICAgIGF1dG8gYnl0ZXNSZWFkID0gOjpyZWFkKHNvY2tl
dCwgcmVhZEJ1ZmZlciwgc2l6ZW9mKHJlYWRCdWZmZXIpKTsKLSAgICAgICAgRVhQRUNUX0dUKGJ5
dGVzUmVhZCwgMCk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKHN0YXRpY19jYXN0PHNpemVfdD4oYnl0
ZXNSZWFkKSA8IHNpemVvZihyZWFkQnVmZmVyKSk7Ci0gICAgICAgIAotICAgICAgICBjb25zdCBj
aGFyKiBjaGFsbGVuZ2VIZWFkZXIgPQotICAgICAgICAiSFRUUC8xLjEgNDAxIFVuYXV0aG9yaXpl
ZFxyXG4iCi0gICAgICAgICJEYXRlOiBTYXQsIDIzIE1hciAyMDE5IDA2OjI5OjAxIEdNVFxyXG4i
Ci0gICAgICAgICJDb250ZW50LUxlbmd0aDogMFxyXG4iCi0gICAgICAgICJXV1ctQXV0aGVudGlj
YXRlOiBCYXNpYyByZWFsbT1cInRlc3RyZWFsbVwiXHJcblxyXG4iOwotICAgICAgICBhdXRvIGJ5
dGVzV3JpdHRlbiA9IDo6d3JpdGUoc29ja2V0LCBjaGFsbGVuZ2VIZWFkZXIsIHN0cmxlbihjaGFs
bGVuZ2VIZWFkZXIpKTsKLSAgICAgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oYnl0
ZXNXcml0dGVuKSwgc3RybGVuKGNoYWxsZW5nZUhlYWRlcikpOwotICAgICAgICAKLSAgICAgICAg
Ynl0ZXNSZWFkID0gOjpyZWFkKHNvY2tldCwgcmVhZEJ1ZmZlciwgc2l6ZW9mKHJlYWRCdWZmZXIp
KTsKLSAgICAgICAgRVhQRUNUX0dUKGJ5dGVzUmVhZCwgMCk7Ci0gICAgICAgIEVYUEVDVF9UUlVF
KHN0YXRpY19jYXN0PHNpemVfdD4oYnl0ZXNSZWFkKSA8IHNpemVvZihyZWFkQnVmZmVyKSk7Ci0g
ICAgICAgIAotICAgICAgICBjb25zdCBjaGFyKiByZXNwb25zZUhlYWRlciA9Ci0gICAgICAgICJI
VFRQLzEuMSAyMDAgT0tcclxuIgotICAgICAgICAiQ29udGVudC1MZW5ndGg6IDEzXHJcblxyXG4i
Ci0gICAgICAgICJIZWxsbywgV29ybGQhIjsKLSAgICAgICAgYnl0ZXNXcml0dGVuID0gOjp3cml0
ZShzb2NrZXQsIHJlc3BvbnNlSGVhZGVyLCBzdHJsZW4ocmVzcG9uc2VIZWFkZXIpKTsKLSAgICAg
ICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oYnl0ZXNXcml0dGVuKSwgc3RybGVuKHJl
c3BvbnNlSGVhZGVyKSk7Ci0gICAgfSk7CisgICAgVENQU2VydmVyIHNlcnZlcihyZXNwb25kV2l0
aENoYWxsZW5nZVRoZW5PSyk7CiAKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZp
ZXcgbmV3XSk7CiAgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW0NoYWxsZW5nZURlbGVnYXRl
IG5ld10pOwpAQCAtMjUwLDMgKzI1Niw1NSBAQCBURVNUKENoYWxsZW5nZSwgU2VjSWRlbnRpdHkp
CiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCiAKICNlbmRpZgorCitzdGF0aWMgYm9vbCBy
ZWNlaXZlZFNlY29uZENoYWxsZW5nZTsKK3N0YXRpYyBSZXRhaW5QdHI8TlNVUkxDcmVkZW50aWFs
PiBwZXJzaXN0ZW50Q3JlZGVudGlhbDsKKworQGludGVyZmFjZSBQcm9wb3NlZENyZWRlbnRpYWxE
ZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS05hdmlnYXRpb25EZWxlZ2F0ZT4KK0BlbmQKKworQGltcGxl
bWVudGF0aW9uIFByb3Bvc2VkQ3JlZGVudGlhbERlbGVnYXRlCisKKy0gKHZvaWQpd2ViVmlldzoo
V0tXZWJWaWV3ICopd2ViVmlldyBkaWRGaW5pc2hOYXZpZ2F0aW9uOihudWxsX3Vuc3BlY2lmaWVk
IFdLTmF2aWdhdGlvbiAqKW5hdmlnYXRpb24KK3sKKyAgICBuYXZpZ2F0aW9uRmluaXNoZWQgPSB0
cnVlOworfQorCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICop
Y2hhbGxlbmdlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1VSTFNlc3Npb25BdXRoQ2hh
bGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqKSljb21wbGV0aW9uSGFuZGxlcgor
eworICAgIHN0YXRpYyBib29sIGZpcnN0Q2hhbGxlbmdlID0gdHJ1ZTsKKyAgICBpZiAoZmlyc3RD
aGFsbGVuZ2UpIHsKKyAgICAgICAgZmlyc3RDaGFsbGVuZ2UgPSBmYWxzZTsKKyAgICAgICAgcGVy
c2lzdGVudENyZWRlbnRpYWwgPSBhZG9wdE5TKFtbTlNVUkxDcmVkZW50aWFsIGFsbG9jXSBpbml0
V2l0aFVzZXI6QCJ0ZXN0dXNlciIgcGFzc3dvcmQ6QCJ0ZXN0cGFzc3dvcmQiIHBlcnNpc3RlbmNl
Ok5TVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlUGVybWFuZW50XSk7CisgICAgICAgIHJldHVybiBj
b21wbGV0aW9uSGFuZGxlcihOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbCwg
cGVyc2lzdGVudENyZWRlbnRpYWwuZ2V0KCkpOworICAgICAgICAKKyAgICB9CisgICAgcmVjZWl2
ZWRTZWNvbmRDaGFsbGVuZ2UgPSB0cnVlOworICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihO
U1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbCwgbmlsKTsKK30KKworQGVuZAor
CitURVNUKENoYWxsZW5nZSwgQmFzaWNQcm9wb3NlZENyZWRlbnRpYWwpCit7CisgICAgdXNpbmcg
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEk7CisgICAgVENQU2VydmVyIHNlcnZlcihyZXNwb25kV2l0
aENoYWxsZW5nZVRoZW5PSywgMik7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gcmV0YWluUHRy
KFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJ
bkNsYXNzTmFtZTpAIkJhc2ljUHJvcG9zZWRDcmVkZW50aWFsUGx1Z0luIl0pOworICAgIGF1dG8g
d2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0
WmVybyBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBhdXRvIGRlbGVn
YXRlID0gYWRvcHROUyhbUHJvcG9zZWRDcmVkZW50aWFsRGVsZWdhdGUgbmV3XSk7CisgICAgW3dl
YlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKyAgICBSZXRhaW5Q
dHI8TlNVUkxSZXF1ZXN0PiByZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpb
TlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0dHA6Ly8x
MjcuMC4wLjE6JWQvIiwgc2VydmVyLnBvcnQoKV1dXTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVz
dDpyZXF1ZXN0LmdldCgpXTsKKyAgICBVdGlsOjpydW4oJm5hdmlnYXRpb25GaW5pc2hlZCk7Cisg
ICAgbmF2aWdhdGlvbkZpbmlzaGVkID0gZmFsc2U7CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6
cmVxdWVzdC5nZXQoKV07CisgICAgVXRpbDo6cnVuKCZuYXZpZ2F0aW9uRmluaXNoZWQpOworICAg
IEVYUEVDVF9UUlVFKHJlY2VpdmVkU2Vjb25kQ2hhbGxlbmdlKTsKKyAgICAKKyAgICBOU1VSTFBy
b3RlY3Rpb25TcGFjZSAqcHJvdGVjdGlvblNwYWNlID0gW1tbTlNVUkxQcm90ZWN0aW9uU3BhY2Ug
YWxsb2NdIGluaXRXaXRoSG9zdDpAIjEyNy4wLjAuMSIgcG9ydDpzZXJ2ZXIucG9ydCgpIHByb3Rv
Y29sOk5TVVJMUHJvdGVjdGlvblNwYWNlSFRUUCByZWFsbTpAInRlc3RyZWFsbSIgYXV0aGVudGlj
YXRpb25NZXRob2Q6TlNVUkxBdXRoZW50aWNhdGlvbk1ldGhvZEhUVFBCYXNpY10gYXV0b3JlbGVh
c2VdOworICAgIF9fYmxvY2sgYm9vbCByZW1vdmVkQ3JlZGVudGlhbCA9IGZhbHNlOworICAgIFtb
d2ViVmlldyBjb25maWd1cmF0aW9uXS5wcm9jZXNzUG9vbCBfcmVtb3ZlQ3JlZGVudGlhbDpwZXJz
aXN0ZW50Q3JlZGVudGlhbC5nZXQoKSBmb3JQcm90ZWN0aW9uU3BhY2U6cHJvdGVjdGlvblNwYWNl
IGNvbXBsZXRpb25IYW5kbGVyOl57CisgICAgICAgIHJlbW92ZWRDcmVkZW50aWFsID0gdHJ1ZTsK
KyAgICB9XTsKKyAgICBVdGlsOjpydW4oJnJlbW92ZWRDcmVkZW50aWFsKTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>367805</attachid>
            <date>2019-04-19 10:03:16 -0700</date>
            <delta_ts>2019-07-05 17:46:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-197093-20190419100316.patch</filename>
            <type>text/plain</type>
            <size>28495</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDQzNDIpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDE5LTA0LTE4ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUkVHUkVTU0lPTihy
MjMwNjgxKSBEbyBub3QgdXNlIHN0b3JlZCBjcmVkZW50aWFscyBpZiBXS0J1bmRsZVBhZ2VSZXNv
dXJjZUxvYWRDbGllbnQuc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UgcmV0dXJucyBmYWxzZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk3MDkzCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS80OTcwODI2OD4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBPbmx5IGdldCB0aGUgU3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3kgZnJvbSB0aGUgTmV0d29ya0xvYWRDaGVja2VyIGlmIHdlIGhhdmVuJ3QgYWxyZWFkeSBi
ZWVuIHRvbGQgbm90IHRvIHVzZSBjcmVkZW50aWFscy4KKyAgICAgICAgQWxzbyBhZGQgc29tZSB0
ZXN0IGluZnJhc3RydWN0dXJlIGZvciBjbGVhcmluZyBwZXJzaXN0ZW50IGNyZWRlbnRpYWxzIGFk
ZGVkIGJ5IHRoZSB0ZXN0LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVtb3ZlQ3JlZGVudGlh
bCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQpOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZW1vdmVDcmVkZW50aWFsKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW06CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wg
X3JlbW92ZUNyZWRlbnRpYWw6Zm9yUHJvdGVjdGlvblNwYWNlOmNvbXBsZXRpb25IYW5kbGVyOl0p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbDo6cmVtb3ZlQ3JlZGVudGlhbCk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmg6CisKIDIwMTktMDQtMTYgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRh
ZEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgZml4IHRoZSBidWlsZCB3aXRoIHJl
Y2VudCBTREtzLgpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDI0NDMyOSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDcyLDYgKzI0
NzIsMTEgQEAgU3RvcmFnZVF1b3RhTWFuYWdlciYgTmV0d29ya1Byb2Nlc3M6OnN0bwogfQogCiAj
aWYgIVBMQVRGT1JNKENPQ09BKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVtb3ZlQ3JlZGVudGlh
bChXZWJDb3JlOjpDcmVkZW50aWFsJiYsIFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSYmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgY29tcGxl
dGlvbkhhbmRsZXIoKTsKK30KKwogdm9pZCBOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZVByb2Nl
c3MoY29uc3QgQXV4aWxpYXJ5UHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYpCiB7CiB9
CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5o
CShyZXZpc2lvbiAyNDQzMjkpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDYgKzczLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgQ2VydGlmaWNhdGVJbmZvOwogY2xhc3MgQ3VybFByb3h5U2V0dGluZ3M7
CiBjbGFzcyBEb3dubG9hZElEOworY2xhc3MgUHJvdGVjdGlvblNwYWNlOwogY2xhc3MgU3RvcmFn
ZVF1b3RhTWFuYWdlcjsKIGNsYXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjsKIGNsYXNzIFJlc291
cmNlRXJyb3I7CkBAIC00MjksNiArNDMwLDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcGxhdGZv
cm1TeW5jQWxsQ29va2llcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCisgICAgdm9p
ZCByZW1vdmVDcmVkZW50aWFsKFdlYkNvcmU6OkNyZWRlbnRpYWwmJiwgV2ViQ29yZTo6UHJvdGVj
dGlvblNwYWNlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisKICAgICB2b2lkIHJl
Z2lzdGVyVVJMU2NoZW1lQXNTZWN1cmUoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAgdm9pZCBy
ZWdpc3RlclVSTFNjaGVtZUFzQnlwYXNzaW5nQ29udGVudFNlY3VyaXR5UG9saWN5KGNvbnN0IFN0
cmluZyYpIGNvbnN0OwogICAgIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVBc0xvY2FsKGNvbnN0IFN0
cmluZyYpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyNDQzMjkpCisrKyBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCSh3
b3JraW5nIGNvcHkpCkBAIC0xNzEsNCArMTcxLDUgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nl
c3MgTGVnYWN5UmVjZWl2ZQogICAgIENsZWFyQWRDbGlja0F0dHJpYnV0aW9uKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCkgLT4gKCkgQXN5bmMKICAgICBTZXRBZENsaWNrQXR0cmlidXRpb25PdmVy
cmlkZVRpbWVyRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGJvb2wgdmFsdWUp
IC0+ICgpIEFzeW5jCiAgICAgU2V0QWRDbGlja0F0dHJpYnV0aW9uQ29udmVyc2lvblVSTEZvclRl
c3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgdXJsKSAtPiAoKSBBc3luYworICAg
IFJlbW92ZUNyZWRlbnRpYWwoV2ViQ29yZTo6Q3JlZGVudGlhbCBjcmVkZW50aWFsLCBXZWJDb3Jl
OjpQcm90ZWN0aW9uU3BhY2UgcHJvdGVjdGlvblNwYWNlKSAtPiAoKSBBc3luYwogfQpJbmRleDog
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmNwcAkocmV2aXNpb24gMjQ0MzI5KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzQsNyAr
Mjc0LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29yawogCiAgICAg
TmV0d29ya0xvYWRQYXJhbWV0ZXJzIHBhcmFtZXRlcnMgPSBtX3BhcmFtZXRlcnM7CiAgICAgcGFy
YW1ldGVycy5uZXR3b3JrQWN0aXZpdHlUcmFja2VyID0gbV9uZXR3b3JrQWN0aXZpdHlUcmFja2Vy
OwotICAgIGlmIChtX25ldHdvcmtMb2FkQ2hlY2tlcikKKyAgICBpZiAocGFyYW1ldGVycy5zdG9y
ZWRDcmVkZW50aWFsc1BvbGljeSA9PSBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6
VXNlICYmIG1fbmV0d29ya0xvYWRDaGVja2VyKQogICAgICAgICBwYXJhbWV0ZXJzLnN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5ID0gbV9uZXR3b3JrTG9hZENoZWNrZXItPnN0b3JlZENyZWRlbnRpYWxz
UG9saWN5KCk7CiAKICAgICBpZiAocmVxdWVzdC51cmwoKS5wcm90b2NvbElzQmxvYigpKQpJbmRl
eDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29h
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya1Byb2Nlc3NDb2NvYS5tbQkocmV2aXNpb24gMjQ0MzI5KQorKysgU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0yMDUsNiArMjA1LDE4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNsZWFyRGlza0NhY2hl
KFdhbGwKICAgICB9KS5nZXQoKSk7CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlbW92ZUNy
ZWRlbnRpYWwoV2ViQ29yZTo6Q3JlZGVudGlhbCYmIGNyZWRlbnRpYWwsIFdlYkNvcmU6OlByb3Rl
Y3Rpb25TcGFjZSYmIHByb3RlY3Rpb25TcGFjZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIE5TVVJMUHJvdGVjdGlvblNwYWNlICpuc1NwYWNl
ID0gcHJvdGVjdGlvblNwYWNlLm5zU3BhY2UoKTsKKyAgICBOU1VSTENyZWRlbnRpYWwgKm5zQ3Jl
ZGVudGlhbCA9IFtbW05TVVJMQ3JlZGVudGlhbFN0b3JhZ2Ugc2hhcmVkQ3JlZGVudGlhbFN0b3Jh
Z2VdIGNyZWRlbnRpYWxzRm9yUHJvdGVjdGlvblNwYWNlOm5zU3BhY2VdIG9iamVjdEZvcktleTpj
cmVkZW50aWFsLnVzZXIoKV07CisgICAgUkVMRUFTRV9BU1NFUlQobnNDcmVkZW50aWFsKTsKKyAg
ICBSRUxFQVNFX0FTU0VSVChbbnNDcmVkZW50aWFsLnVzZXIgaXNFcXVhbFRvU3RyaW5nOmNyZWRl
bnRpYWwudXNlcigpXSk7CisgICAgUkVMRUFTRV9BU1NFUlQoW25zQ3JlZGVudGlhbC5wYXNzd29y
ZCBpc0VxdWFsVG9TdHJpbmc6Y3JlZGVudGlhbC5wYXNzd29yZCgpXSk7CisgICAgW1tOU1VSTENy
ZWRlbnRpYWxTdG9yYWdlIHNoYXJlZENyZWRlbnRpYWxTdG9yYWdlXSByZW1vdmVDcmVkZW50aWFs
Om5zQ3JlZGVudGlhbCBmb3JQcm90ZWN0aW9uU3BhY2U6bnNTcGFjZV07CisgICAgUkVMRUFTRV9B
U1NFUlQoIVtbW05TVVJMQ3JlZGVudGlhbFN0b3JhZ2Ugc2hhcmVkQ3JlZGVudGlhbFN0b3JhZ2Vd
IGNyZWRlbnRpYWxzRm9yUHJvdGVjdGlvblNwYWNlOm5zU3BhY2VdIG9iamVjdEZvcktleTpjcmVk
ZW50aWFsLnVzZXIoKV0pOworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Cit9CisKICNpZiBQTEFU
Rk9STShNQUMpCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRTaGFyZWRIVFRQQ29va2llU3RvcmFn
ZShjb25zdCBWZWN0b3I8dWludDhfdD4mIGlkZW50aWZpZXIpCiB7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCShyZXZpc2lvbiAyNDQzMjkpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE3MjEsNiArMTcyMSwxMSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjp1c2VUZXN0aW5nTmV0
d29ya1NlCiAgICAgbV9zaG91bGRVc2VUZXN0aW5nTmV0d29ya1Nlc3Npb24gPSB0cnVlOwogfQog
Cit2b2lkIFdlYlByb2Nlc3NQb29sOjpyZW1vdmVDcmVkZW50aWFsKFdlYkNvcmU6OkNyZWRlbnRp
YWwmJiBjcmVkZW50aWFsLCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UmJiBwcm90ZWN0aW9uU3Bh
Y2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAg
ICBtX25ldHdvcmtQcm9jZXNzLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQ
cm9jZXNzOjpSZW1vdmVDcmVkZW50aWFsKGNyZWRlbnRpYWwsIHByb3RlY3Rpb25TcGFjZSksIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVT4KIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNlbmRTeW5jVG9OZXR3b3JraW5nUHJvY2Vz
cyhUJiYgbWVzc2FnZSwgVSYmIHJlcGx5KQogewpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5oCShyZXZpc2lvbiAyNDQzMjkpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MDcsNiArNTA3LDgg
QEAgcHVibGljOgogCiAgICAgdm9pZCBkaXNhYmxlRGVsYXllZFdlYlByb2Nlc3NMYXVuY2goKSB7
IG1faXNEZWxheWVkV2ViUHJvY2Vzc0xhdW5jaERpc2FibGVkID0gdHJ1ZTsgfQogCisgICAgdm9p
ZCByZW1vdmVDcmVkZW50aWFsKFdlYkNvcmU6OkNyZWRlbnRpYWwmJiwgV2ViQ29yZTo6UHJvdGVj
dGlvblNwYWNlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgCiBwcml2YXRl
OgogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCShyZXZpc2lvbiAy
NDQzMjkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9v
bC5tbQkod29ya2luZyBjb3B5KQpAQCAtNTE5LDYgKzUxOSwxMyBAQCAtICh2b2lkKV9wcmVjb25u
ZWN0VG9TZXJ2ZXI6KE5TVVJMICopc2VyCiAgICAgX3Byb2Nlc3NQb29sLT5wcmVjb25uZWN0VG9T
ZXJ2ZXIoc2VydmVyVVJMKTsKIH0KIAorLSAodm9pZClfcmVtb3ZlQ3JlZGVudGlhbDooTlNVUkxD
cmVkZW50aWFsICopY3JlZGVudGlhbCBmb3JQcm90ZWN0aW9uU3BhY2U6KE5TVVJMUHJvdGVjdGlv
blNwYWNlICopcHJvdGVjdGlvblNwYWNlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKCkpY29t
cGxldGlvbkhhbmRsZXIKK3sKKyAgICBfcHJvY2Vzc1Bvb2wtPnJlbW92ZUNyZWRlbnRpYWwoV2Vi
Q29yZTo6Q3JlZGVudGlhbChjcmVkZW50aWFsKSwgV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlKHBy
b3RlY3Rpb25TcGFjZSksIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0
aW9uSGFuZGxlcildIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9KTsKK30K
KwogLSAoc2l6ZV90KV9wbHVnaW5Qcm9jZXNzQ291bnQKIHsKICNpZiAhUExBVEZPUk0oSU9TX0ZB
TUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQ
b29sUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCShyZXZpc2lvbiAyNDQzMjkpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTE2LDYgKzExNiw5IEBACiAtICh2b2lkKV9wcmVjb25uZWN0VG9TZXJ2ZXI6
KE5TVVJMICopc2VydmVyVVJMIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCksIGlvcygx
MS4zKSk7CiAKIC8vIFRlc3Qgb25seS4KKy0gKHZvaWQpX3JlbW92ZUNyZWRlbnRpYWw6KE5TVVJM
Q3JlZGVudGlhbCAqKWNyZWRlbnRpYWwgZm9yUHJvdGVjdGlvblNwYWNlOihOU1VSTFByb3RlY3Rp
b25TcGFjZSAqKXByb3RlY3Rpb25TcGFjZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKSh2b2lk
KSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBp
b3MoV0tfSU9TX1RCQSkpOworCisvLyBUZXN0IG9ubHkuCiAtICh2b2lkKV9zZXRBbGxvd3NBbnlT
U0xDZXJ0aWZpY2F0ZUZvclNlcnZpY2VXb3JrZXI6KEJPT0wpYWxsb3dzIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoMTAuMTMuNCksIGlvcygxMS4zKSk7CiAtICh2b2lkKV9yZWdpc3RlclVSTFNjaGVt
ZVNlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlOihOU1N0cmluZyAqKXNjaGVtZSBXS19BUElfQVZBSUxB
QkxFKG1hY29zKDEwLjEzLjQpLCBpb3MoMTEuMykpOwogLSAodm9pZClfZ2V0QWN0aXZlUGFnZXNP
cmlnaW5zSW5XZWJQcm9jZXNzRm9yVGVzdGluZzoocGlkX3QpcGlkIGNvbXBsZXRpb25IYW5kbGVy
Oih2b2lkKF4pKE5TQXJyYXk8TlNTdHJpbmcgKj4gKikpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKSW5kZXg6IFRv
b2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0
NDQ1MCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBA
CisyMDE5LTA0LTE4ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgUkVHUkVTU0lPTihyMjMwNjgxKSBEbyBub3QgdXNlIHN0b3JlZCBjcmVkZW50
aWFscyBpZiBXS0J1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnQuc2hvdWxkVXNlQ3JlZGVudGlh
bFN0b3JhZ2UgcmV0dXJucyBmYWxzZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTk3MDkzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80OTcwODI2OD4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSB0
ZXN0IHRoYXQgZG9lcyB0d28gbG9hZHMuICBUaGUgZmlyc3QgbG9hZCBzaG91bGRVc2VDcmVkZW50
aWFsU3RvcmFnZSByZXR1cm5zIHRydWUgYW5kIHdlIHByb3ZpZGUgYSBwZXJzaXN0ZW50IGNyZWRl
bnRpYWwuCisgICAgICAgIFRoZSBzZWNvbmQgbG9hZCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFn
ZSByZXR1cm5zIGZhbHNlIGFuZCB3ZSB2ZXJpZnkgdGhhdCBhIGNoYWxsZW5nZSBpcyByZWNlaXZl
ZCB3aXRoIG5vIHN1Z2dlc3RlZCBjcmVkZW50aWFsLgorICAgICAgICBXZSBhbHNvIG5lZWQgdG8g
bWFrZSB0aGUgVENQU2VydmVyIGFibGUgdG8gaGFuZGxlIG1vcmUgdGhhbiBvbmUgY29ubmVjdGlv
biBiZWNhdXNlIHdlIG5lZWQgdGhlc2UgdHdvIGxvYWRzIHRvIGNvbWUgZnJvbSB0aGUgc2FtZSBw
cm90ZWN0aW9uIHNwYWNlLAorICAgICAgICBhbmQgb3VyIGN1cnJlbnQgQ29jb2EgaW1wbGVtZW50
YXRpb24gb2YgTmV0d29ya1Nlc3Npb24gdXNlcyB0d28gTlNVUkxTZXNzaW9ucyB0aGF0IGRvbid0
IHNoYXJlIGEgY29ubmVjdGlvbiBjYWNoZSwgb25lIGZvciBsb2FkcyB3aXRoIGNyZWRlbnRpYWxz
CisgICAgICAgIGFuZCBvbmUgZm9yIGxvYWRzIHdpdGhvdXQgY3JlZGVudGlhbHMsIHNvIHRoZXJl
IGFyZSB0d28gVENQIGNvbm5lY3Rpb25zIHRvIHRoZSBzYW1lIHNlcnZlciBpbiB0aGlzIHRlc3Qu
CisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1RDUFNlcnZlci5jcHA6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpUQ1BTZXJ2ZXI6OlRDUFNlcnZlcik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpUQ1BTZXJ2ZXI6On5UQ1BTZXJ2ZXIpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VENQU2Vy
dmVyOjpzb2NrZXRCaW5kTGlzdGVuKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRDUFNlcnZl
cjo6d2FpdEZvckFuZFJlcGx5VG9SZXF1ZXN0cyk6IERlbGV0ZWQuCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UQ1BTZXJ2ZXIuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0Jhc2ljUHJvcG9zZWRDcmVkZW50aWFsUGx1Z0luLm1tOiBBZGRlZC4K
KyAgICAgICAgKC1bQmFzaWNQcm9wb3NlZENyZWRlbnRpYWxQbHVnSW4gd2ViUHJvY2Vzc1BsdWdJ
bjpkaWRDcmVhdGVCcm93c2VyQ29udGV4dENvbnRyb2xsZXI6XSk6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9DaGFsbGVuZ2UubW06CisgICAgICAgIChyZXNwb25k
V2l0aENoYWxsZW5nZVRoZW5PSyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAg
ICAgICAgKC1bUHJvcG9zZWRDcmVkZW50aWFsRGVsZWdhdGUgd2ViVmlldzpkaWRGaW5pc2hOYXZp
Z2F0aW9uOl0pOgorICAgICAgICAoLVtQcm9wb3NlZENyZWRlbnRpYWxEZWxlZ2F0ZSB3ZWJWaWV3
OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpjb21wbGV0aW9uSGFuZGxlcjpdKToK
KyAgICAgICAgKFRFU1QpOgorCiAyMDE5LTA0LTE4ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVl
dWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjQ0NDM0
LgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UQ1BTZXJ2ZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVENQU2VydmVyLmNwcAkocmV2aXNpb24gMjQ0MzI5KQorKysg
VG9vbHMvVGVzdFdlYktpdEFQSS9UQ1BTZXJ2ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwz
NSArMjksMzkgQEAKICNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CiAjaW5jbHVkZSA8dGhyZWFkPgog
I2luY2x1ZGUgPHVuaXN0ZC5oPgotI2luY2x1ZGUgPHZlY3Rvcj4KKyNpbmNsdWRlIDx3dGYvT3B0
aW9uYWwuaD4KIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCi1UQ1BTZXJ2ZXI6OlRDUFNl
cnZlcihGdW5jdGlvbjx2b2lkKFNvY2tldCk+JiYgc29ja2V0SGFuZGxlcikKLSAgICA6IG1fc29j
a2V0SGFuZGxlcihXVEZNb3ZlKHNvY2tldEhhbmRsZXIpKQorVENQU2VydmVyOjpUQ1BTZXJ2ZXIo
RnVuY3Rpb248dm9pZChTb2NrZXQpPiYmIGNvbm5lY3Rpb25IYW5kbGVyLCBzaXplX3QgY29ubmVj
dGlvbnMpCisgICAgOiBtX2Nvbm5lY3Rpb25IYW5kbGVyKFdURk1vdmUoY29ubmVjdGlvbkhhbmRs
ZXIpKQogewotICAgIHNvY2tldEJpbmRMaXN0ZW4oKTsKLSAgICBtX3RocmVhZCA9IHN0ZDo6dGhy
ZWFkKCZUQ1BTZXJ2ZXI6OndhaXRGb3JBbmRSZXBseVRvUmVxdWVzdHMsIHRoaXMpOworICAgIGF1
dG8gbGlzdGVuaW5nU29ja2V0ID0gc29ja2V0QmluZExpc3Rlbihjb25uZWN0aW9ucyk7CisgICAg
QVNTRVJUKGxpc3RlbmluZ1NvY2tldCk7CisgICAgbV9saXN0ZW5pbmdUaHJlYWQgPSBzdGQ6OnRo
cmVhZChbdGhpcywgbGlzdGVuaW5nU29ja2V0ID0gKmxpc3RlbmluZ1NvY2tldCwgY29ubmVjdGlv
bnNdIHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb25uZWN0aW9uczsgKytpKSB7
CisgICAgICAgICAgICBTb2NrZXQgY29ubmVjdGlvblNvY2tldCA9IGFjY2VwdChsaXN0ZW5pbmdT
b2NrZXQsIG51bGxwdHIsIG51bGxwdHIpOworICAgICAgICAgICAgbV9jb25uZWN0aW9uVGhyZWFk
cy5hcHBlbmQoc3RkOjp0aHJlYWQoW3RoaXMsIGNvbm5lY3Rpb25Tb2NrZXRdIHsKKyAgICAgICAg
ICAgICAgICBtX2Nvbm5lY3Rpb25IYW5kbGVyKGNvbm5lY3Rpb25Tb2NrZXQpOworICAgICAgICAg
ICAgICAgIHNodXRkb3duKGNvbm5lY3Rpb25Tb2NrZXQsIFNIVVRfUkRXUik7CisgICAgICAgICAg
ICAgICAgY2xvc2UoY29ubmVjdGlvblNvY2tldCk7CisgICAgICAgICAgICB9KSk7CisgICAgICAg
IH0KKyAgICB9KTsKIH0KIAogVENQU2VydmVyOjp+VENQU2VydmVyKCkKIHsKLSAgICBtX3RocmVh
ZC5qb2luKCk7Ci0gICAgaWYgKG1fbGlzdGVuaW5nU29ja2V0ICE9IEludmFsaWRTb2NrZXQpIHsK
LSAgICAgICAgY2xvc2UobV9saXN0ZW5pbmdTb2NrZXQpOwotICAgICAgICBtX2xpc3RlbmluZ1Nv
Y2tldCA9IEludmFsaWRTb2NrZXQ7Ci0gICAgfQotICAgIGlmIChtX2Nvbm5lY3Rpb25Tb2NrZXQg
IT0gSW52YWxpZFNvY2tldCkgewotICAgICAgICBjbG9zZShtX2Nvbm5lY3Rpb25Tb2NrZXQpOwot
ICAgICAgICBtX2Nvbm5lY3Rpb25Tb2NrZXQgPSBJbnZhbGlkU29ja2V0OwotICAgIH0KKyAgICBt
X2xpc3RlbmluZ1RocmVhZC5qb2luKCk7CisgICAgZm9yIChhdXRvJiBjb25uZWN0aW9uVGhyZWFk
cyA6IG1fY29ubmVjdGlvblRocmVhZHMpCisgICAgICAgIGNvbm5lY3Rpb25UaHJlYWRzLmpvaW4o
KTsKIH0KIAotdm9pZCBUQ1BTZXJ2ZXI6OnNvY2tldEJpbmRMaXN0ZW4oKQorYXV0byBUQ1BTZXJ2
ZXI6OnNvY2tldEJpbmRMaXN0ZW4oc2l6ZV90IGNvbm5lY3Rpb25zKSAtPiBPcHRpb25hbDxTb2Nr
ZXQ+CiB7Ci0gICAgbV9saXN0ZW5pbmdTb2NrZXQgPSBzb2NrZXQoUEZfSU5FVCwgU09DS19TVFJF
QU0sIDApOwotICAgIGlmIChtX2xpc3RlbmluZ1NvY2tldCA9PSBJbnZhbGlkU29ja2V0KQotICAg
ICAgICByZXR1cm47CisgICAgU29ja2V0IGxpc3RlbmluZ1NvY2tldCA9IHNvY2tldChQRl9JTkVU
LCBTT0NLX1NUUkVBTSwgMCk7CisgICAgaWYgKGxpc3RlbmluZ1NvY2tldCA9PSAtMSkKKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICAKICAgICAvLyBQb3J0cyA0OTE1Mi02NTUzNSBh
cmUgdW5hbGxvY2F0ZWQgcG9ydHMuIFRyeSB1bnRpbCB3ZSBmaW5kIG9uZSB0aGF0J3MgZnJlZS4K
ICAgICBmb3IgKFBvcnQgcG9ydCA9IDQ5MTUyOyBwb3J0OyBwb3J0KyspIHsKQEAgLTY2LDM0ICs3
MCwyMiBAQCB2b2lkIFRDUFNlcnZlcjo6c29ja2V0QmluZExpc3RlbigpCiAgICAgICAgIG5hbWUu
c2luX2ZhbWlseSA9IEFGX0lORVQ7CiAgICAgICAgIG5hbWUuc2luX3BvcnQgPSBodG9ucyhwb3J0
KTsKICAgICAgICAgbmFtZS5zaW5fYWRkci5zX2FkZHIgPSBodG9ubChJTkFERFJfQU5ZKTsKLSAg
ICAgICAgaWYgKGJpbmQobV9saXN0ZW5pbmdTb2NrZXQsIHJlaW50ZXJwcmV0X2Nhc3Q8c29ja2Fk
ZHIqPigmbmFtZSksIHNpemVvZihuYW1lKSkgPCAwKSB7CisgICAgICAgIGlmIChiaW5kKGxpc3Rl
bmluZ1NvY2tldCwgcmVpbnRlcnByZXRfY2FzdDxzb2NrYWRkcio+KCZuYW1lKSwgc2l6ZW9mKG5h
bWUpKSA8IDApIHsKICAgICAgICAgICAgIC8vIFRoaXMgcG9ydCBpcyBidXN5LiBUcnkgdGhlIG5l
eHQgcG9ydC4KICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICAgIGNvbnN0
IHVuc2lnbmVkIG1heENvbm5lY3Rpb25zID0gMTsKLSAgICAgICAgaWYgKGxpc3RlbihtX2xpc3Rl
bmluZ1NvY2tldCwgbWF4Q29ubmVjdGlvbnMpID09IC0xKSB7CisgICAgICAgIGlmIChsaXN0ZW4o
bGlzdGVuaW5nU29ja2V0LCBjb25uZWN0aW9ucykgPT0gLTEpIHsKICAgICAgICAgICAgIC8vIExp
c3RlbmluZyBmYWlsZWQuCi0gICAgICAgICAgICBjbG9zZShtX2xpc3RlbmluZ1NvY2tldCk7Ci0g
ICAgICAgICAgICBtX2xpc3RlbmluZ1NvY2tldCA9IEludmFsaWRTb2NrZXQ7Ci0gICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICBjbG9zZShsaXN0ZW5pbmdTb2NrZXQpOworICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICAgICAgfQogICAgICAgICBtX3BvcnQgPSBwb3J0
OwotICAgICAgICByZXR1cm47IC8vIFN1Y2Nlc3NmdWxseSBzZXQgdXAgbGlzdGVuaW5nIHBvcnQu
CisgICAgICAgIHJldHVybiBsaXN0ZW5pbmdTb2NrZXQ7IC8vIFN1Y2Nlc3NmdWxseSBzZXQgdXAg
bGlzdGVuaW5nIHBvcnQuCiAgICAgfQogICAgIAogICAgIC8vIENvdWxkbid0IGZpbmQgYW4gYXZh
aWxhYmxlIHBvcnQuCi0gICAgY2xvc2UobV9saXN0ZW5pbmdTb2NrZXQpOwotICAgIG1fbGlzdGVu
aW5nU29ja2V0ID0gSW52YWxpZFNvY2tldDsKLX0KLQotdm9pZCBUQ1BTZXJ2ZXI6OndhaXRGb3JB
bmRSZXBseVRvUmVxdWVzdHMoKQotewotICAgIGlmIChtX2xpc3RlbmluZ1NvY2tldCA9PSBJbnZh
bGlkU29ja2V0KQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgbV9jb25uZWN0aW9uU29ja2V0
ID0gYWNjZXB0KG1fbGlzdGVuaW5nU29ja2V0LCBudWxscHRyLCBudWxscHRyKTsKLSAgICBtX3Nv
Y2tldEhhbmRsZXIobV9jb25uZWN0aW9uU29ja2V0KTsKLSAgICBzaHV0ZG93bihtX2Nvbm5lY3Rp
b25Tb2NrZXQsIFNIVVRfUkRXUik7CisgICAgY2xvc2UobGlzdGVuaW5nU29ja2V0KTsKKyAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwogfQogCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCklu
ZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1RDUFNlcnZlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVENQU2VydmVyLmgJKHJldmlzaW9uIDI0NDMyOSkKKysrIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVENQU2VydmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDMwICsyNywyOCBA
QAogCiAjaW5jbHVkZSA8dGhyZWFkPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgorI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBjbGFzcyBU
Q1BTZXJ2ZXIgewogcHVibGljOgogICAgIHVzaW5nIFNvY2tldCA9IGludDsKLSAgICBzdGF0aWMg
Y29uc3RleHByIFNvY2tldCBJbnZhbGlkU29ja2V0ID0gLTE7CiAgICAgdXNpbmcgUG9ydCA9IHVp
bnQxNl90OwogICAgIHN0YXRpYyBjb25zdGV4cHIgUG9ydCBJbnZhbGlkUG9ydCA9IDA7CiAgICAg
Ci0gICAgVENQU2VydmVyKEZ1bmN0aW9uPHZvaWQoU29ja2V0KT4mJik7CisgICAgVENQU2VydmVy
KEZ1bmN0aW9uPHZvaWQoU29ja2V0KT4mJiwgc2l6ZV90IGNvbm5lY3Rpb25zID0gMSk7CiAgICAg
flRDUFNlcnZlcigpOwogICAgIAogICAgIFBvcnQgcG9ydCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9y
dDsgfQogICAgIAogcHJpdmF0ZToKLSAgICB2b2lkIHNvY2tldEJpbmRMaXN0ZW4oKTsKLSAgICB2
b2lkIHdhaXRGb3JBbmRSZXBseVRvUmVxdWVzdHMoKTsKKyAgICBPcHRpb25hbDxTb2NrZXQ+IHNv
Y2tldEJpbmRMaXN0ZW4oc2l6ZV90IGNvbm5lY3Rpb25zKTsKIAogICAgIFBvcnQgbV9wb3J0IHsg
SW52YWxpZFBvcnQgfTsKLSAgICBTb2NrZXQgbV9saXN0ZW5pbmdTb2NrZXQgeyBJbnZhbGlkU29j
a2V0IH07Ci0gICAgU29ja2V0IG1fY29ubmVjdGlvblNvY2tldCB7IEludmFsaWRTb2NrZXQgfTsK
LSAgICBzdGQ6OnRocmVhZCBtX3RocmVhZDsKLSAgICBGdW5jdGlvbjx2b2lkKFNvY2tldCk+IG1f
c29ja2V0SGFuZGxlcjsKKyAgICBzdGQ6OnRocmVhZCBtX2xpc3RlbmluZ1RocmVhZDsKKyAgICBW
ZWN0b3I8c3RkOjp0aHJlYWQ+IG1fY29ubmVjdGlvblRocmVhZHM7CisgICAgRnVuY3Rpb248dm9p
ZChTb2NrZXQpPiBtX2Nvbm5lY3Rpb25IYW5kbGVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgVGVz
dFdlYktpdEFQSQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI0NDMyOSkK
KysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zMTIsNiArMzEyLDcgQEAKIAkJNUMyM0RGMEIyMjQ2
MDE1ODAwRjQ1NEI2IC8qIENoYWxsZW5nZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVDMjNERjBBMjI0NUM5RDcwMEY0NTRCNiAvKiBDaGFsbGVuZ2Uu
bW0gKi87IH07CiAJCTVDMjkzNjkzMUQ1QkY3MEQwMERFQUIxRSAvKiBDb29raWVBY2NlcHRQb2xp
Y3kubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzI5
MzY5MTFENUJGNjNFMDBERUFCMUUgLyogQ29va2llQWNjZXB0UG9saWN5Lm1tICovOyB9OwogCQk1
QzI5MzY5NjFENUMwMEVEMDBERUFCMUUgLyogQ29va2llTWVzc2FnZS5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMjkzNjk0MUQ1QkZE
MTkwMERFQUIxRSAvKiBDb29raWVNZXNzYWdlLmh0bWwgKi87IH07CisJCTVDNDI1OTQ2MjI2NkE2
OEEwMDM5QUE3QSAvKiBCYXNpY1Byb3Bvc2VkQ3JlZGVudGlhbFBsdWdJbi5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDNDI1OTQ0MjI2NjlFOUIwMDM5
QUE3QSAvKiBCYXNpY1Byb3Bvc2VkQ3JlZGVudGlhbFBsdWdJbi5tbSAqLzsgfTsKIAkJNUM0QTg0
OTUxRjdFRUZGQzAwQUNGQzU0IC8qIENvbmZpZ3VyYXRpb24ubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzRBODQ5NDFGN0VFRkQ0MDBBQ0ZDNTQgLyog
Q29uZmlndXJhdGlvbi5tbSAqLzsgfTsKIAkJNUM2OUJERDUxRjgyQTdFRjAwMEY0RjRCIC8qIEph
dmFTY3JpcHREdXJpbmdOYXZpZ2F0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNUM2OUJERDQxRjgyQTdFQjAwMEY0RjRCIC8qIEphdmFTY3JpcHRE
dXJpbmdOYXZpZ2F0aW9uLm1tICovOyB9OwogCQk1QzZFMjdBNzIyNEVFQkVBMDAxMjg3MzYgLyog
VVJMQ2Fub25pY2FsaXphdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDVDNkUyN0E2MjI0RUVCRUEwMDEyODczNiAvKiBVUkxDYW5vbmljYWxpemF0
aW9uLm1tICovOyB9OwpAQCAtMTcyMyw2ICsxNzI0LDcgQEAKIAkJNUMyM0RGMEEyMjQ1QzlENzAw
RjQ1NEI2IC8qIENoYWxsZW5nZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IENoYWxsZW5nZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUMyOTM2
OTExRDVCRjYzRTAwREVBQjFFIC8qIENvb2tpZUFjY2VwdFBvbGljeS5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENvb2tpZUFjY2VwdFBvbGljeS5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUMyOTM2OTQxRDVCRkQxOTAwREVBQjFFIC8qIENvb2tp
ZU1lc3NhZ2UuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IENvb2tpZU1lc3NhZ2Uu
aHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM0MjU5NDQyMjY2OUU5QjAwMzlB
QTdBIC8qIEJhc2ljUHJvcG9zZWRDcmVkZW50aWFsUGx1Z0luLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gQmFzaWNQcm9wb3NlZENyZWRlbnRpYWxQbHVnSW4ubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNEE4NDk0MUY3RUVGRDQwMEFDRkM1NCAv
KiBDb25maWd1cmF0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gQ29uZmlndXJhdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM1RTYz
M0QxRDBCNjc5NDAwODVBMDI1IC8qIFVuaXF1ZVJlZi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBVbmlxdWVSZWYuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1QzY5QkRENDFGODJBN0VCMDAwRjRGNEIgLyogSmF2YVNjcmlwdER1cmluZ05hdmlnYXRp
b24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBKYXZhU2NyaXB0
RHVyaW5nTmF2aWdhdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1MjMs
NiArMjUyNSw3IEBACiAJCQkJNzU0Q0VDODAxRjY3MjJEQzAwRDAwMzlBIC8qIEF1dG9GaWxsQXZh
aWxhYmxlLm1tICovLAogCQkJCTJERDM1NTM1MUJEMDgzNzgwMDVERjRBNyAvKiBBdXRvTGF5b3V0
SW50ZWdyYXRpb24ubW0gKi8sCiAJCQkJMDdDRDMyRjUyMDY1QjU0MjAwNjRBNEJFIC8qIEFWRm91
bmRhdGlvblByZWZlcmVuY2UubW0gKi8sCisJCQkJNUM0MjU5NDQyMjY2OUU5QjAwMzlBQTdBIC8q
IEJhc2ljUHJvcG9zZWRDcmVkZW50aWFsUGx1Z0luLm1tICovLAogCQkJCTM3NEI3QTVFMURGMzZF
RUUwMEFDQ0I2QyAvKiBCdW5kbGVFZGl0aW5nRGVsZWdhdGUubW0gKi8sCiAJCQkJMzc0QjdBNUYx
REYzNkVFRTAwQUNDQjZDIC8qIEJ1bmRsZUVkaXRpbmdEZWxlZ2F0ZVBsdWdJbi5tbSAqLywKIAkJ
CQkzNzRCN0E2MjFERjM3MzRDMDBBQ0NCNkMgLyogQnVuZGxlRWRpdGluZ0RlbGVnYXRlUHJvdG9j
b2wuaCAqLywKQEAgLTQ0NzEsNiArNDQ3NCw3IEBACiAJCQlmaWxlcyA9ICgKIAkJCQkzN0U3REQ2
NzFFQTA3MUYzMDA5QjM5NkQgLyogQWRkaXRpb25hbFJlYWRBY2Nlc3NBbGxvd2VkVVJMc1BsdWdp
bi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTc1NENFQzgxMUY2NzIyRjIwMEQwMDM5QSAvKiBBdXRv
RmlsbEF2YWlsYWJsZS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTVDNDI1OTQ2MjI2NkE2OEEwMDM5
QUE3QSAvKiBCYXNpY1Byb3Bvc2VkQ3JlZGVudGlhbFBsdWdJbi5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTM3NEI3QTYxMURGMzcxQ0YwMEFDQ0I2QyAvKiBCdW5kbGVFZGl0aW5nRGVsZWdhdGVQbHVn
SW4ubW0gaW4gU291cmNlcyAqLywKIAkJCQlBMTNFQkJCMDFCODc0MzZGMDAwOTcxMTAgLyogQnVu
ZGxlUGFyYW1ldGVyc1BsdWdJbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTM3QTcwOUFGMUUzRUE5
N0UwMENBNTk2OSAvKiBCdW5kbGVSYW5nZUhhbmRsZVBsdWdJbi5tbSBpbiBTb3VyY2VzICovLApJ
bmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9CYXNpY1Byb3Bvc2Vk
Q3JlZGVudGlhbFBsdWdJbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0Jhc2ljUHJvcG9zZWRDcmVkZW50aWFsUGx1Z0luLm1tCShub25leGlz
dGVudCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQmFzaWNQcm9w
b3NlZENyZWRlbnRpYWxQbHVnSW4ubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisjaW1wb3J0IDxXZWJLaXQvV0tCdW5k
bGVQYWdlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tCdW5kbGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50
Lmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJQcm9jZXNzUGx1Z0luLmg+CisjaW1wb3J0IDxXZWJL
aXQvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyUHJpdmF0ZS5oPgor
CitAaW50ZXJmYWNlIEJhc2ljUHJvcG9zZWRDcmVkZW50aWFsUGx1Z0luIDogTlNPYmplY3Q8V0tX
ZWJQcm9jZXNzUGx1Z0luPgorQGVuZAorCitAaW1wbGVtZW50YXRpb24gQmFzaWNQcm9wb3NlZENy
ZWRlbnRpYWxQbHVnSW4KKworLSAodm9pZCl3ZWJQcm9jZXNzUGx1Z0luOihXS1dlYlByb2Nlc3NQ
bHVnSW5Db250cm9sbGVyICopcGx1Z0luQ29udHJvbGxlciBkaWRDcmVhdGVCcm93c2VyQ29udGV4
dENvbnRyb2xsZXI6KFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciAq
KWJyb3dzZXJDb250ZXh0Q29udHJvbGxlcgoreworICAgIFdLQnVuZGxlUGFnZVJlc291cmNlTG9h
ZENsaWVudFYxIGNsaWVudDsKKyAgICBtZW1zZXQoJmNsaWVudCwgMCwgc2l6ZW9mKGNsaWVudCkp
OworICAgIGNsaWVudC5iYXNlLnZlcnNpb24gPSAxOworICAgIGNsaWVudC5zaG91bGRVc2VDcmVk
ZW50aWFsU3RvcmFnZSA9IFtdKGF1dG8uLi4pIHsKKyAgICAgICAgc3RhdGljIHNpemVfdCBxdWVy
aWVzIHsgMCB9OworICAgICAgICBBU1NFUlQocXVlcmllcyA8IDIpOworICAgICAgICByZXR1cm4g
IXF1ZXJpZXMrKzsKKyAgICB9OworICAgIFdLQnVuZGxlUGFnZVNldFJlc291cmNlTG9hZENsaWVu
dChbYnJvd3NlckNvbnRleHRDb250cm9sbGVyIF9idW5kbGVQYWdlUmVmXSwgJmNsaWVudC5iYXNl
KTsKK30KKworQGVuZApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9DaGFsbGVuZ2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9DaGFsbGVuZ2UubW0JKHJldmlzaW9uIDI0NDMyOSkKKysrIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ2hhbGxlbmdlLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0yOSw2ICsyOSwzNyBAQAogI2ltcG9ydCAiVENQU2VydmVyLmgiCiAjaW1wb3J0ICJUZXN0Lmgi
CiAjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCisjaW1wb3J0ICJXS1dlYlZpZXdDb25maWd1cmF0
aW9uRXh0cmFzLmgiCisjaW1wb3J0IDxXZWJLaXQvV0tQcm9jZXNzUG9vbFByaXZhdGUuaD4KKwor
c3RhdGljIGJvb2wgbmF2aWdhdGlvbkZpbmlzaGVkOworCitzdGF0aWMgdm9pZCByZXNwb25kV2l0
aENoYWxsZW5nZVRoZW5PSyhpbnQgc29ja2V0KQoreworICAgIGNoYXIgcmVhZEJ1ZmZlclsxMDAw
XTsKKyAgICBhdXRvIGJ5dGVzUmVhZCA9IDo6cmVhZChzb2NrZXQsIHJlYWRCdWZmZXIsIHNpemVv
ZihyZWFkQnVmZmVyKSk7CisgICAgRVhQRUNUX0dUKGJ5dGVzUmVhZCwgMCk7CisgICAgRVhQRUNU
X1RSVUUoc3RhdGljX2Nhc3Q8c2l6ZV90PihieXRlc1JlYWQpIDwgc2l6ZW9mKHJlYWRCdWZmZXIp
KTsKKyAgICAKKyAgICBjb25zdCBjaGFyKiBjaGFsbGVuZ2VIZWFkZXIgPQorICAgICJIVFRQLzEu
MSA0MDEgVW5hdXRob3JpemVkXHJcbiIKKyAgICAiRGF0ZTogU2F0LCAyMyBNYXIgMjAxOSAwNjoy
OTowMSBHTVRcclxuIgorICAgICJDb250ZW50LUxlbmd0aDogMFxyXG4iCisgICAgIldXVy1BdXRo
ZW50aWNhdGU6IEJhc2ljIHJlYWxtPVwidGVzdHJlYWxtXCJcclxuXHJcbiI7CisgICAgYXV0byBi
eXRlc1dyaXR0ZW4gPSA6OndyaXRlKHNvY2tldCwgY2hhbGxlbmdlSGVhZGVyLCBzdHJsZW4oY2hh
bGxlbmdlSGVhZGVyKSk7CisgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oYnl0ZXNX
cml0dGVuKSwgc3RybGVuKGNoYWxsZW5nZUhlYWRlcikpOworICAgIAorICAgIGJ5dGVzUmVhZCA9
IDo6cmVhZChzb2NrZXQsIHJlYWRCdWZmZXIsIHNpemVvZihyZWFkQnVmZmVyKSk7CisgICAgRVhQ
RUNUX0dUKGJ5dGVzUmVhZCwgMCk7CisgICAgRVhQRUNUX1RSVUUoc3RhdGljX2Nhc3Q8c2l6ZV90
PihieXRlc1JlYWQpIDwgc2l6ZW9mKHJlYWRCdWZmZXIpKTsKKyAgICAKKyAgICBjb25zdCBjaGFy
KiByZXNwb25zZUhlYWRlciA9CisgICAgIkhUVFAvMS4xIDIwMCBPS1xyXG4iCisgICAgIkNvbnRl
bnQtTGVuZ3RoOiAxM1xyXG5cclxuIgorICAgICJIZWxsbywgV29ybGQhIjsKKyAgICBieXRlc1dy
aXR0ZW4gPSA6OndyaXRlKHNvY2tldCwgcmVzcG9uc2VIZWFkZXIsIHN0cmxlbihyZXNwb25zZUhl
YWRlcikpOworICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KGJ5dGVzV3JpdHRlbiks
IHN0cmxlbihyZXNwb25zZUhlYWRlcikpOworfQogCiAjaWYgUExBVEZPUk0oTUFDKQogCkBAIC0x
NzAsNyArMjAxLDYgQEAgc3RhdGljIHN0ZDo6cGFpcjxSZXRhaW5QdHI8TlNVUkxDcmVkZW50aQog
ICAgIH07CiB9CiAKLXN0YXRpYyBib29sIG5hdmlnYXRpb25GaW5pc2hlZDsKIHN0YXRpYyBSZXRh
aW5QdHI8TlNTdHJpbmc+IGtleWNoYWluUGF0aDsKIAogQGludGVyZmFjZSBDaGFsbGVuZ2VEZWxl
Z2F0ZSA6IE5TT2JqZWN0IDxXS05hdmlnYXRpb25EZWxlZ2F0ZT4KQEAgLTIwOCwzMSArMjM4LDcg
QEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBURVNUKENoYWxsZW5nZSwgU2VjSWRlbnRp
dHkpCiB7Ci0gICAgVENQU2VydmVyIHNlcnZlcihbXSAoYXV0byBzb2NrZXQpIHsKLSAgICAgICAg
Y2hhciByZWFkQnVmZmVyWzEwMDBdOwotICAgICAgICBhdXRvIGJ5dGVzUmVhZCA9IDo6cmVhZChz
b2NrZXQsIHJlYWRCdWZmZXIsIHNpemVvZihyZWFkQnVmZmVyKSk7Ci0gICAgICAgIEVYUEVDVF9H
VChieXRlc1JlYWQsIDApOwotICAgICAgICBFWFBFQ1RfVFJVRShzdGF0aWNfY2FzdDxzaXplX3Q+
KGJ5dGVzUmVhZCkgPCBzaXplb2YocmVhZEJ1ZmZlcikpOwotICAgICAgICAKLSAgICAgICAgY29u
c3QgY2hhciogY2hhbGxlbmdlSGVhZGVyID0KLSAgICAgICAgIkhUVFAvMS4xIDQwMSBVbmF1dGhv
cml6ZWRcclxuIgotICAgICAgICAiRGF0ZTogU2F0LCAyMyBNYXIgMjAxOSAwNjoyOTowMSBHTVRc
clxuIgotICAgICAgICAiQ29udGVudC1MZW5ndGg6IDBcclxuIgotICAgICAgICAiV1dXLUF1dGhl
bnRpY2F0ZTogQmFzaWMgcmVhbG09XCJ0ZXN0cmVhbG1cIlxyXG5cclxuIjsKLSAgICAgICAgYXV0
byBieXRlc1dyaXR0ZW4gPSA6OndyaXRlKHNvY2tldCwgY2hhbGxlbmdlSGVhZGVyLCBzdHJsZW4o
Y2hhbGxlbmdlSGVhZGVyKSk7Ci0gICAgICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+
KGJ5dGVzV3JpdHRlbiksIHN0cmxlbihjaGFsbGVuZ2VIZWFkZXIpKTsKLSAgICAgICAgCi0gICAg
ICAgIGJ5dGVzUmVhZCA9IDo6cmVhZChzb2NrZXQsIHJlYWRCdWZmZXIsIHNpemVvZihyZWFkQnVm
ZmVyKSk7Ci0gICAgICAgIEVYUEVDVF9HVChieXRlc1JlYWQsIDApOwotICAgICAgICBFWFBFQ1Rf
VFJVRShzdGF0aWNfY2FzdDxzaXplX3Q+KGJ5dGVzUmVhZCkgPCBzaXplb2YocmVhZEJ1ZmZlcikp
OwotICAgICAgICAKLSAgICAgICAgY29uc3QgY2hhciogcmVzcG9uc2VIZWFkZXIgPQotICAgICAg
ICAiSFRUUC8xLjEgMjAwIE9LXHJcbiIKLSAgICAgICAgIkNvbnRlbnQtTGVuZ3RoOiAxM1xyXG5c
clxuIgotICAgICAgICAiSGVsbG8sIFdvcmxkISI7Ci0gICAgICAgIGJ5dGVzV3JpdHRlbiA9IDo6
d3JpdGUoc29ja2V0LCByZXNwb25zZUhlYWRlciwgc3RybGVuKHJlc3BvbnNlSGVhZGVyKSk7Ci0g
ICAgICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KGJ5dGVzV3JpdHRlbiksIHN0cmxl
bihyZXNwb25zZUhlYWRlcikpOwotICAgIH0pOworICAgIFRDUFNlcnZlciBzZXJ2ZXIocmVzcG9u
ZFdpdGhDaGFsbGVuZ2VUaGVuT0spOwogCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tX
ZWJWaWV3IG5ld10pOwogICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtDaGFsbGVuZ2VEZWxl
Z2F0ZSBuZXddKTsKQEAgLTI1MCwzICsyNTYsNTUgQEAgVEVTVChDaGFsbGVuZ2UsIFNlY0lkZW50
aXR5KQogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQogCiAjZW5kaWYKKworc3RhdGljIGJv
b2wgcmVjZWl2ZWRTZWNvbmRDaGFsbGVuZ2U7CitzdGF0aWMgUmV0YWluUHRyPE5TVVJMQ3JlZGVu
dGlhbD4gcGVyc2lzdGVudENyZWRlbnRpYWw7CisKK0BpbnRlcmZhY2UgUHJvcG9zZWRDcmVkZW50
aWFsRGVsZWdhdGUgOiBOU09iamVjdCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGU+CitAZW5kCisKK0Bp
bXBsZW1lbnRhdGlvbiBQcm9wb3NlZENyZWRlbnRpYWxEZWxlZ2F0ZQorCistICh2b2lkKXdlYlZp
ZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkRmluaXNoTmF2aWdhdGlvbjoobnVsbF91bnNwZWNp
ZmllZCBXS05hdmlnYXRpb24gKiluYXZpZ2F0aW9uCit7CisgICAgbmF2aWdhdGlvbkZpbmlzaGVk
ID0gdHJ1ZTsKK30KKworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSAqKWNoYWxsZW5nZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNVUkxTZXNzaW9uQXV0
aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKikpY29tcGxldGlvbkhhbmRs
ZXIKK3sKKyAgICBzdGF0aWMgYm9vbCBmaXJzdENoYWxsZW5nZSA9IHRydWU7CisgICAgaWYgKGZp
cnN0Q2hhbGxlbmdlKSB7CisgICAgICAgIGZpcnN0Q2hhbGxlbmdlID0gZmFsc2U7CisgICAgICAg
IHBlcnNpc3RlbnRDcmVkZW50aWFsID0gYWRvcHROUyhbW05TVVJMQ3JlZGVudGlhbCBhbGxvY10g
aW5pdFdpdGhVc2VyOkAidGVzdHVzZXIiIHBhc3N3b3JkOkAidGVzdHBhc3N3b3JkIiBwZXJzaXN0
ZW5jZTpOU1VSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZVBlcm1hbmVudF0pOworICAgICAgICByZXR1
cm4gY29tcGxldGlvbkhhbmRsZXIoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVVzZUNyZWRlbnRp
YWwsIHBlcnNpc3RlbnRDcmVkZW50aWFsLmdldCgpKTsKKyAgICAgICAgCisgICAgfQorICAgIHJl
Y2VpdmVkU2Vjb25kQ2hhbGxlbmdlID0gdHJ1ZTsKKyAgICByZXR1cm4gY29tcGxldGlvbkhhbmRs
ZXIoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVVzZUNyZWRlbnRpYWwsIG5pbCk7Cit9CisKK0Bl
bmQKKworVEVTVChDaGFsbGVuZ2UsIEJhc2ljUHJvcG9zZWRDcmVkZW50aWFsKQoreworICAgIHVz
aW5nIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJOworICAgIFRDUFNlcnZlciBzZXJ2ZXIocmVzcG9u
ZFdpdGhDaGFsbGVuZ2VUaGVuT0ssIDIpOworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IHJldGFp
blB0cihbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQ
bHVnSW5DbGFzc05hbWU6QCJCYXNpY1Byb3Bvc2VkQ3JlZGVudGlhbFBsdWdJbiJdKTsKKyAgICBh
dXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNH
UmVjdFplcm8gY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgYXV0byBk
ZWxlZ2F0ZSA9IGFkb3B0TlMoW1Byb3Bvc2VkQ3JlZGVudGlhbERlbGVnYXRlIG5ld10pOworICAg
IFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisgICAgUmV0
YWluUHRyPE5TVVJMUmVxdWVzdD4gcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhV
Ukw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJodHRw
Oi8vMTI3LjAuMC4xOiVkLyIsIHNlcnZlci5wb3J0KCldXV07CisgICAgW3dlYlZpZXcgbG9hZFJl
cXVlc3Q6cmVxdWVzdC5nZXQoKV07CisgICAgVXRpbDo6cnVuKCZuYXZpZ2F0aW9uRmluaXNoZWQp
OworICAgIG5hdmlnYXRpb25GaW5pc2hlZCA9IGZhbHNlOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1
ZXN0OnJlcXVlc3QuZ2V0KCldOworICAgIFV0aWw6OnJ1bigmbmF2aWdhdGlvbkZpbmlzaGVkKTsK
KyAgICBFWFBFQ1RfVFJVRShyZWNlaXZlZFNlY29uZENoYWxsZW5nZSk7CisgICAgCisgICAgTlNV
UkxQcm90ZWN0aW9uU3BhY2UgKnByb3RlY3Rpb25TcGFjZSA9IFtbW05TVVJMUHJvdGVjdGlvblNw
YWNlIGFsbG9jXSBpbml0V2l0aEhvc3Q6QCIxMjcuMC4wLjEiIHBvcnQ6c2VydmVyLnBvcnQoKSBw
cm90b2NvbDpOU1VSTFByb3RlY3Rpb25TcGFjZUhUVFAgcmVhbG06QCJ0ZXN0cmVhbG0iIGF1dGhl
bnRpY2F0aW9uTWV0aG9kOk5TVVJMQXV0aGVudGljYXRpb25NZXRob2RIVFRQQmFzaWNdIGF1dG9y
ZWxlYXNlXTsKKyAgICBfX2Jsb2NrIGJvb2wgcmVtb3ZlZENyZWRlbnRpYWwgPSBmYWxzZTsKKyAg
ICBbW3dlYlZpZXcgY29uZmlndXJhdGlvbl0ucHJvY2Vzc1Bvb2wgX3JlbW92ZUNyZWRlbnRpYWw6
cGVyc2lzdGVudENyZWRlbnRpYWwuZ2V0KCkgZm9yUHJvdGVjdGlvblNwYWNlOnByb3RlY3Rpb25T
cGFjZSBjb21wbGV0aW9uSGFuZGxlcjpeeworICAgICAgICByZW1vdmVkQ3JlZGVudGlhbCA9IHRy
dWU7CisgICAgfV07CisgICAgVXRpbDo6cnVuKCZyZW1vdmVkQ3JlZGVudGlhbCk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>373556</attachid>
            <date>2019-07-05 17:46:43 -0700</date>
            <delta_ts>2019-07-06 19:33:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-197093-20190705174642.patch</filename>
            <type>text/plain</type>
            <size>35833</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ3MTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTMxMjIxZmU3ZjZhZDlk
ZDdiYjFiMmZjMDA3OGM2ODM4YjU2ZjZhZS4uODc4MzI4NDFhYWRlNjBhNmNhNDZiYWJkNTBmYTVi
NWE3NTZiNzdhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE5LTA3LTA1ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04gKHIyMzA2
ODEpOiBEbyBub3QgdXNlIHN0b3JlZCBjcmVkZW50aWFscyBpZiBXS0J1bmRsZVBhZ2VSZXNvdXJj
ZUxvYWRDbGllbnQuc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UgcmV0dXJucyBmYWxzZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk3MDkzCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS81MDExMTQ2OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBGZXRjaCBhbmQgcmVtb3ZlIG9ubHkgc2Vzc2lvbiBjcmVk
ZW50aWFscyBmcm9tIE5TVVJMQ3JlZGVudGlhbFN0b3JhZ2UuCisKKyAgICAgICAgTW9kaWZpZWQg
ZXhpc3RpbmcgQVBJIHRlc3RzOiBXS1dlYnNpdGVEYXRhU3RvcmUuRmV0Y2hQZXJzaXN0ZW50Q3Jl
ZGVudGlhbHMKKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbFN0b3JhZ2U6Om9yaWdpbnNXaXRoQ3Jl
ZGVudGlhbHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbFN0b3JhZ2U6Om9y
aWdpbnNXaXRoU2Vzc2lvbkNyZWRlbnRpYWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkNyZWRlbnRp
YWxTdG9yYWdlOjpyZW1vdmVTZXNzaW9uQ3JlZGVudGlhbHNXaXRoT3JpZ2lucyk6CisgICAgICAg
IChXZWJDb3JlOjpDcmVkZW50aWFsU3RvcmFnZTo6Y2xlYXJTZXNzaW9uQ3JlZGVudGlhbHMpOgor
ICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbFN0b3JhZ2U6OmNsZWFyUGVybWFuZW50Q3JlZGVu
dGlhbHNGb3JQcm90ZWN0aW9uU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQ3Jl
ZGVudGlhbFN0b3JhZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9DcmVkZW50
aWFsU3RvcmFnZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNyZWRlbnRpYWxTdG9yYWdlOjpv
cmlnaW5zV2l0aFNlc3Npb25DcmVkZW50aWFscyk6CisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50
aWFsU3RvcmFnZTo6cmVtb3ZlU2Vzc2lvbkNyZWRlbnRpYWxzV2l0aE9yaWdpbnMpOgorICAgICAg
ICAoV2ViQ29yZTo6Q3JlZGVudGlhbFN0b3JhZ2U6OmNsZWFyU2Vzc2lvbkNyZWRlbnRpYWxzKToK
KyAgICAgICAgKFdlYkNvcmU6OkNyZWRlbnRpYWxTdG9yYWdlOjpjbGVhclBlcm1hbmVudENyZWRl
bnRpYWxzRm9yUHJvdGVjdGlvblNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNyZWRlbnRpYWxT
dG9yYWdlOjpvcmlnaW5zV2l0aFBlcnNpc3RlbnRDcmVkZW50aWFscyk6IERlbGV0ZWQuCisKIDIw
MTktMDctMDUgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEFk
ZCBmZXRjaCBxdWlyayBmb3Igd3d3LmJuei5jby5uegpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBhYzJlY2VkZmQxNTVj
MzJjMTU4OTRmMzc5YjRlNGUxNWIyZGFhMDBiLi5kNWNkMzNlNDk3OWFlOWFkMDdjYzc2NzY4MDRl
M2JhNWQ0NzgwM2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE5LTA3LTA1ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04gKHIyMzA2
ODEpOiBEbyBub3QgdXNlIHN0b3JlZCBjcmVkZW50aWFscyBpZiBXS0J1bmRsZVBhZ2VSZXNvdXJj
ZUxvYWRDbGllbnQuc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UgcmV0dXJucyBmYWxzZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk3MDkzCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS81MDExMTQ2OD4KKworICAgICAgICBTdG9wIHNlbmRpbmcgYW4g
ZXh0cmEgbWVzc2FnZSB0byBuZXR3b3JrIHByb2Nlc3MgZm9yIGZldGNoaW5nIG9yIHJlbW92aW5n
IHBlcnNpc3RlbnQgY3JlZGVudGlhbHMuCisKKyAgICAgICAgQWxzbyBpbnRyb2R1Y2UgYSBuZXcg
U1BJIGZvciBjbGVhcmluZyBwZXJzaXN0ZW50IGNyZWRlbnRpYWxzIGNyZWF0ZWQgaW4gdGVzdC4K
KworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNsZWFyUGVybWFuZW50Q3JlZGVudGlhbHNGb3JQcm90
ZWN0aW9uU3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZmV0Y2hXZWJz
aXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRl
RGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0
YUZvck9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vi
c2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzczo6b3JpZ2luc1dpdGhQZXJzaXN0ZW50Q3JlZGVudGlhbHMpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVtb3ZlQ3JlZGVudGlhbHNXaXRoT3JpZ2lu
cyk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6b3JpZ2luc1dpdGhQZXJzaXN0ZW50Q3JlZGVu
dGlhbHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVtb3Zl
Q3JlZGVudGlhbHNXaXRoT3JpZ2lucyk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tOgorICAgICAgICAoLVtXS1Byb2Nlc3NQb29sIF9jbGVh
clBlcm1hbmVudENyZWRlbnRpYWxzRm9yUHJvdGVjdGlvblNwYWNlOmNvbXBsZXRpb25IYW5kbGVy
Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbDo6Y2xlYXJQZXJtYW5lbnRDcmVkZW50aWFsc0ZvclByb3RlY3Rp
b25TcGFjZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpmZXRjaERhdGFBbmRBcHBseSk6CisgICAgICAgIChX
ZWJLaXQ6OmNvbXB1dGVXZWJQcm9jZXNzQWNjZXNzVHlwZUZvckRhdGFSZW1vdmFsKToKKyAgICAg
ICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cmVtb3ZlRGF0YSk6CisKIDIwMTktMDctMDUg
IFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29udGVudENoYW5n
ZU9ic2VydmVyXSBSRUdSRVNTSU9OIChyMjQ3MDE1KTogZmFjZWJvb2sgcGhvdG8vdmlkZW8gdXBs
b2FkIGJ1dHRvbiBpcyB1bnJlc3BvbnNpdmUgdG8gdXNlciBpbnRlcmFjdGlvbi4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5jcHAK
aW5kZXggOThlOTQyNmZjMjdhZGJiMmJiNjBiZWQ0NmRkNTY2N2ZhZjdjMzk2Mi4uMDEzNmI5ZWNk
ZjlmMmYwYTVhMmFlYjc0Y2Y0MDgyYjgxYjFhZmQ0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5jcHAKQEAgLTEwMiw5ICsx
MDIsOSBAQCB2b2lkIENyZWRlbnRpYWxTdG9yYWdlOjpyZW1vdmVDcmVkZW50aWFsc1dpdGhPcmln
aW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcgogICAgICAgICByZW1vdmUoa2V5LmZpcnN0
LCBrZXkuc2Vjb25kKTsKIH0KIAotVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4gQ3JlZGVudGlh
bFN0b3JhZ2U6Om9yaWdpbnNXaXRoQ3JlZGVudGlhbHMoKSBjb25zdAorSGFzaFNldDxTZWN1cml0
eU9yaWdpbkRhdGE+IENyZWRlbnRpYWxTdG9yYWdlOjpvcmlnaW5zV2l0aENyZWRlbnRpYWxzKCkg
Y29uc3QKIHsKLSAgICBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiBvcmlnaW5zOworICAgIEhh
c2hTZXQ8U2VjdXJpdHlPcmlnaW5EYXRhPiBvcmlnaW5zOwogICAgIGZvciAoYXV0byYga2V5VmFs
dWVQYWlyIDogbV9wcm90ZWN0aW9uU3BhY2VUb0NyZWRlbnRpYWxNYXApIHsKICAgICAgICAgYXV0
byYgcHJvdGVjdGlvblNwYWNlID0ga2V5VmFsdWVQYWlyLmtleS5zZWNvbmQ7CiAgICAgICAgIGlm
IChwcm90ZWN0aW9uU3BhY2UuaXNQcm94eSgpKQpAQCAtMTI5LDcgKzEyOSw3IEBAIFZlY3RvcjxT
ZWN1cml0eU9yaWdpbkRhdGE+IENyZWRlbnRpYWxTdG9yYWdlOjpvcmlnaW5zV2l0aENyZWRlbnRp
YWxzKCkgY29uc3QKICAgICAgICAgfQogCiAgICAgICAgIFNlY3VyaXR5T3JpZ2luRGF0YSBvcmln
aW4geyBwcm90b2NvbCwgcHJvdGVjdGlvblNwYWNlLmhvc3QoKSwgc3RhdGljX2Nhc3Q8dWludDE2
X3Q+KHByb3RlY3Rpb25TcGFjZS5wb3J0KCkpfTsKLSAgICAgICAgb3JpZ2lucy5hcHBlbmQoV1RG
TW92ZShvcmlnaW4pKTsKKyAgICAgICAgb3JpZ2lucy5hZGQoV1RGTW92ZShvcmlnaW4pKTsKICAg
ICB9CiAgICAgcmV0dXJuIG9yaWdpbnM7CiB9CkBAIC0xODcsNCArMTg3LDIzIEBAIHZvaWQgQ3Jl
ZGVudGlhbFN0b3JhZ2U6OmNsZWFyQ3JlZGVudGlhbHMoKQogICAgIG1fcGF0aFRvRGVmYXVsdFBy
b3RlY3Rpb25TcGFjZU1hcC5jbGVhcigpOwogfQogCisjaWYgIVBMQVRGT1JNKENPQ09BKQorSGFz
aFNldDxTZWN1cml0eU9yaWdpbkRhdGE+IENyZWRlbnRpYWxTdG9yYWdlOjpvcmlnaW5zV2l0aFNl
c3Npb25DcmVkZW50aWFscygpCit7CisgICAgcmV0dXJuIHsgfTsKK30KKwordm9pZCBDcmVkZW50
aWFsU3RvcmFnZTo6cmVtb3ZlU2Vzc2lvbkNyZWRlbnRpYWxzV2l0aE9yaWdpbnMoY29uc3QgVmVj
dG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4mKQoreworfQorCit2b2lkIENyZWRlbnRpYWxTdG9yYWdl
OjpjbGVhclNlc3Npb25DcmVkZW50aWFscygpCit7Cit9CisKK3ZvaWQgQ3JlZGVudGlhbFN0b3Jh
Z2U6OmNsZWFyUGVybWFuZW50Q3JlZGVudGlhbHNGb3JQcm90ZWN0aW9uU3BhY2UoY29uc3QgUHJv
dGVjdGlvblNwYWNlJikKK3sKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9y
YWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdl
LmgKaW5kZXggZjhjNzVhZTkyOWFiMmQ1NDI1YTI0YTYyNjdjZDQyNzM4ZDc1YzBkNy4uY2Q4NTNj
NjRmMDI0YzVhMGY3OGVjNWQyN2M3MDMwNWQ0ZDk1YWI3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuaApAQCAtNDUsOSArNDUs
MTIgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlKGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFByb3RlY3Rpb25TcGFjZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVt
b3ZlQ3JlZGVudGlhbHNXaXRoT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYpOwogCi0g
ICAgLy8gT1MgcGVyc2lzdGVudCBzdG9yYWdlLgorICAgIC8vIE9TIGNyZWRlbnRpYWwgc3RvcmFn
ZS4KICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgQ3JlZGVudGlhbCBnZXRGcm9tUGVyc2lzdGVu
dFN0b3JhZ2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdpbnNXaXRoUGVyc2lzdGVudENyZWRl
bnRpYWxzKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEhhc2hTZXQ8U2VjdXJpdHlPcmln
aW5EYXRhPiBvcmlnaW5zV2l0aFNlc3Npb25DcmVkZW50aWFscygpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyB2b2lkIHJlbW92ZVNlc3Npb25DcmVkZW50aWFsc1dpdGhPcmlnaW5zKGNvbnN0
IFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+JiBvcmlnaW5zKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgdm9pZCBjbGVhclNlc3Npb25DcmVkZW50aWFscygpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyB2b2lkIGNsZWFyUGVybWFuZW50Q3JlZGVudGlhbHNGb3JQcm90ZWN0aW9uU3Bh
Y2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNs
ZWFyQ3JlZGVudGlhbHMoKTsKIApAQCAtNTYsNyArNTksNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCBzZXQoY29uc3QgU3RyaW5nJiwgY29uc3QgQ3JlZGVudGlhbCYsIGNvbnN0
IFVSTCYpOyAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIFVSTCBjb3JyZXNwb25kcyB0byBhIGtub3du
IHByb3RlY3Rpb24gc3BhY2UsIHNvIGNyZWRlbnRpYWxzIGNvdWxkIGJlIHVwZGF0ZWQuCiAgICAg
V0VCQ09SRV9FWFBPUlQgQ3JlZGVudGlhbCBnZXQoY29uc3QgU3RyaW5nJiwgY29uc3QgVVJMJik7
CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiBvcmlnaW5z
V2l0aENyZWRlbnRpYWxzKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgSGFzaFNldDxTZWN1
cml0eU9yaWdpbkRhdGE+IG9yaWdpbnNXaXRoQ3JlZGVudGlhbHMoKSBjb25zdDsKIAogcHJpdmF0
ZToKICAgICBIYXNoTWFwPHN0ZDo6cGFpcjxTdHJpbmcgLyogcGFydGl0aW9uTmFtZSAqLywgUHJv
dGVjdGlvblNwYWNlPiwgQ3JlZGVudGlhbD4gbV9wcm90ZWN0aW9uU3BhY2VUb0NyZWRlbnRpYWxN
YXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9DcmVk
ZW50aWFsU3RvcmFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFj
L0NyZWRlbnRpYWxTdG9yYWdlTWFjLm1tCmluZGV4IDY1YjUxNTExZjlhOWIyYjhiMTJmNjNlZGFl
MzZmZWYzNWU3NmQzOWMuLjZlYTBiYWIyYjA3YjhiNzYwOTFjYWYzN2IzOTA4NzE4OTNkNjI5Yzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0NyZWRlbnRp
YWxTdG9yYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFj
L0NyZWRlbnRpYWxTdG9yYWdlTWFjLm1tCkBAIC0zOCwxMyArMzgsNjkgQEAgQ3JlZGVudGlhbCBD
cmVkZW50aWFsU3RvcmFnZTo6Z2V0RnJvbVBlcnNpc3RlbnRTdG9yYWdlKGNvbnN0IFByb3RlY3Rp
b25TcGFjZSYgcHIKICAgICByZXR1cm4gY3JlZGVudGlhbCA/IENyZWRlbnRpYWwoY3JlZGVudGlh
bCkgOiBDcmVkZW50aWFsKCk7CiB9CiAKLVZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGE+IENyZWRlbnRpYWxTdG9yYWdlOjpvcmlnaW5zV2l0aFBlcnNpc3RlbnRDcmVkZW50aWFscygp
CitIYXNoU2V0PFNlY3VyaXR5T3JpZ2luRGF0YT4gQ3JlZGVudGlhbFN0b3JhZ2U6Om9yaWdpbnNX
aXRoU2Vzc2lvbkNyZWRlbnRpYWxzKCkKIHsKLSAgICBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhPiBvcmlnaW5zOworICAgIEhhc2hTZXQ8U2VjdXJpdHlPcmlnaW5EYXRhPiBvcmln
aW5zOwogICAgIGF1dG8gYWxsQ3JlZGVudGlhbHMgPSBbW05TVVJMQ3JlZGVudGlhbFN0b3JhZ2Ug
c2hhcmVkQ3JlZGVudGlhbFN0b3JhZ2VdIGFsbENyZWRlbnRpYWxzXTsKLSAgICBmb3IgKE5TVVJM
UHJvdGVjdGlvblNwYWNlKiBrZXkgaW4gYWxsQ3JlZGVudGlhbHMua2V5RW51bWVyYXRvcikKLSAg
ICAgICAgb3JpZ2lucy5hcHBlbmQoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHsgU3RyaW5n
KGtleS5wcm90b2NvbCksIFN0cmluZyhrZXkuaG9zdCksIGtleS5wb3J0IH0pOworICAgIGZvciAo
TlNVUkxQcm90ZWN0aW9uU3BhY2UqIGtleSBpbiBhbGxDcmVkZW50aWFscy5rZXlFbnVtZXJhdG9y
KSB7CisgICAgICAgIGZvciAoTlNVUkxQcm90ZWN0aW9uU3BhY2UqIHNwYWNlIGluIGFsbENyZWRl
bnRpYWxzKSB7CisgICAgICAgICAgICBhdXRvIGNyZWRlbnRpYWxzID0gYWxsQ3JlZGVudGlhbHNb
c3BhY2VdOworICAgICAgICAgICAgZm9yIChOU1N0cmluZyogdXNlciBpbiBjcmVkZW50aWFscykg
eworICAgICAgICAgICAgICAgIGlmIChjcmVkZW50aWFsc1t1c2VyXS5wZXJzaXN0ZW5jZSA9PSBO
U1VSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZUZvclNlc3Npb24pIHsKKyAgICAgICAgICAgICAgICAg
ICAgb3JpZ2lucy5hZGQoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHsgU3RyaW5nKGtleS5w
cm90b2NvbCksIFN0cmluZyhrZXkuaG9zdCksIGtleS5wb3J0IH0pOworICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9CiAgICAgcmV0dXJuIG9yaWdpbnM7CiB9CiAKK3ZvaWQgQ3JlZGVudGlhbFN0b3JhZ2U6
OnJlbW92ZVNlc3Npb25DcmVkZW50aWFsc1dpdGhPcmlnaW5zKGNvbnN0IFZlY3RvcjxTZWN1cml0
eU9yaWdpbkRhdGE+JiBvcmlnaW5zKQoreworICAgIGF1dG8gc2hhcmVkU3RvcmFnZSA9IFtOU1VS
TENyZWRlbnRpYWxTdG9yYWdlIHNoYXJlZENyZWRlbnRpYWxTdG9yYWdlXTsKKyAgICBhdXRvIGFs
bENyZWRlbnRpYWxzID0gW3NoYXJlZFN0b3JhZ2UgYWxsQ3JlZGVudGlhbHNdOworICAgIGZvciAo
YXV0byYgb3JpZ2luIDogb3JpZ2lucykgeworICAgICAgICBmb3IgKE5TVVJMUHJvdGVjdGlvblNw
YWNlKiBzcGFjZSBpbiBhbGxDcmVkZW50aWFscykgeworICAgICAgICAgICAgaWYgKG9yaWdpbi5w
cm90b2NvbCA9PSBTdHJpbmcoc3BhY2UucHJvdG9jb2wpCisgICAgICAgICAgICAgICAgJiYgb3Jp
Z2luLmhvc3QgPT0gU3RyaW5nKHNwYWNlLmhvc3QpCisgICAgICAgICAgICAgICAgJiYgb3JpZ2lu
LnBvcnQKKyAgICAgICAgICAgICAgICAmJiAqb3JpZ2luLnBvcnQgPT0gc3BhY2UucG9ydCkgewor
ICAgICAgICAgICAgICAgICAgICBhdXRvIGNyZWRlbnRpYWxzID0gYWxsQ3JlZGVudGlhbHNbc3Bh
Y2VdOworICAgICAgICAgICAgICAgICAgICBmb3IgKE5TU3RyaW5nKiB1c2VyIGluIGNyZWRlbnRp
YWxzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIGNyZWRlbnRpYWwgPSBjcmVkZW50
aWFsc1t1c2VyXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjcmVkZW50aWFsLnBlcnNp
c3RlbmNlID09IE5TVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlRm9yU2Vzc2lvbikKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBbc2hhcmVkU3RvcmFnZSByZW1vdmVDcmVkZW50aWFsOmNyZWRl
bnRpYWwgZm9yUHJvdGVjdGlvblNwYWNlOnNwYWNlXTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgQ3JlZGVudGlhbFN0b3JhZ2U6
OmNsZWFyU2Vzc2lvbkNyZWRlbnRpYWxzKCkKK3sKKyAgICBhdXRvIHNoYXJlZFN0b3JhZ2UgPSBb
TlNVUkxDcmVkZW50aWFsU3RvcmFnZSBzaGFyZWRDcmVkZW50aWFsU3RvcmFnZV07CisgICAgYXV0
byBhbGxDcmVkZW50aWFscyA9IFtzaGFyZWRTdG9yYWdlIGFsbENyZWRlbnRpYWxzXTsKKyAgICBm
b3IgKE5TVVJMUHJvdGVjdGlvblNwYWNlKiBzcGFjZSBpbiBhbGxDcmVkZW50aWFscy5rZXlFbnVt
ZXJhdG9yKSB7CisgICAgICAgIGF1dG8gY3JlZGVudGlhbHMgPSBhbGxDcmVkZW50aWFsc1tzcGFj
ZV07CisgICAgICAgIGZvciAoTlNTdHJpbmcqIHVzZXIgaW4gY3JlZGVudGlhbHMpIHsKKyAgICAg
ICAgICAgIGF1dG8gY3JlZGVudGlhbCA9IGNyZWRlbnRpYWxzW3VzZXJdOworICAgICAgICAgICAg
aWYgKGNyZWRlbnRpYWwucGVyc2lzdGVuY2UgPT0gTlNVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2VG
b3JTZXNzaW9uKQorICAgICAgICAgICAgICAgIFtzaGFyZWRTdG9yYWdlIHJlbW92ZUNyZWRlbnRp
YWw6Y3JlZGVudGlhbCBmb3JQcm90ZWN0aW9uU3BhY2U6c3BhY2VdOworICAgICAgICB9CisgICAg
fQorfQorCit2b2lkIENyZWRlbnRpYWxTdG9yYWdlOjpjbGVhclBlcm1hbmVudENyZWRlbnRpYWxz
Rm9yUHJvdGVjdGlvblNwYWNlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNl
KQoreworICAgIGF1dG8gc2hhcmVkU3RvcmFnZSA9IFtOU1VSTENyZWRlbnRpYWxTdG9yYWdlIHNo
YXJlZENyZWRlbnRpYWxTdG9yYWdlXTsKKyAgICBhdXRvIGFsbENyZWRlbnRpYWxzID0gW3NoYXJl
ZFN0b3JhZ2UgYWxsQ3JlZGVudGlhbHNdOworICAgIGF1dG8gY3JlZGVudGlhbHMgPSBhbGxDcmVk
ZW50aWFsc1twcm90ZWN0aW9uU3BhY2UubnNTcGFjZSgpXTsKKyAgICBmb3IgKE5TU3RyaW5nKiB1
c2VyIGluIGNyZWRlbnRpYWxzKSB7CisgICAgICAgIGF1dG8gY3JlZGVudGlhbCA9IGNyZWRlbnRp
YWxzW3VzZXJdOworICAgICAgICBpZiAoY3JlZGVudGlhbC5wZXJzaXN0ZW5jZSA9PSBOU1VSTENy
ZWRlbnRpYWxQZXJzaXN0ZW5jZVBlcm1hbmVudCkKKyAgICAgICAgICAgIFtzaGFyZWRTdG9yYWdl
IHJlbW92ZUNyZWRlbnRpYWw6Y3JlZGVudGlhbHNbdXNlcl0gZm9yUHJvdGVjdGlvblNwYWNlOnBy
b3RlY3Rpb25TcGFjZS5uc1NwYWNlKCldOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNw
cAppbmRleCBlOGUxNWNhMDg3ZmM4MjEwNjQ0NzE2YmJkZWQ2MDMzMzQ3MGQ4N2Y1Li5mOGJiNzY3
OGVlMzg2ODRiMjI5NGQxODQwOTkxNTAyOGU0Mzc5ZGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtNDU1LDYgKzQ1NSwxMiBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhckNhY2hlZENyZWRlbnRpYWxzKCkKICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmNsZWFyUGVybWFu
ZW50Q3JlZGVudGlhbHNGb3JQcm90ZWN0aW9uU3BhY2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBw
cm90ZWN0aW9uU3BhY2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3sKKyAgICBXZWJDb3JlOjpDcmVkZW50aWFsU3RvcmFnZTo6Y2xlYXJQZXJtYW5lbnRD
cmVkZW50aWFsc0ZvclByb3RlY3Rpb25TcGFjZShwcm90ZWN0aW9uU3BhY2UpOworICAgIGNvbXBs
ZXRpb25IYW5kbGVyKCk7Cit9CisKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmFkZFdlYnNpdGVEYXRh
U3RvcmUoV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogewogI2lmIEVO
QUJMRShJTkRFWEVEX0RBVEFCQVNFKQpAQCAtMTI5OCw2ICsxMzA0LDkgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlv
blNldDxXZWJzaXQKICAgICAgICAgICAgIGZvciAoYXV0byYgc2VjdXJpdHlPcmlnaW4gOiBzZWN1
cml0eU9yaWdpbnMpCiAgICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dlYnNp
dGVEYXRhLmVudHJpZXMuYXBwZW5kKHsgc2VjdXJpdHlPcmlnaW4sIFdlYnNpdGVEYXRhVHlwZTo6
Q3JlZGVudGlhbHMsIDAgfSk7CiAgICAgICAgIH0KKyAgICAgICAgYXV0byBzZWN1cml0eU9yaWdp
bnMgPSBXZWJDb3JlOjpDcmVkZW50aWFsU3RvcmFnZTo6b3JpZ2luc1dpdGhTZXNzaW9uQ3JlZGVu
dGlhbHMoKTsKKyAgICAgICAgZm9yIChhdXRvJiBzZWN1cml0eU9yaWdpbiA6IHNlY3VyaXR5T3Jp
Z2lucykKKyAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YS5lbnRy
aWVzLmFwcGVuZCh7IHNlY3VyaXR5T3JpZ2luLCBXZWJzaXRlRGF0YVR5cGU6OkNyZWRlbnRpYWxz
LCAwIH0pOwogICAgIH0KIAogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNp
dGVEYXRhVHlwZTo6RE9NQ2FjaGUpKSB7CkBAIC0xMzc5LDYgKzEzODgsNyBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9w
dGlvblNldDxXZWJzaQogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVE
YXRhVHlwZTo6Q3JlZGVudGlhbHMpKSB7CiAgICAgICAgIGlmIChhdXRvKiBzZXNzaW9uID0gc3Rv
cmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKICAgICAgICAgICAgIHNlc3Npb24tPmNyZWRlbnRpYWxT
dG9yYWdlKCkuY2xlYXJDcmVkZW50aWFscygpOworICAgICAgICBXZWJDb3JlOjpDcmVkZW50aWFs
U3RvcmFnZTo6Y2xlYXJTZXNzaW9uQ3JlZGVudGlhbHMoKTsKICAgICB9CiAKICAgICBhdXRvIGNs
ZWFyVGFza3NIYW5kbGVyID0gV1RGOjpDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShbdGhpcywg
Y2FsbGJhY2tJRF0gewpAQCAtMTUxNiw2ICsxNTI2LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0
aW8KICAgICAgICAgICAgIGZvciAoYXV0byYgb3JpZ2luRGF0YSA6IG9yaWdpbkRhdGFzKQogICAg
ICAgICAgICAgICAgIHNlc3Npb24tPmNyZWRlbnRpYWxTdG9yYWdlKCkucmVtb3ZlQ3JlZGVudGlh
bHNXaXRoT3JpZ2luKG9yaWdpbkRhdGEpOwogICAgICAgICB9CisgICAgICAgIFdlYkNvcmU6OkNy
ZWRlbnRpYWxTdG9yYWdlOjpyZW1vdmVTZXNzaW9uQ3JlZGVudGlhbHNXaXRoT3JpZ2lucyhvcmln
aW5EYXRhcyk7CiAgICAgfQogCiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBzdG9yYWdlIHF1b3Rh
IGNsZWFyaW5nIGZvciB0aGVzZSBvcmlnaW5zLgpAQCAtMTY2MCwxNCArMTY3MSwxOCBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhQ
QUw6OlNlc3Npb25JRCBzZXNzaQogICAgIH0KICNlbmRpZgogCi0gICAgLyoKLSAgICAvLyBGSVhN
RTogTm8gQVBJIHRvIGRlbGV0ZSBjcmVkZW50aWFscyBieSBvcmlnaW4KLSAgICBIYXNoU2V0PFN0
cmluZz4gb3JpZ2luc1dpdGhDcmVkZW50aWFsczsKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5j
b250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkNyZWRlbnRpYWxzKSkgewotICAgICAgICBpZiAoc3Rv
cmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKLSAgICAgICAgICAgIG9yaWdpbnNXaXRoQ3JlZGVudGlh
bHMgPSBzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpLT5jcmVkZW50aWFsU3RvcmFnZSgpLm9yaWdp
bnNXaXRoQ3JlZGVudGlhbHMoKTsKKyAgICAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBzdG9yYWdl
U2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgICAgICBhdXRvIG9yaWdpbnMgPSBzZXNzaW9u
LT5jcmVkZW50aWFsU3RvcmFnZSgpLm9yaWdpbnNXaXRoQ3JlZGVudGlhbHMoKTsKKyAgICAgICAg
ICAgIGF1dG8gb3JpZ2luc1RvRGVsZXRlID0gZmlsdGVyRm9yUmVnaXN0cmFibGVEb21haW5zKG9y
aWdpbnMsIGRvbWFpbnNUb0RlbGV0ZUFsbEJ1dENvb2tpZXNGb3IsIGNhbGxiYWNrQWdncmVnYXRv
ci0+bV9kb21haW5zKTsKKyAgICAgICAgICAgIGZvciAoYXV0byYgb3JpZ2luIDogb3JpZ2luc1Rv
RGVsZXRlKQorICAgICAgICAgICAgICAgIHNlc3Npb24tPmNyZWRlbnRpYWxTdG9yYWdlKCkucmVt
b3ZlQ3JlZGVudGlhbHNXaXRoT3JpZ2luKG9yaWdpbik7CisgICAgICAgIH0KKworICAgICAgICBh
dXRvIG9yaWdpbnMgPSBXZWJDb3JlOjpDcmVkZW50aWFsU3RvcmFnZTo6b3JpZ2luc1dpdGhTZXNz
aW9uQ3JlZGVudGlhbHMoKTsKKyAgICAgICAgYXV0byBvcmlnaW5zVG9EZWxldGUgPSBmaWx0ZXJG
b3JSZWdpc3RyYWJsZURvbWFpbnMob3JpZ2lucywgZG9tYWluc1RvRGVsZXRlQWxsQnV0Q29va2ll
c0ZvciwgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX2RvbWFpbnMpOworICAgICAgICBXZWJDb3JlOjpD
cmVkZW50aWFsU3RvcmFnZTo6cmVtb3ZlU2Vzc2lvbkNyZWRlbnRpYWxzV2l0aE9yaWdpbnMob3Jp
Z2luc1RvRGVsZXRlKTsKICAgICB9Ci0gICAgKi8KICAgICAKICAgICBpZiAod2Vic2l0ZURhdGFU
eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkRPTUNhY2hlKSkgewogICAgICAgICBDYWNo
ZVN0b3JhZ2U6OkVuZ2luZTo6ZmV0Y2hFbnRyaWVzKCp0aGlzLCBzZXNzaW9uSUQsIGZldGNoT3B0
aW9ucy5jb250YWlucyhXZWJzaXRlRGF0YUZldGNoT3B0aW9uOjpDb21wdXRlU2l6ZXMpLCBbdGhp
cywgZG9tYWluc1RvRGVsZXRlQWxsQnV0Q29va2llc0Zvciwgc2Vzc2lvbklELCBjYWxsYmFja0Fn
Z3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXShhdXRvIGVudHJpZXMpIG11
dGFibGUgewpAQCAtMjU2MywxNiArMjU3OCw2IEBAIFN0b3JhZ2VRdW90YU1hbmFnZXImIE5ldHdv
cmtQcm9jZXNzOjpzdG9yYWdlUXVvdGFNYW5hZ2VyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JCiB9
CiAKICNpZiAhUExBVEZPUk0oQ09DT0EpCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpvcmlnaW5zV2l0
aFBlcnNpc3RlbnRDcmVkZW50aWFscyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBj
b21wbGV0aW9uSGFuZGxlcihWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPigpKTsK
LX0KLQotdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVtb3ZlQ3JlZGVudGlhbHNXaXRoT3JpZ2lucyhj
b25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBjb21wbGV0aW9uSGFuZGxl
cigpOwotfQotCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplUHJvY2Vzcyhjb25zdCBB
dXhpbGlhcnlQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJikKIHsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCA4M2I0ZjM0ODQ2
NDBmYmIzYzQ1NmQ3MWJiNTRmMTdiMDIwZjg0NzYxLi5kYjg2ZjI0OWQ0MmEwNDllZmYzMjU0ZGM3
OWYxYzdkMmQ5MDA1YmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5oCkBAIC0zOTMsNiArMzkzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRlbGV0
ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVE
YXRhVHlwZT4sIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiBvcmln
aW5zLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgY29va2llSG9zdE5hbWVzLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgSFNUU0NhY2hlSG9zdG5hbWVzLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKIAogICAg
IHZvaWQgY2xlYXJDYWNoZWRDcmVkZW50aWFscygpOworICAgIHZvaWQgY2xlYXJQZXJtYW5lbnRD
cmVkZW50aWFsc0ZvclByb3RlY3Rpb25TcGFjZShjb25zdCBXZWJDb3JlOjpQcm90ZWN0aW9uU3Bh
Y2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAgICAgdm9pZCBzZXRDYWNoZVN0
b3JhZ2VQYXJhbWV0ZXJzKFBBTDo6U2Vzc2lvbklELCBTdHJpbmcmJiBjYWNoZVN0b3JhZ2VEaXJl
Y3RvcnksIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmKTsKICAgICB2b2lkIGluaXRpYWxpemVR
dW90YVVzZXJzKFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXImLCBQQUw6OlNlc3Npb25JRCwg
Y29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJik7CkBAIC00MzYsOSArNDM3LDYgQEAgcHJpdmF0
ZToKICNlbmRpZgogCiAgICAgdm9pZCBwbGF0Zm9ybVN5bmNBbGxDb29raWVzKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7Ci0KLSAgICB2b2lkIG9yaWdpbnNXaXRoUGVyc2lzdGVudENyZWRl
bnRpYWxzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YT4pPiYmKTsKLSAgICB2b2lkIHJlbW92ZUNyZWRlbnRpYWxzV2l0aE9yaWdpbnMoY29u
c3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mIG9yaWdpbnMsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgCiAgICAgdm9pZCByZWdpc3RlclVSTFNjaGVtZUFz
U2VjdXJlKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAgIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVB
c0J5cGFzc2luZ0NvbnRlbnRTZWN1cml0eVBvbGljeShjb25zdCBTdHJpbmcmKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1l
c3NhZ2VzLmluCmluZGV4IDZkMDYyNDA4M2Y3NWYzMzI3MjZhYjNmYjIxZGMxZDJjZmY5MGMyMWMu
LjliZTE2ZDhjZGY2ZjFlOTlkZGExOGJlZmQ1ZWU2ZGVlY2ZkZDU4YWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5p
bgpAQCAtMzgsNiArMzgsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNl
aXZlciB7CiAjZW5kaWYKIAogICAgIENsZWFyQ2FjaGVkQ3JlZGVudGlhbHMoKQorICAgIENsZWFy
UGVybWFuZW50Q3JlZGVudGlhbHNGb3JQcm90ZWN0aW9uU3BhY2UoV2ViQ29yZTo6UHJvdGVjdGlv
blNwYWNlIHByb3RlY3Rpb25TcGFjZSkgLT4gKCkgQXN5bmMKIAogICAgIEFkZFdlYnNpdGVEYXRh
U3RvcmUoc3RydWN0IFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgd2Vic2l0ZURh
dGFTdG9yZVBhcmFtZXRlcnMpOwogICAgIERlc3Ryb3lTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCkKQEAgLTE2OCw3ICsxNjksNSBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBM
ZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0QWRDbGlja0F0dHJpYnV0aW9uT3ZlcnJpZGVUaW1lckZv
clRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBib29sIHZhbHVlKSAtPiAoKSBBc3lu
YwogICAgIFNldEFkQ2xpY2tBdHRyaWJ1dGlvbkNvbnZlcnNpb25VUkxGb3JUZXN0aW5nKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIHVybCkgLT4gKCkgQXN5bmMKICAgICBNYXJrQWRDbGlj
a0F0dHJpYnV0aW9uc0FzRXhwaXJlZEZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
KSAtPiAoKSBBc3luYwotICAgIE9yaWdpbnNXaXRoUGVyc2lzdGVudENyZWRlbnRpYWxzKCkgLT4g
KFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdpbnMpIEFzeW5jCi0gICAg
UmVtb3ZlQ3JlZGVudGlhbHNXaXRoT3JpZ2lucyhWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhPiBvcmlnaW5zKSAtPiAoKSBBc3luYwogICAgIEdldExvY2FsU3RvcmFnZU9yaWdpbkRl
dGFpbHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoVmVjdG9yPFdlYktpdDo6TG9jYWxT
dG9yYWdlRGF0YWJhc2VUcmFja2VyOjpPcmlnaW5EZXRhaWxzPiBkZXRhaWxzKSBBc3luYwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJv
Y2Vzc0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
UHJvY2Vzc0NvY29hLm1tCmluZGV4IGJkZWZlOWU0ZmE1OTAwNmQ1ZWI1OTdiYjdjMDVkMzYxZGQ3
OTE4YTYuLjViNTJjYWJjMGQ5OTdlYzU4OWEzN2E1MDg5YzkxNDViMjhhZWFkM2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9j
ZXNzQ29jb2EubW0KQEAgLTIxMiwzMSArMjEyLDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xl
YXJEaXNrQ2FjaGUoV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgQ29tcGxldGlvbkhhbmRsZXI8dm8K
ICAgICB9KS5nZXQoKSk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6Om9yaWdpbnNXaXRoUGVy
c2lzdGVudENyZWRlbnRpYWxzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YT4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFdlYkNvcmU6OkNyZWRlbnRpYWxTdG9yYWdlOjpvcmlnaW5zV2l0aFBlcnNp
c3RlbnRDcmVkZW50aWFscygpKTsKLX0KLQotdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVtb3ZlQ3Jl
ZGVudGlhbHNXaXRoT3JpZ2lucyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhPiYgb3JpZ2lucywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQotewotICAgIGZvciAoYXV0byYgb3JpZ2luIDogb3JpZ2lucykgewotICAgICAgICBhdXRv
IGFsbENyZWRlbnRpYWxzID0gW1tOU1VSTENyZWRlbnRpYWxTdG9yYWdlIHNoYXJlZENyZWRlbnRp
YWxTdG9yYWdlXSBhbGxDcmVkZW50aWFsc107Ci0gICAgICAgIGZvciAoTlNVUkxQcm90ZWN0aW9u
U3BhY2UqIHNwYWNlIGluIGFsbENyZWRlbnRpYWxzKSB7Ci0gICAgICAgICAgICBpZiAob3JpZ2lu
LnByb3RvY29sID09IFN0cmluZyhzcGFjZS5wcm90b2NvbCkKLSAgICAgICAgICAgICAgICAmJiBv
cmlnaW4uaG9zdCA9PSBTdHJpbmcoc3BhY2UuaG9zdCkKLSAgICAgICAgICAgICAgICAmJiBvcmln
aW4ucG9ydAotICAgICAgICAgICAgICAgICYmICpvcmlnaW4ucG9ydCA9PSBzcGFjZS5wb3J0KSB7
Ci0gICAgICAgICAgICAgICAgYXV0byBjcmVkZW50aWFscyA9IGFsbENyZWRlbnRpYWxzW3NwYWNl
XTsKLSAgICAgICAgICAgICAgICBmb3IgKE5TU3RyaW5nKiB1c2VyIGluIGNyZWRlbnRpYWxzKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gY3JlZGVudGlhbCA9IGNyZWRlbnRpYWxzW3VzZXJd
OwotICAgICAgICAgICAgICAgICAgICBbW05TVVJMQ3JlZGVudGlhbFN0b3JhZ2Ugc2hhcmVkQ3Jl
ZGVudGlhbFN0b3JhZ2VdIHJlbW92ZUNyZWRlbnRpYWw6Y3JlZGVudGlhbCBmb3JQcm90ZWN0aW9u
U3BhY2U6c3BhY2VdOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotICAgIH0KLSAgICBjb21wbGV0aW9uSGFuZGxlcigpOwotfQotCiAjaWYgUExBVEZPUk0oTUFD
KQogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0U2hhcmVkSFRUUENvb2tpZVN0b3JhZ2UoY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiBpZGVudGlmaWVyKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQppbmRleCBjMDZlMWFmYjMzZmZhMzE4
YjdlMjlkZmRjNGYwNjc5NTdhODM4YmYyLi5jYWU5ZDc4OTZiYzliMTIzZTRjN2MwNjZhNjMzMjI5
YjIzYjAzYTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tQcm9jZXNzUG9vbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tQcm9jZXNzUG9vbC5tbQpAQCAtNjMxLDQgKzYzMSwxMSBAQCAtIChCT09MKV9uZXR3b3JrUHJv
Y2Vzc0hhc0VudGl0bGVtZW50Rm9yVGVzdGluZzooTlNTdHJpbmcgKillbnRpdGxlbWVudAogICAg
IHJldHVybiBfcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzSGFzRW50aXRsZW1lbnRGb3JUZXN0
aW5nKGVudGl0bGVtZW50KTsKIH0KIAorLSAodm9pZClfY2xlYXJQZXJtYW5lbnRDcmVkZW50aWFs
c0ZvclByb3RlY3Rpb25TcGFjZTooTlNVUkxQcm90ZWN0aW9uU3BhY2UgKilwcm90ZWN0aW9uU3Bh
Y2UgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoKSljb21wbGV0aW9uSGFuZGxlcgoreworICAg
IF9wcm9jZXNzUG9vbC0+Y2xlYXJQZXJtYW5lbnRDcmVkZW50aWFsc0ZvclByb3RlY3Rpb25TcGFj
ZShXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UocHJvdGVjdGlvblNwYWNlKSwgW2NvbXBsZXRpb25I
YW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0geworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcigpOworICAgIH0pOworfQorCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCmluZGV4
IDM5NzMyMWRlODAwOTgwZTM3Mzk1YjJkMmUxNGY3NjAyYTBmOTA1YjIuLmNiMTVhM2U0ZjQ0ZDdh
M2U4Y2RiYmJmZTliZDFmYzIzZjc2NmVjZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCkBAIC0xMjAsNiAr
MTIwLDcgQEAKIC0gKHZvaWQpX3JlZ2lzdGVyVVJMU2NoZW1lU2VydmljZVdvcmtlcnNDYW5IYW5k
bGU6KE5TU3RyaW5nICopc2NoZW1lIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCksIGlv
cygxMS4zKSk7CiAtICh2b2lkKV9nZXRBY3RpdmVQYWdlc09yaWdpbnNJbldlYlByb2Nlc3NGb3JU
ZXN0aW5nOihwaWRfdClwaWQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNBcnJheTxOU1N0
cmluZyAqPiAqKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0
LjQpLCBpb3MoMTIuMikpOwogLSAoQk9PTClfbmV0d29ya1Byb2Nlc3NIYXNFbnRpdGxlbWVudEZv
clRlc3Rpbmc6KE5TU3RyaW5nICopZW50aXRsZW1lbnQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygx
MC4xNC40KSwgaW9zKDEyLjIpKTsKKy0gKHZvaWQpX2NsZWFyUGVybWFuZW50Q3JlZGVudGlhbHNG
b3JQcm90ZWN0aW9uU3BhY2U6KE5TVVJMUHJvdGVjdGlvblNwYWNlICopcHJvdGVjdGlvblNwYWNl
IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCBnZXR0ZXI9X2lzQ29va2llU3RvcmFnZVBhcnRpdGlvbmluZ0VuYWJs
ZWQsIHNldHRlcj1fc2V0Q29va2llU3RvcmFnZVBhcnRpdGlvbmluZ0VuYWJsZWQ6KSBCT09MIF9j
b29raWVTdG9yYWdlUGFydGl0aW9uaW5nRW5hYmxlZCBXS19BUElfREVQUkVDQVRFRCgiUGFydGl0
aW9uZWQgY29va2llcyBhcmUgbm8gbG9uZ2VyIHN1cHBvcnRlZCIsIG1hY29zKDEwLjEyLjMsIDEw
LjE0LjQpLCBpb3MoMTAuMywgMTIuMikpOwogQHByb3BlcnR5IChub25hdG9taWMsIGdldHRlcj1f
aXNTdG9yYWdlQWNjZXNzQVBJRW5hYmxlZCwgc2V0dGVyPV9zZXRTdG9yYWdlQWNjZXNzQVBJRW5h
YmxlZDopIEJPT0wgX3N0b3JhZ2VBY2Nlc3NBUElFbmFibGVkIFdLX0FQSV9BVkFJTEFCTEUobWFj
b3MoMTAuMTMuNCksIGlvcygxMS4zKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHAKaW5kZXggNDcwMzZiM2QyNzgxYWMxZmUzZjZiZTY5NTI4NWM3MWJmOWFkNDU3
Zi4uYTIwZmEyOTI0OWU5MjQxMjEyYTI1ZWM2ZDhhZWE3MmM4NjU4NThjZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtMTc0NCw2ICsxNzQ0LDEyIEBA
IHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmNsZWFyQ2FjaGVkQ3JlZGVudGlhbHMoKQogICAgICAgICBt
X25ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6Q2xlYXJDYWNo
ZWRDcmVkZW50aWFscygpLCAwKTsKIH0KIAordm9pZCBXZWJQcm9jZXNzUG9vbDo6Y2xlYXJQZXJt
YW5lbnRDcmVkZW50aWFsc0ZvclByb3RlY3Rpb25TcGFjZShXZWJDb3JlOjpQcm90ZWN0aW9uU3Bh
Y2UmJiBwcm90ZWN0aW9uU3BhY2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3sKKyAgICBpZiAobV9uZXR3b3JrUHJvY2VzcykKKyAgICAgICAgbV9uZXR3
b3JrUHJvY2Vzcy0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6
Q2xlYXJQZXJtYW5lbnRDcmVkZW50aWFsc0ZvclByb3RlY3Rpb25TcGFjZShwcm90ZWN0aW9uU3Bh
Y2UpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKIHZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OnRlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzKCkKIHsKICAgICBpZiAoIW1fbmV0d29ya1Byb2Nl
c3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCA5OTY5MTEy
ZDY5YjNjMzhjNDJjOWY3YTYwYTkzYTJjY2NkMTBlNDUzLi4wNjAyN2I2YThlNjA2MTgwNmViNjQ5
ZmM2NzU5ODIxODcyMDNkMjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmgKQEAgLTMxMCw2ICszMTAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBbGxvd3NBbnlT
U0xDZXJ0aWZpY2F0ZUZvcldlYlNvY2tldChib29sKTsKIAogICAgIHZvaWQgY2xlYXJDYWNoZWRD
cmVkZW50aWFscygpOworICAgIHZvaWQgY2xlYXJQZXJtYW5lbnRDcmVkZW50aWFsc0ZvclByb3Rl
Y3Rpb25TcGFjZShXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKICAgICB2b2lkIHRlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzKCk7CiAgICAgdm9p
ZCBzZW5kTmV0d29ya1Byb2Nlc3NXaWxsU3VzcGVuZEltbWluZW50bHkoKTsKICAgICB2b2lkIHNl
bmROZXR3b3JrUHJvY2Vzc0RpZFJlc3VtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCAwZWVjODAx
MjdhNjE1MDJlM2ZiMDMxOGE5NzZmYTk1YmEzNmZhMjRjLi41YWI1M2RhMGQyNmVlZmI0MzA0Y2Q2
OTJlZTgxNGNlOGUzODcwYmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtNTIwLDI0ICs1MjAsNiBA
QCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YUFuZEFwcGx5KE9wdGlvblNldDxXZWJz
aXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgTwogICAgICAgICB9KTsKICAgICB9CiAKLSNpZiBQTEFU
Rk9STShDT0NPQSkKLSAgICBpZiAoZGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6
Q3JlZGVudGlhbHMpICYmIGlzUGVyc2lzdGVudCgpKSB7Ci0gICAgICAgIGZvciAoYXV0byYgcHJv
Y2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkgewotICAgICAgICAgICAgaWYgKCFwcm9jZXNzUG9v
bC0+bmV0d29ya1Byb2Nlc3MoKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
ICAgIAotICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5hZGRQZW5kaW5nQ2FsbGJhY2so
KTsKLSAgICAgICAgICAgIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYmKT4gY29tcGxldGlvbkhhbmRsZXIgPSBbY2FsbGJhY2tB
Z2dyZWdhdG9yXShWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYmIG9yaWdpbnMp
IG11dGFibGUgewotICAgICAgICAgICAgICAgIFdlYnNpdGVEYXRhIHdlYnNpdGVEYXRhOwotICAg
ICAgICAgICAgICAgIGZvciAoYXV0byYgb3JpZ2luIDogb3JpZ2lucykKLSAgICAgICAgICAgICAg
ICAgICAgd2Vic2l0ZURhdGEuZW50cmllcy5hcHBlbmQoV2Vic2l0ZURhdGE6OkVudHJ5IHsgb3Jp
Z2luLCBXZWJzaXRlRGF0YVR5cGU6OkNyZWRlbnRpYWxzLCAwIH0pOwotICAgICAgICAgICAgICAg
IGNhbGxiYWNrQWdncmVnYXRvci0+cmVtb3ZlUGVuZGluZ0NhbGxiYWNrKFdURk1vdmUod2Vic2l0
ZURhdGEpKTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICBwcm9jZXNzUG9vbC0+bmV0d29y
a1Byb2Nlc3MoKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6
T3JpZ2luc1dpdGhQZXJzaXN0ZW50Q3JlZGVudGlhbHMoKSwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOwotICAgICAgICB9Ci0gICAgfQotI2VuZGlmCi0KICNpZiBFTkFCTEUoTkVUU0NBUEVf
UExVR0lOX0FQSSkKICAgICBpZiAoZGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6
UGx1Z0luRGF0YSkgJiYgaXNQZXJzaXN0ZW50KCkpIHsKICAgICAgICAgY2xhc3MgU3RhdGUgewpA
QCAtNjQ0LDkgKzYyNiw2IEBAIHN0YXRpYyBQcm9jZXNzQWNjZXNzVHlwZSBjb21wdXRlV2ViUHJv
Y2Vzc0FjY2Vzc1R5cGVGb3JEYXRhUmVtb3ZhbChPcHRpb25TZXQ8V2ViCiAgICAgaWYgKGRhdGFU
eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6Ok1lbW9yeUNhY2hlKSkKICAgICAgICAgcHJv
Y2Vzc0FjY2Vzc1R5cGUgPSBzdGQ6Om1heChwcm9jZXNzQWNjZXNzVHlwZSwgUHJvY2Vzc0FjY2Vz
c1R5cGU6Ok9ubHlJZkxhdW5jaGVkKTsKIAotICAgIGlmIChkYXRhVHlwZXMuY29udGFpbnMoV2Vi
c2l0ZURhdGFUeXBlOjpDcmVkZW50aWFscykpCi0gICAgICAgIHByb2Nlc3NBY2Nlc3NUeXBlID0g
c3RkOjptYXgocHJvY2Vzc0FjY2Vzc1R5cGUsIFByb2Nlc3NBY2Nlc3NUeXBlOjpPbmx5SWZMYXVu
Y2hlZCk7Ci0KICAgICByZXR1cm4gcHJvY2Vzc0FjY2Vzc1R5cGU7CiB9CiAKQEAgLTEwOTMsMTkg
KzEwNzIsNiBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGEoT3B0aW9uU2V0PFdl
YnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBjb25zdCBWZQogICAgICAgICB9KTsKICAgICB9CiAK
LSAgICBpZiAoZGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6Q3JlZGVudGlhbHMp
ICYmIGlzUGVyc2lzdGVudCgpKSB7Ci0gICAgICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBw
cm9jZXNzUG9vbHMoKSkgewotICAgICAgICAgICAgaWYgKCFwcm9jZXNzUG9vbC0+bmV0d29ya1By
b2Nlc3MoKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIAotICAgICAg
ICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5hZGRQZW5kaW5nQ2FsbGJhY2soKTsKLSAgICAgICAg
ICAgIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiBjb21wbGV0aW9uSGFuZGxlciA9IFtj
YWxsYmFja0FnZ3JlZ2F0b3JdKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2tB
Z2dyZWdhdG9yLT5yZW1vdmVQZW5kaW5nQ2FsbGJhY2soKTsKLSAgICAgICAgICAgIH07Ci0gICAg
ICAgICAgICBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKS0+c2VuZFdpdGhBc3luY1JlcGx5
KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UmVtb3ZlQ3JlZGVudGlhbHNXaXRoT3JpZ2lucyhv
cmlnaW5zKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgICAgICB9Ci0gICAgfQot
CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgaWYgKGRhdGFUeXBlcy5jb250
YWlucyhXZWJzaXRlRGF0YVR5cGU6OlBsdWdJbkRhdGEpICYmIGlzUGVyc2lzdGVudCgpKSB7CiAg
ICAgICAgIFZlY3RvcjxTdHJpbmc+IGhvc3ROYW1lczsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiZTJjODAzNjhjMWM4NmQ1MTU3NzRlYjBjYzRh
Y2NkZWE5NDgwMGU5Li5jMzQ2MDAzMDJkZjI0MzVkZmM1YjkxNGM2YTRhNWZiYzY4NTNiYjI3IDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjAgQEAKKzIwMTktMDctMDUgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisK
KyAgICAgICAgUkVHUkVTU0lPTiAocjIzMDY4MSk6IERvIG5vdCB1c2Ugc3RvcmVkIGNyZWRlbnRp
YWxzIGlmIFdLQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVudC5zaG91bGRVc2VDcmVkZW50aWFs
U3RvcmFnZSByZXR1cm5zIGZhbHNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTcwOTMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzUwMTExNDY4Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIHJlbW92ZURh
dGFPZlR5cGVzIHdpbGwgbm8gbG9uZ2VyIHJlbW92ZSBwZXJzaXN0ZW50IGNyZWRlbnRpYWxzLiBX
ZSBzaG91bGQgY2xlYXIgcGVyc2lzdGVudCBjcmVkZW50aWFscyB1c2luZworICAgICAgICB0aGUg
bmV3IFNQSSBhZnRlciBlYWNoIHRlc3QgdGhhdCBjcmVhdGVzIHBlcnNpc3RlbnQgY3JlZGVudGlh
bHMsIG90aGVyd2lzZSB0aGUgbGF0ZXIgdGVzdHMgbWF5IHVzZSBjcmVkZW50aWFscworICAgICAg
ICBsZWZ0IGJ5IHByZXZpb3VzIHRlc3RzIGFuZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2Ugd2lsbCBub3QgYmUgaW52b2tlZC4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvQ2hhbGxlbmdlLm1tOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYnNpdGVEYXRhc3RvcmUubW06Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAxOS0wNy0wNSAgUnlhbiBIYWRkYWQg
IDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91
dCByMjQ3MTE1LgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9DaGFsbGVuZ2UubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0NoYWxsZW5nZS5tbQppbmRleCBhN2RiMDc3OTVhYzFiNzA4ZTIwYmRmOGFhNTliYTc4NTdhZWQy
ODhlLi45OTgzNWRmMTJkODBhYmYyNDMzZTQ4YWJjMGNiZjE4ZTQ5MmEzYjQ2IDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NoYWxsZW5nZS5tbQorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NoYWxsZW5nZS5tbQpAQCAt
MTAzLDYgKzEwMywxNCBAQCBURVNUKENoYWxsZW5nZSwgU2VjSWRlbnRpdHkpCiAgICAgW3dlYlZp
ZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0
aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0dHA6Ly8xMjcuMC4wLjE6JWQv
Iiwgc2VydmVyLnBvcnQoKV1dXV07CiAKICAgICBVdGlsOjpydW4oJm5hdmlnYXRpb25GaW5pc2hl
ZCk7CisKKyAgICAvLyBDbGVhciBwZXJzaXN0ZW50IGNyZWRlbnRpYWxzIGNyZWF0ZWQgYnkgdGhp
cyB0ZXN0LgorICAgIE5TVVJMUHJvdGVjdGlvblNwYWNlICpwcm90ZWN0aW9uU3BhY2UgPSBbW1tO
U1VSTFByb3RlY3Rpb25TcGFjZSBhbGxvY10gaW5pdFdpdGhIb3N0OkAiMTI3LjAuMC4xIiBwb3J0
OnNlcnZlci5wb3J0KCkgcHJvdG9jb2w6TlNVUkxQcm90ZWN0aW9uU3BhY2VIVFRQIHJlYWxtOkAi
dGVzdHJlYWxtIiBhdXRoZW50aWNhdGlvbk1ldGhvZDpOU1VSTEF1dGhlbnRpY2F0aW9uTWV0aG9k
SFRUUEJhc2ljXSBhdXRvcmVsZWFzZV07CisgICAgX19ibG9jayBib29sIHJlbW92ZWRDcmVkZW50
aWFsID0gZmFsc2U7CisgICAgW1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dLnByb2Nlc3NQb29sIF9j
bGVhclBlcm1hbmVudENyZWRlbnRpYWxzRm9yUHJvdGVjdGlvblNwYWNlOnByb3RlY3Rpb25TcGFj
ZSBjb21wbGV0aW9uSGFuZGxlcjpeeworICAgICAgICByZW1vdmVkQ3JlZGVudGlhbCA9IHRydWU7
CisgICAgfV07CisgICAgVXRpbDo6cnVuKCZyZW1vdmVkQ3JlZGVudGlhbCk7CiB9CiAKIEBpbnRl
cmZhY2UgQ2xpZW50Q2VydGlmaWNhdGVEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS05hdmlnYXRpb25E
ZWxlZ2F0ZT4gewpAQCAtMTk4LDEzICsyMDYsMTIgQEAgVEVTVChDaGFsbGVuZ2UsIEJhc2ljUHJv
cG9zZWRDcmVkZW50aWFsKQogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3QuZ2V0KCld
OwogICAgIFV0aWw6OnJ1bigmbmF2aWdhdGlvbkZpbmlzaGVkKTsKICAgICBFWFBFQ1RfVFJVRShy
ZWNlaXZlZFNlY29uZENoYWxsZW5nZSk7Ci0gICAgCisKKyAgICAvLyBDbGVhciBwZXJzaXN0ZW50
IGNyZWRlbnRpYWxzIGNyZWF0ZWQgYnkgdGhpcyB0ZXN0LgorICAgIE5TVVJMUHJvdGVjdGlvblNw
YWNlICpwcm90ZWN0aW9uU3BhY2UgPSBbW1tOU1VSTFByb3RlY3Rpb25TcGFjZSBhbGxvY10gaW5p
dFdpdGhIb3N0OkAiMTI3LjAuMC4xIiBwb3J0OnNlcnZlci5wb3J0KCkgcHJvdG9jb2w6TlNVUkxQ
cm90ZWN0aW9uU3BhY2VIVFRQIHJlYWxtOkAidGVzdHJlYWxtIiBhdXRoZW50aWNhdGlvbk1ldGhv
ZDpOU1VSTEF1dGhlbnRpY2F0aW9uTWV0aG9kSFRUUEJhc2ljXSBhdXRvcmVsZWFzZV07CiAgICAg
X19ibG9jayBib29sIHJlbW92ZWRDcmVkZW50aWFsID0gZmFsc2U7Ci0gICAgV0tXZWJzaXRlRGF0
YVN0b3JlICp3ZWJzaXRlRGF0YVN0b3JlID0gW3dlYlZpZXcgY29uZmlndXJhdGlvbl0ud2Vic2l0
ZURhdGFTdG9yZTsKLSAgICBbd2Vic2l0ZURhdGFTdG9yZSBmZXRjaERhdGFSZWNvcmRzT2ZUeXBl
czpbTlNTZXQgc2V0V2l0aE9iamVjdDpfV0tXZWJzaXRlRGF0YVR5cGVDcmVkZW50aWFsc10gY29t
cGxldGlvbkhhbmRsZXI6XihOU0FycmF5PFdLV2Vic2l0ZURhdGFSZWNvcmQgKj4gKmRhdGFSZWNv
cmRzKSB7Ci0gICAgICAgIFt3ZWJzaXRlRGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5cGVzOltOU1Nl
dCBzZXRXaXRoT2JqZWN0Ol9XS1dlYnNpdGVEYXRhVHlwZUNyZWRlbnRpYWxzXSBmb3JEYXRhUmVj
b3JkczpkYXRhUmVjb3JkcyBjb21wbGV0aW9uSGFuZGxlcjpeKHZvaWQpIHsKLSAgICAgICAgICAg
IHJlbW92ZWRDcmVkZW50aWFsID0gdHJ1ZTsKLSAgICAgICAgfV07CisgICAgW1t3ZWJWaWV3IGNv
bmZpZ3VyYXRpb25dLnByb2Nlc3NQb29sIF9jbGVhclBlcm1hbmVudENyZWRlbnRpYWxzRm9yUHJv
dGVjdGlvblNwYWNlOnByb3RlY3Rpb25TcGFjZSBjb21wbGV0aW9uSGFuZGxlcjpeeworICAgICAg
ICByZW1vdmVkQ3JlZGVudGlhbCA9IHRydWU7CiAgICAgfV07CiAgICAgVXRpbDo6cnVuKCZyZW1v
dmVkQ3JlZGVudGlhbCk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1dLV2Vic2l0ZURhdGFzdG9yZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJzaXRlRGF0YXN0b3JlLm1tCmluZGV4IGZhZTBhMzRiYjMz
MTU4NzY3YWY1MzZmYTEzNzdjZmFiZGM0NzFmZTQuLmI5NGJjNzMwYTc4MjIyZWExMTAwYmI5YWVj
YzE4ZThjM2U2MDVmNzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvV0tXZWJzaXRlRGF0YXN0b3JlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJzaXRlRGF0YXN0b3JlLm1tCkBAIC05Miw3ICs5Miw3IEBA
IFRFU1QoV0tXZWJzaXRlRGF0YVN0b3JlLCBSZW1vdmVBbmRGZXRjaERhdGEpCiAgICAgCiAgICAg
cmVhZHlUb0NvbnRpbnVlID0gZmFsc2U7CiAgICAgW1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVs
dERhdGFTdG9yZV0gZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6W1dLV2Vic2l0ZURhdGFTdG9yZSBf
YWxsV2Vic2l0ZURhdGFUeXBlc0luY2x1ZGluZ1ByaXZhdGVdIGNvbXBsZXRpb25IYW5kbGVyOl4o
TlNBcnJheTxXS1dlYnNpdGVEYXRhUmVjb3JkICo+ICpkYXRhUmVjb3JkcykgewotICAgICAgICBB
U1NFUlRfRVEoMHUsIGRhdGFSZWNvcmRzLmNvdW50KTsKKyAgICAgICAgRVhQRUNUX0VRKDB1LCBk
YXRhUmVjb3Jkcy5jb3VudCk7CiAgICAgICAgIHJlYWR5VG9Db250aW51ZSA9IHRydWU7CiAgICAg
fV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWFkeVRvQ29udGludWUpOwpAQCAt
MTM3LDQ0ICsxMzcsNiBAQCBURVNUKFdLV2Vic2l0ZURhdGFTdG9yZSwgRmV0Y2hOb25QZXJzaXN0
ZW50Q3JlZGVudGlhbHMpCiB9CiAKIFRFU1QoV0tXZWJzaXRlRGF0YVN0b3JlLCBGZXRjaFBlcnNp
c3RlbnRDcmVkZW50aWFscykKLXsKLSAgICBUQ1BTZXJ2ZXIgc2VydmVyKFRDUFNlcnZlcjo6cmVz
cG9uZFdpdGhDaGFsbGVuZ2VUaGVuT0spOwotICAgIAotICAgIHVzZVBlcnNpc3RlbnRDcmVkZW50
aWFsU3RvcmFnZSA9IHRydWU7Ci0gICAgYXV0byB3ZWJzaXRlRGF0YVN0b3JlID0gW1dLV2Vic2l0
ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXTsKLSAgICBhdXRvIG5hdmlnYXRpb25EZWxlZ2F0
ZSA9IGFkb3B0TlMoW1tOYXZpZ2F0aW9uVGVzdERlbGVnYXRlIGFsbG9jXSBpbml0XSk7Ci0gICAg
YXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpO
U01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOwotICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25E
ZWxlZ2F0ZTpuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCldOwotICAgIFt3ZWJWaWV3IGxvYWRSZXF1
ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05T
U3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJodHRwOi8vMTI3LjAuMC4xOiVkLyIsIHNlcnZlci5w
b3J0KCldXV1dOwotICAgIFtuYXZpZ2F0aW9uRGVsZWdhdGUgd2FpdEZvckRpZEZpbmlzaE5hdmln
YXRpb25dOwotCi0gICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKLSAgICBbd2Vic2l0ZURh
dGFTdG9yZSBmZXRjaERhdGFSZWNvcmRzT2ZUeXBlczpbTlNTZXQgc2V0V2l0aE9iamVjdDpfV0tX
ZWJzaXRlRGF0YVR5cGVDcmVkZW50aWFsc10gY29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PFdL
V2Vic2l0ZURhdGFSZWNvcmQgKj4gKmRhdGFSZWNvcmRzKSB7Ci0gICAgICAgIGludCBjcmVkZW50
aWFsQ291bnQgPSBkYXRhUmVjb3Jkcy5jb3VudDsKLSAgICAgICAgQVNTRVJUX0dUKGNyZWRlbnRp
YWxDb3VudCwgMCk7Ci0gICAgICAgIGJvb2wgZm91bmRFeHBlY3RlZFJlY29yZCA9IGZhbHNlOwot
ICAgICAgICBmb3IgKFdLV2Vic2l0ZURhdGFSZWNvcmQgKnJlY29yZCBpbiBkYXRhUmVjb3Jkcykg
ewotICAgICAgICAgICAgYXV0byBuYW1lID0gW3JlY29yZCBkaXNwbGF5TmFtZV07Ci0gICAgICAg
ICAgICBpZiAoW25hbWUgaXNFcXVhbFRvU3RyaW5nOkAiMTI3LjAuMC4xIl0pIHsKLSAgICAgICAg
ICAgICAgICBmb3VuZEV4cGVjdGVkUmVjb3JkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBFWFBFQ1RfVFJVRShmb3VuZEV4
cGVjdGVkUmVjb3JkKTsKLSAgICAgICAgZG9uZSA9IHRydWU7Ci0gICAgfV07Ci0gICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKLSAgICAKLSAgICBfX2Jsb2NrIGJvb2wgcmVtb3Zl
ZENyZWRlbnRpYWwgPSBmYWxzZTsKLSAgICBbd2Vic2l0ZURhdGFTdG9yZSBmZXRjaERhdGFSZWNv
cmRzT2ZUeXBlczpbTlNTZXQgc2V0V2l0aE9iamVjdDpfV0tXZWJzaXRlRGF0YVR5cGVDcmVkZW50
aWFsc10gY29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PFdLV2Vic2l0ZURhdGFSZWNvcmQgKj4g
KmRhdGFSZWNvcmRzKSB7Ci0gICAgICAgIFt3ZWJzaXRlRGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5
cGVzOltOU1NldCBzZXRXaXRoT2JqZWN0Ol9XS1dlYnNpdGVEYXRhVHlwZUNyZWRlbnRpYWxzXSBm
b3JEYXRhUmVjb3JkczpkYXRhUmVjb3JkcyBjb21wbGV0aW9uSGFuZGxlcjpeKHZvaWQpIHsKLSAg
ICAgICAgICAgIHJlbW92ZWRDcmVkZW50aWFsID0gdHJ1ZTsKLSAgICAgICAgfV07Ci0gICAgfV07
Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZW1vdmVkQ3JlZGVudGlhbCk7Ci19Ci0K
LVRFU1QoV0tXZWJzaXRlRGF0YVN0b3JlLCBSZW1vdmVQZXJzaXN0ZW50Q3JlZGVudGlhbHMpCiB7
CiAgICAgVENQU2VydmVyIHNlcnZlcihUQ1BTZXJ2ZXI6OnJlc3BvbmRXaXRoQ2hhbGxlbmdlVGhl
bk9LKTsKIApAQCAtMTg3LDQyICsxNDksMjAgQEAgVEVTVChXS1dlYnNpdGVEYXRhU3RvcmUsIFJl
bW92ZVBlcnNpc3RlbnRDcmVkZW50aWFscykKICAgICBbbmF2aWdhdGlvbkRlbGVnYXRlIHdhaXRG
b3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKIAogICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7
Ci0gICAgX19ibG9jayBSZXRhaW5QdHI8V0tXZWJzaXRlRGF0YVJlY29yZD4gZXhwZWN0ZWRSZWNv
cmQ7CiAgICAgW3dlYnNpdGVEYXRhU3RvcmUgZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6W05TU2V0
IHNldFdpdGhPYmplY3Q6X1dLV2Vic2l0ZURhdGFUeXBlQ3JlZGVudGlhbHNdIGNvbXBsZXRpb25I
YW5kbGVyOl4oTlNBcnJheTxXS1dlYnNpdGVEYXRhUmVjb3JkICo+ICpkYXRhUmVjb3Jkcykgewog
ICAgICAgICBpbnQgY3JlZGVudGlhbENvdW50ID0gZGF0YVJlY29yZHMuY291bnQ7Ci0gICAgICAg
IEFTU0VSVF9HVChjcmVkZW50aWFsQ291bnQsIDApOwotICAgICAgICBmb3IgKFdLV2Vic2l0ZURh
dGFSZWNvcmQgKnJlY29yZCBpbiBkYXRhUmVjb3JkcykgewotICAgICAgICAgICAgYXV0byBuYW1l
ID0gW3JlY29yZCBkaXNwbGF5TmFtZV07Ci0gICAgICAgICAgICBpZiAoW25hbWUgaXNFcXVhbFRv
U3RyaW5nOkAiMTI3LjAuMC4xIl0pIHsKLSAgICAgICAgICAgICAgICBleHBlY3RlZFJlY29yZCA9
IHJlY29yZDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotICAgICAgICBFWFBFQ1RfVFJVRShleHBlY3RlZFJlY29yZCk7Ci0gICAgICAgIGRvbmUgPSB0
cnVlOwotICAgIH1dOwotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7Ci0KLSAg
ICBkb25lID0gZmFsc2U7Ci0gICAgW3dlYnNpdGVEYXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6
W05TU2V0IHNldFdpdGhPYmplY3Q6X1dLV2Vic2l0ZURhdGFUeXBlQ3JlZGVudGlhbHNdIGZvckRh
dGFSZWNvcmRzOltOU0FycmF5IGFycmF5V2l0aE9iamVjdDpleHBlY3RlZFJlY29yZC5nZXQoKV0g
Y29tcGxldGlvbkhhbmRsZXI6Xih2b2lkKSB7CisgICAgICAgIEVYUEVDVF9FUShjcmVkZW50aWFs
Q291bnQsIDApOwogICAgICAgICBkb25lID0gdHJ1ZTsKICAgICB9XTsKICAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmRvbmUpOwogCi0gICAgZG9uZSA9IGZhbHNlOwotICAgIFt3ZWJzaXRl
RGF0YVN0b3JlIGZldGNoRGF0YVJlY29yZHNPZlR5cGVzOltOU1NldCBzZXRXaXRoT2JqZWN0Ol9X
S1dlYnNpdGVEYXRhVHlwZUNyZWRlbnRpYWxzXSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8
V0tXZWJzaXRlRGF0YVJlY29yZCAqPiAqZGF0YVJlY29yZHMpIHsKLSAgICAgICAgYm9vbCBmb3Vu
ZExvY2FsSG9zdFJlY29yZCA9IGZhbHNlOwotICAgICAgICBmb3IgKFdLV2Vic2l0ZURhdGFSZWNv
cmQgKnJlY29yZCBpbiBkYXRhUmVjb3JkcykgewotICAgICAgICAgICAgYXV0byBuYW1lID0gW3Jl
Y29yZCBkaXNwbGF5TmFtZV07Ci0gICAgICAgICAgICBpZiAoW25hbWUgaXNFcXVhbFRvU3RyaW5n
OkAiMTI3LjAuMC4xIl0pIHsKLSAgICAgICAgICAgICAgICBmb3VuZExvY2FsSG9zdFJlY29yZCA9
IHRydWU7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LSAgICAgICAgRVhQRUNUX0ZBTFNFKGZvdW5kTG9jYWxIb3N0UmVjb3JkKTsKLSAgICAgICAgZG9u
ZSA9IHRydWU7CisgICAgLy8gQ2xlYXIgcGVyc2lzdGVudCBjcmVkZW50aWFscyBjcmVhdGVkIGJ5
IHRoaXMgdGVzdC4KKyAgICBOU1VSTFByb3RlY3Rpb25TcGFjZSAqcHJvdGVjdGlvblNwYWNlID0g
W1tbTlNVUkxQcm90ZWN0aW9uU3BhY2UgYWxsb2NdIGluaXRXaXRoSG9zdDpAIjEyNy4wLjAuMSIg
cG9ydDpzZXJ2ZXIucG9ydCgpIHByb3RvY29sOk5TVVJMUHJvdGVjdGlvblNwYWNlSFRUUCByZWFs
bTpAInRlc3RyZWFsbSIgYXV0aGVudGljYXRpb25NZXRob2Q6TlNVUkxBdXRoZW50aWNhdGlvbk1l
dGhvZEhUVFBCYXNpY10gYXV0b3JlbGVhc2VdOworICAgIF9fYmxvY2sgYm9vbCByZW1vdmVkQ3Jl
ZGVudGlhbCA9IGZhbHNlOworICAgIFtbd2ViVmlldyBjb25maWd1cmF0aW9uXS5wcm9jZXNzUG9v
bCBfY2xlYXJQZXJtYW5lbnRDcmVkZW50aWFsc0ZvclByb3RlY3Rpb25TcGFjZTpwcm90ZWN0aW9u
U3BhY2UgY29tcGxldGlvbkhhbmRsZXI6XnsKKyAgICAgICAgcmVtb3ZlZENyZWRlbnRpYWwgPSB0
cnVlOwogICAgIH1dOwotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAg
VXRpbDo6cnVuKCZyZW1vdmVkQ3JlZGVudGlhbCk7CiB9CiAKIFRFU1QoV0tXZWJzaXRlRGF0YVN0
b3JlLCBSZW1vdmVOb25QZXJzaXN0ZW50Q3JlZGVudGlhbHMpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>