<?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>189228</bug_id>
          
          <creation_ts>2018-09-02 00:20:05 -0700</creation_ts>
          <short_desc>[Cocoa] Turn on ARC for WebKitTestRunner</short_desc>
          <delta_ts>2020-04-17 02:32:00 -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>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>ASSIGNED</bug_status>
          <resolution></resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=210643</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>189464</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>lforschler</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1456021</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-09-02 00:20:05 -0700</bug_when>
    <thetext>[Cocoa] Turn on ARC for WebKitTestRunner</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456022</commentid>
    <comment_count>1</comment_count>
      <attachid>348729</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-09-02 00:32:55 -0700</bug_when>
    <thetext>Created attachment 348729
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456085</commentid>
    <comment_count>2</comment_count>
      <attachid>348746</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-09-02 12:22:08 -0700</bug_when>
    <thetext>Created attachment 348746
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456180</commentid>
    <comment_count>3</comment_count>
      <attachid>348777</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-09-03 10:05:51 -0700</bug_when>
    <thetext>Created attachment 348777
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456215</commentid>
    <comment_count>4</comment_count>
      <attachid>348777</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2018-09-03 13:30:22 -0700</bug_when>
    <thetext>Comment on attachment 348777
Patch

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

&gt; Tools/WebKitTestRunner/InjectedBundle/ios/AccessibilityTextMarkerIOS.mm:32
&gt; +    return [(__bridge id)platformTextMarker() isEqual:(__bridge id)other-&gt;platformTextMarker()];

Is there any way to make platformTextMarker() return (or rather make PlatformTextMarker) an id rather than CFTypeRef? I know in WebCore we use the trick of doing something like:

#ifndef __OBJC__
typedef struct objc_object *id;
#endif

in the C++ class. Though I am not sure what the implications for ARC are of that.

&gt; Tools/WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm:1066
&gt; +    return AccessibilityTextMarkerRange::create((__bridge PlatformTextMarkerRange)textMarkerRange);

Same question as above, but for PlatformTextMarkerRange.

&gt; Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:1825
&gt; -    id mutableString = [[[NSMutableString alloc] init] autorelease];
&gt; +    id mutableString = [[NSMutableString alloc] init];

Seems like this could be NSMutableString * rather than id (as long as you are changing this line).

&gt; Tools/WebKitTestRunner/ios/UIScriptControllerIOS.mm:138
&gt; +    return JSStringCreateWithCFString((__bridge CFStringRef)webView.accessibilitySpeakSelectionContent);

There is a category in WebKitTestRunner that adds a  -[NSString createJSStringRef] (and a +[NSString stringWithJSStringRef:]). It is currently in AccessibilityCommonMac.h, but seems more generally useful (could probably add ones for WKStringRef as well if we were going wild).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457927</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-09-08 14:29:56 -0700</bug_when>
    <thetext>Committed r235832: &lt;https://trac.webkit.org/changeset/235832&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457928</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-09-08 14:30:25 -0700</bug_when>
    <thetext>&lt;rdar://problem/44264628&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1458026</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2018-09-09 10:47:36 -0700</bug_when>
    <thetext>This patch broke WebKit2 tests, because it apparently makes system resources leak. Rolling back.

EWS detected this before landing.


worker/10: OSError(&apos;[Errno 35] Resource temporarily unavailable&apos;) raised:
    File &quot;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkitpy/common/message_pool.py&quot;, line 257, in run
      worker.handle(message.name, message.src, *message.args)
    File &quot;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py&quot;, line 283, in handle
...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1458028</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-09 10:52:02 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 189464</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1458828</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-09-11 19:14:58 -0700</bug_when>
    <thetext>This did not break WebKit2 tests on my computer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1458830</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-09-11 19:16:27 -0700</bug_when>
    <thetext>(In reply to Alexey Proskuryakov from comment #7)
&gt; This patch broke WebKit2 tests, because it apparently makes system resources
&gt; leak. Rolling back.
&gt; 
&gt; EWS detected this before landing.
&gt; 
&gt; 
&gt; worker/10: OSError(&apos;[Errno 35] Resource temporarily unavailable&apos;) raised:
&gt;     File
&gt; &quot;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkitpy/common/message_pool.py&quot;,
&gt; line 257, in run
&gt;       worker.handle(message.name, message.src, *message.args)
&gt;     File
&gt; &quot;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkitpy/layout_tests/controllers/
&gt; layout_test_runner.py&quot;, line 283, in handle
&gt; ...

I’m accustomed to seeing this on EWS when there is a server problem, which is why I didn’t realize it was a problem with the patch.

I guess I can abandon this for now because I’m not sure what to do next since I don’t see any problem locally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1463615</commentid>
    <comment_count>11</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2018-09-26 09:21:44 -0700</bug_when>
    <thetext>Watching open files and processes with lsof and ps would likely be the most straightforward way to see what&apos;s going on locally.

It&apos;s also possible that this is something specific to Sierra and the version of clang used there. This doesn&apos;t feel like a very likely cause to me though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1463618</commentid>
    <comment_count>12</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-09-26 09:23:18 -0700</bug_when>
    <thetext>Thanks. I will try your suggestion next time I have an opportunity to work on this.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348729</attachid>
            <date>2018-09-02 00:32:55 -0700</date>
            <delta_ts>2018-09-02 12:22:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189228-20180902003254.patch</filename>
            <type>text/plain</type>
            <size>33358</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1NTgzCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggN2Q4OThkNDE0Y2U2OGY4MWEyM2UzYmQyMTU2Zjc1ZDNl
MjMwZTkzOC4uMzcxYzViM2Y4MzIwZTRhMWU1MjJmZmZkMjVjZDliOGQ5YTk1Mzk3YiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk1
IEBACisyMDE4LTA5LTAyICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAg
ICBbQ29jb2FdIFR1cm4gb24gQVJDIGZvciBXZWJLaXRUZXN0UnVubmVyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODkyMjgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RSdW5uZXJTaGFyZWQvRXZl
bnRTZXJpYWxpemF0aW9uL21hYy9FdmVudFNlcmlhbGl6ZXJNYWMubW06CisgICAgICAgICgrW0V2
ZW50U2VyaWFsaXplciBkaWN0aW9uYXJ5Rm9yRXZlbnQ6cmVsYXRpdmVUb1RpbWU6XSk6IFJlbW92
ZWQgYXV0b3JlbGVhc2UuCisKKyAgICAgICAgKiBUZXN0UnVubmVyU2hhcmVkL2NvY29hL0xheW91
dFRlc3RTcGVsbENoZWNrZXIubW06CisgICAgICAgICgtW0xheW91dFRlc3RTcGVsbENoZWNrZXIg
c2V0UmVzdWx0c0Zyb21KU09iamVjdDppbkNvbnRleHQ6XSk6IFJlbW92ZWQgYXV0b3JlbGVhc2Uu
CisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0NvbmZpZ3VyYXRpb25zL0Jhc2UueGNjb25m
aWc6IEFkZGVkIENMQU5HX0VOQUJMRV9PQkpDX0FSQy4KKworICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlDb250cm9sbGVySU9TLm1tOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6YWNjZXNzaWJsZUVsZW1lbnRC
eUlkKTogVXNlIGEgX19icmlkZ2UgY2FzdC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcklPUy5tbToKKyAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmlzRXF1YWwpOiBEaXR0by4KKworICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnRJT1MubW06CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQpOiBSZW1vdmVkIHJldGFpbi4KKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6fkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQpOiBSZW1vdmVkIHJlbGVh
c2UuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlbW92ZU5vdGlmaWNh
dGlvbkxpc3RlbmVyKTogUmVtb3ZlZCByZWxlYXNlLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpsaW5lVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcik6IFVzZSBhIF9f
YnJpZGdlIGNhc3QuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRN
YXJrZXJSYW5nZUZvckVsZW1lbnQpOiBEaXR0by4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlTGVuZ3RoKTogRGl0dG8uCisgICAgICAgIChXVFI6
OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXZpb3VzVGV4dE1hcmtlcik6IERpdHRvLgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpuZXh0VGV4dE1hcmtlcik6IERpdHRv
LgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdGb3JUZXh0TWFy
a2VyUmFuZ2UpOiBEaXR0by4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
dGV4dE1hcmtlclJhbmdlRm9yTWFya2Vycyk6IERpdHRvLgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UpOiBEaXR0
by4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtlckZv
clRleHRNYXJrZXJSYW5nZSk6IERpdHRvLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjphY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIpOiBEaXR0by4KKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlTWF0Y2hlc1Rl
eHROZWFyTWFya2Vycyk6IERpdHRvLgorICAgICAgICAoV1RSOjpfQ0dQYXRoRW51bWVyYXRpb25J
dGVyYXRpb24pOiBEaXR0by4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
cGF0aERlc2NyaXB0aW9uIGNvbnN0KTogRGl0dG8uCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlci5t
bToKKyAgICAgICAgKC1bQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIgZGVhbGxvY10p
OiBSZW1vdmVkIFtzdXBlciBkZWFsbG9jXS4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW06CisgICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQpOiBS
ZW1vdmVkIHJldGFpbi4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6fkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQpOiBSZW1vdmVkIHJlbGVhc2UuCisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlbW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVyKTogUmVtb3Zl
ZCByZWxlYXNlLgorICAgICAgICAoV1RSOjpjcmVhdGVKU1N0cmluZ1JlZik6IFJlbW92ZWQgYXV0
b3JlbGVhc2UuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9s
bGVyQ29jb2EubW06CisgICAgICAgIChXVFI6OmluaXRpYWxpemVXZWJWaWV3Q29uZmlndXJhdGlv
bik6IFJlbW92ZWQgcmVsZWFzZS4KKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmNvY29h
UGxhdGZvcm1Jbml0aWFsaXplKTogUmVtb3ZlZCByZWxlYXNlLgorICAgICAgICAoV1RSOjpUZXN0
Q29udHJvbGxlcjo6cGxhdGZvcm1DcmVhdGVPdGhlclBhZ2UpOiBSZW1vdmVkIGF1dG9yZWxlYXNl
LgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0UnVubmVyV0tXZWJWaWV3
Lm1tOgorICAgICAgICAoLVtUZXN0UnVubmVyV0tXZWJWaWV3IGRlYWxsb2NdKTogUmVtb3ZlZCBb
c3VwZXIgZGVhbGxvY10gYW5kIGFsc28gbWFueQorICAgICAgICBjYXNlcyBvZiBzZXR0aW5nIHBy
b3BlcnRpZXMgdG8gbmlsIHRoYXQgd2VyZSBvbmx5IHByZXNlbnQgZm9yIG1lbW9yeQorICAgICAg
ICBtYW5hZ2VtZW50IHJlYXNvbnMuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2lvcy9V
SVNjcmlwdENvbnRyb2xsZXJJT1MubW06CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxl
cjo6YWNjZXNzaWJpbGl0eVNwZWFrU2VsZWN0aW9uQ29udGVudCBjb25zdCk6CisgICAgICAgIFVz
ZSBfX2JyaWRnZSBjYXN0LgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6OmVudGVy
VGV4dCk6IERpdHRvLgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6OnNlbGVjdEZv
cm1Qb3BvdmVyVGl0bGUgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250
cm9sbGVyOjp0ZXh0Q29udGVudFR5cGUgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdUUjo6VUlT
Y3JpcHRDb250cm9sbGVyOjpmb3JtSW5wdXRMYWJlbCBjb25zdCk6IERpdHRvLgorICAgICAgICAo
V1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6OnNjcm9sbGluZ1RyZWVBc1RleHQgY29uc3QpOiBEaXR0
by4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvbWFjL1BsYXRmb3JtV2ViVmlld01hYy5t
bToKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3Ojp+UGxhdGZvcm1XZWJWaWV3KTogUmVt
b3ZlZCByZWxlYXNlLgorICAgICAgICAoV1RSOjpQbGF0Zm9ybVdlYlZpZXc6OmFkZENocm9tZUlu
cHV0RmllbGQpOiBSZW1vdmVkIHJlbGVhc2UuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L21hYy9UZXN0Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKFdUUjo6YWxsb3dlZEZvbnRGYW1p
bHlTZXQpOiBSZW1vdmVkIHJldGFpbi4KKyAgICAgICAgKFdUUjo6c3lzdGVtSGlkZGVuRm9udEZh
bWlseVNldCk6IFJlbW92ZWQgcmV0YWluLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9t
YWMvV2ViS2l0VGVzdFJ1bm5lckRyYWdnaW5nSW5mby5tbToKKyAgICAgICAgKC1bV2ViS2l0VGVz
dFJ1bm5lckRyYWdnaW5nSW5mbyBkcmFnZ2luZ0Rlc3RpbmF0aW9uV2luZG93XSk6IFJlbW92ZWQg
cmV0YWluLgorICAgICAgICAoLVtXZWJLaXRUZXN0UnVubmVyRHJhZ2dpbmdJbmZvIGRlYWxsb2Nd
KTogRGVsZXRlZC4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvbWFjL1dlYktpdFRlc3RS
dW5uZXJQYXN0ZWJvYXJkLm1tOgorICAgICAgICAoK1tXZWJLaXRUZXN0UnVubmVyUGFzdGVib2Fy
ZCBfcGFzdGVib2FyZFdpdGhOYW1lOl0pOiBSZW1vdmVkIHJlbGVhc2UuCisgICAgICAgICgrW1dl
YktpdFRlc3RSdW5uZXJQYXN0ZWJvYXJkIHJlbGVhc2VMb2NhbFBhc3RlYm9hcmRzXSk6IFJlbW92
ZWQgcmVsZWFzZS4KKyAgICAgICAgTWV0aG9kIG5hbWUgaXMgc3RpbGwgT0sgYmVjYXVzZSBzZXR0
aW5nIGxvY2FsUGFzdGVib2FyZHMgdG8gbmlsIHdpbGwKKyAgICAgICAgc3RpbGwgcmVsZWFzZSB0
aGVtLgorICAgICAgICAoLVtMb2NhbFBhc3RlYm9hcmQgZGVhbGxvY10pOiBEZWxldGVkLgorICAg
ICAgICAoLVtMb2NhbFBhc3RlYm9hcmQgYWRkVHlwZXM6b3duZXI6XSk6IFJlbW92ZWQgcmVsZWFz
ZS4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvbWFjL1dlYktpdFRlc3RSdW5uZXJXaW5k
b3cubW06CisgICAgICAgICgtW1dlYktpdFRlc3RSdW5uZXJXaW5kb3cgZGVhbGxvY10pOiBSZW1v
dmVkIFtzdXBlciBkZWFsbG9jXS4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvbWFjL21h
aW4ubW06CisgICAgICAgIChkaXNhYmxlQXBwTmFwSW5VSVByb2Nlc3MpOiBSZW1vdmVkIHJldGFp
bi4KKwogMjAxOC0wOC0zMSAgQWRpdHlhIEtlZXJ0aGkgIDxha2VlcnRoaUBhcHBsZS5jb20+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCwgYWRkIGFuIGFsdGVybmF0ZSBlbWFpbCBmb3IgQWRpdHlhIEtl
ZXJ0aGkuCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL0V2ZW50U2VyaWFsaXph
dGlvbi9tYWMvRXZlbnRTZXJpYWxpemVyTWFjLm1tIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9F
dmVudFNlcmlhbGl6YXRpb24vbWFjL0V2ZW50U2VyaWFsaXplck1hYy5tbQppbmRleCAyM2FlYjE1
YjRkNmQ5ZTRiOTgxY2M0NjVlODM1ZWFhNDNiODA1NzIwLi43YmI2MmI0ZDZmZGFhNjYxNGM1MzFm
OGJiMTBmMGRlNGY2YzNmYzMxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL0V2
ZW50U2VyaWFsaXphdGlvbi9tYWMvRXZlbnRTZXJpYWxpemVyTWFjLm1tCisrKyBiL1Rvb2xzL1Rl
c3RSdW5uZXJTaGFyZWQvRXZlbnRTZXJpYWxpemF0aW9uL21hYy9FdmVudFNlcmlhbGl6ZXJNYWMu
bW0KQEAgLTE5OCw3ICsxOTgsNyBAQCArIChOU0RpY3Rpb25hcnkgKilkaWN0aW9uYXJ5Rm9yRXZl
bnQ6KENHRXZlbnRSZWYpcmF3RXZlbnQgcmVsYXRpdmVUb1RpbWU6KENHRXZlbgogICAgIFJldGFp
blB0cjxDR0V2ZW50UmVmPiBwbGFpbkV2ZW50ID0gYWRvcHRDRihDR0V2ZW50Q3JlYXRlKE5VTEwp
KTsKICAgICBDR0V2ZW50UmVmIHJhd1BsYWluRXZlbnQgPSBwbGFpbkV2ZW50LmdldCgpOwogCi0g
ICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqZGljdCA9IFtbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxs
b2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpkaWN0ID0g
W1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XTsKIAogICAgIEZPUl9FQUNIX0NHRVZF
TlRfSU5URUdFUl9GSUVMRChMT0FEX0lOVEVHRVJfRklFTERfRlJPTV9FVkVOVCk7CiAgICAgRk9S
X0VBQ0hfQ0dFVkVOVF9ET1VCTEVfRklFTEQoTE9BRF9ET1VCTEVfRklFTERfRlJPTV9FVkVOVCk7
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL2NvY29hL0xheW91dFRlc3RTcGVs
bENoZWNrZXIubW0gYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL2NvY29hL0xheW91dFRlc3RTcGVs
bENoZWNrZXIubW0KaW5kZXggMjMxYWI1NTI4ZTRkOTU1MjZmNzFhY2JhYzZlODkyZTFjN2FiN2U0
My4uZjkxMzFhZjIxMjg5OGI1MzhiMTdiOWZmYzA3MTFhN2Q1NGVjOGNjYSAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9MYXlvdXRUZXN0U3BlbGxDaGVja2VyLm1tCisr
KyBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5t
bQpAQCAtMjUxLDcgKzI1MSw3IEBAIC0gKHZvaWQpc2V0UmVzdWx0c0Zyb21KU09iamVjdDooSlNP
YmplY3RSZWYpcmVzdWx0c09iamVjdCBpbkNvbnRleHQ6KEpTQ29udGV4dFJlCiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgIEpTUHJvcGVydHlOYW1lQXJyYXlSZWxlYXNlKGRldGFp
bHNPYmplY3RQcm9wZXJ0aWVzKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFtyZXN1bHRz
Rm9yV29yZCBhZGRPYmplY3Q6W1tbTGF5b3V0VGVzdFRleHRDaGVja2luZ1Jlc3VsdCBhbGxvY10g
aW5pdFdpdGhUeXBlOm5zVGV4dENoZWNraW5nVHlwZShXVEZNb3ZlKHR5cGVWYWx1ZSkpIHJhbmdl
Ok5TTWFrZVJhbmdlKGZyb21WYWx1ZSwgdG9WYWx1ZSAtIGZyb21WYWx1ZSkgcmVwbGFjZW1lbnQ6
KF9fYnJpZGdlIE5TU3RyaW5nICopcmVwbGFjZW1lbnRUZXh0LmdldCgpIGRldGFpbHM6ZGV0YWls
cy5nZXQoKV0gYXV0b3JlbGVhc2VdXTsKKyAgICAgICAgICAgIFtyZXN1bHRzRm9yV29yZCBhZGRP
YmplY3Q6W1tMYXlvdXRUZXN0VGV4dENoZWNraW5nUmVzdWx0IGFsbG9jXSBpbml0V2l0aFR5cGU6
bnNUZXh0Q2hlY2tpbmdUeXBlKFdURk1vdmUodHlwZVZhbHVlKSkgcmFuZ2U6TlNNYWtlUmFuZ2Uo
ZnJvbVZhbHVlLCB0b1ZhbHVlIC0gZnJvbVZhbHVlKSByZXBsYWNlbWVudDooX19icmlkZ2UgTlNT
dHJpbmcgKilyZXBsYWNlbWVudFRleHQuZ2V0KCkgZGV0YWlsczpkZXRhaWxzLmdldCgpXV07CiAg
ICAgICAgIH0KICAgICAgICAgYXV0byBjZlRleHRUb0NoZWNrID0gYWRvcHRDRihKU1N0cmluZ0Nv
cHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB0ZXh0VG9DaGVjaykpOwogICAgICAgICBb
cmVzdWx0cyBzZXRPYmplY3Q6cmVzdWx0c0ZvcldvcmQuZ2V0KCkgZm9yS2V5OihfX2JyaWRnZSBO
U1N0cmluZyAqKWNmVGV4dFRvQ2hlY2suZ2V0KCldOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnCmluZGV4IDZlZmVkYTc1MmRhMzgy
NGJjMWU3N2NiOWZmOTBmOTYzYTQ5MmRiNTYuLmYxODk2ZDhlZTQxZDJiZjU3Nzk1OTBmYzlkNGM5
OTkyMDY3NDY1ZDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvQ29uZmlndXJh
dGlvbnMvQmFzZS54Y2NvbmZpZworKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0NvbmZpZ3Vy
YXRpb25zL0Jhc2UueGNjb25maWcKQEAgLTMwLDYgKzMwLDcgQEAgVVNFX0lOVEVSTkFMX1NES19S
ZWxlYXNlID0gJChIQVZFX0lOVEVSTkFMX1NESyk7CiAKIENMQU5HX0NYWF9MQU5HVUFHRV9TVEFO
REFSRCA9IGdudSsrMTQ7CiBDTEFOR19DWFhfTElCUkFSWSA9IGxpYmMrKzsKK0NMQU5HX0VOQUJM
RV9PQkpDX0FSQyA9IFlFUzsKIENMQU5HX0VOQUJMRV9PQkpDX1dFQUsgPSBZRVM7CiBDTEFOR19X
QVJOX0JMT0NLX0NBUFRVUkVfQVVUT1JFTEVBU0lORyA9IFlFUzsKIENMQU5HX1dBUk5fQ1hYMFhf
RVhURU5TSU9OUyA9IE5POwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJJT1MubW0gYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlcklP
Uy5tbQppbmRleCAwOWZhMmJjZWI5YWM0YWJjMTdjM2RmNTVmYmY2OTY5NDVjYmE4MjFhLi5mMTc5
NmYyYTUwNzUxYzczNDUzZTE1Yzc5OWUxNzA2YmE5ZTI4YjYyIDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5Q29udHJvbGxl
cklPUy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9B
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlcklPUy5tbQpAQCAtOTMsNyArOTMsNyBAQCBzdGF0aWMgaWQg
ZmluZEFjY2Vzc2libGVPYmplY3RCeUlkKGlkIG9iaiwgTlNTdHJpbmcgKmlkQXR0cmlidXRlKQog
UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjph
Y2Nlc3NpYmxlRWxlbWVudEJ5SWQoSlNTdHJpbmdSZWYgaWRBdHRyaWJ1dGUpCiB7CiAgICAgV0tC
dW5kbGVQYWdlUmVmIHBhZ2UgPSBJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkucGFnZSgpLT5w
YWdlKCk7Ci0gICAgaWQgcm9vdCA9IHN0YXRpY19jYXN0PFBsYXRmb3JtVUlFbGVtZW50PihXS0Fj
Y2Vzc2liaWxpdHlSb290T2JqZWN0KHBhZ2UpKTsKKyAgICBpZCByb290ID0gKF9fYnJpZGdlIFBs
YXRmb3JtVUlFbGVtZW50KVdLQWNjZXNzaWJpbGl0eVJvb3RPYmplY3QocGFnZSk7CiAKICAgICBp
ZCByZXN1bHQgPSBmaW5kQWNjZXNzaWJsZU9iamVjdEJ5SWQocm9vdCwgW05TU3RyaW5nIHN0cmlu
Z1dpdGhKU1N0cmluZ1JlZjppZEF0dHJpYnV0ZV0pOwogICAgIGlmIChyZXN1bHQpCmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmls
aXR5VGV4dE1hcmtlcklPUy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvaW9zL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VySU9TLm1tCmluZGV4IDFmMTA3Y2U3OWQ3ZTQz
YjhkODMwODA4ZDMxMWRmYzdhYjY4YTQwMTUuLmY3NTgxZTUzZTlkNTQ2MDViMDMwYTQzM2I3YjRl
NjU4NTFjNTdlNmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VySU9TLm1tCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VySU9T
Lm1tCkBAIC0yOSw3ICsyOSw3IEBAIG5hbWVzcGFjZSBXVFIgewogCiBib29sIEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyOjppc0VxdWFsKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBvdGhlcikKIHsK
LSAgICByZXR1cm4gWyhpZClwbGF0Zm9ybVRleHRNYXJrZXIoKSBpc0VxdWFsOihpZClvdGhlci0+
cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAgIHJldHVybiBbKF9fYnJpZGdlIGlkKXBsYXRmb3Jt
VGV4dE1hcmtlcigpIGlzRXF1YWw6KF9fYnJpZGdlIGlkKW90aGVyLT5wbGF0Zm9ybVRleHRNYXJr
ZXIoKV07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5t
bSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnRJT1MubW0KaW5kZXggYzVlNWU2YzAzMmUyOWM0Y2YxYzQyODJkNGU0OTY5ODIw
YTFkMmNlNy4uYjZhZmM4NTRjZGJmODBiYTZjMmQxYzc3Y2JjYmQxMTAwNDIxOTM3ZCAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJp
bGl0eVVJRWxlbWVudElPUy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tCkBAIC0xNDYsOCArMTQ2LDYg
QEAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudChQbGF0Zm9y
bVVJRWxlbWVudCBlbGVtZW50KQogICAgIDogbV9lbGVtZW50KGVsZW1lbnQpCiAgICAgLCBtX25v
dGlmaWNhdGlvbkhhbmRsZXIoMCkKIHsKLSAgICAvLyBGSVhNRTogYXBAd2Via2l0Lm9yZyBzYXlz
IE9iakMgb2JqZWN0cyBuZWVkIHRvIGJlIENGUmV0YWluZWQvQ0ZSZWxlYXNlIHRvIGJlIEdDLWNv
bXBsaWFudCBvbiB0aGUgbWFjLgotICAgIFttX2VsZW1lbnQgcmV0YWluXTsKIH0KIAogQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudChjb25zdCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50JiBvdGhlcikKQEAgLTE1NSwxMiArMTUzLDEwIEBAIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoY29uc3QgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudCYgb3RoCiAgICAgLCBtX2VsZW1lbnQob3RoZXIubV9lbGVtZW50KQogICAgICwgbV9ub3Rp
ZmljYXRpb25IYW5kbGVyKDApCiB7Ci0gICAgW21fZWxlbWVudCByZXRhaW5dOwogfQogCiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojp+QWNjZXNzaWJpbGl0eVVJRWxlbWVudCgpCiB7Ci0gICAgW21f
ZWxlbWVudCByZWxlYXNlXTsKIH0KIAogYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0Vx
dWFsKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIG90aGVyRWxlbWVudCkKQEAgLTk3Niw3ICs5NzIs
NiBAQCBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlbW92ZU5vdGlmaWNhdGlvbkxpc3Rl
bmVyKCkKICAgICBBU1NFUlQobV9ub3RpZmljYXRpb25IYW5kbGVyKTsKICAgICAKICAgICBbbV9u
b3RpZmljYXRpb25IYW5kbGVyIHN0b3BPYnNlcnZpbmddOwotICAgIFttX25vdGlmaWNhdGlvbkhh
bmRsZXIgcmVsZWFzZV07CiAgICAgbV9ub3RpZmljYXRpb25IYW5kbGVyID0gbmlsOwogICAgIAog
ICAgIHJldHVybiB0cnVlOwpAQCAtMTA2Myw0MSArMTA1OCw0MSBAQCB2b2lkIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnJlbW92ZVNlbGVjdGlvbigpCiAvLyBUZXh0IG1hcmtlcnMKIFJlZlB0cjxB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5l
VGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4
dE1hcmtlcikKIHsKLSAgICBpZCBzdGFydFRleHRNYXJrZXIgPSBbbV9lbGVtZW50IGxpbmVTdGFy
dE1hcmtlckZvck1hcmtlcjooaWQpdGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwot
ICAgIGlkIGVuZFRleHRNYXJrZXIgPSBbbV9lbGVtZW50IGxpbmVFbmRNYXJrZXJGb3JNYXJrZXI6
KGlkKXRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKKyAgICBpZCBzdGFydFRleHRN
YXJrZXIgPSBbbV9lbGVtZW50IGxpbmVTdGFydE1hcmtlckZvck1hcmtlcjooX19icmlkZ2UgaWQp
dGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAgIGlkIGVuZFRleHRNYXJrZXIg
PSBbbV9lbGVtZW50IGxpbmVFbmRNYXJrZXJGb3JNYXJrZXI6KF9fYnJpZGdlIGlkKXRleHRNYXJr
ZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKICAgICBOU0FycmF5ICp0ZXh0TWFya2VycyA9IFtO
U0FycmF5IGFycmF5V2l0aE9iamVjdHM6c3RhcnRUZXh0TWFya2VyLCBlbmRUZXh0TWFya2VyLCBu
aWxdOwogICAgIAogICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9IFttX2VsZW1lbnQgdGV4dE1hcmtl
clJhbmdlRm9yTWFya2Vyczp0ZXh0TWFya2Vyc107Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyUmFuZ2U6OmNyZWF0ZSh0ZXh0TWFya2VyUmFuZ2UpOworICAgIHJldHVybiBBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjpjcmVhdGUoKF9fYnJpZGdlIFBsYXRmb3JtVGV4dE1h
cmtlclJhbmdlKXRleHRNYXJrZXJSYW5nZSk7CiB9CiAKIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JF
bGVtZW50KEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIGVsZW1lbnQpCiB7CiAgICAgaWQgdGV4dE1h
cmtlclJhbmdlID0gW2VsZW1lbnQtPnBsYXRmb3JtVUlFbGVtZW50KCkgdGV4dE1hcmtlclJhbmdl
XTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6Y3JlYXRlKHRleHRN
YXJrZXJSYW5nZSk7CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OmNy
ZWF0ZSgoX19icmlkZ2UgUGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UpdGV4dE1hcmtlclJhbmdlKTsK
IH0KIAogaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUxlbmd0aChB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiByYW5nZSkKIHsKLSAgICBpZCB0ZXh0TWFya2Vy
cyA9IChpZClyYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKTsgICAgCisgICAgaWQgdGV4
dE1hcmtlcnMgPSAoX19icmlkZ2UgaWQpcmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCk7
CiAgICAgcmV0dXJuIFttX2VsZW1lbnQgbGVuZ3RoRm9yVGV4dE1hcmtlcnM6dGV4dE1hcmtlcnNd
OwogfQogCiBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnByZXZpb3VzVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1h
cmtlcikKIHsKLSAgICBpZCBwcmV2aW91c01hcmtlciA9IFttX2VsZW1lbnQgcHJldmlvdXNNYXJr
ZXJGb3JNYXJrZXI6KGlkKXRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKLSAgICBy
ZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmNyZWF0ZShwcmV2aW91c01hcmtlcik7Cisg
ICAgaWQgcHJldmlvdXNNYXJrZXIgPSBbbV9lbGVtZW50IHByZXZpb3VzTWFya2VyRm9yTWFya2Vy
OihfX2JyaWRnZSBpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAgcmV0
dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpjcmVhdGUoKF9fYnJpZGdlIFBsYXRmb3JtVGV4
dE1hcmtlcilwcmV2aW91c01hcmtlcik7CiB9CiAKIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFRleHRNYXJrZXIoQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7Ci0gICAgaWQgbmV4dE1hcmtlciA9IFttX2VsZW1l
bnQgbmV4dE1hcmtlckZvck1hcmtlcjooaWQpdGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2Vy
KCldOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6Y3JlYXRlKG5leHRNYXJr
ZXIpOworICAgIGlkIG5leHRNYXJrZXIgPSBbbV9lbGVtZW50IG5leHRNYXJrZXJGb3JNYXJrZXI6
KF9fYnJpZGdlIGlkKXRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKKyAgICByZXR1
cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmNyZWF0ZSgoX19icmlkZ2UgUGxhdGZvcm1UZXh0
TWFya2VyKW5leHRNYXJrZXIpOwogfQogCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyUmFuZ2UqIG1hcmtlclJhbmdlKQogewotICAgIGlkIHRleHRNYXJrZXJzID0gKGlk
KW1hcmtlclJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpOworICAgIGlkIHRleHRNYXJr
ZXJzID0gKF9fYnJpZGdlIGlkKW1hcmtlclJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgp
OwogICAgIGlmICghdGV4dE1hcmtlcnMgfHwgIVt0ZXh0TWFya2VycyBpc0tpbmRPZkNsYXNzOltO
U0FycmF5IGNsYXNzXV0pCiAgICAgICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0
ZXJzKDAsIDApOwogICAgIHJldHVybiBbW21fZWxlbWVudCBzdHJpbmdGb3JUZXh0TWFya2Vyczp0
ZXh0TWFya2Vyc10gY3JlYXRlSlNTdHJpbmdSZWZdOwpAQCAtMTEwNSwyMyArMTEwMCwyMyBAQCBK
U1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nRm9y
VGV4dE1hcmtlclJhbmdlKEFjY2VzcwogCiBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJS
YW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogc3RhcnRNYXJrZXIsIEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyKiBlbmRNYXJrZXIpCiB7Ci0gICAgTlNBcnJheSAqdGV4dE1hcmtlcnMgPSBbTlNBcnJheSBh
cnJheVdpdGhPYmplY3RzOihpZClzdGFydE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCksIChp
ZCllbmRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpLCBuaWxdOworICAgIE5TQXJyYXkgKnRl
eHRNYXJrZXJzID0gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czooX19icmlkZ2UgaWQpc3RhcnRN
YXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpLCAoX19icmlkZ2UgaWQpZW5kTWFya2VyLT5wbGF0
Zm9ybVRleHRNYXJrZXIoKSwgbmlsXTsKICAgICBpZCB0ZXh0TWFya2VyUmFuZ2UgPSBbbV9lbGVt
ZW50IHRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnM6dGV4dE1hcmtlcnNdOwotICAgIHJldHVybiBB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjpjcmVhdGUodGV4dE1hcmtlclJhbmdlKTsKKyAg
ICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6Y3JlYXRlKChfX2JyaWRnZSBQ
bGF0Zm9ybVRleHRNYXJrZXJSYW5nZSl0ZXh0TWFya2VyUmFuZ2UpOwogfQogCiBSZWZQdHI8QWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0YXJ0VGV4dE1h
cmtlckZvclRleHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiByYW5n
ZSkKIHsKLSAgICBpZCB0ZXh0TWFya2VycyA9IChpZClyYW5nZS0+cGxhdGZvcm1UZXh0TWFya2Vy
UmFuZ2UoKTsKKyAgICBpZCB0ZXh0TWFya2VycyA9IChfX2JyaWRnZSBpZClyYW5nZS0+cGxhdGZv
cm1UZXh0TWFya2VyUmFuZ2UoKTsKICAgICBpZCB0ZXh0TWFya2VyID0gW21fZWxlbWVudCBzdGFy
dE9yRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJzOnRleHRNYXJrZXJzIGlzU3RhcnQ6WUVTXTsK
LSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmNyZWF0ZSh0ZXh0TWFya2VyKTsK
KyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmNyZWF0ZSgoX19icmlkZ2UgUGxh
dGZvcm1UZXh0TWFya2VyKXRleHRNYXJrZXIpOwogfQogCiBSZWZQdHI8QWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmVuZFRleHRNYXJrZXJGb3JUZXh0TWFy
a2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSogcmFuZ2UpCiB7Ci0gICAgaWQg
dGV4dE1hcmtlcnMgPSAoaWQpcmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCk7CisgICAg
aWQgdGV4dE1hcmtlcnMgPSAoX19icmlkZ2UgaWQpcmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJh
bmdlKCk7CiAgICAgaWQgdGV4dE1hcmtlciA9IFttX2VsZW1lbnQgc3RhcnRPckVuZFRleHRNYXJr
ZXJGb3JUZXh0TWFya2Vyczp0ZXh0TWFya2VycyBpc1N0YXJ0Ok5PXTsKLSAgICByZXR1cm4gQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXI6OmNyZWF0ZSh0ZXh0TWFya2VyKTsKKyAgICByZXR1cm4gQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXI6OmNyZWF0ZSgoX19icmlkZ2UgUGxhdGZvcm1UZXh0TWFya2Vy
KXRleHRNYXJrZXIpOwogfQogCiBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmVuZFRleHRNYXJrZXJGb3JCb3VuZHMoaW50IHgsIGludCB5LCBp
bnQgd2lkdGgsIGludCBoZWlnaHQpCkBAIC0xMTQxLDcgKzExMzYsNyBAQCBSZWZQdHI8QWNjZXNz
aWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJGb3JQ
b2ludChpbnQgeAogCiBSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6YWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyKiBtYXJrZXIpCiB7Ci0gICAgaWQgb2JqID0gW21fZWxlbWVudCBhY2Nlc3Np
YmlsaXR5T2JqZWN0Rm9yVGV4dE1hcmtlcjooaWQpbWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIo
KV07CisgICAgaWQgb2JqID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5T2JqZWN0Rm9yVGV4dE1h
cmtlcjooX19icmlkZ2UgaWQpbWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CiAgICAgaWYg
KG9iaikKICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShvYmop
OwogICAgIHJldHVybiBudWxscHRyOwpAQCAtMTI0MSw5ICsxMjM2LDkgQEAgUmVmUHRyPEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJr
ZXJSYW5nZU1hdGMKIHsKICAgICBOU0FycmF5ICp0ZXh0TWFya2VycyA9IG5pbDsKICAgICBpZiAo
c3RhcnRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpICYmIGVuZE1hcmtlci0+cGxhdGZvcm1U
ZXh0TWFya2VyKCkpCi0gICAgICAgIHRleHRNYXJrZXJzID0gW05TQXJyYXkgYXJyYXlXaXRoT2Jq
ZWN0czooaWQpc3RhcnRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpLCAoaWQpZW5kTWFya2Vy
LT5wbGF0Zm9ybVRleHRNYXJrZXIoKSwgbmlsXTsKKyAgICAgICAgdGV4dE1hcmtlcnMgPSBbTlNB
cnJheSBhcnJheVdpdGhPYmplY3RzOihfX2JyaWRnZSBpZClzdGFydE1hcmtlci0+cGxhdGZvcm1U
ZXh0TWFya2VyKCksIChfX2JyaWRnZSBpZCllbmRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigp
LCBuaWxdOwogICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9IFttX2VsZW1lbnQgdGV4dE1hcmtlclJh
bmdlRnJvbU1hcmtlcnM6dGV4dE1hcmtlcnMgd2l0aFRleHQ6W05TU3RyaW5nIHN0cmluZ1dpdGhK
U1N0cmluZ1JlZjp0ZXh0XV07Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFu
Z2U6OmNyZWF0ZSh0ZXh0TWFya2VyUmFuZ2UpOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlclJhbmdlOjpjcmVhdGUoKF9fYnJpZGdlIFBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKXRl
eHRNYXJrZXJSYW5nZSk7CiB9CiAKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjptYXRoUG9zdHNjcmlwdHNEZXNjcmlwdGlvbigpIGNvbnN0CkBAIC0xMjU4
LDcgKzEyNTMsNyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6bWF0aFByZXNjcmlwdHNEZXNjcmlwdGlvbigpIGNvbgogCiBzdGF0aWMgdm9pZCBfQ0dQ
YXRoRW51bWVyYXRpb25JdGVyYXRpb24odm9pZCAqaW5mbywgY29uc3QgQ0dQYXRoRWxlbWVudCAq
ZWxlbWVudCkKIHsKLSAgICBOU011dGFibGVTdHJpbmcgKnJlc3VsdCA9IChOU011dGFibGVTdHJp
bmcgKilpbmZvOworICAgIE5TTXV0YWJsZVN0cmluZyAqcmVzdWx0ID0gKF9fYnJpZGdlIE5TTXV0
YWJsZVN0cmluZyAqKWluZm87CiAgICAgc3dpdGNoIChlbGVtZW50LT50eXBlKSB7CiAgICAgY2Fz
ZSBrQ0dQYXRoRWxlbWVudE1vdmVUb1BvaW50OgogICAgICAgICBbcmVzdWx0IGFwcGVuZFN0cmlu
ZzpAIlx0TW92ZSB0byBwb2ludFxuIl07CkBAIC0xMjgyLDkgKzEyNzcsNyBAQCBKU1JldGFpblB0
cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGF0aERlc2NyaXB0aW9uKCkg
Y29uc3QKIHsKICAgICBOU011dGFibGVTdHJpbmcgKnJlc3VsdCA9IFtOU011dGFibGVTdHJpbmcg
c3RyaW5nV2l0aFN0cmluZzpAIlxuU3RhcnQgUGF0aFxuIl07CiAgICAgQ0dQYXRoUmVmIHBhdGhS
ZWYgPSBbbV9lbGVtZW50IF9hY2Nlc3NpYmlsaXR5UGF0aF07Ci0gICAgCi0gICAgQ0dQYXRoQXBw
bHkocGF0aFJlZiwgcmVzdWx0LCBfQ0dQYXRoRW51bWVyYXRpb25JdGVyYXRpb24pOwotICAgIAor
ICAgIENHUGF0aEFwcGx5KHBhdGhSZWYsIChfX2JyaWRnZSB2b2lkKilyZXN1bHQsIF9DR1BhdGhF
bnVtZXJhdGlvbkl0ZXJhdGlvbik7CiAgICAgcmV0dXJuIFtyZXN1bHQgY3JlYXRlSlNTdHJpbmdS
ZWZdOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL21hYy9BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlci5tbSBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25I
YW5kbGVyLm1tCmluZGV4IGYzZWNiM2I0NjBkZTY3OTQwYjM2OTZiZWRkNGQ1OTVjMGJmNWUyZGIu
LjVkZDAyZjdmNDA5YmM4ZDI2NTg5MDRiOGU4ZWZjOWRkZmVhYjk1YjYgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlOb3Rp
ZmljYXRpb25IYW5kbGVyLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLm1tCkBAIC04Myw4ICs4
Myw2IEBAIC0gKHZvaWQpZGVhbGxvYwogCiAgICAgSlNWYWx1ZVVucHJvdGVjdChjb250ZXh0LCBt
X25vdGlmaWNhdGlvbkZ1bmN0aW9uQ2FsbGJhY2spOwogICAgIG1fbm90aWZpY2F0aW9uRnVuY3Rp
b25DYWxsYmFjayA9IDA7Ci0KLSAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKIC0gKHZvaWQpc2V0
Q2FsbGJhY2s6KEpTVmFsdWVSZWYpY2FsbGJhY2sKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0g
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50TWFjLm1tCmluZGV4IDc3ZGZmYjMwNmE0ODEzZWVhNjk4Y2EwOWZhMWMxM2I3MWIz
YWE0ZDAuLmNkNmU5NmE0ODE1YWFhNTc1OWNjZGVhNzIwNzM1Y2QwMzk1MDRlMmQgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnRNYWMubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQpAQCAtOTEsOCArOTEsNiBAQCBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KFBsYXRmb3JtVUlF
bGVtZW50IGVsZW1lbnQpCiAgICAgOiBtX2VsZW1lbnQoZWxlbWVudCkKICAgICAsIG1fbm90aWZp
Y2F0aW9uSGFuZGxlcigwKQogewotICAgIC8vIEZJWE1FOiBhcEB3ZWJraXQub3JnIHNheXMgT2Jq
QyBvYmplY3RzIG5lZWQgdG8gYmUgQ0ZSZXRhaW5lZC9DRlJlbGVhc2UgdG8gYmUgR0MtY29tcGxp
YW50IG9uIHRoZSBtYWMuCi0gICAgW21fZWxlbWVudCByZXRhaW5dOwogfQogCiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KGNvbnN0IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQmIG90aGVyKQpAQCAtMTAwLDE0ICs5OCwxMiBAQCBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KGNvbnN0IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQm
IG90aAogICAgICwgbV9lbGVtZW50KG90aGVyLm1fZWxlbWVudCkKICAgICAsIG1fbm90aWZpY2F0
aW9uSGFuZGxlcigwKQogewotICAgIFttX2VsZW1lbnQgcmV0YWluXTsKIH0KIAogQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6fkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoKQogewogICAgIC8vIFRoZSBu
b3RpZmljYXRpb24gaGFuZGxlciBzaG91bGQgYmUgbmlsIGJlY2F1c2UgcmVtb3ZlTm90aWZpY2F0
aW9uTGlzdGVuZXIoKSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBpbiB0aGUgdGVzdC4KICAgICBB
U1NFUlQoIW1fbm90aWZpY2F0aW9uSGFuZGxlcik7Ci0gICAgW21fZWxlbWVudCByZWxlYXNlXTsK
IH0KIAogYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0VxdWFsKEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQqIG90aGVyRWxlbWVudCkKQEAgLTE1NTgsNyArMTU1NCw2IEBAIGJvb2wgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6cmVtb3ZlTm90aWZpY2F0aW9uTGlzdGVuZXIoKQogICAgIEFTU0VS
VChtX25vdGlmaWNhdGlvbkhhbmRsZXIpOwogCiAgICAgW21fbm90aWZpY2F0aW9uSGFuZGxlciBz
dG9wT2JzZXJ2aW5nXTsKLSAgICBbbV9ub3RpZmljYXRpb25IYW5kbGVyIHJlbGVhc2VdOwogICAg
IG1fbm90aWZpY2F0aW9uSGFuZGxlciA9IG5pbDsKICAgICAKICAgICByZXR1cm4gdHJ1ZTsKQEAg
LTE4MjcsNyArMTgyMiw3IEBAIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjphY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRlCiAKIHN0YXRpYyBKU1N0
cmluZ1JlZiBjcmVhdGVKU1N0cmluZ1JlZihpZCBzdHJpbmcpCiB7Ci0gICAgaWQgbXV0YWJsZVN0
cmluZyA9IFtbW05TTXV0YWJsZVN0cmluZyBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAg
IGlkIG11dGFibGVTdHJpbmcgPSBbW05TTXV0YWJsZVN0cmluZyBhbGxvY10gaW5pdF07CiAgICAg
aWQgYXR0cmlidXRlcyA9IFtzdHJpbmcgYXR0cmlidXRlc0F0SW5kZXg6MCBlZmZlY3RpdmVSYW5n
ZTpuaWxdOwogICAgIGlkIGF0dHJpYnV0ZUVudW1lcmF0aW9uQmxvY2sgPSBeKE5TRGljdGlvbmFy
eTxOU1N0cmluZyAqLCBpZD4gKmF0dHJzLCBOU1JhbmdlIHJhbmdlLCBCT09MICpzdG9wKSB7CiAg
ICAgICAgIEJPT0wgbWlzc3BlbGxlZCA9IFtbYXR0cnMgb2JqZWN0Rm9yS2V5Ok5TQWNjZXNzaWJp
bGl0eU1pc3NwZWxsZWRUZXh0QXR0cmlidXRlXSBib29sVmFsdWVdOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCmluZGV4IDI0MGVl
YjUyZjMwNjc4NDExN2NhNWI4YTk2ZDhlM2ZjOTMwNzE3OWUuLmJjZjBjNjM3YmIwMTYwMmU3MzI5
YTk2Njg0ZjMwNjg0MzliYWExZGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
Y29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KQEAgLTU3LDcgKzU3LDYgQEAgc3RhdGljIFdL
V2ViVmlld0NvbmZpZ3VyYXRpb24gKmdsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uOwogdm9pZCBp
bml0aWFsaXplV2ViVmlld0NvbmZpZ3VyYXRpb24oY29uc3QgY2hhciogbGlicmFyeVBhdGgsIFdL
U3RyaW5nUmVmIGluamVjdGVkQnVuZGxlUGF0aCwgV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLQ29u
dGV4dENvbmZpZ3VyYXRpb25SZWYgY29udGV4dENvbmZpZ3VyYXRpb24pCiB7CiAjaWYgV0tfQVBJ
X0VOQUJMRUQKLSAgICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24gcmVsZWFzZV07CiAgICAg
Z2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24gPSBbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxs
b2NdIGluaXRdOwogCiAgICAgZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ucHJvY2Vzc1Bvb2wg
PSAoX19icmlkZ2UgV0tQcm9jZXNzUG9vbCAqKWNvbnRleHQ7CkBAIC0xMDksNyArMTA4LDYgQEAg
dm9pZCBUZXN0Q29udHJvbGxlcjo6Y29jb2FQbGF0Zm9ybUluaXRpYWxpemUoKQogICAgIE5TRGlj
dGlvbmFyeSAqcmVzb3VyY2VMb2dQbGlzdCA9IFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0
aE9iamVjdHNBbmRLZXlzOiBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDoxXSwgQCJ2ZXJzaW9uIiwg
bmlsXTsKICAgICBpZiAoIVtyZXNvdXJjZUxvZ1BsaXN0IHdyaXRlVG9GaWxlOmZ1bGxCcm93c2lu
Z1Nlc3Npb25SZXNvdXJjZUxvZyBhdG9taWNhbGx5OllFU10pCiAgICAgICAgIFdURkNyYXNoKCk7
Ci0gICAgW3Jlc291cmNlTG9nUGxpc3QgcmVsZWFzZV07CiB9CiAKIFdLQ29udGV4dFJlZiBUZXN0
Q29udHJvbGxlcjo6cGxhdGZvcm1Db250ZXh0KCkKQEAgLTE3OCw3ICsxNzYsNyBAQCB2b2lkIFRl
c3RDb250cm9sbGVyOjpwbGF0Zm9ybUNyZWF0ZVdlYlZpZXcoV0tQYWdlQ29uZmlndXJhdGlvblJl
ZiwgY29uc3QgVGVzdE9wdAogUGxhdGZvcm1XZWJWaWV3KiBUZXN0Q29udHJvbGxlcjo6cGxhdGZv
cm1DcmVhdGVPdGhlclBhZ2UoUGxhdGZvcm1XZWJWaWV3KiBwYXJlbnRWaWV3LCBXS1BhZ2VDb25m
aWd1cmF0aW9uUmVmLCBjb25zdCBUZXN0T3B0aW9ucyYgb3B0aW9ucykKIHsKICNpZiBXS19BUElf
RU5BQkxFRAotICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKm5ld0NvbmZpZ3VyYXRpb24gPSBb
W2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uIGNvcHldIGF1dG9yZWxlYXNlXTsKKyAgICBXS1dl
YlZpZXdDb25maWd1cmF0aW9uICpuZXdDb25maWd1cmF0aW9uID0gW2dsb2JhbFdlYlZpZXdDb25m
aWd1cmF0aW9uIGNvcHldOwogICAgIG5ld0NvbmZpZ3VyYXRpb24uX3JlbGF0ZWRXZWJWaWV3ID0g
c3RhdGljX2Nhc3Q8V0tXZWJWaWV3Kj4ocGFyZW50Vmlldy0+cGxhdGZvcm1WaWV3KCkpOwogICAg
IHJldHVybiBuZXcgUGxhdGZvcm1XZWJWaWV3KG5ld0NvbmZpZ3VyYXRpb24sIG9wdGlvbnMpOwog
I2Vsc2UKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdFJ1bm5l
cldLV2ViVmlldy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdFJ1bm5lcldL
V2ViVmlldy5tbQppbmRleCA5YmI1M2NkOWNmODUzZmNlZjU3MGExN2Y5YTJiOGFhYWE2YWM0NTk1
Li44NmE2MjgyNjg2YzI3ZjY5OTdhN2U0ZGUyNDgwMTg2OTE3MjA5NjYwIDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RSdW5uZXJXS1dlYlZpZXcubW0KKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0UnVubmVyV0tXZWJWaWV3Lm1tCkBAIC04
NCwyMiArODQsNiBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1l
IGNvbmZpZ3VyYXRpb246KFdLV2ViVmlld0NvbmZpZ3VyYXRpbwogLSAodm9pZClkZWFsbG9jCiB7
CiAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSByZW1vdmVPYnNlcnZl
cjpzZWxmXTsKLQotICAgIHNlbGYuZGlkU3RhcnRGb3JtQ29udHJvbEludGVyYWN0aW9uQ2FsbGJh
Y2sgPSBuaWw7Ci0gICAgc2VsZi5kaWRFbmRGb3JtQ29udHJvbEludGVyYWN0aW9uQ2FsbGJhY2sg
PSBuaWw7Ci0gICAgc2VsZi5kaWRTaG93Rm9yY2VQcmVzc1ByZXZpZXdDYWxsYmFjayA9IG5pbDsK
LSAgICBzZWxmLmRpZERpc21pc3NGb3JjZVByZXNzUHJldmlld0NhbGxiYWNrID0gbmlsOwotICAg
IHNlbGYud2lsbEJlZ2luWm9vbWluZ0NhbGxiYWNrID0gbmlsOwotICAgIHNlbGYuZGlkRW5kWm9v
bWluZ0NhbGxiYWNrID0gbmlsOwotICAgIHNlbGYuZGlkU2hvd0tleWJvYXJkQ2FsbGJhY2sgPSBu
aWw7Ci0gICAgc2VsZi5kaWRIaWRlS2V5Ym9hcmRDYWxsYmFjayA9IG5pbDsKLSAgICBzZWxmLmRp
ZEVuZFNjcm9sbGluZ0NhbGxiYWNrID0gbmlsOwotICAgIHNlbGYucm90YXRpb25EaWRFbmRDYWxs
YmFjayA9IG5pbDsKLQotICAgIHNlbGYuem9vbVRvU2NhbGVDb21wbGV0aW9uSGFuZGxlciA9IG5p
bDsKLSAgICBzZWxmLnJldHJpZXZlU3BlYWtTZWxlY3Rpb25Db250ZW50Q29tcGxldGlvbkhhbmRs
ZXIgPSBuaWw7Ci0KLSAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKIC0gKHZvaWQpZGlkU3RhcnRG
b3JtQ29udHJvbEludGVyYWN0aW9uCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lv
cy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0KaW5kZXggNTkzYWZjMDM1YTNjY2MyNGJlNzBlODhh
ZmYxMDdhN2QxYTIyNjdhNy4uYTZhYTk4YzhlNjllMWYwMjA5YjcyZTBkYjI4NDEyZmRkZmUzYjBk
OCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9s
bGVySU9TLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJv
bGxlcklPUy5tbQpAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjpy
ZXRyaWV2ZVNwZWFrU2VsZWN0aW9uQ29udGVudChKU1ZhbHVlUmVmIGNhbGxiYWNrKQogSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IFVJU2NyaXB0Q29udHJvbGxlcjo6YWNjZXNzaWJpbGl0eVNwZWFr
U2VsZWN0aW9uQ29udGVudCgpIGNvbnN0CiB7CiAgICAgVGVzdFJ1bm5lcldLV2ViVmlldyAqd2Vi
VmlldyA9IFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5wbGF0Zm9y
bVZpZXcoKTsKLSAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKENGU3RyaW5n
UmVmKXdlYlZpZXcuYWNjZXNzaWJpbGl0eVNwZWFrU2VsZWN0aW9uQ29udGVudCk7CisgICAgcmV0
dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKChfX2JyaWRnZSBDRlN0cmluZ1JlZil3ZWJW
aWV3LmFjY2Vzc2liaWxpdHlTcGVha1NlbGVjdGlvbkNvbnRlbnQpOwogfQogCiB2b2lkIFVJU2Ny
aXB0Q29udHJvbGxlcjo6c2ltdWxhdGVBY2Nlc3NpYmlsaXR5U2V0dGluZ3NDaGFuZ2VOb3RpZmlj
YXRpb24oSlNWYWx1ZVJlZiBjYWxsYmFjaykKQEAgLTMzNSw3ICszMzUsNyBAQCB2b2lkIFVJU2Ny
aXB0Q29udHJvbGxlcjo6ZW50ZXJUZXh0KEpTU3RyaW5nUmVmIHRleHQpCiB7CiAgICAgVGVzdFJ1
bm5lcldLV2ViVmlldyAqd2ViVmlldyA9IFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWlu
V2ViVmlldygpLT5wbGF0Zm9ybVZpZXcoKTsKICAgICBhdXRvIHRleHRBc0NGU3RyaW5nID0gYWRv
cHRDRihKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB0ZXh0KSk7Ci0g
ICAgW3dlYlZpZXcgX3NpbXVsYXRlVGV4dEVudGVyZWQ6KE5TU3RyaW5nICopdGV4dEFzQ0ZTdHJp
bmcuZ2V0KCldOworICAgIFt3ZWJWaWV3IF9zaW11bGF0ZVRleHRFbnRlcmVkOihfX2JyaWRnZSBO
U1N0cmluZyAqKXRleHRBc0NGU3RyaW5nLmdldCgpXTsKIH0KIAogdm9pZCBVSVNjcmlwdENvbnRy
b2xsZXI6OnR5cGVDaGFyYWN0ZXJVc2luZ0hhcmR3YXJlS2V5Ym9hcmQoSlNTdHJpbmdSZWYgY2hh
cmFjdGVyLCBKU1ZhbHVlUmVmIGNhbGxiYWNrKQpAQCAtMzgzLDE5ICszODMsMTkgQEAgdm9pZCBV
SVNjcmlwdENvbnRyb2xsZXI6OmRpc21pc3NGb3JtQWNjZXNzb3J5VmlldygpCiBKU1JldGFpblB0
cjxKU1N0cmluZ1JlZj4gVUlTY3JpcHRDb250cm9sbGVyOjpzZWxlY3RGb3JtUG9wb3ZlclRpdGxl
KCkgY29uc3QKIHsKICAgICBUZXN0UnVubmVyV0tXZWJWaWV3ICp3ZWJWaWV3ID0gVGVzdENvbnRy
b2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpOwotICAgIHJl
dHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoQ0ZTdHJpbmdSZWYpd2ViVmlldy5zZWxl
Y3RGb3JtUG9wb3ZlclRpdGxlKTsKKyAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJp
bmcoKF9fYnJpZGdlIENGU3RyaW5nUmVmKXdlYlZpZXcuc2VsZWN0Rm9ybVBvcG92ZXJUaXRsZSk7
CiB9CiAKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBVSVNjcmlwdENvbnRyb2xsZXI6OnRleHRD
b250ZW50VHlwZSgpIGNvbnN0CiB7CiAgICAgVGVzdFJ1bm5lcldLV2ViVmlldyAqd2ViVmlldyA9
IFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVZpZXco
KTsKLSAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKENGU3RyaW5nUmVmKSh3
ZWJWaWV3LnRleHRDb250ZW50VHlwZUZvclRlc3RpbmcgPzogQCIiKSk7CisgICAgcmV0dXJuIEpT
U3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKChfX2JyaWRnZSBDRlN0cmluZ1JlZikod2ViVmlldy50
ZXh0Q29udGVudFR5cGVGb3JUZXN0aW5nID86IEAiIikpOwogfQogCiBKU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4gVUlTY3JpcHRDb250cm9sbGVyOjpmb3JtSW5wdXRMYWJlbCgpIGNvbnN0CiB7CiAg
ICAgVGVzdFJ1bm5lcldLV2ViVmlldyAqd2ViVmlldyA9IFRlc3RDb250cm9sbGVyOjpzaW5nbGV0
b24oKS5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVZpZXcoKTsKLSAgICByZXR1cm4gSlNTdHJpbmdD
cmVhdGVXaXRoQ0ZTdHJpbmcoKENGU3RyaW5nUmVmKXdlYlZpZXcuZm9ybUlucHV0TGFiZWwpOwor
ICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoX19icmlkZ2UgQ0ZTdHJpbmdS
ZWYpd2ViVmlldy5mb3JtSW5wdXRMYWJlbCk7CiB9CiAKIHZvaWQgVUlTY3JpcHRDb250cm9sbGVy
OjpzZWxlY3RGb3JtQWNjZXNzb3J5UGlja2VyUm93KGxvbmcgcm93SW5kZXgpCkBAIC01NzMsNyAr
NTczLDcgQEAgdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OnJlbW92ZUFsbER5bmFtaWNEaWN0aW9u
YXJpZXMoKQogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IFVJU2NyaXB0Q29udHJvbGxlcjo6c2Ny
b2xsaW5nVHJlZUFzVGV4dCgpIGNvbnN0CiB7CiAgICAgVGVzdFJ1bm5lcldLV2ViVmlldyAqd2Vi
VmlldyA9IFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5wbGF0Zm9y
bVZpZXcoKTsKLSAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKENGU3RyaW5n
UmVmKVt3ZWJWaWV3IF9zY3JvbGxpbmdUcmVlQXNUZXh0XSk7CisgICAgcmV0dXJuIEpTU3RyaW5n
Q3JlYXRlV2l0aENGU3RyaW5nKChfX2JyaWRnZSBDRlN0cmluZ1JlZilbd2ViVmlldyBfc2Nyb2xs
aW5nVHJlZUFzVGV4dF0pOwogfQogCiBKU09iamVjdFJlZiBVSVNjcmlwdENvbnRyb2xsZXI6OnBy
b3BlcnRpZXNPZkxheWVyV2l0aElEKHVpbnQ2NF90IGxheWVySUQpIGNvbnN0CmRpZmYgLS1naXQg
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9QbGF0Zm9ybVdlYlZpZXdNYWMubW0gYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL21hYy9QbGF0Zm9ybVdlYlZpZXdNYWMubW0KaW5kZXggZjZjYjJh
MDhkNjQ1NzljZDQ0NGY4MjBhMzBhNjE0OWYzODBkZmE2NS4uZGExM2U1MzRhMzQ3YzAzYjlkNzBm
YzhlZGRkMGRjYzQxNTk4NGZmZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9t
YWMvUGxhdGZvcm1XZWJWaWV3TWFjLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFj
L1BsYXRmb3JtV2ViVmlld01hYy5tbQpAQCAtMTEwLDggKzExMCw2IEBAIFBsYXRmb3JtV2ViVmll
dzo6flBsYXRmb3JtV2ViVmlldygpCiB7CiAgICAgbV93aW5kb3cucGxhdGZvcm1XZWJWaWV3ID0g
bnVsbHB0cjsKICAgICBbbV93aW5kb3cgY2xvc2VdOwotICAgIFttX3dpbmRvdyByZWxlYXNlXTsK
LSAgICBbbV92aWV3IHJlbGVhc2VdOwogfQogCiBQbGF0Zm9ybVdpbmRvdyBQbGF0Zm9ybVdlYlZp
ZXc6OmtleVdpbmRvdygpCkBAIC0xNjMsNyArMTYxLDYgQEAgdm9pZCBQbGF0Zm9ybVdlYlZpZXc6
OmFkZENocm9tZUlucHV0RmllbGQoKQogICAgIE5TVGV4dEZpZWxkICp0ZXh0RmllbGQgPSBbW05T
VGV4dEZpZWxkIGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTAwLCAyMCld
OwogICAgIHRleHRGaWVsZC50YWcgPSAxOwogICAgIFtbbV93aW5kb3cgY29udGVudFZpZXddIGFk
ZFN1YnZpZXc6dGV4dEZpZWxkXTsKLSAgICBbdGV4dEZpZWxkIHJlbGVhc2VdOwogCiAgICAgTlNW
aWV3ICp2aWV3ID0gcGxhdGZvcm1WaWV3KCk7CiAgICAgW3RleHRGaWVsZCBzZXROZXh0S2V5Vmll
dzp2aWV3XTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1Rlc3RDb250
cm9sbGVyTWFjLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvVGVzdENvbnRyb2xsZXJN
YWMubW0KaW5kZXggZjlkZDM5ZDliNzViODI0MDg3ODFmNTk0NWEwYjc5ZjQzYjI2MmVlNy4uODNj
NGM4MTkzOWNkMmY1N2E1ZThmNThmMThlNjkyOGQzYWQ4NTIwOSAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9tYWMvVGVzdENvbnRyb2xsZXJNYWMubW0KKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9tYWMvVGVzdENvbnRyb2xsZXJNYWMubW0KQEAgLTE1NSw3ICsxNTUsNyBA
QCB2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUNvbmZpZ3VyZVZpZXdGb3JUZXN0KGNvbnN0
IFRlc3RJbnZvY2F0aW9uJiB0ZXN0KQogCiBzdGF0aWMgTlNTZXQgKmFsbG93ZWRGb250RmFtaWx5
U2V0KCkKIHsKLSAgICBzdGF0aWMgTlNTZXQgKmZvbnRGYW1pbHlTZXQgPSBbW05TU2V0IHNldFdp
dGhPYmplY3RzOgorICAgIHN0YXRpYyBOU1NldCAqZm9udEZhbWlseVNldCA9IFtOU1NldCBzZXRX
aXRoT2JqZWN0czoKICAgICAgICAgQCJBaGVtIiwKICAgICAgICAgQCJBbCBCYXlhbiIsCiAgICAg
ICAgIEAiQW1lcmljYW4gVHlwZXdyaXRlciIsCkBAIC0yNzcsMTYgKzI3NywxNiBAQCBzdGF0aWMg
TlNTZXQgKmFsbG93ZWRGb250RmFtaWx5U2V0KCkKICAgICAgICAgQCJXaW5nZGluZ3MiLAogICAg
ICAgICBAIlphcGYgRGluZ2JhdHMiLAogICAgICAgICBAIlphcGZpbm8iLAotICAgICAgICBuaWxd
IHJldGFpbl07CisgICAgICAgIG5pbF07CiAKICAgICByZXR1cm4gZm9udEZhbWlseVNldDsKIH0K
IAogc3RhdGljIE5TU2V0ICpzeXN0ZW1IaWRkZW5Gb250RmFtaWx5U2V0KCkKIHsKLSAgICBzdGF0
aWMgTlNTZXQgKmZvbnRGYW1pbHlTZXQgPSBbW05TU2V0IHNldFdpdGhPYmplY3RzOgorICAgIHN0
YXRpYyBOU1NldCAqZm9udEZhbWlseVNldCA9IFtOU1NldCBzZXRXaXRoT2JqZWN0czoKICAgICAg
ICAgQCIuTHVjaWRhR3JhbmRlVUkiLAotICAgICAgICBuaWxdIHJldGFpbl07CisgICAgICAgIG5p
bF07CiAKICAgICByZXR1cm4gZm9udEZhbWlseVNldDsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvbWFjL1dlYktpdFRlc3RSdW5uZXJEcmFnZ2luZ0luZm8ubW0gYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL21hYy9XZWJLaXRUZXN0UnVubmVyRHJhZ2dpbmdJbmZvLm1tCmlu
ZGV4IDU2NWRiMmYxMjRmOGYyYzMyNDhlOWMzMjFiY2M4ZTljOGRkY2I4ZTIuLmJjZWViZWNlMWJm
NDY3ODA1YWI3M2FjMWU1NTY2ZTQyMjRiNDAwMmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvbWFjL1dlYktpdFRlc3RSdW5uZXJEcmFnZ2luZ0luZm8ubW0KKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9tYWMvV2ViS2l0VGVzdFJ1bm5lckRyYWdnaW5nSW5mby5tbQpAQCAt
NDEsMjMgKzQxLDE1IEBAIC0gKGlkKWluaXRXaXRoSW1hZ2U6KE5TSW1hZ2UgKilpbWFnZSBvZmZz
ZXQ6KE5TU2l6ZSlvZmZzZXQgcGFzdGVib2FyZDooTlNQYXN0ZWJvCiAgICAgaWYgKCFzZWxmKQog
ICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgX2RyYWdnZWRJbWFnZSA9IFtpbWFnZSByZXRhaW5d
OwotICAgIF9kcmFnZ2luZ1Bhc3RlYm9hcmQgPSBbcGFzdGVib2FyZCByZXRhaW5dOwotICAgIF9k
cmFnZ2luZ1NvdXJjZSA9IFtzb3VyY2UgcmV0YWluXTsKKyAgICBfZHJhZ2dlZEltYWdlID0gaW1h
Z2U7CisgICAgX2RyYWdnaW5nUGFzdGVib2FyZCA9IHBhc3RlYm9hcmQ7CisgICAgX2RyYWdnaW5n
U291cmNlID0gc291cmNlOwogICAgIF9vZmZzZXQgPSBvZmZzZXQ7CiAgICAgCiAgICAgcmV0dXJu
IHNlbGY7CiB9CiAKLS0gKHZvaWQpZGVhbGxvYwotewotICAgIFtfZHJhZ2dlZEltYWdlIHJlbGVh
c2VdOwotICAgIFtfZHJhZ2dpbmdQYXN0ZWJvYXJkIHJlbGVhc2VdOwotICAgIFtfZHJhZ2dpbmdT
b3VyY2UgcmVsZWFzZV07Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCi0tIChOU1dpbmRvdyAq
KWRyYWdnaW5nRGVzdGluYXRpb25XaW5kb3cgCistIChOU1dpbmRvdyAqKWRyYWdnaW5nRGVzdGlu
YXRpb25XaW5kb3cKIHsKICAgICByZXR1cm4gW1Rlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5t
YWluV2ViVmlldygpLT5wbGF0Zm9ybVZpZXcoKSB3aW5kb3ddOwogfQpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvV2ViS2l0VGVzdFJ1bm5lclBhc3RlYm9hcmQubW0gYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9XZWJLaXRUZXN0UnVubmVyUGFzdGVib2FyZC5tbQpp
bmRleCBhYmNkZjQxNDc1MTdlY2JlNWZjNWRiZjU3YzY1YWIxZDRhZmZiODRiLi4xYmExOTE4NmM5
ODkwNzM4NDVkOGY5ODEyNWVjMzViY2U3NmVmZTM5IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL21hYy9XZWJLaXRUZXN0UnVubmVyUGFzdGVib2FyZC5tbQorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL21hYy9XZWJLaXRUZXN0UnVubmVyUGFzdGVib2FyZC5tbQpAQCAtNTks
NyArNTksNiBAQCArIChOU1Bhc3RlYm9hcmQgKilfcGFzdGVib2FyZFdpdGhOYW1lOihOU1N0cmlu
ZyAqKW5hbWUKICAgICAgICAgcmV0dXJuIHBhc3RlYm9hcmQ7CiAgICAgcGFzdGVib2FyZCA9IFtb
TG9jYWxQYXN0ZWJvYXJkIGFsbG9jXSBpbml0V2l0aE5hbWU6bmFtZV07CiAgICAgW2xvY2FsUGFz
dGVib2FyZHMgc2V0T2JqZWN0OnBhc3RlYm9hcmQgZm9yS2V5Om5hbWVdOwotICAgIFtwYXN0ZWJv
YXJkIHJlbGVhc2VdOwogICAgIHJldHVybiBwYXN0ZWJvYXJkOwogfQogCkBAIC03MSw3ICs3MCw2
IEBAIC0gKHZvaWQpX3VwZGF0ZVR5cGVDYWNoZUlmTmVlZGVkCiAKICsgKHZvaWQpcmVsZWFzZUxv
Y2FsUGFzdGVib2FyZHMKIHsKLSAgICBbbG9jYWxQYXN0ZWJvYXJkcyByZWxlYXNlXTsKICAgICBs
b2NhbFBhc3RlYm9hcmRzID0gbmlsOwogfQogCkBAIC0xMDQsMTUgKzEwMiw2IEBAIC0gKGlkKWlu
aXRXaXRoTmFtZTooTlNTdHJpbmcgKiluYW1lCiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKLS0gKHZv
aWQpZGVhbGxvYwotewotICAgIFt0eXBlc0FycmF5IHJlbGVhc2VdOwotICAgIFt0eXBlc1NldCBy
ZWxlYXNlXTsKLSAgICBbZGF0YUJ5VHlwZSByZWxlYXNlXTsKLSAgICBbcGFzdGVib2FyZE5hbWUg
cmVsZWFzZV07Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCiAtIChOU1N0cmluZyAqKW5hbWUK
IHsKICAgICByZXR1cm4gcGFzdGVib2FyZE5hbWU7CkBAIC0xNDEsNyArMTMwLDYgQEAgLSAoTlNJ
bnRlZ2VyKWFkZFR5cGVzOihOU0FycmF5ICopbmV3VHlwZXMgb3duZXI6KGlkKW5ld093bmVyCiAg
ICAgICAgICAgICBzZXRUeXBlID0gW3R5cGUgY29weV07CiAgICAgICAgICAgICBbdHlwZXNBcnJh
eSBhZGRPYmplY3Q6c2V0VHlwZV07CiAgICAgICAgICAgICBbdHlwZXNTZXQgYWRkT2JqZWN0OnNl
dFR5cGVdOwotICAgICAgICAgICAgW3NldFR5cGUgcmVsZWFzZV07CiAgICAgICAgIH0KICAgICAg
ICAgaWYgKG5ld093bmVyICYmIFtuZXdPd25lciByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KHBhc3RlYm9hcmQ6cHJvdmlkZURhdGFGb3JUeXBlOildKQogICAgICAgICAgICAgW25ld093bmVy
IHBhc3RlYm9hcmQ6c2VsZiBwcm92aWRlRGF0YUZvclR5cGU6c2V0VHlwZV07CmRpZmYgLS1naXQg
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9XZWJLaXRUZXN0UnVubmVyV2luZG93Lm1tIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvV2ViS2l0VGVzdFJ1bm5lcldpbmRvdy5tbQppbmRl
eCBiNDU5OTVhMWFlYzI2MTI2NWQ1ZmM4ZjkzYWIzMzQzMzA0MWE0MTcxLi5hNWExODQzMzZlNjlm
YWU2N2I0YjVlZjVmMjZlN2JhYWU2ZDVhNTFiIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL21hYy9XZWJLaXRUZXN0UnVubmVyV2luZG93Lm1tCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvbWFjL1dlYktpdFRlc3RSdW5uZXJXaW5kb3cubW0KQEAgLTU0LDcgKzU0LDYgQEAg
LSAodm9pZClkZWFsbG9jCiB7CiAgICAgYWxsV2luZG93cy5yZW1vdmVGaXJzdChzZWxmKTsKICAg
ICBBU1NFUlQoIWFsbFdpbmRvd3MuY29udGFpbnMoc2VsZikpOwotICAgIFtzdXBlciBkZWFsbG9j
XTsKIH0KIAogLSAoQk9PTClpc0tleVdpbmRvdwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9tYWMvbWFpbi5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL21haW4ubW0K
aW5kZXggYzExMmNiMTFjMDM1OTQxOTViOGVmZjVlNzllMzU1YTBlZTYzMmZhZi4uOWI1YTlmOTNh
YzczZDhkZGMzY2M0MWEwZThhYjVmN2E4NTZkYTY1YyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9tYWMvbWFpbi5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9t
YWluLm1tCkBAIC01Myw3ICs1Myw3IEBAIHN0YXRpYyB2b2lkIHNldERlZmF1bHRzVG9Db25zaXN0
ZW50VmFsdWVzRm9yVGVzdGluZygpCiBzdGF0aWMgdm9pZCBkaXNhYmxlQXBwTmFwSW5VSVByb2Nl
c3MoKQogewogICAgIE5TQWN0aXZpdHlPcHRpb25zIG9wdGlvbnMgPSAoTlNBY3Rpdml0eVVzZXJJ
bml0aWF0ZWRBbGxvd2luZ0lkbGVTeXN0ZW1TbGVlcCB8IE5TQWN0aXZpdHlMYXRlbmN5Q3JpdGlj
YWwpICYgfihOU0FjdGl2aXR5U3VkZGVuVGVybWluYXRpb25EaXNhYmxlZCB8IE5TQWN0aXZpdHlB
dXRvbWF0aWNUZXJtaW5hdGlvbkRpc2FibGVkKTsKLSAgICBzdGF0aWMgaWQgYXNzZXJ0aW9uID0g
W1tbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10gYmVnaW5BY3Rpdml0eVdpdGhPcHRpb25zOm9w
dGlvbnMgcmVhc29uOkAiV2ViS2l0VGVzdFJ1bm5lciBzaG91bGQgbm90IGJlIHN1YmplY3QgdG8g
cHJvY2VzcyBzdXBwcmVzc2lvbiJdIHJldGFpbl07CisgICAgc3RhdGljIGlkIGFzc2VydGlvbiA9
IFtbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10gYmVnaW5BY3Rpdml0eVdpdGhPcHRpb25zOm9w
dGlvbnMgcmVhc29uOkAiV2ViS2l0VGVzdFJ1bm5lciBzaG91bGQgbm90IGJlIHN1YmplY3QgdG8g
cHJvY2VzcyBzdXBwcmVzc2lvbiJdOwogICAgIEFTU0VSVF9VTlVTRUQoYXNzZXJ0aW9uLCBhc3Nl
cnRpb24pOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348746</attachid>
            <date>2018-09-02 12:22:08 -0700</date>
            <delta_ts>2018-09-03 10:05:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189228-20180902122208.patch</filename>
            <type>text/plain</type>
            <size>43216</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1NTg5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNWE0MzNhZWVmNTA2YjZmNDY1NTYwMTNiZmJiNDM2MWJm
MjE5YWMxYS4uOWM5NDQ0Y2EzYjNlOWRjMmM0MDA5M2MwMjkzNGFlNjU2NzJlM2JmYyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEy
OCBAQAorMjAxOC0wOS0wMiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgW0NvY29hXSBUdXJuIG9uIEFSQyBmb3IgV2ViS2l0VGVzdFJ1bm5lcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5MjI4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0UnVubmVyU2hhcmVkL0V2
ZW50U2VyaWFsaXphdGlvbi9tYWMvRXZlbnRTZXJpYWxpemVyTWFjLm1tOgorICAgICAgICAoK1tF
dmVudFNlcmlhbGl6ZXIgZGljdGlvbmFyeUZvckV2ZW50OnJlbGF0aXZlVG9UaW1lOl0pOiBSZW1v
dmVkIGF1dG9yZWxlYXNlLgorCisgICAgICAgICogVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9MYXlv
dXRUZXN0U3BlbGxDaGVja2VyLm1tOgorICAgICAgICAoLVtMYXlvdXRUZXN0U3BlbGxDaGVja2Vy
IHNldFJlc3VsdHNGcm9tSlNPYmplY3Q6aW5Db250ZXh0Ol0pOiBSZW1vdmVkIGF1dG9yZWxlYXNl
LgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29u
ZmlnOiBBZGRlZCBDTEFOR19FTkFCTEVfT0JKQ19BUkMuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlcklPUy5tbToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmFjY2Vzc2libGVFbGVtZW50
QnlJZCk6IFVzZSBhIF9fYnJpZGdlIGNhc3QuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJJT1MubW06CisgICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjppc0VxdWFsKTogRGl0dG8uCisKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50SU9TLm1tOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50KTogUmVtb3ZlZCByZXRhaW4uCisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6On5BY2Nlc3NpYmlsaXR5VUlFbGVtZW50KTogUmVtb3ZlZCByZWxl
YXNlLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZW1vdmVOb3RpZmlj
YXRpb25MaXN0ZW5lcik6IFJlbW92ZWQgcmVsZWFzZS4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6bGluZVRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIpOiBVc2UgYSBf
X2JyaWRnZSBjYXN0LgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0
TWFya2VyUmFuZ2VGb3JFbGVtZW50KTogRGl0dG8uCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUxlbmd0aCk6IERpdHRvLgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmV2aW91c1RleHRNYXJrZXIpOiBEaXR0by4KKyAg
ICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFRleHRNYXJrZXIpOiBEaXR0
by4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nRm9yVGV4dE1h
cmtlclJhbmdlKTogRGl0dG8uCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMpOiBEaXR0by4KKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6c3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKTogRGl0
dG8uCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmVuZFRleHRNYXJrZXJG
b3JUZXh0TWFya2VyUmFuZ2UpOiBEaXR0by4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6YWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKTogRGl0dG8uCisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZU1hdGNoZXNU
ZXh0TmVhck1hcmtlcnMpOiBEaXR0by4KKyAgICAgICAgKFdUUjo6X0NHUGF0aEVudW1lcmF0aW9u
SXRlcmF0aW9uKTogRGl0dG8uCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnBhdGhEZXNjcmlwdGlvbiBjb25zdCk6IERpdHRvLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIu
bW06CisgICAgICAgICgtW0FjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyIGRlYWxsb2Nd
KTogUmVtb3ZlZCBbc3VwZXIgZGVhbGxvY10uCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tOgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KTog
UmVtb3ZlZCByZXRhaW4uCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6On5B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50KTogUmVtb3ZlZCByZWxlYXNlLgorICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5lcik6IFJlbW92
ZWQgcmVsZWFzZS4KKyAgICAgICAgKFdUUjo6Y3JlYXRlSlNTdHJpbmdSZWYpOiBSZW1vdmVkIGF1
dG9yZWxlYXNlLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJv
bGxlckNvY29hLm1tOgorICAgICAgICAoV1RSOjppbml0aWFsaXplV2ViVmlld0NvbmZpZ3VyYXRp
b24pOiBSZW1vdmVkIHJlbGVhc2UuCisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpjb2Nv
YVBsYXRmb3JtSW5pdGlhbGl6ZSk6IFJlbW92ZWQgcmVsZWFzZS4KKyAgICAgICAgKFdUUjo6VGVz
dENvbnRyb2xsZXI6OnBsYXRmb3JtQ3JlYXRlT3RoZXJQYWdlKTogUmVtb3ZlZCBhdXRvcmVsZWFz
ZS4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdFJ1bm5lcldLV2ViVmll
dy5tbToKKyAgICAgICAgKC1bVGVzdFJ1bm5lcldLV2ViVmlldyBkZWFsbG9jXSk6IFJlbW92ZWQg
W3N1cGVyIGRlYWxsb2NdIGFuZCBhbHNvIG1hbnkKKyAgICAgICAgY2FzZXMgb2Ygc2V0dGluZyBw
cm9wZXJ0aWVzIHRvIG5pbCB0aGF0IHdlcmUgb25seSBwcmVzZW50IGZvciBtZW1vcnkKKyAgICAg
ICAgbWFuYWdlbWVudCByZWFzb25zLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9pb3Mv
R2VuZXJhdGVkVG91Y2hlc0RlYnVnV2luZG93Lm1tOgorICAgICAgICAoLVtHZW5lcmF0ZWRUb3Vj
aGVzRGVidWdXaW5kb3cgZGVhbGxvY10pOiBSZW1vdmVkIHJlbGVhc2UgYW5kIFtzdXBlciBkZWFs
bG9jXS4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvaW9zL0hJREV2ZW50R2VuZXJhdG9y
Lm1tOgorICAgICAgICAoLVtISURFdmVudEdlbmVyYXRvciBkZWFsbG9jXSk6IERlbGV0ZWQuCisg
ICAgICAgICgtW0hJREV2ZW50R2VuZXJhdG9yIF9zZW5kTWFya2VySElERXZlbnRXaXRoQ29tcGxl
dGlvbkJsb2NrOl0pOiBSZW1vdmVkCisgICAgICAgIEJsb2NrX2NvcHkuCisgICAgICAgICgtW0hJ
REV2ZW50R2VuZXJhdG9yIG1hcmtlckV2ZW50UmVjZWl2ZWQ6XSk6IFJlbW92ZWQgQmxvY2tfcmVs
ZWFzZS4KKyAgICAgICAgKC1bSElERXZlbnRHZW5lcmF0b3IgaW50ZXJwb2xhdGVkRXZlbnRzOl0p
OiBSZW1vdmVkIHJlbGVhc2UuCisgICAgICAgICgtW0hJREV2ZW50R2VuZXJhdG9yIHNlbmRFdmVu
dFN0cmVhbTpjb21wbGV0aW9uQmxvY2s6XSk6IFJlbW92ZWQgYXV0b3JlbGVhc2UuCisKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL2lvcy9QbGF0Zm9ybVdlYlZpZXdJT1MubW06CisgICAgICAg
ICgtW1dlYktpdFRlc3RSdW5uZXJXaW5kb3cgZGVhbGxvY10pOiBSZW1vdmVkIFtzdXBlciBkZWFs
bG9jXS4KKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3OjpQbGF0Zm9ybVdlYlZpZXcpOiBS
ZW1vdmVkIHJlbGVhc2UuCisgICAgICAgIChXVFI6OlBsYXRmb3JtV2ViVmlldzo6flBsYXRmb3Jt
V2ViVmlldyk6IFJlbW92ZWQgcmVsZWFzZS4KKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3
OjphZGRDaHJvbWVJbnB1dEZpZWxkKTogUmVtb3ZlZCByZWxlYXNlLgorICAgICAgICAoV1RSOjpQ
bGF0Zm9ybVdlYlZpZXc6OnJlbW92ZUNocm9tZUlucHV0RmllbGQpOiBSZW1vdmVkIHJlbGVhc2Uu
CisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2lvcy9UZXN0Q29udHJvbGxlcklPUy5tbToK
KyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmluaXRpYWxpemVJbmplY3RlZEJ1bmRsZVBh
dGgpOiBVc2UgX19icmlkZ2UgY2FzdC4KKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6Omlu
aXRpYWxpemVUZXN0UGx1Z2luRGlyZWN0b3J5KTogRGl0dG8uCisKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW06CisgICAgICAgIChXVFI6OlVJ
U2NyaXB0Q29udHJvbGxlcjo6YWNjZXNzaWJpbGl0eVNwZWFrU2VsZWN0aW9uQ29udGVudCBjb25z
dCk6CisgICAgICAgIFVzZSBfX2JyaWRnZSBjYXN0LgorICAgICAgICAoV1RSOjpVSVNjcmlwdENv
bnRyb2xsZXI6OmVudGVyVGV4dCk6IERpdHRvLgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRy
b2xsZXI6OnNlbGVjdEZvcm1Qb3BvdmVyVGl0bGUgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdU
Ujo6VUlTY3JpcHRDb250cm9sbGVyOjp0ZXh0Q29udGVudFR5cGUgY29uc3QpOiBEaXR0by4KKyAg
ICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjpmb3JtSW5wdXRMYWJlbCBjb25zdCk6IERp
dHRvLgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6OnNjcm9sbGluZ1RyZWVBc1Rl
eHQgY29uc3QpOiBEaXR0by4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvbWFjL1BsYXRm
b3JtV2ViVmlld01hYy5tbToKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3Ojp+UGxhdGZv
cm1XZWJWaWV3KTogUmVtb3ZlZCByZWxlYXNlLgorICAgICAgICAoV1RSOjpQbGF0Zm9ybVdlYlZp
ZXc6OmFkZENocm9tZUlucHV0RmllbGQpOiBSZW1vdmVkIHJlbGVhc2UuCisKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL21hYy9UZXN0Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKFdUUjo6
YWxsb3dlZEZvbnRGYW1pbHlTZXQpOiBSZW1vdmVkIHJldGFpbi4KKyAgICAgICAgKFdUUjo6c3lz
dGVtSGlkZGVuRm9udEZhbWlseVNldCk6IFJlbW92ZWQgcmV0YWluLgorCisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9tYWMvV2ViS2l0VGVzdFJ1bm5lckRyYWdnaW5nSW5mby5tbToKKyAgICAg
ICAgKC1bV2ViS2l0VGVzdFJ1bm5lckRyYWdnaW5nSW5mbyBkcmFnZ2luZ0Rlc3RpbmF0aW9uV2lu
ZG93XSk6IFJlbW92ZWQgcmV0YWluLgorICAgICAgICAoLVtXZWJLaXRUZXN0UnVubmVyRHJhZ2dp
bmdJbmZvIGRlYWxsb2NdKTogRGVsZXRlZC4KKworCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9tYWMvV2ViS2l0VGVzdFJ1bm5lclBhc3RlYm9hcmQubW06CisKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL21hYy9XZWJLaXRUZXN0UnVubmVyUGFzdGVib2FyZC5tbToKKyAgICAgICAgKCtb
V2ViS2l0VGVzdFJ1bm5lclBhc3RlYm9hcmQgX3Bhc3RlYm9hcmRXaXRoTmFtZTpdKTogUmVtb3Zl
ZCByZWxlYXNlLgorICAgICAgICAoK1tXZWJLaXRUZXN0UnVubmVyUGFzdGVib2FyZCByZWxlYXNl
TG9jYWxQYXN0ZWJvYXJkc10pOiBSZW1vdmVkIHJlbGVhc2UuCisgICAgICAgIE1ldGhvZCBuYW1l
IGlzIHN0aWxsIE9LIGJlY2F1c2Ugc2V0dGluZyBsb2NhbFBhc3RlYm9hcmRzIHRvIG5pbCB3aWxs
CisgICAgICAgIHN0aWxsIHJlbGVhc2UgdGhlbS4KKyAgICAgICAgKCtbTlNQYXN0ZWJvYXJkIHN1
cGVyQWxsb2NdKTogQWRkZWQuIEhlbHBlciBzbyB0aGF0IExvY2FsUGFzdGVib2FyZCBjYW4KKyAg
ICAgICAgYnlwYXNzICtbTlNQYXN0ZWJvYXJkIGFsbG9jXS4KKyAgICAgICAgKCtbTlNQYXN0ZWJv
YXJkIHN1cGVyQWxsb2NXaXRoWm9uZTpdKTogRGl0dG8uCisgICAgICAgICgrW0xvY2FsUGFzdGVi
b2FyZCBhbGxvY10pOiBDYWxsIHN1cGVyQWxsb2MgaW5zdGVhZCBvZiBjbGFzc19jcmVhdGVJbnN0
YW5jZS4KKyAgICAgICAgVGhpcyBpcyBhIGRpZmZlcmVudCB3YXkgdG8gYWNoaWV2ZSB0aGUgImJ5
cGFzcyBOU1Bhc3RlYm9hcmQiIGJlaGF2aW9yIHdlIG5lZWQuCisgICAgICAgICgrW0xvY2FsUGFz
dGVib2FyZCBhbGxvY1dpdGhab25lOl0pOiBBZGRlZC4gQ2FsbHMgc3VwZXJBbGxvY1dpdGhab25l
OiBmb3IgdGhlCisgICAgICAgIHNhbWUgcmVhc29uIGFzIGFib3ZlLiBOZWVkZWQgYmVjYXVzZSwg
YXQgbGVhc3QgYXQgdGhpcyB0aW1lLCArW05TT2JqZWN0IGFsbG9jXQorICAgICAgICBjYWxscyAr
YWxsb2NXaXRoWm9uZTogc28gd2UgaGF2ZSB0byBvdmVycmlkZSBib3RoLgorICAgICAgICAoLVtM
b2NhbFBhc3RlYm9hcmQgZGVhbGxvY10pOiBEZWxldGVkLgorICAgICAgICAoLVtMb2NhbFBhc3Rl
Ym9hcmQgYWRkVHlwZXM6b3duZXI6XSk6IFJlbW92ZWQgcmVsZWFzZS4KKworICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvbWFjL1dlYktpdFRlc3RSdW5uZXJXaW5kb3cubW06CisgICAgICAgICgt
W1dlYktpdFRlc3RSdW5uZXJXaW5kb3cgZGVhbGxvY10pOiBSZW1vdmVkIFtzdXBlciBkZWFsbG9j
XS4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvbWFjL21haW4ubW06CisgICAgICAgIChk
aXNhYmxlQXBwTmFwSW5VSVByb2Nlc3MpOiBSZW1vdmVkIHJldGFpbi4KKwogMjAxOC0wOS0wMSAg
TWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dQ
RV0gMi4yMS45MSBmYWlscyB0byBidWlsZCB3aXRoIEVOQUJMRV9NSU5JQlJPV1NFUgpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9FdmVudFNlcmlhbGl6YXRpb24vbWFjL0V2ZW50
U2VyaWFsaXplck1hYy5tbSBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvRXZlbnRTZXJpYWxpemF0
aW9uL21hYy9FdmVudFNlcmlhbGl6ZXJNYWMubW0KaW5kZXggMjNhZWIxNWI0ZDZkOWU0Yjk4MWNj
NDY1ZTgzNWVhYTQzYjgwNTcyMC4uN2JiNjJiNGQ2ZmRhYTY2MTRjNTMxZjhiYjEwZjBkZTRmNmMz
ZmMzMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9FdmVudFNlcmlhbGl6YXRp
b24vbWFjL0V2ZW50U2VyaWFsaXplck1hYy5tbQorKysgYi9Ub29scy9UZXN0UnVubmVyU2hhcmVk
L0V2ZW50U2VyaWFsaXphdGlvbi9tYWMvRXZlbnRTZXJpYWxpemVyTWFjLm1tCkBAIC0xOTgsNyAr
MTk4LDcgQEAgKyAoTlNEaWN0aW9uYXJ5ICopZGljdGlvbmFyeUZvckV2ZW50OihDR0V2ZW50UmVm
KXJhd0V2ZW50IHJlbGF0aXZlVG9UaW1lOihDR0V2ZW4KICAgICBSZXRhaW5QdHI8Q0dFdmVudFJl
Zj4gcGxhaW5FdmVudCA9IGFkb3B0Q0YoQ0dFdmVudENyZWF0ZShOVUxMKSk7CiAgICAgQ0dFdmVu
dFJlZiByYXdQbGFpbkV2ZW50ID0gcGxhaW5FdmVudC5nZXQoKTsKIAotICAgIE5TTXV0YWJsZURp
Y3Rpb25hcnkgKmRpY3QgPSBbW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSBhdXRv
cmVsZWFzZV07CisgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqZGljdCA9IFtbTlNNdXRhYmxlRGlj
dGlvbmFyeSBhbGxvY10gaW5pdF07CiAKICAgICBGT1JfRUFDSF9DR0VWRU5UX0lOVEVHRVJfRklF
TEQoTE9BRF9JTlRFR0VSX0ZJRUxEX0ZST01fRVZFTlQpOwogICAgIEZPUl9FQUNIX0NHRVZFTlRf
RE9VQkxFX0ZJRUxEKExPQURfRE9VQkxFX0ZJRUxEX0ZST01fRVZFTlQpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9MYXlvdXRUZXN0U3BlbGxDaGVja2VyLm1tIGIv
VG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9MYXlvdXRUZXN0U3BlbGxDaGVja2VyLm1tCmlu
ZGV4IDIzMWFiNTUyOGU0ZDk1NTI2ZjcxYWNiYWM2ZTg5MmUxYzdhYjdlNDMuLmY5MTMxYWYyMTI4
OThiNTM4YjE3YjlmZmMwNzExYTdkNTRlYzhjY2EgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSdW5u
ZXJTaGFyZWQvY29jb2EvTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5tbQorKysgYi9Ub29scy9UZXN0
UnVubmVyU2hhcmVkL2NvY29hL0xheW91dFRlc3RTcGVsbENoZWNrZXIubW0KQEAgLTI1MSw3ICsy
NTEsNyBAQCAtICh2b2lkKXNldFJlc3VsdHNGcm9tSlNPYmplY3Q6KEpTT2JqZWN0UmVmKXJlc3Vs
dHNPYmplY3QgaW5Db250ZXh0OihKU0NvbnRleHRSZQogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICBKU1Byb3BlcnR5TmFtZUFycmF5UmVsZWFzZShkZXRhaWxzT2JqZWN0UHJvcGVy
dGllcyk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBbcmVzdWx0c0ZvcldvcmQgYWRkT2Jq
ZWN0OltbW0xheW91dFRlc3RUZXh0Q2hlY2tpbmdSZXN1bHQgYWxsb2NdIGluaXRXaXRoVHlwZTpu
c1RleHRDaGVja2luZ1R5cGUoV1RGTW92ZSh0eXBlVmFsdWUpKSByYW5nZTpOU01ha2VSYW5nZShm
cm9tVmFsdWUsIHRvVmFsdWUgLSBmcm9tVmFsdWUpIHJlcGxhY2VtZW50OihfX2JyaWRnZSBOU1N0
cmluZyAqKXJlcGxhY2VtZW50VGV4dC5nZXQoKSBkZXRhaWxzOmRldGFpbHMuZ2V0KCldIGF1dG9y
ZWxlYXNlXV07CisgICAgICAgICAgICBbcmVzdWx0c0ZvcldvcmQgYWRkT2JqZWN0OltbTGF5b3V0
VGVzdFRleHRDaGVja2luZ1Jlc3VsdCBhbGxvY10gaW5pdFdpdGhUeXBlOm5zVGV4dENoZWNraW5n
VHlwZShXVEZNb3ZlKHR5cGVWYWx1ZSkpIHJhbmdlOk5TTWFrZVJhbmdlKGZyb21WYWx1ZSwgdG9W
YWx1ZSAtIGZyb21WYWx1ZSkgcmVwbGFjZW1lbnQ6KF9fYnJpZGdlIE5TU3RyaW5nICopcmVwbGFj
ZW1lbnRUZXh0LmdldCgpIGRldGFpbHM6ZGV0YWlscy5nZXQoKV1dOwogICAgICAgICB9CiAgICAg
ICAgIGF1dG8gY2ZUZXh0VG9DaGVjayA9IGFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgdGV4dFRvQ2hlY2spKTsKICAgICAgICAgW3Jlc3VsdHMgc2V0T2Jq
ZWN0OnJlc3VsdHNGb3JXb3JkLmdldCgpIGZvcktleTooX19icmlkZ2UgTlNTdHJpbmcgKiljZlRl
eHRUb0NoZWNrLmdldCgpXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvQ29u
ZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZpZyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvQ29uZmln
dXJhdGlvbnMvQmFzZS54Y2NvbmZpZwppbmRleCA2ZWZlZGE3NTJkYTM4MjRiYzFlNzdjYjlmZjkw
Zjk2M2E0OTJkYjU2Li5mMTg5NmQ4ZWU0MWQyYmY1Nzc5NTkwZmM5ZDRjOTk5MjA2NzQ2NWQ4IDEw
MDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0NvbmZpZ3VyYXRpb25zL0Jhc2UueGNj
b25maWcKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Db25maWd1cmF0aW9ucy9CYXNlLnhj
Y29uZmlnCkBAIC0zMCw2ICszMCw3IEBAIFVTRV9JTlRFUk5BTF9TREtfUmVsZWFzZSA9ICQoSEFW
RV9JTlRFUk5BTF9TREspOwogCiBDTEFOR19DWFhfTEFOR1VBR0VfU1RBTkRBUkQgPSBnbnUrKzE0
OwogQ0xBTkdfQ1hYX0xJQlJBUlkgPSBsaWJjKys7CitDTEFOR19FTkFCTEVfT0JKQ19BUkMgPSBZ
RVM7CiBDTEFOR19FTkFCTEVfT0JKQ19XRUFLID0gWUVTOwogQ0xBTkdfV0FSTl9CTE9DS19DQVBU
VVJFX0FVVE9SRUxFQVNJTkcgPSBZRVM7CiBDTEFOR19XQVJOX0NYWDBYX0VYVEVOU0lPTlMgPSBO
TzsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9z
L0FjY2Vzc2liaWxpdHlDb250cm9sbGVySU9TLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJJT1MubW0KaW5kZXggMDlm
YTJiY2ViOWFjNGFiYzE3YzNkZjU1ZmJmNjk2OTQ1Y2JhODIxYS4uZjE3OTZmMmE1MDc1MWM3MzQ1
M2UxNWM3OTllMTcwNmJhOWUyOGI2MiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJJT1MubW0KKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXJJT1MubW0KQEAgLTkzLDcgKzkzLDcgQEAgc3RhdGljIGlkIGZpbmRBY2Nlc3NpYmxl
T2JqZWN0QnlJZChpZCBvYmosIE5TU3RyaW5nICppZEF0dHJpYnV0ZSkKIFJlZlB0cjxBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6YWNjZXNzaWJsZUVsZW1l
bnRCeUlkKEpTU3RyaW5nUmVmIGlkQXR0cmlidXRlKQogewogICAgIFdLQnVuZGxlUGFnZVJlZiBw
YWdlID0gSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLnBhZ2UoKS0+cGFnZSgpOwotICAgIGlk
IHJvb3QgPSBzdGF0aWNfY2FzdDxQbGF0Zm9ybVVJRWxlbWVudD4oV0tBY2Nlc3NpYmlsaXR5Um9v
dE9iamVjdChwYWdlKSk7CisgICAgaWQgcm9vdCA9IChfX2JyaWRnZSBQbGF0Zm9ybVVJRWxlbWVu
dClXS0FjY2Vzc2liaWxpdHlSb290T2JqZWN0KHBhZ2UpOwogCiAgICAgaWQgcmVzdWx0ID0gZmlu
ZEFjY2Vzc2libGVPYmplY3RCeUlkKHJvb3QsIFtOU1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdS
ZWY6aWRBdHRyaWJ1dGVdKTsKICAgICBpZiAocmVzdWx0KQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJJ
T1MubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlcklPUy5tbQppbmRleCAxZjEwN2NlNzlkN2U0M2I4ZDgzMDgwOGQzMTFk
ZmM3YWI2OGE0MDE1Li5mNzU4MWU1M2U5ZDU0NjA1YjAzMGE0MzNiN2I0ZTY1ODUxYzU3ZTZhIDEw
MDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlcklPUy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcklPUy5tbQpAQCAtMjksNyAr
MjksNyBAQCBuYW1lc3BhY2UgV1RSIHsKIAogYm9vbCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6
aXNFcXVhbChBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogb3RoZXIpCiB7Ci0gICAgcmV0dXJuIFso
aWQpcGxhdGZvcm1UZXh0TWFya2VyKCkgaXNFcXVhbDooaWQpb3RoZXItPnBsYXRmb3JtVGV4dE1h
cmtlcigpXTsKKyAgICByZXR1cm4gWyhfX2JyaWRnZSBpZClwbGF0Zm9ybVRleHRNYXJrZXIoKSBp
c0VxdWFsOihfX2JyaWRnZSBpZClvdGhlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0gYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9T
Lm1tCmluZGV4IGM1ZTVlNmMwMzJlMjljNGNmMWM0MjgyZDRlNDk2OTgyMGExZDJjZTcuLmI2YWZj
ODU0Y2RiZjgwYmE2YzJkMWM3N2NiY2JkMTEwMDQyMTkzN2QgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJ
T1MubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbQpAQCAtMTQ2LDggKzE0Niw2IEBAIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoUGxhdGZvcm1VSUVsZW1lbnQgZWxl
bWVudCkKICAgICA6IG1fZWxlbWVudChlbGVtZW50KQogICAgICwgbV9ub3RpZmljYXRpb25IYW5k
bGVyKDApCiB7Ci0gICAgLy8gRklYTUU6IGFwQHdlYmtpdC5vcmcgc2F5cyBPYmpDIG9iamVjdHMg
bmVlZCB0byBiZSBDRlJldGFpbmVkL0NGUmVsZWFzZSB0byBiZSBHQy1jb21wbGlhbnQgb24gdGhl
IG1hYy4KLSAgICBbbV9lbGVtZW50IHJldGFpbl07CiB9CiAKIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoY29uc3QgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCYg
b3RoZXIpCkBAIC0xNTUsMTIgKzE1MywxMCBAQCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50KGNvbnN0IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQmIG90aAogICAg
ICwgbV9lbGVtZW50KG90aGVyLm1fZWxlbWVudCkKICAgICAsIG1fbm90aWZpY2F0aW9uSGFuZGxl
cigwKQogewotICAgIFttX2VsZW1lbnQgcmV0YWluXTsKIH0KIAogQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6fkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoKQogewotICAgIFttX2VsZW1lbnQgcmVsZWFz
ZV07CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNFcXVhbChBY2Nlc3NpYmls
aXR5VUlFbGVtZW50KiBvdGhlckVsZW1lbnQpCkBAIC05NzYsNyArOTcyLDYgQEAgYm9vbCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpyZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5lcigpCiAgICAgQVNT
RVJUKG1fbm90aWZpY2F0aW9uSGFuZGxlcik7CiAgICAgCiAgICAgW21fbm90aWZpY2F0aW9uSGFu
ZGxlciBzdG9wT2JzZXJ2aW5nXTsKLSAgICBbbV9ub3RpZmljYXRpb25IYW5kbGVyIHJlbGVhc2Vd
OwogICAgIG1fbm90aWZpY2F0aW9uSGFuZGxlciA9IG5pbDsKICAgICAKICAgICByZXR1cm4gdHJ1
ZTsKQEAgLTEwNjMsNDEgKzEwNTgsNDEgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpy
ZW1vdmVTZWxlY3Rpb24oKQogLy8gVGV4dCBtYXJrZXJzCiBSZWZQdHI8QWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGluZVRleHRNYXJrZXJSYW5n
ZUZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7Ci0g
ICAgaWQgc3RhcnRUZXh0TWFya2VyID0gW21fZWxlbWVudCBsaW5lU3RhcnRNYXJrZXJGb3JNYXJr
ZXI6KGlkKXRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKLSAgICBpZCBlbmRUZXh0
TWFya2VyID0gW21fZWxlbWVudCBsaW5lRW5kTWFya2VyRm9yTWFya2VyOihpZCl0ZXh0TWFya2Vy
LT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAgaWQgc3RhcnRUZXh0TWFya2VyID0gW21fZWxl
bWVudCBsaW5lU3RhcnRNYXJrZXJGb3JNYXJrZXI6KF9fYnJpZGdlIGlkKXRleHRNYXJrZXItPnBs
YXRmb3JtVGV4dE1hcmtlcigpXTsKKyAgICBpZCBlbmRUZXh0TWFya2VyID0gW21fZWxlbWVudCBs
aW5lRW5kTWFya2VyRm9yTWFya2VyOihfX2JyaWRnZSBpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRl
eHRNYXJrZXIoKV07CiAgICAgTlNBcnJheSAqdGV4dE1hcmtlcnMgPSBbTlNBcnJheSBhcnJheVdp
dGhPYmplY3RzOnN0YXJ0VGV4dE1hcmtlciwgZW5kVGV4dE1hcmtlciwgbmlsXTsKICAgICAKICAg
ICBpZCB0ZXh0TWFya2VyUmFuZ2UgPSBbbV9lbGVtZW50IHRleHRNYXJrZXJSYW5nZUZvck1hcmtl
cnM6dGV4dE1hcmtlcnNdOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdl
OjpjcmVhdGUodGV4dE1hcmtlclJhbmdlKTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJSYW5nZTo6Y3JlYXRlKChfX2JyaWRnZSBQbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSl0ZXh0
TWFya2VyUmFuZ2UpOwogfQogCiBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudChBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50KiBlbGVtZW50KQogewogICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9IFtl
bGVtZW50LT5wbGF0Zm9ybVVJRWxlbWVudCgpIHRleHRNYXJrZXJSYW5nZV07Ci0gICAgcmV0dXJu
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OmNyZWF0ZSh0ZXh0TWFya2VyUmFuZ2UpOwor
ICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjpjcmVhdGUoKF9fYnJpZGdl
IFBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKXRleHRNYXJrZXJSYW5nZSk7CiB9CiAKIGludCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VMZW5ndGgoQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXJSYW5nZSogcmFuZ2UpCiB7Ci0gICAgaWQgdGV4dE1hcmtlcnMgPSAoaWQpcmFuZ2Ut
PnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCk7ICAgIAorICAgIGlkIHRleHRNYXJrZXJzID0gKF9f
YnJpZGdlIGlkKXJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpOwogICAgIHJldHVybiBb
bV9lbGVtZW50IGxlbmd0aEZvclRleHRNYXJrZXJzOnRleHRNYXJrZXJzXTsKIH0KIAogUmVmUHRy
PEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmV2aW91
c1RleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7Ci0gICAg
aWQgcHJldmlvdXNNYXJrZXIgPSBbbV9lbGVtZW50IHByZXZpb3VzTWFya2VyRm9yTWFya2VyOihp
ZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07Ci0gICAgcmV0dXJuIEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyOjpjcmVhdGUocHJldmlvdXNNYXJrZXIpOworICAgIGlkIHByZXZpb3Vz
TWFya2VyID0gW21fZWxlbWVudCBwcmV2aW91c01hcmtlckZvck1hcmtlcjooX19icmlkZ2UgaWQp
dGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAgIHJldHVybiBBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlcjo6Y3JlYXRlKChfX2JyaWRnZSBQbGF0Zm9ybVRleHRNYXJrZXIpcHJldmlv
dXNNYXJrZXIpOwogfQogCiBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6Om5leHRUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0
ZXh0TWFya2VyKQogewotICAgIGlkIG5leHRNYXJrZXIgPSBbbV9lbGVtZW50IG5leHRNYXJrZXJG
b3JNYXJrZXI6KGlkKXRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKLSAgICByZXR1
cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmNyZWF0ZShuZXh0TWFya2VyKTsKKyAgICBpZCBu
ZXh0TWFya2VyID0gW21fZWxlbWVudCBuZXh0TWFya2VyRm9yTWFya2VyOihfX2JyaWRnZSBpZCl0
ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyOjpjcmVhdGUoKF9fYnJpZGdlIFBsYXRmb3JtVGV4dE1hcmtlciluZXh0TWFy
a2VyKTsKIH0KIAogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdl
KiBtYXJrZXJSYW5nZSkKIHsKLSAgICBpZCB0ZXh0TWFya2VycyA9IChpZCltYXJrZXJSYW5nZS0+
cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKTsKKyAgICBpZCB0ZXh0TWFya2VycyA9IChfX2JyaWRn
ZSBpZCltYXJrZXJSYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKTsKICAgICBpZiAoIXRl
eHRNYXJrZXJzIHx8ICFbdGV4dE1hcmtlcnMgaXNLaW5kT2ZDbGFzczpbTlNBcnJheSBjbGFzc11d
KQogICAgICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKICAg
ICByZXR1cm4gW1ttX2VsZW1lbnQgc3RyaW5nRm9yVGV4dE1hcmtlcnM6dGV4dE1hcmtlcnNdIGNy
ZWF0ZUpTU3RyaW5nUmVmXTsKQEAgLTExMDUsMjMgKzExMDAsMjMgQEAgSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0ZvclRleHRNYXJrZXJSYW5n
ZShBY2Nlc3MKIAogUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMoQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXIqIHN0YXJ0TWFya2VyLCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogZW5kTWFya2Vy
KQogewotICAgIE5TQXJyYXkgKnRleHRNYXJrZXJzID0gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0
czooaWQpc3RhcnRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpLCAoaWQpZW5kTWFya2VyLT5w
bGF0Zm9ybVRleHRNYXJrZXIoKSwgbmlsXTsKKyAgICBOU0FycmF5ICp0ZXh0TWFya2VycyA9IFtO
U0FycmF5IGFycmF5V2l0aE9iamVjdHM6KF9fYnJpZGdlIGlkKXN0YXJ0TWFya2VyLT5wbGF0Zm9y
bVRleHRNYXJrZXIoKSwgKF9fYnJpZGdlIGlkKWVuZE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2Vy
KCksIG5pbF07CiAgICAgaWQgdGV4dE1hcmtlclJhbmdlID0gW21fZWxlbWVudCB0ZXh0TWFya2Vy
UmFuZ2VGb3JNYXJrZXJzOnRleHRNYXJrZXJzXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXJSYW5nZTo6Y3JlYXRlKHRleHRNYXJrZXJSYW5nZSk7CisgICAgcmV0dXJuIEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OmNyZWF0ZSgoX19icmlkZ2UgUGxhdGZvcm1UZXh0TWFy
a2VyUmFuZ2UpdGV4dE1hcmtlclJhbmdlKTsKIH0KIAogUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXJGb3JUZXh0TWFy
a2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSogcmFuZ2UpCiB7Ci0gICAgaWQg
dGV4dE1hcmtlcnMgPSAoaWQpcmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCk7CisgICAg
aWQgdGV4dE1hcmtlcnMgPSAoX19icmlkZ2UgaWQpcmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJh
bmdlKCk7CiAgICAgaWQgdGV4dE1hcmtlciA9IFttX2VsZW1lbnQgc3RhcnRPckVuZFRleHRNYXJr
ZXJGb3JUZXh0TWFya2Vyczp0ZXh0TWFya2VycyBpc1N0YXJ0OllFU107Ci0gICAgcmV0dXJuIEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyOjpjcmVhdGUodGV4dE1hcmtlcik7CisgICAgcmV0dXJuIEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyOjpjcmVhdGUoKF9fYnJpZGdlIFBsYXRmb3JtVGV4dE1hcmtl
cil0ZXh0TWFya2VyKTsKIH0KIAogUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjplbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqIHJhbmdlKQogewotICAgIGlkIHRleHRNYXJrZXJzID0g
KGlkKXJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpOworICAgIGlkIHRleHRNYXJrZXJz
ID0gKF9fYnJpZGdlIGlkKXJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpOwogICAgIGlk
IHRleHRNYXJrZXIgPSBbbV9lbGVtZW50IHN0YXJ0T3JFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtl
cnM6dGV4dE1hcmtlcnMgaXNTdGFydDpOT107Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyOjpjcmVhdGUodGV4dE1hcmtlcik7CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyOjpjcmVhdGUoKF9fYnJpZGdlIFBsYXRmb3JtVGV4dE1hcmtlcil0ZXh0TWFya2VyKTsK
IH0KIAogUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjplbmRUZXh0TWFya2VyRm9yQm91bmRzKGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQg
aGVpZ2h0KQpAQCAtMTE0MSw3ICsxMTM2LDcgQEAgUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyRm9yUG9pbnQoaW50IHgKIAog
UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFj
Y2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciog
bWFya2VyKQogewotICAgIGlkIG9iaiA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eU9iamVjdEZv
clRleHRNYXJrZXI6KGlkKW1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAgIGlkIG9i
aiA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eU9iamVjdEZvclRleHRNYXJrZXI6KF9fYnJpZGdl
IGlkKW1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwogICAgIGlmIChvYmopCiAgICAgICAg
IHJldHVybiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUob2JqKTsKICAgICByZXR1cm4g
bnVsbHB0cjsKQEAgLTEyNDEsOSArMTIzNiw5IEBAIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VNYXRjCiB7
CiAgICAgTlNBcnJheSAqdGV4dE1hcmtlcnMgPSBuaWw7CiAgICAgaWYgKHN0YXJ0TWFya2VyLT5w
bGF0Zm9ybVRleHRNYXJrZXIoKSAmJiBlbmRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpKQot
ICAgICAgICB0ZXh0TWFya2VycyA9IFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6KGlkKXN0YXJ0
TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKSwgKGlkKWVuZE1hcmtlci0+cGxhdGZvcm1UZXh0
TWFya2VyKCksIG5pbF07CisgICAgICAgIHRleHRNYXJrZXJzID0gW05TQXJyYXkgYXJyYXlXaXRo
T2JqZWN0czooX19icmlkZ2UgaWQpc3RhcnRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpLCAo
X19icmlkZ2UgaWQpZW5kTWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKSwgbmlsXTsKICAgICBp
ZCB0ZXh0TWFya2VyUmFuZ2UgPSBbbV9lbGVtZW50IHRleHRNYXJrZXJSYW5nZUZyb21NYXJrZXJz
OnRleHRNYXJrZXJzIHdpdGhUZXh0OltOU1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6dGV4
dF1dOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjpjcmVhdGUodGV4
dE1hcmtlclJhbmdlKTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6
Y3JlYXRlKChfX2JyaWRnZSBQbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSl0ZXh0TWFya2VyUmFuZ2Up
OwogfQogCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
bWF0aFBvc3RzY3JpcHRzRGVzY3JpcHRpb24oKSBjb25zdApAQCAtMTI1OCw3ICsxMjUzLDcgQEAg
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1hdGhQcmVz
Y3JpcHRzRGVzY3JpcHRpb24oKSBjb24KIAogc3RhdGljIHZvaWQgX0NHUGF0aEVudW1lcmF0aW9u
SXRlcmF0aW9uKHZvaWQgKmluZm8sIGNvbnN0IENHUGF0aEVsZW1lbnQgKmVsZW1lbnQpCiB7Ci0g
ICAgTlNNdXRhYmxlU3RyaW5nICpyZXN1bHQgPSAoTlNNdXRhYmxlU3RyaW5nICopaW5mbzsKKyAg
ICBOU011dGFibGVTdHJpbmcgKnJlc3VsdCA9IChfX2JyaWRnZSBOU011dGFibGVTdHJpbmcgKilp
bmZvOwogICAgIHN3aXRjaCAoZWxlbWVudC0+dHlwZSkgewogICAgIGNhc2Uga0NHUGF0aEVsZW1l
bnRNb3ZlVG9Qb2ludDoKICAgICAgICAgW3Jlc3VsdCBhcHBlbmRTdHJpbmc6QCJcdE1vdmUgdG8g
cG9pbnRcbiJdOwpAQCAtMTI4Miw5ICsxMjc3LDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnBhdGhEZXNjcmlwdGlvbigpIGNvbnN0CiB7CiAgICAg
TlNNdXRhYmxlU3RyaW5nICpyZXN1bHQgPSBbTlNNdXRhYmxlU3RyaW5nIHN0cmluZ1dpdGhTdHJp
bmc6QCJcblN0YXJ0IFBhdGhcbiJdOwogICAgIENHUGF0aFJlZiBwYXRoUmVmID0gW21fZWxlbWVu
dCBfYWNjZXNzaWJpbGl0eVBhdGhdOwotICAgIAotICAgIENHUGF0aEFwcGx5KHBhdGhSZWYsIHJl
c3VsdCwgX0NHUGF0aEVudW1lcmF0aW9uSXRlcmF0aW9uKTsKLSAgICAKKyAgICBDR1BhdGhBcHBs
eShwYXRoUmVmLCAoX19icmlkZ2Ugdm9pZCopcmVzdWx0LCBfQ0dQYXRoRW51bWVyYXRpb25JdGVy
YXRpb24pOwogICAgIHJldHVybiBbcmVzdWx0IGNyZWF0ZUpTU3RyaW5nUmVmXTsKIH0KIApkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNz
aWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlci5tbQppbmRl
eCBmM2VjYjNiNDYwZGU2Nzk0MGIzNjk2YmVkZDRkNTk1YzBiZjVlMmRiLi41ZGQwMmY3ZjQwOWJj
OGQyNjU4OTA0YjhlOGVmYzlkZGZlYWI5NWI2IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxl
ci5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nl
c3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlci5tbQpAQCAtODMsOCArODMsNiBAQCAtICh2b2lk
KWRlYWxsb2MKIAogICAgIEpTVmFsdWVVbnByb3RlY3QoY29udGV4dCwgbV9ub3RpZmljYXRpb25G
dW5jdGlvbkNhbGxiYWNrKTsKICAgICBtX25vdGlmaWNhdGlvbkZ1bmN0aW9uQ2FsbGJhY2sgPSAw
OwotCi0gICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCiAtICh2b2lkKXNldENhbGxiYWNrOihKU1Zh
bHVlUmVmKWNhbGxiYWNrCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5t
bQppbmRleCA3N2RmZmIzMDZhNDgxM2VlYTY5OGNhMDlmYTFjMTNiNzFiM2FhNGQwLi5jZDZlOTZh
NDgxNWFhYTU3NTljY2RlYTcyMDczNWNkMDM5NTA0ZTJkIDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFj
Lm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnRNYWMubW0KQEAgLTkxLDggKzkxLDYgQEAgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudChQbGF0Zm9ybVVJRWxlbWVudCBlbGVtZW50
KQogICAgIDogbV9lbGVtZW50KGVsZW1lbnQpCiAgICAgLCBtX25vdGlmaWNhdGlvbkhhbmRsZXIo
MCkKIHsKLSAgICAvLyBGSVhNRTogYXBAd2Via2l0Lm9yZyBzYXlzIE9iakMgb2JqZWN0cyBuZWVk
IHRvIGJlIENGUmV0YWluZWQvQ0ZSZWxlYXNlIHRvIGJlIEdDLWNvbXBsaWFudCBvbiB0aGUgbWFj
LgotICAgIFttX2VsZW1lbnQgcmV0YWluXTsKIH0KIAogQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudChjb25zdCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50JiBvdGhl
cikKQEAgLTEwMCwxNCArOTgsMTIgQEAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudChjb25zdCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50JiBvdGgKICAgICAsIG1f
ZWxlbWVudChvdGhlci5tX2VsZW1lbnQpCiAgICAgLCBtX25vdGlmaWNhdGlvbkhhbmRsZXIoMCkK
IHsKLSAgICBbbV9lbGVtZW50IHJldGFpbl07CiB9CiAKIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
On5BY2Nlc3NpYmlsaXR5VUlFbGVtZW50KCkKIHsKICAgICAvLyBUaGUgbm90aWZpY2F0aW9uIGhh
bmRsZXIgc2hvdWxkIGJlIG5pbCBiZWNhdXNlIHJlbW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVyKCkg
c2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgaW4gdGhlIHRlc3QuCiAgICAgQVNTRVJUKCFtX25vdGlm
aWNhdGlvbkhhbmRsZXIpOwotICAgIFttX2VsZW1lbnQgcmVsZWFzZV07CiB9CiAKIGJvb2wgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNFcXVhbChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBvdGhl
ckVsZW1lbnQpCkBAIC0xNTU4LDcgKzE1NTQsNiBAQCBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnJlbW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVyKCkKICAgICBBU1NFUlQobV9ub3RpZmljYXRp
b25IYW5kbGVyKTsKIAogICAgIFttX25vdGlmaWNhdGlvbkhhbmRsZXIgc3RvcE9ic2VydmluZ107
Ci0gICAgW21fbm90aWZpY2F0aW9uSGFuZGxlciByZWxlYXNlXTsKICAgICBtX25vdGlmaWNhdGlv
bkhhbmRsZXIgPSBuaWw7CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CkBAIC0xODI3LDcgKzE4MjIs
NyBAQCBSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6YWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZQogCiBzdGF0aWMgSlNTdHJpbmdSZWYgY3JlYXRl
SlNTdHJpbmdSZWYoaWQgc3RyaW5nKQogewotICAgIGlkIG11dGFibGVTdHJpbmcgPSBbW1tOU011
dGFibGVTdHJpbmcgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICBpZCBtdXRhYmxlU3Ry
aW5nID0gW1tOU011dGFibGVTdHJpbmcgYWxsb2NdIGluaXRdOwogICAgIGlkIGF0dHJpYnV0ZXMg
PSBbc3RyaW5nIGF0dHJpYnV0ZXNBdEluZGV4OjAgZWZmZWN0aXZlUmFuZ2U6bmlsXTsKICAgICBp
ZCBhdHRyaWJ1dGVFbnVtZXJhdGlvbkJsb2NrID0gXihOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwg
aWQ+ICphdHRycywgTlNSYW5nZSByYW5nZSwgQk9PTCAqc3RvcCkgewogICAgICAgICBCT09MIG1p
c3NwZWxsZWQgPSBbW2F0dHJzIG9iamVjdEZvcktleTpOU0FjY2Vzc2liaWxpdHlNaXNzcGVsbGVk
VGV4dEF0dHJpYnV0ZV0gYm9vbFZhbHVlXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQppbmRleCAyNDBlZWI1MmYzMDY3ODQxMTdj
YTViOGE5NmQ4ZTNmYzkzMDcxNzllLi5iY2YwYzYzN2JiMDE2MDJlNzMyOWE5NjY4NGYzMDY4NDM5
YmFhMWRlIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250
cm9sbGVyQ29jb2EubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29u
dHJvbGxlckNvY29hLm1tCkBAIC01Nyw3ICs1Nyw2IEBAIHN0YXRpYyBXS1dlYlZpZXdDb25maWd1
cmF0aW9uICpnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbjsKIHZvaWQgaW5pdGlhbGl6ZVdlYlZp
ZXdDb25maWd1cmF0aW9uKGNvbnN0IGNoYXIqIGxpYnJhcnlQYXRoLCBXS1N0cmluZ1JlZiBpbmpl
Y3RlZEJ1bmRsZVBhdGgsIFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0NvbnRleHRDb25maWd1cmF0
aW9uUmVmIGNvbnRleHRDb25maWd1cmF0aW9uKQogewogI2lmIFdLX0FQSV9FTkFCTEVECi0gICAg
W2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uIHJlbGVhc2VdOwogICAgIGdsb2JhbFdlYlZpZXdD
b25maWd1cmF0aW9uID0gW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XTsKIAog
ICAgIGdsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLnByb2Nlc3NQb29sID0gKF9fYnJpZGdlIFdL
UHJvY2Vzc1Bvb2wgKiljb250ZXh0OwpAQCAtMTA5LDcgKzEwOCw2IEBAIHZvaWQgVGVzdENvbnRy
b2xsZXI6OmNvY29hUGxhdGZvcm1Jbml0aWFsaXplKCkKICAgICBOU0RpY3Rpb25hcnkgKnJlc291
cmNlTG9nUGxpc3QgPSBbW05TRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhPYmplY3RzQW5kS2V5
czogW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6MV0sIEAidmVyc2lvbiIsIG5pbF07CiAgICAgaWYg
KCFbcmVzb3VyY2VMb2dQbGlzdCB3cml0ZVRvRmlsZTpmdWxsQnJvd3NpbmdTZXNzaW9uUmVzb3Vy
Y2VMb2cgYXRvbWljYWxseTpZRVNdKQogICAgICAgICBXVEZDcmFzaCgpOwotICAgIFtyZXNvdXJj
ZUxvZ1BsaXN0IHJlbGVhc2VdOwogfQogCiBXS0NvbnRleHRSZWYgVGVzdENvbnRyb2xsZXI6OnBs
YXRmb3JtQ29udGV4dCgpCkBAIC0xNzgsNyArMTc2LDcgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6
cGxhdGZvcm1DcmVhdGVXZWJWaWV3KFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYsIGNvbnN0IFRlc3RP
cHQKIFBsYXRmb3JtV2ViVmlldyogVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtQ3JlYXRlT3RoZXJQ
YWdlKFBsYXRmb3JtV2ViVmlldyogcGFyZW50VmlldywgV0tQYWdlQ29uZmlndXJhdGlvblJlZiwg
Y29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMpCiB7CiAjaWYgV0tfQVBJX0VOQUJMRUQKLSAgICBX
S1dlYlZpZXdDb25maWd1cmF0aW9uICpuZXdDb25maWd1cmF0aW9uID0gW1tnbG9iYWxXZWJWaWV3
Q29uZmlndXJhdGlvbiBjb3B5XSBhdXRvcmVsZWFzZV07CisgICAgV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiAqbmV3Q29uZmlndXJhdGlvbiA9IFtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbiBjb3B5
XTsKICAgICBuZXdDb25maWd1cmF0aW9uLl9yZWxhdGVkV2ViVmlldyA9IHN0YXRpY19jYXN0PFdL
V2ViVmlldyo+KHBhcmVudFZpZXctPnBsYXRmb3JtVmlldygpKTsKICAgICByZXR1cm4gbmV3IFBs
YXRmb3JtV2ViVmlldyhuZXdDb25maWd1cmF0aW9uLCBvcHRpb25zKTsKICNlbHNlCmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RSdW5uZXJXS1dlYlZpZXcubW0g
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RSdW5uZXJXS1dlYlZpZXcubW0KaW5k
ZXggOWJiNTNjZDljZjg1M2ZjZWY1NzBhMTdmOWEyYjhhYWFhNmFjNDU5NS4uODZhNjI4MjY4NmMy
N2Y2OTk3YTdlNGRlMjQ4MDE4NjkxNzIwOTY2MCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9jb2NvYS9UZXN0UnVubmVyV0tXZWJWaWV3Lm1tCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvY29jb2EvVGVzdFJ1bm5lcldLV2ViVmlldy5tbQpAQCAtODQsMjIgKzg0LDYgQEAg
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KENHUmVjdClmcmFtZSBjb25maWd1cmF0aW9u
OihXS1dlYlZpZXdDb25maWd1cmF0aW8KIC0gKHZvaWQpZGVhbGxvYwogewogICAgIFtbTlNOb3Rp
ZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6c2VsZl07Ci0KLSAg
ICBzZWxmLmRpZFN0YXJ0Rm9ybUNvbnRyb2xJbnRlcmFjdGlvbkNhbGxiYWNrID0gbmlsOwotICAg
IHNlbGYuZGlkRW5kRm9ybUNvbnRyb2xJbnRlcmFjdGlvbkNhbGxiYWNrID0gbmlsOwotICAgIHNl
bGYuZGlkU2hvd0ZvcmNlUHJlc3NQcmV2aWV3Q2FsbGJhY2sgPSBuaWw7Ci0gICAgc2VsZi5kaWRE
aXNtaXNzRm9yY2VQcmVzc1ByZXZpZXdDYWxsYmFjayA9IG5pbDsKLSAgICBzZWxmLndpbGxCZWdp
blpvb21pbmdDYWxsYmFjayA9IG5pbDsKLSAgICBzZWxmLmRpZEVuZFpvb21pbmdDYWxsYmFjayA9
IG5pbDsKLSAgICBzZWxmLmRpZFNob3dLZXlib2FyZENhbGxiYWNrID0gbmlsOwotICAgIHNlbGYu
ZGlkSGlkZUtleWJvYXJkQ2FsbGJhY2sgPSBuaWw7Ci0gICAgc2VsZi5kaWRFbmRTY3JvbGxpbmdD
YWxsYmFjayA9IG5pbDsKLSAgICBzZWxmLnJvdGF0aW9uRGlkRW5kQ2FsbGJhY2sgPSBuaWw7Ci0K
LSAgICBzZWxmLnpvb21Ub1NjYWxlQ29tcGxldGlvbkhhbmRsZXIgPSBuaWw7Ci0gICAgc2VsZi5y
ZXRyaWV2ZVNwZWFrU2VsZWN0aW9uQ29udGVudENvbXBsZXRpb25IYW5kbGVyID0gbmlsOwotCi0g
ICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCiAtICh2b2lkKWRpZFN0YXJ0Rm9ybUNvbnRyb2xJbnRl
cmFjdGlvbgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvR2VuZXJhdGVk
VG91Y2hlc0RlYnVnV2luZG93Lm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvR2VuZXJh
dGVkVG91Y2hlc0RlYnVnV2luZG93Lm1tCmluZGV4IGZkNDNmODBjOGJkMDdiZGYxYzQ0NDA0ZTAw
YmYzNWFlNGZhOGFhMjMuLjRiN2IyZTZkMWMxOTllNTMyMjZkMjFjM2YyNTcyZjE4Nzc0NDE2Y2Qg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL0dlbmVyYXRlZFRvdWNoZXNE
ZWJ1Z1dpbmRvdy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9HZW5lcmF0ZWRU
b3VjaGVzRGVidWdXaW5kb3cubW0KQEAgLTUzLDEwICs1Myw2IEBAICsgKEdlbmVyYXRlZFRvdWNo
ZXNEZWJ1Z1dpbmRvdyAqKXNoYXJlZEdlbmVyYXRlZFRvdWNoZXNEZWJ1Z1dpbmRvdwogLSAodm9p
ZClkZWFsbG9jCiB7CiAgICAgX2RlYnVnVG91Y2hXaW5kb3cuaGlkZGVuID0gWUVTOwotICAgIFtf
ZGVidWdUb3VjaFdpbmRvdyByZWxlYXNlXTsKLSAgICBbX2RlYnVnVG91Y2hWaWV3cyByZWxlYXNl
XTsKLSAgICAKLSAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKIC0gKHZvaWQpdXBkYXRlRGVidWdJ
bmRpY2F0b3JGb3JUb3VjaDooTlNVSW50ZWdlcilpbmRleCB3aXRoUG9pbnRJbldpbmRvd0Nvb3Jk
aW5hdGVzOihDR1BvaW50KXBvaW50IGlzVG91Y2hpbmc6KEJPT0wpaXNUb3VjaGluZwpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvSElERXZlbnRHZW5lcmF0b3IubW0gYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5tbQppbmRleCAyOTI2
MmE0ZTk0YTQ0N2RkMDg2OGY0MTJiMDAzNjdjM2QxYWRkYWVmLi4yNWMxNzI2NjU1Nzc2YTNiYmNl
MDZmMGYxMDRhZWMxZThlZTU4NmJmIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L2lvcy9ISURFdmVudEdlbmVyYXRvci5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lv
cy9ISURFdmVudEdlbmVyYXRvci5tbQpAQCAtMTkxLDE1ICsxOTEsNiBAQCAtIChpbnN0YW5jZXR5
cGUpaW5pdAogICAgIHJldHVybiBzZWxmOwogfQogCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBb
X2V2ZW50Q2FsbGJhY2tzIHJlbGVhc2VdOwotICAgIFtfZGVidWdUb3VjaFZpZXdzIHJlbGVhc2Vd
OwotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotCi0KIC0gKHZvaWQpX3NlbmRJT0hJREtleWJv
YXJkRXZlbnQ6KHVpbnQ2NF90KXRpbWVzdGFtcCB1c2FnZToodWludDMyX3QpdXNhZ2UgaXNLZXlE
b3duOihib29sKWlzS2V5RG93bgogewogICAgIFJldGFpblB0cjxJT0hJREV2ZW50UmVmPiBldmVu
dFJlZiA9IGFkb3B0Q0YoSU9ISURFdmVudENyZWF0ZUtleWJvYXJkRXZlbnQoa0NGQWxsb2NhdG9y
RGVmYXVsdCwKQEAgLTQ4MCw3ICs0NzEsNyBAQCAtIChCT09MKV9zZW5kSElERXZlbnQ6KElPSElE
RXZlbnRSZWYpZXZlbnRSZWYKIC0gKEJPT0wpX3NlbmRNYXJrZXJISURFdmVudFdpdGhDb21wbGV0
aW9uQmxvY2s6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25CbG9jawogewogICAgIGF1dG8gY2Fs
bGJhY2tJRCA9IFtISURFdmVudEdlbmVyYXRvciBuZXh0RXZlbnRDYWxsYmFja0lEXTsKLSAgICBb
X2V2ZW50Q2FsbGJhY2tzIHNldE9iamVjdDpCbG9ja19jb3B5KGNvbXBsZXRpb25CbG9jaykgZm9y
S2V5OkAoY2FsbGJhY2tJRCldOworICAgIFtfZXZlbnRDYWxsYmFja3Mgc2V0T2JqZWN0OmNvbXBs
ZXRpb25CbG9jayBmb3JLZXk6QChjYWxsYmFja0lEKV07CiAKICAgICBhdXRvIG1hcmtlckV2ZW50
ID0gYWRvcHRDRihJT0hJREV2ZW50Q3JlYXRlVmVuZG9yRGVmaW5lZEV2ZW50KGtDRkFsbG9jYXRv
ckRlZmF1bHQsCiAgICAgICAgIG1hY2hfYWJzb2x1dGVfdGltZSgpLApAQCAtNzgyLDcgKzc3Myw2
IEBAIC0gKHZvaWQpbWFya2VyRXZlbnRSZWNlaXZlZDooSU9ISURFdmVudFJlZilldmVudAogICAg
IGlmIChjb21wbGV0aW9uQmxvY2spIHsKICAgICAgICAgW19ldmVudENhbGxiYWNrcyByZW1vdmVP
YmplY3RGb3JLZXk6QChjYWxsYmFja0lEKV07CiAgICAgICAgIGNvbXBsZXRpb25CbG9jaygpOwot
ICAgICAgICBCbG9ja19yZWxlYXNlKGNvbXBsZXRpb25CbG9jayk7CiAgICAgfQogfQogCkBAIC0x
MDM3LDcgKzEwMjcsNiBAQCAtIChOU0FycmF5ICopaW50ZXJwb2xhdGVkRXZlbnRzOihOU0RpY3Rp
b25hcnkgKilpbnRlcnBvbGF0aW9uc0RpY3Rpb25hcnkKICAgICAgICAgICAgICAgICAgICAgbmV3
VG91Y2hbSElERXZlbnRQcmVzc3VyZUtleV0gPSBAKGludGVycG9sYXRpb25zW2ludGVycG9sYXRp
b25UeXBlXShbc3RhcnRUb3VjaFtISURFdmVudFByZXNzdXJlS2V5XSBkb3VibGVWYWx1ZV0sIFtl
bmRUb3VjaFtISURFdmVudFByZXNzdXJlS2V5XSBkb3VibGVWYWx1ZV0sIHRpbWVSYXRpbykpOwog
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIFtuZXdUb3VjaGVzIGFkZE9iamVjdDpu
ZXdUb3VjaF07Ci0gICAgICAgICAgICAgICAgW25ld1RvdWNoIHJlbGVhc2VdOwogICAgICAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgTlNMb2coQCJNaXNzaW5nIEVuZCBUb3VjaCB3aXRo
IElEOiAlbGQiLCAobG9uZylzdGFydFRvdWNoSUQpOwogICAgICAgICB9CkBAIC0xMDQ1LDcgKzEw
MzQsNiBAQCAtIChOU0FycmF5ICopaW50ZXJwb2xhdGVkRXZlbnRzOihOU0RpY3Rpb25hcnkgKilp
bnRlcnBvbGF0aW9uc0RpY3Rpb25hcnkKICAgICAgICAgbmV3RXZlbnRbSElERXZlbnRUb3VjaGVz
S2V5XSA9IG5ld1RvdWNoZXM7CiAgICAgICAgIAogICAgICAgICBbaW50ZXJwb2xhdGVkRXZlbnRz
IGFkZE9iamVjdDpuZXdFdmVudF07Ci0gICAgICAgIFtuZXdFdmVudCByZWxlYXNlXTsKICAgICAg
ICAgdGltZSArPSB0aW1lU3RlcDsKICAgICB9CiAgICAgCkBAIC0xMTEzLDEwICsxMTAxLDEwIEBA
IC0gKHZvaWQpc2VuZEV2ZW50U3RyZWFtOihOU0RpY3Rpb25hcnkgKilldmVudEluZm8gY29tcGxl
dGlvbkJsb2NrOih2b2lkICheKSh2b2lkCiAgICAgCiAgICAgTlNEaWN0aW9uYXJ5KiB0aHJlYWRE
YXRhID0gQHsKICAgICAgICAgQCJldmVudEluZm8iOiBbZXZlbnRJbmZvIGNvcHldLAotICAgICAg
ICBAImNvbXBsZXRpb25CbG9jayI6IFtbY29tcGxldGlvbkJsb2NrIGNvcHldIGF1dG9yZWxlYXNl
XQorICAgICAgICBAImNvbXBsZXRpb25CbG9jayI6IFtjb21wbGV0aW9uQmxvY2sgY29weV0KICAg
ICB9OwogICAgIAotICAgIE5TVGhyZWFkICpldmVudERpc3BhdGNoVGhyZWFkID0gW1tbTlNUaHJl
YWQgYWxsb2NdIGluaXRXaXRoVGFyZ2V0OnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGV2ZW50RGlz
cGF0Y2hUaHJlYWRFbnRyeTopIG9iamVjdDp0aHJlYWREYXRhXSBhdXRvcmVsZWFzZV07CisgICAg
TlNUaHJlYWQgKmV2ZW50RGlzcGF0Y2hUaHJlYWQgPSBbW05TVGhyZWFkIGFsbG9jXSBpbml0V2l0
aFRhcmdldDpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihldmVudERpc3BhdGNoVGhyZWFkRW50cnk6
KSBvYmplY3Q6dGhyZWFkRGF0YV07CiAgICAgZXZlbnREaXNwYXRjaFRocmVhZC5xdWFsaXR5T2ZT
ZXJ2aWNlID0gTlNRdWFsaXR5T2ZTZXJ2aWNlVXNlckludGVyYWN0aXZlOwogICAgIFtldmVudERp
c3BhdGNoVGhyZWFkIHN0YXJ0XTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvaW9zL1BsYXRmb3JtV2ViVmlld0lPUy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9z
L1BsYXRmb3JtV2ViVmlld0lPUy5tbQppbmRleCBlMjE5NDg1OTg1MjViOWJkZDI3N2EwZjBiZGNk
OGRiMzY3MTQ5Nzc3Li42ZGNhOGI2OWI2OGJhMTc4NWU1NjVmZDQ5YWNlYzA4NzdkODM1Yjc5IDEw
MDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9QbGF0Zm9ybVdlYlZpZXdJT1Mu
bW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvUGxhdGZvcm1XZWJWaWV3SU9TLm1t
CkBAIC02OSw3ICs2OSw2IEBAIC0gKHZvaWQpZGVhbGxvYwogewogICAgIGFsbFdpbmRvd3MucmVt
b3ZlRmlyc3Qoc2VsZik7CiAgICAgQVNTRVJUKCFhbGxXaW5kb3dzLmNvbnRhaW5zKHNlbGYpKTsK
LSAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKIC0gKEJPT0wpaXNLZXlXaW5kb3cKQEAgLTE3Niw3
ICsxNzUsNiBAQCBQbGF0Zm9ybVdlYlZpZXc6OlBsYXRmb3JtV2ViVmlldyhXS1dlYlZpZXdDb25m
aWd1cmF0aW9uKiBjb25maWd1cmF0aW9uLCBjb25zdCBUZQogCiAgICAgVUlWaWV3Q29udHJvbGxl
ciAqdmlld0NvbnRyb2xsZXIgPSBbW1BsYXRmb3JtV2ViVmlld0NvbnRyb2xsZXIgYWxsb2NdIGlu
aXRdOwogICAgIFttX3dpbmRvdyBzZXRSb290Vmlld0NvbnRyb2xsZXI6dmlld0NvbnRyb2xsZXJd
OwotICAgIFt2aWV3Q29udHJvbGxlciByZWxlYXNlXTsKIAogICAgIG1fdmlldyA9IFtbVGVzdFJ1
bm5lcldLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTp2aWV3UmVjdEZvcldpbmRvd1JlY3Qo
cmVjdCwgV2ViVmlld1NpemluZ01vZGU6OkRlZmF1bHQpIGNvbmZpZ3VyYXRpb246Y29uZmlndXJh
dGlvbl07CiAKQEAgLTE4Nyw4ICsxODUsNiBAQCBQbGF0Zm9ybVdlYlZpZXc6OlBsYXRmb3JtV2Vi
VmlldyhXS1dlYlZpZXdDb25maWd1cmF0aW9uKiBjb25maWd1cmF0aW9uLCBjb25zdCBUZQogUGxh
dGZvcm1XZWJWaWV3Ojp+UGxhdGZvcm1XZWJWaWV3KCkKIHsKICAgICBtX3dpbmRvdy5wbGF0Zm9y
bVdlYlZpZXcgPSBuaWw7Ci0gICAgW21fdmlldyByZWxlYXNlXTsKLSAgICBbbV93aW5kb3cgcmVs
ZWFzZV07CiB9CiAKIFBsYXRmb3JtV2luZG93IFBsYXRmb3JtV2ViVmlldzo6a2V5V2luZG93KCkK
QEAgLTI3MCw3ICsyNjYsNiBAQCB2b2lkIFBsYXRmb3JtV2ViVmlldzo6YWRkQ2hyb21lSW5wdXRG
aWVsZCgpCiAgICAgVUlUZXh0RmllbGQqIHRleHRGaWVsZCA9IFtbVUlUZXh0RmllbGQgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAxMDAsIDIwKV07CiAgICAgdGV4dEZpZWxk
LnRhZyA9IDE7CiAgICAgW21fd2luZG93IGFkZFN1YnZpZXc6dGV4dEZpZWxkXTsKLSAgICBbdGV4
dEZpZWxkIHJlbGVhc2VdOwogfQogCiB2b2lkIFBsYXRmb3JtV2ViVmlldzo6cmVtb3ZlQ2hyb21l
SW5wdXRGaWVsZCgpCkBAIC0yNzksNyArMjc0LDYgQEAgdm9pZCBQbGF0Zm9ybVdlYlZpZXc6OnJl
bW92ZUNocm9tZUlucHV0RmllbGQoKQogICAgIGlmICh0ZXh0RmllbGQpIHsKICAgICAgICAgW3Rl
eHRGaWVsZCByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKICAgICAgICAgbWFrZVdlYlZpZXdGaXJzdFJl
c3BvbmRlcigpOwotICAgICAgICBbdGV4dEZpZWxkIHJlbGVhc2VdOwogICAgIH0KIH0KIApkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVGVzdENvbnRyb2xsZXJJT1MubW0g
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9UZXN0Q29udHJvbGxlcklPUy5tbQppbmRleCBm
MjhhOTQyOTBmM2FiOTJkMzgwZmRmYzJlNDA1YzY4NjdmNmI2NzA0Li44ZDJmMGU1ZTM2YjI3ODM3
NzI2OTliMjhkNWY0YzBmZDY2MTdmODJkIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL2lvcy9UZXN0Q29udHJvbGxlcklPUy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L2lvcy9UZXN0Q29udHJvbGxlcklPUy5tbQpAQCAtODYsMTIgKzg2LDEyIEBAIHZvaWQgVGVzdENv
bnRyb2xsZXI6OnBsYXRmb3JtRGVzdHJveSgpCiB2b2lkIFRlc3RDb250cm9sbGVyOjppbml0aWFs
aXplSW5qZWN0ZWRCdW5kbGVQYXRoKCkKIHsKICAgICBOU1N0cmluZyAqbnNCdW5kbGVQYXRoID0g
W1tOU0J1bmRsZSBtYWluQnVuZGxlXS5idWlsdEluUGx1Z0luc1BhdGggc3RyaW5nQnlBcHBlbmRp
bmdQYXRoQ29tcG9uZW50OkAiV2ViS2l0VGVzdFJ1bm5lckluamVjdGVkQnVuZGxlLmJ1bmRsZSJd
OwotICAgIG1faW5qZWN0ZWRCdW5kbGVQYXRoLmFkb3B0KFdLU3RyaW5nQ3JlYXRlV2l0aENGU3Ry
aW5nKChDRlN0cmluZ1JlZiluc0J1bmRsZVBhdGgpKTsKKyAgICBtX2luamVjdGVkQnVuZGxlUGF0
aC5hZG9wdChXS1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoX19icmlkZ2UgQ0ZTdHJpbmdSZWYp
bnNCdW5kbGVQYXRoKSk7CiB9CiAKIHZvaWQgVGVzdENvbnRyb2xsZXI6OmluaXRpYWxpemVUZXN0
UGx1Z2luRGlyZWN0b3J5KCkKIHsKLSAgICBtX3Rlc3RQbHVnaW5EaXJlY3RvcnkuYWRvcHQoV0tT
dHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKENGU3RyaW5nUmVmKVtbTlNCdW5kbGUgbWFpbkJ1bmRs
ZV0gYnVuZGxlUGF0aF0pKTsKKyAgICBtX3Rlc3RQbHVnaW5EaXJlY3RvcnkuYWRvcHQoV0tTdHJp
bmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKF9fYnJpZGdlIENGU3RyaW5nUmVmKVtbTlNCdW5kbGUgbWFp
bkJ1bmRsZV0gYnVuZGxlUGF0aF0pKTsKIH0KIAogdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZv
cm1SZXNldFByZWZlcmVuY2VzVG9Db25zaXN0ZW50VmFsdWVzKCkKZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbSBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQppbmRleCA1OTNhZmMw
MzVhM2NjYzI0YmU3MGU4OGFmZjEwN2E3ZDFhMjI2N2E3Li5hNmFhOThjOGU2OWUxZjAyMDliNzJl
MGRiMjg0MTJmZGRmZTNiMGQ4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lv
cy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9p
b3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBVSVNj
cmlwdENvbnRyb2xsZXI6OnJldHJpZXZlU3BlYWtTZWxlY3Rpb25Db250ZW50KEpTVmFsdWVSZWYg
Y2FsbGJhY2spCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gVUlTY3JpcHRDb250cm9sbGVyOjph
Y2Nlc3NpYmlsaXR5U3BlYWtTZWxlY3Rpb25Db250ZW50KCkgY29uc3QKIHsKICAgICBUZXN0UnVu
bmVyV0tXZWJWaWV3ICp3ZWJWaWV3ID0gVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5X
ZWJWaWV3KCktPnBsYXRmb3JtVmlldygpOwotICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhD
RlN0cmluZygoQ0ZTdHJpbmdSZWYpd2ViVmlldy5hY2Nlc3NpYmlsaXR5U3BlYWtTZWxlY3Rpb25D
b250ZW50KTsKKyAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKF9fYnJpZGdl
IENGU3RyaW5nUmVmKXdlYlZpZXcuYWNjZXNzaWJpbGl0eVNwZWFrU2VsZWN0aW9uQ29udGVudCk7
CiB9CiAKIHZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjpzaW11bGF0ZUFjY2Vzc2liaWxpdHlTZXR0
aW5nc0NoYW5nZU5vdGlmaWNhdGlvbihKU1ZhbHVlUmVmIGNhbGxiYWNrKQpAQCAtMzM1LDcgKzMz
NSw3IEBAIHZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjplbnRlclRleHQoSlNTdHJpbmdSZWYgdGV4
dCkKIHsKICAgICBUZXN0UnVubmVyV0tXZWJWaWV3ICp3ZWJWaWV3ID0gVGVzdENvbnRyb2xsZXI6
OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpOwogICAgIGF1dG8gdGV4
dEFzQ0ZTdHJpbmcgPSBhZG9wdENGKEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIHRleHQpKTsKLSAgICBbd2ViVmlldyBfc2ltdWxhdGVUZXh0RW50ZXJlZDooTlNTdHJp
bmcgKil0ZXh0QXNDRlN0cmluZy5nZXQoKV07CisgICAgW3dlYlZpZXcgX3NpbXVsYXRlVGV4dEVu
dGVyZWQ6KF9fYnJpZGdlIE5TU3RyaW5nICopdGV4dEFzQ0ZTdHJpbmcuZ2V0KCldOwogfQogCiB2
b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6dHlwZUNoYXJhY3RlclVzaW5nSGFyZHdhcmVLZXlib2Fy
ZChKU1N0cmluZ1JlZiBjaGFyYWN0ZXIsIEpTVmFsdWVSZWYgY2FsbGJhY2spCkBAIC0zODMsMTkg
KzM4MywxOSBAQCB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6ZGlzbWlzc0Zvcm1BY2Nlc3NvcnlW
aWV3KCkKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBVSVNjcmlwdENvbnRyb2xsZXI6OnNlbGVj
dEZvcm1Qb3BvdmVyVGl0bGUoKSBjb25zdAogewogICAgIFRlc3RSdW5uZXJXS1dlYlZpZXcgKndl
YlZpZXcgPSBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGxhdGZv
cm1WaWV3KCk7Ci0gICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKChDRlN0cmlu
Z1JlZil3ZWJWaWV3LnNlbGVjdEZvcm1Qb3BvdmVyVGl0bGUpOworICAgIHJldHVybiBKU1N0cmlu
Z0NyZWF0ZVdpdGhDRlN0cmluZygoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpd2ViVmlldy5zZWxlY3RG
b3JtUG9wb3ZlclRpdGxlKTsKIH0KIAogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IFVJU2NyaXB0
Q29udHJvbGxlcjo6dGV4dENvbnRlbnRUeXBlKCkgY29uc3QKIHsKICAgICBUZXN0UnVubmVyV0tX
ZWJWaWV3ICp3ZWJWaWV3ID0gVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3
KCktPnBsYXRmb3JtVmlldygpOwotICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmlu
ZygoQ0ZTdHJpbmdSZWYpKHdlYlZpZXcudGV4dENvbnRlbnRUeXBlRm9yVGVzdGluZyA/OiBAIiIp
KTsKKyAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKF9fYnJpZGdlIENGU3Ry
aW5nUmVmKSh3ZWJWaWV3LnRleHRDb250ZW50VHlwZUZvclRlc3RpbmcgPzogQCIiKSk7CiB9CiAK
IEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBVSVNjcmlwdENvbnRyb2xsZXI6OmZvcm1JbnB1dExh
YmVsKCkgY29uc3QKIHsKICAgICBUZXN0UnVubmVyV0tXZWJWaWV3ICp3ZWJWaWV3ID0gVGVzdENv
bnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpOwotICAg
IHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoQ0ZTdHJpbmdSZWYpd2ViVmlldy5m
b3JtSW5wdXRMYWJlbCk7CisgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKChf
X2JyaWRnZSBDRlN0cmluZ1JlZil3ZWJWaWV3LmZvcm1JbnB1dExhYmVsKTsKIH0KIAogdm9pZCBV
SVNjcmlwdENvbnRyb2xsZXI6OnNlbGVjdEZvcm1BY2Nlc3NvcnlQaWNrZXJSb3cobG9uZyByb3dJ
bmRleCkKQEAgLTU3Myw3ICs1NzMsNyBAQCB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6cmVtb3Zl
QWxsRHluYW1pY0RpY3Rpb25hcmllcygpCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gVUlTY3Jp
cHRDb250cm9sbGVyOjpzY3JvbGxpbmdUcmVlQXNUZXh0KCkgY29uc3QKIHsKICAgICBUZXN0UnVu
bmVyV0tXZWJWaWV3ICp3ZWJWaWV3ID0gVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5X
ZWJWaWV3KCktPnBsYXRmb3JtVmlldygpOwotICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhD
RlN0cmluZygoQ0ZTdHJpbmdSZWYpW3dlYlZpZXcgX3Njcm9sbGluZ1RyZWVBc1RleHRdKTsKKyAg
ICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKF9fYnJpZGdlIENGU3RyaW5nUmVm
KVt3ZWJWaWV3IF9zY3JvbGxpbmdUcmVlQXNUZXh0XSk7CiB9CiAKIEpTT2JqZWN0UmVmIFVJU2Ny
aXB0Q29udHJvbGxlcjo6cHJvcGVydGllc09mTGF5ZXJXaXRoSUQodWludDY0X3QgbGF5ZXJJRCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1BsYXRmb3JtV2Vi
Vmlld01hYy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1BsYXRmb3JtV2ViVmlld01h
Yy5tbQppbmRleCBmNmNiMmEwOGQ2NDU3OWNkNDQ0ZjgyMGEzMGE2MTQ5ZjM4MGRmYTY1Li5kYTEz
ZTUzNGEzNDdjMDNiOWQ3MGZjOGVkZGQwZGNjNDE1OTg0ZmZlIDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL21hYy9QbGF0Zm9ybVdlYlZpZXdNYWMubW0KKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9tYWMvUGxhdGZvcm1XZWJWaWV3TWFjLm1tCkBAIC0xMTAsOCArMTEwLDYg
QEAgUGxhdGZvcm1XZWJWaWV3Ojp+UGxhdGZvcm1XZWJWaWV3KCkKIHsKICAgICBtX3dpbmRvdy5w
bGF0Zm9ybVdlYlZpZXcgPSBudWxscHRyOwogICAgIFttX3dpbmRvdyBjbG9zZV07Ci0gICAgW21f
d2luZG93IHJlbGVhc2VdOwotICAgIFttX3ZpZXcgcmVsZWFzZV07CiB9CiAKIFBsYXRmb3JtV2lu
ZG93IFBsYXRmb3JtV2ViVmlldzo6a2V5V2luZG93KCkKQEAgLTE2Myw3ICsxNjEsNiBAQCB2b2lk
IFBsYXRmb3JtV2ViVmlldzo6YWRkQ2hyb21lSW5wdXRGaWVsZCgpCiAgICAgTlNUZXh0RmllbGQg
KnRleHRGaWVsZCA9IFtbTlNUZXh0RmllbGQgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVj
dCgwLCAwLCAxMDAsIDIwKV07CiAgICAgdGV4dEZpZWxkLnRhZyA9IDE7CiAgICAgW1ttX3dpbmRv
dyBjb250ZW50Vmlld10gYWRkU3Vidmlldzp0ZXh0RmllbGRdOwotICAgIFt0ZXh0RmllbGQgcmVs
ZWFzZV07CiAKICAgICBOU1ZpZXcgKnZpZXcgPSBwbGF0Zm9ybVZpZXcoKTsKICAgICBbdGV4dEZp
ZWxkIHNldE5leHRLZXlWaWV3OnZpZXddOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9tYWMvVGVzdENvbnRyb2xsZXJNYWMubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21h
Yy9UZXN0Q29udHJvbGxlck1hYy5tbQppbmRleCBmOWRkMzlkOWI3NWI4MjQwODc4MWY1OTQ1YTBi
NzlmNDNiMjYyZWU3Li44M2M0YzgxOTM5Y2QyZjU3YTVlOGY1OGYxOGU2OTI4ZDNhZDg1MjA5IDEw
MDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9UZXN0Q29udHJvbGxlck1hYy5t
bQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9UZXN0Q29udHJvbGxlck1hYy5tbQpA
QCAtMTU1LDcgKzE1NSw3IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtQ29uZmlndXJl
Vmlld0ZvclRlc3QoY29uc3QgVGVzdEludm9jYXRpb24mIHRlc3QpCiAKIHN0YXRpYyBOU1NldCAq
YWxsb3dlZEZvbnRGYW1pbHlTZXQoKQogewotICAgIHN0YXRpYyBOU1NldCAqZm9udEZhbWlseVNl
dCA9IFtbTlNTZXQgc2V0V2l0aE9iamVjdHM6CisgICAgc3RhdGljIE5TU2V0ICpmb250RmFtaWx5
U2V0ID0gW05TU2V0IHNldFdpdGhPYmplY3RzOgogICAgICAgICBAIkFoZW0iLAogICAgICAgICBA
IkFsIEJheWFuIiwKICAgICAgICAgQCJBbWVyaWNhbiBUeXBld3JpdGVyIiwKQEAgLTI3NywxNiAr
Mjc3LDE2IEBAIHN0YXRpYyBOU1NldCAqYWxsb3dlZEZvbnRGYW1pbHlTZXQoKQogICAgICAgICBA
IldpbmdkaW5ncyIsCiAgICAgICAgIEAiWmFwZiBEaW5nYmF0cyIsCiAgICAgICAgIEAiWmFwZmlu
byIsCi0gICAgICAgIG5pbF0gcmV0YWluXTsKKyAgICAgICAgbmlsXTsKIAogICAgIHJldHVybiBm
b250RmFtaWx5U2V0OwogfQogCiBzdGF0aWMgTlNTZXQgKnN5c3RlbUhpZGRlbkZvbnRGYW1pbHlT
ZXQoKQogewotICAgIHN0YXRpYyBOU1NldCAqZm9udEZhbWlseVNldCA9IFtbTlNTZXQgc2V0V2l0
aE9iamVjdHM6CisgICAgc3RhdGljIE5TU2V0ICpmb250RmFtaWx5U2V0ID0gW05TU2V0IHNldFdp
dGhPYmplY3RzOgogICAgICAgICBAIi5MdWNpZGFHcmFuZGVVSSIsCi0gICAgICAgIG5pbF0gcmV0
YWluXTsKKyAgICAgICAgbmlsXTsKIAogICAgIHJldHVybiBmb250RmFtaWx5U2V0OwogfQpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvV2ViS2l0VGVzdFJ1bm5lckRyYWdn
aW5nSW5mby5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1dlYktpdFRlc3RSdW5uZXJE
cmFnZ2luZ0luZm8ubW0KaW5kZXggNTY1ZGIyZjEyNGY4ZjJjMzI0OGU5YzMyMWJjYzhlOWM4ZGRj
YjhlMi4uYmNlZWJlY2UxYmY0Njc4MDVhYjczYWMxZTU1NjZlNDIyNGI0MDAyZSAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvV2ViS2l0VGVzdFJ1bm5lckRyYWdnaW5nSW5m
by5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9XZWJLaXRUZXN0UnVubmVyRHJh
Z2dpbmdJbmZvLm1tCkBAIC00MSwyMyArNDEsMTUgQEAgLSAoaWQpaW5pdFdpdGhJbWFnZTooTlNJ
bWFnZSAqKWltYWdlIG9mZnNldDooTlNTaXplKW9mZnNldCBwYXN0ZWJvYXJkOihOU1Bhc3RlYm8K
ICAgICBpZiAoIXNlbGYpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBfZHJhZ2dlZEltYWdl
ID0gW2ltYWdlIHJldGFpbl07Ci0gICAgX2RyYWdnaW5nUGFzdGVib2FyZCA9IFtwYXN0ZWJvYXJk
IHJldGFpbl07Ci0gICAgX2RyYWdnaW5nU291cmNlID0gW3NvdXJjZSByZXRhaW5dOworICAgIF9k
cmFnZ2VkSW1hZ2UgPSBpbWFnZTsKKyAgICBfZHJhZ2dpbmdQYXN0ZWJvYXJkID0gcGFzdGVib2Fy
ZDsKKyAgICBfZHJhZ2dpbmdTb3VyY2UgPSBzb3VyY2U7CiAgICAgX29mZnNldCA9IG9mZnNldDsK
ICAgICAKICAgICByZXR1cm4gc2VsZjsKIH0KIAotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgW19k
cmFnZ2VkSW1hZ2UgcmVsZWFzZV07Ci0gICAgW19kcmFnZ2luZ1Bhc3RlYm9hcmQgcmVsZWFzZV07
Ci0gICAgW19kcmFnZ2luZ1NvdXJjZSByZWxlYXNlXTsKLSAgICBbc3VwZXIgZGVhbGxvY107Ci19
Ci0KLS0gKE5TV2luZG93ICopZHJhZ2dpbmdEZXN0aW5hdGlvbldpbmRvdyAKKy0gKE5TV2luZG93
ICopZHJhZ2dpbmdEZXN0aW5hdGlvbldpbmRvdwogewogICAgIHJldHVybiBbVGVzdENvbnRyb2xs
ZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpIHdpbmRvd107CiB9
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9XZWJLaXRUZXN0UnVubmVy
UGFzdGVib2FyZC5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1dlYktpdFRlc3RSdW5u
ZXJQYXN0ZWJvYXJkLm1tCmluZGV4IGFiY2RmNDE0NzUxN2VjYmU1ZmM1ZGJmNTdjNjVhYjFkNGFm
ZmI4NGIuLjk2M2FmZmUyNzVkM2Y3MjVlNGYzZTYzYzM3NmI4OWYxNmI2MGQ2M2UgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1dlYktpdFRlc3RSdW5uZXJQYXN0ZWJvYXJk
Lm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1dlYktpdFRlc3RSdW5uZXJQYXN0
ZWJvYXJkLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNS0yMDE4
IEFwcGxlLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA1
LTIwMTggQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykg
MjAwNyBHcmFoYW0gRGVubmlzIChncmFoYW0uZGVubmlzQGdtYWlsLmNvbSkKICAqIENvcHlyaWdo
dCAoQykgMjAwNyBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgogICoKQEAgLTI4LDggKzI4
LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJLaXRUZXN0UnVubmVyUGFz
dGVib2FyZC5oIgogCi0jaW5jbHVkZSA8b2JqYy9ydW50aW1lLmg+Ci0KIEBpbnRlcmZhY2UgTG9j
YWxQYXN0ZWJvYXJkIDogTlNQYXN0ZWJvYXJkCiB7CiAgICAgTlNNdXRhYmxlQXJyYXkgKnR5cGVz
QXJyYXk7CkBAIC00Miw2ICs0MCwxMSBAQCBAaW50ZXJmYWNlIExvY2FsUGFzdGVib2FyZCA6IE5T
UGFzdGVib2FyZAogLShpZClpbml0V2l0aE5hbWU6KE5TU3RyaW5nICopbmFtZTsKIEBlbmQKIAor
QGludGVyZmFjZSBOU1Bhc3RlYm9hcmQgKFN1cGVySGVscGVycykKKysgKGluc3RhbmNldHlwZSlz
dXBlckFsbG9jOworKyAoaW5zdGFuY2V0eXBlKXN1cGVyQWxsb2NXaXRoWm9uZTooTlNab25lICop
em9uZTsKK0BlbmQKKwogc3RhdGljIE5TTXV0YWJsZURpY3Rpb25hcnkgKmxvY2FsUGFzdGVib2Fy
ZHM7CiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJLaXRUZXN0UnVubmVyUGFzdGVib2FyZApAQCAtNTks
NyArNjIsNiBAQCArIChOU1Bhc3RlYm9hcmQgKilfcGFzdGVib2FyZFdpdGhOYW1lOihOU1N0cmlu
ZyAqKW5hbWUKICAgICAgICAgcmV0dXJuIHBhc3RlYm9hcmQ7CiAgICAgcGFzdGVib2FyZCA9IFtb
TG9jYWxQYXN0ZWJvYXJkIGFsbG9jXSBpbml0V2l0aE5hbWU6bmFtZV07CiAgICAgW2xvY2FsUGFz
dGVib2FyZHMgc2V0T2JqZWN0OnBhc3RlYm9hcmQgZm9yS2V5Om5hbWVdOwotICAgIFtwYXN0ZWJv
YXJkIHJlbGVhc2VdOwogICAgIHJldHVybiBwYXN0ZWJvYXJkOwogfQogCkBAIC03MSw3ICs3Myw2
IEBAIC0gKHZvaWQpX3VwZGF0ZVR5cGVDYWNoZUlmTmVlZGVkCiAKICsgKHZvaWQpcmVsZWFzZUxv
Y2FsUGFzdGVib2FyZHMKIHsKLSAgICBbbG9jYWxQYXN0ZWJvYXJkcyByZWxlYXNlXTsKICAgICBs
b2NhbFBhc3RlYm9hcmRzID0gbmlsOwogfQogCkBAIC04NCwxMiArODUsMzIgQEAgLSAoTlNJbnRl
Z2VyKWRlY2xhcmVUeXBlOihOU1N0cmluZyAqKXR5cGUgb3duZXI6KGlkKW5ld093bmVyCiAKIEBl
bmQKIAorQGltcGxlbWVudGF0aW9uIE5TUGFzdGVib2FyZCAoU3VwZXJIZWxwZXJzKQorCisrIChp
bnN0YW5jZXR5cGUpc3VwZXJBbGxvYworeworICAgIHJldHVybiBbc3VwZXIgYWxsb2NdOworfQor
CisrIChpbnN0YW5jZXR5cGUpc3VwZXJBbGxvY1dpdGhab25lOihOU1pvbmUgKil6b25lCit7Cisg
ICAgcmV0dXJuIFtzdXBlciBhbGxvY1dpdGhab25lOnpvbmVdOworfQorCitAZW5kCisKIEBpbXBs
ZW1lbnRhdGlvbiBMb2NhbFBhc3RlYm9hcmQKIAogKyAoaWQpYWxsb2MKIHsKICAgICAvLyBOZWVk
IHRvIHNraXAgb3ZlciBbTlNQYXN0ZWJvYXJkIGFsbG9jXSwgd2hpY2ggd29uJ3QgYWxsb2NhdGUg
YSBuZXcgb2JqZWN0LgotICAgIHJldHVybiBjbGFzc19jcmVhdGVJbnN0YW5jZShzZWxmLCAwKTsK
KyAgICByZXR1cm4gW3NlbGYgc3VwZXJBbGxvY107Cit9CisKKysgKGlkKWFsbG9jV2l0aFpvbmU6
KE5TWm9uZSAqKXpvbmUKK3sKKyAgICAvLyBOZWVkIHRvIHNraXAgb3ZlciBbTlNQYXN0ZWJvYXJk
IGFsbG9jV2l0aFpvbmU6XSwgd2hpY2ggd29uJ3QgYWxsb2NhdGUgYSBuZXcgb2JqZWN0LgorICAg
IHJldHVybiBbc2VsZiBzdXBlckFsbG9jV2l0aFpvbmU6em9uZV07CiB9CiAKIC0gKGlkKWluaXRX
aXRoTmFtZTooTlNTdHJpbmcgKiluYW1lCkBAIC0xMDQsMTUgKzEyNSw2IEBAIC0gKGlkKWluaXRX
aXRoTmFtZTooTlNTdHJpbmcgKiluYW1lCiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKLS0gKHZvaWQp
ZGVhbGxvYwotewotICAgIFt0eXBlc0FycmF5IHJlbGVhc2VdOwotICAgIFt0eXBlc1NldCByZWxl
YXNlXTsKLSAgICBbZGF0YUJ5VHlwZSByZWxlYXNlXTsKLSAgICBbcGFzdGVib2FyZE5hbWUgcmVs
ZWFzZV07Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCiAtIChOU1N0cmluZyAqKW5hbWUKIHsK
ICAgICByZXR1cm4gcGFzdGVib2FyZE5hbWU7CkBAIC0xNDEsNyArMTUzLDYgQEAgLSAoTlNJbnRl
Z2VyKWFkZFR5cGVzOihOU0FycmF5ICopbmV3VHlwZXMgb3duZXI6KGlkKW5ld093bmVyCiAgICAg
ICAgICAgICBzZXRUeXBlID0gW3R5cGUgY29weV07CiAgICAgICAgICAgICBbdHlwZXNBcnJheSBh
ZGRPYmplY3Q6c2V0VHlwZV07CiAgICAgICAgICAgICBbdHlwZXNTZXQgYWRkT2JqZWN0OnNldFR5
cGVdOwotICAgICAgICAgICAgW3NldFR5cGUgcmVsZWFzZV07CiAgICAgICAgIH0KICAgICAgICAg
aWYgKG5ld093bmVyICYmIFtuZXdPd25lciByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHBh
c3RlYm9hcmQ6cHJvdmlkZURhdGFGb3JUeXBlOildKQogICAgICAgICAgICAgW25ld093bmVyIHBh
c3RlYm9hcmQ6c2VsZiBwcm92aWRlRGF0YUZvclR5cGU6c2V0VHlwZV07CmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9XZWJLaXRUZXN0UnVubmVyV2luZG93Lm1tIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvV2ViS2l0VGVzdFJ1bm5lcldpbmRvdy5tbQppbmRleCBi
NDU5OTVhMWFlYzI2MTI2NWQ1ZmM4ZjkzYWIzMzQzMzA0MWE0MTcxLi5hNWExODQzMzZlNjlmYWU2
N2I0YjVlZjVmMjZlN2JhYWU2ZDVhNTFiIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL21hYy9XZWJLaXRUZXN0UnVubmVyV2luZG93Lm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvbWFjL1dlYktpdFRlc3RSdW5uZXJXaW5kb3cubW0KQEAgLTU0LDcgKzU0LDYgQEAgLSAo
dm9pZClkZWFsbG9jCiB7CiAgICAgYWxsV2luZG93cy5yZW1vdmVGaXJzdChzZWxmKTsKICAgICBB
U1NFUlQoIWFsbFdpbmRvd3MuY29udGFpbnMoc2VsZikpOwotICAgIFtzdXBlciBkZWFsbG9jXTsK
IH0KIAogLSAoQk9PTClpc0tleVdpbmRvdwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9tYWMvbWFpbi5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL21haW4ubW0KaW5k
ZXggYzExMmNiMTFjMDM1OTQxOTViOGVmZjVlNzllMzU1YTBlZTYzMmZhZi4uOWI1YTlmOTNhYzcz
ZDhkZGMzY2M0MWEwZThhYjVmN2E4NTZkYTY1YyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9tYWMvbWFpbi5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9tYWlu
Lm1tCkBAIC01Myw3ICs1Myw3IEBAIHN0YXRpYyB2b2lkIHNldERlZmF1bHRzVG9Db25zaXN0ZW50
VmFsdWVzRm9yVGVzdGluZygpCiBzdGF0aWMgdm9pZCBkaXNhYmxlQXBwTmFwSW5VSVByb2Nlc3Mo
KQogewogICAgIE5TQWN0aXZpdHlPcHRpb25zIG9wdGlvbnMgPSAoTlNBY3Rpdml0eVVzZXJJbml0
aWF0ZWRBbGxvd2luZ0lkbGVTeXN0ZW1TbGVlcCB8IE5TQWN0aXZpdHlMYXRlbmN5Q3JpdGljYWwp
ICYgfihOU0FjdGl2aXR5U3VkZGVuVGVybWluYXRpb25EaXNhYmxlZCB8IE5TQWN0aXZpdHlBdXRv
bWF0aWNUZXJtaW5hdGlvbkRpc2FibGVkKTsKLSAgICBzdGF0aWMgaWQgYXNzZXJ0aW9uID0gW1tb
TlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10gYmVnaW5BY3Rpdml0eVdpdGhPcHRpb25zOm9wdGlv
bnMgcmVhc29uOkAiV2ViS2l0VGVzdFJ1bm5lciBzaG91bGQgbm90IGJlIHN1YmplY3QgdG8gcHJv
Y2VzcyBzdXBwcmVzc2lvbiJdIHJldGFpbl07CisgICAgc3RhdGljIGlkIGFzc2VydGlvbiA9IFtb
TlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10gYmVnaW5BY3Rpdml0eVdpdGhPcHRpb25zOm9wdGlv
bnMgcmVhc29uOkAiV2ViS2l0VGVzdFJ1bm5lciBzaG91bGQgbm90IGJlIHN1YmplY3QgdG8gcHJv
Y2VzcyBzdXBwcmVzc2lvbiJdOwogICAgIEFTU0VSVF9VTlVTRUQoYXNzZXJ0aW9uLCBhc3NlcnRp
b24pOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348777</attachid>
            <date>2018-09-03 10:05:51 -0700</date>
            <delta_ts>2019-12-21 16:48:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189228-20180903100550.patch</filename>
            <type>text/plain</type>
            <size>43149</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1NTk5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNWE0MzNhZWVmNTA2YjZmNDY1NTYwMTNiZmJiNDM2MWJm
MjE5YWMxYS4uMzAwZWQ4M2JlODU1ZWI2OWMyM2NlMWY2ZmE1Mjg5MzdiNzdhYTg4YSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEy
NSBAQAorMjAxOC0wOS0wMiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgW0NvY29hXSBUdXJuIG9uIEFSQyBmb3IgV2ViS2l0VGVzdFJ1bm5lcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5MjI4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0UnVubmVyU2hhcmVkL0V2
ZW50U2VyaWFsaXphdGlvbi9tYWMvRXZlbnRTZXJpYWxpemVyTWFjLm1tOgorICAgICAgICAoK1tF
dmVudFNlcmlhbGl6ZXIgZGljdGlvbmFyeUZvckV2ZW50OnJlbGF0aXZlVG9UaW1lOl0pOiBSZW1v
dmVkIGF1dG9yZWxlYXNlLgorCisgICAgICAgICogVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9MYXlv
dXRUZXN0U3BlbGxDaGVja2VyLm1tOgorICAgICAgICAoLVtMYXlvdXRUZXN0U3BlbGxDaGVja2Vy
IHNldFJlc3VsdHNGcm9tSlNPYmplY3Q6aW5Db250ZXh0Ol0pOiBSZW1vdmVkIGF1dG9yZWxlYXNl
LgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29u
ZmlnOiBBZGRlZCBDTEFOR19FTkFCTEVfT0JKQ19BUkMuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlcklPUy5tbToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmFjY2Vzc2libGVFbGVtZW50
QnlJZCk6IFVzZSBhIF9fYnJpZGdlIGNhc3QuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJJT1MubW06CisgICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjppc0VxdWFsKTogRGl0dG8uCisKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50SU9TLm1tOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50KTogUmVtb3ZlZCByZXRhaW4uCisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6On5BY2Nlc3NpYmlsaXR5VUlFbGVtZW50KTogUmVtb3ZlZCByZWxl
YXNlLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZW1vdmVOb3RpZmlj
YXRpb25MaXN0ZW5lcik6IFJlbW92ZWQgcmVsZWFzZS4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6bGluZVRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIpOiBVc2UgYSBf
X2JyaWRnZSBjYXN0LgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0
TWFya2VyUmFuZ2VGb3JFbGVtZW50KTogRGl0dG8uCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUxlbmd0aCk6IERpdHRvLgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmV2aW91c1RleHRNYXJrZXIpOiBEaXR0by4KKyAg
ICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFRleHRNYXJrZXIpOiBEaXR0
by4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nRm9yVGV4dE1h
cmtlclJhbmdlKTogRGl0dG8uCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMpOiBEaXR0by4KKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6c3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKTogRGl0
dG8uCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmVuZFRleHRNYXJrZXJG
b3JUZXh0TWFya2VyUmFuZ2UpOiBEaXR0by4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6YWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKTogRGl0dG8uCisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZU1hdGNoZXNU
ZXh0TmVhck1hcmtlcnMpOiBEaXR0by4KKyAgICAgICAgKFdUUjo6X0NHUGF0aEVudW1lcmF0aW9u
SXRlcmF0aW9uKTogRGl0dG8uCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnBhdGhEZXNjcmlwdGlvbiBjb25zdCk6IERpdHRvLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIu
bW06CisgICAgICAgICgtW0FjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyIGRlYWxsb2Nd
KTogUmVtb3ZlZCBbc3VwZXIgZGVhbGxvY10uCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tOgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KTog
UmVtb3ZlZCByZXRhaW4uCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6On5B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50KTogUmVtb3ZlZCByZWxlYXNlLgorICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5lcik6IFJlbW92
ZWQgcmVsZWFzZS4KKyAgICAgICAgKFdUUjo6Y3JlYXRlSlNTdHJpbmdSZWYpOiBSZW1vdmVkIGF1
dG9yZWxlYXNlLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJv
bGxlckNvY29hLm1tOgorICAgICAgICAoV1RSOjppbml0aWFsaXplV2ViVmlld0NvbmZpZ3VyYXRp
b24pOiBSZW1vdmVkIHJlbGVhc2UuCisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpjb2Nv
YVBsYXRmb3JtSW5pdGlhbGl6ZSk6IFJlbW92ZWQgcmVsZWFzZS4KKyAgICAgICAgKFdUUjo6VGVz
dENvbnRyb2xsZXI6OnBsYXRmb3JtQ3JlYXRlT3RoZXJQYWdlKTogUmVtb3ZlZCBhdXRvcmVsZWFz
ZS4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdFJ1bm5lcldLV2ViVmll
dy5tbToKKyAgICAgICAgKC1bVGVzdFJ1bm5lcldLV2ViVmlldyBkZWFsbG9jXSk6IFJlbW92ZWQg
W3N1cGVyIGRlYWxsb2NdIGFuZCBhbHNvIG1hbnkKKyAgICAgICAgY2FzZXMgb2Ygc2V0dGluZyBw
cm9wZXJ0aWVzIHRvIG5pbCB0aGF0IHdlcmUgb25seSBwcmVzZW50IGZvciBtZW1vcnkKKyAgICAg
ICAgbWFuYWdlbWVudCByZWFzb25zLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9pb3Mv
R2VuZXJhdGVkVG91Y2hlc0RlYnVnV2luZG93Lm1tOgorICAgICAgICAoLVtHZW5lcmF0ZWRUb3Vj
aGVzRGVidWdXaW5kb3cgZGVhbGxvY10pOiBSZW1vdmVkIHJlbGVhc2UgYW5kIFtzdXBlciBkZWFs
bG9jXS4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvaW9zL0hJREV2ZW50R2VuZXJhdG9y
Lm1tOgorICAgICAgICAoLVtISURFdmVudEdlbmVyYXRvciBkZWFsbG9jXSk6IERlbGV0ZWQuCisg
ICAgICAgICgtW0hJREV2ZW50R2VuZXJhdG9yIF9zZW5kTWFya2VySElERXZlbnRXaXRoQ29tcGxl
dGlvbkJsb2NrOl0pOiBSZW1vdmVkCisgICAgICAgIEJsb2NrX2NvcHkuCisgICAgICAgICgtW0hJ
REV2ZW50R2VuZXJhdG9yIG1hcmtlckV2ZW50UmVjZWl2ZWQ6XSk6IFJlbW92ZWQgQmxvY2tfcmVs
ZWFzZS4KKyAgICAgICAgKC1bSElERXZlbnRHZW5lcmF0b3IgaW50ZXJwb2xhdGVkRXZlbnRzOl0p
OiBSZW1vdmVkIHJlbGVhc2UuCisgICAgICAgICgtW0hJREV2ZW50R2VuZXJhdG9yIHNlbmRFdmVu
dFN0cmVhbTpjb21wbGV0aW9uQmxvY2s6XSk6IFJlbW92ZWQgYXV0b3JlbGVhc2UuCisKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL2lvcy9QbGF0Zm9ybVdlYlZpZXdJT1MubW06CisgICAgICAg
ICgtW1dlYktpdFRlc3RSdW5uZXJXaW5kb3cgZGVhbGxvY10pOiBSZW1vdmVkIFtzdXBlciBkZWFs
bG9jXS4KKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3OjpQbGF0Zm9ybVdlYlZpZXcpOiBS
ZW1vdmVkIHJlbGVhc2UuCisgICAgICAgIChXVFI6OlBsYXRmb3JtV2ViVmlldzo6flBsYXRmb3Jt
V2ViVmlldyk6IFJlbW92ZWQgcmVsZWFzZS4KKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3
OjphZGRDaHJvbWVJbnB1dEZpZWxkKTogUmVtb3ZlZCByZWxlYXNlLgorICAgICAgICAoV1RSOjpQ
bGF0Zm9ybVdlYlZpZXc6OnJlbW92ZUNocm9tZUlucHV0RmllbGQpOiBSZW1vdmVkIHJlbGVhc2Uu
CisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2lvcy9UZXN0Q29udHJvbGxlcklPUy5tbToK
KyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmluaXRpYWxpemVJbmplY3RlZEJ1bmRsZVBh
dGgpOiBVc2UgX19icmlkZ2UgY2FzdC4KKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6Omlu
aXRpYWxpemVUZXN0UGx1Z2luRGlyZWN0b3J5KTogRGl0dG8uCisKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW06CisgICAgICAgIChXVFI6OlVJ
U2NyaXB0Q29udHJvbGxlcjo6YWNjZXNzaWJpbGl0eVNwZWFrU2VsZWN0aW9uQ29udGVudCBjb25z
dCk6CisgICAgICAgIFVzZSBfX2JyaWRnZSBjYXN0LgorICAgICAgICAoV1RSOjpVSVNjcmlwdENv
bnRyb2xsZXI6OmVudGVyVGV4dCk6IERpdHRvLgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRy
b2xsZXI6OnNlbGVjdEZvcm1Qb3BvdmVyVGl0bGUgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdU
Ujo6VUlTY3JpcHRDb250cm9sbGVyOjp0ZXh0Q29udGVudFR5cGUgY29uc3QpOiBEaXR0by4KKyAg
ICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjpmb3JtSW5wdXRMYWJlbCBjb25zdCk6IERp
dHRvLgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6OnNjcm9sbGluZ1RyZWVBc1Rl
eHQgY29uc3QpOiBEaXR0by4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvbWFjL1BsYXRm
b3JtV2ViVmlld01hYy5tbToKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3Ojp+UGxhdGZv
cm1XZWJWaWV3KTogUmVtb3ZlZCByZWxlYXNlLgorICAgICAgICAoV1RSOjpQbGF0Zm9ybVdlYlZp
ZXc6OmFkZENocm9tZUlucHV0RmllbGQpOiBSZW1vdmVkIHJlbGVhc2UuCisKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL21hYy9UZXN0Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKFdUUjo6
YWxsb3dlZEZvbnRGYW1pbHlTZXQpOiBSZW1vdmVkIHJldGFpbi4KKyAgICAgICAgKFdUUjo6c3lz
dGVtSGlkZGVuRm9udEZhbWlseVNldCk6IFJlbW92ZWQgcmV0YWluLgorCisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9tYWMvV2ViS2l0VGVzdFJ1bm5lckRyYWdnaW5nSW5mby5tbToKKyAgICAg
ICAgKC1bV2ViS2l0VGVzdFJ1bm5lckRyYWdnaW5nSW5mbyBkcmFnZ2luZ0Rlc3RpbmF0aW9uV2lu
ZG93XSk6IFJlbW92ZWQgcmV0YWluLgorICAgICAgICAoLVtXZWJLaXRUZXN0UnVubmVyRHJhZ2dp
bmdJbmZvIGRlYWxsb2NdKTogRGVsZXRlZC4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
bWFjL1dlYktpdFRlc3RSdW5uZXJQYXN0ZWJvYXJkLm1tOgorICAgICAgICAoK1tXZWJLaXRUZXN0
UnVubmVyUGFzdGVib2FyZCBfcGFzdGVib2FyZFdpdGhOYW1lOl0pOiBSZW1vdmVkIHJlbGVhc2Uu
CisgICAgICAgICgrW1dlYktpdFRlc3RSdW5uZXJQYXN0ZWJvYXJkIHJlbGVhc2VMb2NhbFBhc3Rl
Ym9hcmRzXSk6IFJlbW92ZWQgcmVsZWFzZS4KKyAgICAgICAgTWV0aG9kIG5hbWUgaXMgc3RpbGwg
T0sgYmVjYXVzZSBzZXR0aW5nIGxvY2FsUGFzdGVib2FyZHMgdG8gbmlsIHdpbGwKKyAgICAgICAg
c3RpbGwgcmVsZWFzZSB0aGVtLgorICAgICAgICAoK1tOU1Bhc3RlYm9hcmQgc3VwZXJBbGxvY10p
OiBBZGRlZC4gSGVscGVyIHNvIHRoYXQgTG9jYWxQYXN0ZWJvYXJkIGNhbgorICAgICAgICBieXBh
c3MgK1tOU1Bhc3RlYm9hcmQgYWxsb2NdLgorICAgICAgICAoK1tOU1Bhc3RlYm9hcmQgc3VwZXJB
bGxvY1dpdGhab25lOl0pOiBEaXR0by4KKyAgICAgICAgKCtbTG9jYWxQYXN0ZWJvYXJkIGFsbG9j
XSk6IENhbGwgc3VwZXJBbGxvYyBpbnN0ZWFkIG9mIGNsYXNzX2NyZWF0ZUluc3RhbmNlLgorICAg
ICAgICBUaGlzIGlzIGEgZGlmZmVyZW50IHdheSB0byBhY2hpZXZlIHRoZSAiYnlwYXNzIE5TUGFz
dGVib2FyZCIgYmVoYXZpb3Igd2UgbmVlZC4KKyAgICAgICAgKCtbTG9jYWxQYXN0ZWJvYXJkIGFs
bG9jV2l0aFpvbmU6XSk6IEFkZGVkLiBDYWxscyBzdXBlckFsbG9jV2l0aFpvbmU6IGZvciB0aGUK
KyAgICAgICAgc2FtZSByZWFzb24gYXMgYWJvdmUuIE5lZWRlZCBiZWNhdXNlLCBhdCBsZWFzdCBh
dCB0aGlzIHRpbWUsICtbTlNPYmplY3QgYWxsb2NdCisgICAgICAgIGNhbGxzICthbGxvY1dpdGha
b25lOiBzbyB3ZSBoYXZlIHRvIG92ZXJyaWRlIGJvdGguCisgICAgICAgICgtW0xvY2FsUGFzdGVi
b2FyZCBkZWFsbG9jXSk6IERlbGV0ZWQuCisgICAgICAgICgtW0xvY2FsUGFzdGVib2FyZCBhZGRU
eXBlczpvd25lcjpdKTogUmVtb3ZlZCByZWxlYXNlLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9tYWMvV2ViS2l0VGVzdFJ1bm5lcldpbmRvdy5tbToKKyAgICAgICAgKC1bV2ViS2l0VGVz
dFJ1bm5lcldpbmRvdyBkZWFsbG9jXSk6IFJlbW92ZWQgW3N1cGVyIGRlYWxsb2NdLgorCisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9tYWMvbWFpbi5tbToKKyAgICAgICAgKGRpc2FibGVBcHBO
YXBJblVJUHJvY2Vzcyk6IFJlbW92ZWQgcmV0YWluLgorCiAyMDE4LTA5LTAxICBNaWNoYWVsIENh
dGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBbV1BFXSAyLjIxLjkx
IGZhaWxzIHRvIGJ1aWxkIHdpdGggRU5BQkxFX01JTklCUk9XU0VSCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0UnVubmVyU2hhcmVkL0V2ZW50U2VyaWFsaXphdGlvbi9tYWMvRXZlbnRTZXJpYWxpemVy
TWFjLm1tIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9FdmVudFNlcmlhbGl6YXRpb24vbWFjL0V2
ZW50U2VyaWFsaXplck1hYy5tbQppbmRleCAyM2FlYjE1YjRkNmQ5ZTRiOTgxY2M0NjVlODM1ZWFh
NDNiODA1NzIwLi43YmI2MmI0ZDZmZGFhNjYxNGM1MzFmOGJiMTBmMGRlNGY2YzNmYzMxIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL0V2ZW50U2VyaWFsaXphdGlvbi9tYWMvRXZl
bnRTZXJpYWxpemVyTWFjLm1tCisrKyBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvRXZlbnRTZXJp
YWxpemF0aW9uL21hYy9FdmVudFNlcmlhbGl6ZXJNYWMubW0KQEAgLTE5OCw3ICsxOTgsNyBAQCAr
IChOU0RpY3Rpb25hcnkgKilkaWN0aW9uYXJ5Rm9yRXZlbnQ6KENHRXZlbnRSZWYpcmF3RXZlbnQg
cmVsYXRpdmVUb1RpbWU6KENHRXZlbgogICAgIFJldGFpblB0cjxDR0V2ZW50UmVmPiBwbGFpbkV2
ZW50ID0gYWRvcHRDRihDR0V2ZW50Q3JlYXRlKE5VTEwpKTsKICAgICBDR0V2ZW50UmVmIHJhd1Bs
YWluRXZlbnQgPSBwbGFpbkV2ZW50LmdldCgpOwogCi0gICAgTlNNdXRhYmxlRGljdGlvbmFyeSAq
ZGljdCA9IFtbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsK
KyAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpkaWN0ID0gW1tOU011dGFibGVEaWN0aW9uYXJ5IGFs
bG9jXSBpbml0XTsKIAogICAgIEZPUl9FQUNIX0NHRVZFTlRfSU5URUdFUl9GSUVMRChMT0FEX0lO
VEVHRVJfRklFTERfRlJPTV9FVkVOVCk7CiAgICAgRk9SX0VBQ0hfQ0dFVkVOVF9ET1VCTEVfRklF
TEQoTE9BRF9ET1VCTEVfRklFTERfRlJPTV9FVkVOVCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
UnVubmVyU2hhcmVkL2NvY29hL0xheW91dFRlc3RTcGVsbENoZWNrZXIubW0gYi9Ub29scy9UZXN0
UnVubmVyU2hhcmVkL2NvY29hL0xheW91dFRlc3RTcGVsbENoZWNrZXIubW0KaW5kZXggMjMxYWI1
NTI4ZTRkOTU1MjZmNzFhY2JhYzZlODkyZTFjN2FiN2U0My4uZjkxMzFhZjIxMjg5OGI1MzhiMTdi
OWZmYzA3MTFhN2Q1NGVjOGNjYSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9j
b2NvYS9MYXlvdXRUZXN0U3BlbGxDaGVja2VyLm1tCisrKyBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFy
ZWQvY29jb2EvTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5tbQpAQCAtMjUxLDcgKzI1MSw3IEBAIC0g
KHZvaWQpc2V0UmVzdWx0c0Zyb21KU09iamVjdDooSlNPYmplY3RSZWYpcmVzdWx0c09iamVjdCBp
bkNvbnRleHQ6KEpTQ29udGV4dFJlCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IEpTUHJvcGVydHlOYW1lQXJyYXlSZWxlYXNlKGRldGFpbHNPYmplY3RQcm9wZXJ0aWVzKTsKICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIFtyZXN1bHRzRm9yV29yZCBhZGRPYmplY3Q6W1tbTGF5
b3V0VGVzdFRleHRDaGVja2luZ1Jlc3VsdCBhbGxvY10gaW5pdFdpdGhUeXBlOm5zVGV4dENoZWNr
aW5nVHlwZShXVEZNb3ZlKHR5cGVWYWx1ZSkpIHJhbmdlOk5TTWFrZVJhbmdlKGZyb21WYWx1ZSwg
dG9WYWx1ZSAtIGZyb21WYWx1ZSkgcmVwbGFjZW1lbnQ6KF9fYnJpZGdlIE5TU3RyaW5nICopcmVw
bGFjZW1lbnRUZXh0LmdldCgpIGRldGFpbHM6ZGV0YWlscy5nZXQoKV0gYXV0b3JlbGVhc2VdXTsK
KyAgICAgICAgICAgIFtyZXN1bHRzRm9yV29yZCBhZGRPYmplY3Q6W1tMYXlvdXRUZXN0VGV4dENo
ZWNraW5nUmVzdWx0IGFsbG9jXSBpbml0V2l0aFR5cGU6bnNUZXh0Q2hlY2tpbmdUeXBlKFdURk1v
dmUodHlwZVZhbHVlKSkgcmFuZ2U6TlNNYWtlUmFuZ2UoZnJvbVZhbHVlLCB0b1ZhbHVlIC0gZnJv
bVZhbHVlKSByZXBsYWNlbWVudDooX19icmlkZ2UgTlNTdHJpbmcgKilyZXBsYWNlbWVudFRleHQu
Z2V0KCkgZGV0YWlsczpkZXRhaWxzLmdldCgpXV07CiAgICAgICAgIH0KICAgICAgICAgYXV0byBj
ZlRleHRUb0NoZWNrID0gYWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCB0ZXh0VG9DaGVjaykpOwogICAgICAgICBbcmVzdWx0cyBzZXRPYmplY3Q6cmVzdWx0
c0ZvcldvcmQuZ2V0KCkgZm9yS2V5OihfX2JyaWRnZSBOU1N0cmluZyAqKWNmVGV4dFRvQ2hlY2su
Z2V0KCldOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Db25maWd1cmF0aW9u
cy9CYXNlLnhjY29uZmlnIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Db25maWd1cmF0aW9ucy9C
YXNlLnhjY29uZmlnCmluZGV4IDZlZmVkYTc1MmRhMzgyNGJjMWU3N2NiOWZmOTBmOTYzYTQ5MmRi
NTYuLmYxODk2ZDhlZTQxZDJiZjU3Nzk1OTBmYzlkNGM5OTkyMDY3NDY1ZDggMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvQ29uZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZpZworKysg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0NvbmZpZ3VyYXRpb25zL0Jhc2UueGNjb25maWcKQEAg
LTMwLDYgKzMwLDcgQEAgVVNFX0lOVEVSTkFMX1NES19SZWxlYXNlID0gJChIQVZFX0lOVEVSTkFM
X1NESyk7CiAKIENMQU5HX0NYWF9MQU5HVUFHRV9TVEFOREFSRCA9IGdudSsrMTQ7CiBDTEFOR19D
WFhfTElCUkFSWSA9IGxpYmMrKzsKK0NMQU5HX0VOQUJMRV9PQkpDX0FSQyA9IFlFUzsKIENMQU5H
X0VOQUJMRV9PQkpDX1dFQUsgPSBZRVM7CiBDTEFOR19XQVJOX0JMT0NLX0NBUFRVUkVfQVVUT1JF
TEVBU0lORyA9IFlFUzsKIENMQU5HX1dBUk5fQ1hYMFhfRVhURU5TSU9OUyA9IE5POwpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXJJT1MubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL2lvcy9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlcklPUy5tbQppbmRleCAwOWZhMmJjZWI5YWM0
YWJjMTdjM2RmNTVmYmY2OTY5NDVjYmE4MjFhLi5mMTc5NmYyYTUwNzUxYzczNDUzZTE1Yzc5OWUx
NzA2YmE5ZTI4YjYyIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlcklPUy5tbQorKysgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlcklP
Uy5tbQpAQCAtOTMsNyArOTMsNyBAQCBzdGF0aWMgaWQgZmluZEFjY2Vzc2libGVPYmplY3RCeUlk
KGlkIG9iaiwgTlNTdHJpbmcgKmlkQXR0cmlidXRlKQogUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ+IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjphY2Nlc3NpYmxlRWxlbWVudEJ5SWQoSlNT
dHJpbmdSZWYgaWRBdHRyaWJ1dGUpCiB7CiAgICAgV0tCdW5kbGVQYWdlUmVmIHBhZ2UgPSBJbmpl
Y3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCk7Ci0gICAgaWQgcm9vdCA9IHN0
YXRpY19jYXN0PFBsYXRmb3JtVUlFbGVtZW50PihXS0FjY2Vzc2liaWxpdHlSb290T2JqZWN0KHBh
Z2UpKTsKKyAgICBpZCByb290ID0gKF9fYnJpZGdlIFBsYXRmb3JtVUlFbGVtZW50KVdLQWNjZXNz
aWJpbGl0eVJvb3RPYmplY3QocGFnZSk7CiAKICAgICBpZCByZXN1bHQgPSBmaW5kQWNjZXNzaWJs
ZU9iamVjdEJ5SWQocm9vdCwgW05TU3RyaW5nIHN0cmluZ1dpdGhKU1N0cmluZ1JlZjppZEF0dHJp
YnV0ZV0pOwogICAgIGlmIChyZXN1bHQpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcklPUy5tbSBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlUZXh0
TWFya2VySU9TLm1tCmluZGV4IDFmMTA3Y2U3OWQ3ZTQzYjhkODMwODA4ZDMxMWRmYzdhYjY4YTQw
MTUuLmY3NTgxZTUzZTlkNTQ2MDViMDMwYTQzM2I3YjRlNjU4NTFjNTdlNmEgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlU
ZXh0TWFya2VySU9TLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvaW9zL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VySU9TLm1tCkBAIC0yOSw3ICsyOSw3IEBAIG5h
bWVzcGFjZSBXVFIgewogCiBib29sIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjppc0VxdWFsKEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyKiBvdGhlcikKIHsKLSAgICByZXR1cm4gWyhpZClwbGF0Zm9y
bVRleHRNYXJrZXIoKSBpc0VxdWFsOihpZClvdGhlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwor
ICAgIHJldHVybiBbKF9fYnJpZGdlIGlkKXBsYXRmb3JtVGV4dE1hcmtlcigpIGlzRXF1YWw6KF9f
YnJpZGdlIGlkKW90aGVyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0KaW5kZXgg
YzVlNWU2YzAzMmUyOWM0Y2YxYzQyODJkNGU0OTY5ODIwYTFkMmNlNy4uYjZhZmM4NTRjZGJmODBi
YTZjMmQxYzc3Y2JjYmQxMTAwNDIxOTM3ZCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbQorKysg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50SU9TLm1tCkBAIC0xNDYsOCArMTQ2LDYgQEAgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudChQbGF0Zm9ybVVJRWxlbWVudCBlbGVtZW50KQogICAg
IDogbV9lbGVtZW50KGVsZW1lbnQpCiAgICAgLCBtX25vdGlmaWNhdGlvbkhhbmRsZXIoMCkKIHsK
LSAgICAvLyBGSVhNRTogYXBAd2Via2l0Lm9yZyBzYXlzIE9iakMgb2JqZWN0cyBuZWVkIHRvIGJl
IENGUmV0YWluZWQvQ0ZSZWxlYXNlIHRvIGJlIEdDLWNvbXBsaWFudCBvbiB0aGUgbWFjLgotICAg
IFttX2VsZW1lbnQgcmV0YWluXTsKIH0KIAogQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudChjb25zdCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50JiBvdGhlcikKQEAg
LTE1NSwxMiArMTUzLDEwIEBAIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQoY29uc3QgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCYgb3RoCiAgICAgLCBtX2VsZW1l
bnQob3RoZXIubV9lbGVtZW50KQogICAgICwgbV9ub3RpZmljYXRpb25IYW5kbGVyKDApCiB7Ci0g
ICAgW21fZWxlbWVudCByZXRhaW5dOwogfQogCiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp+QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudCgpCiB7Ci0gICAgW21fZWxlbWVudCByZWxlYXNlXTsKIH0KIAog
Ym9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0VxdWFsKEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQqIG90aGVyRWxlbWVudCkKQEAgLTk3Niw3ICs5NzIsNiBAQCBib29sIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnJlbW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVyKCkKICAgICBBU1NFUlQobV9ub3Rp
ZmljYXRpb25IYW5kbGVyKTsKICAgICAKICAgICBbbV9ub3RpZmljYXRpb25IYW5kbGVyIHN0b3BP
YnNlcnZpbmddOwotICAgIFttX25vdGlmaWNhdGlvbkhhbmRsZXIgcmVsZWFzZV07CiAgICAgbV9u
b3RpZmljYXRpb25IYW5kbGVyID0gbmlsOwogICAgIAogICAgIHJldHVybiB0cnVlOwpAQCAtMTA2
Myw0MSArMTA1OCw0MSBAQCB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlbW92ZVNlbGVj
dGlvbigpCiAvLyBUZXh0IG1hcmtlcnMKIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5lVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1h
cmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKIHsKLSAgICBpZCBzdGFy
dFRleHRNYXJrZXIgPSBbbV9lbGVtZW50IGxpbmVTdGFydE1hcmtlckZvck1hcmtlcjooaWQpdGV4
dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwotICAgIGlkIGVuZFRleHRNYXJrZXIgPSBb
bV9lbGVtZW50IGxpbmVFbmRNYXJrZXJGb3JNYXJrZXI6KGlkKXRleHRNYXJrZXItPnBsYXRmb3Jt
VGV4dE1hcmtlcigpXTsKKyAgICBpZCBzdGFydFRleHRNYXJrZXIgPSBbbV9lbGVtZW50IGxpbmVT
dGFydE1hcmtlckZvck1hcmtlcjooX19icmlkZ2UgaWQpdGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0
TWFya2VyKCldOworICAgIGlkIGVuZFRleHRNYXJrZXIgPSBbbV9lbGVtZW50IGxpbmVFbmRNYXJr
ZXJGb3JNYXJrZXI6KF9fYnJpZGdlIGlkKXRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigp
XTsKICAgICBOU0FycmF5ICp0ZXh0TWFya2VycyA9IFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6
c3RhcnRUZXh0TWFya2VyLCBlbmRUZXh0TWFya2VyLCBuaWxdOwogICAgIAogICAgIGlkIHRleHRN
YXJrZXJSYW5nZSA9IFttX2VsZW1lbnQgdGV4dE1hcmtlclJhbmdlRm9yTWFya2Vyczp0ZXh0TWFy
a2Vyc107Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OmNyZWF0ZSh0
ZXh0TWFya2VyUmFuZ2UpOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdl
OjpjcmVhdGUoKF9fYnJpZGdlIFBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKXRleHRNYXJrZXJSYW5n
ZSk7CiB9CiAKIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQqIGVsZW1lbnQpCiB7CiAgICAgaWQgdGV4dE1hcmtlclJhbmdlID0gW2VsZW1lbnQtPnBs
YXRmb3JtVUlFbGVtZW50KCkgdGV4dE1hcmtlclJhbmdlXTsKLSAgICByZXR1cm4gQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXJSYW5nZTo6Y3JlYXRlKHRleHRNYXJrZXJSYW5nZSk7CisgICAgcmV0dXJu
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OmNyZWF0ZSgoX19icmlkZ2UgUGxhdGZvcm1U
ZXh0TWFya2VyUmFuZ2UpdGV4dE1hcmtlclJhbmdlKTsKIH0KIAogaW50IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUxlbmd0aChBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlKiByYW5nZSkKIHsKLSAgICBpZCB0ZXh0TWFya2VycyA9IChpZClyYW5nZS0+cGxhdGZvcm1U
ZXh0TWFya2VyUmFuZ2UoKTsgICAgCisgICAgaWQgdGV4dE1hcmtlcnMgPSAoX19icmlkZ2UgaWQp
cmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCk7CiAgICAgcmV0dXJuIFttX2VsZW1lbnQg
bGVuZ3RoRm9yVGV4dE1hcmtlcnM6dGV4dE1hcmtlcnNdOwogfQogCiBSZWZQdHI8QWNjZXNzaWJp
bGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXZpb3VzVGV4dE1hcmtl
cihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKIHsKLSAgICBpZCBwcmV2aW91
c01hcmtlciA9IFttX2VsZW1lbnQgcHJldmlvdXNNYXJrZXJGb3JNYXJrZXI6KGlkKXRleHRNYXJr
ZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXI6OmNyZWF0ZShwcmV2aW91c01hcmtlcik7CisgICAgaWQgcHJldmlvdXNNYXJrZXIgPSBb
bV9lbGVtZW50IHByZXZpb3VzTWFya2VyRm9yTWFya2VyOihfX2JyaWRnZSBpZCl0ZXh0TWFya2Vy
LT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyOjpjcmVhdGUoKF9fYnJpZGdlIFBsYXRmb3JtVGV4dE1hcmtlcilwcmV2aW91c01hcmtlcik7
CiB9CiAKIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6bmV4dFRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIp
CiB7Ci0gICAgaWQgbmV4dE1hcmtlciA9IFttX2VsZW1lbnQgbmV4dE1hcmtlckZvck1hcmtlcjoo
aWQpdGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOwotICAgIHJldHVybiBBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlcjo6Y3JlYXRlKG5leHRNYXJrZXIpOworICAgIGlkIG5leHRNYXJrZXIg
PSBbbV9lbGVtZW50IG5leHRNYXJrZXJGb3JNYXJrZXI6KF9fYnJpZGdlIGlkKXRleHRNYXJrZXIt
PnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXI6OmNyZWF0ZSgoX19icmlkZ2UgUGxhdGZvcm1UZXh0TWFya2VyKW5leHRNYXJrZXIpOwogfQog
CiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5n
Rm9yVGV4dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqIG1hcmtlclJh
bmdlKQogewotICAgIGlkIHRleHRNYXJrZXJzID0gKGlkKW1hcmtlclJhbmdlLT5wbGF0Zm9ybVRl
eHRNYXJrZXJSYW5nZSgpOworICAgIGlkIHRleHRNYXJrZXJzID0gKF9fYnJpZGdlIGlkKW1hcmtl
clJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpOwogICAgIGlmICghdGV4dE1hcmtlcnMg
fHwgIVt0ZXh0TWFya2VycyBpc0tpbmRPZkNsYXNzOltOU0FycmF5IGNsYXNzXV0pCiAgICAgICAg
IHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOwogICAgIHJldHVybiBb
W21fZWxlbWVudCBzdHJpbmdGb3JUZXh0TWFya2Vyczp0ZXh0TWFya2Vyc10gY3JlYXRlSlNTdHJp
bmdSZWZdOwpAQCAtMTEwNSwyMyArMTEwMCwyMyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKEFjY2Vzcwog
CiBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6dGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciog
c3RhcnRNYXJrZXIsIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBlbmRNYXJrZXIpCiB7Ci0gICAg
TlNBcnJheSAqdGV4dE1hcmtlcnMgPSBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOihpZClzdGFy
dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCksIChpZCllbmRNYXJrZXItPnBsYXRmb3JtVGV4
dE1hcmtlcigpLCBuaWxdOworICAgIE5TQXJyYXkgKnRleHRNYXJrZXJzID0gW05TQXJyYXkgYXJy
YXlXaXRoT2JqZWN0czooX19icmlkZ2UgaWQpc3RhcnRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtl
cigpLCAoX19icmlkZ2UgaWQpZW5kTWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKSwgbmlsXTsK
ICAgICBpZCB0ZXh0TWFya2VyUmFuZ2UgPSBbbV9lbGVtZW50IHRleHRNYXJrZXJSYW5nZUZvck1h
cmtlcnM6dGV4dE1hcmtlcnNdOwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlOjpjcmVhdGUodGV4dE1hcmtlclJhbmdlKTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXJSYW5nZTo6Y3JlYXRlKChfX2JyaWRnZSBQbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSl0
ZXh0TWFya2VyUmFuZ2UpOwogfQogCiBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiByYW5nZSkKIHsKLSAgICBpZCB0ZXh0TWFya2Vy
cyA9IChpZClyYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKTsKKyAgICBpZCB0ZXh0TWFy
a2VycyA9IChfX2JyaWRnZSBpZClyYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKTsKICAg
ICBpZCB0ZXh0TWFya2VyID0gW21fZWxlbWVudCBzdGFydE9yRW5kVGV4dE1hcmtlckZvclRleHRN
YXJrZXJzOnRleHRNYXJrZXJzIGlzU3RhcnQ6WUVTXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXI6OmNyZWF0ZSh0ZXh0TWFya2VyKTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXI6OmNyZWF0ZSgoX19icmlkZ2UgUGxhdGZvcm1UZXh0TWFya2VyKXRleHRNYXJr
ZXIpOwogfQogCiBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXJSYW5nZSogcmFuZ2UpCiB7Ci0gICAgaWQgdGV4dE1hcmtlcnMgPSAoaWQpcmFuZ2Ut
PnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCk7CisgICAgaWQgdGV4dE1hcmtlcnMgPSAoX19icmlk
Z2UgaWQpcmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCk7CiAgICAgaWQgdGV4dE1hcmtl
ciA9IFttX2VsZW1lbnQgc3RhcnRPckVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2Vyczp0ZXh0TWFy
a2VycyBpc1N0YXJ0Ok5PXTsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmNy
ZWF0ZSh0ZXh0TWFya2VyKTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmNy
ZWF0ZSgoX19icmlkZ2UgUGxhdGZvcm1UZXh0TWFya2VyKXRleHRNYXJrZXIpOwogfQogCiBSZWZQ
dHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmVuZFRl
eHRNYXJrZXJGb3JCb3VuZHMoaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCkBA
IC0xMTQxLDcgKzExMzYsNyBAQCBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJGb3JQb2ludChpbnQgeAogCiBSZWZQdHI8QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWNjZXNzaWJpbGl0
eUVsZW1lbnRGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBtYXJrZXIpCiB7
Ci0gICAgaWQgb2JqID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5T2JqZWN0Rm9yVGV4dE1hcmtl
cjooaWQpbWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAgaWQgb2JqID0gW21fZWxl
bWVudCBhY2Nlc3NpYmlsaXR5T2JqZWN0Rm9yVGV4dE1hcmtlcjooX19icmlkZ2UgaWQpbWFya2Vy
LT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CiAgICAgaWYgKG9iaikKICAgICAgICAgcmV0dXJuIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShvYmopOwogICAgIHJldHVybiBudWxscHRyOwpA
QCAtMTI0MSw5ICsxMjM2LDkgQEAgUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZU1hdGMKIHsKICAgICBOU0Fy
cmF5ICp0ZXh0TWFya2VycyA9IG5pbDsKICAgICBpZiAoc3RhcnRNYXJrZXItPnBsYXRmb3JtVGV4
dE1hcmtlcigpICYmIGVuZE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCkpCi0gICAgICAgIHRl
eHRNYXJrZXJzID0gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czooaWQpc3RhcnRNYXJrZXItPnBs
YXRmb3JtVGV4dE1hcmtlcigpLCAoaWQpZW5kTWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKSwg
bmlsXTsKKyAgICAgICAgdGV4dE1hcmtlcnMgPSBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOihf
X2JyaWRnZSBpZClzdGFydE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCksIChfX2JyaWRnZSBp
ZCllbmRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpLCBuaWxdOwogICAgIGlkIHRleHRNYXJr
ZXJSYW5nZSA9IFttX2VsZW1lbnQgdGV4dE1hcmtlclJhbmdlRnJvbU1hcmtlcnM6dGV4dE1hcmtl
cnMgd2l0aFRleHQ6W05TU3RyaW5nIHN0cmluZ1dpdGhKU1N0cmluZ1JlZjp0ZXh0XV07Ci0gICAg
cmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OmNyZWF0ZSh0ZXh0TWFya2VyUmFu
Z2UpOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjpjcmVhdGUoKF9f
YnJpZGdlIFBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKXRleHRNYXJrZXJSYW5nZSk7CiB9CiAKIEpT
UmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptYXRoUG9zdHNj
cmlwdHNEZXNjcmlwdGlvbigpIGNvbnN0CkBAIC0xMjU4LDcgKzEyNTMsNyBAQCBKU1JldGFpblB0
cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bWF0aFByZXNjcmlwdHNEZXNj
cmlwdGlvbigpIGNvbgogCiBzdGF0aWMgdm9pZCBfQ0dQYXRoRW51bWVyYXRpb25JdGVyYXRpb24o
dm9pZCAqaW5mbywgY29uc3QgQ0dQYXRoRWxlbWVudCAqZWxlbWVudCkKIHsKLSAgICBOU011dGFi
bGVTdHJpbmcgKnJlc3VsdCA9IChOU011dGFibGVTdHJpbmcgKilpbmZvOworICAgIE5TTXV0YWJs
ZVN0cmluZyAqcmVzdWx0ID0gKF9fYnJpZGdlIE5TTXV0YWJsZVN0cmluZyAqKWluZm87CiAgICAg
c3dpdGNoIChlbGVtZW50LT50eXBlKSB7CiAgICAgY2FzZSBrQ0dQYXRoRWxlbWVudE1vdmVUb1Bv
aW50OgogICAgICAgICBbcmVzdWx0IGFwcGVuZFN0cmluZzpAIlx0TW92ZSB0byBwb2ludFxuIl07
CkBAIC0xMjgyLDkgKzEyNzcsNyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6cGF0aERlc2NyaXB0aW9uKCkgY29uc3QKIHsKICAgICBOU011dGFibGVT
dHJpbmcgKnJlc3VsdCA9IFtOU011dGFibGVTdHJpbmcgc3RyaW5nV2l0aFN0cmluZzpAIlxuU3Rh
cnQgUGF0aFxuIl07CiAgICAgQ0dQYXRoUmVmIHBhdGhSZWYgPSBbbV9lbGVtZW50IF9hY2Nlc3Np
YmlsaXR5UGF0aF07Ci0gICAgCi0gICAgQ0dQYXRoQXBwbHkocGF0aFJlZiwgcmVzdWx0LCBfQ0dQ
YXRoRW51bWVyYXRpb25JdGVyYXRpb24pOwotICAgIAorICAgIENHUGF0aEFwcGx5KHBhdGhSZWYs
IChfX2JyaWRnZSB2b2lkKilyZXN1bHQsIF9DR1BhdGhFbnVtZXJhdGlvbkl0ZXJhdGlvbik7CiAg
ICAgcmV0dXJuIFtyZXN1bHQgY3JlYXRlSlNTdHJpbmdSZWZdOwogfQogCmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5Tm90
aWZpY2F0aW9uSGFuZGxlci5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvbWFjL0FjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLm1tCmluZGV4IGYzZWNiM2I0
NjBkZTY3OTQwYjM2OTZiZWRkNGQ1OTVjMGJmNWUyZGIuLjVkZDAyZjdmNDA5YmM4ZDI2NTg5MDRi
OGU4ZWZjOWRkZmVhYjk1YjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLm1tCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlO
b3RpZmljYXRpb25IYW5kbGVyLm1tCkBAIC04Myw4ICs4Myw2IEBAIC0gKHZvaWQpZGVhbGxvYwog
CiAgICAgSlNWYWx1ZVVucHJvdGVjdChjb250ZXh0LCBtX25vdGlmaWNhdGlvbkZ1bmN0aW9uQ2Fs
bGJhY2spOwogICAgIG1fbm90aWZpY2F0aW9uRnVuY3Rpb25DYWxsYmFjayA9IDA7Ci0KLSAgICBb
c3VwZXIgZGVhbGxvY107CiB9CiAKIC0gKHZvaWQpc2V0Q2FsbGJhY2s6KEpTVmFsdWVSZWYpY2Fs
bGJhY2sKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
bWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCmluZGV4IDc3
ZGZmYjMwNmE0ODEzZWVhNjk4Y2EwOWZhMWMxM2I3MWIzYWE0ZDAuLmNkNmU5NmE0ODE1YWFhNTc1
OWNjZGVhNzIwNzM1Y2QwMzk1MDRlMmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudE1hYy5tbQpAQCAtOTEsOCArOTEsNiBAQCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50KFBsYXRmb3JtVUlFbGVtZW50IGVsZW1lbnQpCiAgICAgOiBt
X2VsZW1lbnQoZWxlbWVudCkKICAgICAsIG1fbm90aWZpY2F0aW9uSGFuZGxlcigwKQogewotICAg
IC8vIEZJWE1FOiBhcEB3ZWJraXQub3JnIHNheXMgT2JqQyBvYmplY3RzIG5lZWQgdG8gYmUgQ0ZS
ZXRhaW5lZC9DRlJlbGVhc2UgdG8gYmUgR0MtY29tcGxpYW50IG9uIHRoZSBtYWMuCi0gICAgW21f
ZWxlbWVudCByZXRhaW5dOwogfQogCiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50KGNvbnN0IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQmIG90aGVyKQpAQCAtMTAw
LDE0ICs5OCwxMiBAQCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50KGNvbnN0IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQmIG90aAogICAgICwgbV9lbGVtZW50KG90
aGVyLm1fZWxlbWVudCkKICAgICAsIG1fbm90aWZpY2F0aW9uSGFuZGxlcigwKQogewotICAgIFtt
X2VsZW1lbnQgcmV0YWluXTsKIH0KIAogQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6fkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQoKQogewogICAgIC8vIFRoZSBub3RpZmljYXRpb24gaGFuZGxlciBzaG91
bGQgYmUgbmlsIGJlY2F1c2UgcmVtb3ZlTm90aWZpY2F0aW9uTGlzdGVuZXIoKSBzaG91bGQgaGF2
ZSBiZWVuIGNhbGxlZCBpbiB0aGUgdGVzdC4KICAgICBBU1NFUlQoIW1fbm90aWZpY2F0aW9uSGFu
ZGxlcik7Ci0gICAgW21fZWxlbWVudCByZWxlYXNlXTsKIH0KIAogYm9vbCBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojppc0VxdWFsKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIG90aGVyRWxlbWVudCkK
QEAgLTE1NTgsNyArMTU1NCw2IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmVtb3Zl
Tm90aWZpY2F0aW9uTGlzdGVuZXIoKQogICAgIEFTU0VSVChtX25vdGlmaWNhdGlvbkhhbmRsZXIp
OwogCiAgICAgW21fbm90aWZpY2F0aW9uSGFuZGxlciBzdG9wT2JzZXJ2aW5nXTsKLSAgICBbbV9u
b3RpZmljYXRpb25IYW5kbGVyIHJlbGVhc2VdOwogICAgIG1fbm90aWZpY2F0aW9uSGFuZGxlciA9
IG5pbDsKICAgICAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE4MjcsNyArMTgyMiw3IEBAIFJlZlB0
cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphY2Nlc3Np
YmlsaXR5RWxlbWVudEZvclRlCiAKIHN0YXRpYyBKU1N0cmluZ1JlZiBjcmVhdGVKU1N0cmluZ1Jl
ZihpZCBzdHJpbmcpCiB7Ci0gICAgaWQgbXV0YWJsZVN0cmluZyA9IFtbW05TTXV0YWJsZVN0cmlu
ZyBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIGlkIG11dGFibGVTdHJpbmcgPSBbW05T
TXV0YWJsZVN0cmluZyBhbGxvY10gaW5pdF07CiAgICAgaWQgYXR0cmlidXRlcyA9IFtzdHJpbmcg
YXR0cmlidXRlc0F0SW5kZXg6MCBlZmZlY3RpdmVSYW5nZTpuaWxdOwogICAgIGlkIGF0dHJpYnV0
ZUVudW1lcmF0aW9uQmxvY2sgPSBeKE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZD4gKmF0dHJz
LCBOU1JhbmdlIHJhbmdlLCBCT09MICpzdG9wKSB7CiAgICAgICAgIEJPT0wgbWlzc3BlbGxlZCA9
IFtbYXR0cnMgb2JqZWN0Rm9yS2V5Ok5TQWNjZXNzaWJpbGl0eU1pc3NwZWxsZWRUZXh0QXR0cmli
dXRlXSBib29sVmFsdWVdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2Nv
YS9UZXN0Q29udHJvbGxlckNvY29hLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9U
ZXN0Q29udHJvbGxlckNvY29hLm1tCmluZGV4IDI0MGVlYjUyZjMwNjc4NDExN2NhNWI4YTk2ZDhl
M2ZjOTMwNzE3OWUuLmJjZjBjNjM3YmIwMTYwMmU3MzI5YTk2Njg0ZjMwNjg0MzliYWExZGUgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2Nv
YS5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29j
b2EubW0KQEAgLTU3LDcgKzU3LDYgQEAgc3RhdGljIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmds
b2JhbFdlYlZpZXdDb25maWd1cmF0aW9uOwogdm9pZCBpbml0aWFsaXplV2ViVmlld0NvbmZpZ3Vy
YXRpb24oY29uc3QgY2hhciogbGlicmFyeVBhdGgsIFdLU3RyaW5nUmVmIGluamVjdGVkQnVuZGxl
UGF0aCwgV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYgY29u
dGV4dENvbmZpZ3VyYXRpb24pCiB7CiAjaWYgV0tfQVBJX0VOQUJMRUQKLSAgICBbZ2xvYmFsV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gcmVsZWFzZV07CiAgICAgZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRp
b24gPSBbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdOwogCiAgICAgZ2xvYmFs
V2ViVmlld0NvbmZpZ3VyYXRpb24ucHJvY2Vzc1Bvb2wgPSAoX19icmlkZ2UgV0tQcm9jZXNzUG9v
bCAqKWNvbnRleHQ7CkBAIC0xMDksNyArMTA4LDYgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6Y29j
b2FQbGF0Zm9ybUluaXRpYWxpemUoKQogICAgIE5TRGljdGlvbmFyeSAqcmVzb3VyY2VMb2dQbGlz
dCA9IFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aE9iamVjdHNBbmRLZXlzOiBbTlNOdW1i
ZXIgbnVtYmVyV2l0aEludDoxXSwgQCJ2ZXJzaW9uIiwgbmlsXTsKICAgICBpZiAoIVtyZXNvdXJj
ZUxvZ1BsaXN0IHdyaXRlVG9GaWxlOmZ1bGxCcm93c2luZ1Nlc3Npb25SZXNvdXJjZUxvZyBhdG9t
aWNhbGx5OllFU10pCiAgICAgICAgIFdURkNyYXNoKCk7Ci0gICAgW3Jlc291cmNlTG9nUGxpc3Qg
cmVsZWFzZV07CiB9CiAKIFdLQ29udGV4dFJlZiBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1Db250
ZXh0KCkKQEAgLTE3OCw3ICsxNzYsNyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUNy
ZWF0ZVdlYlZpZXcoV0tQYWdlQ29uZmlndXJhdGlvblJlZiwgY29uc3QgVGVzdE9wdAogUGxhdGZv
cm1XZWJWaWV3KiBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1DcmVhdGVPdGhlclBhZ2UoUGxhdGZv
cm1XZWJWaWV3KiBwYXJlbnRWaWV3LCBXS1BhZ2VDb25maWd1cmF0aW9uUmVmLCBjb25zdCBUZXN0
T3B0aW9ucyYgb3B0aW9ucykKIHsKICNpZiBXS19BUElfRU5BQkxFRAotICAgIFdLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gKm5ld0NvbmZpZ3VyYXRpb24gPSBbW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0
aW9uIGNvcHldIGF1dG9yZWxlYXNlXTsKKyAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpuZXdD
b25maWd1cmF0aW9uID0gW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uIGNvcHldOwogICAgIG5l
d0NvbmZpZ3VyYXRpb24uX3JlbGF0ZWRXZWJWaWV3ID0gc3RhdGljX2Nhc3Q8V0tXZWJWaWV3Kj4o
cGFyZW50Vmlldy0+cGxhdGZvcm1WaWV3KCkpOwogICAgIHJldHVybiBuZXcgUGxhdGZvcm1XZWJW
aWV3KG5ld0NvbmZpZ3VyYXRpb24sIG9wdGlvbnMpOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdFJ1bm5lcldLV2ViVmlldy5tbSBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdFJ1bm5lcldLV2ViVmlldy5tbQppbmRleCA5YmI1M2Nk
OWNmODUzZmNlZjU3MGExN2Y5YTJiOGFhYWE2YWM0NTk1Li44NmE2MjgyNjg2YzI3ZjY5OTdhN2U0
ZGUyNDgwMTg2OTE3MjA5NjYwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2Nv
Y29hL1Rlc3RSdW5uZXJXS1dlYlZpZXcubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9j
b2NvYS9UZXN0UnVubmVyV0tXZWJWaWV3Lm1tCkBAIC04NCwyMiArODQsNiBAQCAtIChpbnN0YW5j
ZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lIGNvbmZpZ3VyYXRpb246KFdLV2ViVmll
d0NvbmZpZ3VyYXRpbwogLSAodm9pZClkZWFsbG9jCiB7CiAgICAgW1tOU05vdGlmaWNhdGlvbkNl
bnRlciBkZWZhdWx0Q2VudGVyXSByZW1vdmVPYnNlcnZlcjpzZWxmXTsKLQotICAgIHNlbGYuZGlk
U3RhcnRGb3JtQ29udHJvbEludGVyYWN0aW9uQ2FsbGJhY2sgPSBuaWw7Ci0gICAgc2VsZi5kaWRF
bmRGb3JtQ29udHJvbEludGVyYWN0aW9uQ2FsbGJhY2sgPSBuaWw7Ci0gICAgc2VsZi5kaWRTaG93
Rm9yY2VQcmVzc1ByZXZpZXdDYWxsYmFjayA9IG5pbDsKLSAgICBzZWxmLmRpZERpc21pc3NGb3Jj
ZVByZXNzUHJldmlld0NhbGxiYWNrID0gbmlsOwotICAgIHNlbGYud2lsbEJlZ2luWm9vbWluZ0Nh
bGxiYWNrID0gbmlsOwotICAgIHNlbGYuZGlkRW5kWm9vbWluZ0NhbGxiYWNrID0gbmlsOwotICAg
IHNlbGYuZGlkU2hvd0tleWJvYXJkQ2FsbGJhY2sgPSBuaWw7Ci0gICAgc2VsZi5kaWRIaWRlS2V5
Ym9hcmRDYWxsYmFjayA9IG5pbDsKLSAgICBzZWxmLmRpZEVuZFNjcm9sbGluZ0NhbGxiYWNrID0g
bmlsOwotICAgIHNlbGYucm90YXRpb25EaWRFbmRDYWxsYmFjayA9IG5pbDsKLQotICAgIHNlbGYu
em9vbVRvU2NhbGVDb21wbGV0aW9uSGFuZGxlciA9IG5pbDsKLSAgICBzZWxmLnJldHJpZXZlU3Bl
YWtTZWxlY3Rpb25Db250ZW50Q29tcGxldGlvbkhhbmRsZXIgPSBuaWw7Ci0KLSAgICBbc3VwZXIg
ZGVhbGxvY107CiB9CiAKIC0gKHZvaWQpZGlkU3RhcnRGb3JtQ29udHJvbEludGVyYWN0aW9uCmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9HZW5lcmF0ZWRUb3VjaGVzRGVi
dWdXaW5kb3cubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9HZW5lcmF0ZWRUb3VjaGVz
RGVidWdXaW5kb3cubW0KaW5kZXggZmQ0M2Y4MGM4YmQwN2JkZjFjNDQ0MDRlMDBiZjM1YWU0ZmE4
YWEyMy4uNGI3YjJlNmQxYzE5OWU1MzIyNmQyMWMzZjI1NzJmMTg3NzQ0MTZjZCAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvR2VuZXJhdGVkVG91Y2hlc0RlYnVnV2luZG93
Lm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL0dlbmVyYXRlZFRvdWNoZXNEZWJ1
Z1dpbmRvdy5tbQpAQCAtNTMsMTAgKzUzLDYgQEAgKyAoR2VuZXJhdGVkVG91Y2hlc0RlYnVnV2lu
ZG93ICopc2hhcmVkR2VuZXJhdGVkVG91Y2hlc0RlYnVnV2luZG93CiAtICh2b2lkKWRlYWxsb2MK
IHsKICAgICBfZGVidWdUb3VjaFdpbmRvdy5oaWRkZW4gPSBZRVM7Ci0gICAgW19kZWJ1Z1RvdWNo
V2luZG93IHJlbGVhc2VdOwotICAgIFtfZGVidWdUb3VjaFZpZXdzIHJlbGVhc2VdOwotICAgIAot
ICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIAogLSAodm9pZCl1cGRhdGVEZWJ1Z0luZGljYXRvckZv
clRvdWNoOihOU1VJbnRlZ2VyKWluZGV4IHdpdGhQb2ludEluV2luZG93Q29vcmRpbmF0ZXM6KENH
UG9pbnQpcG9pbnQgaXNUb3VjaGluZzooQk9PTClpc1RvdWNoaW5nCmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5tbSBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvaW9zL0hJREV2ZW50R2VuZXJhdG9yLm1tCmluZGV4IDI5MjYyYTRlOTRhNDQ3
ZGQwODY4ZjQxMmIwMDM2N2MzZDFhZGRhZWYuLjI1YzE3MjY2NTU3NzZhM2JiY2UwNmYwZjEwNGFl
YzFlOGVlNTg2YmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL0hJREV2
ZW50R2VuZXJhdG9yLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL0hJREV2ZW50
R2VuZXJhdG9yLm1tCkBAIC0xOTEsMTUgKzE5MSw2IEBAIC0gKGluc3RhbmNldHlwZSlpbml0CiAg
ICAgcmV0dXJuIHNlbGY7CiB9CiAKLS0gKHZvaWQpZGVhbGxvYwotewotICAgIFtfZXZlbnRDYWxs
YmFja3MgcmVsZWFzZV07Ci0gICAgW19kZWJ1Z1RvdWNoVmlld3MgcmVsZWFzZV07Ci0gICAgW3N1
cGVyIGRlYWxsb2NdOwotfQotCi0KLQogLSAodm9pZClfc2VuZElPSElES2V5Ym9hcmRFdmVudDoo
dWludDY0X3QpdGltZXN0YW1wIHVzYWdlOih1aW50MzJfdCl1c2FnZSBpc0tleURvd246KGJvb2wp
aXNLZXlEb3duCiB7CiAgICAgUmV0YWluUHRyPElPSElERXZlbnRSZWY+IGV2ZW50UmVmID0gYWRv
cHRDRihJT0hJREV2ZW50Q3JlYXRlS2V5Ym9hcmRFdmVudChrQ0ZBbGxvY2F0b3JEZWZhdWx0LApA
QCAtNDgwLDcgKzQ3MSw3IEBAIC0gKEJPT0wpX3NlbmRISURFdmVudDooSU9ISURFdmVudFJlZill
dmVudFJlZgogLSAoQk9PTClfc2VuZE1hcmtlckhJREV2ZW50V2l0aENvbXBsZXRpb25CbG9jazoo
dm9pZCAoXikodm9pZCkpY29tcGxldGlvbkJsb2NrCiB7CiAgICAgYXV0byBjYWxsYmFja0lEID0g
W0hJREV2ZW50R2VuZXJhdG9yIG5leHRFdmVudENhbGxiYWNrSURdOwotICAgIFtfZXZlbnRDYWxs
YmFja3Mgc2V0T2JqZWN0OkJsb2NrX2NvcHkoY29tcGxldGlvbkJsb2NrKSBmb3JLZXk6QChjYWxs
YmFja0lEKV07CisgICAgW19ldmVudENhbGxiYWNrcyBzZXRPYmplY3Q6Y29tcGxldGlvbkJsb2Nr
IGZvcktleTpAKGNhbGxiYWNrSUQpXTsKIAogICAgIGF1dG8gbWFya2VyRXZlbnQgPSBhZG9wdENG
KElPSElERXZlbnRDcmVhdGVWZW5kb3JEZWZpbmVkRXZlbnQoa0NGQWxsb2NhdG9yRGVmYXVsdCwK
ICAgICAgICAgbWFjaF9hYnNvbHV0ZV90aW1lKCksCkBAIC03ODIsNyArNzczLDYgQEAgLSAodm9p
ZCltYXJrZXJFdmVudFJlY2VpdmVkOihJT0hJREV2ZW50UmVmKWV2ZW50CiAgICAgaWYgKGNvbXBs
ZXRpb25CbG9jaykgewogICAgICAgICBbX2V2ZW50Q2FsbGJhY2tzIHJlbW92ZU9iamVjdEZvcktl
eTpAKGNhbGxiYWNrSUQpXTsKICAgICAgICAgY29tcGxldGlvbkJsb2NrKCk7Ci0gICAgICAgIEJs
b2NrX3JlbGVhc2UoY29tcGxldGlvbkJsb2NrKTsKICAgICB9CiB9CiAKQEAgLTEwMzcsNyArMTAy
Nyw2IEBAIC0gKE5TQXJyYXkgKilpbnRlcnBvbGF0ZWRFdmVudHM6KE5TRGljdGlvbmFyeSAqKWlu
dGVycG9sYXRpb25zRGljdGlvbmFyeQogICAgICAgICAgICAgICAgICAgICBuZXdUb3VjaFtISURF
dmVudFByZXNzdXJlS2V5XSA9IEAoaW50ZXJwb2xhdGlvbnNbaW50ZXJwb2xhdGlvblR5cGVdKFtz
dGFydFRvdWNoW0hJREV2ZW50UHJlc3N1cmVLZXldIGRvdWJsZVZhbHVlXSwgW2VuZFRvdWNoW0hJ
REV2ZW50UHJlc3N1cmVLZXldIGRvdWJsZVZhbHVlXSwgdGltZVJhdGlvKSk7CiAgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICAgICAgW25ld1RvdWNoZXMgYWRkT2JqZWN0Om5ld1RvdWNoXTsK
LSAgICAgICAgICAgICAgICBbbmV3VG91Y2ggcmVsZWFzZV07CiAgICAgICAgICAgICB9IGVsc2UK
ICAgICAgICAgICAgICAgICBOU0xvZyhAIk1pc3NpbmcgRW5kIFRvdWNoIHdpdGggSUQ6ICVsZCIs
IChsb25nKXN0YXJ0VG91Y2hJRCk7CiAgICAgICAgIH0KQEAgLTEwNDUsNyArMTAzNCw2IEBAIC0g
KE5TQXJyYXkgKilpbnRlcnBvbGF0ZWRFdmVudHM6KE5TRGljdGlvbmFyeSAqKWludGVycG9sYXRp
b25zRGljdGlvbmFyeQogICAgICAgICBuZXdFdmVudFtISURFdmVudFRvdWNoZXNLZXldID0gbmV3
VG91Y2hlczsKICAgICAgICAgCiAgICAgICAgIFtpbnRlcnBvbGF0ZWRFdmVudHMgYWRkT2JqZWN0
Om5ld0V2ZW50XTsKLSAgICAgICAgW25ld0V2ZW50IHJlbGVhc2VdOwogICAgICAgICB0aW1lICs9
IHRpbWVTdGVwOwogICAgIH0KICAgICAKQEAgLTExMTMsMTAgKzExMDEsMTAgQEAgLSAodm9pZClz
ZW5kRXZlbnRTdHJlYW06KE5TRGljdGlvbmFyeSAqKWV2ZW50SW5mbyBjb21wbGV0aW9uQmxvY2s6
KHZvaWQgKF4pKHZvaWQKICAgICAKICAgICBOU0RpY3Rpb25hcnkqIHRocmVhZERhdGEgPSBAewog
ICAgICAgICBAImV2ZW50SW5mbyI6IFtldmVudEluZm8gY29weV0sCi0gICAgICAgIEAiY29tcGxl
dGlvbkJsb2NrIjogW1tjb21wbGV0aW9uQmxvY2sgY29weV0gYXV0b3JlbGVhc2VdCisgICAgICAg
IEAiY29tcGxldGlvbkJsb2NrIjogW2NvbXBsZXRpb25CbG9jayBjb3B5XQogICAgIH07CiAgICAg
Ci0gICAgTlNUaHJlYWQgKmV2ZW50RGlzcGF0Y2hUaHJlYWQgPSBbW1tOU1RocmVhZCBhbGxvY10g
aW5pdFdpdGhUYXJnZXQ6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoZXZlbnREaXNwYXRjaFRocmVh
ZEVudHJ5Oikgb2JqZWN0OnRocmVhZERhdGFdIGF1dG9yZWxlYXNlXTsKKyAgICBOU1RocmVhZCAq
ZXZlbnREaXNwYXRjaFRocmVhZCA9IFtbTlNUaHJlYWQgYWxsb2NdIGluaXRXaXRoVGFyZ2V0OnNl
bGYgc2VsZWN0b3I6QHNlbGVjdG9yKGV2ZW50RGlzcGF0Y2hUaHJlYWRFbnRyeTopIG9iamVjdDp0
aHJlYWREYXRhXTsKICAgICBldmVudERpc3BhdGNoVGhyZWFkLnF1YWxpdHlPZlNlcnZpY2UgPSBO
U1F1YWxpdHlPZlNlcnZpY2VVc2VySW50ZXJhY3RpdmU7CiAgICAgW2V2ZW50RGlzcGF0Y2hUaHJl
YWQgc3RhcnRdOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvUGxh
dGZvcm1XZWJWaWV3SU9TLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvUGxhdGZvcm1X
ZWJWaWV3SU9TLm1tCmluZGV4IGUyMTk0ODU5ODUyNWI5YmRkMjc3YTBmMGJkY2Q4ZGIzNjcxNDk3
NzcuLjZkY2E4YjY5YjY4YmExNzg1ZTU2NWZkNDlhY2VjMDg3N2Q4MzViNzkgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1BsYXRmb3JtV2ViVmlld0lPUy5tbQorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9QbGF0Zm9ybVdlYlZpZXdJT1MubW0KQEAgLTY5LDcg
KzY5LDYgQEAgLSAodm9pZClkZWFsbG9jCiB7CiAgICAgYWxsV2luZG93cy5yZW1vdmVGaXJzdChz
ZWxmKTsKICAgICBBU1NFUlQoIWFsbFdpbmRvd3MuY29udGFpbnMoc2VsZikpOwotICAgIFtzdXBl
ciBkZWFsbG9jXTsKIH0KIAogLSAoQk9PTClpc0tleVdpbmRvdwpAQCAtMTc2LDcgKzE3NSw2IEBA
IFBsYXRmb3JtV2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3KFdLV2ViVmlld0NvbmZpZ3VyYXRpb24q
IGNvbmZpZ3VyYXRpb24sIGNvbnN0IFRlCiAKICAgICBVSVZpZXdDb250cm9sbGVyICp2aWV3Q29u
dHJvbGxlciA9IFtbUGxhdGZvcm1XZWJWaWV3Q29udHJvbGxlciBhbGxvY10gaW5pdF07CiAgICAg
W21fd2luZG93IHNldFJvb3RWaWV3Q29udHJvbGxlcjp2aWV3Q29udHJvbGxlcl07Ci0gICAgW3Zp
ZXdDb250cm9sbGVyIHJlbGVhc2VdOwogCiAgICAgbV92aWV3ID0gW1tUZXN0UnVubmVyV0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOnZpZXdSZWN0Rm9yV2luZG93UmVjdChyZWN0LCBXZWJW
aWV3U2l6aW5nTW9kZTo6RGVmYXVsdCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXTsKIApA
QCAtMTg3LDggKzE4NSw2IEBAIFBsYXRmb3JtV2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3KFdLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24qIGNvbmZpZ3VyYXRpb24sIGNvbnN0IFRlCiBQbGF0Zm9ybVdlYlZp
ZXc6On5QbGF0Zm9ybVdlYlZpZXcoKQogewogICAgIG1fd2luZG93LnBsYXRmb3JtV2ViVmlldyA9
IG5pbDsKLSAgICBbbV92aWV3IHJlbGVhc2VdOwotICAgIFttX3dpbmRvdyByZWxlYXNlXTsKIH0K
IAogUGxhdGZvcm1XaW5kb3cgUGxhdGZvcm1XZWJWaWV3OjprZXlXaW5kb3coKQpAQCAtMjcwLDcg
KzI2Niw2IEBAIHZvaWQgUGxhdGZvcm1XZWJWaWV3OjphZGRDaHJvbWVJbnB1dEZpZWxkKCkKICAg
ICBVSVRleHRGaWVsZCogdGV4dEZpZWxkID0gW1tVSVRleHRGaWVsZCBhbGxvY10gaW5pdFdpdGhG
cmFtZTpDR1JlY3RNYWtlKDAsIDAsIDEwMCwgMjApXTsKICAgICB0ZXh0RmllbGQudGFnID0gMTsK
ICAgICBbbV93aW5kb3cgYWRkU3Vidmlldzp0ZXh0RmllbGRdOwotICAgIFt0ZXh0RmllbGQgcmVs
ZWFzZV07CiB9CiAKIHZvaWQgUGxhdGZvcm1XZWJWaWV3OjpyZW1vdmVDaHJvbWVJbnB1dEZpZWxk
KCkKQEAgLTI3OSw3ICsyNzQsNiBAQCB2b2lkIFBsYXRmb3JtV2ViVmlldzo6cmVtb3ZlQ2hyb21l
SW5wdXRGaWVsZCgpCiAgICAgaWYgKHRleHRGaWVsZCkgewogICAgICAgICBbdGV4dEZpZWxkIHJl
bW92ZUZyb21TdXBlcnZpZXddOwogICAgICAgICBtYWtlV2ViVmlld0ZpcnN0UmVzcG9uZGVyKCk7
Ci0gICAgICAgIFt0ZXh0RmllbGQgcmVsZWFzZV07CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9UZXN0Q29udHJvbGxlcklPUy5tbSBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvaW9zL1Rlc3RDb250cm9sbGVySU9TLm1tCmluZGV4IGYyOGE5NDI5MGYz
YWI5MmQzODBmZGZjMmU0MDVjNjg2N2Y2YjY3MDQuLjhkMmYwZTVlMzZiMjc4Mzc3MjY5OWIyOGQ1
ZjRjMGZkNjYxN2Y4MmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1Rl
c3RDb250cm9sbGVySU9TLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1Rlc3RD
b250cm9sbGVySU9TLm1tCkBAIC04NiwxMiArODYsMTIgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6
cGxhdGZvcm1EZXN0cm95KCkKIHZvaWQgVGVzdENvbnRyb2xsZXI6OmluaXRpYWxpemVJbmplY3Rl
ZEJ1bmRsZVBhdGgoKQogewogICAgIE5TU3RyaW5nICpuc0J1bmRsZVBhdGggPSBbW05TQnVuZGxl
IG1haW5CdW5kbGVdLmJ1aWx0SW5QbHVnSW5zUGF0aCBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21w
b25lbnQ6QCJXZWJLaXRUZXN0UnVubmVySW5qZWN0ZWRCdW5kbGUuYnVuZGxlIl07Ci0gICAgbV9p
bmplY3RlZEJ1bmRsZVBhdGguYWRvcHQoV0tTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKENGU3Ry
aW5nUmVmKW5zQnVuZGxlUGF0aCkpOworICAgIG1faW5qZWN0ZWRCdW5kbGVQYXRoLmFkb3B0KFdL
U3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKChfX2JyaWRnZSBDRlN0cmluZ1JlZiluc0J1bmRsZVBh
dGgpKTsKIH0KIAogdm9pZCBUZXN0Q29udHJvbGxlcjo6aW5pdGlhbGl6ZVRlc3RQbHVnaW5EaXJl
Y3RvcnkoKQogewotICAgIG1fdGVzdFBsdWdpbkRpcmVjdG9yeS5hZG9wdChXS1N0cmluZ0NyZWF0
ZVdpdGhDRlN0cmluZygoQ0ZTdHJpbmdSZWYpW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVQ
YXRoXSkpOworICAgIG1fdGVzdFBsdWdpbkRpcmVjdG9yeS5hZG9wdChXS1N0cmluZ0NyZWF0ZVdp
dGhDRlN0cmluZygoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBi
dW5kbGVQYXRoXSkpOwogfQogCiB2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybVJlc2V0UHJl
ZmVyZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCmluZGV4IDU5M2FmYzAzNWEzY2NjMjRi
ZTcwZTg4YWZmMTA3YTdkMWEyMjY3YTcuLmE2YWE5OGM4ZTY5ZTFmMDIwOWI3MmUwZGIyODQxMmZk
ZGZlM2IwZDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0
Q29udHJvbGxlcklPUy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlw
dENvbnRyb2xsZXJJT1MubW0KQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIFVJU2NyaXB0Q29udHJv
bGxlcjo6cmV0cmlldmVTcGVha1NlbGVjdGlvbkNvbnRlbnQoSlNWYWx1ZVJlZiBjYWxsYmFjaykK
IEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBVSVNjcmlwdENvbnRyb2xsZXI6OmFjY2Vzc2liaWxp
dHlTcGVha1NlbGVjdGlvbkNvbnRlbnQoKSBjb25zdAogewogICAgIFRlc3RSdW5uZXJXS1dlYlZp
ZXcgKndlYlZpZXcgPSBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+
cGxhdGZvcm1WaWV3KCk7Ci0gICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKChD
RlN0cmluZ1JlZil3ZWJWaWV3LmFjY2Vzc2liaWxpdHlTcGVha1NlbGVjdGlvbkNvbnRlbnQpOwor
ICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoX19icmlkZ2UgQ0ZTdHJpbmdS
ZWYpd2ViVmlldy5hY2Nlc3NpYmlsaXR5U3BlYWtTZWxlY3Rpb25Db250ZW50KTsKIH0KIAogdm9p
ZCBVSVNjcmlwdENvbnRyb2xsZXI6OnNpbXVsYXRlQWNjZXNzaWJpbGl0eVNldHRpbmdzQ2hhbmdl
Tm90aWZpY2F0aW9uKEpTVmFsdWVSZWYgY2FsbGJhY2spCkBAIC0zMzUsNyArMzM1LDcgQEAgdm9p
ZCBVSVNjcmlwdENvbnRyb2xsZXI6OmVudGVyVGV4dChKU1N0cmluZ1JlZiB0ZXh0KQogewogICAg
IFRlc3RSdW5uZXJXS1dlYlZpZXcgKndlYlZpZXcgPSBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9u
KCkubWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCk7CiAgICAgYXV0byB0ZXh0QXNDRlN0cmlu
ZyA9IGFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgdGV4
dCkpOwotICAgIFt3ZWJWaWV3IF9zaW11bGF0ZVRleHRFbnRlcmVkOihOU1N0cmluZyAqKXRleHRB
c0NGU3RyaW5nLmdldCgpXTsKKyAgICBbd2ViVmlldyBfc2ltdWxhdGVUZXh0RW50ZXJlZDooX19i
cmlkZ2UgTlNTdHJpbmcgKil0ZXh0QXNDRlN0cmluZy5nZXQoKV07CiB9CiAKIHZvaWQgVUlTY3Jp
cHRDb250cm9sbGVyOjp0eXBlQ2hhcmFjdGVyVXNpbmdIYXJkd2FyZUtleWJvYXJkKEpTU3RyaW5n
UmVmIGNoYXJhY3RlciwgSlNWYWx1ZVJlZiBjYWxsYmFjaykKQEAgLTM4MywxOSArMzgzLDE5IEBA
IHZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjpkaXNtaXNzRm9ybUFjY2Vzc29yeVZpZXcoKQogSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IFVJU2NyaXB0Q29udHJvbGxlcjo6c2VsZWN0Rm9ybVBvcG92
ZXJUaXRsZSgpIGNvbnN0CiB7CiAgICAgVGVzdFJ1bm5lcldLV2ViVmlldyAqd2ViVmlldyA9IFRl
c3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVZpZXcoKTsK
LSAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKENGU3RyaW5nUmVmKXdlYlZp
ZXcuc2VsZWN0Rm9ybVBvcG92ZXJUaXRsZSk7CisgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0
aENGU3RyaW5nKChfX2JyaWRnZSBDRlN0cmluZ1JlZil3ZWJWaWV3LnNlbGVjdEZvcm1Qb3BvdmVy
VGl0bGUpOwogfQogCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gVUlTY3JpcHRDb250cm9sbGVy
Ojp0ZXh0Q29udGVudFR5cGUoKSBjb25zdAogewogICAgIFRlc3RSdW5uZXJXS1dlYlZpZXcgKndl
YlZpZXcgPSBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGxhdGZv
cm1WaWV3KCk7Ci0gICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKChDRlN0cmlu
Z1JlZikod2ViVmlldy50ZXh0Q29udGVudFR5cGVGb3JUZXN0aW5nID86IEAiIikpOworICAgIHJl
dHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpKHdl
YlZpZXcudGV4dENvbnRlbnRUeXBlRm9yVGVzdGluZyA/OiBAIiIpKTsKIH0KIAogSlNSZXRhaW5Q
dHI8SlNTdHJpbmdSZWY+IFVJU2NyaXB0Q29udHJvbGxlcjo6Zm9ybUlucHV0TGFiZWwoKSBjb25z
dAogewogICAgIFRlc3RSdW5uZXJXS1dlYlZpZXcgKndlYlZpZXcgPSBUZXN0Q29udHJvbGxlcjo6
c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCk7Ci0gICAgcmV0dXJuIEpT
U3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKChDRlN0cmluZ1JlZil3ZWJWaWV3LmZvcm1JbnB1dExh
YmVsKTsKKyAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKF9fYnJpZGdlIENG
U3RyaW5nUmVmKXdlYlZpZXcuZm9ybUlucHV0TGFiZWwpOwogfQogCiB2b2lkIFVJU2NyaXB0Q29u
dHJvbGxlcjo6c2VsZWN0Rm9ybUFjY2Vzc29yeVBpY2tlclJvdyhsb25nIHJvd0luZGV4KQpAQCAt
NTczLDcgKzU3Myw3IEBAIHZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjpyZW1vdmVBbGxEeW5hbWlj
RGljdGlvbmFyaWVzKCkKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBVSVNjcmlwdENvbnRyb2xs
ZXI6OnNjcm9sbGluZ1RyZWVBc1RleHQoKSBjb25zdAogewogICAgIFRlc3RSdW5uZXJXS1dlYlZp
ZXcgKndlYlZpZXcgPSBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+
cGxhdGZvcm1WaWV3KCk7Ci0gICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKChD
RlN0cmluZ1JlZilbd2ViVmlldyBfc2Nyb2xsaW5nVHJlZUFzVGV4dF0pOworICAgIHJldHVybiBK
U1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpW3dlYlZpZXcg
X3Njcm9sbGluZ1RyZWVBc1RleHRdKTsKIH0KIAogSlNPYmplY3RSZWYgVUlTY3JpcHRDb250cm9s
bGVyOjpwcm9wZXJ0aWVzT2ZMYXllcldpdGhJRCh1aW50NjRfdCBsYXllcklEKSBjb25zdApkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvUGxhdGZvcm1XZWJWaWV3TWFjLm1t
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvUGxhdGZvcm1XZWJWaWV3TWFjLm1tCmluZGV4
IGY2Y2IyYTA4ZDY0NTc5Y2Q0NDRmODIwYTMwYTYxNDlmMzgwZGZhNjUuLmRhMTNlNTM0YTM0N2Mw
M2I5ZDcwZmM4ZWRkZDBkY2M0MTU5ODRmZmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvbWFjL1BsYXRmb3JtV2ViVmlld01hYy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL21hYy9QbGF0Zm9ybVdlYlZpZXdNYWMubW0KQEAgLTExMCw4ICsxMTAsNiBAQCBQbGF0Zm9y
bVdlYlZpZXc6On5QbGF0Zm9ybVdlYlZpZXcoKQogewogICAgIG1fd2luZG93LnBsYXRmb3JtV2Vi
VmlldyA9IG51bGxwdHI7CiAgICAgW21fd2luZG93IGNsb3NlXTsKLSAgICBbbV93aW5kb3cgcmVs
ZWFzZV07Ci0gICAgW21fdmlldyByZWxlYXNlXTsKIH0KIAogUGxhdGZvcm1XaW5kb3cgUGxhdGZv
cm1XZWJWaWV3OjprZXlXaW5kb3coKQpAQCAtMTYzLDcgKzE2MSw2IEBAIHZvaWQgUGxhdGZvcm1X
ZWJWaWV3OjphZGRDaHJvbWVJbnB1dEZpZWxkKCkKICAgICBOU1RleHRGaWVsZCAqdGV4dEZpZWxk
ID0gW1tOU1RleHRGaWVsZCBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEw
MCwgMjApXTsKICAgICB0ZXh0RmllbGQudGFnID0gMTsKICAgICBbW21fd2luZG93IGNvbnRlbnRW
aWV3XSBhZGRTdWJ2aWV3OnRleHRGaWVsZF07Ci0gICAgW3RleHRGaWVsZCByZWxlYXNlXTsKIAog
ICAgIE5TVmlldyAqdmlldyA9IHBsYXRmb3JtVmlldygpOwogICAgIFt0ZXh0RmllbGQgc2V0TmV4
dEtleVZpZXc6dmlld107CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9U
ZXN0Q29udHJvbGxlck1hYy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1Rlc3RDb250
cm9sbGVyTWFjLm1tCmluZGV4IGY5ZGQzOWQ5Yjc1YjgyNDA4NzgxZjU5NDVhMGI3OWY0M2IyNjJl
ZTcuLjgzYzRjODE5MzljZDJmNTdhNWU4ZjU4ZjE4ZTY5MjhkM2FkODUyMDkgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1Rlc3RDb250cm9sbGVyTWFjLm1tCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1Rlc3RDb250cm9sbGVyTWFjLm1tCkBAIC0xNTUsNyAr
MTU1LDcgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1Db25maWd1cmVWaWV3Rm9yVGVz
dChjb25zdCBUZXN0SW52b2NhdGlvbiYgdGVzdCkKIAogc3RhdGljIE5TU2V0ICphbGxvd2VkRm9u
dEZhbWlseVNldCgpCiB7Ci0gICAgc3RhdGljIE5TU2V0ICpmb250RmFtaWx5U2V0ID0gW1tOU1Nl
dCBzZXRXaXRoT2JqZWN0czoKKyAgICBzdGF0aWMgTlNTZXQgKmZvbnRGYW1pbHlTZXQgPSBbTlNT
ZXQgc2V0V2l0aE9iamVjdHM6CiAgICAgICAgIEAiQWhlbSIsCiAgICAgICAgIEAiQWwgQmF5YW4i
LAogICAgICAgICBAIkFtZXJpY2FuIFR5cGV3cml0ZXIiLApAQCAtMjc3LDE2ICsyNzcsMTYgQEAg
c3RhdGljIE5TU2V0ICphbGxvd2VkRm9udEZhbWlseVNldCgpCiAgICAgICAgIEAiV2luZ2Rpbmdz
IiwKICAgICAgICAgQCJaYXBmIERpbmdiYXRzIiwKICAgICAgICAgQCJaYXBmaW5vIiwKLSAgICAg
ICAgbmlsXSByZXRhaW5dOworICAgICAgICBuaWxdOwogCiAgICAgcmV0dXJuIGZvbnRGYW1pbHlT
ZXQ7CiB9CiAKIHN0YXRpYyBOU1NldCAqc3lzdGVtSGlkZGVuRm9udEZhbWlseVNldCgpCiB7Ci0g
ICAgc3RhdGljIE5TU2V0ICpmb250RmFtaWx5U2V0ID0gW1tOU1NldCBzZXRXaXRoT2JqZWN0czoK
KyAgICBzdGF0aWMgTlNTZXQgKmZvbnRGYW1pbHlTZXQgPSBbTlNTZXQgc2V0V2l0aE9iamVjdHM6
CiAgICAgICAgIEAiLkx1Y2lkYUdyYW5kZVVJIiwKLSAgICAgICAgbmlsXSByZXRhaW5dOworICAg
ICAgICBuaWxdOwogCiAgICAgcmV0dXJuIGZvbnRGYW1pbHlTZXQ7CiB9CmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9XZWJLaXRUZXN0UnVubmVyRHJhZ2dpbmdJbmZvLm1t
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvV2ViS2l0VGVzdFJ1bm5lckRyYWdnaW5nSW5m
by5tbQppbmRleCA1NjVkYjJmMTI0ZjhmMmMzMjQ4ZTljMzIxYmNjOGU5YzhkZGNiOGUyLi5iY2Vl
YmVjZTFiZjQ2NzgwNWFiNzNhYzFlNTU2NmU0MjI0YjQwMDJlIDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL21hYy9XZWJLaXRUZXN0UnVubmVyRHJhZ2dpbmdJbmZvLm1tCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1dlYktpdFRlc3RSdW5uZXJEcmFnZ2luZ0luZm8u
bW0KQEAgLTQxLDIzICs0MSwxNSBAQCAtIChpZClpbml0V2l0aEltYWdlOihOU0ltYWdlICopaW1h
Z2Ugb2Zmc2V0OihOU1NpemUpb2Zmc2V0IHBhc3RlYm9hcmQ6KE5TUGFzdGVibwogICAgIGlmICgh
c2VsZikKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIF9kcmFnZ2VkSW1hZ2UgPSBbaW1hZ2Ug
cmV0YWluXTsKLSAgICBfZHJhZ2dpbmdQYXN0ZWJvYXJkID0gW3Bhc3RlYm9hcmQgcmV0YWluXTsK
LSAgICBfZHJhZ2dpbmdTb3VyY2UgPSBbc291cmNlIHJldGFpbl07CisgICAgX2RyYWdnZWRJbWFn
ZSA9IGltYWdlOworICAgIF9kcmFnZ2luZ1Bhc3RlYm9hcmQgPSBwYXN0ZWJvYXJkOworICAgIF9k
cmFnZ2luZ1NvdXJjZSA9IHNvdXJjZTsKICAgICBfb2Zmc2V0ID0gb2Zmc2V0OwogICAgIAogICAg
IHJldHVybiBzZWxmOwogfQogCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBbX2RyYWdnZWRJbWFn
ZSByZWxlYXNlXTsKLSAgICBbX2RyYWdnaW5nUGFzdGVib2FyZCByZWxlYXNlXTsKLSAgICBbX2Ry
YWdnaW5nU291cmNlIHJlbGVhc2VdOwotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAoTlNX
aW5kb3cgKilkcmFnZ2luZ0Rlc3RpbmF0aW9uV2luZG93IAorLSAoTlNXaW5kb3cgKilkcmFnZ2lu
Z0Rlc3RpbmF0aW9uV2luZG93CiB7CiAgICAgcmV0dXJuIFtUZXN0Q29udHJvbGxlcjo6c2luZ2xl
dG9uKCkubWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCkgd2luZG93XTsKIH0KZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1dlYktpdFRlc3RSdW5uZXJQYXN0ZWJvYXJk
Lm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvV2ViS2l0VGVzdFJ1bm5lclBhc3RlYm9h
cmQubW0KaW5kZXggYWJjZGY0MTQ3NTE3ZWNiZTVmYzVkYmY1N2M2NWFiMWQ0YWZmYjg0Yi4uOTYz
YWZmZTI3NWQzZjcyNWU0ZjNlNjNjMzc2Yjg5ZjE2YjYwZDYzZSAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9tYWMvV2ViS2l0VGVzdFJ1bm5lclBhc3RlYm9hcmQubW0KKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvV2ViS2l0VGVzdFJ1bm5lclBhc3RlYm9hcmQubW0K
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMTggQXBwbGUsIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAxOCBBcHBs
ZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA3IEdyYWhh
bSBEZW5uaXMgKGdyYWhhbS5kZW5uaXNAZ21haWwuY29tKQogICogQ29weXJpZ2h0IChDKSAyMDA3
IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CiAgKgpAQCAtMjgsOCArMjgsNiBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYktpdFRlc3RSdW5uZXJQYXN0ZWJvYXJkLmgi
CiAKLSNpbmNsdWRlIDxvYmpjL3J1bnRpbWUuaD4KLQogQGludGVyZmFjZSBMb2NhbFBhc3RlYm9h
cmQgOiBOU1Bhc3RlYm9hcmQKIHsKICAgICBOU011dGFibGVBcnJheSAqdHlwZXNBcnJheTsKQEAg
LTQyLDYgKzQwLDExIEBAIEBpbnRlcmZhY2UgTG9jYWxQYXN0ZWJvYXJkIDogTlNQYXN0ZWJvYXJk
CiAtKGlkKWluaXRXaXRoTmFtZTooTlNTdHJpbmcgKiluYW1lOwogQGVuZAogCitAaW50ZXJmYWNl
IE5TUGFzdGVib2FyZCAoU3VwZXJIZWxwZXJzKQorKyAoaW5zdGFuY2V0eXBlKXN1cGVyQWxsb2M7
CisrIChpbnN0YW5jZXR5cGUpc3VwZXJBbGxvY1dpdGhab25lOihOU1pvbmUgKil6b25lOworQGVu
ZAorCiBzdGF0aWMgTlNNdXRhYmxlRGljdGlvbmFyeSAqbG9jYWxQYXN0ZWJvYXJkczsKIAogQGlt
cGxlbWVudGF0aW9uIFdlYktpdFRlc3RSdW5uZXJQYXN0ZWJvYXJkCkBAIC01OSw3ICs2Miw2IEBA
ICsgKE5TUGFzdGVib2FyZCAqKV9wYXN0ZWJvYXJkV2l0aE5hbWU6KE5TU3RyaW5nICopbmFtZQog
ICAgICAgICByZXR1cm4gcGFzdGVib2FyZDsKICAgICBwYXN0ZWJvYXJkID0gW1tMb2NhbFBhc3Rl
Ym9hcmQgYWxsb2NdIGluaXRXaXRoTmFtZTpuYW1lXTsKICAgICBbbG9jYWxQYXN0ZWJvYXJkcyBz
ZXRPYmplY3Q6cGFzdGVib2FyZCBmb3JLZXk6bmFtZV07Ci0gICAgW3Bhc3RlYm9hcmQgcmVsZWFz
ZV07CiAgICAgcmV0dXJuIHBhc3RlYm9hcmQ7CiB9CiAKQEAgLTcxLDcgKzczLDYgQEAgLSAodm9p
ZClfdXBkYXRlVHlwZUNhY2hlSWZOZWVkZWQKIAogKyAodm9pZClyZWxlYXNlTG9jYWxQYXN0ZWJv
YXJkcwogewotICAgIFtsb2NhbFBhc3RlYm9hcmRzIHJlbGVhc2VdOwogICAgIGxvY2FsUGFzdGVi
b2FyZHMgPSBuaWw7CiB9CiAKQEAgLTg0LDEyICs4NSwzMiBAQCAtIChOU0ludGVnZXIpZGVjbGFy
ZVR5cGU6KE5TU3RyaW5nICopdHlwZSBvd25lcjooaWQpbmV3T3duZXIKIAogQGVuZAogCitAaW1w
bGVtZW50YXRpb24gTlNQYXN0ZWJvYXJkIChTdXBlckhlbHBlcnMpCisKKysgKGluc3RhbmNldHlw
ZSlzdXBlckFsbG9jCit7CisgICAgcmV0dXJuIFtzdXBlciBhbGxvY107Cit9CisKKysgKGluc3Rh
bmNldHlwZSlzdXBlckFsbG9jV2l0aFpvbmU6KE5TWm9uZSAqKXpvbmUKK3sKKyAgICByZXR1cm4g
W3N1cGVyIGFsbG9jV2l0aFpvbmU6em9uZV07Cit9CisKK0BlbmQKKwogQGltcGxlbWVudGF0aW9u
IExvY2FsUGFzdGVib2FyZAogCiArIChpZClhbGxvYwogewogICAgIC8vIE5lZWQgdG8gc2tpcCBv
dmVyIFtOU1Bhc3RlYm9hcmQgYWxsb2NdLCB3aGljaCB3b24ndCBhbGxvY2F0ZSBhIG5ldyBvYmpl
Y3QuCi0gICAgcmV0dXJuIGNsYXNzX2NyZWF0ZUluc3RhbmNlKHNlbGYsIDApOworICAgIHJldHVy
biBbc2VsZiBzdXBlckFsbG9jXTsKK30KKworKyAoaWQpYWxsb2NXaXRoWm9uZTooTlNab25lICop
em9uZQoreworICAgIC8vIE5lZWQgdG8gc2tpcCBvdmVyIFtOU1Bhc3RlYm9hcmQgYWxsb2NXaXRo
Wm9uZTpdLCB3aGljaCB3b24ndCBhbGxvY2F0ZSBhIG5ldyBvYmplY3QuCisgICAgcmV0dXJuIFtz
ZWxmIHN1cGVyQWxsb2NXaXRoWm9uZTp6b25lXTsKIH0KIAogLSAoaWQpaW5pdFdpdGhOYW1lOihO
U1N0cmluZyAqKW5hbWUKQEAgLTEwNCwxNSArMTI1LDYgQEAgLSAoaWQpaW5pdFdpdGhOYW1lOihO
U1N0cmluZyAqKW5hbWUKICAgICByZXR1cm4gc2VsZjsKIH0KIAotLSAodm9pZClkZWFsbG9jCi17
Ci0gICAgW3R5cGVzQXJyYXkgcmVsZWFzZV07Ci0gICAgW3R5cGVzU2V0IHJlbGVhc2VdOwotICAg
IFtkYXRhQnlUeXBlIHJlbGVhc2VdOwotICAgIFtwYXN0ZWJvYXJkTmFtZSByZWxlYXNlXTsKLSAg
ICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KIC0gKE5TU3RyaW5nICopbmFtZQogewogICAgIHJldHVy
biBwYXN0ZWJvYXJkTmFtZTsKQEAgLTE0MSw3ICsxNTMsNiBAQCAtIChOU0ludGVnZXIpYWRkVHlw
ZXM6KE5TQXJyYXkgKiluZXdUeXBlcyBvd25lcjooaWQpbmV3T3duZXIKICAgICAgICAgICAgIHNl
dFR5cGUgPSBbdHlwZSBjb3B5XTsKICAgICAgICAgICAgIFt0eXBlc0FycmF5IGFkZE9iamVjdDpz
ZXRUeXBlXTsKICAgICAgICAgICAgIFt0eXBlc1NldCBhZGRPYmplY3Q6c2V0VHlwZV07Ci0gICAg
ICAgICAgICBbc2V0VHlwZSByZWxlYXNlXTsKICAgICAgICAgfQogICAgICAgICBpZiAobmV3T3du
ZXIgJiYgW25ld093bmVyIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocGFzdGVib2FyZDpw
cm92aWRlRGF0YUZvclR5cGU6KV0pCiAgICAgICAgICAgICBbbmV3T3duZXIgcGFzdGVib2FyZDpz
ZWxmIHByb3ZpZGVEYXRhRm9yVHlwZTpzZXRUeXBlXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvbWFjL1dlYktpdFRlc3RSdW5uZXJXaW5kb3cubW0gYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL21hYy9XZWJLaXRUZXN0UnVubmVyV2luZG93Lm1tCmluZGV4IGI0NTk5NWExYWVj
MjYxMjY1ZDVmYzhmOTNhYjMzNDMzMDQxYTQxNzEuLmE1YTE4NDMzNmU2OWZhZTY3YjRiNWVmNWYy
NmU3YmFhZTZkNWE1MWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1dl
YktpdFRlc3RSdW5uZXJXaW5kb3cubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMv
V2ViS2l0VGVzdFJ1bm5lcldpbmRvdy5tbQpAQCAtNTQsNyArNTQsNiBAQCAtICh2b2lkKWRlYWxs
b2MKIHsKICAgICBhbGxXaW5kb3dzLnJlbW92ZUZpcnN0KHNlbGYpOwogICAgIEFTU0VSVCghYWxs
V2luZG93cy5jb250YWlucyhzZWxmKSk7Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCiAtIChC
T09MKWlzS2V5V2luZG93CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9t
YWluLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvbWFpbi5tbQppbmRleCBjMTEyY2Ix
MWMwMzU5NDE5NWI4ZWZmNWU3OWUzNTVhMGVlNjMyZmFmLi45YjVhOWY5M2FjNzNkOGRkYzNjYzQx
YTBlOGFiNWY3YTg1NmRhNjVjIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21h
Yy9tYWluLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL21haW4ubW0KQEAgLTUz
LDcgKzUzLDcgQEAgc3RhdGljIHZvaWQgc2V0RGVmYXVsdHNUb0NvbnNpc3RlbnRWYWx1ZXNGb3JU
ZXN0aW5nKCkKIHN0YXRpYyB2b2lkIGRpc2FibGVBcHBOYXBJblVJUHJvY2VzcygpCiB7CiAgICAg
TlNBY3Rpdml0eU9wdGlvbnMgb3B0aW9ucyA9IChOU0FjdGl2aXR5VXNlckluaXRpYXRlZEFsbG93
aW5nSWRsZVN5c3RlbVNsZWVwIHwgTlNBY3Rpdml0eUxhdGVuY3lDcml0aWNhbCkgJiB+KE5TQWN0
aXZpdHlTdWRkZW5UZXJtaW5hdGlvbkRpc2FibGVkIHwgTlNBY3Rpdml0eUF1dG9tYXRpY1Rlcm1p
bmF0aW9uRGlzYWJsZWQpOwotICAgIHN0YXRpYyBpZCBhc3NlcnRpb24gPSBbW1tOU1Byb2Nlc3NJ
bmZvIHByb2Nlc3NJbmZvXSBiZWdpbkFjdGl2aXR5V2l0aE9wdGlvbnM6b3B0aW9ucyByZWFzb246
QCJXZWJLaXRUZXN0UnVubmVyIHNob3VsZCBub3QgYmUgc3ViamVjdCB0byBwcm9jZXNzIHN1cHBy
ZXNzaW9uIl0gcmV0YWluXTsKKyAgICBzdGF0aWMgaWQgYXNzZXJ0aW9uID0gW1tOU1Byb2Nlc3NJ
bmZvIHByb2Nlc3NJbmZvXSBiZWdpbkFjdGl2aXR5V2l0aE9wdGlvbnM6b3B0aW9ucyByZWFzb246
QCJXZWJLaXRUZXN0UnVubmVyIHNob3VsZCBub3QgYmUgc3ViamVjdCB0byBwcm9jZXNzIHN1cHBy
ZXNzaW9uIl07CiAgICAgQVNTRVJUX1VOVVNFRChhc3NlcnRpb24sIGFzc2VydGlvbik7CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>