<?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>222237</bug_id>
          
          <creation_ts>2021-02-20 13:54:57 -0800</creation_ts>
          <short_desc>Use adoptNS() as soon as we [[ObjcClass alloc] init] to avoid leaks</short_desc>
          <delta_ts>2021-02-22 14:45:30 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=222288</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>achristensen</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cfleizach</cc>
    
    <cc>darin</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>philipj</cc>
    
    <cc>samuel_white</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1731853</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-20 13:54:57 -0800</bug_when>
    <thetext>Use adoptNS() as soon as we [[ObjcClass alloc] init] to avoid leaks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731872</commentid>
    <comment_count>1</comment_count>
      <attachid>421116</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-20 15:02:58 -0800</bug_when>
    <thetext>Created attachment 421116
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732138</commentid>
    <comment_count>2</comment_count>
      <attachid>421196</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-22 08:29:50 -0800</bug_when>
    <thetext>Created attachment 421196
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732176</commentid>
    <comment_count>3</comment_count>
      <attachid>421196</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-02-22 09:55:51 -0800</bug_when>
    <thetext>Comment on attachment 421196
Patch

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

&gt; Source/WebKit/UIProcess/mac/WebColorPickerMac.mm:133
&gt;  + (NSPopover *)_colorPopoverCreateIfNecessary:(BOOL)forceCreation

This is a very strange interface for a method. It is really two separate methods. One always creates if passed YES, overwriting the old one, and the other never creates if passed NO, so what does &quot;if necessary&quot; even mean?

&gt; Source/WebKit/WebProcess/InjectedBundle/API/mac/WKDOMInternals.mm:87
&gt; +static RetainPtr&lt;WKDOMNode&gt; initWithImpl(WebCore::Node* impl)

Not a good name for a function that creates an object. I think createWrapper would be a better name.

&gt; Source/WebKit/WebProcess/InjectedBundle/API/mac/WKDOMInternals.mm:134
&gt; +static RetainPtr&lt;WKDOMRange&gt; initWithImpl(WebCore::Range* impl)

Ditto.

&gt; Source/WebKitLegacy/mac/Plugins/WebPluginController.mm:155
&gt; +    auto&amp; views = pluginViews();

Not sure we need a local variable. Could just call pluginViews() twice.

&gt; Source/WebKitLegacy/mac/Plugins/WebPluginController.mm:163
&gt;  #if PLATFORM(IOS_FAMILY)

Do we still need plug-in machinery on iOS? Is it used for video or something?

&gt; Source/WebKitLegacy/mac/Plugins/WebPluginController.mm:166
&gt; +    auto&amp; views = pluginViews();

Ditto.

&gt; Source/WebKitLegacy/mac/Plugins/WebPluginDatabase.mm:66
&gt; +    static NeverDestroyed&lt;RetainPtr&lt;WebPluginDatabase&gt;&gt; _sharedDatabase;

Didn’t comment elsewhere, but are you sure these leading underscore names are available? I seem to recall that C++ reserved those for the standard library or something.

&gt; Source/WebKitLegacy/mac/WebView/WebPreferences.mm:380
&gt; +    // FIXME: This check is necessary to avoid recursion (see &lt;rdar://problem/9564337&gt;), but it also makes standardPreferences() construction not thread safe.
&gt; +    if (auto&amp; preferences = standardPreferences())
&gt; +        return preferences.get();

I really do not understand how this helps with anything given how we use dispatch_once below.

My guess is that it does not prevent recursion.

&gt; Source/WebKitLegacy/mac/WebView/WebView.mm:1352
&gt; +static RetainPtr&lt;NSString&gt; outlookQuirksUserScriptContents()

I’d call this &quot;createXXX&quot;.

&gt; Source/WebKitLegacy/mac/WebView/WebView.mm:1374
&gt; +static RetainPtr&lt;NSString&gt; laBanquePostaleQuirksScript()

Ditto.

&gt; Tools/TestRunnerShared/mac/NSPasteboardAdditions.mm:41
&gt;          if (auto legacyType = adoptNS((__bridge NSString *)UTTypeCopyPreferredTagWithClass((__bridge CFStringRef)type, kUTTagClassNSPboardType)))

This is wrong. Must not bridge cast and then do adoptNS. Instead need to do adoptCF.

&gt; Tools/TestWebKitAPI/Tests/mac/WindowlessWebViewWithMedia.mm:67
&gt; +        RetainPtr&lt;WebView&gt; webView = adoptNS([[WebView alloc] initWithFrame:NSMakeRect(0, 0, 120, 200) frameName:nil groupName:nil]);

Can we do auto here?

&gt; Tools/TestWebKitAPI/Tests/mac/WindowlessWebViewWithMedia.mm:68
&gt; +        RetainPtr&lt;WindowlessWebViewWithMediaFrameLoadDelegate&gt; testController = adoptNS([WindowlessWebViewWithMediaFrameLoadDelegate new]);

Can we do auto here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732211</commentid>
    <comment_count>4</comment_count>
      <attachid>421196</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-22 11:06:22 -0800</bug_when>
    <thetext>Comment on attachment 421196
Patch

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

&gt;&gt; Source/WebKit/UIProcess/mac/WebColorPickerMac.mm:133
&gt;&gt;  + (NSPopover *)_colorPopoverCreateIfNecessary:(BOOL)forceCreation
&gt; 
&gt; This is a very strange interface for a method. It is really two separate methods. One always creates if passed YES, overwriting the old one, and the other never creates if passed NO, so what does &quot;if necessary&quot; even mean?

I asked about it and this is apparently overriding a method from NSPopoverColorWell. We don&apos;t really have flexibility here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732213</commentid>
    <comment_count>5</comment_count>
      <attachid>421196</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-22 11:08:27 -0800</bug_when>
    <thetext>Comment on attachment 421196
Patch

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

&gt;&gt; Source/WebKitLegacy/mac/Plugins/WebPluginController.mm:155
&gt;&gt; +    auto&amp; views = pluginViews();
&gt; 
&gt; Not sure we need a local variable. Could just call pluginViews() twice.

I think I like it better with the local. It would get call 3 times:
if (!pluginViews())
    pluginViews() = adoptNS([[NSMutableSet alloc] init]);
[pluginViews() addObject:view];</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732220</commentid>
    <comment_count>6</comment_count>
      <attachid>421215</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-22 11:30:36 -0800</bug_when>
    <thetext>Created attachment 421215
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732293</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-22 13:59:07 -0800</bug_when>
    <thetext>Committed r273276: &lt;https://commits.webkit.org/r273276&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 421215.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732295</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-02-22 14:01:43 -0800</bug_when>
    <thetext>&lt;rdar://problem/74612721&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421116</attachid>
            <date>2021-02-20 15:02:58 -0800</date>
            <delta_ts>2021-02-22 08:29:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222237-20210220150257.patch</filename>
            <type>text/plain</type>
            <size>140485</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMjAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2Y0YWE3MTEyNmFmZjFj
NmU5YTkzM2Q5NjNmZjI3NjE3YmM1NGUzZC4uNTlmODM0ZjFkM2UxNDFiYmNkNmZkNTliM2Y0Y2Q5
YzllNzJlOGJlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDIxLTAyLTIwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIGFkb3B0TlMoKSBhcyBz
b29uIGFzIHdlIFtbT2JqY0NsYXNzIGFsbG9jXSBpbml0XSB0byBhdm9pZCBsZWFrcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyMjM3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbToKKyAgICAgICAgKC1bV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElP
TlNfRU5EXSk6CisgICAgICAgICogYnJpZGdlL3Rlc3RiaW5kaW5ncy5tbToKKyAgICAgICAgKG1h
aW4pOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVsLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlbDo6Y3JlYXRlVmlkZW9GdWxsc2Ny
ZWVuVmlld0NvbnRyb2xsZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dl
YkFjdGlvbkRpc2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZS5tbToKKyAgICAgICAgKCtbV2ViQWN0aW9u
RGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlIHNoYXJlZF0pOgorICAgICAgICAqIHBsYXRmb3JtL2lv
cy9XZWJCYWNrZ3JvdW5kVGFza0NvbnRyb2xsZXIubW06CisgICAgICAgICgrW1dlYkJhY2tncm91
bmRUYXNrQ29udHJvbGxlciBzaGFyZWRDb250cm9sbGVyXSk6CisgICAgICAgICogcGxhdGZvcm0v
aW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW06CisgICAgICAgICgrW1dlYkl0ZW1Qcm92
aWRlclBhc3RlYm9hcmQgc2hhcmVkSW5zdGFuY2VdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mv
d2FrL1dlYkNvcmVUaHJlYWQubW06CisgICAgICAgIChzQXN5bmNEZWxlZ2F0ZXMpOgorICAgICAg
ICAoV2ViVGhyZWFkQ2FsbERlbGVnYXRlQXN5bmMpOgorICAgICAgICAoV2ViUnVuTG9vcFVubG9j
a0ludGVybmFsKToKKyAgICAgICAgKFN0YXJ0V2ViVGhyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvVGhlbWVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpidXR0b25DZWxsKToKKyAgICAg
ICAgKFdlYkNvcmU6OmJ1dHRvbik6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYk5TQXR0cmli
dXRlZFN0cmluZ0V4dHJhcy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmF0dHJpYnV0ZWRTdHJpbmdC
eVN0cmlwcGluZ0F0dGFjaG1lbnRDaGFyYWN0ZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdGlv
blF1ZXVlRm9yQXN5bmNDbGllbnRzKToKKwogMjAyMS0wMi0yMCAgWmFsYW4gQnVqdGFzICA8emFs
YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0ludGVncmF0aW9uXSBFbmNsb3NpbmcgdG9w
IGFuZCBib3R0b20gdmFsdWUgYXJlIHJlbGF0aXZlIHRvIHRoZSBjb250YWluaW5nIGJsb2NrJ3Mg
Ym9yZGVyIGJveApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCA3OWIxMTk2NzBiOTgxMmUxMWMxM2NhNWFhNmY2NTZhYjk4
MDNlYmI0Li40YTA5MjJhOWFmZGViNWViYzcxMjhiOWZiZDNlZTg2MTBmODJlNDUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDUyIEBACisyMDIxLTAyLTIwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CisKKyAgICAgICAgVXNlIGFkb3B0TlMoKSBhcyBzb29uIGFzIHdlIFtbT2JqY0NsYXNz
IGFsbG9jXSBpbml0XSB0byBhdm9pZCBsZWFrcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyMjM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL05TQXR0cmlidXRlZFN0
cmluZy5tbToKKyAgICAgICAgKGdsb2JhbENvbmZpZ3VyYXRpb24pOgorICAgICAgICAoK1tfV0tB
dHRyaWJ1dGVkU3RyaW5nV2ViVmlld0NhY2hlIGNvbmZpZ3VyYXRpb25dKToKKyAgICAgICAgKCtb
X1dLQXR0cmlidXRlZFN0cmluZ1dlYlZpZXdDYWNoZSBjbGVhckNvbmZpZ3VyYXRpb25dKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZS5tbToKKyAgICAgICAgKC1bV0tOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIF93ZWJfY3Jl
YXRlVGFyZ2V0XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29s
Lm1tOgorICAgICAgICAoc2hhcmVkUHJvY2Vzc1Bvb2wpOgorICAgICAgICAoLVtXS1Byb2Nlc3NQ
b29sIGVuY29kZVdpdGhDb2RlcjpdKToKKyAgICAgICAgKCtbV0tQcm9jZXNzUG9vbCBfc2hhcmVk
UHJvY2Vzc1Bvb2xdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bToKKyAgICAgICAgKC1bV0tXZWJWaWV3IGxvYWRTaW11bGF0ZWRSZXF1ZXN0OndpdGhSZXNwb25z
ZUhUTUxTdHJpbmc6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVE
YXRhU3RvcmUubW06CisgICAgICAgICgrW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxXZWJzaXRlRGF0
YVR5cGVzXSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1ByZWZlcmVuY2VPYnNlcnZlci5t
bToKKyAgICAgICAgKCtbV0tQcmVmZXJlbmNlT2JzZXJ2ZXIgc2hhcmVkSW5zdGFuY2VdKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbToK
KyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpjcmVhdGVWaWRl
b0Z1bGxzY3JlZW5WaWV3Q29udHJvbGxlcik6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dl
Ykluc3BlY3RvclByZWZlcmVuY2VPYnNlcnZlci5tbToKKyAgICAgICAgKCtbV0tXZWJJbnNwZWN0
b3JQcmVmZXJlbmNlT2JzZXJ2ZXIgc2hhcmVkSW5zdGFuY2VdKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvQXV0aGVudGljYXRvclByZXNlbnRlckNvb3JkaW5h
dG9yLm1tOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdG9yUHJlc2VudGVyQ29vcmRpbmF0
b3I6OkF1dGhlbnRpY2F0b3JQcmVzZW50ZXJDb29yZGluYXRvcik6CisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgc3VwcG9ydGVkUGFzdGVib2FyZFR5cGVzRm9yQ3VycmVudFNlbGVjdGlvbl0pOgorICAg
ICAgICAoLVtXS0NvbnRlbnRWaWV3IGFzc2lnbkxlZ2FjeURhdGFGb3JDb250ZXh0TWVudUludGVy
YWN0aW9uXSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS01vdXNlRGV2aWNlT2JzZXJ2ZXIu
bW06CisgICAgICAgICgrW1dLTW91c2VEZXZpY2VPYnNlcnZlciBzaGFyZWRJbnN0YW5jZV0pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tTdHlsdXNEZXZpY2VPYnNlcnZlci5tbToKKyAgICAg
ICAgKCtbV0tTdHlsdXNEZXZpY2VPYnNlcnZlciBzaGFyZWRJbnN0YW5jZV0pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9tYWMvV0tUZXh0SW5wdXRXaW5kb3dDb250cm9sbGVyLm1tOgorICAgICAgICAo
K1tXS1RleHRJbnB1dFdpbmRvd0NvbnRyb2xsZXIgc2hhcmVkVGV4dElucHV0V2luZG93Q29udHJv
bGxlcl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViQ29sb3JQaWNrZXJNYWMubW06Cisg
ICAgICAgICgrW1dLUG9wb3ZlckNvbG9yV2VsbCBfY29sb3JQb3BvdmVyQ3JlYXRlSWZOZWNlc3Nh
cnk6XSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJv
cGRvd25NYWMubW06CisgICAgICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9uV2luZG93IGluaXRX
aXRoQ29udGVudFJlY3Q6c3R5bGVNYXNrOmJhY2tpbmc6ZGVmZXI6XSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NSW50ZXJuYWxzLm1tOgorICAgICAg
ICAoV2ViS2l0Ojppbml0V2l0aEltcGwpOgorICAgICAgICAoV2ViS2l0Ojp0b1dLRE9NVHlwZSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9tYWMvSW5qZWN0ZWRCdW5kbGVN
YWMubW06CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlOjppbml0aWFsaXplKToKKwog
MjAyMS0wMi0yMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQsIGZpeCByZWdyZXNzaW9uIGZyb20gcjI3MzE5NCB0aGF0IHdhcyBzcG90dGVkIGJ5
IERhcmluIEFkbGVyIGFmdGVyIGxhbmRpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L2lvcy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKaW5k
ZXggMDczNGMzNWZhNTA3NjU2NjgzZWFjYTQ1OTc2NmU2Yjg5OWJkNGFkZS4uNmFkOGZkZjk0OGZl
MmE0MmRhMWYzOTRiNWM3NTJlZjM5Y2EzMDVkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9pb3MvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEzIEBACisyMDIxLTAyLTIwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CisKKyAgICAgICAgVXNlIGFkb3B0TlMoKSBhcyBzb29uIGFzIHdlIFtbT2JqY0NsYXNz
IGFsbG9jXSBpbml0XSB0byBhdm9pZCBsZWFrcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyMjM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBNaXNjL1dlYkdlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW06
CisgICAgICAgICgrW1dlYkdlb2xvY2F0aW9uUHJvdmlkZXJJT1Mgc2hhcmVkR2VvbG9jYXRpb25Q
cm92aWRlcl0pOgorCiAyMDIxLTAyLTE3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CiAKICAgICAgICAgUmVkdWNlIGV4cGxpY2l0IHVzYWdlIG9mIFtvYmpDIGF1dG9yZWxlYXNlXSBp
biBXZWJLaXQgZXZlbiBmdXJ0aGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggZGNj
NTRlNWQ4MzI0NDU2M2MyODcwNjljYTNlNDJlMDUyY2YxNTI4MC4uYTk2M2UyNmZlYzQ0YTRlZmM0
MzZiNzU4Y2EzYTZmY2IyNjAxNWFjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDcwIEBACisyMDIxLTAyLTIwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CisKKyAgICAgICAgVXNlIGFkb3B0TlMoKSBhcyBzb29uIGFzIHdlIFtbT2JqY0NsYXNzIGFsbG9j
XSBpbml0XSB0byBhdm9pZCBsZWFrcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIyMjM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBEZWZhdWx0RGVsZWdhdGVzL1dlYkRlZmF1bHRVSURlbGVnYXRlLm1t
OgorICAgICAgICAoK1tXZWJEZWZhdWx0VUlEZWxlZ2F0ZSBzaGFyZWRVSURlbGVnYXRlXSk6Cisg
ICAgICAgICogSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbToKKyAgICAgICAgKC1bV2ViSGlzdG9y
eUl0ZW0gY29weVdpdGhab25lOl0pOgorICAgICAgICAqIE1pc2MvV2ViSWNvbkRhdGFiYXNlLm1t
OgorICAgICAgICAoK1tXZWJJY29uRGF0YWJhc2Ugc2hhcmVkSWNvbkRhdGFiYXNlXSk6CisgICAg
ICAgICogTWlzYy9XZWJOU1Bhc3RlYm9hcmRFeHRyYXMubW06CisgICAgICAgIChfd3JpdGFibGVU
eXBlc0ZvckltYWdlV2l0aG91dEFyY2hpdmUpOgorICAgICAgICAqIFBsdWdpbnMvV2ViQmFzZU5l
dHNjYXBlUGx1Z2luVmlldy5tbToKKyAgICAgICAgKC1bV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmll
dyBjYWNoZVNuYXBzaG90XSk6CisgICAgICAgICogUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0
cmVhbS5tbToKKyAgICAgICAgKFdlYk5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkZWxpdmVyRGF0YSk6
CisgICAgICAgICogUGx1Z2lucy9XZWJQbHVnaW5Db250cm9sbGVyLm1tOgorICAgICAgICAocGx1
Z2luVmlld3MpOgorICAgICAgICAoLVtXZWJQbHVnaW5Db250cm9sbGVyIHBsdWdJblZpZXdXaXRo
QXJndW1lbnRzOmZyb21QbHVnaW5QYWNrYWdlOl0pOgorICAgICAgICAoK1tXZWJQbHVnaW5Db250
cm9sbGVyIGFkZFBsdWdJblZpZXc6XSk6CisgICAgICAgICgrW1dlYlBsdWdpbkNvbnRyb2xsZXIg
aXNQbHVnSW5WaWV3Ol0pOgorICAgICAgICAoLVtXZWJQbHVnaW5Db250cm9sbGVyIGRlc3Ryb3lQ
bHVnaW46XSk6CisgICAgICAgICgtW1dlYlBsdWdpbkNvbnRyb2xsZXIgZGVzdHJveUFsbFBsdWdp
bnNdKToKKyAgICAgICAgKiBQbHVnaW5zL1dlYlBsdWdpbkRhdGFiYXNlLm1tOgorICAgICAgICAo
c2hhcmVkRGF0YWJhc2UpOgorICAgICAgICAoK1tXZWJQbHVnaW5EYXRhYmFzZSBzaGFyZWREYXRh
YmFzZV0pOgorICAgICAgICAoK1tXZWJQbHVnaW5EYXRhYmFzZSBzaGFyZWREYXRhYmFzZUlmRXhp
c3RzXSk6CisgICAgICAgICgrW1dlYlBsdWdpbkRhdGFiYXNlIGNsb3NlU2hhcmVkRGF0YWJhc2Vd
KToKKyAgICAgICAgKC1bV2ViUGx1Z2luRGF0YWJhc2UgcmVmcmVzaF0pOgorICAgICAgICAoLVtX
ZWJQbHVnaW5EYXRhYmFzZSBfcGx1Z0luUGF0aHNdKToKKyAgICAgICAgKC1bV2ViUGx1Z2luRGF0
YWJhc2UgX3JlbW92ZVBsdWdpbjpdKToKKyAgICAgICAgKiBTY3JpcHRzL1ByZWZlcmVuY2VzVGVt
cGxhdGVzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsRmVhdHVyZXMubW0uZXJiOgorICAgICAg
ICAqIFNjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbEZl
YXR1cmVzLm1tLmVyYjoKKyAgICAgICAgKiBXZWJWaWV3L1dlYkRhdGFTb3VyY2UubW06CisgICAg
ICAgICgrW1dlYkRhdGFTb3VyY2UgX3JlcFR5cGVzQWxsb3dJbWFnZVR5cGVPbWlzc2lvbjpdKToK
KyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lVmlldy5tbToKKyAgICAgICAgKCtbV2ViRnJhbWVW
aWV3IF92aWV3VHlwZXNBbGxvd0ltYWdlVHlwZU9taXNzaW9uOl0pOgorICAgICAgICAqIFdlYlZp
ZXcvV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIubW06CisgICAgICAgIChjcmVhdGVCYWNrZ3JvdW5k
RnVsbHNjcmVlbldpbmRvdyk6CisgICAgICAgICogV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRp
b24ubW06CisgICAgICAgIChyZWdFeHBGb3JMYWJlbHMpOgorICAgICAgICAqIFdlYlZpZXcvV2Vi
SFRNTFZpZXcubW06CisgICAgICAgICgrW1dlYkhUTUxWaWV3IF9pbnNlcnRhYmxlUGFzdGVib2Fy
ZFR5cGVzXSk6CisgICAgICAgICogV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbToKKyAgICAgICAg
KHN0YW5kYXJkUHJlZmVyZW5jZXMpOgorICAgICAgICAod2ViUHJlZmVyZW5jZXNJbnN0YW5jZXMp
OgorICAgICAgICAoK1tXZWJQcmVmZXJlbmNlcyBzdGFuZGFyZFByZWZlcmVuY2VzXSk6CisgICAg
ICAgICgrW1dlYlByZWZlcmVuY2VzIF9nZXRJbnN0YW5jZUZvcklkZW50aWZpZXI6XSk6CisgICAg
ICAgICgrW1dlYlByZWZlcmVuY2VzIF9zZXRJbnN0YW5jZTpmb3JJZGVudGlmaWVyOl0pOgorICAg
ICAgICAoK1tXZWJQcmVmZXJlbmNlcyBfY2hlY2tMYXN0UmVmZXJlbmNlRm9ySWRlbnRpZmllcjpd
KToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgIChzY2hlbWVzV2l0aFJl
cHJlc2VudGF0aW9uc1NldCk6CisgICAgICAgIChvdXRsb29rUXVpcmtzVXNlclNjcmlwdENvbnRl
bnRzKToKKyAgICAgICAgKC1bV2ViVmlldyBfaW5qZWN0T3V0bG9va1F1aXJrc1NjcmlwdF0pOgor
ICAgICAgICAobGFCYW5xdWVQb3N0YWxlUXVpcmtzU2NyaXB0KToKKyAgICAgICAgKC1bV2ViVmll
dyBfaW5qZWN0TGFCYW5xdWVQb3N0YWxlUXVpcmtzXSk6CisgICAgICAgICgrW1dlYlZpZXcgX3Jl
Z2lzdGVyVmlld0NsYXNzOnJlcHJlc2VudGF0aW9uQ2xhc3M6Zm9yVVJMU2NoZW1lOl0pOgorICAg
ICAgICAoK1tXZWJWaWV3IF9yZXByZXNlbnRhdGlvbkV4aXN0c0ZvclVSTFNjaGVtZTpdKToKKyAg
ICAgICAgKCtbV2ViVmlldyBhdXRvbWF0aWNhbGx5Tm90aWZpZXNPYnNlcnZlcnNGb3JLZXk6XSk6
CisgICAgICAgICgtW1dlYlZpZXcgX2RlY2xhcmVkS2V5c10pOgorICAgICAgICAoLVtXZWJWaWV3
IGFkZFBsdWdpbkluc3RhbmNlVmlldzpdKToKKyAgICAgICAgKC1bV2ViVmlldyBfZW50ZXJGdWxs
U2NyZWVuRm9yRWxlbWVudDpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdEYXRhLmg6CisK
IDIwMjEtMDItMTkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZpZXcgcmVtYWluaW5nIHVzYWdlIG9mIGF1dG9yZWxlYXNlIHRvIG1ha2Ugc3VyZSBpdCBpcyBu
ZWNlc3NhcnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KaW5kZXggMDU3
YjFjZGQ0MGEyYzZkMjMzNWI3MDc5YzEzNWRhMTIyZDg3MzFiMC4uOGFhODIwNjE1YTgxZjM1ZjNj
NmRkZTExNzEyMjU5NTljYWJjZDdiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXJNYWMubW0KQEAgLTEyOTQsMzEgKzEyOTQsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVO
VEFUSU9OU19FTkQKICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNBdHRhY2htZW50KCkpCiAgICAg
ICAgIHJldHVybiBbW3NlbGYgYXR0YWNobWVudFZpZXddIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVO
YW1lc107CiAKLSAgICBzdGF0aWMgTlNBcnJheSAqYW5jaG9yQXR0cnM7Ci0gICAgc3RhdGljIE5T
QXJyYXkgKndlYkFyZWFBdHRyczsKLSAgICBzdGF0aWMgTlNBcnJheSAqdGV4dEF0dHJzOwotICAg
IHN0YXRpYyBOU0FycmF5ICpsaXN0QXR0cnM7Ci0gICAgc3RhdGljIE5TQXJyYXkgKmxpc3RCb3hB
dHRyczsKLSAgICBzdGF0aWMgTlNBcnJheSAqcmFuZ2VBdHRyczsKLSAgICBzdGF0aWMgTlNBcnJh
eSAqbWVudUF0dHJzOwotICAgIHN0YXRpYyBOU0FycmF5ICptZW51QmFyQXR0cnM7Ci0gICAgc3Rh
dGljIE5TQXJyYXkgKm1lbnVJdGVtQXR0cnM7Ci0gICAgc3RhdGljIE5TQXJyYXkgKmNvbnRyb2xB
dHRyczsKLSAgICBzdGF0aWMgTlNBcnJheSAqdGFibGVBdHRyczsKLSAgICBzdGF0aWMgTlNBcnJh
eSAqdGFibGVSb3dBdHRyczsKLSAgICBzdGF0aWMgTlNBcnJheSAqdGFibGVDb2xBdHRyczsKLSAg
ICBzdGF0aWMgTlNBcnJheSAqdGFibGVDZWxsQXR0cnM7Ci0gICAgc3RhdGljIE5TQXJyYXkgKmdy
b3VwQXR0cnM7Ci0gICAgc3RhdGljIE5TQXJyYXkgKmlucHV0SW1hZ2VBdHRyczsKLSAgICBzdGF0
aWMgTlNBcnJheSAqcGFzc3dvcmRGaWVsZEF0dHJzOwotICAgIHN0YXRpYyBOU0FycmF5ICp0YWJM
aXN0QXR0cnM7Ci0gICAgc3RhdGljIE5TQXJyYXkgKmNvbWJvQm94QXR0cnM7Ci0gICAgc3RhdGlj
IE5TQXJyYXkgKm91dGxpbmVBdHRyczsKLSAgICBzdGF0aWMgTlNBcnJheSAqb3V0bGluZVJvd0F0
dHJzOwotICAgIHN0YXRpYyBOU0FycmF5ICpidXR0b25BdHRyczsKLSAgICBzdGF0aWMgTlNBcnJh
eSAqc2Nyb2xsVmlld0F0dHJzOwotICAgIHN0YXRpYyBOU0FycmF5ICppbmNyZW1lbnRvckF0dHJz
OwotICAgIHN0YXRpYyBOU0FycmF5ICphdHRyaWJ1dGVzID0gcmV0YWluUHRyKEBbCisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0FycmF5Pj4gYXR0cmlidXRlcyA9IEBbCiAg
ICAgICAgIE5TQWNjZXNzaWJpbGl0eVJvbGVBdHRyaWJ1dGUsCiAgICAgICAgIE5TQWNjZXNzaWJp
bGl0eVN1YnJvbGVBdHRyaWJ1dGUsCiAgICAgICAgIE5TQWNjZXNzaWJpbGl0eVJvbGVEZXNjcmlw
dGlvbkF0dHJpYnV0ZSwKQEAgLTEzNDcsOCArMTMyMywyNCBAQCBBTExPV19ERVBSRUNBVEVEX0lN
UExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5Rm9jdXNhYmxlQW5jZXN0
b3JBdHRyaWJ1dGUsCiAgICAgICAgIE5TQWNjZXNzaWJpbGl0eUVkaXRhYmxlQW5jZXN0b3JBdHRy
aWJ1dGUsCiAgICAgICAgIE5TQWNjZXNzaWJpbGl0eUhpZ2hlc3RFZGl0YWJsZUFuY2VzdG9yQXR0
cmlidXRlLAotICAgIF0pLmxlYWtSZWYoKTsKLSAgICBzdGF0aWMgTlNBcnJheSAqY29tbW9uTWVu
dUF0dHJzID0gcmV0YWluUHRyKEBbCisgICAgXTsKKyAgICBzdGF0aWMgYXV0byBpbmNyZW1lbnRv
ckF0dHJzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICAgICAgYXV0byB0ZW1wQXJyYXkg
PSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRl
cy5nZXQoKS5nZXQoKV0pOworICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2li
aWxpdHlJbmNyZW1lbnRCdXR0b25BdHRyaWJ1dGVdOworICAgICAgICBbdGVtcEFycmF5IGFkZE9i
amVjdDpOU0FjY2Vzc2liaWxpdHlEZWNyZW1lbnRCdXR0b25BdHRyaWJ1dGVdOworICAgICAgICBb
dGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlWYWx1ZURlc2NyaXB0aW9uQXR0cmli
dXRlXTsKKyAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5TWluVmFs
dWVBdHRyaWJ1dGVdOworICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxp
dHlNYXhWYWx1ZUF0dHJpYnV0ZV07CisgICAgICAgIHJldHVybiB0ZW1wQXJyYXk7CisgICAgfSgp
KTsKKyAgICBzdGF0aWMgYXV0byBhbmNob3JBdHRycyA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7
CisgICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9j
XSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXMuZ2V0KCkuZ2V0KCldKTsKKyAgICAgICAgW3RlbXBB
cnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VVJMQXR0cmlidXRlXTsKKyAgICAgICAgW3Rl
bXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5QWNjZXNzS2V5QXR0cmlidXRlXTsKKyAg
ICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5TGlua1JlbGF0aW9uc2hp
cFR5cGVBdHRyaWJ1dGVdOworICAgICAgICByZXR1cm4gdGVtcEFycmF5OworICAgIH0oKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0FycmF5Pj4gY29tbW9uTWVudUF0
dHJzID0gQFsKICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5Um9sZUF0dHJpYnV0ZSwKICAgICAgICAg
TlNBY2Nlc3NpYmlsaXR5Um9sZURlc2NyaXB0aW9uQXR0cmlidXRlLAogICAgICAgICBOU0FjY2Vz
c2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0ZSwKQEAgLTEzNTYsMTcgKzEzNDgsOSBAQCBBTExPV19E
RVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5RW5h
YmxlZEF0dHJpYnV0ZSwKICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5UG9zaXRpb25BdHRyaWJ1dGUs
CiAgICAgICAgIE5TQWNjZXNzaWJpbGl0eVNpemVBdHRyaWJ1dGUsCi0gICAgXSkubGVha1JlZigp
OwotCi0gICAgaWYgKGFuY2hvckF0dHJzID09IG5pbCkgewotICAgICAgICBhdXRvIHRlbXBBcnJh
eSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1
dGVzXSk7Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVVSTEF0
dHJpYnV0ZV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUFj
Y2Vzc0tleUF0dHJpYnV0ZV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNz
aWJpbGl0eUxpbmtSZWxhdGlvbnNoaXBUeXBlQXR0cmlidXRlXTsKLSAgICAgICAgYW5jaG9yQXR0
cnMgPSB0ZW1wQXJyYXkubGVha1JlZigpOwotICAgIH0KLSAgICBpZiAod2ViQXJlYUF0dHJzID09
IG5pbCkgewotICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJh
eSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzXSk7CisgICAgXTsKKyAgICBzdGF0aWMg
YXV0byB3ZWJBcmVhQXR0cnMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgICAgICBhdXRv
IHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJh
eTphdHRyaWJ1dGVzLmdldCgpLmdldCgpXSk7CiAgICAgICAgIC8vIFdlYkFyZWFzIHNob3VsZCBu
b3QgZXhwb3NlIEFYU3Vicm9sZS4KICAgICAgICAgW3RlbXBBcnJheSByZW1vdmVPYmplY3Q6TlNB
Y2Nlc3NpYmlsaXR5U3Vicm9sZUF0dHJpYnV0ZV07CiAgICAgICAgIC8vIFdlYkFyZWFzIHNob3Vs
ZCBub3QgZXhwb3NlIGFuY2VzdG9yIGF0dHJpYnV0ZXMKQEAgLTEzODEsMTAgKzEzNjUsMTAgQEAg
QUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIFt0ZW1wQXJyYXkg
YWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUNhcmV0QnJvd3NpbmdFbmFibGVkQXR0cmlidXRlXTsK
ICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5UHJldmVudEtleWJv
YXJkRE9NRXZlbnREaXNwYXRjaEF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2Jq
ZWN0Ok5TQWNjZXNzaWJpbGl0eVdlYlNlc3Npb25JREF0dHJpYnV0ZV07Ci0gICAgICAgIHdlYkFy
ZWFBdHRycyA9IHRlbXBBcnJheS5sZWFrUmVmKCk7Ci0gICAgfQotICAgIGlmICh0ZXh0QXR0cnMg
PT0gbmlsKSB7Ci0gICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFy
cmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXNdKTsKKyAgICAgICAgcmV0dXJuIHRl
bXBBcnJheTsKKyAgICB9KCkpOworICAgIHN0YXRpYyBhdXRvIHRleHRBdHRycyA9IG1ha2VOZXZl
ckRlc3Ryb3llZChbXSB7CisgICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0
YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXMuZ2V0KCkuZ2V0KCldKTsK
ICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5TnVtYmVyT2ZDaGFy
YWN0ZXJzQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3Np
YmlsaXR5U2VsZWN0ZWRUZXh0QXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmpl
Y3Q6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRUZXh0UmFuZ2VBdHRyaWJ1dGVdOwpAQCAtMTM5Niw1
MSArMTM4MCw1MSBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAg
ICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5SW52YWxpZEF0dHJpYnV0ZV07
CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVBsYWNlaG9sZGVy
VmFsdWVBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2li
aWxpdHlWYWx1ZUF1dG9maWxsZWRBdHRyaWJ1dGVdOwotICAgICAgICB0ZXh0QXR0cnMgPSB0ZW1w
QXJyYXkubGVha1JlZigpOwotICAgIH0KLSAgICBpZiAobGlzdEF0dHJzID09IG5pbCkgewotICAg
ICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5p
dFdpdGhBcnJheTphdHRyaWJ1dGVzXSk7CisgICAgICAgIHJldHVybiB0ZW1wQXJyYXk7CisgICAg
fSgpKTsKKyAgICBzdGF0aWMgYXV0byBsaXN0QXR0cnMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10g
eworICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxv
Y10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzLmdldCgpLmdldCgpXSk7CiAgICAgICAgIFt0ZW1w
QXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkQ2hpbGRyZW5BdHRyaWJ1dGVd
OwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlWaXNpYmxlQ2hp
bGRyZW5BdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2li
aWxpdHlPcmllbnRhdGlvbkF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0
Ok5TQWNjZXNzaWJpbGl0eVRpdGxlVUlFbGVtZW50QXR0cmlidXRlXTsKLSAgICAgICAgbGlzdEF0
dHJzID0gdGVtcEFycmF5LmxlYWtSZWYoKTsKLSAgICB9Ci0gICAgaWYgKGxpc3RCb3hBdHRycyA9
PSBuaWwpIHsKLSAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJy
YXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6bGlzdEF0dHJzXSk7CisgICAgICAgIHJldHVybiB0ZW1w
QXJyYXk7CisgICAgfSgpKTsKKyAgICBzdGF0aWMgYXV0byBsaXN0Qm94QXR0cnMgPSBtYWtlTmV2
ZXJEZXN0cm95ZWQoW10geworICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011
dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTpsaXN0QXR0cnMuZ2V0KCkuZ2V0KCldKTsK
ICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5QWNjZXNzS2V5QXR0
cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5UmVx
dWlyZWRBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2li
aWxpdHlJbnZhbGlkQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNB
Y2Nlc3NpYmlsaXR5T3JpZW50YXRpb25BdHRyaWJ1dGVdOwotICAgICAgICBsaXN0Qm94QXR0cnMg
PSB0ZW1wQXJyYXkubGVha1JlZigpOwotICAgIH0KLSAgICBpZiAocmFuZ2VBdHRycyA9PSBuaWwp
IHsKLSAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxs
b2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlc10pOworICAgICAgICByZXR1cm4gdGVtcEFycmF5
OworICAgIH0oKSk7CisgICAgc3RhdGljIGF1dG8gcmFuZ2VBdHRycyA9IG1ha2VOZXZlckRlc3Ry
b3llZChbXSB7CisgICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFy
cmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXMuZ2V0KCkuZ2V0KCldKTsKICAgICAg
ICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5TWluVmFsdWVBdHRyaWJ1dGVd
OwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlNYXhWYWx1ZUF0
dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU9y
aWVudGF0aW9uQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nl
c3NpYmlsaXR5VmFsdWVEZXNjcmlwdGlvbkF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkg
YWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVRpdGxlVUlFbGVtZW50QXR0cmlidXRlXTsKLSAgICAg
ICAgcmFuZ2VBdHRycyA9IHRlbXBBcnJheS5sZWFrUmVmKCk7Ci0gICAgfQotICAgIGlmIChtZW51
QmFyQXR0cnMgPT0gbmlsKSB7Ci0gICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05T
TXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmNvbW1vbk1lbnVBdHRyc10pOworICAg
ICAgICByZXR1cm4gdGVtcEFycmF5OworICAgIH0oKSk7CisgICAgc3RhdGljIGF1dG8gbWVudUJh
ckF0dHJzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICAgICAgYXV0byB0ZW1wQXJyYXkg
PSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6Y29tbW9uTWVu
dUF0dHJzLmdldCgpLmdldCgpXSk7CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNj
ZXNzaWJpbGl0eVNlbGVjdGVkQ2hpbGRyZW5BdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5
IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlWaXNpYmxlQ2hpbGRyZW5BdHRyaWJ1dGVdOwogICAg
ICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlUaXRsZVVJRWxlbWVudEF0
dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU9y
aWVudGF0aW9uQXR0cmlidXRlXTsKLSAgICAgICAgbWVudUJhckF0dHJzID0gdGVtcEFycmF5Lmxl
YWtSZWYoKTsKLSAgICB9Ci0gICAgaWYgKG1lbnVBdHRycyA9PSBuaWwpIHsKLSAgICAgICAgYXV0
byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJy
YXk6Y29tbW9uTWVudUF0dHJzXSk7CisgICAgICAgIHJldHVybiB0ZW1wQXJyYXk7CisgICAgfSgp
KTsKKyAgICBzdGF0aWMgYXV0byBtZW51QXR0cnMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10gewor
ICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10g
aW5pdFdpdGhBcnJheTpjb21tb25NZW51QXR0cnMuZ2V0KCkuZ2V0KCldKTsKICAgICAgICAgW3Rl
bXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRDaGlsZHJlbkF0dHJpYnV0
ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVZpc2libGVD
aGlsZHJlbkF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNz
aWJpbGl0eVRpdGxlVUlFbGVtZW50QXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRP
YmplY3Q6TlNBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb25BdHRyaWJ1dGVdOwotICAgICAgICBtZW51
QXR0cnMgPSB0ZW1wQXJyYXkubGVha1JlZigpOwotICAgIH0KLSAgICBpZiAobWVudUl0ZW1BdHRy
cyA9PSBuaWwpIHsKLSAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxl
QXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6Y29tbW9uTWVudUF0dHJzXSk7CisgICAgICAgIHJl
dHVybiB0ZW1wQXJyYXk7CisgICAgfSgpKTsKKyAgICBzdGF0aWMgYXV0byBtZW51SXRlbUF0dHJz
ID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9w
dE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6Y29tbW9uTWVudUF0dHJz
LmdldCgpLmdldCgpXSk7CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJp
bGl0eVRpdGxlQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nl
c3NpYmlsaXR5RGVzY3JpcHRpb25BdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9i
amVjdDpOU0FjY2Vzc2liaWxpdHlIZWxwQXR0cmlidXRlXTsKQEAgLTE0NTQsOSArMTQzOCw5IEBA
IEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICBbdGVtcEFycmF5
IGFkZE9iamVjdDooTlNTdHJpbmcqKWtBWE1lbnVJdGVtUHJpbWFyeVVJRWxlbWVudEF0dHJpYnV0
ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVNlcnZlc0Fz
VGl0bGVGb3JVSUVsZW1lbnRzQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmpl
Y3Q6TlNBY2Nlc3NpYmlsaXR5Rm9jdXNlZEF0dHJpYnV0ZV07Ci0gICAgICAgIG1lbnVJdGVtQXR0
cnMgPSB0ZW1wQXJyYXkubGVha1JlZigpOwotICAgIH0KLSAgICBzdGF0aWMgTlNBcnJheSAqbWVu
dUJ1dHRvbkF0dHJzID0gcmV0YWluUHRyKEBbCisgICAgICAgIHJldHVybiB0ZW1wQXJyYXk7Cisg
ICAgfSgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQXJyYXk+PiBt
ZW51QnV0dG9uQXR0cnMgPSBAWwogICAgICAgICBOU0FjY2Vzc2liaWxpdHlSb2xlQXR0cmlidXRl
LAogICAgICAgICBOU0FjY2Vzc2liaWxpdHlSb2xlRGVzY3JpcHRpb25BdHRyaWJ1dGUsCiAgICAg
ICAgIE5TQWNjZXNzaWJpbGl0eVBhcmVudEF0dHJpYnV0ZSwKQEAgLTE0NjcsNDAgKzE0NTEsMzEg
QEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIE5TQWNjZXNz
aWJpbGl0eUZvY3VzZWRBdHRyaWJ1dGUsCiAgICAgICAgIE5TQWNjZXNzaWJpbGl0eVRpdGxlQXR0
cmlidXRlLAogICAgICAgICBOU0FjY2Vzc2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0ZSwKLSAgICBd
KS5sZWFrUmVmKCk7Ci0gICAgaWYgKGNvbnRyb2xBdHRycyA9PSBuaWwpIHsKLSAgICAgICAgYXV0
byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJy
YXk6YXR0cmlidXRlc10pOworICAgIF07CisgICAgc3RhdGljIGF1dG8gY29udHJvbEF0dHJzID0g
bWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5T
KFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlcy5nZXQoKS5n
ZXQoKV0pOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlUaXRs
ZVVJRWxlbWVudEF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNj
ZXNzaWJpbGl0eUFjY2Vzc0tleUF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2Jq
ZWN0Ok5TQWNjZXNzaWJpbGl0eVJlcXVpcmVkQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJh
eSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5SW52YWxpZEF0dHJpYnV0ZV07Ci0gICAgICAgIGNv
bnRyb2xBdHRycyA9IHRlbXBBcnJheS5sZWFrUmVmKCk7Ci0gICAgfQotICAgIGlmIChpbmNyZW1l
bnRvckF0dHJzID09IG5pbCkgewotICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tO
U011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzXSk7Ci0gICAgICAg
IFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUluY3JlbWVudEJ1dHRvbkF0dHJp
YnV0ZV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eURlY3Jl
bWVudEJ1dHRvbkF0dHJpYnV0ZV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNj
ZXNzaWJpbGl0eVZhbHVlRGVzY3JpcHRpb25BdHRyaWJ1dGVdOwotICAgICAgICBbdGVtcEFycmF5
IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlNaW5WYWx1ZUF0dHJpYnV0ZV07Ci0gICAgICAgIFt0
ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU1heFZhbHVlQXR0cmlidXRlXTsKLSAg
ICAgICAgaW5jcmVtZW50b3JBdHRycyA9IHRlbXBBcnJheS5sZWFrUmVmKCk7Ci0gICAgfQotICAg
IGlmIChidXR0b25BdHRycyA9PSBuaWwpIHsKLSAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9w
dE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlc10pOwor
ICAgICAgICByZXR1cm4gdGVtcEFycmF5OworICAgIH0oKSk7CisgICAgc3RhdGljIGF1dG8gYnV0
dG9uQXR0cnMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgICAgICBhdXRvIHRlbXBBcnJh
eSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1
dGVzLmdldCgpLmdldCgpXSk7CiAgICAgICAgIC8vIEJ1dHRvbnMgc2hvdWxkIG5vdCBleHBvc2Ug
QVhWYWx1ZS4KICAgICAgICAgW3RlbXBBcnJheSByZW1vdmVPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5
VmFsdWVBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2li
aWxpdHlUaXRsZVVJRWxlbWVudEF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2Jq
ZWN0Ok5TQWNjZXNzaWJpbGl0eUFjY2Vzc0tleUF0dHJpYnV0ZV07Ci0gICAgICAgIGJ1dHRvbkF0
dHJzID0gdGVtcEFycmF5LmxlYWtSZWYoKTsKLSAgICB9Ci0gICAgaWYgKGNvbWJvQm94QXR0cnMg
PT0gbmlsKSB7Ci0gICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFy
cmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmNvbnRyb2xBdHRyc10pOworICAgICAgICByZXR1cm4g
dGVtcEFycmF5OworICAgIH0oKSk7CisgICAgc3RhdGljIGF1dG8gY29tYm9Cb3hBdHRycyA9IG1h
a2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhb
W05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmNvbnRyb2xBdHRycy5nZXQoKS5n
ZXQoKV0pOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlFeHBh
bmRlZEF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJp
bGl0eU9yaWVudGF0aW9uQXR0cmlidXRlXTsKLSAgICAgICAgY29tYm9Cb3hBdHRycyA9IHRlbXBB
cnJheS5sZWFrUmVmKCk7Ci0gICAgfQotICAgIGlmICh0YWJsZUF0dHJzID09IG5pbCkgewotICAg
ICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5p
dFdpdGhBcnJheTphdHRyaWJ1dGVzXSk7CisgICAgICAgIHJldHVybiB0ZW1wQXJyYXk7CisgICAg
fSgpKTsKKyAgICBzdGF0aWMgYXV0byB0YWJsZUF0dHJzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtd
IHsKKyAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxs
b2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlcy5nZXQoKS5nZXQoKV0pOwogICAgICAgICBbdGVt
cEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlSb3dzQXR0cmlidXRlXTsKICAgICAgICAg
W3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VmlzaWJsZVJvd3NBdHRyaWJ1dGVd
OwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlDb2x1bW5zQXR0
cmlidXRlXTsKQEAgLTE1MTMsMTQ0ICsxNDg4LDE0NCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExF
TUVOVEFUSU9OU19FTkQKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmls
aXR5Um93Q291bnRBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0Fj
Y2Vzc2liaWxpdHlBUklBQ29sdW1uQ291bnRBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5
IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlBUklBUm93Q291bnRBdHRyaWJ1dGVdOwotICAgICAg
ICB0YWJsZUF0dHJzID0gdGVtcEFycmF5LmxlYWtSZWYoKTsKLSAgICB9Ci0gICAgaWYgKHRhYmxl
Um93QXR0cnMgPT0gbmlsKSB7Ci0gICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05T
TXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXNdKTsKKyAgICAgICAg
cmV0dXJuIHRlbXBBcnJheTsKKyAgICB9KCkpOworICAgIHN0YXRpYyBhdXRvIHRhYmxlUm93QXR0
cnMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFk
b3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzLmdl
dCgpLmdldCgpXSk7CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0
eUluZGV4QXR0cmlidXRlXTsKLSAgICAgICAgdGFibGVSb3dBdHRycyA9IHRlbXBBcnJheS5sZWFr
UmVmKCk7Ci0gICAgfQotICAgIGlmICh0YWJsZUNvbEF0dHJzID09IG5pbCkgewotICAgICAgICBh
dXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhB
cnJheTphdHRyaWJ1dGVzXSk7CisgICAgICAgIHJldHVybiB0ZW1wQXJyYXk7CisgICAgfSgpKTsK
KyAgICBzdGF0aWMgYXV0byB0YWJsZUNvbEF0dHJzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsK
KyAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2Nd
IGluaXRXaXRoQXJyYXk6YXR0cmlidXRlcy5nZXQoKS5nZXQoKV0pOwogICAgICAgICBbdGVtcEFy
cmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlJbmRleEF0dHJpYnV0ZV07CiAgICAgICAgIFt0
ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUhlYWRlckF0dHJpYnV0ZV07CiAgICAg
ICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVJvd3NBdHRyaWJ1dGVdOwog
ICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlWaXNpYmxlUm93c0F0
dHJpYnV0ZV07Ci0gICAgICAgIHRhYmxlQ29sQXR0cnMgPSB0ZW1wQXJyYXkubGVha1JlZigpOwot
ICAgIH0KLSAgICBpZiAodGFibGVDZWxsQXR0cnMgPT0gbmlsKSB7Ci0gICAgICAgIGF1dG8gdGVt
cEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0
dHJpYnV0ZXNdKTsKKyAgICAgICAgcmV0dXJuIHRlbXBBcnJheTsKKyAgICB9KCkpOworICAgIHN0
YXRpYyBhdXRvIHRhYmxlQ2VsbEF0dHJzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICAg
ICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRX
aXRoQXJyYXk6YXR0cmlidXRlcy5nZXQoKS5nZXQoKV0pOwogICAgICAgICBbdGVtcEFycmF5IGFk
ZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlSb3dJbmRleFJhbmdlQXR0cmlidXRlXTsKICAgICAgICAg
W3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5Q29sdW1uSW5kZXhSYW5nZUF0dHJp
YnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUNvbHVt
bkhlYWRlclVJRWxlbWVudHNBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVj
dDpOU0FjY2Vzc2liaWxpdHlSb3dIZWFkZXJVSUVsZW1lbnRzQXR0cmlidXRlXTsKICAgICAgICAg
W3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5QVJJQUNvbHVtbkluZGV4QXR0cmli
dXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5QVJJQVJv
d0luZGV4QXR0cmlidXRlXTsKLSAgICAgICAgdGFibGVDZWxsQXR0cnMgPSB0ZW1wQXJyYXkubGVh
a1JlZigpOwotICAgIH0KLSAgICBpZiAoZ3JvdXBBdHRycyA9PSBuaWwpIHsKLSAgICAgICAgYXV0
byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJy
YXk6YXR0cmlidXRlc10pOworICAgICAgICByZXR1cm4gdGVtcEFycmF5OworICAgIH0oKSk7Cisg
ICAgc3RhdGljIGF1dG8gZ3JvdXBBdHRycyA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAg
ICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0
V2l0aEFycmF5OmF0dHJpYnV0ZXMuZ2V0KCkuZ2V0KCldKTsKICAgICAgICAgW3RlbXBBcnJheSBh
ZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VGl0bGVVSUVsZW1lbnRBdHRyaWJ1dGVdOwotICAgICAg
ICBncm91cEF0dHJzID0gdGVtcEFycmF5LmxlYWtSZWYoKTsKLSAgICB9Ci0gICAgaWYgKGlucHV0
SW1hZ2VBdHRycyA9PSBuaWwpIHsKLSAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtb
TlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YnV0dG9uQXR0cnNdKTsKKyAgICAg
ICAgcmV0dXJuIHRlbXBBcnJheTsKKyAgICB9KCkpOworICAgIHN0YXRpYyBhdXRvIGlucHV0SW1h
Z2VBdHRycyA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgICAgIGF1dG8gdGVtcEFycmF5
ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmJ1dHRvbkF0
dHJzLmdldCgpLmdldCgpXSk7CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNz
aWJpbGl0eVVSTEF0dHJpYnV0ZV07Ci0gICAgICAgIGlucHV0SW1hZ2VBdHRycyA9IHRlbXBBcnJh
eS5sZWFrUmVmKCk7Ci0gICAgfQotICAgIGlmIChwYXNzd29yZEZpZWxkQXR0cnMgPT0gbmlsKSB7
Ci0gICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9j
XSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXNdKTsKKyAgICAgICAgcmV0dXJuIHRlbXBBcnJheTsK
KyAgICB9KCkpOworICAgIHN0YXRpYyBhdXRvIHBhc3N3b3JkRmllbGRBdHRycyA9IG1ha2VOZXZl
ckRlc3Ryb3llZChbXSB7CisgICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0
YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXMuZ2V0KCkuZ2V0KCldKTsK
ICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VGl0bGVVSUVsZW1l
bnRBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxp
dHlSZXF1aXJlZEF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNj
ZXNzaWJpbGl0eUludmFsaWRBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVj
dDpOU0FjY2Vzc2liaWxpdHlQbGFjZWhvbGRlclZhbHVlQXR0cmlidXRlXTsKICAgICAgICAgW3Rl
bXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VmFsdWVBdXRvZmlsbGVkQXR0cmlidXRl
XTsKLSAgICAgICAgcGFzc3dvcmRGaWVsZEF0dHJzID0gdGVtcEFycmF5LmxlYWtSZWYoKTsKLSAg
ICB9Ci0gICAgaWYgKHRhYkxpc3RBdHRycyA9PSBuaWwpIHsKLSAgICAgICAgYXV0byB0ZW1wQXJy
YXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmli
dXRlc10pOworICAgICAgICByZXR1cm4gdGVtcEFycmF5OworICAgIH0oKSk7CisgICAgc3RhdGlj
IGF1dG8gdGFiTGlzdEF0dHJzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICAgICAgYXV0
byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJy
YXk6YXR0cmlidXRlcy5nZXQoKS5nZXQoKV0pOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVj
dDpOU0FjY2Vzc2liaWxpdHlUYWJzQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRP
YmplY3Q6TlNBY2Nlc3NpYmlsaXR5Q29udGVudHNBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFy
cmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlPcmllbnRhdGlvbkF0dHJpYnV0ZV07Ci0gICAg
ICAgIHRhYkxpc3RBdHRycyA9IHRlbXBBcnJheS5sZWFrUmVmKCk7Ci0gICAgfQotICAgIGlmIChv
dXRsaW5lQXR0cnMgPT0gbmlsKSB7Ci0gICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhb
W05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXNdKTsKKyAgICAg
ICAgcmV0dXJuIHRlbXBBcnJheTsKKyAgICB9KCkpOworICAgIHN0YXRpYyBhdXRvIG91dGxpbmVB
dHRycyA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgICAgIGF1dG8gdGVtcEFycmF5ID0g
YWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXMu
Z2V0KCkuZ2V0KCldKTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmls
aXR5U2VsZWN0ZWRSb3dzQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6
TlNBY2Nlc3NpYmlsaXR5Um93c0F0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2Jq
ZWN0Ok5TQWNjZXNzaWJpbGl0eUNvbHVtbnNBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5
IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlPcmllbnRhdGlvbkF0dHJpYnV0ZV07Ci0gICAgICAg
IG91dGxpbmVBdHRycyA9IHRlbXBBcnJheS5sZWFrUmVmKCk7Ci0gICAgfQotICAgIGlmIChvdXRs
aW5lUm93QXR0cnMgPT0gbmlsKSB7Ci0gICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhb
W05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRhYmxlUm93QXR0cnNdKTsKKyAg
ICAgICAgcmV0dXJuIHRlbXBBcnJheTsKKyAgICB9KCkpOworICAgIHN0YXRpYyBhdXRvIG91dGxp
bmVSb3dBdHRycyA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgICAgIGF1dG8gdGVtcEFy
cmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRhYmxl
Um93QXR0cnMuZ2V0KCkuZ2V0KCldKTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNB
Y2Nlc3NpYmlsaXR5RGlzY2xvc2luZ0F0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRk
T2JqZWN0Ok5TQWNjZXNzaWJpbGl0eURpc2Nsb3NlZEJ5Um93QXR0cmlidXRlXTsKICAgICAgICAg
W3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5RGlzY2xvc3VyZUxldmVsQXR0cmli
dXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5RGlzY2xv
c2VkUm93c0F0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgcmVtb3ZlT2JqZWN0Ok5TQWNj
ZXNzaWJpbGl0eVZhbHVlQXR0cmlidXRlXTsKLSAgICAgICAgb3V0bGluZVJvd0F0dHJzID0gdGVt
cEFycmF5LmxlYWtSZWYoKTsKLSAgICB9Ci0gICAgaWYgKHNjcm9sbFZpZXdBdHRycyA9PSBuaWwp
IHsKLSAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxs
b2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlc10pOworICAgICAgICByZXR1cm4gdGVtcEFycmF5
OworICAgIH0oKSk7CisgICAgc3RhdGljIGF1dG8gc2Nyb2xsVmlld0F0dHJzID0gbWFrZU5ldmVy
RGVzdHJveWVkKFtdIHsKKyAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRh
YmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlcy5nZXQoKS5nZXQoKV0pOwog
ICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlDb250ZW50c0F0dHJp
YnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUhvcml6
b250YWxTY3JvbGxCYXJBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpO
U0FjY2Vzc2liaWxpdHlWZXJ0aWNhbFNjcm9sbEJhckF0dHJpYnV0ZV07Ci0gICAgICAgIHNjcm9s
bFZpZXdBdHRycyA9IHRlbXBBcnJheS5sZWFrUmVmKCk7Ci0gICAgfQorICAgICAgICByZXR1cm4g
dGVtcEFycmF5OworICAgIH0oKSk7CiAKLSAgICBOU0FycmF5ICpvYmplY3RBdHRyaWJ1dGVzID0g
YXR0cmlidXRlczsKKyAgICBOU0FycmF5ICpvYmplY3RBdHRyaWJ1dGVzID0gYXR0cmlidXRlcy5n
ZXQoKS5nZXQoKTsKIAogICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc1Bhc3N3b3JkRmllbGQoKSkK
LSAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9IHBhc3N3b3JkRmllbGRBdHRyczsKKyAgICAgICAg
b2JqZWN0QXR0cmlidXRlcyA9IHBhc3N3b3JkRmllbGRBdHRycy5nZXQoKS5nZXQoKTsKICAgICBl
bHNlIGlmIChiYWNraW5nT2JqZWN0LT5pc1dlYkFyZWEoKSkKLSAgICAgICAgb2JqZWN0QXR0cmli
dXRlcyA9IHdlYkFyZWFBdHRyczsKKyAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9IHdlYkFyZWFB
dHRycy5nZXQoKS5nZXQoKTsKICAgICBlbHNlIGlmIChiYWNraW5nT2JqZWN0LT5pc1RleHRDb250
cm9sKCkpCi0gICAgICAgIG9iamVjdEF0dHJpYnV0ZXMgPSB0ZXh0QXR0cnM7CisgICAgICAgIG9i
amVjdEF0dHJpYnV0ZXMgPSB0ZXh0QXR0cnMuZ2V0KCkuZ2V0KCk7CiAgICAgZWxzZSBpZiAoYmFj
a2luZ09iamVjdC0+aXNMaW5rKCkgfHwgYmFja2luZ09iamVjdC0+aXNJbWFnZSgpKQotICAgICAg
ICBvYmplY3RBdHRyaWJ1dGVzID0gYW5jaG9yQXR0cnM7CisgICAgICAgIG9iamVjdEF0dHJpYnV0
ZXMgPSBhbmNob3JBdHRycy5nZXQoKS5nZXQoKTsKICAgICBlbHNlIGlmIChiYWNraW5nT2JqZWN0
LT5pc1RhYmxlKCkgJiYgYmFja2luZ09iamVjdC0+aXNFeHBvc2FibGUoKSkKLSAgICAgICAgb2Jq
ZWN0QXR0cmlidXRlcyA9IHRhYmxlQXR0cnM7CisgICAgICAgIG9iamVjdEF0dHJpYnV0ZXMgPSB0
YWJsZUF0dHJzLmdldCgpLmdldCgpOwogICAgIGVsc2UgaWYgKGJhY2tpbmdPYmplY3QtPmlzVGFi
bGVDb2x1bW4oKSkKLSAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9IHRhYmxlQ29sQXR0cnM7Cisg
ICAgICAgIG9iamVjdEF0dHJpYnV0ZXMgPSB0YWJsZUNvbEF0dHJzLmdldCgpLmdldCgpOwogICAg
IGVsc2UgaWYgKGJhY2tpbmdPYmplY3QtPmlzVGFibGVDZWxsKCkpCi0gICAgICAgIG9iamVjdEF0
dHJpYnV0ZXMgPSB0YWJsZUNlbGxBdHRyczsKKyAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9IHRh
YmxlQ2VsbEF0dHJzLmdldCgpLmdldCgpOwogICAgIGVsc2UgaWYgKGJhY2tpbmdPYmplY3QtPmlz
VGFibGVSb3coKSkgewogICAgICAgICAvLyBBbiBBUklBIHRhYmxlIHJvdyBjYW4gYmUgY29sbGFw
c2VkIGFuZCBleHBhbmRlZCwgc28gaXQgbmVlZHMgdGhlIGV4dHJhIGF0dHJpYnV0ZXMuCiAgICAg
ICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc0FSSUFUcmVlR3JpZFJvdygpKQotICAgICAgICAgICAg
b2JqZWN0QXR0cmlidXRlcyA9IG91dGxpbmVSb3dBdHRyczsKKyAgICAgICAgICAgIG9iamVjdEF0
dHJpYnV0ZXMgPSBvdXRsaW5lUm93QXR0cnMuZ2V0KCkuZ2V0KCk7CiAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIG9iamVjdEF0dHJpYnV0ZXMgPSB0YWJsZVJvd0F0dHJzOworICAgICAgICAgICAg
b2JqZWN0QXR0cmlidXRlcyA9IHRhYmxlUm93QXR0cnMuZ2V0KCkuZ2V0KCk7CiAgICAgfSBlbHNl
IGlmIChiYWNraW5nT2JqZWN0LT5pc1RyZWUoKSkKLSAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9
IG91dGxpbmVBdHRyczsKKyAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9IG91dGxpbmVBdHRycy5n
ZXQoKS5nZXQoKTsKICAgICBlbHNlIGlmIChiYWNraW5nT2JqZWN0LT5pc1RyZWVJdGVtKCkpIHsK
ICAgICAgICAgaWYgKGJhY2tpbmdPYmplY3QtPnN1cHBvcnRzQ2hlY2tlZFN0YXRlKCkpCi0gICAg
ICAgICAgICBvYmplY3RBdHRyaWJ1dGVzID0gW291dGxpbmVSb3dBdHRycyBhcnJheUJ5QWRkaW5n
T2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVZhbHVlQXR0cmlidXRlXTsKKyAgICAgICAgICAgIG9iamVj
dEF0dHJpYnV0ZXMgPSBbb3V0bGluZVJvd0F0dHJzLmdldCgpIGFycmF5QnlBZGRpbmdPYmplY3Q6
TlNBY2Nlc3NpYmlsaXR5VmFsdWVBdHRyaWJ1dGVdOwogICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBvYmplY3RBdHRyaWJ1dGVzID0gb3V0bGluZVJvd0F0dHJzOworICAgICAgICAgICAgb2JqZWN0
QXR0cmlidXRlcyA9IG91dGxpbmVSb3dBdHRycy5nZXQoKS5nZXQoKTsKICAgICB9CiAgICAgZWxz
ZSBpZiAoYmFja2luZ09iamVjdC0+aXNMaXN0Qm94KCkpCi0gICAgICAgIG9iamVjdEF0dHJpYnV0
ZXMgPSBsaXN0Qm94QXR0cnM7CisgICAgICAgIG9iamVjdEF0dHJpYnV0ZXMgPSBsaXN0Qm94QXR0
cnMuZ2V0KCkuZ2V0KCk7CiAgICAgZWxzZSBpZiAoYmFja2luZ09iamVjdC0+aXNMaXN0KCkpCi0g
ICAgICAgIG9iamVjdEF0dHJpYnV0ZXMgPSBsaXN0QXR0cnM7CisgICAgICAgIG9iamVjdEF0dHJp
YnV0ZXMgPSBsaXN0QXR0cnMuZ2V0KCkuZ2V0KCk7CiAgICAgZWxzZSBpZiAoYmFja2luZ09iamVj
dC0+aXNDb21ib0JveCgpKQotICAgICAgICBvYmplY3RBdHRyaWJ1dGVzID0gY29tYm9Cb3hBdHRy
czsKKyAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9IGNvbWJvQm94QXR0cnMuZ2V0KCkuZ2V0KCk7
CiAgICAgZWxzZSBpZiAoYmFja2luZ09iamVjdC0+aXNQcm9ncmVzc0luZGljYXRvcigpIHx8IGJh
Y2tpbmdPYmplY3QtPmlzU2xpZGVyKCkpCi0gICAgICAgIG9iamVjdEF0dHJpYnV0ZXMgPSByYW5n
ZUF0dHJzOworICAgICAgICBvYmplY3RBdHRyaWJ1dGVzID0gcmFuZ2VBdHRycy5nZXQoKS5nZXQo
KTsKICAgICAvLyBUaGVzZSBhcmUgcHJvY2Vzc2VkIGluIG9yZGVyIGJlY2F1c2UgYW4gaW5wdXQg
aW1hZ2UgaXMgYSBidXR0b24sIGFuZCBhIGJ1dHRvbiBpcyBhIGNvbnRyb2wuCiAgICAgZWxzZSBp
ZiAoYmFja2luZ09iamVjdC0+aXNJbnB1dEltYWdlKCkpCi0gICAgICAgIG9iamVjdEF0dHJpYnV0
ZXMgPSBpbnB1dEltYWdlQXR0cnM7CisgICAgICAgIG9iamVjdEF0dHJpYnV0ZXMgPSBpbnB1dElt
YWdlQXR0cnMuZ2V0KCkuZ2V0KCk7CiAgICAgZWxzZSBpZiAoYmFja2luZ09iamVjdC0+aXNCdXR0
b24oKSkKLSAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9IGJ1dHRvbkF0dHJzOworICAgICAgICBv
YmplY3RBdHRyaWJ1dGVzID0gYnV0dG9uQXR0cnMuZ2V0KCkuZ2V0KCk7CiAgICAgZWxzZSBpZiAo
YmFja2luZ09iamVjdC0+aXNDb250cm9sKCkpCi0gICAgICAgIG9iamVjdEF0dHJpYnV0ZXMgPSBj
b250cm9sQXR0cnM7CisgICAgICAgIG9iamVjdEF0dHJpYnV0ZXMgPSBjb250cm9sQXR0cnMuZ2V0
KCkuZ2V0KCk7CiAKICAgICBlbHNlIGlmIChiYWNraW5nT2JqZWN0LT5pc0dyb3VwKCkgfHwgYmFj
a2luZ09iamVjdC0+aXNMaXN0SXRlbSgpKQotICAgICAgICBvYmplY3RBdHRyaWJ1dGVzID0gZ3Jv
dXBBdHRyczsKKyAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9IGdyb3VwQXR0cnMuZ2V0KCkuZ2V0
KCk7CiAgICAgZWxzZSBpZiAoYmFja2luZ09iamVjdC0+aXNUYWJMaXN0KCkpCi0gICAgICAgIG9i
amVjdEF0dHJpYnV0ZXMgPSB0YWJMaXN0QXR0cnM7CisgICAgICAgIG9iamVjdEF0dHJpYnV0ZXMg
PSB0YWJMaXN0QXR0cnMuZ2V0KCkuZ2V0KCk7CiAgICAgZWxzZSBpZiAoYmFja2luZ09iamVjdC0+
aXNTY3JvbGxWaWV3KCkpCi0gICAgICAgIG9iamVjdEF0dHJpYnV0ZXMgPSBzY3JvbGxWaWV3QXR0
cnM7CisgICAgICAgIG9iamVjdEF0dHJpYnV0ZXMgPSBzY3JvbGxWaWV3QXR0cnMuZ2V0KCkuZ2V0
KCk7CiAgICAgZWxzZSBpZiAoYmFja2luZ09iamVjdC0+aXNTcGluQnV0dG9uKCkpCi0gICAgICAg
IG9iamVjdEF0dHJpYnV0ZXMgPSBpbmNyZW1lbnRvckF0dHJzOworICAgICAgICBvYmplY3RBdHRy
aWJ1dGVzID0gaW5jcmVtZW50b3JBdHRycy5nZXQoKS5nZXQoKTsKICAgICBlbHNlIGlmIChiYWNr
aW5nT2JqZWN0LT5pc01lbnUoKSkKLSAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9IG1lbnVBdHRy
czsKKyAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9IG1lbnVBdHRycy5nZXQoKS5nZXQoKTsKICAg
ICBlbHNlIGlmIChiYWNraW5nT2JqZWN0LT5pc01lbnVCYXIoKSkKLSAgICAgICAgb2JqZWN0QXR0
cmlidXRlcyA9IG1lbnVCYXJBdHRyczsKKyAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9IG1lbnVC
YXJBdHRycy5nZXQoKS5nZXQoKTsKICAgICBlbHNlIGlmIChiYWNraW5nT2JqZWN0LT5pc01lbnVC
dXR0b24oKSkKLSAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9IG1lbnVCdXR0b25BdHRyczsKKyAg
ICAgICAgb2JqZWN0QXR0cmlidXRlcyA9IG1lbnVCdXR0b25BdHRycy5nZXQoKS5nZXQoKTsKICAg
ICBlbHNlIGlmIChiYWNraW5nT2JqZWN0LT5pc01lbnVJdGVtKCkpCi0gICAgICAgIG9iamVjdEF0
dHJpYnV0ZXMgPSBtZW51SXRlbUF0dHJzOworICAgICAgICBvYmplY3RBdHRyaWJ1dGVzID0gbWVu
dUl0ZW1BdHRycy5nZXQoKS5nZXQoKTsKIAogICAgIE5TQXJyYXkgKmFkZGl0aW9uYWxBdHRyaWJ1
dGVzID0gW3NlbGYgYWRkaXRpb25hbEFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVOYW1lc107CiAgICAg
aWYgKFthZGRpdGlvbmFsQXR0cmlidXRlcyBjb3VudF0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvdGVzdGJpbmRpbmdzLm1tIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3Rlc3Ri
aW5kaW5ncy5tbQppbmRleCAyMGEwNmEzYTFmYTA4NmMwMDhiNGQ5NzlkNjc0MDNkNThjYTZlMzJl
Li4xZDYxYzNjNDVmM2ZjYzI2OGFmMjFkMTFjOTVjYTU2MTdjZTg0YzQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9icmlkZ2UvdGVzdGJpbmRpbmdzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS90ZXN0YmluZGluZ3MubW0KQEAgLTIyNyw1MSArMjI3LDQ5IEBAIGludCBtYWluKGlu
dCBhcmdjLCBjaGFyICoqYXJndikKICAgICAKICAgICBib29sIHJldCA9IHRydWU7CiAgICAgewot
ICAgICAgICBOU0F1dG9yZWxlYXNlUG9vbCAqcG9vbCA9IFtbTlNBdXRvcmVsZWFzZVBvb2wgYWxs
b2NdIGluaXRdOwotICAgICAgICAKLSAgICAgICAgSlNMb2NrIGxvY2s7Ci0gICAgICAgIAotICAg
ICAgICAvLyBjcmVhdGUgaW50ZXJwcmV0ZXIgdy8gZ2xvYmFsIG9iamVjdAotICAgICAgICBPYmpl
Y3QgZ2xvYmFsKG5ldyBHbG9iYWxJbXAoKSk7Ci0gICAgICAgIEludGVycHJldGVyIGludGVycDsK
LSAgICAgICAgaW50ZXJwLnNldEdsb2JhbE9iamVjdChnbG9iYWwpOwotICAgICAgICBKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCA9IGludGVycC5nbG9iYWxPYmplY3QoKTsKLSAg
ICAgICAgCi0gICAgICAgIGF1dG8gbXlJbnRlcmZhY2UgPSBhZG9wdE5TKFtbTXlGaXJzdEludGVy
ZmFjZSBhbGxvY10gaW5pdF0pOwotICAgICAgICAKLSAgICAgICAgZ2xvYmFsLnB1dChsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGxleGljYWxHbG9iYWxPYmplY3Qs
ICJteUludGVyZmFjZSIpLCBJbnN0YW5jZTo6Y3JlYXRlUnVudGltZU9iamVjdChJbnN0YW5jZTo6
T2JqZWN0aXZlQ0xhbmd1YWdlLCAodm9pZCAqKW15SW50ZXJmYWNlLmdldCgpKSk7Ci0gICAgICAg
IAotICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8IGFyZ2M7IGkrKykgewotICAgICAgICAgICAg
Y29uc3QgY2hhciAqY29kZSA9IHJlYWRKYXZhU2NyaXB0RnJvbUZpbGUoYXJndltpXSk7Ci0gICAg
ICAgICAgICAKLSAgICAgICAgICAgIGlmIChjb2RlKSB7Ci0gICAgICAgICAgICAgICAgLy8gcnVu
Ci0gICAgICAgICAgICAgICAgQ29tcGxldGlvbiBjb21wKGludGVycC5ldmFsdWF0ZShjb2RlKSk7
Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgaWYgKGNvbXAuY29tcGxUeXBlKCkg
PT0gVGhyb3cpIHsKLSAgICAgICAgICAgICAgICAgICAgVmFsdWUgZXhWYWwgPSBjb21wLnZhbHVl
KCk7Ci0gICAgICAgICAgICAgICAgICAgIGNoYXIgKm1zZyA9IGV4VmFsLnRvU3RyaW5nKGxleGlj
YWxHbG9iYWxPYmplY3QpLmFzY2lpKCk7Ci0gICAgICAgICAgICAgICAgICAgIGludCBsaW5lbm8g
PSAtMTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGV4VmFsLnR5cGUoKSA9PSBPYmplY3RUeXBl
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSBsaW5lVmFsID0gT2JqZWN0OjpkeW5h
bWljQ2FzdChleFZhbCkuZ2V0KGxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21T
dHJpbmcobGV4aWNhbEdsb2JhbE9iamVjdCwgImxpbmUiKSk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBpZiAobGluZVZhbC50eXBlKCkgPT0gTnVtYmVyVHlwZSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBsaW5lbm8gPSBpbnQobGluZVZhbC50b051bWJlcihsZXhpY2FsR2xvYmFsT2Jq
ZWN0KSk7CisgICAgICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICAgICAgSlNMb2NrIGxv
Y2s7CisKKyAgICAgICAgICAgIC8vIGNyZWF0ZSBpbnRlcnByZXRlciB3LyBnbG9iYWwgb2JqZWN0
CisgICAgICAgICAgICBPYmplY3QgZ2xvYmFsKG5ldyBHbG9iYWxJbXAoKSk7CisgICAgICAgICAg
ICBJbnRlcnByZXRlciBpbnRlcnA7CisgICAgICAgICAgICBpbnRlcnAuc2V0R2xvYmFsT2JqZWN0
KGdsb2JhbCk7CisgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCA9IGludGVycC5nbG9iYWxPYmplY3QoKTsKKworICAgICAgICAgICAgYXV0byBteUludGVyZmFj
ZSA9IGFkb3B0TlMoW1tNeUZpcnN0SW50ZXJmYWNlIGFsbG9jXSBpbml0XSk7CisKKyAgICAgICAg
ICAgIGdsb2JhbC5wdXQobGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
ZyhsZXhpY2FsR2xvYmFsT2JqZWN0LCAibXlJbnRlcmZhY2UiKSwgSW5zdGFuY2U6OmNyZWF0ZVJ1
bnRpbWVPYmplY3QoSW5zdGFuY2U6Ok9iamVjdGl2ZUNMYW5ndWFnZSwgKHZvaWQgKilteUludGVy
ZmFjZS5nZXQoKSkpOworCisgICAgICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8IGFyZ2M7IGkr
KykgeworICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNvZGUgPSByZWFkSmF2YVNjcmlwdEZy
b21GaWxlKGFyZ3ZbaV0pOworCisgICAgICAgICAgICAgICAgaWYgKGNvZGUpIHsKKyAgICAgICAg
ICAgICAgICAgICAgLy8gcnVuCisgICAgICAgICAgICAgICAgICAgIENvbXBsZXRpb24gY29tcChp
bnRlcnAuZXZhbHVhdGUoY29kZSkpOworCisgICAgICAgICAgICAgICAgICAgIGlmIChjb21wLmNv
bXBsVHlwZSgpID09IFRocm93KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSBleFZh
bCA9IGNvbXAudmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKm1zZyA9IGV4
VmFsLnRvU3RyaW5nKGxleGljYWxHbG9iYWxPYmplY3QpLmFzY2lpKCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgbGluZW5vID0gLTE7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
ZXhWYWwudHlwZSgpID09IE9iamVjdFR5cGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWYWx1ZSBsaW5lVmFsID0gT2JqZWN0OjpkeW5hbWljQ2FzdChleFZhbCkuZ2V0KGxleGljYWxH
bG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcobGV4aWNhbEdsb2JhbE9iamVjdCwg
ImxpbmUiKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxpbmVWYWwudHlwZSgp
ID09IE51bWJlclR5cGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVubyA9
IGludChsaW5lVmFsLnRvTnVtYmVyKGxleGljYWxHbG9iYWxPYmplY3QpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsaW5lbm8gIT0gLTEp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJFeGNlcHRpb24s
IGxpbmUgJWQ6ICVzXG4iLCBsaW5lbm8sIG1zZyk7CisgICAgICAgICAgICAgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJFeGNlcHRp
b246ICVzXG4iLCBtc2cpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29tcC5jb21wbFR5cGUoKSA9PSBSZXR1cm5W
YWx1ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqbXNnID0gY29tcC52YWx1ZSgp
LnRvU3RyaW5nKGludGVycC5nbG9iYWxPYmplY3QoKSkuYXNjaWkoKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiUmV0dXJuIHZhbHVlOiAlc1xuIiwgbXNnKTsKICAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBpZiAobGluZW5vICE9IC0x
KQotICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsIkV4Y2VwdGlvbiwgbGlu
ZSAlZDogJXNcbiIsbGluZW5vLG1zZyk7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCJFeGNlcHRpb246ICVzXG4iLG1zZyk7
Ci0gICAgICAgICAgICAgICAgICAgIHJldCA9IGZhbHNlOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICBlbHNlIGlmIChjb21wLmNvbXBsVHlwZSgpID09IFJldHVyblZhbHVlKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGNoYXIgKm1zZyA9IGNvbXAudmFsdWUoKS50b1N0cmluZyhp
bnRlcnAuZ2xvYmFsT2JqZWN0KCkpLmFzY2lpKCk7Ci0gICAgICAgICAgICAgICAgICAgIGZwcmlu
dGYoc3RkZXJyLCJSZXR1cm4gdmFsdWU6ICVzXG4iLG1zZyk7CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBteUludGVyZmFjZSA9IG5pbDsKICAgICAgICAg
fQotICAgICAgICAKLSAgICAgICAgbXlJbnRlcmZhY2UgPSBuaWw7Ci0gICAgICAgIFtwb29sIGRy
YWluXTsKICAgICB9IC8vIGVuZCBibG9jaywgc28gdGhhdCBJbnRlcnByZXRlciBhbmQgZ2xvYmFs
IGdldCBkZWxldGVkCiAgICAgCiAgICAgcmV0dXJuIHJldCA/IDAgOiAzOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuTW9kZWwuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVsLmgKaW5kZXgg
MGZlZDc5NWFjYTlkOTg2ZmQxOThmY2VjOGRmYjVjNTBhNWFkMmQ2ZS4uZjgxYzI4MTEyYjMxY2Jl
YTQ1ZTU4YTZhYWJlYjZkZmQ0ZDg4ZDdlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuTW9kZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oCkBAIC02OSw3ICs2OSw3IEBAIHB1
YmxpYzoKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdmlydHVhbCBVSVZpZXdDb250
cm9sbGVyICpwcmVzZW50aW5nVmlld0NvbnRyb2xsZXIoKSB7IHJldHVybiBudWxscHRyOyB9Ci0g
ICAgdmlydHVhbCBVSVZpZXdDb250cm9sbGVyICpjcmVhdGVWaWRlb0Z1bGxzY3JlZW5WaWV3Q29u
dHJvbGxlcihBVlBsYXllclZpZXdDb250cm9sbGVyICopIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAg
ICB2aXJ0dWFsIFJldGFpblB0cjxVSVZpZXdDb250cm9sbGVyPiBjcmVhdGVWaWRlb0Z1bGxzY3Jl
ZW5WaWV3Q29udHJvbGxlcihBVlBsYXllclZpZXdDb250cm9sbGVyICopIHsgcmV0dXJuIG51bGxw
dHI7IH0KICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvV2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQWN0aW9uRGlzYWJsaW5nQ0FM
YXllckRlbGVnYXRlLm1tCmluZGV4IDM3M2E5ZWE0YzYwYWVhMzE1MzBkYzA1Mjk0N2FjMzU5NDlh
YzBjZjUuLjEyNmE1YjVlMmI0NDBiYTBhYzhlZTMwZDI4MzA0NTdhMTFiOThiN2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkFjdGlvbkRpc2Fi
bGluZ0NBTGF5ZXJEZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9XZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVyRGVsZWdhdGUubW0KQEAgLTMyLDEy
ICszMiwxMiBAQCBAaW1wbGVtZW50YXRpb24gV2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVn
YXRlCiAKICsgKGluc3RhbmNldHlwZSlzaGFyZWQKIHsKLSAgICBzdGF0aWMgV2ViQWN0aW9uRGlz
YWJsaW5nQ0FMYXllckRlbGVnYXRlICpjb250cm9sbGVyOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxSZXRhaW5QdHI8V2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlPj4gY29udHJv
bGxlcjsKICAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKICAgICBkaXNwYXRj
aF9vbmNlKCZvbmNlVG9rZW4sIF57Ci0gICAgICAgIGNvbnRyb2xsZXIgPSBbW1dlYkFjdGlvbkRp
c2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZSBhbGxvY10gaW5pdF07CisgICAgICAgIGNvbnRyb2xsZXIu
Z2V0KCkgPSBhZG9wdE5TKFtbV2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlIGFsbG9j
XSBpbml0XSk7CiAgICAgfSk7Ci0gICAgcmV0dXJuIGNvbnRyb2xsZXI7CisgICAgcmV0dXJuIGNv
bnRyb2xsZXIuZ2V0KCkuZ2V0KCk7CiB9CiAKIC0gKGlkPENBQWN0aW9uPilhY3Rpb25Gb3JMYXll
cjooQ0FMYXllciAqKWxheWVyIGZvcktleTooTlNTdHJpbmcgKilldmVudApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkJhY2tncm91bmRUYXNrQ29udHJvbGxlci5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJCYWNrZ3JvdW5kVGFza0NvbnRyb2xs
ZXIubW0KaW5kZXggMDA0ODhkYzJiMTEwNDRkMDc0ZmQ2OTA3ZjdkYmVlMDczYTFkOWIwNC4uYmUx
NGI5ZGY1YzAxNzI0ZTBjMGYyZmI1ZDViZTllMGYxN2Q2N2IzMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkJhY2tncm91bmRUYXNrQ29udHJvbGxlci5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQmFja2dyb3VuZFRhc2tDb250cm9sbGVy
Lm1tCkBAIC0zMiwxMCArMzIsOCBAQCBAaW1wbGVtZW50YXRpb24gV2ViQmFja2dyb3VuZFRhc2tD
b250cm9sbGVyCiAKICsgKFdlYkJhY2tncm91bmRUYXNrQ29udHJvbGxlciAqKXNoYXJlZENvbnRy
b2xsZXIKIHsKLSAgICBzdGF0aWMgV2ViQmFja2dyb3VuZFRhc2tDb250cm9sbGVyICpzaGFyZWRD
b250cm9sbGVyOwotICAgIGlmICghc2hhcmVkQ29udHJvbGxlcikKLSAgICAgICAgc2hhcmVkQ29u
dHJvbGxlciA9IFtbc2VsZiBhbGxvY10gaW5pdF07Ci0gICAgcmV0dXJuIHNoYXJlZENvbnRyb2xs
ZXI7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxXZWJCYWNrZ3JvdW5kVGFz
a0NvbnRyb2xsZXI+PiBzaGFyZWRDb250cm9sbGVyID0gYWRvcHROUyhbW3NlbGYgYWxsb2NdIGlu
aXRdKTsKKyAgICByZXR1cm4gc2hhcmVkQ29udHJvbGxlci5nZXQoKS5nZXQoKTsKIH0KIAogLSAo
dm9pZClkZWFsbG9jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2Vi
SXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9X
ZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tCmluZGV4IDQ3ZDc3NzI2MTAwZWQwMzU5YTljYTY0
NzdjMmY5YzNkYTcyMDg2OGQuLmQyYTFkYmMzYTg5ZjkxYWVjMmEzMjIwMzg2NGEwY2VmMzE5MjMy
ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlk
ZXJQYXN0ZWJvYXJkLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVt
UHJvdmlkZXJQYXN0ZWJvYXJkLm1tCkBAIC00NzUsMTIgKzQ3NSwxMiBAQCBAaW1wbGVtZW50YXRp
b24gV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZCB7CiAKICsgKGluc3RhbmNldHlwZSlzaGFyZWRJ
bnN0YW5jZQogewotICAgIHN0YXRpYyBXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkICpzaGFyZWRQ
YXN0ZWJvYXJkID0gbmlsOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8V2Vi
SXRlbVByb3ZpZGVyUGFzdGVib2FyZD4+IHNoYXJlZFBhc3RlYm9hcmQ7CiAgICAgc3RhdGljIGRp
c3BhdGNoX29uY2VfdCBvbmNlVG9rZW47CiAgICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBe
KCkgewotICAgICAgICBzaGFyZWRQYXN0ZWJvYXJkID0gW1tXZWJJdGVtUHJvdmlkZXJQYXN0ZWJv
YXJkIGFsbG9jXSBpbml0XTsKKyAgICAgICAgc2hhcmVkUGFzdGVib2FyZC5nZXQoKSA9IGFkb3B0
TlMoW1tXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIGFsbG9jXSBpbml0XSk7CiAgICAgfSk7Ci0g
ICAgcmV0dXJuIHNoYXJlZFBhc3RlYm9hcmQ7CisgICAgcmV0dXJuIHNoYXJlZFBhc3RlYm9hcmQu
Z2V0KCkuZ2V0KCk7CiB9CiAKIC0gKGluc3RhbmNldHlwZSlpbml0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0KaW5kZXggZjU0MGRlMDc1Y2Rm
YzBkOTEwMGZlOWE3MzE1NzhiZGM1NTdlZGM2OS4uMTlkN2I3ZTVjMjdmMjc1MWQzZTVjZTRkMzZj
YTVmNjUwYWNhNDI3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dh
ay9XZWJDb3JlVGhyZWFkLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsv
V2ViQ29yZVRocmVhZC5tbQpAQCAtMTU1LDcgKzE1NSwxMSBAQCBzdGF0aWMgdm9pZCBXZWJDb3Jl
T2JqQ0RlYWxsb2NPbldlYlRocmVhZEltcGwoaWQgc2VsZiwgU0VMIF9jbWQpOwogc3RhdGljIHZv
aWQgV2ViQ29yZU9iakNEZWFsbG9jV2l0aFdlYlRocmVhZExvY2soQ2xhc3MgY2xzKTsKIHN0YXRp
YyB2b2lkIFdlYkNvcmVPYmpDRGVhbGxvY1dpdGhXZWJUaHJlYWRMb2NrSW1wbChpZCBzZWxmLCBT
RUwgX2NtZCk7CiAKLXN0YXRpYyBOU011dGFibGVBcnJheSogc0FzeW5jRGVsZWdhdGVzID0gbmls
Oworc3RhdGljIFJldGFpblB0cjxOU011dGFibGVBcnJheT4mIHNBc3luY0RlbGVnYXRlcygpCit7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU011dGFibGVBcnJheT4+IGFz
eW5jRGVsZWdhdGVzOworICAgIHJldHVybiBhc3luY0RlbGVnYXRlczsKK30KIAogV0VCQ09SRV9F
WFBPUlQgdm9sYXRpbGUgdW5zaWduZWQgd2ViVGhyZWFkRGVsZWdhdGVNZXNzYWdlU2NvcGVDb3Vu
dCA9IDA7CiAKQEAgLTQ0MCw3ICs0NDQsNyBAQCB2b2lkIFdlYlRocmVhZENhbGxEZWxlZ2F0ZUFz
eW5jKE5TSW52b2NhdGlvbiogaW52b2NhdGlvbikKIHsKICAgICBBU1NFUlQoaW52b2NhdGlvbik7
CiAgICAgaWYgKFdlYlRocmVhZElzQ3VycmVudCgpKQotICAgICAgICBbc0FzeW5jRGVsZWdhdGVz
IGFkZE9iamVjdDppbnZvY2F0aW9uXTsKKyAgICAgICAgW3NBc3luY0RlbGVnYXRlcygpIGFkZE9i
amVjdDppbnZvY2F0aW9uXTsKICAgICBlbHNlCiAgICAgICAgIFdlYlRocmVhZENhbGxEZWxlZ2F0
ZShpbnZvY2F0aW9uKTsKIH0KQEAgLTQ5OCwxMSArNTAyLDExIEBAIHN0YXRpYyB2b2lkIFdlYlJ1
bkxvb3BMb2NrSW50ZXJuYWwoQXV0b3JlbGVhc2VQb29sT3BlcmF0aW9uIHBvb2xPcGVyYXRpb24p
CiAKIHN0YXRpYyB2b2lkIFdlYlJ1bkxvb3BVbmxvY2tJbnRlcm5hbChBdXRvcmVsZWFzZVBvb2xP
cGVyYXRpb24gcG9vbE9wZXJhdGlvbikKIHsKLSAgICBBU1NFUlQoc0FzeW5jRGVsZWdhdGVzKTsK
LSAgICBpZiAoW3NBc3luY0RlbGVnYXRlcyBjb3VudF0pIHsKLSAgICAgICAgZm9yIChOU0ludm9j
YXRpb24qIGludm9jYXRpb24gaW4gc0FzeW5jRGVsZWdhdGVzKQorICAgIEFTU0VSVChzQXN5bmNE
ZWxlZ2F0ZXMoKSk7CisgICAgaWYgKFtzQXN5bmNEZWxlZ2F0ZXMoKSBjb3VudF0pIHsKKyAgICAg
ICAgZm9yIChOU0ludm9jYXRpb24qIGludm9jYXRpb24gaW4gc0FzeW5jRGVsZWdhdGVzKCkuZ2V0
KCkpCiAgICAgICAgICAgICBTZW5kRGVsZWdhdGVNZXNzYWdlKFtpbnZvY2F0aW9uIHJldGFpbl0p
OwotICAgICAgICBbc0FzeW5jRGVsZWdhdGVzIHJlbW92ZUFsbE9iamVjdHNdOworICAgICAgICBb
c0FzeW5jRGVsZWdhdGVzKCkgcmVtb3ZlQWxsT2JqZWN0c107CiAgICAgfQogCiAgICAgaWYgKHBv
b2xPcGVyYXRpb24gPT0gUHVzaE9yUG9wQXV0b3JlbGVhc2VQb29sICYmICFwZXJDYWxsb3V0QXV0
b3JlbGVhc2Vwb29sRW5hYmxlZCkKQEAgLTY4Niw3ICs2OTAsNyBAQCBzdGF0aWMgdm9pZCBTdGFy
dFdlYlRocmVhZCgpCiAgICAgLy8gbW9kZXMgc28gd2UgZG9uJ3QgYmxvY2sgdGhlIHdlYiB0aHJl
YWQgd2hpbGUgc2Nyb2xsaW5nLgogICAgIENGUnVuTG9vcEFkZFNvdXJjZShydW5Mb29wLCBkZWxl
Z2F0ZVNvdXJjZSwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKIAotICAgIHNBc3luY0RlbGVnYXRl
cyA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdOworICAgIHNBc3luY0RlbGVnYXRlcygp
ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CiAKICAgICBtYWluUnVu
TG9vcEF1dG9VbmxvY2tPYnNlcnZlciA9IENGUnVuTG9vcE9ic2VydmVyQ3JlYXRlKG51bGxwdHIs
IGtDRlJ1bkxvb3BCZWZvcmVXYWl0aW5nIHwga0NGUnVuTG9vcEV4aXQsIFlFUywgMzAwMDAwMSwg
TWFpblJ1bkxvb3BBdXRvVW5sb2NrLCBudWxscHRyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1RoZW1lTWFjLm1tCmluZGV4IDRhMDQ3NjdhZWU5OTUwMDdjNTgzOThlODczZTBmMGFmZTE2
YmYwYmYuLmJmODIwMDQzMTUzYjRkYzVkZjgyMzk0M2Y4NmE1OWE0NDFmMDUyYjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KQEAgLTQ5Miw5ICs0OTIsOSBAQCBzdGF0
aWMgY29uc3QgaW50KiBidXR0b25NYXJnaW5zKE5TQ29udHJvbFNpemUgY29udHJvbFNpemUpCiAK
IGVudW0gQnV0dG9uQ2VsbFR5cGUgeyBOb3JtYWxCdXR0b25DZWxsLCBEZWZhdWx0QnV0dG9uQ2Vs
bCB9OwogCi1zdGF0aWMgTlNCdXR0b25DZWxsICpsZWFrQnV0dG9uQ2VsbChCdXR0b25DZWxsVHlw
ZSB0eXBlKQorc3RhdGljIFJldGFpblB0cjxOU0J1dHRvbkNlbGw+IGJ1dHRvbkNlbGwoQnV0dG9u
Q2VsbFR5cGUgdHlwZSkKIHsKLSAgICBOU0J1dHRvbkNlbGwgKmNlbGwgPSBbW05TQnV0dG9uQ2Vs
bCBhbGxvY10gaW5pdF07CisgICAgYXV0byBjZWxsID0gYWRvcHROUyhbW05TQnV0dG9uQ2VsbCBh
bGxvY10gaW5pdF0pOwogICAgIFtjZWxsIHNldFRpdGxlOm5pbF07CiAgICAgW2NlbGwgc2V0QnV0
dG9uVHlwZTpOU0J1dHRvblR5cGVNb21lbnRhcnlQdXNoSW5dOwogICAgIGlmICh0eXBlID09IERl
ZmF1bHRCdXR0b25DZWxsKQpAQCAtNTM3LDExICs1MzcsMTEgQEAgc3RhdGljIE5TQnV0dG9uQ2Vs
bCAqYnV0dG9uKENvbnRyb2xQYXJ0IHBhcnQsIGNvbnN0IENvbnRyb2xTdGF0ZXMmIGNvbnRyb2xT
dGF0ZXMKICAgICBDb250cm9sU3RhdGVzOjpTdGF0ZXMgc3RhdGVzID0gY29udHJvbFN0YXRlcy5z
dGF0ZXMoKTsKICAgICBOU0J1dHRvbkNlbGwgKmNlbGw7CiAgICAgaWYgKHN0YXRlcyAmIENvbnRy
b2xTdGF0ZXM6OkRlZmF1bHRTdGF0ZSkgewotICAgICAgICBzdGF0aWMgTlNCdXR0b25DZWxsICpk
ZWZhdWx0Q2VsbCA9IGxlYWtCdXR0b25DZWxsKERlZmF1bHRCdXR0b25DZWxsKTsKLSAgICAgICAg
Y2VsbCA9IGRlZmF1bHRDZWxsOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWlu
UHRyPE5TQnV0dG9uQ2VsbD4+IGRlZmF1bHRDZWxsID0gYnV0dG9uQ2VsbChEZWZhdWx0QnV0dG9u
Q2VsbCk7CisgICAgICAgIGNlbGwgPSBkZWZhdWx0Q2VsbC5nZXQoKS5nZXQoKTsKICAgICB9IGVs
c2UgewotICAgICAgICBzdGF0aWMgTlNCdXR0b25DZWxsICpub3JtYWxDZWxsID0gbGVha0J1dHRv
bkNlbGwoTm9ybWFsQnV0dG9uQ2VsbCk7Ci0gICAgICAgIGNlbGwgPSBub3JtYWxDZWxsOworICAg
ICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQnV0dG9uQ2VsbD4+IG5vcm1h
bENlbGwgPSBidXR0b25DZWxsKE5vcm1hbEJ1dHRvbkNlbGwpOworICAgICAgICBjZWxsID0gbm9y
bWFsQ2VsbC5nZXQoKS5nZXQoKTsKICAgICB9CiAgICAgc2V0VXBCdXR0b25DZWxsKGNlbGwsIHBh
cnQsIGNvbnRyb2xTdGF0ZXMsIHpvb21lZFNpemUsIHpvb21GYWN0b3IpOwogICAgIHJldHVybiBj
ZWxsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYk5TQXR0cmli
dXRlZFN0cmluZ0V4dHJhcy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJOU0F0
dHJpYnV0ZWRTdHJpbmdFeHRyYXMubW0KaW5kZXggZGZmMDY3ODI4MDc0OTkxY2MzNjhmMTNlYjQ5
OTM5ODBiNGI5YTkzMy4uNmIyODRhMDRiYmM1ZGNhY2M2ODQwOWNmMTAwZmQ2NjMxYjcxODBhOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYk5TQXR0cmlidXRlZFN0
cmluZ0V4dHJhcy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViTlNBdHRy
aWJ1dGVkU3RyaW5nRXh0cmFzLm1tCkBAIC00MiwyNCArNDIsMTggQEAgTlNBdHRyaWJ1dGVkU3Ry
aW5nICphdHRyaWJ1dGVkU3RyaW5nQnlTdHJpcHBpbmdBdHRhY2htZW50Q2hhcmFjdGVycyhOU0F0
dHJpYnV0ZWQKIHsKICAgICBOU1JhbmdlIGF0dGFjaG1lbnRSYW5nZTsKICAgICBOU1N0cmluZyAq
b3JpZ2luYWxTdHJpbmcgPSBbYXR0cmlidXRlZFN0cmluZyBzdHJpbmddOwotICAgIHN0YXRpYyBO
U1N0cmluZyAqYXR0YWNobWVudENoYXJTdHJpbmcgPSBuaWw7CisgICAgc3RhdGljIGF1dG8gYXR0
YWNobWVudENoYXJTdHJpbmcgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgICAgICB1bmlj
aGFyIGNoYXJzWzJdID0geyBOU0F0dGFjaG1lbnRDaGFyYWN0ZXIsIDAgfTsKKyAgICAgICAgcmV0
dXJuIGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhDaGFyYWN0ZXJzOmNoYXJzIGxl
bmd0aDoxXSk7CisgICAgfSgpKTsKICAgICAKLSAgICBpZiAoIWF0dGFjaG1lbnRDaGFyU3RyaW5n
KSB7Ci0gICAgICAgIHVuaWNoYXIgY2hhcnNbMl07Ci0gICAgICAgIGlmICghYXR0YWNobWVudENo
YXJTdHJpbmcpIHsKLSAgICAgICAgICAgIGNoYXJzWzBdID0gTlNBdHRhY2htZW50Q2hhcmFjdGVy
OwotICAgICAgICAgICAgY2hhcnNbMV0gPSAwOwotICAgICAgICAgICAgYXR0YWNobWVudENoYXJT
dHJpbmcgPSBbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aENoYXJhY3RlcnM6Y2hhcnMgbGVuZ3Ro
OjFdOwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIGF0dGFjaG1lbnRSYW5nZSA9IFtvcmln
aW5hbFN0cmluZyByYW5nZU9mU3RyaW5nOmF0dGFjaG1lbnRDaGFyU3RyaW5nXTsKKyAgICBhdHRh
Y2htZW50UmFuZ2UgPSBbb3JpZ2luYWxTdHJpbmcgcmFuZ2VPZlN0cmluZzphdHRhY2htZW50Q2hh
clN0cmluZy5nZXQoKS5nZXQoKV07CiAgICAgaWYgKGF0dGFjaG1lbnRSYW5nZS5sb2NhdGlvbiAh
PSBOU05vdEZvdW5kICYmIGF0dGFjaG1lbnRSYW5nZS5sZW5ndGggPiAwKSB7CiAgICAgICAgIGF1
dG8gbmV3QXR0cmlidXRlZFN0cmluZyA9IGFkb3B0TlMoW2F0dHJpYnV0ZWRTdHJpbmcgbXV0YWJs
ZUNvcHlXaXRoWm9uZTpOVUxMXSk7CiAgICAgICAgIAogICAgICAgICB3aGlsZSAoYXR0YWNobWVu
dFJhbmdlLmxvY2F0aW9uICE9IE5TTm90Rm91bmQgJiYgYXR0YWNobWVudFJhbmdlLmxlbmd0aCA+
IDApIHsKICAgICAgICAgICAgIFtuZXdBdHRyaWJ1dGVkU3RyaW5nIHJlcGxhY2VDaGFyYWN0ZXJz
SW5SYW5nZTphdHRhY2htZW50UmFuZ2Ugd2l0aFN0cmluZzpAIiJdOwotICAgICAgICAgICAgYXR0
YWNobWVudFJhbmdlID0gW1tuZXdBdHRyaWJ1dGVkU3RyaW5nIHN0cmluZ10gcmFuZ2VPZlN0cmlu
ZzphdHRhY2htZW50Q2hhclN0cmluZ107CisgICAgICAgICAgICBhdHRhY2htZW50UmFuZ2UgPSBb
W25ld0F0dHJpYnV0ZWRTdHJpbmcgc3RyaW5nXSByYW5nZU9mU3RyaW5nOmF0dGFjaG1lbnRDaGFy
U3RyaW5nLmdldCgpLmdldCgpXTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gbmV3QXR0cmli
dXRlZFN0cmluZy5hdXRvcmVsZWFzZSgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0KaW5kZXggYTRj
MWRkYmU1OTA2N2E0Nzc1ZTMxOTRhNGFiN2E2MjI0MmZhMGU0Yy4uNjQ3N2ExYzNkZTlmZDA0OWU4
OTEyNmNhM2VhYTkwZGMyNTViZTYyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0KQEAgLTc0LDEzICs3NCwx
MyBAQCBzdGF0aWMgdm9pZCBhcHBseUJhc2ljQXV0aG9yaXphdGlvbkhlYWRlcihSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIGNvbnN0IENyZWRlbgogCiBzdGF0aWMgTlNPcGVyYXRpb25RdWV1ZSAq
b3BlcmF0aW9uUXVldWVGb3JBc3luY0NsaWVudHMoKQogewotICAgIHN0YXRpYyBOU09wZXJhdGlv
blF1ZXVlICpxdWV1ZTsKLSAgICBpZiAoIXF1ZXVlKSB7Ci0gICAgICAgIHF1ZXVlID0gW1tOU09w
ZXJhdGlvblF1ZXVlIGFsbG9jXSBpbml0XTsKKyAgICBzdGF0aWMgYXV0byBxdWV1ZSA9IG1ha2VO
ZXZlckRlc3Ryb3llZChbXSB7CisgICAgICAgIGF1dG8gcXVldWUgPSBhZG9wdE5TKFtbTlNPcGVy
YXRpb25RdWV1ZSBhbGxvY10gaW5pdF0pOwogICAgICAgICAvLyBEZWZhdWx0IGNvbmN1cnJlbnQg
b3BlcmF0aW9uIGNvdW50IGRlcGVuZHMgb24gY3VycmVudCBzeXN0ZW0gd29ya2xvYWQsIGJ1dCBk
ZWxlZ2F0ZSBtZXRob2RzIGFyZSBtb3N0bHkgaWRsaW5nIGluIElQQywgc28gd2UgY2FuIHJ1biBh
cyBtYW55IGFzIG5lZWRlZC4KICAgICAgICAgW3F1ZXVlIHNldE1heENvbmN1cnJlbnRPcGVyYXRp
b25Db3VudDpOU09wZXJhdGlvblF1ZXVlRGVmYXVsdE1heENvbmN1cnJlbnRPcGVyYXRpb25Db3Vu
dF07Ci0gICAgfQotICAgIHJldHVybiBxdWV1ZTsKKyAgICAgICAgcmV0dXJuIHF1ZXVlOworICAg
IH0oKSk7CisgICAgcmV0dXJuIHF1ZXVlLmdldCgpLmdldCgpOwogfQogCiBSZXNvdXJjZUhhbmRs
ZUludGVybmFsOjp+UmVzb3VyY2VIYW5kbGVJbnRlcm5hbCgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvTlNBdHRyaWJ1dGVkU3RyaW5nLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL05TQXR0cmlidXRlZFN0cmluZy5tbQppbmRleCA4
ZTA2OGE3MDQzMWMyMjZjNDVjNTkxNmY4MDMzYmJiMTk4MzgzZTczLi44NWFjOTg2NGJhOWI4MWVk
M2U4MzNhNTNlZmE2YTBkOTI4OTMwMjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvTlNBdHRyaWJ1dGVkU3RyaW5nLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9OU0F0dHJpYnV0ZWRTdHJpbmcubW0KQEAgLTEyNywzNCArMTI3
LDM4IEBAICsgKE5TTXV0YWJsZUFycmF5PFdLV2ViVmlldyAqPiAqKWNhY2hlCiAgICAgcmV0dXJu
IGNhY2hlOwogfQogCi1zdGF0aWMgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlv
bjsKK3N0YXRpYyBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4mIGdsb2JhbENvbmZp
Z3VyYXRpb24oKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8V0tXZWJW
aWV3Q29uZmlndXJhdGlvbj4+IGNvbmZpZ3VyYXRpb247CisgICAgcmV0dXJuIGNvbmZpZ3VyYXRp
b247Cit9CiAKICsgKFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKiljb25maWd1cmF0aW9uCiB7Cisg
ICAgYXV0byYgY29uZmlndXJhdGlvbiA9IGdsb2JhbENvbmZpZ3VyYXRpb24oKTsKICAgICBpZiAo
IWNvbmZpZ3VyYXRpb24pIHsKLSAgICAgICAgY29uZmlndXJhdGlvbiA9IFtbV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbiBhbGxvY10gaW5pdF07Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24ucHJvY2Vzc1Bv
b2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gaW5pdF0pLmdldCgpOwotICAgICAg
ICBjb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgPSBbV0tXZWJzaXRlRGF0YVN0b3JlIG5v
blBlcnNpc3RlbnREYXRhU3RvcmVdOwotICAgICAgICBjb25maWd1cmF0aW9uLm1lZGlhVHlwZXNS
ZXF1aXJpbmdVc2VyQWN0aW9uRm9yUGxheWJhY2sgPSBXS0F1ZGlvdmlzdWFsTWVkaWFUeXBlQWxs
OwotICAgICAgICBjb25maWd1cmF0aW9uLl9hbGxvd3NKYXZhU2NyaXB0TWFya3VwID0gTk87Ci0g
ICAgICAgIGNvbmZpZ3VyYXRpb24uX2FsbG93c01ldGFSZWZyZXNoID0gTk87Ci0gICAgICAgIGNv
bmZpZ3VyYXRpb24uX2F0dGFjaG1lbnRFbGVtZW50RW5hYmxlZCA9IFlFUzsKLSAgICAgICAgY29u
ZmlndXJhdGlvbi5faW52aXNpYmxlQXV0b3BsYXlOb3RQZXJtaXR0ZWQgPSBZRVM7Ci0gICAgICAg
IGNvbmZpZ3VyYXRpb24uX21lZGlhRGF0YUxvYWRzQXV0b21hdGljYWxseSA9IE5POwotICAgICAg
ICBjb25maWd1cmF0aW9uLl9uZWVkc1N0b3JhZ2VBY2Nlc3NGcm9tRmlsZVVSTHNRdWlyayA9IE5P
OworICAgICAgICBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24gYWxsb2NdIGluaXRdKTsKKyAgICAgICAgW2NvbmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1Bvb2w6
YWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIGluaXRdKS5nZXQoKV07CisgICAgICAgIFtj
b25maWd1cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6W1dLV2Vic2l0ZURhdGFTdG9yZSBub25Q
ZXJzaXN0ZW50RGF0YVN0b3JlXV07CisgICAgICAgIFtjb25maWd1cmF0aW9uIHNldE1lZGlhVHlw
ZXNSZXF1aXJpbmdVc2VyQWN0aW9uRm9yUGxheWJhY2s6V0tBdWRpb3Zpc3VhbE1lZGlhVHlwZUFs
bF07CisgICAgICAgIFtjb25maWd1cmF0aW9uIF9zZXRBbGxvd3NKYXZhU2NyaXB0TWFya3VwOk5P
XTsKKyAgICAgICAgW2NvbmZpZ3VyYXRpb24gX3NldEFsbG93c01ldGFSZWZyZXNoOk5PXTsKKyAg
ICAgICAgW2NvbmZpZ3VyYXRpb24gX3NldEF0dGFjaG1lbnRFbGVtZW50RW5hYmxlZDpZRVNdOwor
ICAgICAgICBbY29uZmlndXJhdGlvbiBfc2V0SW52aXNpYmxlQXV0b3BsYXlOb3RQZXJtaXR0ZWQ6
WUVTXTsKKyAgICAgICAgW2NvbmZpZ3VyYXRpb24gX3NldE1lZGlhRGF0YUxvYWRzQXV0b21hdGlj
YWxseTpOT107CisgICAgICAgIFtjb25maWd1cmF0aW9uIF9zZXROZWVkc1N0b3JhZ2VBY2Nlc3NG
cm9tRmlsZVVSTHNRdWlyazpOT107CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAgICAg
Y29uZmlndXJhdGlvbi5hbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrID0gTk87Ci0gICAgICAgIGNv
bmZpZ3VyYXRpb24uX2NsaWVudE5hdmlnYXRpb25zUnVuQXRGb3JlZ3JvdW5kUHJpb3JpdHkgPSBZ
RVM7CisgICAgICAgIFtjb25maWd1cmF0aW9uIHNldEFsbG93c0lubGluZU1lZGlhUGxheWJhY2s6
Tk9dOworICAgICAgICBbY29uZmlndXJhdGlvbiBfc2V0Q2xpZW50TmF2aWdhdGlvbnNSdW5BdEZv
cmVncm91bmRQcmlvcml0eTpZRVNdOwogI2VuZGlmCiAgICAgfQogCi0gICAgcmV0dXJuIGNvbmZp
Z3VyYXRpb247CisgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb24uZ2V0KCk7CiB9CiAKICsgKHZvaWQp
Y2xlYXJDb25maWd1cmF0aW9uCiB7Ci0gICAgW2NvbmZpZ3VyYXRpb24gcmVsZWFzZV07Ci0gICAg
Y29uZmlndXJhdGlvbiA9IG5pbDsKKyAgICBnbG9iYWxDb25maWd1cmF0aW9uKCkgPSBuaWw7CiB9
CiAKICsgKFJldGFpblB0cjxXS1dlYlZpZXc+KXJldHJpZXZlT3JDcmVhdGVXZWJWaWV3CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOU1VSTEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
TlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5tbQppbmRleCBkMDhmMTMwNWQ3YTI5NTEzYzg3
NjI2OWY1ZDk3NjdmNmU3YWU3ZTdmLi5jM2MzMGVlNWYyYThiOGU3MDc2MzcwZWExMjFjMTdkNGFk
YmFhMGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tO
U1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UubW0KQEAgLTQyLDEy
ICs0MiwxMiBAQCAtIChOU09iamVjdCAqKV93ZWJfY3JlYXRlVGFyZ2V0CiAgICAgV2ViS2l0OjpB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiBjaGFsbGVuZ2UgPSAqcmVpbnRlcnByZXRfY2Fz
dDxXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkqPigmc2VsZi5fYXBpT2JqZWN0
KTsKIAogICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3QgdG9rZW47Ci0gICAgc3RhdGljIFdLTlNV
UkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlciAqc2VuZGVyOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxSZXRhaW5QdHI8V0tOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVy
Pj4gc2VuZGVyOwogICAgIGRpc3BhdGNoX29uY2UoJnRva2VuLCBeewotICAgICAgICBzZW5kZXIg
PSBbW1dLTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlciBhbGxvY10gaW5pdF07Cisg
ICAgICAgIHNlbmRlci5nZXQoKSA9IGFkb3B0TlMoW1tXS05TVVJMQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VTZW5kZXIgYWxsb2NdIGluaXRdKTsKICAgICB9KTsKIAotICAgIHJldHVybiBbW05TVVJM
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UgYWxsb2NdIGluaXRXaXRoQXV0aGVudGljYXRpb25DaGFs
bGVuZ2U6bWFjKGNoYWxsZW5nZS5jb3JlKCkpIHNlbmRlcjpzZW5kZXJdOworICAgIHJldHVybiBb
W05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgYWxsb2NdIGluaXRXaXRoQXV0aGVudGljYXRp
b25DaGFsbGVuZ2U6bWFjKGNoYWxsZW5nZS5jb3JlKCkpIHNlbmRlcjpzZW5kZXIuZ2V0KCkuZ2V0
KCldOwogfQogCiAtIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkmKV93ZWJf
YXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQppbmRleCA4M2E3NzI5OGU0YzRkZDgyZGNh
MzUzMzVmYTljNTkxMzA5ZTQzOTNjLi44ODhlOWU2Y2I3ZGI4MTAyZDU2OGVjNTRhMjk0ZTYyYzY2
NzcxYmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQ
cm9jZXNzUG9vbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQ
cm9jZXNzUG9vbC5tbQpAQCAtNjUsNyArNjUsMTEgQEAKICNpbXBvcnQgIldLR2VvbG9jYXRpb25Q
cm92aWRlcklPUy5oIgogI2VuZGlmCiAKLXN0YXRpYyBXS1Byb2Nlc3NQb29sICpzaGFyZWRQcm9j
ZXNzUG9vbDsKK3N0YXRpYyBSZXRhaW5QdHI8V0tQcm9jZXNzUG9vbD4mIHNoYXJlZFByb2Nlc3NQ
b29sKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPFdLUHJvY2Vzc1Bv
b2w+PiBfc2hhcmVkUHJvY2Vzc1Bvb2w7CisgICAgcmV0dXJuIF9zaGFyZWRQcm9jZXNzUG9vbDsK
K30KIAogQGltcGxlbWVudGF0aW9uIFdLUHJvY2Vzc1Bvb2wgewogICAgIFdlYWtPYmpDUHRyPGlk
IDxfV0tBdXRvbWF0aW9uRGVsZWdhdGU+PiBfYXV0b21hdGlvbkRlbGVnYXRlOwpAQCAtMTA3LDcg
KzExMSw3IEBAICsgKEJPT0wpc3VwcG9ydHNTZWN1cmVDb2RpbmcKIAogLSAodm9pZCllbmNvZGVX
aXRoQ29kZXI6KE5TQ29kZXIgKiljb2RlcgogewotICAgIGlmIChzZWxmID09IHNoYXJlZFByb2Nl
c3NQb29sKSB7CisgICAgaWYgKHNlbGYgPT0gc2hhcmVkUHJvY2Vzc1Bvb2woKSkgewogICAgICAg
ICBbY29kZXIgZW5jb2RlQm9vbDpZRVMgZm9yS2V5OkAiaXNTaGFyZWRQcm9jZXNzUG9vbCJdOwog
ICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTU5LDEwICsxNjMsMTAgQEAgKyAoV0tQcm9jZXNz
UG9vbCAqKV9zaGFyZWRQcm9jZXNzUG9vbAogewogICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qg
b25jZVRva2VuOwogICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKLSAgICAgICAgc2hh
cmVkUHJvY2Vzc1Bvb2wgPSBbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIGluaXRdOworICAgICAgICBz
aGFyZWRQcm9jZXNzUG9vbCgpID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIGluaXRd
KTsKICAgICB9KTsKIAotICAgIHJldHVybiBzaGFyZWRQcm9jZXNzUG9vbDsKKyAgICByZXR1cm4g
c2hhcmVkUHJvY2Vzc1Bvb2woKS5nZXQoKTsKIH0KIAogKyAoTlNBcnJheTxXS1Byb2Nlc3NQb29s
ICo+ICopX2FsbFByb2Nlc3NQb29sc0ZvclRlc3RpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDI2MTQxY2YzMjFhZTkzYmRkOTQ2MzJj
MDM5ZTkxYjk4MjU2YjQxOTguLjhhOWJlMGE1MTkzMDRjYjY0ODVmOGRlMTgzOWU5MjIyNGIzNWVj
ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bQpAQCAtMjExNyw5ICsyMTE3LDkgQEAgLSAoV0tOYXZpZ2F0aW9uICopbG9hZFNpbXVsYXRlZFJl
cXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3Qgd2l0aFJlc3BvbnNlOihOU1UKIC0gKFdLTmF2
aWdhdGlvbiAqKWxvYWRTaW11bGF0ZWRSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IHdp
dGhSZXNwb25zZUhUTUxTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nCiB7CiAgICAgTlNEYXRhICpk
YXRhID0gW3N0cmluZyBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107Ci0g
ICAgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UgPSBbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRX
aXRoVVJMOnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRM
ZW5ndGg6c3RyaW5nLmxlbmd0aCB0ZXh0RW5jb2RpbmdOYW1lOkAiVVRGLTgiXTsKKyAgICBhdXRv
IHJlc3BvbnNlID0gYWRvcHROUyhbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnJl
cXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6c3Ry
aW5nLmxlbmd0aCB0ZXh0RW5jb2RpbmdOYW1lOkAiVVRGLTgiXSk7CiAKLSAgICByZXR1cm4gW3Nl
bGYgbG9hZFNpbXVsYXRlZFJlcXVlc3Q6cmVxdWVzdCB3aXRoUmVzcG9uc2U6cmVzcG9uc2UgcmVz
cG9uc2VEYXRhOmRhdGFdOworICAgIHJldHVybiBbc2VsZiBsb2FkU2ltdWxhdGVkUmVxdWVzdDpy
ZXF1ZXN0IHdpdGhSZXNwb25zZTpyZXNwb25zZS5nZXQoKSByZXNwb25zZURhdGE6ZGF0YV07CiB9
CiAKIC0gKFdLTmF2aWdhdGlvbiAqKWxvYWRGaWxlUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVx
dWVzdCBhbGxvd2luZ1JlYWRBY2Nlc3NUb1VSTDooTlNVUkwgKilyZWFkQWNjZXNzVVJMCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0
b3JlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFT
dG9yZS5tbQppbmRleCBkMTg2YjllMGNkN2Q3YTVhYWM0YzUxMmUwNzIzZDI3NzNkM2ZhOGJjLi41
NWI1ZmM5NTUxNjhlNDg0NTJjZmI3MTBjZWJiNmFkZmU5ZDA1YTk0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0K
QEAgLTE2NiwxMiArMTY2LDEyIEBAIC0gKEJPT0wpaXNQZXJzaXN0ZW50CiArIChOU1NldCAqKWFs
bFdlYnNpdGVEYXRhVHlwZXMKIHsKICAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tl
bjsKLSAgICBzdGF0aWMgTlNTZXQgKmFsbFdlYnNpdGVEYXRhVHlwZXM7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFJldGFpblB0cjxOU1NldD4+IGFsbFdlYnNpdGVEYXRhVHlwZXM7CiAgICAg
ZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeewotICAgICAgICBhbGxXZWJzaXRlRGF0YVR5cGVz
ID0gW1tOU1NldCBhbGxvY10gaW5pdFdpdGhBcnJheTpAWyBXS1dlYnNpdGVEYXRhVHlwZURpc2tD
YWNoZSwgV0tXZWJzaXRlRGF0YVR5cGVGZXRjaENhY2hlLCBXS1dlYnNpdGVEYXRhVHlwZU1lbW9y
eUNhY2hlLCBXS1dlYnNpdGVEYXRhVHlwZU9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlLCBXS1dl
YnNpdGVEYXRhVHlwZUNvb2tpZXMsIFdLV2Vic2l0ZURhdGFUeXBlU2Vzc2lvblN0b3JhZ2UsIFdL
V2Vic2l0ZURhdGFUeXBlTG9jYWxTdG9yYWdlLCBXS1dlYnNpdGVEYXRhVHlwZUluZGV4ZWREQkRh
dGFiYXNlcywgV0tXZWJzaXRlRGF0YVR5cGVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucywgV0tX
ZWJzaXRlRGF0YVR5cGVXZWJTUUxEYXRhYmFzZXMgXV07CisgICAgICAgIGFsbFdlYnNpdGVEYXRh
VHlwZXMuZ2V0KCkgPSBhZG9wdE5TKFtbTlNTZXQgYWxsb2NdIGluaXRXaXRoQXJyYXk6QFsgV0tX
ZWJzaXRlRGF0YVR5cGVEaXNrQ2FjaGUsIFdLV2Vic2l0ZURhdGFUeXBlRmV0Y2hDYWNoZSwgV0tX
ZWJzaXRlRGF0YVR5cGVNZW1vcnlDYWNoZSwgV0tXZWJzaXRlRGF0YVR5cGVPZmZsaW5lV2ViQXBw
bGljYXRpb25DYWNoZSwgV0tXZWJzaXRlRGF0YVR5cGVDb29raWVzLCBXS1dlYnNpdGVEYXRhVHlw
ZVNlc3Npb25TdG9yYWdlLCBXS1dlYnNpdGVEYXRhVHlwZUxvY2FsU3RvcmFnZSwgV0tXZWJzaXRl
RGF0YVR5cGVJbmRleGVkREJEYXRhYmFzZXMsIFdLV2Vic2l0ZURhdGFUeXBlU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbnMsIFdLV2Vic2l0ZURhdGFUeXBlV2ViU1FMRGF0YWJhc2VzIF1dKTsKICAg
ICB9KTsKIAotICAgIHJldHVybiBhbGxXZWJzaXRlRGF0YVR5cGVzOworICAgIHJldHVybiBhbGxX
ZWJzaXRlRGF0YVR5cGVzLmdldCgpLmdldCgpOwogfQogCiAtIChXS0hUVFBDb29raWVTdG9yZSAq
KWh0dHBDb29raWVTdG9yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvUHJlZmVyZW5jZU9ic2VydmVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
UHJlZmVyZW5jZU9ic2VydmVyLm1tCmluZGV4IGMxYTM3NzllN2YzODdmNDc0MDI4ZDQyNTdhNjJh
MjNjNTNjMWE5YTUuLmVlZmVkMWEwNzlkZTc5OTY4MDFlN2MyZjM3MDZiMWM5Njk2NTc2YjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ByZWZlcmVuY2VPYnNlcnZl
ci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QcmVmZXJlbmNlT2JzZXJ2
ZXIubW0KQEAgLTExOCwxMiArMTE4LDggQEAgQGltcGxlbWVudGF0aW9uIFdLUHJlZmVyZW5jZU9i
c2VydmVyCiAKICsgKGlkKXNoYXJlZEluc3RhbmNlCiB7Ci0gICAgc3RhdGljIFdLUHJlZmVyZW5j
ZU9ic2VydmVyICppbnN0YW5jZSA9IG5pbDsKLQotICAgIGlmICghaW5zdGFuY2UpCi0gICAgICAg
IGluc3RhbmNlID0gW1tbc2VsZiBjbGFzc10gYWxsb2NdIGluaXRdOwotCi0gICAgcmV0dXJuIGlu
c3RhbmNlOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8V0tQcmVmZXJlbmNl
T2JzZXJ2ZXI+PiBpbnN0YW5jZSA9IGFkb3B0TlMoW1tbc2VsZiBjbGFzc10gYWxsb2NdIGluaXRd
KTsKKyAgICByZXR1cm4gaW5zdGFuY2UuZ2V0KCkuZ2V0KCk7CiB9CiAKIC0gKGluc3RhbmNldHlw
ZSlpbml0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1Zp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oCmluZGV4IDQwZWY1NTMyODA2MjI5Y2Q2ZWQ5NGFj
MzdhMTM3NGEzMzJmZTMzMWQuLmFhOWY2YjEzODRkOTNiOGIyMGQ1MDllZTMwNjRiYTc1MTBkZjI0
ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1Zp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oCkBAIC05NCw3ICs5NCw3IEBAIHByaXZhdGU6CiAg
ICAgV2ViQ29yZTo6RmxvYXRTaXplIHZpZGVvRGltZW5zaW9ucygpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG1fdmlkZW9EaW1lbnNpb25zOyB9CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICBVSVZpZXdDb250cm9sbGVyICpwcmVzZW50aW5nVmlld0NvbnRyb2xsZXIoKSBmaW5hbDsKLSAg
ICBVSVZpZXdDb250cm9sbGVyICpjcmVhdGVWaWRlb0Z1bGxzY3JlZW5WaWV3Q29udHJvbGxlcihB
VlBsYXllclZpZXdDb250cm9sbGVyKikgZmluYWw7CisgICAgUmV0YWluUHRyPFVJVmlld0NvbnRy
b2xsZXI+IGNyZWF0ZVZpZGVvRnVsbHNjcmVlblZpZXdDb250cm9sbGVyKEFWUGxheWVyVmlld0Nv
bnRyb2xsZXIqKSBmaW5hbDsKICNlbmRpZgogICAgIHZvaWQgd2lsbEVudGVyUGljdHVyZUluUGlj
dHVyZSgpIGZpbmFsOwogICAgIHZvaWQgZGlkRW50ZXJQaWN0dXJlSW5QaWN0dXJlKCkgZmluYWw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0KaW5kZXggMzgxYmIxYjA0NzJkMTUzYjQ4YWFkMjhmNGMw
MmI3ZGQyYjM5OTMxZC4uZTk4NzRhNWQ5Y2FiM2JkYzllNWNkYzgxNTcwZTA4ODdjNjg1MTVlNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQpAQCAtMjI0LDkgKzIyNCw5IEBAIFVJVmlld0NvbnRy
b2xsZXIgKlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6cHJlc2VudGluZ1ZpZXdDb250cm9s
bGVyKCkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotVUlWaWV3Q29udHJvbGxlciAqVmlkZW9G
dWxsc2NyZWVuTW9kZWxDb250ZXh0OjpjcmVhdGVWaWRlb0Z1bGxzY3JlZW5WaWV3Q29udHJvbGxl
cihBVlBsYXllclZpZXdDb250cm9sbGVyICphdlBsYXllclZpZXdDb250cm9sbGVyKQorUmV0YWlu
UHRyPFVJVmlld0NvbnRyb2xsZXI+IFZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6Y3JlYXRl
VmlkZW9GdWxsc2NyZWVuVmlld0NvbnRyb2xsZXIoQVZQbGF5ZXJWaWV3Q29udHJvbGxlciAqYXZQ
bGF5ZXJWaWV3Q29udHJvbGxlcikKIHsKLSAgICByZXR1cm4gW1tXS1ZpZGVvRnVsbFNjcmVlblZp
ZXdDb250cm9sbGVyIGFsbG9jXSBpbml0V2l0aEFWUGxheWVyVmlld0NvbnRyb2xsZXI6YXZQbGF5
ZXJWaWV3Q29udHJvbGxlcl07CisgICAgcmV0dXJuIGFkb3B0TlMoW1tXS1ZpZGVvRnVsbFNjcmVl
blZpZXdDb250cm9sbGVyIGFsbG9jXSBpbml0V2l0aEFWUGxheWVyVmlld0NvbnRyb2xsZXI6YXZQ
bGF5ZXJWaWV3Q29udHJvbGxlcl0pOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYkluc3BlY3RvclByZWZlcmVuY2VPYnNlcnZlci5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYkluc3BlY3RvclByZWZlcmVuY2VPYnNl
cnZlci5tbQppbmRleCA3N2Q3NDJlMTA1MjVkZjNhN2E4Y2Q0NjI5NDcyMjc4M2IyNzdiZmFhLi5k
Y2Q3NzRmYTQ5NmQzZjM3M2RjMWQzNzk1OTIyODIxNTE4ZDhiZTEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJJbnNwZWN0b3JQcmVmZXJlbmNlT2JzZXJ2ZXIu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViSW5zcGVjdG9yUHJlZmVy
ZW5jZU9ic2VydmVyLm1tCkBAIC00MSwxMiArNDEsOCBAQCBAaW1wbGVtZW50YXRpb24gV0tXZWJJ
bnNwZWN0b3JQcmVmZXJlbmNlT2JzZXJ2ZXIKIAogKyAoaWQpc2hhcmVkSW5zdGFuY2UKIHsKLSAg
ICBzdGF0aWMgV0tXZWJJbnNwZWN0b3JQcmVmZXJlbmNlT2JzZXJ2ZXIgKmluc3RhbmNlID0gbmls
OwotCi0gICAgaWYgKCFpbnN0YW5jZSkKLSAgICAgICAgaW5zdGFuY2UgPSBbW1tzZWxmIGNsYXNz
XSBhbGxvY10gaW5pdF07Ci0KLSAgICByZXR1cm4gaW5zdGFuY2U7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFJldGFpblB0cjxXS1dlYkluc3BlY3RvclByZWZlcmVuY2VPYnNlcnZlcj4+IGlu
c3RhbmNlID0gYWRvcHROUyhbW1tzZWxmIGNsYXNzXSBhbGxvY10gaW5pdF0pOworICAgIHJldHVy
biBpbnN0YW5jZS5nZXQoKS5nZXQoKTsKIH0KIAogLSAoaW5zdGFuY2V0eXBlKWluaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0F1
dGhlbnRpY2F0b3JQcmVzZW50ZXJDb29yZGluYXRvci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0F1dGhlbnRpY2F0b3JQcmVzZW50ZXJDb29yZGlu
YXRvci5tbQppbmRleCAzMGM5MWQ3YmFmYTI1YTIwODUzMzM0NTE0MWUyZWJiYTRkMmIwMmIzLi5l
ZTZhYWVlNDFjNTNkMWM5M2I2NDhjMTRlZWM1MWVkYjU2YTQ4NTI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9BdXRoZW50aWNhdG9y
UHJlc2VudGVyQ29vcmRpbmF0b3IubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vQ29jb2EvQXV0aGVudGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9yLm1t
CkBAIC02MCw4ICs2MCw4IEBAIEF1dGhlbnRpY2F0b3JQcmVzZW50ZXJDb29yZGluYXRvcjo6QXV0
aGVudGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9yKGNvbnN0IEF1dGhlCiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAotICAgIG1fcHJlc2VudGVyRGVsZWdhdGUgPSBbW1dL
QVNDQXV0aG9yaXphdGlvblByZXNlbnRlckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aENvb3JkaW5h
dG9yOip0aGlzXTsKLSAgICBtX3ByZXNlbnRlciA9IFthbGxvY0FTQ0F1dGhvcml6YXRpb25QcmVz
ZW50ZXJJbnN0YW5jZSgpIGluaXRdOworICAgIG1fcHJlc2VudGVyRGVsZWdhdGUgPSBhZG9wdE5T
KFtbV0tBU0NBdXRob3JpemF0aW9uUHJlc2VudGVyRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoQ29v
cmRpbmF0b3I6KnRoaXNdKTsKKyAgICBtX3ByZXNlbnRlciA9IGFkb3B0TlMoW2FsbG9jQVNDQXV0
aG9yaXphdGlvblByZXNlbnRlckluc3RhbmNlKCkgaW5pdF0pOwogICAgIFttX3ByZXNlbnRlciBz
ZXREZWxlZ2F0ZTptX3ByZXNlbnRlckRlbGVnYXRlLmdldCgpXTsKIAogICAgIGF1dG8gY29tcGxl
dGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoW21hbmFnZXIgPSBtX21hbmFnZXJdIChpZDxBU0ND
cmVkZW50aWFsUHJvdG9jb2w+IGNyZWRlbnRpYWwsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLm1tCmluZGV4IGIxNjQwNzM5ZTA5NjM4ODZmOGE0OWE3NjFmYTdiOWJmYTgzNmI5
ODEuLjA5ZGQzYTRmOGFmYzQ0NDJlNjMwNDhmNzE0YTg5YmI0ODE2YTRmMDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5tbQpAQCAtMzE3MSwyMyArMzE3MSwyNCBAQCAtIChOU0FycmF5ICopc3VwcG9ydGVkUGFzdGVi
b2FyZFR5cGVzRm9yQ3VycmVudFNlbGVjdGlvbgogewogICAgIGlmIChfcGFnZS0+ZWRpdG9yU3Rh
dGUoKS5zZWxlY3Rpb25Jc05vbmUpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgc3Rh
dGljIE5TTXV0YWJsZUFycmF5ICpyaWNoVHlwZXMgPSBuaWw7Ci0gICAgc3RhdGljIE5TTXV0YWJs
ZUFycmF5ICpwbGFpblRleHRUeXBlcyA9IG5pbDsKLSAgICBpZiAoIXBsYWluVGV4dFR5cGVzKSB7
Ci0gICAgICAgIHBsYWluVGV4dFR5cGVzID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF07
CisKKyAgICBzdGF0aWMgYXV0byBwbGFpblRleHRUeXBlcyA9IG1ha2VOZXZlckRlc3Ryb3llZChb
XSB7CisgICAgICAgIGF1dG8gcGxhaW5UZXh0VHlwZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJy
YXkgYWxsb2NdIGluaXRdKTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAg
ICAgICAgIFtwbGFpblRleHRUeXBlcyBhZGRPYmplY3Q6KGlkKWtVVFR5cGVVUkxdOwogQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgIFtwbGFpblRleHRUeXBlcyBhZGRP
YmplY3RzRnJvbUFycmF5OlVJUGFzdGVib2FyZFR5cGVMaXN0U3RyaW5nXTsKLQotICAgICAgICBy
aWNoVHlwZXMgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XTsKKyAgICAgICAgcmV0dXJu
IHBsYWluVGV4dFR5cGVzOworICAgIH0oKSk7CisgICAgc3RhdGljIGF1dG8gcmljaFR5cGVzID0g
bWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICAgICAgYXV0byByaWNoVHlwZXMgPSBhZG9wdE5T
KFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKICAgICAgICAgW3JpY2hUeXBlcyBhZGRP
YmplY3Q6V2ViQ29yZTo6V2ViQXJjaGl2ZVBib2FyZFR5cGVdOwogICAgICAgICBbcmljaFR5cGVz
IGFkZE9iamVjdHNGcm9tQXJyYXk6VUlQYXN0ZWJvYXJkVHlwZUxpc3RJbWFnZV07Ci0gICAgICAg
IFtyaWNoVHlwZXMgYWRkT2JqZWN0c0Zyb21BcnJheTpwbGFpblRleHRUeXBlc107Ci0gICAgfQor
ICAgICAgICBbcmljaFR5cGVzIGFkZE9iamVjdHNGcm9tQXJyYXk6cGxhaW5UZXh0VHlwZXMuZ2V0
KCkuZ2V0KCldOworICAgICAgICByZXR1cm4gcmljaFR5cGVzOworICAgIH0oKSk7CiAKLSAgICBy
ZXR1cm4gKF9wYWdlLT5lZGl0b3JTdGF0ZSgpLmlzQ29udGVudFJpY2hseUVkaXRhYmxlKSA/IHJp
Y2hUeXBlcyA6IHBsYWluVGV4dFR5cGVzOworICAgIHJldHVybiAoX3BhZ2UtPmVkaXRvclN0YXRl
KCkuaXNDb250ZW50UmljaGx5RWRpdGFibGUpID8gcmljaFR5cGVzLmdldCgpLmdldCgpIDogcGxh
aW5UZXh0VHlwZXMuZ2V0KCkuZ2V0KCk7CiB9CiAKICNkZWZpbmUgRk9SV0FSRF9BQ1RJT05fVE9f
V0tXRUJWSUVXKF9hY3Rpb24pIFwKQEAgLTk4MzEsNyArOTgzMiw3IEBAIC0gKHZvaWQpYXNzaWdu
TGVnYWN5RGF0YUZvckNvbnRleHRNZW51SW50ZXJhY3Rpb24KIAogICAgIF9wYWdlLT5zdGFydElu
dGVyYWN0aW9uV2l0aFBvc2l0aW9uSW5mb3JtYXRpb24oX3Bvc2l0aW9uSW5mb3JtYXRpb24pOwog
Ci0gICAgVUlWaWV3Q29udHJvbGxlciAqcHJldmlld1ZpZXdDb250cm9sbGVyID0gbmlsOworICAg
IFJldGFpblB0cjxVSVZpZXdDb250cm9sbGVyPiBwcmV2aWV3Vmlld0NvbnRyb2xsZXI7CiAKICAg
ICBhdXRvIGVsZW1lbnRJbmZvID0gYWRvcHROUyhbW19XS0FjdGl2YXRlZEVsZW1lbnRJbmZvIGFs
bG9jXSBfaW5pdFdpdGhJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbjpfcG9zaXRpb25J
bmZvcm1hdGlvbiB1c2VySW5mbzpuaWxdKTsKIApAQCAtOTg3Miw3ICs5ODczLDcgQEAgLSAodm9p
ZClhc3NpZ25MZWdhY3lEYXRhRm9yQ29udGV4dE1lbnVJbnRlcmFjdGlvbgogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgX2NvbnRleHRNZW51TGVnYWN5TWVudSA9IG1l
bnVGcm9tTGVnYWN5UHJldmlld09yRGVmYXVsdEFjdGlvbnMocHJldmlld1ZpZXdDb250cm9sbGVy
LCBkZWZhdWx0QWN0aW9uc0Zyb21Bc3Npc3RhbnQsIGVsZW1lbnRJbmZvKTsKKyAgICAgICAgX2Nv
bnRleHRNZW51TGVnYWN5TWVudSA9IG1lbnVGcm9tTGVnYWN5UHJldmlld09yRGVmYXVsdEFjdGlv
bnMocHJldmlld1ZpZXdDb250cm9sbGVyLmdldCgpLCBkZWZhdWx0QWN0aW9uc0Zyb21Bc3Npc3Rh
bnQsIGVsZW1lbnRJbmZvKTsKIAogICAgIH0gZWxzZSBpZiAoX3Bvc2l0aW9uSW5mb3JtYXRpb24u
aXNJbWFnZSAmJiBfcG9zaXRpb25JbmZvcm1hdGlvbi5pbWFnZSkgewogICAgICAgICBOU1VSTCAq
bnNVUkwgPSAoTlNVUkwgKil1cmw7CkBAIC05ODk1LDEzICs5ODk2LDEzIEBAIC0gKHZvaWQpYXNz
aWduTGVnYWN5RGF0YUZvckNvbnRleHRNZW51SW50ZXJhY3Rpb24KICAgICAgICAgaWYgKGltYWdl
SW5mbyAmJiBbdWlEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3
OnByZXZpZXdWaWV3Q29udHJvbGxlckZvckltYWdlOmFsdGVybmF0ZVVSTDpkZWZhdWx0QWN0aW9u
czplbGVtZW50SW5mbzopXSkKICAgICAgICAgICAgIHByZXZpZXdWaWV3Q29udHJvbGxlciA9IFt1
aURlbGVnYXRlIF93ZWJWaWV3OnNlbGYud2ViVmlldyBwcmV2aWV3Vmlld0NvbnRyb2xsZXJGb3JJ
bWFnZTp1aUltYWdlLmdldCgpIGFsdGVybmF0ZVVSTDpuc1VSTCBkZWZhdWx0QWN0aW9uczpkZWZh
dWx0QWN0aW9uc0Zyb21Bc3Npc3RhbnQuZ2V0KCkgZWxlbWVudEluZm86ZWxlbWVudEluZm8uZ2V0
KCldOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBwcmV2aWV3Vmlld0NvbnRyb2xsZXIgPSBb
W1dLSW1hZ2VQcmV2aWV3Vmlld0NvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpjZ0lt
YWdlIGRlZmF1bHRBY3Rpb25zOmRlZmF1bHRBY3Rpb25zRnJvbUFzc2lzdGFudC5nZXQoKSBlbGVt
ZW50SW5mbzplbGVtZW50SW5mby5nZXQoKV07CisgICAgICAgICAgICBwcmV2aWV3Vmlld0NvbnRy
b2xsZXIgPSBhZG9wdE5TKFtbV0tJbWFnZVByZXZpZXdWaWV3Q29udHJvbGxlciBhbGxvY10gaW5p
dFdpdGhDR0ltYWdlOmNnSW1hZ2UgZGVmYXVsdEFjdGlvbnM6ZGVmYXVsdEFjdGlvbnNGcm9tQXNz
aXN0YW50LmdldCgpIGVsZW1lbnRJbmZvOmVsZW1lbnRJbmZvLmdldCgpXSk7CiAgICAgICAgIEFM
TE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCi0gICAgICAgIF9jb250ZXh0TWVudUxl
Z2FjeU1lbnUgPSBtZW51RnJvbUxlZ2FjeVByZXZpZXdPckRlZmF1bHRBY3Rpb25zKHByZXZpZXdW
aWV3Q29udHJvbGxlciwgZGVmYXVsdEFjdGlvbnNGcm9tQXNzaXN0YW50LCBlbGVtZW50SW5mbywg
X3Bvc2l0aW9uSW5mb3JtYXRpb24udGl0bGUpOworICAgICAgICBfY29udGV4dE1lbnVMZWdhY3lN
ZW51ID0gbWVudUZyb21MZWdhY3lQcmV2aWV3T3JEZWZhdWx0QWN0aW9ucyhwcmV2aWV3Vmlld0Nv
bnRyb2xsZXIuZ2V0KCksIGRlZmF1bHRBY3Rpb25zRnJvbUFzc2lzdGFudCwgZWxlbWVudEluZm8s
IF9wb3NpdGlvbkluZm9ybWF0aW9uLnRpdGxlKTsKICAgICB9CiAKLSAgICBfY29udGV4dE1lbnVM
ZWdhY3lQcmV2aWV3Q29udHJvbGxlciA9IHByZXZpZXdWaWV3Q29udHJvbGxlcjsKKyAgICBfY29u
dGV4dE1lbnVMZWdhY3lQcmV2aWV3Q29udHJvbGxlciA9IFdURk1vdmUocHJldmlld1ZpZXdDb250
cm9sbGVyKTsKIH0KIAogLSAoVUlDb250ZXh0TWVudUNvbmZpZ3VyYXRpb24gKiljb250ZXh0TWVu
dUludGVyYWN0aW9uOihVSUNvbnRleHRNZW51SW50ZXJhY3Rpb24gKilpbnRlcmFjdGlvbiBjb25m
aWd1cmF0aW9uRm9yTWVudUF0TG9jYXRpb246KENHUG9pbnQpbG9jYXRpb24KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS01vdXNlRGV2aWNlT2JzZXJ2ZXIubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tNb3VzZURldmljZU9ic2VydmVyLm1tCmluZGV4
IDQ3YTEyNTQ2M2VjYTdkNjg4NWI1YThlZmFjMjFjODliZWJkNGRjMDEuLmRkMDA5MTJhMjM3OGVi
ZmQ1YjBlZTQ3NzY1NzRjZTQ3OTFkMGIxOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS01vdXNlRGV2aWNlT2JzZXJ2ZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLTW91c2VEZXZpY2VPYnNlcnZlci5tbQpAQCAtNDIsMTAgKzQyLDggQEAg
QGltcGxlbWVudGF0aW9uIFdLTW91c2VEZXZpY2VPYnNlcnZlciB7CiAKICsgKFdLTW91c2VEZXZp
Y2VPYnNlcnZlciAqKXNoYXJlZEluc3RhbmNlCiB7Ci0gICAgc3RhdGljIFdLTW91c2VEZXZpY2VP
YnNlcnZlciAqaW5zdGFuY2U7Ci0gICAgaWYgKCFpbnN0YW5jZSkKLSAgICAgICAgaW5zdGFuY2Ug
PSBbW1dLTW91c2VEZXZpY2VPYnNlcnZlciBhbGxvY10gaW5pdF07Ci0gICAgcmV0dXJuIGluc3Rh
bmNlOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8V0tNb3VzZURldmljZU9i
c2VydmVyPj4gaW5zdGFuY2UgPSBhZG9wdE5TKFtbV0tNb3VzZURldmljZU9ic2VydmVyIGFsbG9j
XSBpbml0XSk7CisgICAgcmV0dXJuIGluc3RhbmNlLmdldCgpLmdldCgpOwogfQogCiAtIChpbnN0
YW5jZXR5cGUpaW5pdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
U3R5bHVzRGV2aWNlT2JzZXJ2ZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tT
dHlsdXNEZXZpY2VPYnNlcnZlci5tbQppbmRleCBiODNkYzY4ZTY1M2VjMzE5NjE4ZDE3YTViMGU4
MGQzNmRmNzczNWIxLi40ZDBkMTliZGQ3NGNmMDI4YzdkM2UwN2IxZDhhNTI0NTUwNzFkODBiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tTdHlsdXNEZXZpY2VPYnNl
cnZlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tTdHlsdXNEZXZpY2VP
YnNlcnZlci5tbQpAQCAtNDQsMTAgKzQ0LDggQEAgQGltcGxlbWVudGF0aW9uIFdLU3R5bHVzRGV2
aWNlT2JzZXJ2ZXIgewogCiArIChXS1N0eWx1c0RldmljZU9ic2VydmVyICopc2hhcmVkSW5zdGFu
Y2UKIHsKLSAgICBzdGF0aWMgV0tTdHlsdXNEZXZpY2VPYnNlcnZlciAqaW5zdGFuY2U7Ci0gICAg
aWYgKCFpbnN0YW5jZSkKLSAgICAgICAgaW5zdGFuY2UgPSBbW1dLU3R5bHVzRGV2aWNlT2JzZXJ2
ZXIgYWxsb2NdIGluaXRdOwotICAgIHJldHVybiBpbnN0YW5jZTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8UmV0YWluUHRyPFdLU3R5bHVzRGV2aWNlT2JzZXJ2ZXI+PiBpbnN0YW5jZSA9IGFk
b3B0TlMoW1tXS1N0eWx1c0RldmljZU9ic2VydmVyIGFsbG9jXSBpbml0XSk7CisgICAgcmV0dXJu
IGluc3RhbmNlLmdldCgpLmdldCgpOwogfQogCiAtIChpbnN0YW5jZXR5cGUpaW5pdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLVGV4dElucHV0V2luZG93Q29udHJv
bGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1RleHRJbnB1dFdpbmRvd0Nv
bnRyb2xsZXIubW0KaW5kZXggOWI4MWViY2I1MDBiN2JkYTg0ZWEyMDE3NjQzMGM5NTY3NGZjZDRl
YS4uMzY0MzQ3OGY2ZWFiZGQ1NzE4YmZjNmFkOGI3MmViYzZiMjliOWY5YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLVGV4dElucHV0V2luZG93Q29udHJvbGxlci5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tUZXh0SW5wdXRXaW5kb3dDb250
cm9sbGVyLm1tCkBAIC0xNjQsMTEgKzE2NCw4IEBAIEBpbXBsZW1lbnRhdGlvbiBXS1RleHRJbnB1
dFdpbmRvd0NvbnRyb2xsZXIKIAogKyAoV0tUZXh0SW5wdXRXaW5kb3dDb250cm9sbGVyICopc2hh
cmVkVGV4dElucHV0V2luZG93Q29udHJvbGxlcgogewotICAgIHN0YXRpYyBXS1RleHRJbnB1dFdp
bmRvd0NvbnRyb2xsZXIgKnRleHRJbnB1dFdpbmRvd0NvbnRyb2xsZXI7Ci0gICAgaWYgKCF0ZXh0
SW5wdXRXaW5kb3dDb250cm9sbGVyKQotICAgICAgICB0ZXh0SW5wdXRXaW5kb3dDb250cm9sbGVy
ID0gW1tXS1RleHRJbnB1dFdpbmRvd0NvbnRyb2xsZXIgYWxsb2NdIGluaXRdOwotICAgIAotICAg
IHJldHVybiB0ZXh0SW5wdXRXaW5kb3dDb250cm9sbGVyOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxSZXRhaW5QdHI8V0tUZXh0SW5wdXRXaW5kb3dDb250cm9sbGVyPj4gdGV4dElucHV0V2lu
ZG93Q29udHJvbGxlciA9IGFkb3B0TlMoW1tXS1RleHRJbnB1dFdpbmRvd0NvbnRyb2xsZXIgYWxs
b2NdIGluaXRdKTsKKyAgICByZXR1cm4gdGV4dElucHV0V2luZG93Q29udHJvbGxlci5nZXQoKS5n
ZXQoKTsKIH0KIAogLSAoaWQpaW5pdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1dlYkNvbG9yUGlja2VyTWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1dlYkNvbG9yUGlja2VyTWFjLm1tCmluZGV4IDM5NzFiYWUxM2Y0NGZjMjRmM2I4MjgwYTg5OTZh
ZGI5NzMyZDY2NWYuLjZkYTFmOTY4ZmQ4NTdhYzM1ZWRlYTc3NWEzYzU2ZDJjNzdkZDJmZmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJDb2xvclBpY2tlck1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViQ29sb3JQaWNrZXJNYWMubW0K
QEAgLTEzMiwyMCArMTMyLDIwIEBAIEBpbXBsZW1lbnRhdGlvbiBXS1BvcG92ZXJDb2xvcldlbGwK
IAogKyAoTlNQb3BvdmVyICopX2NvbG9yUG9wb3ZlckNyZWF0ZUlmTmVjZXNzYXJ5OihCT09MKWZv
cmNlQ3JlYXRpb24KIHsKLSAgICBzdGF0aWMgTlNQb3BvdmVyICpjb2xvclBvcG92ZXIgPSBuaWw7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU1BvcG92ZXI+PiBjb2xvclBv
cG92ZXI7CiAgICAgaWYgKGZvcmNlQ3JlYXRpb24pIHsKLSAgICAgICAgTlNQb3BvdmVyICpwb3Bv
dmVyID0gW1tOU1BvcG92ZXIgYWxsb2NdIGluaXRdOworICAgICAgICBhdXRvIHBvcG92ZXIgPSBh
ZG9wdE5TKFtbTlNQb3BvdmVyIGFsbG9jXSBpbml0XSk7CiAgICAgICAgIFtwb3BvdmVyIF9zZXRS
ZXF1aXJlc0NvcnJlY3RDb250ZW50QXBwZWFyYW5jZTpZRVNdOwotICAgICAgICBwb3BvdmVyLmJl
aGF2aW9yID0gTlNQb3BvdmVyQmVoYXZpb3JUcmFuc2llbnQ7CisgICAgICAgIFtwb3BvdmVyIHNl
dEJlaGF2aW9yOk5TUG9wb3ZlckJlaGF2aW9yVHJhbnNpZW50XTsKIAogICAgICAgICBhdXRvIGNv
bnRyb2xsZXIgPSBhZG9wdE5TKFtbTlNDbGFzc0Zyb21TdHJpbmcoQCJOU0NvbG9yUG9wb3ZlckNv
bnRyb2xsZXIiKSBhbGxvY10gaW5pdF0pOwotICAgICAgICBwb3BvdmVyLmNvbnRlbnRWaWV3Q29u
dHJvbGxlciA9IGNvbnRyb2xsZXIuZ2V0KCk7Ci0gICAgICAgIFtjb250cm9sbGVyIHNldFBvcG92
ZXI6cG9wb3Zlcl07CisgICAgICAgIFtwb3BvdmVyIHNldENvbnRlbnRWaWV3Q29udHJvbGxlcjpj
b250cm9sbGVyLmdldCgpXTsKKyAgICAgICAgW2NvbnRyb2xsZXIgc2V0UG9wb3Zlcjpwb3BvdmVy
LmdldCgpXTsKIAotICAgICAgICBjb2xvclBvcG92ZXIgPSBwb3BvdmVyOworICAgICAgICBjb2xv
clBvcG92ZXIuZ2V0KCkgPSBXVEZNb3ZlKHBvcG92ZXIpOwogICAgIH0KIAotICAgIHJldHVybiBj
b2xvclBvcG92ZXI7CisgICAgcmV0dXJuIGNvbG9yUG9wb3Zlci5nZXQoKS5nZXQoKTsKIH0KIAog
LSAoaWQgPFdLUG9wb3ZlckNvbG9yV2VsbERlbGVnYXRlPil3ZWJEZWxlZ2F0ZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9w
ZG93bk1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJEYXRhTGlzdFN1Z2dl
c3Rpb25zRHJvcGRvd25NYWMubW0KaW5kZXggNGQwOTNiYWNmNzVmMjllOTRjMDljODczNDU1NGVj
NWQzNTVhZGNmZS4uZDFhNDBhZTA5NWViZmJjYTkxMjA5NzFhYTk0OWM3OTU0ZDUzODgwOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkRhdGFMaXN0U3VnZ2VzdGlv
bnNEcm9wZG93bk1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViRGF0
YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duTWFjLm1tCkBAIC0xNDIsNyArMTQyLDcgQEAgLSAoaWQp
aW5pdFdpdGhDb250ZW50UmVjdDooTlNSZWN0KWNvbnRlbnRSZWN0IHN0eWxlTWFzazooTlNVSW50
ZWdlcilzdHlsZU1hc2sgYmEKIAogICAgIHNlbGYuaGFzU2hhZG93ID0gWUVTOwogCi0gICAgX2Jh
Y2tkcm9wVmlldyA9IFtbTlNWaXN1YWxFZmZlY3RWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOmNv
bnRlbnRSZWN0XTsKKyAgICBfYmFja2Ryb3BWaWV3ID0gYWRvcHROUyhbW05TVmlzdWFsRWZmZWN0
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpjb250ZW50UmVjdF0pOwogICAgIFtfYmFja2Ryb3BW
aWV3IHNldEF1dG9yZXNpemluZ01hc2s6TlNWaWV3V2lkdGhTaXphYmxlIHwgTlNWaWV3SGVpZ2h0
U2l6YWJsZV07CiAgICAgW19iYWNrZHJvcFZpZXcgc2V0TWF0ZXJpYWw6TlNWaXN1YWxFZmZlY3RN
YXRlcmlhbE1lbnVdOwogICAgIFtfYmFja2Ryb3BWaWV3IHNldFN0YXRlOk5TVmlzdWFsRWZmZWN0
U3RhdGVBY3RpdmVdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9tYWMvV0tET01JbnRlcm5hbHMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTUludGVybmFscy5tbQppbmRleCAyNDg2
N2RmMzYxYTJkZDlmOTMxYzcwYTE3YWNlOTA1MDBiZDdlZjFkLi4zM2FjNWExYTc4ZjY3YjRjZmM3
ODY1MmY0MDEzYWJiMGUzN2ZlMDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTUludGVybmFscy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTUludGVybmFscy5t
bQpAQCAtODQsOSArODQsOSBAQCBzdGF0aWMgQ2xhc3MgV0tET01Ob2RlQ2xhc3MoV2ViQ29yZTo6
Tm9kZSogaW1wbCkKICAgICByZXR1cm4gbmlsOwogfQogCi1zdGF0aWMgV0tET01Ob2RlICppbml0
V2l0aEltcGwoV2ViQ29yZTo6Tm9kZSogaW1wbCkKK3N0YXRpYyBSZXRhaW5QdHI8V0tET01Ob2Rl
PiBpbml0V2l0aEltcGwoV2ViQ29yZTo6Tm9kZSogaW1wbCkKIHsKLSAgICByZXR1cm4gW1tXS0RP
TU5vZGVDbGFzcyhpbXBsKSBhbGxvY10gX2luaXRXaXRoSW1wbDppbXBsXTsKKyAgICByZXR1cm4g
YWRvcHROUyhbW1dLRE9NTm9kZUNsYXNzKGltcGwpIGFsbG9jXSBfaW5pdFdpdGhJbXBsOmltcGxd
KTsKIH0KIAogV2ViQ29yZTo6Tm9kZSogdG9XZWJDb3JlTm9kZShXS0RPTU5vZGUgKndyYXBwZXIp
CkBAIC0xMzEsOSArMTMxLDkgQEAgV0tET01UZXh0ICp0b1dLRE9NVGV4dChXZWJDb3JlOjpUZXh0
KiBpbXBsKQogCiAvLyAtLSBSYW5nZS4gLS0KIAotc3RhdGljIFdLRE9NUmFuZ2UgKmluaXRXaXRo
SW1wbChXZWJDb3JlOjpSYW5nZSogaW1wbCkKK3N0YXRpYyBSZXRhaW5QdHI8V0tET01SYW5nZT4g
aW5pdFdpdGhJbXBsKFdlYkNvcmU6OlJhbmdlKiBpbXBsKQogewotICAgIHJldHVybiBbW1dLRE9N
UmFuZ2UgYWxsb2NdIF9pbml0V2l0aEltcGw6aW1wbF07CisgICAgcmV0dXJuIGFkb3B0TlMoW1tX
S0RPTVJhbmdlIGFsbG9jXSBfaW5pdFdpdGhJbXBsOmltcGxdKTsKIH0KIAogV2ViQ29yZTo6UmFu
Z2UqIHRvV2ViQ29yZVJhbmdlKFdLRE9NUmFuZ2UgKiB3cmFwcGVyKQpAQCAtMTU1LDcgKzE1NSw3
IEBAIHN0YXRpYyBXS0RPTVR5cGUgdG9XS0RPTVR5cGUoV2ViQ29yZVR5cGUgaW1wbCwgRE9NQ2Fj
aGU8V2ViQ29yZVR5cGUsIFdLRE9NVHlwZT4mCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgaWYg
KFdLRE9NVHlwZSB3cmFwcGVyID0gY2FjaGUuZ2V0KGltcGwpKQogICAgICAgICByZXR1cm4gcmV0
YWluUHRyKHdyYXBwZXIpLmF1dG9yZWxlYXNlKCk7Ci0gICAgYXV0byB3cmFwcGVyID0gYWRvcHRO
Uyhpbml0V2l0aEltcGwoaW1wbCkpOworICAgIGF1dG8gd3JhcHBlciA9IGluaXRXaXRoSW1wbChp
bXBsKTsKICAgICBpZiAoIXdyYXBwZXIpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgcmV0dXJu
IHdyYXBwZXIuYXV0b3JlbGVhc2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9tYWMvSW5qZWN0ZWRCdW5kbGVNYWMubW0gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvbWFjL0luamVjdGVkQnVuZGxlTWFjLm1tCmlu
ZGV4IDYyMTAzMDNiZDg3OWU3N2YwOTQ5ZmNhNGNkZTgwNjg2ZjNiYzY2MzIuLjhkMTQwOGVlZjUz
M2ZkYWFiMjI4N2IzNTlmYzU2YTM4YzgxNDNkNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9tYWMvSW5qZWN0ZWRCdW5kbGVNYWMubW0KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL21hYy9JbmplY3RlZEJ1bmRs
ZU1hYy5tbQpAQCAtMjAyLDE0ICsyMDIsMTQgQEAgYm9vbCBJbmplY3RlZEJ1bmRsZTo6aW5pdGlh
bGl6ZShjb25zdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLAogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWQgPFdLV2ViUHJvY2Vzc1BsdWdJbj4g
aW5zdGFuY2UgPSAoaWQgPFdLV2ViUHJvY2Vzc1BsdWdJbj4pWyhOU09iamVjdCAqKVtwcmluY2lw
YWxDbGFzcyBhbGxvY10gaW5pdF07CisgICAgYXV0byBpbnN0YW5jZSA9IGFkb3B0TlMoKGlkIDxX
S1dlYlByb2Nlc3NQbHVnSW4+KVsoTlNPYmplY3QgKilbcHJpbmNpcGFsQ2xhc3MgYWxsb2NdIGlu
aXRdKTsKICAgICBpZiAoIWluc3RhbmNlKSB7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiSW5qZWN0
ZWRCdW5kbGU6OmxvYWQgZmFpbGVkIC0gQ291bGQgbm90IGluaXRpYWxpemUgYW4gaW5zdGFuY2Ug
b2YgdGhlIHByaW5jaXBhbCBjbGFzcy5cbiIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogCiAgICAgV0tXZWJQcm9jZXNzUGx1Z0luQ29udHJvbGxlciogcGx1Z0luQ29udHJvbGxlciA9
IFdlYktpdDo6d3JhcHBlcigqdGhpcyk7Ci0gICAgW3BsdWdJbkNvbnRyb2xsZXIgX3NldFByaW5j
aXBhbENsYXNzSW5zdGFuY2U6aW5zdGFuY2VdOworICAgIFtwbHVnSW5Db250cm9sbGVyIF9zZXRQ
cmluY2lwYWxDbGFzc0luc3RhbmNlOmluc3RhbmNlLmdldCgpXTsKIAogICAgIGlmIChbaW5zdGFu
Y2UgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihhZGRpdGlvbmFsQ2xhc3Nlc0ZvclBhcmFt
ZXRlckNvZGVyKV0pCiAgICAgICAgIFtwbHVnSW5Db250cm9sbGVyIGV4dGVuZENsYXNzZXNGb3JQ
YXJhbWV0ZXJDb2RlcjpbaW5zdGFuY2UgYWRkaXRpb25hbENsYXNzZXNGb3JQYXJhbWV0ZXJDb2Rl
cl1dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvTWlzYy9XZWJHZW9sb2Nh
dGlvblByb3ZpZGVySU9TLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvTWlzYy9XZWJHZW9s
b2NhdGlvblByb3ZpZGVySU9TLm1tCmluZGV4IDYxYmNhYzI2NjJkZTA5ZmY2ZDU4NTU3NjlmNTk0
MDM5MmJjNWZjM2EuLmRlN2U0MzlmYjlkNWVmYTRiNjE4MTIwMWUyMWI3NzgwNjkxNGY5YTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL01pc2MvV2ViR2VvbG9jYXRpb25Qcm92
aWRlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9NaXNjL1dlYkdlb2xvY2F0
aW9uUHJvdmlkZXJJT1MubW0KQEAgLTk4LDExICs5OCwxMSBAQCAtICh2b2lkKWRlYWxsb2MKICsg
KFdlYkdlb2xvY2F0aW9uUHJvdmlkZXJJT1MgKilzaGFyZWRHZW9sb2NhdGlvblByb3ZpZGVyCiB7
CiAgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlOwotICAgIHN0YXRpYyBXZWJHZW9sb2Nh
dGlvblByb3ZpZGVySU9TICpzaGFyZWRHZW9sb2NhdGlvblByb3ZpZGVyOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8V2ViR2VvbG9jYXRpb25Qcm92aWRlcklPUz4+IHNoYXJl
ZEdlb2xvY2F0aW9uUHJvdmlkZXI7CiAgICAgZGlzcGF0Y2hfb25jZSgmb25jZSwgXnsKLSAgICAg
ICAgc2hhcmVkR2VvbG9jYXRpb25Qcm92aWRlciA9IFtbV2ViR2VvbG9jYXRpb25Qcm92aWRlcklP
UyBhbGxvY10gaW5pdF07CisgICAgICAgIHNoYXJlZEdlb2xvY2F0aW9uUHJvdmlkZXIuZ2V0KCkg
PSBhZG9wdE5TKFtbV2ViR2VvbG9jYXRpb25Qcm92aWRlcklPUyBhbGxvY10gaW5pdF0pOwogICAg
IH0pOwotICAgIHJldHVybiBzaGFyZWRHZW9sb2NhdGlvblByb3ZpZGVyOworICAgIHJldHVybiBz
aGFyZWRHZW9sb2NhdGlvblByb3ZpZGVyLmdldCgpLmdldCgpOwogfQogCiAtICh2b2lkKXN1c3Bl
bmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RlZmF1bHREZWxlZ2F0ZXMv
V2ViRGVmYXVsdFVJRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9EZWZhdWx0
RGVsZWdhdGVzL1dlYkRlZmF1bHRVSURlbGVnYXRlLm1tCmluZGV4IGRiZWNlZDU2NDk2N2JmZjFj
ZTU4ZTJkNGY5MDBkZjRhYTY0MmUyNmQuLjE1ZTEwYzYwNTMyYTFmNWYwZWZkNGM5ZmM2MjJhMTYw
OTg5Njk1ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RlZmF1bHREZWxl
Z2F0ZXMvV2ViRGVmYXVsdFVJRGVsZWdhdGUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRGVmYXVsdERlbGVnYXRlcy9XZWJEZWZhdWx0VUlEZWxlZ2F0ZS5tbQpAQCAtMzEsNiArMzEs
NyBAQAogI2ltcG9ydCAiV2ViVHlwZXNJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViVUlEZWxlZ2F0
ZVByaXZhdGUuaCIKICNpbXBvcnQgIldlYlZpZXcuaCIKKyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiAjaWYgUExBVEZPUk0oTUFDKQpA
QCAtNTEsOCArNTIsNiBAQCBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJEZWZhdWx0VUlEZWxl
Z2F0ZQogCi1zdGF0aWMgV2ViRGVmYXVsdFVJRGVsZWdhdGUgKnNoYXJlZERlbGVnYXRlID0gbmls
OwotCiAvLyBSZXR1cm4gYSBvYmplY3Qgd2l0aCB2YW5pbGxhIGltcGxlbWVudGF0aW9ucyBvZiB0
aGUgcHJvdG9jb2wncyBtZXRob2RzCiAvLyBOb3RlIHRoaXMgZmVhdHVyZSByZWxpZXMgb24gb3Vy
IGRlZmF1bHQgZGVsZWdhdGUgYmVpbmcgc3RhdGVsZXNzLiBUaGlzCiAvLyBpcyBwcm9iYWJseSBh
biBpbnZhbGlkIGFzc3VtcHRpb24gZm9yIHRoZSBXZWJVSURlbGVnYXRlLgpAQCAtNjAsOSArNTks
OCBAQCBzdGF0aWMgV2ViRGVmYXVsdFVJRGVsZWdhdGUgKnNoYXJlZERlbGVnYXRlID0gbmlsOwog
Ly8gd29uJ3QgYmUgYWJsZSB0byB1c2UgYSBzaW5nbGV0b24uCiArIChXZWJEZWZhdWx0VUlEZWxl
Z2F0ZSAqKXNoYXJlZFVJRGVsZWdhdGUKIHsKLSAgICBpZiAoIXNoYXJlZERlbGVnYXRlKQotICAg
ICAgICBzaGFyZWREZWxlZ2F0ZSA9IFtbV2ViRGVmYXVsdFVJRGVsZWdhdGUgYWxsb2NdIGluaXRd
OwotICAgIHJldHVybiBzaGFyZWREZWxlZ2F0ZTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
UmV0YWluUHRyPFdlYkRlZmF1bHRVSURlbGVnYXRlPj4gc2hhcmVkRGVsZWdhdGUgPSBhZG9wdE5T
KFtbV2ViRGVmYXVsdFVJRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICByZXR1cm4gc2hhcmVk
RGVsZWdhdGUuZ2V0KCkuZ2V0KCk7CiB9CiAKIC0gKFdlYlZpZXcgKil3ZWJWaWV3OiAoV2ViVmll
dyAqKXd2IGNyZWF0ZVdlYlZpZXdXaXRoUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCB3
aW5kb3dGZWF0dXJlczooTlNEaWN0aW9uYXJ5ICopZmVhdHVyZXMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tCmluZGV4IDgxMGY2N2I3YTg1
OGNmN2JhZDgwODUyMjBjZjg5YmRjM2QyMTBhNmQuLjM1Njk3OTY5ZDQ4MDYwNzdjZmY4M2UyMDA2
NjMzOTFmNGVlYWU5NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3Rv
cnkvV2ViSGlzdG9yeUl0ZW0ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9y
eS9XZWJIaXN0b3J5SXRlbS5tbQpAQCAtMTYxLDEzICsxNjEsMTMgQEAgLSAodm9pZClkZWFsbG9j
CiAtIChpZCljb3B5V2l0aFpvbmU6KE5TWm9uZSAqKXpvbmUKIHsKICAgICBXZWJDb3JlVGhyZWFk
VmlvbGF0aW9uQ2hlY2tSb3VuZE9uZSgpOwotICAgIFdlYkhpc3RvcnlJdGVtICpjb3B5ID0gW1tb
c2VsZiBjbGFzc10gYWxsb2NdIGluaXRXaXRoV2ViQ29yZUhpc3RvcnlJdGVtOmNvcmUoX3ByaXZh
dGUpLT5jb3B5KCldOworICAgIFJldGFpblB0cjxXZWJIaXN0b3J5SXRlbT4gY29weSA9IGFkb3B0
TlMoW1tbc2VsZiBjbGFzc10gYWxsb2NdIGluaXRXaXRoV2ViQ29yZUhpc3RvcnlJdGVtOmNvcmUo
X3ByaXZhdGUpLT5jb3B5KCldKTsKIAogICAgIGNvcHktPl9wcml2YXRlLT5fbGFzdFZpc2l0ZWRU
aW1lID0gX3ByaXZhdGUtPl9sYXN0VmlzaXRlZFRpbWU7CiAKLSAgICBoaXN0b3J5SXRlbVdyYXBw
ZXJzKCkuc2V0KGNvcmUoY29weS0+X3ByaXZhdGUpLCBjb3B5KTsKKyAgICBoaXN0b3J5SXRlbVdy
YXBwZXJzKCkuc2V0KGNvcmUoY29weS0+X3ByaXZhdGUpLCBjb3B5LmdldCgpKTsKIAotICAgIHJl
dHVybiBjb3B5OworICAgIHJldHVybiBjb3B5LmxlYWtSZWYoKTsKIH0KIAogLy8gRklYTUU6IE5l
ZWQgdG8gZGVjaWRlIGlmIHRoaXMgY2xhc3MgZXZlciByZXR1cm5zIFVSTHMgYW5kIGRlY2lkZSBv
biB0aGUgbmFtZSBvZiB0aGlzIG1ldGhvZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvTWlzYy9XZWJJY29uRGF0YWJhc2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9N
aXNjL1dlYkljb25EYXRhYmFzZS5tbQppbmRleCA1OTQ1MWFkY2ViZDYwZGMwMjlkOGRiY2YzYWQ2
MTQxNTMyZGRiNzY2Li43ZWE2NzM3OTRmNzc4ZDhhOWQ5NTBjYWM0ZGVjNDA2ZTVlZmM1ZDJhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYkljb25EYXRhYmFzZS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYkljb25EYXRhYmFzZS5tbQpA
QCAtMTA1LDE2ICsxMDUsMTYgQEAgKyAodm9pZClpbml0aWFsaXplCiAKICsgKFdlYkljb25EYXRh
YmFzZSAqKXNoYXJlZEljb25EYXRhYmFzZQogewotICAgIHN0YXRpYyBXZWJJY29uRGF0YWJhc2Ug
KmRhdGFiYXNlOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8V2ViSWNvbkRh
dGFiYXNlPj4gZGF0YWJhc2U7CiAgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlOwogICAg
IGRpc3BhdGNoX29uY2UoJm9uY2UsIF4gewogICAgICAgICBpZiAobGlua2VkT25PckFmdGVyKFdl
YkNvcmU6OlNES1ZlcnNpb246OkZpcnN0V2l0aFdlYkljb25EYXRhYmFzZVdhcm5pbmcpKQogICAg
ICAgICAgICAgTlNMb2coQCIrW1dlYkljb25EYXRhYmFzZSBzaGFyZWRJY29uRGF0YWJhc2VdIGlz
IG5vdCBBUEkgYW5kIHNob3VsZCBub3QgYmUgdXNlZC4gV2ViSWNvbkRhdGFiYXNlIG5vIGxvbmdl
ciBoYW5kbGVzIGljb24gbG9hZGluZyBhbmQgaXQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJl
IHJlbGVhc2UuIik7CiAKLSAgICAgICAgZGF0YWJhc2UgPSBbW1dlYkljb25EYXRhYmFzZSBhbGxv
Y10gaW5pdF07CisgICAgICAgIGRhdGFiYXNlLmdldCgpID0gYWRvcHROUyhbW1dlYkljb25EYXRh
YmFzZSBhbGxvY10gaW5pdF0pOwogICAgIH0pOwogCi0gICAgcmV0dXJuIGRhdGFiYXNlOworICAg
IHJldHVybiBkYXRhYmFzZS5nZXQoKS5nZXQoKTsKIH0KIAogLSAoaWQpaW5pdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU1Bhc3RlYm9hcmRFeHRyYXMubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TUGFzdGVib2FyZEV4dHJhcy5tbQpp
bmRleCBkOTYwZDE4Y2MwZWQyZWVjZDBmOTBjODQ1YWUwNWNkNzRlZmJkNzBjLi5mZTZhNTc3NzMw
OWExMGMyOTI4MDRhZjI2MjBhNzBkOWM3NjdjYTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9NaXNjL1dlYk5TUGFzdGVib2FyZEV4dHJhcy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TUGFzdGVib2FyZEV4dHJhcy5tbQpAQCAtNzEsMTcgKzcx
LDE0IEBAICsgKE5TQXJyYXkgKilfd2ViX3dyaXRhYmxlVHlwZXNGb3JVUkwKICAgICByZXR1cm4g
dHlwZXM7CiB9CiAKLXN0YXRpYyBpbmxpbmUgTlNBcnJheSAqX2NyZWF0ZVdyaXRhYmxlVHlwZXNG
b3JJbWFnZVdpdGhvdXRBcmNoaXZlKCkKLXsKLSAgICBOU011dGFibGVBcnJheSAqdHlwZXMgPSBb
W05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6bGVnYWN5VElGRlBhc3RlYm9h
cmRUeXBlKCksIG5pbF07Ci0gICAgW3R5cGVzIGFkZE9iamVjdHNGcm9tQXJyYXk6W05TUGFzdGVi
b2FyZCBfd2ViX3dyaXRhYmxlVHlwZXNGb3JVUkxdXTsKLSAgICByZXR1cm4gdHlwZXM7Ci19Ci0K
IHN0YXRpYyBOU0FycmF5ICpfd3JpdGFibGVUeXBlc0ZvckltYWdlV2l0aG91dEFyY2hpdmUgKHZv
aWQpCiB7Ci0gICAgc3RhdGljIE5TQXJyYXkgKnR5cGVzID0gX2NyZWF0ZVdyaXRhYmxlVHlwZXNG
b3JJbWFnZVdpdGhvdXRBcmNoaXZlKCk7Ci0gICAgcmV0dXJuIHR5cGVzOworICAgIHN0YXRpYyBh
dXRvIHR5cGVzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICAgICAgYXV0byB0eXBlcyA9
IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOmxlZ2FjeVRJ
RkZQYXN0ZWJvYXJkVHlwZSgpLCBuaWxdKTsKKyAgICAgICAgW3R5cGVzIGFkZE9iamVjdHNGcm9t
QXJyYXk6W05TUGFzdGVib2FyZCBfd2ViX3dyaXRhYmxlVHlwZXNGb3JVUkxdXTsKKyAgICAgICAg
cmV0dXJuIHR5cGVzOworICAgIH0oKSk7CisgICAgcmV0dXJuIHR5cGVzLmdldCgpLmdldCgpOwog
fQogCiBzdGF0aWMgaW5saW5lIE5TQXJyYXkgKl9jcmVhdGVXcml0YWJsZVR5cGVzRm9ySW1hZ2VX
aXRoQXJjaGl2ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5z
L1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9Q
bHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcubW0KaW5kZXggMmRkYTdiNjM5M2NlY2Nk
YzljODEyYzYzODM5MTg4ZDZhNDM1ZDE0OC4uNjNiODRiMjM0NGQxOGI1MjUwYmUwY2QyZWZlZDZi
YTJjM2QwOWU2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9X
ZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5tbQpAQCAtNDM0LDcgKzQzNCw3IEBA
IC0gKHZvaWQpY2FjaGVTbmFwc2hvdAogICAgIGlmICghYm91bmRzU2l6ZS5oZWlnaHQgfHwgIWJv
dW5kc1NpemUud2lkdGgpCiAgICAgICAgIHJldHVybjsKIAotICAgIE5TSW1hZ2UgKnNuYXBzaG90
ID0gW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aFNpemU6Ym91bmRzU2l6ZV07CisgICAgYXV0byBz
bmFwc2hvdCA9IGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aFNpemU6Ym91bmRzU2l6
ZV0pOwogICAgICAgICAKICAgICBfc25hcHNob3R0aW5nID0gWUVTOwogICAgIFtzbmFwc2hvdCBs
b2NrRm9jdXNdOwpAQCAtNDQyLDcgKzQ0Miw3IEBAIC0gKHZvaWQpY2FjaGVTbmFwc2hvdAogICAg
IFtzbmFwc2hvdCB1bmxvY2tGb2N1c107CiAgICAgX3NuYXBzaG90dGluZyA9IE5POwogICAgIAot
ICAgIF9jYWNoZWRTbmFwc2hvdCA9IGFkb3B0TlMoc25hcHNob3QpOworICAgIF9jYWNoZWRTbmFw
c2hvdCA9IFdURk1vdmUoc25hcHNob3QpOwogfQogCiAtICh2b2lkKWNsZWFyQ2FjaGVkU25hcHNo
b3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2Nh
cGVQbHVnaW5TdHJlYW0ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5l
dHNjYXBlUGx1Z2luU3RyZWFtLm1tCmluZGV4IDU1NjNkMDliZDU2YzBiMjZlNmQ5MWQwN2ZjZDc1
OGRmMTgwZjBjMGMuLmY4ODkwZDA1MTZiMjEyYWNmZTc2OTY2NDI1ZGU1NDQxMDRjOWE2OTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVn
aW5TdHJlYW0ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRz
Y2FwZVBsdWdpblN0cmVhbS5tbQpAQCAtNTQ4LDEwICs1NDgsMTAgQEAgdm9pZCBXZWJOZXRzY2Fw
ZVBsdWdpblN0cmVhbTo6ZGVsaXZlckRhdGEoKQogCiAgICAgaWYgKHRvdGFsQnl0ZXNEZWxpdmVy
ZWQgPiAwKSB7CiAgICAgICAgIGlmICh0b3RhbEJ5dGVzRGVsaXZlcmVkIDwgdG90YWxCeXRlcykg
ewotICAgICAgICAgICAgTlNNdXRhYmxlRGF0YSAqbmV3RGVsaXZlcnlEYXRhID0gW1tOU011dGFi
bGVEYXRhIGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OnRvdGFsQnl0ZXMgLSB0b3RhbEJ5dGVzRGVs
aXZlcmVkXTsKKyAgICAgICAgICAgIGF1dG8gbmV3RGVsaXZlcnlEYXRhID0gYWRvcHROUyhbW05T
TXV0YWJsZURhdGEgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6dG90YWxCeXRlcyAtIHRvdGFsQnl0
ZXNEZWxpdmVyZWRdKTsKICAgICAgICAgICAgIFtuZXdEZWxpdmVyeURhdGEgYXBwZW5kQnl0ZXM6
c3RhdGljX2Nhc3Q8Y2hhcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KFttX2RlbGl2ZXJ5RGF0YS5nZXQo
KSBieXRlc10pKSArIHRvdGFsQnl0ZXNEZWxpdmVyZWQgbGVuZ3RoOnRvdGFsQnl0ZXMgLSB0b3Rh
bEJ5dGVzRGVsaXZlcmVkXTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgbV9kZWxpdmVyeURh
dGEgPSBhZG9wdE5TKG5ld0RlbGl2ZXJ5RGF0YSk7CisgICAgICAgICAgICBtX2RlbGl2ZXJ5RGF0
YSA9IFdURk1vdmUobmV3RGVsaXZlcnlEYXRhKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgIFttX2RlbGl2ZXJ5RGF0YS5nZXQoKSBzZXRMZW5ndGg6MF07CiAgICAgICAgICAgICBpZiAo
bV9yZWFzb24gIT0gV0VCX1JFQVNPTl9OT05FKSAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1BsdWdpbnMvV2ViUGx1Z2luQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1BsdWdpbnMvV2ViUGx1Z2luQ29udHJvbGxlci5tbQppbmRleCA3YjgyZGVmMDZh
ZjBjMTA5ZTI3ODA4ZjJjZjdiNTBmMTFlY2IwZDI5Li5iOGI0YjFkMzkyNTIyYjFmMzNlN2E4NGU1
NjlmNWMyYTFkYmIxODI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVn
aW5zL1dlYlBsdWdpbkNvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
UGx1Z2lucy9XZWJQbHVnaW5Db250cm9sbGVyLm1tCkBAIC05OCw3ICs5OCwxMSBAQCBzdGF0aWMg
dm9pZCBpbnN0YWxsRmxpcDRNYWNQbHVnSW5Xb3JrYXJvdW5kSWZOZWNlc3NhcnkoKTsKICNlbmRp
ZgogCiAKLXN0YXRpYyBOU011dGFibGVTZXQgKnBsdWdpblZpZXdzID0gbmlsOworc3RhdGljIFJl
dGFpblB0cjxOU011dGFibGVTZXQ+JiBwbHVnaW5WaWV3cygpCit7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFJldGFpblB0cjxOU011dGFibGVTZXQ+PiBfcGx1Z2luVmlld3M7CisgICAgcmV0
dXJuIF9wbHVnaW5WaWV3czsKK30KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBzdGF0aWMg
dm9pZCBpbml0aWFsaXplQXVkaW9TZXNzaW9uKCkKQEAgLTE0OCwxMCArMTUyLDEwIEBAIC0gKE5T
VmlldyAqKXBsdWdJblZpZXdXaXRoQXJndW1lbnRzOihOU0RpY3Rpb25hcnkgKilhcmd1bWVudHMg
ZnJvbVBsdWdpblBhY2thZ2U6CiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgfQogICAgIAotICAg
IGlmIChwbHVnaW5WaWV3cyA9PSBuaWwpIHsKLSAgICAgICAgcGx1Z2luVmlld3MgPSBbW05TTXV0
YWJsZVNldCBhbGxvY10gaW5pdF07Ci0gICAgfQotICAgIFtwbHVnaW5WaWV3cyBhZGRPYmplY3Q6
dmlld107CisgICAgYXV0byYgdmlld3MgPSBwbHVnaW5WaWV3cygpOworICAgIGlmICghdmlld3Mp
CisgICAgICAgIHZpZXdzID0gYWRvcHROUyhbW05TTXV0YWJsZVNldCBhbGxvY10gaW5pdF0pOwor
ICAgIFt2aWV3cyBhZGRPYmplY3Q6dmlld107CiAKICAgICByZXR1cm4gdmlldzsKIH0KQEAgLTE1
OSwxOCArMTYzLDE5IEBAIC0gKE5TVmlldyAqKXBsdWdJblZpZXdXaXRoQXJndW1lbnRzOihOU0Rp
Y3Rpb25hcnkgKilhcmd1bWVudHMgZnJvbVBsdWdpblBhY2thZ2U6CiAjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICsgKHZvaWQpYWRkUGx1Z0luVmlldzooTlNWaWV3ICopdmlldwogewotICAgIGlm
IChwbHVnaW5WaWV3cyA9PSBuaWwpCi0gICAgICAgIHBsdWdpblZpZXdzID0gW1tOU011dGFibGVT
ZXQgYWxsb2NdIGluaXRdOworICAgIGF1dG8mIHZpZXdzID0gcGx1Z2luVmlld3MoKTsKKyAgICBp
ZiAoIXZpZXdzKQorICAgICAgICB2aWV3cyA9IGFkb3B0TlMoW1tOU011dGFibGVTZXQgYWxsb2Nd
IGluaXRdKTsKIAogICAgIEFTU0VSVCh2aWV3KTsKICAgICBpZiAodmlldykKLSAgICAgICAgW3Bs
dWdpblZpZXdzIGFkZE9iamVjdDp2aWV3XTsKKyAgICAgICAgW3ZpZXdzIGFkZE9iamVjdDp2aWV3
XTsKIH0KICNlbmRpZgogCiArIChCT09MKWlzUGx1Z0luVmlldzooTlNWaWV3ICopdmlldwogewot
ICAgIHJldHVybiBbcGx1Z2luVmlld3MgY29udGFpbnNPYmplY3Q6dmlld107CisgICAgcmV0dXJu
IFtwbHVnaW5WaWV3cygpIGNvbnRhaW5zT2JqZWN0OnZpZXddOwogfQogCiAtIChpZClpbml0V2l0
aERvY3VtZW50VmlldzooTlNWaWV3ICopdmlldwpAQCAtMzg1LDcgKzM5MCw3IEBAIC0gKHZvaWQp
ZGVzdHJveVBsdWdpbjooTlNWaWV3ICopdmlldwogICAgICAgICAgICAgZnJhbWUtPnNjcmlwdCgp
LmNsZWFudXBTY3JpcHRPYmplY3RzRm9yUGx1Z2luKHNlbGYpOwogI2VuZGlmCiAgICAgICAgIAot
ICAgICAgICBbcGx1Z2luVmlld3MgcmVtb3ZlT2JqZWN0OnZpZXddOworICAgICAgICBbcGx1Z2lu
Vmlld3MoKSByZW1vdmVPYmplY3Q6dmlld107CiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgICAgIFtbX2RvY3VtZW50VmlldyBfd2ViVmlld10gcmVtb3ZlUGx1Z2luSW5zdGFuY2VWaWV3
OnZpZXddOwogI2VuZGlmCkBAIC00MzMsNyArNDM4LDcgQEAgLSAodm9pZClkZXN0cm95QWxsUGx1
Z2lucwogICAgICAgICAgICAgZnJhbWUtPnNjcmlwdCgpLmNsZWFudXBTY3JpcHRPYmplY3RzRm9y
UGx1Z2luKHNlbGYpOwogI2VuZGlmCiAgICAgICAgIAotICAgICAgICBbcGx1Z2luVmlld3MgcmVt
b3ZlT2JqZWN0OmFWaWV3XTsKKyAgICAgICAgW3BsdWdpblZpZXdzKCkgcmVtb3ZlT2JqZWN0OmFW
aWV3XTsKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgW1tfZG9jdW1lbnRWaWV3
IF93ZWJWaWV3XSByZW1vdmVQbHVnaW5JbnN0YW5jZVZpZXc6YVZpZXddOwogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYlBsdWdpbkRhdGFiYXNl
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJQbHVnaW5EYXRhYmFzZS5t
bQppbmRleCBiNTljZTRiY2RmOGE1MzcxYzIxZjZmMGYzMzgxZWVmM2UwZDdmZTgzLi5lODM2OGY5
ZmFhYmFiOTIyMTIxNjdhMTU0YjJhMjA4ZTA1MTYwZmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYlBsdWdpbkRhdGFiYXNlLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViUGx1Z2luRGF0YWJhc2UubW0KQEAgLTYxLDI3ICs2
MSwzMiBAQCBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJQbHVnaW5EYXRhYmFzZQogCi1zdGF0
aWMgV2ViUGx1Z2luRGF0YWJhc2UgKnNoYXJlZERhdGFiYXNlID0gbmlsOworc3RhdGljIFJldGFp
blB0cjxXZWJQbHVnaW5EYXRhYmFzZT4mIHNoYXJlZERhdGFiYXNlKCkKK3sKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPFdlYlBsdWdpbkRhdGFiYXNlPj4gX3NoYXJlZERhdGFi
YXNlOworICAgIHJldHVybiBfc2hhcmVkRGF0YWJhc2U7Cit9CiAKICsgKFdlYlBsdWdpbkRhdGFi
YXNlICopc2hhcmVkRGF0YWJhc2UgCiB7Ci0gICAgaWYgKCFzaGFyZWREYXRhYmFzZSkgewotICAg
ICAgICBzaGFyZWREYXRhYmFzZSA9IFtbV2ViUGx1Z2luRGF0YWJhc2UgYWxsb2NdIGluaXRdOwot
ICAgICAgICBbc2hhcmVkRGF0YWJhc2Ugc2V0UGx1Z0luUGF0aHM6W3NlbGYgX2RlZmF1bHRQbHVn
SW5QYXRoc11dOwotICAgICAgICBbc2hhcmVkRGF0YWJhc2UgcmVmcmVzaF07CisgICAgYXV0byYg
ZGF0YWJhc2UgPSBzaGFyZWREYXRhYmFzZSgpOworICAgIGlmICghZGF0YWJhc2UpIHsKKyAgICAg
ICAgZGF0YWJhc2UgPSBhZG9wdE5TKFtbV2ViUGx1Z2luRGF0YWJhc2UgYWxsb2NdIGluaXRdKTsK
KyAgICAgICAgW2RhdGFiYXNlIHNldFBsdWdJblBhdGhzOltzZWxmIF9kZWZhdWx0UGx1Z0luUGF0
aHNdXTsKKyAgICAgICAgW2RhdGFiYXNlIHJlZnJlc2hdOwogICAgIH0KICAgICAKLSAgICByZXR1
cm4gc2hhcmVkRGF0YWJhc2U7CisgICAgcmV0dXJuIGRhdGFiYXNlLmdldCgpOwogfQogCiArIChX
ZWJQbHVnaW5EYXRhYmFzZSAqKXNoYXJlZERhdGFiYXNlSWZFeGlzdHMKIHsKLSAgICByZXR1cm4g
c2hhcmVkRGF0YWJhc2U7CisgICAgcmV0dXJuIHNoYXJlZERhdGFiYXNlKCkuZ2V0KCk7CiB9CiAK
ICsgKHZvaWQpY2xvc2VTaGFyZWREYXRhYmFzZSAKIHsKLSAgICBbc2hhcmVkRGF0YWJhc2UgY2xv
c2VdOworICAgIFtzaGFyZWREYXRhYmFzZSgpIGNsb3NlXTsKIH0KIAogc3RhdGljIHZvaWQgY2hl
Y2tDYW5kaWRhdGUoV2ViQmFzZVBsdWdpblBhY2thZ2UgKiBfX3N0cm9uZyAqY3VycmVudFBsdWdp
biwgV2ViQmFzZVBsdWdpblBhY2thZ2UgKiBfX3N0cm9uZyAqY2FuZGlkYXRlUGx1Z2luKQpAQCAt
MzE4LDcgKzMyMyw3IEBAIC0gKHZvaWQpcmVmcmVzaAogICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAoc2VsZiA9PSBzaGFyZWREYXRhYmFz
ZSkKKyAgICAgICAgICAgIGlmIChzZWxmID09IHNoYXJlZERhdGFiYXNlKCkpCiAgICAgICAgICAg
ICAgICAgW1dlYlZpZXcgX3JlZ2lzdGVyUGx1Z2luTUlNRVR5cGU6TUlNRVR5cGVdOwogICAgICAg
ICB9CiAgICAgfQpAQCAtNDE0LDcgKzQxOSw3IEBAICsgKE5TQXJyYXkgKilfZGVmYXVsdFBsdWdJ
blBhdGhzCiAKIC0gKE5TQXJyYXkgKilfcGx1Z0luUGF0aHMKIHsKLSAgICBpZiAoc2VsZiA9PSBz
aGFyZWREYXRhYmFzZSAmJiBhZGRpdGlvbmFsV2ViUGx1Z0luUGF0aHMoKSkgeworICAgIGlmIChz
ZWxmID09IHNoYXJlZERhdGFiYXNlKCkgJiYgYWRkaXRpb25hbFdlYlBsdWdJblBhdGhzKCkpIHsK
ICAgICAgICAgLy8gQWRkIGFkZGl0aW9uYWxXZWJQbHVnSW5QYXRocyB0byB0aGUgZ2xvYmFsIFdl
YlBsdWdpbkRhdGFiYXNlLiAgV2UgZG8gdGhpcyBoZXJlIGZvcgogICAgICAgICAvLyBiYWNrd2Fy
ZCBjb21wYXRpYmlsaXR5IHdpdGggZWFybGllciB2ZXJzaW9ucyBvZiB0aGUgK3NldEFkZGl0aW9u
YWxXZWJQbHVnSW5QYXRoczogU1BJLAogICAgICAgICAvLyB3aGljaCBzaW1wbHkgc2F2ZWQgYSBj
b3B5IG9mIHRoZSBhZGRpdGlvbmFsIHBhdGhzIGFuZCBkaWQgbm90IGNhdXNlIHRoZSBwbHVnaW4g
REIgdG8gCkBAIC00NDUsNyArNDUwLDcgQEAgLSAodm9pZClfcmVtb3ZlUGx1Z2luOihXZWJCYXNl
UGx1Z2luUGFja2FnZSAqKXBsdWdpbgogICAgICAgICBOU1N0cmluZyAqTUlNRVR5cGUgPSBwbHVn
aW5JbmZvLm1pbWVzW2ldLnR5cGU7CiAKICAgICAgICAgaWYgKFtyZWdpc3RlcmVkTUlNRVR5cGVz
IGNvbnRhaW5zT2JqZWN0Ok1JTUVUeXBlXSkgewotICAgICAgICAgICAgaWYgKHNlbGYgPT0gc2hh
cmVkRGF0YWJhc2UpCisgICAgICAgICAgICBpZiAoc2VsZiA9PSBzaGFyZWREYXRhYmFzZSgpKQog
ICAgICAgICAgICAgICAgIFtXZWJWaWV3IF91bnJlZ2lzdGVyUGx1Z2luTUlNRVR5cGU6TUlNRVR5
cGVdOwogICAgICAgICAgICAgW3JlZ2lzdGVyZWRNSU1FVHlwZXMgcmVtb3ZlT2JqZWN0Ok1JTUVU
eXBlXTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU2Ny
aXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbEZlYXR1
cmVzLm1tLmVyYiBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1NjcmlwdHMvUHJlZmVyZW5jZXNU
ZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWxGZWF0dXJlcy5tbS5lcmIKaW5kZXgg
MjIzOWM3NjM4ZGNjODMxMjlkNWZhYTg1ZDQ3NDYxMTk5ZDY5MWE4OC4uYWIxZWQyNGNjNDE3NTYw
ZmVhNmRkODUwNDJkZDkyNzU4YWY0OGM2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1l
bnRhbEZlYXR1cmVzLm1tLmVyYgorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TY3JpcHRz
L1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsRmVhdHVyZXMu
bW0uZXJiCkBAIC0yOSw2ICsyOSw4IEBACiAKICNpbXBvcnQgIldlYkZlYXR1cmVJbnRlcm5hbC5o
IgogI2ltcG9ydCAiV2ViUHJlZmVyZW5jZXNEZWZpbml0aW9ucy5oIgorI2ltcG9ydCA8d3RmL05l
dmVyRGVzdHJveWVkLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJLaXQ7CiAKQEAgLTM2LDE5ICszOCwxOSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0
OwogCiArIChOU0FycmF5PFdlYkZlYXR1cmUgKj4gKilfZXhwZXJpbWVudGFsRmVhdHVyZXMKIHsK
LSAgICBzdGF0aWMgTlNBcnJheTxXZWJGZWF0dXJlICo+ICpmZWF0dXJlcyA9IEBbCisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0FycmF5PFdlYkZlYXR1cmUgKj4+PiBmZWF0
dXJlcyA9IEBbCiA8JS0gZm9yIEBwcmVmIGluIEBleHBvc2VkRXhwZXJpbWVudGFsRmVhdHVyZXMg
ZG8gLSU+CiA8JS0gaWYgQHByZWYuY29uZGl0aW9uIC0lPgogI2lmIDwlPSBAcHJlZi5jb25kaXRp
b24gJT4KIDwlLSBlbmQgLSU+Ci0gICAgICAgIFtbV2ViRmVhdHVyZSBhbGxvY10gaW5pdFdpdGhL
ZXk6QCI8JT0gQHByZWYubmFtZSAlPiIgcHJlZmVyZW5jZUtleTpAIjwlPSBAcHJlZi5wcmVmZXJl
bmNlS2V5ICU+IiBuYW1lOkA8JT0gQHByZWYuaHVtYW5SZWFkYWJsZU5hbWUgJT4gZGV0YWlsczpA
PCU9IEBwcmVmLmh1bWFuUmVhZGFibGVEZXNjcmlwdGlvbiAlPiBkZWZhdWx0VmFsdWU6REVGQVVM
VF9WQUxVRV9GT1JfPCU9IEBwcmVmLm5hbWUgJT4gaGlkZGVuOjwlPSBAcHJlZi5oaWRkZW4gJT5d
LAorICAgICAgICBhZG9wdE5TKFtbV2ViRmVhdHVyZSBhbGxvY10gaW5pdFdpdGhLZXk6QCI8JT0g
QHByZWYubmFtZSAlPiIgcHJlZmVyZW5jZUtleTpAIjwlPSBAcHJlZi5wcmVmZXJlbmNlS2V5ICU+
IiBuYW1lOkA8JT0gQHByZWYuaHVtYW5SZWFkYWJsZU5hbWUgJT4gZGV0YWlsczpAPCU9IEBwcmVm
Lmh1bWFuUmVhZGFibGVEZXNjcmlwdGlvbiAlPiBkZWZhdWx0VmFsdWU6REVGQVVMVF9WQUxVRV9G
T1JfPCU9IEBwcmVmLm5hbWUgJT4gaGlkZGVuOjwlPSBAcHJlZi5oaWRkZW4gJT5dKS5nZXQoKSwK
IDwlLSBpZiBAcHJlZi5jb25kaXRpb24gLSU+CiAjZW5kaWYKIDwlLSBlbmQgLSU+CiA8JS0gZW5k
IC0lPgogICAgIF07CiAKLSAgICByZXR1cm4gZmVhdHVyZXM7CisgICAgcmV0dXJuIGZlYXR1cmVz
LmdldCgpLmdldCgpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWxG
ZWF0dXJlcy5tbS5lcmIgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TY3JpcHRzL1ByZWZlcmVu
Y2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWxGZWF0dXJlcy5tbS5lcmIKaW5kZXgg
ZThmM2JlNGM4ZGZjZjA0ZTE5MmQyZWIzOWVkMGE5YmQ2ZDViNjA0Zi4uMDQyMmRhOGNhNTdkM2U3
NTg3YzQwMGVkNDIzZjhkNTFlYWMwZDExYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFs
RmVhdHVyZXMubW0uZXJiCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1NjcmlwdHMvUHJl
ZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbEZlYXR1cmVzLm1tLmVyYgpA
QCAtMjksNiArMjksOCBAQAogCiAjaW1wb3J0ICJXZWJGZWF0dXJlSW50ZXJuYWwuaCIKICNpbXBv
cnQgIldlYlByZWZlcmVuY2VzRGVmaW5pdGlvbnMuaCIKKyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2Vi
S2l0OwogCkBAIC0zNiwxOSArMzgsMTkgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogKyAo
TlNBcnJheTxXZWJGZWF0dXJlICo+ICopX2ludGVybmFsRmVhdHVyZXMKIHsKLSAgICBzdGF0aWMg
TlNBcnJheTxXZWJGZWF0dXJlICo+ICpmZWF0dXJlcyA9IEBbCisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFJldGFpblB0cjxOU0FycmF5PFdlYkZlYXR1cmUgKj4+PiBmZWF0dXJlcyA9IEBbCiA8
JS0gZm9yIEBwcmVmIGluIEBleHBvc2VkSW50ZXJuYWxGZWF0dXJlcyBkbyAtJT4KIDwlLSBpZiBA
cHJlZi5jb25kaXRpb24gLSU+CiAjaWYgPCU9IEBwcmVmLmNvbmRpdGlvbiAlPgogPCUtIGVuZCAt
JT4KLSAgICAgICAgW1tXZWJGZWF0dXJlIGFsbG9jXSBpbml0V2l0aEtleTpAIjwlPSBAcHJlZi5u
YW1lICU+IiBwcmVmZXJlbmNlS2V5OkAiPCU9IEBwcmVmLnByZWZlcmVuY2VLZXkgJT4iIG5hbWU6
QDwlPSBAcHJlZi5odW1hblJlYWRhYmxlTmFtZSAlPiBkZXRhaWxzOkA8JT0gQHByZWYuaHVtYW5S
ZWFkYWJsZURlc2NyaXB0aW9uICU+IGRlZmF1bHRWYWx1ZTpERUZBVUxUX1ZBTFVFX0ZPUl88JT0g
QHByZWYubmFtZSAlPiBoaWRkZW46PCU9IEBwcmVmLmhpZGRlbiAlPl0sCisgICAgICAgIGFkb3B0
TlMoW1tXZWJGZWF0dXJlIGFsbG9jXSBpbml0V2l0aEtleTpAIjwlPSBAcHJlZi5uYW1lICU+IiBw
cmVmZXJlbmNlS2V5OkAiPCU9IEBwcmVmLnByZWZlcmVuY2VLZXkgJT4iIG5hbWU6QDwlPSBAcHJl
Zi5odW1hblJlYWRhYmxlTmFtZSAlPiBkZXRhaWxzOkA8JT0gQHByZWYuaHVtYW5SZWFkYWJsZURl
c2NyaXB0aW9uICU+IGRlZmF1bHRWYWx1ZTpERUZBVUxUX1ZBTFVFX0ZPUl88JT0gQHByZWYubmFt
ZSAlPiBoaWRkZW46PCU9IEBwcmVmLmhpZGRlbiAlPl0pLmdldCgpLAogPCUtIGlmIEBwcmVmLmNv
bmRpdGlvbiAtJT4KICNlbmRpZgogPCUtIGVuZCAtJT4KIDwlLSBlbmQgLSU+CiAgICAgXTsKIAot
ICAgIHJldHVybiBmZWF0dXJlczsKKyAgICByZXR1cm4gZmVhdHVyZXMuZ2V0KCkuZ2V0KCk7CiB9
CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
RGF0YVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNv
dXJjZS5tbQppbmRleCAwYWM2MGU5OTQzNmFlNzdlZjc1MzBiNjBiZjJlNWNiODBlNThhMjZkLi40
ZGY1NGQ3ZDY5Nzk5YTk2NDU4ZjEyMjQzMGFiNTJlOGIyMTEyYTk5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCkBAIC0yNjksMzIgKzI2
OSwzMSBAQCAtICh2b2lkKV9yZXZlcnRUb1Byb3Zpc2lvbmFsU3RhdGUKIAogKyAoTlNNdXRhYmxl
RGljdGlvbmFyeSAqKV9yZXBUeXBlc0FsbG93SW1hZ2VUeXBlT21pc3Npb246KEJPT0wpYWxsb3dJ
bWFnZVR5cGVPbWlzc2lvbgogewotICAgIHN0YXRpYyBOU011dGFibGVEaWN0aW9uYXJ5ICpyZXBU
eXBlcyA9IG5pbDsKLSAgICBzdGF0aWMgQk9PTCBhZGRlZEltYWdlVHlwZXMgPSBOTzsKLSAgICAK
LSAgICBpZiAoIXJlcFR5cGVzKSB7Ci0gICAgICAgIHJlcFR5cGVzID0gW1tOU011dGFibGVEaWN0
aW9uYXJ5IGFsbG9jXSBpbml0XTsKLSAgICAgICAgYWRkVHlwZXNGcm9tQ2xhc3MocmVwVHlwZXMs
IFtXZWJIVE1MUmVwcmVzZW50YXRpb24gY2xhc3NdLCBbV2ViSFRNTFJlcHJlc2VudGF0aW9uIHN1
cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzXSk7Ci0gICAgICAgIGFkZFR5cGVzRnJvbUNsYXNzKHJl
cFR5cGVzLCBbV2ViSFRNTFJlcHJlc2VudGF0aW9uIGNsYXNzXSwgW1dlYkhUTUxSZXByZXNlbnRh
dGlvbiBzdXBwb3J0ZWRNZWRpYU1JTUVUeXBlc10pOwotICAgICAgICAKKyAgICBzdGF0aWMgYXV0
byByZXBUeXBlcyA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgICAgIGF1dG8gdHlwZXMg
PSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOworICAgICAgICBh
ZGRUeXBlc0Zyb21DbGFzcyh0eXBlcy5nZXQoKSwgW1dlYkhUTUxSZXByZXNlbnRhdGlvbiBjbGFz
c10sIFtXZWJIVE1MUmVwcmVzZW50YXRpb24gc3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXNdKTsK
KyAgICAgICAgYWRkVHlwZXNGcm9tQ2xhc3ModHlwZXMuZ2V0KCksIFtXZWJIVE1MUmVwcmVzZW50
YXRpb24gY2xhc3NdLCBbV2ViSFRNTFJlcHJlc2VudGF0aW9uIHN1cHBvcnRlZE1lZGlhTUlNRVR5
cGVzXSk7CisKICAgICAgICAgLy8gU2luY2UgdGhpcyBpcyBhICJzZWNyZXQgZGVmYXVsdCIgd2Ug
ZG9uJ3QgYm90aCByZWdpc3RlcmluZyBpdC4KICAgICAgICAgQk9PTCBvbWl0UERGU3VwcG9ydCA9
IFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIGJvb2xGb3JLZXk6QCJXZWJL
aXRPbWl0UERGU3VwcG9ydCJdOwotICAgICAgICBpZiAoIW9taXRQREZTdXBwb3J0KQorICAgICAg
ICBpZiAoIW9taXRQREZTdXBwb3J0KSB7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNkZWZp
bmUgV2ViUERGUmVwcmVzZW50YXRpb24gKFtXZWJWaWV3IF9nZXRQREZSZXByZXNlbnRhdGlvbkNs
YXNzXSkKICNlbmRpZgotICAgICAgICAgICAgYWRkVHlwZXNGcm9tQ2xhc3MocmVwVHlwZXMsIFtX
ZWJQREZSZXByZXNlbnRhdGlvbiBjbGFzc10sIFtXZWJQREZSZXByZXNlbnRhdGlvbiBzdXBwb3J0
ZWRNSU1FVHlwZXNdKTsKKyAgICAgICAgICAgIGFkZFR5cGVzRnJvbUNsYXNzKHR5cGVzLmdldCgp
LCBbV2ViUERGUmVwcmVzZW50YXRpb24gY2xhc3NdLCBbV2ViUERGUmVwcmVzZW50YXRpb24gc3Vw
cG9ydGVkTUlNRVR5cGVzXSk7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICN1bmRlZiBXZWJQ
REZSZXByZXNlbnRhdGlvbgogI2VuZGlmCi0gICAgfQotICAgIAorICAgICAgICB9CisgICAgICAg
IHJldHVybiB0eXBlczsKKyAgICB9KCkpOworICAgIHN0YXRpYyBCT09MIGFkZGVkSW1hZ2VUeXBl
cyA9IE5POwogICAgIGlmICghYWRkZWRJbWFnZVR5cGVzICYmICFhbGxvd0ltYWdlVHlwZU9taXNz
aW9uKSB7Ci0gICAgICAgIGFkZFR5cGVzRnJvbUNsYXNzKHJlcFR5cGVzLCBbV2ViSFRNTFJlcHJl
c2VudGF0aW9uIGNsYXNzXSwgW1dlYkhUTUxSZXByZXNlbnRhdGlvbiBzdXBwb3J0ZWRJbWFnZU1J
TUVUeXBlc10pOworICAgICAgICBhZGRUeXBlc0Zyb21DbGFzcyhyZXBUeXBlcy5nZXQoKS5nZXQo
KSwgW1dlYkhUTUxSZXByZXNlbnRhdGlvbiBjbGFzc10sIFtXZWJIVE1MUmVwcmVzZW50YXRpb24g
c3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNdKTsKICAgICAgICAgYWRkZWRJbWFnZVR5cGVzID0gWUVT
OwogICAgIH0KICAgICAKLSAgICByZXR1cm4gcmVwVHlwZXM7CisgICAgcmV0dXJuIHJlcFR5cGVz
LmdldCgpLmdldCgpOwogfQogCiAtICh2b2lkKV9yZXBsYWNlU2VsZWN0aW9uV2l0aEFyY2hpdmU6
KFdlYkFyY2hpdmUgKilhcmNoaXZlIHNlbGVjdFJlcGxhY2VtZW50OihCT09MKXNlbGVjdFJlcGxh
Y2VtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZy
YW1lVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWVWaWV3
Lm1tCmluZGV4IGE3ODVlOGMzZDU2NTkyYWIwOWE2Y2I5ODJjZDk4YTc1ZjA0ZDMzZWMuLmUzZThj
N2JhZDAzNTg5OTYzMTJhOTFlZmRiNGVmYzc2MGVlMmYzOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tCkBAIC0yMzksMTMgKzIzOSwxMCBA
QCAtIChmbG9hdClfdmVydGljYWxQYWdlU2Nyb2xsRGlzdGFuY2UKIAogKyAoTlNNdXRhYmxlRGlj
dGlvbmFyeSAqKV92aWV3VHlwZXNBbGxvd0ltYWdlVHlwZU9taXNzaW9uOihCT09MKWFsbG93SW1h
Z2VUeXBlT21pc3Npb24KIHsKLSAgICBzdGF0aWMgTlNNdXRhYmxlRGljdGlvbmFyeSAqdmlld1R5
cGVzID0gbmlsOwotICAgIHN0YXRpYyBCT09MIGFkZGVkSW1hZ2VUeXBlcyA9IE5POwotICAgIAot
ICAgIGlmICghdmlld1R5cGVzKSB7Ci0gICAgICAgIHZpZXdUeXBlcyA9IFtbTlNNdXRhYmxlRGlj
dGlvbmFyeSBhbGxvY10gaW5pdF07Ci0gICAgICAgIGFkZFR5cGVzRnJvbUNsYXNzKHZpZXdUeXBl
cywgW1dlYkhUTUxWaWV3IGNsYXNzXSwgW1dlYkhUTUxWaWV3IHN1cHBvcnRlZE5vbkltYWdlTUlN
RVR5cGVzXSk7Ci0gICAgICAgIGFkZFR5cGVzRnJvbUNsYXNzKHZpZXdUeXBlcywgW1dlYkhUTUxW
aWV3IGNsYXNzXSwgW1dlYkhUTUxWaWV3IHN1cHBvcnRlZE1lZGlhTUlNRVR5cGVzXSk7CisgICAg
c3RhdGljIGF1dG8gdmlld1R5cGVzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICAgICAg
YXV0byB0eXBlcyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7
CisgICAgICAgIGFkZFR5cGVzRnJvbUNsYXNzKHR5cGVzLmdldCgpLCBbV2ViSFRNTFZpZXcgY2xh
c3NdLCBbV2ViSFRNTFZpZXcgc3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXNdKTsKKyAgICAgICAg
YWRkVHlwZXNGcm9tQ2xhc3ModHlwZXMuZ2V0KCksIFtXZWJIVE1MVmlldyBjbGFzc10sIFtXZWJI
VE1MVmlldyBzdXBwb3J0ZWRNZWRpYU1JTUVUeXBlc10pOwogCiAgICAgICAgIC8vIFNpbmNlIHRo
aXMgaXMgYSAic2VjcmV0IGRlZmF1bHQiIHdlIGRvbid0IGJvdGhlciByZWdpc3RlcmluZyBpdC4K
ICAgICAgICAgQk9PTCBvbWl0UERGU3VwcG9ydCA9IFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRV
c2VyRGVmYXVsdHNdIGJvb2xGb3JLZXk6QCJXZWJLaXRPbWl0UERGU3VwcG9ydCJdOwpAQCAtMjUz
LDE5ICsyNTAsMjAgQEAgKyAoTlNNdXRhYmxlRGljdGlvbmFyeSAqKV92aWV3VHlwZXNBbGxvd0lt
YWdlVHlwZU9taXNzaW9uOihCT09MKWFsbG93SW1hZ2VUeXBlT20KICNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogI2RlZmluZSBXZWJQREZWaWV3IChbV2ViVmlldyBfZ2V0UERGVmlld0NsYXNzXSkK
ICNlbmRpZgotICAgICAgICAgICAgYWRkVHlwZXNGcm9tQ2xhc3Modmlld1R5cGVzLCBbV2ViUERG
VmlldyBjbGFzc10sIFtXZWJQREZWaWV3IHN1cHBvcnRlZE1JTUVUeXBlc10pOworICAgICAgICAg
ICAgYWRkVHlwZXNGcm9tQ2xhc3ModHlwZXMuZ2V0KCksIFtXZWJQREZWaWV3IGNsYXNzXSwgW1dl
YlBERlZpZXcgc3VwcG9ydGVkTUlNRVR5cGVzXSk7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICN1bmRlZiBXZWJQREZWaWV3CiAjZW5kaWYKICAgICAgICAgfQotICAgIH0KLSAgICAKKyAgICAg
ICAgcmV0dXJuIHR5cGVzOworICAgIH0oKSk7CisgICAgc3RhdGljIEJPT0wgYWRkZWRJbWFnZVR5
cGVzID0gTk87CiAgICAgaWYgKCFhZGRlZEltYWdlVHlwZXMgJiYgIWFsbG93SW1hZ2VUeXBlT21p
c3Npb24pIHsKLSAgICAgICAgYWRkVHlwZXNGcm9tQ2xhc3Modmlld1R5cGVzLCBbV2ViSFRNTFZp
ZXcgY2xhc3NdLCBbV2ViSFRNTFZpZXcgc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNdKTsKKyAgICAg
ICAgYWRkVHlwZXNGcm9tQ2xhc3Modmlld1R5cGVzLmdldCgpLmdldCgpLCBbV2ViSFRNTFZpZXcg
Y2xhc3NdLCBbV2ViSFRNTFZpZXcgc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNdKTsKICAgICAgICAg
YWRkZWRJbWFnZVR5cGVzID0gWUVTOwogICAgIH0KICAgICAKLSAgICByZXR1cm4gdmlld1R5cGVz
OworICAgIHJldHVybiB2aWV3VHlwZXMuZ2V0KCkuZ2V0KCk7CiB9CiAKICsgKEJPT0wpX2NhblNo
b3dNSU1FVHlwZUFzSFRNTDooTlNTdHJpbmcgKilNSU1FVHlwZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGdWxsU2NyZWVuQ29udHJvbGxlci5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIubW0K
aW5kZXggODZmMjBkMmJmODgyODQ0Yzk1ZmJkYWYwOGJjZWE5ZTg0MjQ5MmIwZi4uMTY1MTMwOGYx
MWU1OGEzYTFhOWVkOGIwNTVlMzAxZjRhZmQ2NmE0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGdWxsU2NyZWVuQ29udHJvbGxlci5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZ1bGxTY3JlZW5Db250cm9sbGVyLm1tCkBA
IC00NzMsMTEgKzQ3MywxMSBAQCAtICh2b2lkKV9zd2FwVmlldzooTlNWaWV3Kil2aWV3IHdpdGg6
KE5TVmlldyopb3RoZXJWaWV3CiAKIHN0YXRpYyBSZXRhaW5QdHI8TlNXaW5kb3c+IGNyZWF0ZUJh
Y2tncm91bmRGdWxsc2NyZWVuV2luZG93KE5TUmVjdCBmcmFtZSkKIHsKLSAgICBOU1dpbmRvdyAq
d2luZG93ID0gW1tOU1dpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDpmcmFtZSBzdHls
ZU1hc2s6TlNXaW5kb3dTdHlsZU1hc2tCb3JkZXJsZXNzIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVC
dWZmZXJlZCBkZWZlcjpOT107CisgICAgYXV0byB3aW5kb3cgPSBhZG9wdE5TKFtbTlNXaW5kb3cg
YWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6ZnJhbWUgc3R5bGVNYXNrOk5TV2luZG93U3R5bGVN
YXNrQm9yZGVybGVzcyBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6Tk9dKTsK
ICAgICBbd2luZG93IHNldE9wYXF1ZTpZRVNdOwogICAgIFt3aW5kb3cgc2V0QmFja2dyb3VuZENv
bG9yOltOU0NvbG9yIGJsYWNrQ29sb3JdXTsKICAgICBbd2luZG93IHNldFJlbGVhc2VkV2hlbkNs
b3NlZDpOT107Ci0gICAgcmV0dXJuIGFkb3B0TlMod2luZG93KTsKKyAgICByZXR1cm4gd2luZG93
OwogfQogCiBzdGF0aWMgTlNSZWN0IHdpbmRvd0ZyYW1lRnJvbUFwcGFyZW50RnJhbWVzKE5TUmVj
dCBzY3JlZW5GcmFtZSwgTlNSZWN0IGluaXRpYWxGcmFtZSwgTlNSZWN0IGZpbmFsRnJhbWUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNl
bnRhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJl
c2VudGF0aW9uLm1tCmluZGV4IDRlNjdjZGFkYzBlMjRjOGVjYzgwNTIwMWQ5ZWE0NmU3MjRhN2Jl
NjIuLjQ3YTNkNTMwNWU3NjFmNmM2YTQxYmNhZGNkNjNhNWMzMjI2MTgxMjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0
aW9uLm1tCkBAIC0zNTYsMTQgKzM1NiwxMiBAQCBzdGF0aWMgUmVndWxhckV4cHJlc3Npb24qIHJl
Z0V4cEZvckxhYmVscyhOU0FycmF5ICpsYWJlbHMpCiAgICAgLy8gUGFyYWxsZWwgYXJyYXlzIHRo
YXQgd2UgdXNlIHRvIGNhY2hlIHJlZ0V4cHMuICBJbiBwcmFjdGljZSB0aGUgbnVtYmVyIG9mIGV4
cHJlc3Npb25zCiAgICAgLy8gdGhhdCB0aGUgYXBwIHdpbGwgdXNlIGlzIGVxdWFsIHRvIHRoZSBu
dW1iZXIgb2YgbG9jYWxlcyBpcyB1c2VkIGluIHNlYXJjaGluZy4KICAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgaW50IHJlZ0V4cENhY2hlU2l6ZSA9IDQ7Ci0gICAgc3RhdGljIE5TTXV0YWJsZUFy
cmF5KiByZWdFeHBMYWJlbHMgPSBuaWw7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFp
blB0cjxOU011dGFibGVBcnJheT4+IHJlZ0V4cExhYmVscyA9IGFkb3B0TlMoW1tOU011dGFibGVB
cnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpyZWdFeHBDYWNoZVNpemVdKTsKICAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8VmVjdG9yPFJlZ3VsYXJFeHByZXNzaW9uKj4+IHJlZ0V4cHM7CiAg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZ3VsYXJFeHByZXNzaW9uPiB3b3JkUmVnRXhwKCJc
XHciKTsKIAogICAgIFJlZ3VsYXJFeHByZXNzaW9uKiByZXN1bHQ7Ci0gICAgaWYgKCFyZWdFeHBM
YWJlbHMpCi0gICAgICAgIHJlZ0V4cExhYmVscyA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGlu
aXRXaXRoQ2FwYWNpdHk6cmVnRXhwQ2FjaGVTaXplXTsKLSAgICBDRkluZGV4IGNhY2hlSGl0ID0g
W3JlZ0V4cExhYmVscyBpbmRleE9mT2JqZWN0OmxhYmVsc107CisgICAgQ0ZJbmRleCBjYWNoZUhp
dCA9IFtyZWdFeHBMYWJlbHMuZ2V0KCkgaW5kZXhPZk9iamVjdDpsYWJlbHNdOwogICAgIGlmIChj
YWNoZUhpdCAhPSBOU05vdEZvdW5kKQogICAgICAgICByZXN1bHQgPSByZWdFeHBzLmdldCgpLmF0
KGNhY2hlSGl0KTsKICAgICBlbHNlIHsKQEAgLTQwMCwxNSArMzk4LDE1IEBAIHN0YXRpYyBSZWd1
bGFyRXhwcmVzc2lvbiogcmVnRXhwRm9yTGFiZWxzKE5TQXJyYXkgKmxhYmVscykKICAgICBpZiAo
Y2FjaGVIaXQgIT0gMCkgewogICAgICAgICBpZiAoY2FjaGVIaXQgIT0gTlNOb3RGb3VuZCkgewog
ICAgICAgICAgICAgLy8gcmVtb3ZlIGZyb20gb2xkIHNwb3QKLSAgICAgICAgICAgIFtyZWdFeHBM
YWJlbHMgcmVtb3ZlT2JqZWN0QXRJbmRleDpjYWNoZUhpdF07CisgICAgICAgICAgICBbcmVnRXhw
TGFiZWxzLmdldCgpIHJlbW92ZU9iamVjdEF0SW5kZXg6Y2FjaGVIaXRdOwogICAgICAgICAgICAg
cmVnRXhwcy5nZXQoKS5yZW1vdmUoY2FjaGVIaXQpOwogICAgICAgICB9CiAgICAgICAgIC8vIGFk
ZCB0byBzdGFydAotICAgICAgICBbcmVnRXhwTGFiZWxzIGluc2VydE9iamVjdDpsYWJlbHMgYXRJ
bmRleDowXTsKKyAgICAgICAgW3JlZ0V4cExhYmVscy5nZXQoKSBpbnNlcnRPYmplY3Q6bGFiZWxz
IGF0SW5kZXg6MF07CiAgICAgICAgIHJlZ0V4cHMuZ2V0KCkuaW5zZXJ0KDAsIHJlc3VsdCk7CiAg
ICAgICAgIC8vIHRyaW0gaWYgdG9vIGJpZwotICAgICAgICBpZiAoW3JlZ0V4cExhYmVscyBjb3Vu
dF0gPiByZWdFeHBDYWNoZVNpemUpIHsKLSAgICAgICAgICAgIFtyZWdFeHBMYWJlbHMgcmVtb3Zl
T2JqZWN0QXRJbmRleDpyZWdFeHBDYWNoZVNpemVdOworICAgICAgICBpZiAoW3JlZ0V4cExhYmVs
cy5nZXQoKSBjb3VudF0gPiByZWdFeHBDYWNoZVNpemUpIHsKKyAgICAgICAgICAgIFtyZWdFeHBM
YWJlbHMuZ2V0KCkgcmVtb3ZlT2JqZWN0QXRJbmRleDpyZWdFeHBDYWNoZVNpemVdOwogICAgICAg
ICAgICAgUmVndWxhckV4cHJlc3Npb24qIGxhc3QgPSByZWdFeHBzLmdldCgpLmxhc3QoKTsKICAg
ICAgICAgICAgIHJlZ0V4cHMuZ2V0KCkucmVtb3ZlTGFzdCgpOwogICAgICAgICAgICAgZGVsZXRl
IGxhc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhU
TUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5t
bQppbmRleCAyMDU0YjY2ZDIwMWFjN2ZiNDhlNGM4ODg1NjA2YjIyNzNlNDlhZmVhLi5kYjk2YjQw
NDgwNjAzODdhOTQzNjM0OGZkMmQzOTBjNDQ4ODFlMzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTE5NjEsMTUgKzE5NjEsMTMgQEAg
KyAoTlNTdHJpbmcgKilfZHVtbXlQYXN0ZWJvYXJkVHlwZQogCiArIChOU0FycmF5ICopX2luc2Vy
dGFibGVQYXN0ZWJvYXJkVHlwZXMKIHsKLSAgICBzdGF0aWMgTlNBcnJheSAqdHlwZXMgPSBuaWw7
Ci0gICAgaWYgKCF0eXBlcykgewogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4K
LSAgICAgICAgdHlwZXMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czpXZWJBcmNo
aXZlUGJvYXJkVHlwZSwgV2ViQ29yZTo6bGVnYWN5SFRNTFBhc3RlYm9hcmRUeXBlKCksIFdlYkNv
cmU6OmxlZ2FjeUZpbGVuYW1lc1Bhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVRJRkZQ
YXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lQREZQYXN0ZWJvYXJkVHlwZSgpLAotICAg
ICAgICAgICAgV2ViQ29yZTo6bGVnYWN5VVJMUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVn
YWN5UlRGRFBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVJURlBhc3RlYm9hcmRUeXBl
KCksIFdlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2Fj
eUNvbG9yUGFzdGVib2FyZFR5cGUoKSwga1VUVHlwZVBORywgbmlsXTsKLUFMTE9XX0RFUFJFQ0FU
RURfREVDTEFSQVRJT05TX0VORAotICAgICAgICBDRlJldGFpbih0eXBlcyk7Ci0gICAgfQotICAg
IHJldHVybiB0eXBlczsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQXJy
YXk+PiB0eXBlcyA9IEBbCisgICAgICAgIFdlYkFyY2hpdmVQYm9hcmRUeXBlLCBXZWJDb3JlOjps
ZWdhY3lIVE1MUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5RmlsZW5hbWVzUGFzdGVi
b2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5VElGRlBhc3RlYm9hcmRUeXBlKCksCisgICAgICAg
IFdlYkNvcmU6OmxlZ2FjeVBERlBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVVSTFBh
c3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpLCBXZWJD
b3JlOjpsZWdhY3lSVEZQYXN0ZWJvYXJkVHlwZSgpLAorICAgICAgICBXZWJDb3JlOjpsZWdhY3lT
dHJpbmdQYXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lDb2xvclBhc3RlYm9hcmRUeXBl
KCksIChOU1N0cmluZyAqKWtVVFR5cGVQTkcsCisgICAgXTsKKyAgICByZXR1cm4gdHlwZXMuZ2V0
KCkuZ2V0KCk7CiB9CiAKICsgKE5TQXJyYXkgKilfc2VsZWN0aW9uUGFzdGVib2FyZFR5cGVzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2Vz
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQpp
bmRleCAzMzNhMzI0NzkzZGRiYzhmYTBhMGVkZjYxZDg2OGI0MzFhMGI1YTQ2Li44N2NkZmQ3ZDMx
MWM4NDZhYTQ5NmMwNzcyMGVjNTJhYjFlNWRmZjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KQEAgLTc1LDggKzc1LDE3IEBAIE5T
U3RyaW5nICpXZWJQcmVmZXJlbmNlc0NhY2hlTW9kZWxDaGFuZ2VkSW50ZXJuYWxOb3RpZmljYXRp
b24gPSBAIldlYlByZWZlcmVuY2VzCiAKIGVudW0geyBXZWJQcmVmZXJlbmNlc1ZlcnNpb24gPSAx
IH07CiAKLXN0YXRpYyBXZWJQcmVmZXJlbmNlcyAqX3N0YW5kYXJkUHJlZmVyZW5jZXM7Ci1zdGF0
aWMgTlNNdXRhYmxlRGljdGlvbmFyeSAqd2ViUHJlZmVyZW5jZXNJbnN0YW5jZXM7CitzdGF0aWMg
UmV0YWluUHRyPFdlYlByZWZlcmVuY2VzPiYgc3RhbmRhcmRQcmVmZXJlbmNlcygpCit7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxXZWJQcmVmZXJlbmNlcz4+IF9zdGFuZGFy
ZFByZWZlcmVuY2VzOworICAgIHJldHVybiBfc3RhbmRhcmRQcmVmZXJlbmNlczsKK30KKworc3Rh
dGljIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiYgd2ViUHJlZmVyZW5jZXNJbnN0YW5j
ZXMoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNNdXRhYmxlRGlj
dGlvbmFyeT4+IF93ZWJQcmVmZXJlbmNlc0luc3RhbmNlczsKKyAgICByZXR1cm4gX3dlYlByZWZl
cmVuY2VzSW5zdGFuY2VzOworfQogCiBzdGF0aWMgdW5zaWduZWQgd2ViUHJlZmVyZW5jZXNJbnN0
YW5jZUNvdW50V2l0aFByaXZhdGVCcm93c2luZ0VuYWJsZWQ7CiAKQEAgLTM2MSwyNCArMzcwLDI0
IEBAIC0gKHZvaWQpZW5jb2RlV2l0aENvZGVyOihOU0NvZGVyICopZW5jb2RlcgogKyAoV2ViUHJl
ZmVyZW5jZXMgKilzdGFuZGFyZFByZWZlcmVuY2VzCiB7CiAjaWYgIVBMQVRGT1JNKElPU19GQU1J
TFkpCi0gICAgaWYgKF9zdGFuZGFyZFByZWZlcmVuY2VzID09IG5pbCkgewotICAgICAgICBfc3Rh
bmRhcmRQcmVmZXJlbmNlcyA9IFtbV2ViUHJlZmVyZW5jZXMgYWxsb2NdIGluaXRXaXRoSWRlbnRp
ZmllcjpuaWxdOwotICAgICAgICBbX3N0YW5kYXJkUHJlZmVyZW5jZXMgc2V0QXV0b3NhdmVzOllF
U107CisgICAgaWYgKCFzdGFuZGFyZFByZWZlcmVuY2VzKCkpIHsKKyAgICAgICAgc3RhbmRhcmRQ
cmVmZXJlbmNlcygpID0gYWRvcHROUyhbW1dlYlByZWZlcmVuY2VzIGFsbG9jXSBpbml0V2l0aElk
ZW50aWZpZXI6bmlsXSk7CisgICAgICAgIFtzdGFuZGFyZFByZWZlcmVuY2VzKCkgc2V0QXV0b3Nh
dmVzOllFU107CiAgICAgfQogI2Vsc2UKLSAgICAvLyBGSVhNRTogVGhpcyBjaGVjayBpcyBuZWNl
c3NhcnkgdG8gYXZvaWQgcmVjdXJzaW9uIChzZWUgPHJkYXI6Ly9wcm9ibGVtLzk1NjQzMzc+KSwg
YnV0IGl0IGFsc28gbWFrZXMgX3N0YW5kYXJkUHJlZmVyZW5jZXMgY29uc3RydWN0aW9uIG5vdCB0
aHJlYWQgc2FmZS4KLSAgICBpZiAoX3N0YW5kYXJkUHJlZmVyZW5jZXMpCi0gICAgICAgIHJldHVy
biBfc3RhbmRhcmRQcmVmZXJlbmNlczsKKyAgICAvLyBGSVhNRTogVGhpcyBjaGVjayBpcyBuZWNl
c3NhcnkgdG8gYXZvaWQgcmVjdXJzaW9uIChzZWUgPHJkYXI6Ly9wcm9ibGVtLzk1NjQzMzc+KSwg
YnV0IGl0IGFsc28gbWFrZXMgc3RhbmRhcmRQcmVmZXJlbmNlcygpIGNvbnN0cnVjdGlvbiBub3Qg
dGhyZWFkIHNhZmUuCisgICAgaWYgKGF1dG8mIHByZWZlcmVuY2VzID0gc3RhbmRhcmRQcmVmZXJl
bmNlcygpKQorICAgICAgICByZXR1cm4gcHJlZmVyZW5jZXMuZ2V0KCk7CiAKICAgICBzdGF0aWMg
ZGlzcGF0Y2hfb25jZV90IHByZWQ7CiAgICAgZGlzcGF0Y2hfb25jZSgmcHJlZCwgXnsKLSAgICAg
ICAgX3N0YW5kYXJkUHJlZmVyZW5jZXMgPSBbW1dlYlByZWZlcmVuY2VzIGFsbG9jXSBpbml0V2l0
aElkZW50aWZpZXI6bmlsIHNlbmRDaGFuZ2VOb3RpZmljYXRpb246Tk9dOwotICAgICAgICBbX3N0
YW5kYXJkUHJlZmVyZW5jZXMgX3Bvc3RQcmVmZXJlbmNlc0NoYW5nZWROb3RpZmljYXRpb25dOwot
ICAgICAgICBbX3N0YW5kYXJkUHJlZmVyZW5jZXMgc2V0QXV0b3NhdmVzOllFU107CisgICAgICAg
IHN0YW5kYXJkUHJlZmVyZW5jZXMoKSA9IGFkb3B0TlMoW1tXZWJQcmVmZXJlbmNlcyBhbGxvY10g
aW5pdFdpdGhJZGVudGlmaWVyOm5pbCBzZW5kQ2hhbmdlTm90aWZpY2F0aW9uOk5PXSk7CisgICAg
ICAgIFtzdGFuZGFyZFByZWZlcmVuY2VzKCkgX3Bvc3RQcmVmZXJlbmNlc0NoYW5nZWROb3RpZmlj
YXRpb25dOworICAgICAgICBbc3RhbmRhcmRQcmVmZXJlbmNlcygpIHNldEF1dG9zYXZlczpZRVNd
OwogICAgIH0pOwogI2VuZGlmCiAKLSAgICByZXR1cm4gX3N0YW5kYXJkUHJlZmVyZW5jZXM7Cisg
ICAgcmV0dXJuIHN0YW5kYXJkUHJlZmVyZW5jZXMoKS5nZXQoKTsKIH0KIAogLy8gaWYgd2UgZXZl
ciBoYXZlIG1vcmUgdGhhbiBvbmUgV2ViUHJlZmVyZW5jZXMgb2JqZWN0LCB0aGlzIHdvdWxkIG1v
dmUgdG8gaW5pdApAQCAtMTU4MSwzMCArMTU5MCwzMiBAQCArIChXZWJQcmVmZXJlbmNlcyAqKV9n
ZXRJbnN0YW5jZUZvcklkZW50aWZpZXI6KE5TU3RyaW5nICopaWRlbnQKICAgICBMT0coRW5jb2Rp
bmcsICJyZXF1ZXN0aW5nIGZvciAlQFxuIiwgaWRlbnQpOwogCiAgICAgaWYgKCFpZGVudCkKLSAg
ICAgICAgcmV0dXJuIF9zdGFuZGFyZFByZWZlcmVuY2VzOworICAgICAgICByZXR1cm4gc3RhbmRh
cmRQcmVmZXJlbmNlcygpLmdldCgpOwogCi0gICAgV2ViUHJlZmVyZW5jZXMgKmluc3RhbmNlID0g
W3dlYlByZWZlcmVuY2VzSW5zdGFuY2VzIG9iamVjdEZvcktleTpbc2VsZiBfY29uY2F0ZW5hdGVL
ZXlXaXRoSUJDcmVhdG9ySUQ6aWRlbnRdXTsKKyAgICBXZWJQcmVmZXJlbmNlcyAqaW5zdGFuY2Ug
PSBbd2ViUHJlZmVyZW5jZXNJbnN0YW5jZXMoKSBvYmplY3RGb3JLZXk6W3NlbGYgX2NvbmNhdGVu
YXRlS2V5V2l0aElCQ3JlYXRvcklEOmlkZW50XV07CiAKICAgICByZXR1cm4gaW5zdGFuY2U7CiB9
CiAKICsgKHZvaWQpX3NldEluc3RhbmNlOihXZWJQcmVmZXJlbmNlcyAqKWluc3RhbmNlIGZvcklk
ZW50aWZpZXI6KE5TU3RyaW5nICopaWRlbnQKIHsKLSAgICBpZiAoIXdlYlByZWZlcmVuY2VzSW5z
dGFuY2VzKQotICAgICAgICB3ZWJQcmVmZXJlbmNlc0luc3RhbmNlcyA9IFtbTlNNdXRhYmxlRGlj
dGlvbmFyeSBhbGxvY10gaW5pdF07Ci0gICAgaWYgKGlkZW50KSB7Ci0gICAgICAgIFt3ZWJQcmVm
ZXJlbmNlc0luc3RhbmNlcyBzZXRPYmplY3Q6aW5zdGFuY2UgZm9yS2V5OltzZWxmIF9jb25jYXRl
bmF0ZUtleVdpdGhJQkNyZWF0b3JJRDppZGVudF1dOwotICAgICAgICBMT0coRW5jb2RpbmcsICJy
ZWNvcmRpbmcgJXAgZm9yICVAXG4iLCBpbnN0YW5jZSwgW3NlbGYgX2NvbmNhdGVuYXRlS2V5V2l0
aElCQ3JlYXRvcklEOmlkZW50XSk7Ci0gICAgfQorICAgIGlmICghaWRlbnQpCisgICAgICAgIHJl
dHVybjsKKworICAgIGF1dG8mIGluc3RhbmNlcyA9IHdlYlByZWZlcmVuY2VzSW5zdGFuY2VzKCk7
CisgICAgaWYgKCFpbnN0YW5jZXMpCisgICAgICAgIGluc3RhbmNlcyA9IGFkb3B0TlMoW1tOU011
dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CisgICAgW2luc3RhbmNlcyBzZXRPYmplY3Q6
aW5zdGFuY2UgZm9yS2V5OltzZWxmIF9jb25jYXRlbmF0ZUtleVdpdGhJQkNyZWF0b3JJRDppZGVu
dF1dOworICAgIExPRyhFbmNvZGluZywgInJlY29yZGluZyAlcCBmb3IgJUBcbiIsIGluc3RhbmNl
LCBbc2VsZiBfY29uY2F0ZW5hdGVLZXlXaXRoSUJDcmVhdG9ySUQ6aWRlbnRdKTsKIH0KIAogKyAo
dm9pZClfY2hlY2tMYXN0UmVmZXJlbmNlRm9ySWRlbnRpZmllcjooaWQpaWRlbnRpZmllcgogewog
ICAgIC8vIEZJWE1FOiBUaGlzIHdvbid0IHdvcmsgYXQgYWxsIHVuZGVyIGdhcmJhZ2UgY29sbGVj
dGlvbiBiZWNhdXNlIHJldGFpbkNvdW50IHJldHVybnMgYSBjb25zdGFudC4KICAgICAvLyBXZSBt
YXkgbmVlZCB0byBjaGFuZ2UgV2ViUHJlZmVyZW5jZXMgQVBJIHNvIHRoZXJlJ3MgYW4gZXhwbGlj
aXQgd2F5IHRvIGVuZCB0aGUgbGlmZXRpbWUgb2Ygb25lLgotICAgIFdlYlByZWZlcmVuY2VzICpp
bnN0YW5jZSA9IFt3ZWJQcmVmZXJlbmNlc0luc3RhbmNlcyBvYmplY3RGb3JLZXk6aWRlbnRpZmll
cl07CisgICAgV2ViUHJlZmVyZW5jZXMgKmluc3RhbmNlID0gW3dlYlByZWZlcmVuY2VzSW5zdGFu
Y2VzKCkgb2JqZWN0Rm9yS2V5OmlkZW50aWZpZXJdOwogICAgIGlmIChbaW5zdGFuY2UgcmV0YWlu
Q291bnRdID09IDEpCi0gICAgICAgIFt3ZWJQcmVmZXJlbmNlc0luc3RhbmNlcyByZW1vdmVPYmpl
Y3RGb3JLZXk6aWRlbnRpZmllcl07CisgICAgICAgIFt3ZWJQcmVmZXJlbmNlc0luc3RhbmNlcygp
IHJlbW92ZU9iamVjdEZvcktleTppZGVudGlmaWVyXTsKIH0KIAogKyAodm9pZClfcmVtb3ZlUmVm
ZXJlbmNlRm9ySWRlbnRpZmllcjooTlNTdHJpbmcgKilpZGVudApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDVhY2I1ZDlkZDhjNDdhMTAwMDM0YmZhNmVm
YWI2NzdmMWIxNWM4OTIuLjlhZjcwYTM3NzkwYjE1MDkzNGRmNDI0NmJlNjI4MDk5NmVlYWQ2NzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTkxNyw3
ICs5MTcsMTEgQEAgZW51bSB7IFdlYlZpZXdWZXJzaW9uID0gNCB9OwogCiAjZGVmaW5lIHRpbWVk
TGF5b3V0U2l6ZSA0MDk2CiAKLXN0YXRpYyBOU011dGFibGVTZXQgKnNjaGVtZXNXaXRoUmVwcmVz
ZW50YXRpb25zU2V0Oworc3RhdGljIFJldGFpblB0cjxOU011dGFibGVTZXQ+JiBzY2hlbWVzV2l0
aFJlcHJlc2VudGF0aW9uc1NldCgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFp
blB0cjxOU011dGFibGVTZXQ+PiBfc2NoZW1lc1dpdGhSZXByZXNlbnRhdGlvbnNTZXQ7CisgICAg
cmV0dXJuIF9zY2hlbWVzV2l0aFJlcHJlc2VudGF0aW9uc1NldDsKK30KIAogI2lmICFQTEFURk9S
TShJT1NfRkFNSUxZKQogTlNTdHJpbmcgKl9XZWJDYW5Hb0JhY2tLZXkgPSAgICAgICAgICAgIEAi
Y2FuR29CYWNrIjsKQEAgLTEzNDUsMTcgKzEzNDksMTcgQEAgc3RhdGljIGJvb2wgbmVlZHNPdXRs
b29rUXVpcmtzU2NyaXB0KCkKICAgICByZXR1cm4gaXNPdXRsb29rTmVlZGluZ1F1aXJrc1Njcmlw
dDsKIH0KIAotc3RhdGljIE5TU3RyaW5nICpsZWFrT3V0bG9va1F1aXJrc1VzZXJTY3JpcHRDb250
ZW50cygpCitzdGF0aWMgUmV0YWluUHRyPE5TU3RyaW5nPiBvdXRsb29rUXVpcmtzVXNlclNjcmlw
dENvbnRlbnRzKCkKIHsKICAgICBOU1N0cmluZyAqc2NyaXB0UGF0aCA9IFtbTlNCdW5kbGUgYnVu
ZGxlRm9yQ2xhc3M6W1dlYlZpZXcgY2xhc3NdXSBwYXRoRm9yUmVzb3VyY2U6QCJPdXRsb29rUXVp
cmtzVXNlclNjcmlwdCIgb2ZUeXBlOkAianMiXTsKICAgICBOU1N0cmluZ0VuY29kaW5nIGVuY29k
aW5nOwotICAgIHJldHVybiBbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aENvbnRlbnRzT2ZGaWxl
OnNjcmlwdFBhdGggdXNlZEVuY29kaW5nOiZlbmNvZGluZyBlcnJvcjowXTsKKyAgICByZXR1cm4g
YWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aENvbnRlbnRzT2ZGaWxlOnNjcmlwdFBh
dGggdXNlZEVuY29kaW5nOiZlbmNvZGluZyBlcnJvcjowXSk7CiB9CiAKIC0odm9pZClfaW5qZWN0
T3V0bG9va1F1aXJrc1NjcmlwdAogewotICAgIHN0YXRpYyBOU1N0cmluZyAqb3V0bG9va1F1aXJr
c1NjcmlwdENvbnRlbnRzID0gbGVha091dGxvb2tRdWlya3NVc2VyU2NyaXB0Q29udGVudHMoKTsK
LSAgICBfcHJpdmF0ZS0+Z3JvdXAtPnVzZXJDb250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJTY3Jp
cHQoKmNvcmUoW1dlYlNjcmlwdFdvcmxkIHdvcmxkXSksIG1ha2VVbmlxdWU8V2ViQ29yZTo6VXNl
clNjcmlwdD4ob3V0bG9va1F1aXJrc1NjcmlwdENvbnRlbnRzLCBVUkwoKSwgVmVjdG9yPFN0cmlu
Zz4oKSwgVmVjdG9yPFN0cmluZz4oKSwgV2ViQ29yZTo6VXNlclNjcmlwdEluamVjdGlvblRpbWU6
OkRvY3VtZW50RW5kLCBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJ
bkFsbEZyYW1lcywgV2ViQ29yZTo6V2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUluamVjdGluZzo6
Tm8pKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TU3RyaW5nPj4gb3V0
bG9va1F1aXJrc1NjcmlwdENvbnRlbnRzID0gb3V0bG9va1F1aXJrc1VzZXJTY3JpcHRDb250ZW50
cygpOworICAgIF9wcml2YXRlLT5ncm91cC0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkuYWRkVXNl
clNjcmlwdCgqY29yZShbV2ViU2NyaXB0V29ybGQgd29ybGRdKSwgbWFrZVVuaXF1ZTxXZWJDb3Jl
OjpVc2VyU2NyaXB0PihvdXRsb29rUXVpcmtzU2NyaXB0Q29udGVudHMuZ2V0KCkuZ2V0KCksIFVS
TCgpLCBWZWN0b3I8U3RyaW5nPigpLCBWZWN0b3I8U3RyaW5nPigpLCBXZWJDb3JlOjpVc2VyU2Ny
aXB0SW5qZWN0aW9uVGltZTo6RG9jdW1lbnRFbmQsIFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0
ZWRGcmFtZXM6OkluamVjdEluQWxsRnJhbWVzLCBXZWJDb3JlOjpXYWl0Rm9yTm90aWZpY2F0aW9u
QmVmb3JlSW5qZWN0aW5nOjpObykpOwogCiB9CiAjZW5kaWYKQEAgLTEzNjcsMjAgKzEzNzEsMjAg
QEAgc3RhdGljIGJvb2wgbmVlZHNMYUJhbnF1ZVBvc3RhbGVRdWlya3MoKQogICAgIHJldHVybiBu
ZWVkc1F1aXJrczsKIH0KIAotc3RhdGljIE5TU3RyaW5nICpsZWFrTGFCYW5xdWVQb3N0YWxlUXVp
cmtzU2NyaXB0KCkKK3N0YXRpYyBSZXRhaW5QdHI8TlNTdHJpbmc+IGxhQmFucXVlUG9zdGFsZVF1
aXJrc1NjcmlwdCgpCiB7CiAgICAgTlNVUkwgKnNjcmlwdFVSTCA9IFtbTlNCdW5kbGUgYnVuZGxl
Rm9yQ2xhc3M6V2ViVmlldy5jbGFzc10gVVJMRm9yUmVzb3VyY2U6QCJMYUJhbnF1ZVBvc3RhbGVR
dWlya3MiIHdpdGhFeHRlbnNpb246QCJqcyJdOwogICAgIE5TU3RyaW5nRW5jb2RpbmcgZW5jb2Rp
bmc7Ci0gICAgcmV0dXJuIFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoQ29udGVudHNPZlVSTDpz
Y3JpcHRVUkwgdXNlZEVuY29kaW5nOiZlbmNvZGluZyBlcnJvcjpudWxscHRyXTsKKyAgICByZXR1
cm4gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aENvbnRlbnRzT2ZVUkw6c2NyaXB0
VVJMIHVzZWRFbmNvZGluZzomZW5jb2RpbmcgZXJyb3I6bnVsbHB0cl0pOwogfQogCiAtICh2b2lk
KV9pbmplY3RMYUJhbnF1ZVBvc3RhbGVRdWlya3MKIHsKICAgICBBU1NFUlQobmVlZHNMYUJhbnF1
ZVBvc3RhbGVRdWlya3MoKSk7Ci0gICAgc3RhdGljIE5TU3RyaW5nICogY29uc3QgcXVpcmtzU2Ny
aXB0ID0gbGVha0xhQmFucXVlUG9zdGFsZVF1aXJrc1NjcmlwdCgpOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNTdHJpbmc+PiBxdWlya3NTY3JpcHQgPSBsYUJhbnF1ZVBv
c3RhbGVRdWlya3NTY3JpcHQoKTsKIAogICAgIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotICAg
IGF1dG8gdXNlclNjcmlwdCA9IG1ha2VVbmlxdWU8VXNlclNjcmlwdD4ocXVpcmtzU2NyaXB0LCBV
UkwoKSwgVmVjdG9yPFN0cmluZz4oKSwgVmVjdG9yPFN0cmluZz4oKSwgVXNlclNjcmlwdEluamVj
dGlvblRpbWU6OkRvY3VtZW50RW5kLCBVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJ
bkFsbEZyYW1lcywgV2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUluamVjdGluZzo6Tm8pOworICAg
IGF1dG8gdXNlclNjcmlwdCA9IG1ha2VVbmlxdWU8VXNlclNjcmlwdD4ocXVpcmtzU2NyaXB0Lmdl
dCgpLmdldCgpLCBVUkwoKSwgVmVjdG9yPFN0cmluZz4oKSwgVmVjdG9yPFN0cmluZz4oKSwgVXNl
clNjcmlwdEluamVjdGlvblRpbWU6OkRvY3VtZW50RW5kLCBVc2VyQ29udGVudEluamVjdGVkRnJh
bWVzOjpJbmplY3RJbkFsbEZyYW1lcywgV2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUluamVjdGlu
Zzo6Tm8pOwogICAgIF9wcml2YXRlLT5ncm91cC0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkuYWRk
VXNlclNjcmlwdCgqY29yZShXZWJTY3JpcHRXb3JsZC53b3JsZCksIFdURk1vdmUodXNlclNjcmlw
dCkpOwogfQogI2VuZGlmCkBAIC0zMjE1LDEwICszMjE5LDEwIEBAICsgKHZvaWQpX3JlZ2lzdGVy
Vmlld0NsYXNzOihDbGFzcyl2aWV3Q2xhc3MgcmVwcmVzZW50YXRpb25DbGFzczooQ2xhc3MpcmVw
cmVzZW50CiAKICAgICAvLyBUaGlzIGlzIHVzZWQgdG8gbWFrZSBfcmVwcmVzZW50YXRpb25FeGlz
dHNGb3JVUkxTY2hlbWUgZmFzdGVyLgogICAgIC8vIFdpdGhvdXQgdGhpcyBzZXQsIHdlJ2QgaGF2
ZSB0byBjcmVhdGUgdGhlIE1JTUUgdHlwZSBlYWNoIHRpbWUuCi0gICAgaWYgKHNjaGVtZXNXaXRo
UmVwcmVzZW50YXRpb25zU2V0ID09IG5pbCkgewotICAgICAgICBzY2hlbWVzV2l0aFJlcHJlc2Vu
dGF0aW9uc1NldCA9IFtbTlNNdXRhYmxlU2V0IGFsbG9jXSBpbml0XTsKLSAgICB9Ci0gICAgW3Nj
aGVtZXNXaXRoUmVwcmVzZW50YXRpb25zU2V0IGFkZE9iamVjdDphZG9wdE5TKFtbVVJMU2NoZW1l
IGxvd2VyY2FzZVN0cmluZ10gY29weV0pLmdldCgpXTsKKyAgICBhdXRvJiBzY2hlbWVzID0gc2No
ZW1lc1dpdGhSZXByZXNlbnRhdGlvbnNTZXQoKTsKKyAgICBpZiAoIXNjaGVtZXMpCisgICAgICAg
IHNjaGVtZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlU2V0IGFsbG9jXSBpbml0XSk7CisgICAgW3Nj
aGVtZXMgYWRkT2JqZWN0OmFkb3B0TlMoW1tVUkxTY2hlbWUgbG93ZXJjYXNlU3RyaW5nXSBjb3B5
XSkuZ2V0KCldOwogfQogCiArIChOU1N0cmluZyAqKV9nZW5lcmF0ZWRNSU1FVHlwZUZvclVSTFNj
aGVtZTooTlNTdHJpbmcgKilVUkxTY2hlbWUKQEAgLTMyMjgsNyArMzIzMiw3IEBAICsgKE5TU3Ry
aW5nICopX2dlbmVyYXRlZE1JTUVUeXBlRm9yVVJMU2NoZW1lOihOU1N0cmluZyAqKVVSTFNjaGVt
ZQogCiArIChCT09MKV9yZXByZXNlbnRhdGlvbkV4aXN0c0ZvclVSTFNjaGVtZTooTlNTdHJpbmcg
KilVUkxTY2hlbWUKIHsKLSAgICByZXR1cm4gW3NjaGVtZXNXaXRoUmVwcmVzZW50YXRpb25zU2V0
IGNvbnRhaW5zT2JqZWN0OltVUkxTY2hlbWUgbG93ZXJjYXNlU3RyaW5nXV07CisgICAgcmV0dXJu
IFtzY2hlbWVzV2l0aFJlcHJlc2VudGF0aW9uc1NldCgpIGNvbnRhaW5zT2JqZWN0OltVUkxTY2hl
bWUgbG93ZXJjYXNlU3RyaW5nXV07CiB9CiAKICsgKEJPT0wpX2NhbkhhbmRsZVJlcXVlc3Q6KE5T
VVJMUmVxdWVzdCAqKXJlcXVlc3QgZm9yTWFpbkZyYW1lOihCT09MKWZvck1haW5GcmFtZQpAQCAt
MzI5NSwyMiArMzI5OSwyMCBAQCAtICh2b2lkKV93aWxsQ2hhbmdlVmFsdWVGb3JLZXk6IChOU1N0
cmluZyAqKWtleQogfQogCiArIChCT09MKWF1dG9tYXRpY2FsbHlOb3RpZmllc09ic2VydmVyc0Zv
cktleTooTlNTdHJpbmcgKilrZXkgewotICAgIHN0YXRpYyBOU1NldCAqbWFudWFsTm90aWZ5S2V5
cyA9IG5pbDsKLSAgICBpZiAoIW1hbnVhbE5vdGlmeUtleXMpCi0gICAgICAgIG1hbnVhbE5vdGlm
eUtleXMgPSBbW05TU2V0IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6X1dlYk1haW5GcmFtZVVSTEtl
eSwgX1dlYklzTG9hZGluZ0tleSwgX1dlYkVzdGltYXRlZFByb2dyZXNzS2V5LAotICAgICAgICAg
ICAgX1dlYkNhbkdvQmFja0tleSwgX1dlYkNhbkdvRm9yd2FyZEtleSwgX1dlYk1haW5GcmFtZVRp
dGxlS2V5LCBfV2ViTWFpbkZyYW1lSWNvbktleSwgX1dlYk1haW5GcmFtZURvY3VtZW50S2V5LAot
ICAgICAgICAgICAgbmlsXTsKLSAgICBpZiAoW21hbnVhbE5vdGlmeUtleXMgY29udGFpbnNPYmpl
Y3Q6a2V5XSkKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TU2V0Pj4gbWFu
dWFsTm90aWZ5S2V5cyA9IGFkb3B0TlMoW1tOU1NldCBhbGxvY10gaW5pdFdpdGhPYmplY3RzOl9X
ZWJNYWluRnJhbWVVUkxLZXksIF9XZWJJc0xvYWRpbmdLZXksIF9XZWJFc3RpbWF0ZWRQcm9ncmVz
c0tleSwKKyAgICAgICAgX1dlYkNhbkdvQmFja0tleSwgX1dlYkNhbkdvRm9yd2FyZEtleSwgX1dl
Yk1haW5GcmFtZVRpdGxlS2V5LCBfV2ViTWFpbkZyYW1lSWNvbktleSwgX1dlYk1haW5GcmFtZURv
Y3VtZW50S2V5LCBuaWxdKTsKKyAgICBpZiAoW21hbnVhbE5vdGlmeUtleXMuZ2V0KCkgY29udGFp
bnNPYmplY3Q6a2V5XSkKICAgICAgICAgcmV0dXJuIE5POwogICAgIHJldHVybiBZRVM7CiB9CiAK
IC0gKE5TQXJyYXkgKilfZGVjbGFyZWRLZXlzIHsKLSAgICBzdGF0aWMgTlNBcnJheSAqZGVjbGFy
ZWRLZXlzID0gbmlsOwotICAgIGlmICghZGVjbGFyZWRLZXlzKQotICAgICAgICBkZWNsYXJlZEtl
eXMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czpfV2ViTWFpbkZyYW1lVVJMS2V5
LCBfV2ViSXNMb2FkaW5nS2V5LCBfV2ViRXN0aW1hdGVkUHJvZ3Jlc3NLZXksCi0gICAgICAgICAg
ICBfV2ViQ2FuR29CYWNrS2V5LCBfV2ViQ2FuR29Gb3J3YXJkS2V5LCBfV2ViTWFpbkZyYW1lVGl0
bGVLZXksIF9XZWJNYWluRnJhbWVJY29uS2V5LCBfV2ViTWFpbkZyYW1lRG9jdW1lbnRLZXksIG5p
bF07Ci0gICAgcmV0dXJuIGRlY2xhcmVkS2V5czsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
UmV0YWluUHRyPE5TQXJyYXk+PiBkZWNsYXJlZEtleXMgPSBAWworICAgICAgICBfV2ViTWFpbkZy
YW1lVVJMS2V5LCBfV2ViSXNMb2FkaW5nS2V5LCBfV2ViRXN0aW1hdGVkUHJvZ3Jlc3NLZXksCisg
ICAgICAgIF9XZWJDYW5Hb0JhY2tLZXksIF9XZWJDYW5Hb0ZvcndhcmRLZXksIF9XZWJNYWluRnJh
bWVUaXRsZUtleSwKKyAgICAgICAgX1dlYk1haW5GcmFtZUljb25LZXksIF9XZWJNYWluRnJhbWVE
b2N1bWVudEtleQorICAgIF07CisgICAgcmV0dXJuIGRlY2xhcmVkS2V5cy5nZXQoKS5nZXQoKTsK
IH0KIAogLSAodm9pZClfd2lsbENoYW5nZUJhY2tGb3J3YXJkS2V5cwpAQCAtNTIxMiw3ICs1MjE0
LDcgQEAgLSAoV2ViQmFzZVBsdWdpblBhY2thZ2UgKilfcGx1Z2luRm9yRXh0ZW5zaW9uOihOU1N0
cmluZyAqKWV4dGVuc2lvbgogLSAodm9pZClhZGRQbHVnaW5JbnN0YW5jZVZpZXc6KE5TVmlldyAq
KXZpZXcKIHsKICAgICBpZiAoIV9wcml2YXRlLT5wbHVnaW5EYXRhYmFzZSkKLSAgICAgICAgX3By
aXZhdGUtPnBsdWdpbkRhdGFiYXNlID0gW1tXZWJQbHVnaW5EYXRhYmFzZSBhbGxvY10gaW5pdF07
CisgICAgICAgIF9wcml2YXRlLT5wbHVnaW5EYXRhYmFzZSA9IGFkb3B0TlMoW1tXZWJQbHVnaW5E
YXRhYmFzZSBhbGxvY10gaW5pdF0pOwogICAgIFtfcHJpdmF0ZS0+cGx1Z2luRGF0YWJhc2UgYWRk
UGx1Z2luSW5zdGFuY2VWaWV3OnZpZXddOwogfQogCkBAIC05MDA0LDcgKzkwMDYsNyBAQCAtIChC
T09MKV9zdXBwb3J0c0Z1bGxTY3JlZW5Gb3JFbGVtZW50OihOYWtlZFB0cjxjb25zdCBXZWJDb3Jl
OjpFbGVtZW50PillbGVtZW50CiAtICh2b2lkKV9lbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50OihO
YWtlZFB0cjxXZWJDb3JlOjpFbGVtZW50PillbGVtZW50CiB7CiAgICAgaWYgKCFfcHJpdmF0ZS0+
bmV3RnVsbHNjcmVlbkNvbnRyb2xsZXIpCi0gICAgICAgIF9wcml2YXRlLT5uZXdGdWxsc2NyZWVu
Q29udHJvbGxlciA9IFtbV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIgYWxsb2NdIGluaXRdOworICAg
ICAgICBfcHJpdmF0ZS0+bmV3RnVsbHNjcmVlbkNvbnRyb2xsZXIgPSBhZG9wdE5TKFtbV2ViRnVs
bFNjcmVlbkNvbnRyb2xsZXIgYWxsb2NdIGluaXRdKTsKIAogICAgIFtfcHJpdmF0ZS0+bmV3RnVs
bHNjcmVlbkNvbnRyb2xsZXIgc2V0RWxlbWVudDplbGVtZW50LmdldCgpXTsKICAgICBbX3ByaXZh
dGUtPm5ld0Z1bGxzY3JlZW5Db250cm9sbGVyIHNldFdlYlZpZXc6c2VsZl07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmggYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmgKaW5kZXggNDBiNjdkMWU4MzBj
N2ZiODVjOTQ5ZWI3YThiNjRlMDJkMDdiODMzNS4uODNjNmQ3ODA1MDJlZjJiMThiNTUzYThlODlk
NGMxZWU1MDhhZTg4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJWaWV3RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
Vmlld0RhdGEuaApAQCAtMzMwLDcgKzMzMCw3IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICAKICNp
ZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0gICAgV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIgKm5l
d0Z1bGxzY3JlZW5Db250cm9sbGVyOworICAgIFJldGFpblB0cjxXZWJGdWxsU2NyZWVuQ29udHJv
bGxlcj4gbmV3RnVsbHNjcmVlbkNvbnRyb2xsZXI7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShSRU1P
VEVfSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IGZmNzI5MmE0M2VjNzNjNjZjMDAzYTRmNjNlYjQ0NzA2NTIxMzVlNGYuLmZhODdk
NDk4OTg2MjNjNTJiZWI4NGZlNzY3ODEzNTlkMjAxOTE1YmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAyMS0wMi0y
MCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBhZG9wdE5T
KCkgYXMgc29vbiBhcyB3ZSBbW09iamNDbGFzcyBhbGxvY10gaW5pdF0gdG8gYXZvaWQgbGVha3MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjIzNwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFJ1
bm5lclNoYXJlZC9tYWMvTlNQYXN0ZWJvYXJkQWRkaXRpb25zLm1tOgorICAgICAgICAoK1tOU1Bh
c3RlYm9hcmQgX21vZGVyblBhc3RlYm9hcmRUeXBlOl0pOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyLTEubW06CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRMZWdhY3kvbWFjL0RlYWxsb2NXZWJWaWV3SW5FdmVu
dExpc3RlbmVyLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvQ2FuY2VsTG9hZEZyb21SZXNvdXJjZUxvYWREZWxlZ2F0
ZS5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvbWFjL0Nsb3NlTmV3V2luZG93SW5OYXZpZ2F0aW9uUG9saWN5RGVsZWdhdGUu
bW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL21hYy9NZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0
ZS5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvbWFjL01lbW9yeUNhY2hlUHJ1bmVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0
ZS5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvbWFjL1N0b3BMb2FkaW5nRnJvbURpZFJlY2VpdmVSZXNwb25zZS5tbToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvbWFjL1dpbmRvd2xlc3NXZWJWaWV3V2l0aE1lZGlhLm1tOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9pb3MvbWFpbklPUy5tbToKKyAg
ICAgICAgKG1haW4pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvbWFjL21haW5NYWMubW06Cisg
ICAgICAgIChtYWluKToKKwogMjAyMS0wMi0yMCAgQWFrYXNoIEphaW4gIDxhYWthc2hfamFpbkBh
cHBsZS5jb20+CiAKICAgICAgICAgUmV2ZXJ0IHIyNzIzODQgW1B5dGhvbi0zXSBDaGFuZ2Ugc2hl
YmFuZyBpbiBnaXQtd2Via2l0CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL21h
Yy9OU1Bhc3RlYm9hcmRBZGRpdGlvbnMubW0gYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL21hYy9O
U1Bhc3RlYm9hcmRBZGRpdGlvbnMubW0KaW5kZXggNjkzYWE1ODI4M2ExZjhmMzEwMzNlNWNjYzMx
MWJhZDhiOGJiMjUzZS4uMTA2ZjUwMDUzNWFlNjg1OWRjYTkzY2QzYTQ4YjFlYmI3ODU3YzJiMyAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9tYWMvTlNQYXN0ZWJvYXJkQWRkaXRp
b25zLm1tCisrKyBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvbWFjL05TUGFzdGVib2FyZEFkZGl0
aW9ucy5tbQpAQCAtMzYsMzkgKzM2LDQxIEBAIEBpbXBsZW1lbnRhdGlvbiBOU1Bhc3RlYm9hcmQg
KFRlc3RSdW5uZXJBZGRpdGlvbnMpCiAKICsgKE5TUGFzdGVib2FyZFR5cGUpX21vZGVyblBhc3Rl
Ym9hcmRUeXBlOihOU1N0cmluZyAqKXR5cGUKIHsKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IHVw
ZGF0ZWRUeXBlOwogICAgIGlmIChVVFR5cGVJc0R5bmFtaWMoKF9fYnJpZGdlIENGU3RyaW5nUmVm
KXR5cGUpKSB7CiAgICAgICAgIGlmIChhdXRvIGxlZ2FjeVR5cGUgPSBhZG9wdE5TKChfX2JyaWRn
ZSBOU1N0cmluZyAqKVVUVHlwZUNvcHlQcmVmZXJyZWRUYWdXaXRoQ2xhc3MoKF9fYnJpZGdlIENG
U3RyaW5nUmVmKXR5cGUsIGtVVFRhZ0NsYXNzTlNQYm9hcmRUeXBlKSkpCi0gICAgICAgICAgICB0
eXBlID0gbGVnYWN5VHlwZS5hdXRvcmVsZWFzZSgpOwotICAgIH0KKyAgICAgICAgICAgIHVwZGF0
ZWRUeXBlID0gV1RGTW92ZShsZWdhY3lUeXBlKTsKKyAgICB9IGVsc2UKKyAgICAgICAgdXBkYXRl
ZFR5cGUgPSB0eXBlOwogCi0gICAgaWYgKFt0eXBlIGlzRXF1YWxUb1N0cmluZzpXZWJDb3JlOjps
ZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpXSkKKyAgICBpZiAoW3VwZGF0ZWRUeXBlIGlzRXF1
YWxUb1N0cmluZzpXZWJDb3JlOjpsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpXSkKICAgICAg
ICAgcmV0dXJuIE5TUGFzdGVib2FyZFR5cGVTdHJpbmc7CiAKLSAgICBpZiAoW3R5cGUgaXNFcXVh
bFRvU3RyaW5nOldlYkNvcmU6OmxlZ2FjeUhUTUxQYXN0ZWJvYXJkVHlwZSgpXSkKKyAgICBpZiAo
W3VwZGF0ZWRUeXBlIGlzRXF1YWxUb1N0cmluZzpXZWJDb3JlOjpsZWdhY3lIVE1MUGFzdGVib2Fy
ZFR5cGUoKV0pCiAgICAgICAgIHJldHVybiBOU1Bhc3RlYm9hcmRUeXBlSFRNTDsKIAotICAgIGlm
IChbdHlwZSBpc0VxdWFsVG9TdHJpbmc6V2ViQ29yZTo6bGVnYWN5VElGRlBhc3RlYm9hcmRUeXBl
KCldKQorICAgIGlmIChbdXBkYXRlZFR5cGUgaXNFcXVhbFRvU3RyaW5nOldlYkNvcmU6OmxlZ2Fj
eVRJRkZQYXN0ZWJvYXJkVHlwZSgpXSkKICAgICAgICAgcmV0dXJuIE5TUGFzdGVib2FyZFR5cGVU
SUZGOwogCi0gICAgaWYgKFt0eXBlIGlzRXF1YWxUb1N0cmluZzpXZWJDb3JlOjpsZWdhY3lVUkxQ
YXN0ZWJvYXJkVHlwZSgpXSkKKyAgICBpZiAoW3VwZGF0ZWRUeXBlIGlzRXF1YWxUb1N0cmluZzpX
ZWJDb3JlOjpsZWdhY3lVUkxQYXN0ZWJvYXJkVHlwZSgpXSkKICAgICAgICAgcmV0dXJuIE5TUGFz
dGVib2FyZFR5cGVVUkw7CiAKLSAgICBpZiAoW3R5cGUgaXNFcXVhbFRvU3RyaW5nOldlYkNvcmU6
OmxlZ2FjeVBERlBhc3RlYm9hcmRUeXBlKCldKQorICAgIGlmIChbdXBkYXRlZFR5cGUgaXNFcXVh
bFRvU3RyaW5nOldlYkNvcmU6OmxlZ2FjeVBERlBhc3RlYm9hcmRUeXBlKCldKQogICAgICAgICBy
ZXR1cm4gTlNQYXN0ZWJvYXJkVHlwZVBERjsKIAotICAgIGlmIChbdHlwZSBpc0VxdWFsVG9TdHJp
bmc6V2ViQ29yZTo6bGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCldKQorICAgIGlmIChbdXBkYXRl
ZFR5cGUgaXNFcXVhbFRvU3RyaW5nOldlYkNvcmU6OmxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgp
XSkKICAgICAgICAgcmV0dXJuIE5TUGFzdGVib2FyZFR5cGVSVEZEOwogCi0gICAgaWYgKFt0eXBl
IGlzRXF1YWxUb1N0cmluZzpXZWJDb3JlOjpsZWdhY3lSVEZQYXN0ZWJvYXJkVHlwZSgpXSkKKyAg
ICBpZiAoW3VwZGF0ZWRUeXBlIGlzRXF1YWxUb1N0cmluZzpXZWJDb3JlOjpsZWdhY3lSVEZQYXN0
ZWJvYXJkVHlwZSgpXSkKICAgICAgICAgcmV0dXJuIE5TUGFzdGVib2FyZFR5cGVSVEY7CiAKLSAg
ICBpZiAoW3R5cGUgaXNFcXVhbFRvU3RyaW5nOldlYkNvcmU6OmxlZ2FjeUNvbG9yUGFzdGVib2Fy
ZFR5cGUoKV0pCisgICAgaWYgKFt1cGRhdGVkVHlwZSBpc0VxdWFsVG9TdHJpbmc6V2ViQ29yZTo6
bGVnYWN5Q29sb3JQYXN0ZWJvYXJkVHlwZSgpXSkKICAgICAgICAgcmV0dXJuIE5TUGFzdGVib2Fy
ZFR5cGVDb2xvcjsKIAotICAgIGlmIChbdHlwZSBpc0VxdWFsVG9TdHJpbmc6V2ViQ29yZTo6bGVn
YWN5Rm9udFBhc3RlYm9hcmRUeXBlKCldKQorICAgIGlmIChbdXBkYXRlZFR5cGUgaXNFcXVhbFRv
U3RyaW5nOldlYkNvcmU6OmxlZ2FjeUZvbnRQYXN0ZWJvYXJkVHlwZSgpXSkKICAgICAgICAgcmV0
dXJuIE5TUGFzdGVib2FyZFR5cGVGb250OwogCi0gICAgcmV0dXJuIHR5cGU7CisgICAgcmV0dXJu
IHVwZGF0ZWRUeXBlLmF1dG9yZWxlYXNlKCk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyLTEubW0g
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLVVJMU2NoZW1lSGFuZGxl
ci0xLm1tCmluZGV4IDVjOWIzMDEyMDZiMDU5MWRlNjdkMjJlMGI4ZDc4MmQ3ZGJmZjI3MmIuLjli
YjA0ZTI3MGY3YWVlNGQzMzE4ZTE5YWFiYjc2ZGYyMTFjMDJjNzUgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyLTEubW0K
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1VSTFNjaGVtZUhh
bmRsZXItMS5tbQpAQCAtNTI4LDM5ICs1MjgsMzggQEAgc3RhdGljIGNvbnN0IGNoYXIqIHN5bmNY
SFJCeXRlcyA9ICJNeSBYSFIgdGV4dCEiOwogCiBURVNUKFVSTFNjaGVtZUhhbmRsZXIsIFN5bmNY
SFIpCiB7Ci0gICAgYXV0byAqcG9vbCA9IFtbTlNBdXRvcmVsZWFzZVBvb2wgYWxsb2NdIGluaXRd
OworICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0
aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAg
ICAgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbW1N5bmNTY2hlbWUgYWxsb2NdIGluaXRdKTsK
KyAgICAgICAgW3dlYlZpZXdDb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxl
ci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJzeW5jeGhyIl07CiAKLSAgICBhdXRvIHdlYlZpZXdDb25m
aWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRd
KTsKLSAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtbU3luY1NjaGVtZSBhbGxvY10gaW5pdF0p
OwotICAgIFt3ZWJWaWV3Q29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIu
Z2V0KCkgZm9yVVJMU2NoZW1lOkAic3luY3hociJdOwotICAgIAotICAgIGhhbmRsZXIuZ2V0KCkt
PnJlc291cmNlcy5zZXQoInN5bmN4aHI6Ly9ob3N0L21haW4uaHRtbCIsIFNjaGVtZVJlc291cmNl
SW5mbyB7IEAidGV4dC9odG1sIiwgc3luY01haW5CeXRlcywgdHJ1ZSB9KTsKLSAgICBoYW5kbGVy
LmdldCgpLT5yZXNvdXJjZXMuc2V0KCJzeW5jeGhyOi8vaG9zdC90ZXN0LmRhdCIsIFNjaGVtZVJl
c291cmNlSW5mbyB7IEAidGV4dC9wbGFpbiIsIHN5bmNYSFJCeXRlcywgdHJ1ZSB9KTsKKyAgICAg
ICAgaGFuZGxlci5nZXQoKS0+cmVzb3VyY2VzLnNldCgic3luY3hocjovL2hvc3QvbWFpbi5odG1s
IiwgU2NoZW1lUmVzb3VyY2VJbmZvIHsgQCJ0ZXh0L2h0bWwiLCBzeW5jTWFpbkJ5dGVzLCB0cnVl
IH0pOworICAgICAgICBoYW5kbGVyLmdldCgpLT5yZXNvdXJjZXMuc2V0KCJzeW5jeGhyOi8vaG9z
dC90ZXN0LmRhdCIsIFNjaGVtZVJlc291cmNlSW5mbyB7IEAidGV4dC9wbGFpbiIsIHN5bmNYSFJC
eXRlcywgdHJ1ZSB9KTsKIAotICAgIGF1dG8gbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbU3lu
Y01lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7Ci0gICAgW1t3ZWJWaWV3Q29uZmlndXJhdGlv
biB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VI
YW5kbGVyLmdldCgpIG5hbWU6QCJzeW5jIl07Ci0gICAgCi0gICAgYXV0byB3ZWJWaWV3ID0gYWRv
cHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgw
MCwgNjAwKSBjb25maWd1cmF0aW9uOndlYlZpZXdDb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAg
ICAgIGF1dG8gbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbU3luY01lc3NhZ2VIYW5kbGVyIGFs
bG9jXSBpbml0XSk7CisgICAgICAgIFtbd2ViVmlld0NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRD
b250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjptZXNzYWdlSGFuZGxlci5nZXQoKSBu
YW1lOkAic3luYyJdOwogCi0gICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVz
dCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAInN5bmN4aHI6Ly9ob3N0L21h
aW4uaHRtbCJdXTsKLSAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKKyAgICAgICAg
YXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpO
U01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOndlYlZpZXdDb25maWd1cmF0
aW9uLmdldCgpXSk7CiAKLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkTWVz
c2FnZSk7Ci0gICAgcmVjZWl2ZWRNZXNzYWdlID0gZmFsc2U7CisgICAgICAgIE5TVVJMUmVxdWVz
dCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhT
dHJpbmc6QCJzeW5jeGhyOi8vaG9zdC9tYWluLmh0bWwiXV07CisgICAgICAgIFt3ZWJWaWV3IGxv
YWRSZXF1ZXN0OnJlcXVlc3RdOwogCi0gICAgRVhQRUNUX0VRKCh1bnNpZ25lZClyZWNlaXZlZE1l
c3NhZ2VzLmdldCgpLmNvdW50LCAodW5zaWduZWQpMSk7Ci0gICAgRVhQRUNUX1RSVUUoW3JlY2Vp
dmVkTWVzc2FnZXMuZ2V0KClbMF0gaXNFcXVhbFRvU3RyaW5nOkAiTXkgWEhSIHRleHQhIl0pOwor
ICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkTWVzc2FnZSk7CisgICAg
ICAgIHJlY2VpdmVkTWVzc2FnZSA9IGZhbHNlOwogCi0gICAgLy8gTm93IHRyeSBhZ2FpbiwgYnV0
IGhhbmcgdGhlIFdlYlByb2Nlc3MgaW4gdGhlIHJlcGx5IHRvIHRoZSBYSFIgYnkgdGVsbGluZyB0
aGUgc2NoZW1lIGhhbmRsZXIgdG8gbmV2ZXIKLSAgICAvLyByZXNwb25kIHRvIGl0LgotICAgIGhh
bmRsZXIuZ2V0KCktPnJlc291cmNlcy5maW5kKCJzeW5jeGhyOi8vaG9zdC90ZXN0LmRhdCIpLT52
YWx1ZS5zaG91bGRSZXNwb25kID0gZmFsc2U7Ci0gICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVx
dWVzdF07CisgICAgICAgIEVYUEVDVF9FUSgodW5zaWduZWQpcmVjZWl2ZWRNZXNzYWdlcy5nZXQo
KS5jb3VudCwgKHVuc2lnbmVkKTEpOworICAgICAgICBFWFBFQ1RfVFJVRShbcmVjZWl2ZWRNZXNz
YWdlcy5nZXQoKVswXSBpc0VxdWFsVG9TdHJpbmc6QCJNeSBYSFIgdGV4dCEiXSk7CiAKLSAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnN0YXJ0ZWRYSFIpOwotICAgIHJlY2VpdmVkTWVzc2Fn
ZSA9IGZhbHNlOworICAgICAgICAvLyBOb3cgdHJ5IGFnYWluLCBidXQgaGFuZyB0aGUgV2ViUHJv
Y2VzcyBpbiB0aGUgcmVwbHkgdG8gdGhlIFhIUiBieSB0ZWxsaW5nIHRoZSBzY2hlbWUgaGFuZGxl
ciB0byBuZXZlcgorICAgICAgICAvLyByZXNwb25kIHRvIGl0LgorICAgICAgICBoYW5kbGVyLmdl
dCgpLT5yZXNvdXJjZXMuZmluZCgic3luY3hocjovL2hvc3QvdGVzdC5kYXQiKS0+dmFsdWUuc2hv
dWxkUmVzcG9uZCA9IGZhbHNlOworICAgICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0
XTsKIAotICAgIHdlYlZpZXcgPSBuaWw7Ci0gICAgW3Bvb2wgZHJhaW5dOworICAgICAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJnN0YXJ0ZWRYSFIpOworICAgICAgICByZWNlaXZlZE1lc3Nh
Z2UgPSBmYWxzZTsKKworICAgICAgICB3ZWJWaWV3ID0gbmlsOworICAgIH0KICAgICAKICAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU3RvcCk7CiB9CkBAIC03NDEsMzkgKzc0
MCwzNyBAQCBURVNUKFVSTFNjaGVtZUhhbmRsZXIsIFhIUlBvc3QpCiAKIFRFU1QoVVJMU2NoZW1l
SGFuZGxlciwgVGhyZWFkcykKIHsKLSAgICBOU0F1dG9yZWxlYXNlUG9vbCAqcG9vbCA9IFtbTlNB
dXRvcmVsZWFzZVBvb2wgYWxsb2NdIGluaXRdOwotCi0gICAgYXV0byBoYW5kbGVyID0gYWRvcHRO
UyhbW1Rlc3RVUkxTY2hlbWVIYW5kbGVyIGFsbG9jXSBpbml0XSk7Ci0gICAgYXV0byBjb25maWd1
cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsK
LSAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgZm9y
VVJMU2NoZW1lOkAidGhyZWFkcyJdOwotICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDAp
IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwotCiAgICAgc3RhdGljIGJvb2wg
ZG9uZTsKLSAgICBzdGF0aWMgaWQ8V0tVUkxTY2hlbWVUYXNrPiB0aGVUYXNrOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8aWQ8V0tVUkxTY2hlbWVUYXNrPj4+IHRoZVRhc2s7
CiAgICAgc3RhdGljIFJlZlB0cjxUaHJlYWQ+IHRoZVRocmVhZDsKLSAgICBbaGFuZGxlciBzZXRT
dGFydFVSTFNjaGVtZVRhc2tIYW5kbGVyOl4oV0tXZWJWaWV3ICosIGlkPFdLVVJMU2NoZW1lVGFz
az4gdGFzaykgewotICAgICAgICB0aGVUYXNrID0gdGFzazsKLSAgICAgICAgW3Rhc2sgcmV0YWlu
XTsKLSAgICAgICAgdGhlVGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoIkEiLCBbdGFza10gewotICAg
ICAgICAgICAgYXV0byByZXNwb25zZSA9IGFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBp
bml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3Rl
ZENvbnRlbnRMZW5ndGg6MCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0pOwotICAgICAgICAgICAgW3Rh
c2sgZGlkUmVjZWl2ZVJlc3BvbnNlOnJlc3BvbnNlLmdldCgpXTsKLSAgICAgICAgICAgIFt0YXNr
IGRpZEZpbmlzaF07Ci0gICAgICAgICAgICBkb25lID0gdHJ1ZTsKLSAgICAgICAgfSk7Ci0gICAg
fV07CiAKLSAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRo
VVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAidGhyZWFkczovL21haW4uaHRtbCJdXV07CisgICAg
QGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0TlMoW1tUZXN0
VVJMU2NoZW1lSGFuZGxlciBhbGxvY10gaW5pdF0pOworICAgICAgICBhdXRvIGNvbmZpZ3VyYXRp
b24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAg
ICAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgZm9y
VVJMU2NoZW1lOkAidGhyZWFkcyJdOworICAgICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtb
VGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwg
NjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICAgICAgW2hhbmRs
ZXIgc2V0U3RhcnRVUkxTY2hlbWVUYXNrSGFuZGxlcjpeKFdLV2ViVmlldyAqLCBpZDxXS1VSTFNj
aGVtZVRhc2s+IHRhc2spIHsKKyAgICAgICAgICAgIHRoZVRhc2suZ2V0KCkgPSByZXRhaW5QdHIo
dGFzayk7CisgICAgICAgICAgICB0aGVUaHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiQSIsIFt0YXNr
XSB7CisgICAgICAgICAgICAgICAgYXV0byByZXNwb25zZSA9IGFkb3B0TlMoW1tOU1VSTFJlc3Bv
bnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9o
dG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6MCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0pOworICAg
ICAgICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpyZXNwb25zZS5nZXQoKV07Cisg
ICAgICAgICAgICAgICAgW3Rhc2sgZGlkRmluaXNoXTsKKyAgICAgICAgICAgICAgICBkb25lID0g
dHJ1ZTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9XTsKKworICAgICAgICBbd2ViVmlldyBs
b2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3Ry
aW5nOkAidGhyZWFkczovL21haW4uaHRtbCJdXV07CiAKLSAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJmRvbmUpOworICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwog
Ci0gICAgaGFuZGxlciA9IG5pbDsKLSAgICBjb25maWd1cmF0aW9uID0gbmlsOwotICAgIHdlYlZp
ZXcgPSBuaWw7Ci0gICAgdGhlVGhyZWFkID0gbnVsbHB0cjsKLSAgICBbcG9vbCBkcmFpbl07Cisg
ICAgICAgIGhhbmRsZXIgPSBuaWw7CisgICAgICAgIGNvbmZpZ3VyYXRpb24gPSBuaWw7CisgICAg
ICAgIHdlYlZpZXcgPSBuaWw7CisgICAgICAgIHRoZVRocmVhZCA9IG51bGxwdHI7CisgICAgfQog
CiAgICAgVGhyZWFkOjpjcmVhdGUoIkIiLCBbXSB7Ci0gICAgICAgIGF1dG8gb2xkVGFzayA9IGFk
b3B0TlMoc3RkOjpleGNoYW5nZSh0aGVUYXNrLCBuaWwpKTsKKyAgICAgICAgdGhlVGFzay5nZXQo
KSA9IG5pbDsKICAgICB9KS0+d2FpdEZvckNvbXBsZXRpb24oKTsKIH0KIApkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRMZWdhY3kvbWFjL0RlYWxsb2NXZWJWaWV3
SW5FdmVudExpc3RlbmVyLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRMZWdh
Y3kvbWFjL0RlYWxsb2NXZWJWaWV3SW5FdmVudExpc3RlbmVyLm1tCmluZGV4IGY0MjQ5ZGY0Y2Fl
YWNjZmZlOWI4MGE4OWNjODNkYTI0NmQ2MTMyYmUuLmRmNjA1MWFkNTkyNDczODg3MjA4ZGZhYjkw
MzI0NDJiMzFiMmUwY2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0TGVnYWN5L21hYy9EZWFsbG9jV2ViVmlld0luRXZlbnRMaXN0ZW5lci5tbQorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdExlZ2FjeS9tYWMvRGVhbGxvY1dlYlZpZXdJbkV2
ZW50TGlzdGVuZXIubW0KQEAgLTcwLDggKzcwLDcgQEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkg
ewogCiBURVNUKFdlYktpdExlZ2FjeSwgRGVhbGxvY1dlYlZpZXdJbkV2ZW50TGlzdGVuZXIpCiB7
Ci0gICAgewotICAgICAgICBOU0F1dG9yZWxlYXNlUG9vbCAqcG9vbCA9IFtbTlNBdXRvcmVsZWFz
ZVBvb2wgYWxsb2NdIGluaXRdOworICAgIEBhdXRvcmVsZWFzZXBvb2wgewogICAgICAgICB3ZWJW
aWV3ID0gYWRvcHROUyhbW1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgw
LCAwLCA0MDAsIDQwMCkgZnJhbWVOYW1lOm5pbCBncm91cE5hbWU6bmlsXSk7CiAgICAgICAgIGF1
dG8gbG9hZERlbGVnYXRlID0gYWRvcHROUyhbW0RlYWxsb2NXZWJWaWV3SW5FdmVudExpc3RlbmVy
TG9hZERlbGVnYXRlIGFsbG9jXSBpbml0XSk7CiAgICAgICAgIHdlYlZpZXcuZ2V0KCkuZnJhbWVM
b2FkRGVsZWdhdGUgPSBsb2FkRGVsZWdhdGUuZ2V0KCk7CkBAIC04NCw3ICs4Myw2IEBAIFRFU1Qo
V2ViS2l0TGVnYWN5LCBEZWFsbG9jV2ViVmlld0luRXZlbnRMaXN0ZW5lcikKICAgICAgICAgW1tb
d2ViVmlldyBtYWluRnJhbWVEb2N1bWVudF0gYm9keV0gYWRkRXZlbnRMaXN0ZW5lcjpAImtleXBy
ZXNzIiBsaXN0ZW5lcjpudWxscHRyIHVzZUNhcHR1cmU6Tk9dOwogICAgICAgICBsaXN0ZW5lciA9
IG51bGxwdHI7CiAgICAgICAgIFt3ZWJWaWV3IGNsb3NlXTsKLSAgICAgICAgW3Bvb2wgZHJhaW5d
OwogICAgIH0KICAgICBVdGlsOjpydW4oJmRpZENsb3NlKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0NhbmNlbExvYWRGcm9tUmVzb3VyY2VMb2FkRGVsZWdh
dGUubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9DYW5jZWxMb2FkRnJvbVJlc291
cmNlTG9hZERlbGVnYXRlLm1tCmluZGV4IDk4MTk2YTdmNzVmODEwNjE5NmQ4M2MyNDhlOGJiMzc0
YWQyYThlNzcuLjE2NWFlOTU1ZDkzNGEyMzVmYzQ3MGE0ZjdkYmU5MjBkY2UzZjJkODYgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0NhbmNlbExvYWRGcm9tUmVzb3Vy
Y2VMb2FkRGVsZWdhdGUubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvQ2Fu
Y2VsTG9hZEZyb21SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbQpAQCAtNjIsMjAgKzYyLDE4IEBAIG5h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogVEVTVChXZWJLaXRMZWdhY3ksIENhbmNlbExvYWRG
cm9tUmVzb3VyY2VMb2FkRGVsZWdhdGUpCiB7Ci0gICAgTlNBdXRvcmVsZWFzZVBvb2wgKnBvb2wg
PSBbW05TQXV0b3JlbGVhc2VQb29sIGFsbG9jXSBpbml0XTsKKyAgICBAYXV0b3JlbGVhc2Vwb29s
IHsKKyAgICAgICAgUmV0YWluUHRyPFdlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEyMCwgMjAwKSBmcmFtZU5h
bWU6bmlsIGdyb3VwTmFtZTpuaWxdKTsKIAotICAgIFJldGFpblB0cjxXZWJWaWV3PiB3ZWJWaWV3
ID0gYWRvcHROUyhbW1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAw
LCAxMjAsIDIwMCkgZnJhbWVOYW1lOm5pbCBncm91cE5hbWU6bmlsXSk7CisgICAgICAgIFJldGFp
blB0cjxDYW5jZWxMb2FkRnJvbVJlc291cmNlTG9hZERlbGVnYXRlPiByZXNvdXJjZUxvYWREZWxl
Z2F0ZSA9IGFkb3B0TlMoW1tDYW5jZWxMb2FkRnJvbVJlc291cmNlTG9hZERlbGVnYXRlIGFsbG9j
XSBpbml0XSk7CisgICAgICAgIHdlYlZpZXcuZ2V0KCkucmVzb3VyY2VMb2FkRGVsZWdhdGUgPSBy
ZXNvdXJjZUxvYWREZWxlZ2F0ZS5nZXQoKTsKKyAgICAgICAgUmV0YWluUHRyPENhbmNlbExvYWRG
cm9tUmVzb3VyY2VMb2FkRGVsZWdhdGVGcmFtZUxvYWREZWxlZ2F0ZT4gZnJhbWVMb2FkRGVsZWdh
dGUgPSBhZG9wdE5TKFtbQ2FuY2VsTG9hZEZyb21SZXNvdXJjZUxvYWREZWxlZ2F0ZUZyYW1lTG9h
ZERlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgICAgIHdlYlZpZXcuZ2V0KCkuZnJhbWVMb2Fk
RGVsZWdhdGUgPSBmcmFtZUxvYWREZWxlZ2F0ZS5nZXQoKTsKIAotICAgIFJldGFpblB0cjxDYW5j
ZWxMb2FkRnJvbVJlc291cmNlTG9hZERlbGVnYXRlPiByZXNvdXJjZUxvYWREZWxlZ2F0ZSA9IGFk
b3B0TlMoW1tDYW5jZWxMb2FkRnJvbVJlc291cmNlTG9hZERlbGVnYXRlIGFsbG9jXSBpbml0XSk7
Ci0gICAgd2ViVmlldy5nZXQoKS5yZXNvdXJjZUxvYWREZWxlZ2F0ZSA9IHJlc291cmNlTG9hZERl
bGVnYXRlLmdldCgpOwotICAgIFJldGFpblB0cjxDYW5jZWxMb2FkRnJvbVJlc291cmNlTG9hZERl
bGVnYXRlRnJhbWVMb2FkRGVsZWdhdGU+IGZyYW1lTG9hZERlbGVnYXRlID0gYWRvcHROUyhbW0Nh
bmNlbExvYWRGcm9tUmVzb3VyY2VMb2FkRGVsZWdhdGVGcmFtZUxvYWREZWxlZ2F0ZSBhbGxvY10g
aW5pdF0pOwotICAgIHdlYlZpZXcuZ2V0KCkuZnJhbWVMb2FkRGVsZWdhdGUgPSBmcmFtZUxvYWRE
ZWxlZ2F0ZS5nZXQoKTsKKyAgICAgICAgW1t3ZWJWaWV3LmdldCgpIG1haW5GcmFtZV0gbG9hZFJl
cXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVd
IFVSTEZvclJlc291cmNlOkAiQ2FuY2VsTG9hZEZyb21SZXNvdXJjZUxvYWREZWxlZ2F0ZSIgd2l0
aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2Vz
Il1dXTsKIAotICAgIFtbd2ViVmlldy5nZXQoKSBtYWluRnJhbWVdIGxvYWRSZXF1ZXN0OltOU1VS
TFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNv
dXJjZTpAIkNhbmNlbExvYWRGcm9tUmVzb3VyY2VMb2FkRGVsZWdhdGUiIHdpdGhFeHRlbnNpb246
QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXV07Ci0KLSAg
ICBVdGlsOjpydW4oJmRpZEZpbmlzaExvYWQpOwotCi0gICAgW3Bvb2wgZHJhaW5dOworICAgICAg
ICBVdGlsOjpydW4oJmRpZEZpbmlzaExvYWQpOworICAgIH0KICAgICAvLyBJZiB3ZSBmaW5pc2hl
ZCB3aXRob3V0IGNyYXNoaW5nLCB0aGUgdGVzdCBwYXNzZWQuCiB9CiAKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0Nsb3NlTmV3V2luZG93SW5OYXZpZ2F0aW9uUG9s
aWN5RGVsZWdhdGUubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9DbG9zZU5ld1dp
bmRvd0luTmF2aWdhdGlvblBvbGljeURlbGVnYXRlLm1tCmluZGV4IDliNmIyNDE0NTRhMzk3MmI0
OWQ2NjA1ZWI5ZDE1YWJlNWUzMzk1MmQuLmMxZGY4MmI4ZjUwOGI2ZDAyM2NjOTM2Y2I1OGEwMTI3
MTg1ZmM0YmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0Nsb3Nl
TmV3V2luZG93SW5OYXZpZ2F0aW9uUG9saWN5RGVsZWdhdGUubW0KKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9tYWMvQ2xvc2VOZXdXaW5kb3dJbk5hdmlnYXRpb25Qb2xpY3lEZWxlZ2F0
ZS5tbQpAQCAtNjksMTYgKzY5LDE0IEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogVEVT
VChXZWJLaXRMZWdhY3ksIENsb3NlTmV3V2luZG93SW5OYXZpZ2F0aW9uUG9saWN5RGVsZWdhdGUp
CiB7Ci0gICAgTlNBdXRvcmVsZWFzZVBvb2wgKnBvb2wgPSBbW05TQXV0b3JlbGVhc2VQb29sIGFs
bG9jXSBpbml0XTsKKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgUmV0YWluUHRyPFdl
YlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV2ViVmlldyBhbGxvY10gaW5pdF0pOworICAgICAg
ICB3ZWJWaWV3LmdldCgpLnByZWZlcmVuY2VzLmphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9t
YXRpY2FsbHkgPSBZRVM7CisgICAgICAgIHdlYlZpZXcuZ2V0KCkuVUlEZWxlZ2F0ZSA9IFtUZXN0
RGVsZWdhdGUgc2hhcmVkXTsKKyAgICAgICAgW1t3ZWJWaWV3LmdldCgpIG1haW5GcmFtZV0gbG9h
ZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5k
bGVdIFVSTEZvclJlc291cmNlOkAiT3Blbk5ld1dpbmRvdyIgd2l0aEV4dGVuc2lvbjpAImh0bWwi
IHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dXTsKIAotICAgIFJldGFp
blB0cjxXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dlYlZpZXcgYWxsb2NdIGluaXRdKTsK
LSAgICB3ZWJWaWV3LmdldCgpLnByZWZlcmVuY2VzLmphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1
dG9tYXRpY2FsbHkgPSBZRVM7Ci0gICAgd2ViVmlldy5nZXQoKS5VSURlbGVnYXRlID0gW1Rlc3RE
ZWxlZ2F0ZSBzaGFyZWRdOwotICAgIFtbd2ViVmlldy5nZXQoKSBtYWluRnJhbWVdIGxvYWRSZXF1
ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBV
UkxGb3JSZXNvdXJjZTpAIk9wZW5OZXdXaW5kb3ciIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJk
aXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXV07Ci0gICAgCi0gICAgVXRpbDo6
cnVuKCZ0ZXN0RmluaXNoZWQpOwotICAgIAotICAgIFtwb29sIGRyYWluXTsKKyAgICAgICAgVXRp
bDo6cnVuKCZ0ZXN0RmluaXNoZWQpOworICAgIH0KIH0KICAgICAKIH0gLy8gbmFtZXNwYWNlIFRl
c3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL01l
bW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLm1tIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9tYWMvTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2Fk
RGVsZWdhdGUubW0KaW5kZXggZDU2MWRjYjY2Mjk4N2Q1MzZkN2QzNTc3MTc5NWVkZWFhN2ZhNDAz
Ny4uZjU0NWRlNDQwNjg3YTkyNTMwOTQ2ZDUyMjk5ODA1YjIwZGU0M2I3NSAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVz
b3VyY2VMb2FkRGVsZWdhdGUubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMv
TWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0KQEAgLTcyLDE4
ICs3MiwxNiBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIFRFU1QoV2ViS2l0TGVnYWN5
LCBNZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZSkKIHsKLSAgICBO
U0F1dG9yZWxlYXNlUG9vbCAqcG9vbCA9IFtbTlNBdXRvcmVsZWFzZVBvb2wgYWxsb2NdIGluaXRd
OworICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBSZXRhaW5QdHI8V2ViVmlldz4gd2Vi
VmlldyA9IGFkb3B0TlMoW1tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3Qo
MCwgMCwgMTIwLCAyMDApIGZyYW1lTmFtZTpuaWwgZ3JvdXBOYW1lOm5pbF0pOwogCi0gICAgUmV0
YWluUHRyPFdlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV2ViVmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEyMCwgMjAwKSBmcmFtZU5hbWU6bmlsIGdyb3VwTmFt
ZTpuaWxdKTsKKyAgICAgICAgUmV0YWluUHRyPE1lbW9yeUNhY2hlRGlzYWJsZVRlc3RSZXNvdXJj
ZUxvYWREZWxlZ2F0ZT4gcmVzb3VyY2VMb2FkRGVsZWdhdGUgPSBhZG9wdE5TKFtbTWVtb3J5Q2Fj
aGVEaXNhYmxlVGVzdFJlc291cmNlTG9hZERlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgICAg
IHdlYlZpZXcuZ2V0KCkucmVzb3VyY2VMb2FkRGVsZWdhdGUgPSByZXNvdXJjZUxvYWREZWxlZ2F0
ZS5nZXQoKTsKIAotICAgIFJldGFpblB0cjxNZW1vcnlDYWNoZURpc2FibGVUZXN0UmVzb3VyY2VM
b2FkRGVsZWdhdGU+IHJlc291cmNlTG9hZERlbGVnYXRlID0gYWRvcHROUyhbW01lbW9yeUNhY2hl
RGlzYWJsZVRlc3RSZXNvdXJjZUxvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwotICAgIHdlYlZp
ZXcuZ2V0KCkucmVzb3VyY2VMb2FkRGVsZWdhdGUgPSByZXNvdXJjZUxvYWREZWxlZ2F0ZS5nZXQo
KTsKKyAgICAgICAgW1t3ZWJWaWV3LmdldCgpIG1haW5GcmFtZV0gbG9hZFJlcXVlc3Q6W05TVVJM
UmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291
cmNlOkAiTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUiIHdpdGhF
eHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJd
XV07CiAKLSAgICBbW3dlYlZpZXcuZ2V0KCkgbWFpbkZyYW1lXSBsb2FkUmVxdWVzdDpbTlNVUkxS
ZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3Vy
Y2U6QCJNZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZSIgd2l0aEV4
dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1d
XTsKLQotICAgIFV0aWw6OnJ1bigmZGlkRmluaXNoTG9hZCk7Ci0gICAgCi0gICAgW3Bvb2wgZHJh
aW5dOworICAgICAgICBVdGlsOjpydW4oJmRpZEZpbmlzaExvYWQpOworICAgIH0KICAgICAvLyBJ
ZiB3ZSBmaW5pc2hlZCB3aXRob3V0IGNyYXNoaW5nLCB0aGUgdGVzdCBwYXNzZWQuCiB9CiAKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL01lbW9yeUNhY2hlUHJ1bmVX
aXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
bWFjL01lbW9yeUNhY2hlUHJ1bmVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbQppbmRleCA3
NWM2ZmEzZTgwNDkyMTFlMmU3MGM1M2RjMmFjYjc2NzdiZTE5YzA5Li4wMWU3NDRmNDhiMDRhYWFj
ZWI2NDdiOGYxMmI2OTYyNTZkNWU1MzNlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL21hYy9NZW1vcnlDYWNoZVBydW5lV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0K
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTWVtb3J5Q2FjaGVQcnVuZVdpdGhp
blJlc291cmNlTG9hZERlbGVnYXRlLm1tCkBAIC03NywyMyArNzcsMjEgQEAgbmFtZXNwYWNlIFRl
c3RXZWJLaXRBUEkgewogCiBURVNUKFdlYktpdExlZ2FjeSwgRElTQUJMRURfTWVtb3J5Q2FjaGVQ
cnVuZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlKQogewotICAgIE5TQXV0b3JlbGVhc2VQb29s
ICpwb29sID0gW1tOU0F1dG9yZWxlYXNlUG9vbCBhbGxvY10gaW5pdF07CisgICAgQGF1dG9yZWxl
YXNlcG9vbCB7CisgICAgICAgIFJldGFpblB0cjxXZWJWaWV3PiB3ZWJWaWV3MSA9IGFkb3B0TlMo
W1tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTIwLCAyMDAp
IGZyYW1lTmFtZTpuaWwgZ3JvdXBOYW1lOm5pbF0pOworICAgICAgICBSZXRhaW5QdHI8V2ViVmll
dz4gd2ViVmlldzIgPSBhZG9wdE5TKFtbV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01h
a2VSZWN0KDAsIDAsIDEyMCwgMjAwKSBmcmFtZU5hbWU6bmlsIGdyb3VwTmFtZTpuaWxdKTsKIAot
ICAgIFJldGFpblB0cjxXZWJWaWV3PiB3ZWJWaWV3MSA9IGFkb3B0TlMoW1tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTIwLCAyMDApIGZyYW1lTmFtZTpuaWwg
Z3JvdXBOYW1lOm5pbF0pOwotICAgIFJldGFpblB0cjxXZWJWaWV3PiB3ZWJWaWV3MiA9IGFkb3B0
TlMoW1tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTIwLCAy
MDApIGZyYW1lTmFtZTpuaWwgZ3JvdXBOYW1lOm5pbF0pOworICAgICAgICBOU1dpbmRvdyogd2lu
ZG93ID0gW1tOU1dpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDp3ZWJWaWV3Mi5nZXQo
KS5mcmFtZSBzdHlsZU1hc2s6TlNCb3JkZXJsZXNzV2luZG93TWFzayBiYWNraW5nOk5TQmFja2lu
Z1N0b3JlQnVmZmVyZWQgZGVmZXI6WUVTXTsKKyAgICAgICAgW3dpbmRvdy5jb250ZW50VmlldyBh
ZGRTdWJ2aWV3OndlYlZpZXcyLmdldCgpXTsKIAotICAgIE5TV2luZG93KiB3aW5kb3cgPSBbW05T
V2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0OndlYlZpZXcyLmdldCgpLmZyYW1lIHN0
eWxlTWFzazpOU0JvcmRlcmxlc3NXaW5kb3dNYXNrIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZm
ZXJlZCBkZWZlcjpZRVNdOwotICAgIFt3aW5kb3cuY29udGVudFZpZXcgYWRkU3Vidmlldzp3ZWJW
aWV3Mi5nZXQoKV07CisgICAgICAgIFJldGFpblB0cjxNZW1vcnlDYWNoZVBydW5lVGVzdFJlc291
cmNlTG9hZERlbGVnYXRlPiByZXNvdXJjZUxvYWREZWxlZ2F0ZSA9IGFkb3B0TlMoW1tNZW1vcnlD
YWNoZVBydW5lVGVzdFJlc291cmNlTG9hZERlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgICAg
IHJlc291cmNlTG9hZERlbGVnYXRlLmdldCgpLT5fd2luZG93ID0gd2luZG93OworICAgICAgICB3
ZWJWaWV3MS5nZXQoKS5yZXNvdXJjZUxvYWREZWxlZ2F0ZSA9IHJlc291cmNlTG9hZERlbGVnYXRl
LmdldCgpOwogCi0gICAgUmV0YWluUHRyPE1lbW9yeUNhY2hlUHJ1bmVUZXN0UmVzb3VyY2VMb2Fk
RGVsZWdhdGU+IHJlc291cmNlTG9hZERlbGVnYXRlID0gYWRvcHROUyhbW01lbW9yeUNhY2hlUHJ1
bmVUZXN0UmVzb3VyY2VMb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKLSAgICByZXNvdXJjZUxv
YWREZWxlZ2F0ZS5nZXQoKS0+X3dpbmRvdyA9IHdpbmRvdzsKLSAgICB3ZWJWaWV3MS5nZXQoKS5y
ZXNvdXJjZUxvYWREZWxlZ2F0ZSA9IHJlc291cmNlTG9hZERlbGVnYXRlLmdldCgpOworICAgICAg
ICBbW3dlYlZpZXcxLmdldCgpIG1haW5GcmFtZV0gbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCBy
ZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAiTWVt
b3J5Q2FjaGVQcnVuZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlIiB3aXRoRXh0ZW5zaW9uOkAi
aHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV1dOwogCi0gICAg
W1t3ZWJWaWV3MS5nZXQoKSBtYWluRnJhbWVdIGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVx
dWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAIk1lbW9y
eUNhY2hlUHJ1bmVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZSIgd2l0aEV4dGVuc2lvbjpAImh0
bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dXTsKLQotICAgIFV0
aWw6OnJ1bigmZGlkRmluaXNoTG9hZCk7Ci0gICAgCi0gICAgW3Bvb2wgZHJhaW5dOworICAgICAg
ICBVdGlsOjpydW4oJmRpZEZpbmlzaExvYWQpOworICAgIH0KICAgICAvLyBJZiB3ZSBmaW5pc2hl
ZCB3aXRob3V0IGNyYXNoaW5nLCB0aGUgdGVzdCBwYXNzZWQuCiB9CiAKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1N0b3BMb2FkaW5nRnJvbURpZFJlY2VpdmVSZXNw
b25zZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1N0b3BMb2FkaW5nRnJvbURp
ZFJlY2VpdmVSZXNwb25zZS5tbQppbmRleCAxMzY5NmQ2YThlMTU1NjRlNjZlYTQ1MWYwYzBkNTgx
Y2RlYTUyMGFmLi4wZTgyNWM2MWYzMmVmYTVkZDk3YzgxZmJhOWUzNzczY2RjNTU1NGYwIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9TdG9wTG9hZGluZ0Zyb21EaWRS
ZWNlaXZlUmVzcG9uc2UubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvU3Rv
cExvYWRpbmdGcm9tRGlkUmVjZWl2ZVJlc3BvbnNlLm1tCkBAIC01NSwxOCArNTUsMTYgQEAgbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBURVNUKFdlYktpdExlZ2FjeSwgU3RvcExvYWRpbmdG
cm9tRGlkUmVjZWl2ZVJlc3BvbnNlKQogewotICAgIE5TQXV0b3JlbGVhc2VQb29sICpwb29sID0g
W1tOU0F1dG9yZWxlYXNlUG9vbCBhbGxvY10gaW5pdF07CisgICAgQGF1dG9yZWxlYXNlcG9vbCB7
CisgICAgICAgIFJldGFpblB0cjxXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dlYlZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAxMjAsIDIwMCkgZnJhbWVOYW1l
Om5pbCBncm91cE5hbWU6bmlsXSk7CiAKLSAgICBSZXRhaW5QdHI8V2ViVmlldz4gd2ViVmlldyA9
IGFkb3B0TlMoW1tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwg
MTIwLCAyMDApIGZyYW1lTmFtZTpuaWwgZ3JvdXBOYW1lOm5pbF0pOworICAgICAgICBSZXRhaW5Q
dHI8U3RvcExvYWRpbmdGcm9tRGlkUmVjZWl2ZVJlc3BvbnNlPiByZXNvdXJjZUxvYWREZWxlZ2F0
ZSA9IGFkb3B0TlMoW1tTdG9wTG9hZGluZ0Zyb21EaWRSZWNlaXZlUmVzcG9uc2UgYWxsb2NdIGlu
aXRdKTsKKyAgICAgICAgd2ViVmlldy5nZXQoKS5yZXNvdXJjZUxvYWREZWxlZ2F0ZSA9IHJlc291
cmNlTG9hZERlbGVnYXRlLmdldCgpOwogCi0gICAgUmV0YWluUHRyPFN0b3BMb2FkaW5nRnJvbURp
ZFJlY2VpdmVSZXNwb25zZT4gcmVzb3VyY2VMb2FkRGVsZWdhdGUgPSBhZG9wdE5TKFtbU3RvcExv
YWRpbmdGcm9tRGlkUmVjZWl2ZVJlc3BvbnNlIGFsbG9jXSBpbml0XSk7Ci0gICAgd2ViVmlldy5n
ZXQoKS5yZXNvdXJjZUxvYWREZWxlZ2F0ZSA9IHJlc291cmNlTG9hZERlbGVnYXRlLmdldCgpOwor
ICAgICAgICBbW3dlYlZpZXcuZ2V0KCkgbWFpbkZyYW1lXSBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1
ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6
QCJTdG9wTG9hZGluZ0Zyb21EaWRSZWNlaXZlUmVzcG9uc2UiIHdpdGhFeHRlbnNpb246QCJodG1s
IiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXV07CiAKLSAgICBbW3dl
YlZpZXcuZ2V0KCkgbWFpbkZyYW1lXSBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RX
aXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJTdG9wTG9hZGlu
Z0Zyb21EaWRSZWNlaXZlUmVzcG9uc2UiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rv
cnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXV07Ci0KLSAgICBVdGlsOjpydW4oJmRpZEZp
bmlzaExvYWQpOwotICAgIAotICAgIFtwb29sIGRyYWluXTsKKyAgICAgICAgVXRpbDo6cnVuKCZk
aWRGaW5pc2hMb2FkKTsKKyAgICB9CiAgICAgLy8gSWYgd2UgZmluaXNoZWQgd2l0aG91dCBjcmFz
aGluZywgdGhlIHRlc3QgcGFzc2VkLgogfQogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL21hYy9XaW5kb3dsZXNzV2ViVmlld1dpdGhNZWRpYS5tbSBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvbWFjL1dpbmRvd2xlc3NXZWJWaWV3V2l0aE1lZGlhLm1tCmluZGV4IDAw
ZWI3NTYzMGUxNzU3NzMyOThlN2Q4Y2E2YmNlYWU0YzQyYTg4YzkuLmNhNzEwZjRjZTNjODcyMGQ3
OTNiZGNlNTZlYzA0N2U4NzYyY2VkNDMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvbWFjL1dpbmRvd2xlc3NXZWJWaWV3V2l0aE1lZGlhLm1tCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvbWFjL1dpbmRvd2xlc3NXZWJWaWV3V2l0aE1lZGlhLm1tCkBAIC02Mywy
NCArNjMsMjIgQEAgc3RhdGljIHZvaWQgc3Bpbkxvb3AoTlNUaW1lSW50ZXJ2YWwgdGltZW91dCwg
Qk9PTCAoXmJsb2NrKSgpKQogCiBURVNUKFdlYktpdExlZ2FjeSwgV2luZG93bGVzc1dlYlZpZXdX
aXRoTWVkaWEpCiB7Ci0gICAgTlNBdXRvcmVsZWFzZVBvb2wgKnBvb2wgPSBbW05TQXV0b3JlbGVh
c2VQb29sIGFsbG9jXSBpbml0XTsKKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgUmV0
YWluUHRyPFdlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV2ViVmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEyMCwgMjAwKSBmcmFtZU5hbWU6bmlsIGdyb3VwTmFt
ZTpuaWxdKTsKKyAgICAgICAgUmV0YWluUHRyPFdpbmRvd2xlc3NXZWJWaWV3V2l0aE1lZGlhRnJh
bWVMb2FkRGVsZWdhdGU+IHRlc3RDb250cm9sbGVyID0gYWRvcHROUyhbV2luZG93bGVzc1dlYlZp
ZXdXaXRoTWVkaWFGcmFtZUxvYWREZWxlZ2F0ZSBuZXddKTsKKyAgICAgICAgd2ViVmlldy5nZXQo
KS5mcmFtZUxvYWREZWxlZ2F0ZSA9IHRlc3RDb250cm9sbGVyLmdldCgpOworICAgICAgICBbW3dl
YlZpZXcuZ2V0KCkgbWFpbkZyYW1lXSBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RX
aXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJXaW5kb3dsZXNz
V2ViVmlld1dpdGhNZWRpYSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRl
c3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dXTsKIAotICAgIFJldGFpblB0cjxXZWJWaWV3PiB3ZWJW
aWV3ID0gYWRvcHROUyhbW1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgw
LCAwLCAxMjAsIDIwMCkgZnJhbWVOYW1lOm5pbCBncm91cE5hbWU6bmlsXSk7Ci0gICAgUmV0YWlu
UHRyPFdpbmRvd2xlc3NXZWJWaWV3V2l0aE1lZGlhRnJhbWVMb2FkRGVsZWdhdGU+IHRlc3RDb250
cm9sbGVyID0gYWRvcHROUyhbV2luZG93bGVzc1dlYlZpZXdXaXRoTWVkaWFGcmFtZUxvYWREZWxl
Z2F0ZSBuZXddKTsKLSAgICB3ZWJWaWV3LmdldCgpLmZyYW1lTG9hZERlbGVnYXRlID0gdGVzdENv
bnRyb2xsZXIuZ2V0KCk7Ci0gICAgW1t3ZWJWaWV3LmdldCgpIG1haW5GcmFtZV0gbG9hZFJlcXVl
c3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVS
TEZvclJlc291cmNlOkAiV2luZG93bGVzc1dlYlZpZXdXaXRoTWVkaWEiIHdpdGhFeHRlbnNpb246
QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXV07CisgICAg
ICAgIEVYUEVDVF9FUShuaWwsIFt3ZWJWaWV3LmdldCgpIHdpbmRvd10pOwogCi0gICAgRVhQRUNU
X0VRKG5pbCwgW3dlYlZpZXcuZ2V0KCkgd2luZG93XSk7CisgICAgICAgIFV0aWw6OnJ1bigmZGlk
RmluaXNoTG9hZCk7CiAKLSAgICBVdGlsOjpydW4oJmRpZEZpbmlzaExvYWQpOyAgICAKKyAgICAg
ICAgc3Bpbkxvb3AoMC4yNSwgXnsKKyAgICAgICAgICAgIHJldHVybiBbW3dlYlZpZXcuZ2V0KCkg
c3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZyb21TdHJpbmc6QCJ3aW5kb3cuZGlkVHJpZ2dl
ckxvYWQiXSBpc0VxdWFsVG9TdHJpbmc6QCJ0cnVlIl07CisgICAgICAgIH0pOwogCi0gICAgc3Bp
bkxvb3AoMC4yNSwgXnsKLSAgICAgICAgcmV0dXJuIFtbd2ViVmlldy5nZXQoKSBzdHJpbmdCeUV2
YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmluZzpAIndpbmRvdy5kaWRUcmlnZ2VyTG9hZCJdIGlz
RXF1YWxUb1N0cmluZzpAInRydWUiXTsKLSAgICB9KTsKLQotICAgIEVYUEVDVF9KU19FUSh3ZWJW
aWV3LmdldCgpLCAid2luZG93LmRpZFRyaWdnZXJMb2FkIiwgInRydWUiKTsKLQotICAgIFtwb29s
IGRyYWluXTsKKyAgICAgICAgRVhQRUNUX0pTX0VRKHdlYlZpZXcuZ2V0KCksICJ3aW5kb3cuZGlk
VHJpZ2dlckxvYWQiLCAidHJ1ZSIpOworICAgIH0KIH0KIAogfSAvLyBuYW1lc3BhY2UgVGVzdFdl
YktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvbWFpbklPUy5tbSBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL21haW5JT1MubW0KaW5kZXggNGU2NzIwM2ZmMDY2YTg1
NTE2YzYxYzY3YTUyMzJmNDc0OTk5M2NlMS4uMjM4OTEyMzdlY2M2ZGE2YTBmOTgxYzM5OWZkZjQy
NjdkZTY1OTkzYyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvbWFpbklPUy5t
bQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9tYWluSU9TLm1tCkBAIC0zMCwyNCArMzAs
MjMgQEAKIAogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogewotICAgIE5TQXV0b3Jl
bGVhc2VQb29sICpwb29sID0gW1tOU0F1dG9yZWxlYXNlUG9vbCBhbGxvY10gaW5pdF07CisgICAg
Ym9vbCBwYXNzZWQgPSBmYWxzZTsKKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgW1tO
U1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gcmVtb3ZlUGVyc2lzdGVudERvbWFp
bkZvck5hbWU6QCJUZXN0V2ViS2l0QVBJIl07CiAKLSAgICBbW05TVXNlckRlZmF1bHRzIHN0YW5k
YXJkVXNlckRlZmF1bHRzXSByZW1vdmVQZXJzaXN0ZW50RG9tYWluRm9yTmFtZTpAIlRlc3RXZWJL
aXRBUEkiXTsKKyAgICAgICAgLy8gU2V0IHVwIHVzZXIgZGVmYXVsdHMuCisgICAgICAgIE5TTXV0
YWJsZURpY3Rpb25hcnkgKmFyZ3VtZW50RG9tYWluID0gW1tbTlNVc2VyRGVmYXVsdHMgc3RhbmRh
cmRVc2VyRGVmYXVsdHNdIHZvbGF0aWxlRG9tYWluRm9yTmFtZTpOU0FyZ3VtZW50RG9tYWluXSBt
dXRhYmxlQ29weV07CisgICAgICAgIGlmICghYXJndW1lbnREb21haW4pCisgICAgICAgICAgICBh
cmd1bWVudERvbWFpbiA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF07CiAKLSAg
ICAvLyBTZXQgdXAgdXNlciBkZWZhdWx0cy4KLSAgICBOU011dGFibGVEaWN0aW9uYXJ5ICphcmd1
bWVudERvbWFpbiA9IFtbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSB2b2xh
dGlsZURvbWFpbkZvck5hbWU6TlNBcmd1bWVudERvbWFpbl0gbXV0YWJsZUNvcHldOwotICAgIGlm
ICghYXJndW1lbnREb21haW4pCi0gICAgICAgIGFyZ3VtZW50RG9tYWluID0gW1tOU011dGFibGVE
aWN0aW9uYXJ5IGFsbG9jXSBpbml0XTsKLQotICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRV
c2VyRGVmYXVsdHNdIHNldFZvbGF0aWxlRG9tYWluOmFyZ3VtZW50RG9tYWluIGZvck5hbWU6TlNB
cmd1bWVudERvbWFpbl07CisgICAgICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVm
YXVsdHNdIHNldFZvbGF0aWxlRG9tYWluOmFyZ3VtZW50RG9tYWluIGZvck5hbWU6TlNBcmd1bWVu
dERvbWFpbl07CiAKICNpZm5kZWYgQlVJTERJTkdfVEVTVF9XVEYKLSAgICBbV0tQcm9jZXNzUG9v
bCBfc2V0TGlua2VkT25PckFmdGVyRXZlcnl0aGluZ0ZvclRlc3RpbmddOworICAgICAgICBbV0tQ
cm9jZXNzUG9vbCBfc2V0TGlua2VkT25PckFmdGVyRXZlcnl0aGluZ0ZvclRlc3RpbmddOwogI2Vu
ZGlmCiAKLSAgICBib29sIHBhc3NlZCA9IFRlc3RXZWJLaXRBUEk6OlRlc3RzQ29udHJvbGxlcjo6
c2luZ2xldG9uKCkucnVuKGFyZ2MsIGFyZ3YpOwotCi0gICAgW3Bvb2wgZHJhaW5dOworICAgICAg
ICBwYXNzZWQgPSBUZXN0V2ViS2l0QVBJOjpUZXN0c0NvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnJ1
bihhcmdjLCBhcmd2KTsKKyAgICB9CiAKICAgICByZXR1cm4gcGFzc2VkID8gRVhJVF9TVUNDRVNT
IDogRVhJVF9GQUlMVVJFOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMv
bWFpbk1hYy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL21haW5NYWMubW0KaW5kZXggZTQ4
NGUxNWMyMzYyNmRiM2NkZmM5ZjcyNWY3NTM1MDI5ODU2ODMwZS4uZDlkNmM2MThjMjIyMzU0Yjll
YTVmODQ0ODI2NzUwYmM1MTIyODdhZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9t
YWMvbWFpbk1hYy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9tYWluTWFjLm1tCkBA
IC0zMiwzOCArMzIsMzcgQEAgZXh0ZXJuICJDIiB2b2lkIF9CZWdpbkV2ZW50UmVjZWlwdE9uVGhy
ZWFkKHZvaWQpOwogCiBpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiB7Ci0gICAgTlNB
dXRvcmVsZWFzZVBvb2wgKnBvb2wgPSBbW05TQXV0b3JlbGVhc2VQb29sIGFsbG9jXSBpbml0XTsK
KyAgICBib29sIHBhc3NlZCA9IGZhbHNlOworICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAg
ICBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSByZW1vdmVQZXJzaXN0ZW50
RG9tYWluRm9yTmFtZTpAIlRlc3RXZWJLaXRBUEkiXTsKIAotICAgIFtbTlNVc2VyRGVmYXVsdHMg
c3RhbmRhcmRVc2VyRGVmYXVsdHNdIHJlbW92ZVBlcnNpc3RlbnREb21haW5Gb3JOYW1lOkAiVGVz
dFdlYktpdEFQSSJdOworICAgICAgICAvLyBTZXQgYSB1c2VyIGRlZmF1bHQgZm9yIFRlc3RXZWJL
aXRBUEkgdG8gYnlwYXNzIGFsbCBsaW5rZWQtb24tb3ItYWZ0ZXIgY2hlY2tzIGluIFdlYktpdAor
ICAgICAgICBOU011dGFibGVEaWN0aW9uYXJ5ICphcmd1bWVudERvbWFpbiA9IFtbW05TVXNlckRl
ZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSB2b2xhdGlsZURvbWFpbkZvck5hbWU6TlNBcmd1
bWVudERvbWFpbl0gbXV0YWJsZUNvcHldOworICAgICAgICBpZiAoIWFyZ3VtZW50RG9tYWluKQor
ICAgICAgICAgICAgYXJndW1lbnREb21haW4gPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2Nd
IGluaXRdOwogCi0gICAgLy8gU2V0IGEgdXNlciBkZWZhdWx0IGZvciBUZXN0V2ViS2l0QVBJIHRv
IGJ5cGFzcyBhbGwgbGlua2VkLW9uLW9yLWFmdGVyIGNoZWNrcyBpbiBXZWJLaXQKLSAgICBOU011
dGFibGVEaWN0aW9uYXJ5ICphcmd1bWVudERvbWFpbiA9IFtbW05TVXNlckRlZmF1bHRzIHN0YW5k
YXJkVXNlckRlZmF1bHRzXSB2b2xhdGlsZURvbWFpbkZvck5hbWU6TlNBcmd1bWVudERvbWFpbl0g
bXV0YWJsZUNvcHldOwotICAgIGlmICghYXJndW1lbnREb21haW4pCi0gICAgICAgIGFyZ3VtZW50
RG9tYWluID0gW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XTsKKyAgICAgICAgLy8g
Q0FVVElPTjogRGVmYXVsdHMgc2V0IGhlcmUgYXJlIG5vdCBhdXRvbWF0aWNhbGx5IHByb3BhZ2F0
ZWQgdG8gdGhlCisgICAgICAgIC8vIFdlYiBDb250ZW50IHByb2Nlc3MuIFRob3NlIGxpc3RlZCBi
ZWxvdyBhcmUgcHJvcGFnYXRlZCBtYW51YWxseS4KKyAgICAgICAgTlNEaWN0aW9uYXJ5ICpkaWN0
ID0gQHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgc3dpdGNoIHRoZXNlIGRlZmF1
bHRzIHRvIHVzZSBvdmVybGF5CisgICAgICAgICAgICAvLyBzY3JvbGxiYXJzLCBzaW5jZSB0aGV5
IGFyZSB0aGUgZGVmYXVsdCBvbiB0aGUgcGxhdGZvcm0sCisgICAgICAgICAgICAvLyBidXQgYSB2
YXJpZXR5IG9mIHRlc3RzIHdpbGwgbmVlZCBjaGFuZ2VzLgorICAgICAgICAgICAgQCJOU092ZXJs
YXlTY3JvbGxlcnNFbmFibGVkIjogQE5PLAorICAgICAgICAgICAgQCJBcHBsZVNob3dTY3JvbGxC
YXJzIjogQCJBbHdheXMiLAorICAgICAgICB9OwogCi0gICAgLy8gQ0FVVElPTjogRGVmYXVsdHMg
c2V0IGhlcmUgYXJlIG5vdCBhdXRvbWF0aWNhbGx5IHByb3BhZ2F0ZWQgdG8gdGhlCi0gICAgLy8g
V2ViIENvbnRlbnQgcHJvY2Vzcy4gVGhvc2UgbGlzdGVkIGJlbG93IGFyZSBwcm9wYWdhdGVkIG1h
bnVhbGx5LgotICAgIE5TRGljdGlvbmFyeSAqZGljdCA9IEB7Ci0gICAgICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgc3dpdGNoIHRoZXNlIGRlZmF1bHRzIHRvIHVzZSBvdmVybGF5Ci0gICAgICAgIC8v
IHNjcm9sbGJhcnMsIHNpbmNlIHRoZXkgYXJlIHRoZSBkZWZhdWx0IG9uIHRoZSBwbGF0Zm9ybSwK
LSAgICAgICAgLy8gYnV0IGEgdmFyaWV0eSBvZiB0ZXN0cyB3aWxsIG5lZWQgY2hhbmdlcy4KLSAg
ICAgICAgQCJOU092ZXJsYXlTY3JvbGxlcnNFbmFibGVkIjogQE5PLAotICAgICAgICBAIkFwcGxl
U2hvd1Njcm9sbEJhcnMiOiBAIkFsd2F5cyIsCi0gICAgfTsKLQotICAgIFthcmd1bWVudERvbWFp
biBhZGRFbnRyaWVzRnJvbURpY3Rpb25hcnk6ZGljdF07Ci0gICAgW1tOU1VzZXJEZWZhdWx0cyBz
dGFuZGFyZFVzZXJEZWZhdWx0c10gc2V0Vm9sYXRpbGVEb21haW46YXJndW1lbnREb21haW4gZm9y
TmFtZTpOU0FyZ3VtZW50RG9tYWluXTsKKyAgICAgICAgW2FyZ3VtZW50RG9tYWluIGFkZEVudHJp
ZXNGcm9tRGljdGlvbmFyeTpkaWN0XTsKKyAgICAgICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFy
ZFVzZXJEZWZhdWx0c10gc2V0Vm9sYXRpbGVEb21haW46YXJndW1lbnREb21haW4gZm9yTmFtZTpO
U0FyZ3VtZW50RG9tYWluXTsKIAogI2lmbmRlZiBCVUlMRElOR19URVNUX1dURgotICAgIFtXS1By
b2Nlc3NQb29sIF9zZXRMaW5rZWRPbk9yQWZ0ZXJFdmVyeXRoaW5nRm9yVGVzdGluZ107CisgICAg
ICAgIFtXS1Byb2Nlc3NQb29sIF9zZXRMaW5rZWRPbk9yQWZ0ZXJFdmVyeXRoaW5nRm9yVGVzdGlu
Z107CiAjZW5kaWYKIAotICAgIFtOU0FwcGxpY2F0aW9uIHNoYXJlZEFwcGxpY2F0aW9uXTsKLSAg
ICBfQmVnaW5FdmVudFJlY2VpcHRPblRocmVhZCgpOyAvLyBNYWtlcyB3aW5kb3cgdmlzaWJpbGl0
eSBub3RpZmljYXRpb25zIHdvcmsgKGFuZCBwb3NzaWJseSBtb3JlKS4KLQotICAgIGJvb2wgcGFz
c2VkID0gVGVzdFdlYktpdEFQSTo6VGVzdHNDb250cm9sbGVyOjpzaW5nbGV0b24oKS5ydW4oYXJn
YywgYXJndik7CisgICAgICAgIFtOU0FwcGxpY2F0aW9uIHNoYXJlZEFwcGxpY2F0aW9uXTsKKyAg
ICAgICAgX0JlZ2luRXZlbnRSZWNlaXB0T25UaHJlYWQoKTsgLy8gTWFrZXMgd2luZG93IHZpc2li
aWxpdHkgbm90aWZpY2F0aW9ucyB3b3JrIChhbmQgcG9zc2libHkgbW9yZSkuCiAKLSAgICBbcG9v
bCBkcmFpbl07CisgICAgICAgIHBhc3NlZCA9IFRlc3RXZWJLaXRBUEk6OlRlc3RzQ29udHJvbGxl
cjo6c2luZ2xldG9uKCkucnVuKGFyZ2MsIGFyZ3YpOworICAgIH0KIAogICAgIHJldHVybiBwYXNz
ZWQgPyBFWElUX1NVQ0NFU1MgOiBFWElUX0ZBSUxVUkU7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421196</attachid>
            <date>2021-02-22 08:29:50 -0800</date>
            <delta_ts>2021-02-22 11:30:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222237-20210222082949.patch</filename>
            <type>text/plain</type>
            <size>141025</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMjQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmMzOGY3OGY2ZTcyMGI1
ODYwZTZjZDliYmMyZDA5NjkwNGEyNTQ4Yy4uNTk0YzdiNWYyMGJkMmQ4NWI5ZDMzMWE2NTlhOTgy
ODk5NDk0YTkyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDIxLTAyLTIyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIGFkb3B0TlMoKSBhcyBz
b29uIGFzIHdlIFtbT2JqY0NsYXNzIGFsbG9jXSBpbml0XSB0byBhdm9pZCBsZWFrcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyMjM3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbToKKyAgICAgICAgKC1bV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElP
TlNfRU5EXSk6CisgICAgICAgICogYnJpZGdlL3Rlc3RiaW5kaW5ncy5tbToKKyAgICAgICAgKG1h
aW4pOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVsLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlbDo6Y3JlYXRlVmlkZW9GdWxsc2Ny
ZWVuVmlld0NvbnRyb2xsZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dl
YkFjdGlvbkRpc2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZS5tbToKKyAgICAgICAgKCtbV2ViQWN0aW9u
RGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlIHNoYXJlZF0pOgorICAgICAgICAqIHBsYXRmb3JtL2lv
cy9XZWJCYWNrZ3JvdW5kVGFza0NvbnRyb2xsZXIubW06CisgICAgICAgICgrW1dlYkJhY2tncm91
bmRUYXNrQ29udHJvbGxlciBzaGFyZWRDb250cm9sbGVyXSk6CisgICAgICAgICogcGxhdGZvcm0v
aW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW06CisgICAgICAgICgrW1dlYkl0ZW1Qcm92
aWRlclBhc3RlYm9hcmQgc2hhcmVkSW5zdGFuY2VdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mv
d2FrL1dlYkNvcmVUaHJlYWQubW06CisgICAgICAgIChzQXN5bmNEZWxlZ2F0ZXMpOgorICAgICAg
ICAoV2ViVGhyZWFkQ2FsbERlbGVnYXRlQXN5bmMpOgorICAgICAgICAoV2ViUnVuTG9vcFVubG9j
a0ludGVybmFsKToKKyAgICAgICAgKFN0YXJ0V2ViVGhyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvVGhlbWVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpidXR0b25DZWxsKToKKyAgICAg
ICAgKFdlYkNvcmU6OmJ1dHRvbik6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYk5TQXR0cmli
dXRlZFN0cmluZ0V4dHJhcy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmF0dHJpYnV0ZWRTdHJpbmdC
eVN0cmlwcGluZ0F0dGFjaG1lbnRDaGFyYWN0ZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdGlv
blF1ZXVlRm9yQXN5bmNDbGllbnRzKToKKwogMjAyMS0wMi0yMiAgQW50dGkgS29pdmlzdG8gIDxh
bnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSW50ZWdyYXRpb25dIFN3aXRjaCBvdXQg
aWYgbGFyZ2UgdHJlZXMgYXJlIGJlaW5nIGludmFsaWRhdGVkCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQ0Yjg3ODU3
ZjQ5MWYxMjA1MDUyYmQ0MmE1OTU5ZTgxNzVmOTdmYWUuLjFhNTJmMWEzNzY2YTBhZDhhMTBhNDVi
ZDM4NzcxNjQ3NTJlMGRjZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIwMjEtMDItMjIg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgYWRvcHROUygp
IGFzIHNvb24gYXMgd2UgW1tPYmpjQ2xhc3MgYWxsb2NdIGluaXRdIHRvIGF2b2lkIGxlYWtzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjIyMzcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvTlNBdHRyaWJ1dGVkU3RyaW5nLm1tOgorICAgICAgICAoZ2xvYmFsQ29uZmln
dXJhdGlvbik6CisgICAgICAgICgrW19XS0F0dHJpYnV0ZWRTdHJpbmdXZWJWaWV3Q2FjaGUgY29u
ZmlndXJhdGlvbl0pOgorICAgICAgICAoK1tfV0tBdHRyaWJ1dGVkU3RyaW5nV2ViVmlld0NhY2hl
IGNsZWFyQ29uZmlndXJhdGlvbl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tO
U1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLm1tOgorICAgICAgICAoLVtXS05TVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UgX3dlYl9jcmVhdGVUYXJnZXRdKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW06CisgICAgICAgIChzaGFyZWRQcm9jZXNzUG9v
bCk6CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgZW5jb2RlV2l0aENvZGVyOl0pOgorICAgICAg
ICAoK1tXS1Byb2Nlc3NQb29sIF9zaGFyZWRQcm9jZXNzUG9vbF0pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgbG9hZFNp
bXVsYXRlZFJlcXVlc3Q6d2l0aFJlc3BvbnNlSFRNTFN0cmluZzpdKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbToKKyAgICAgICAgKCtbV0tXZWJz
aXRlRGF0YVN0b3JlIGFsbFdlYnNpdGVEYXRhVHlwZXNdKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Q29jb2EvUHJlZmVyZW5jZU9ic2VydmVyLm1tOgorICAgICAgICAoK1tXS1ByZWZlcmVuY2VPYnNl
cnZlciBzaGFyZWRJbnN0YW5jZV0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbENvbnRleHQ6OmNyZWF0ZVZpZGVvRnVsbHNjcmVlblZpZXdDb250cm9sbGVyKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViSW5zcGVjdG9yUHJlZmVyZW5jZU9ic2VydmVyLm1t
OgorICAgICAgICAoK1tXS1dlYkluc3BlY3RvclByZWZlcmVuY2VPYnNlcnZlciBzaGFyZWRJbnN0
YW5jZV0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9BdXRo
ZW50aWNhdG9yUHJlc2VudGVyQ29vcmRpbmF0b3IubW06CisgICAgICAgIChXZWJLaXQ6OkF1dGhl
bnRpY2F0b3JQcmVzZW50ZXJDb29yZGluYXRvcjo6QXV0aGVudGljYXRvclByZXNlbnRlckNvb3Jk
aW5hdG9yKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBzdXBwb3J0ZWRQYXN0ZWJvYXJkVHlwZXNG
b3JDdXJyZW50U2VsZWN0aW9uXSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgYXNzaWduTGVn
YWN5RGF0YUZvckNvbnRleHRNZW51SW50ZXJhY3Rpb25dKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
aW9zL1dLTW91c2VEZXZpY2VPYnNlcnZlci5tbToKKyAgICAgICAgKCtbV0tNb3VzZURldmljZU9i
c2VydmVyIHNoYXJlZEluc3RhbmNlXSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS1N0eWx1
c0RldmljZU9ic2VydmVyLm1tOgorICAgICAgICAoK1tXS1N0eWx1c0RldmljZU9ic2VydmVyIHNo
YXJlZEluc3RhbmNlXSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XS1RleHRJbnB1dFdpbmRv
d0NvbnRyb2xsZXIubW06CisgICAgICAgICgrW1dLVGV4dElucHV0V2luZG93Q29udHJvbGxlciBz
aGFyZWRUZXh0SW5wdXRXaW5kb3dDb250cm9sbGVyXSk6CisgICAgICAgICogVUlQcm9jZXNzL21h
Yy9XZWJDb2xvclBpY2tlck1hYy5tbToKKyAgICAgICAgKCtbV0tQb3BvdmVyQ29sb3JXZWxsIF9j
b2xvclBvcG92ZXJDcmVhdGVJZk5lY2Vzc2FyeTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFj
L1dlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bk1hYy5tbToKKyAgICAgICAgKC1bV0tEYXRh
TGlzdFN1Z2dlc3Rpb25XaW5kb3cgaW5pdFdpdGhDb250ZW50UmVjdDpzdHlsZU1hc2s6YmFja2lu
ZzpkZWZlcjpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMv
V0tET01JbnRlcm5hbHMubW06CisgICAgICAgIChXZWJLaXQ6OmluaXRXaXRoSW1wbCk6CisgICAg
ICAgIChXZWJLaXQ6OnRvV0tET01UeXBlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL21hYy9JbmplY3RlZEJ1bmRsZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0
ZWRCdW5kbGU6OmluaXRpYWxpemUpOgorCiAyMDIxLTAyLTIyICBDYXJsb3MgR2FyY2lhIENhbXBv
cyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbU09VUF0gQWRkIHN1cHBvcnQgZm9y
IGxpYnNvdXAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKaW5kZXggMDczNGMzNWZhNTA3NjU2
NjgzZWFjYTQ1OTc2NmU2Yjg5OWJkNGFkZS4uYjdlNzk2Nzg3NjEyY2ZhZGM4MmM1ZTFiN2ExN2Nj
YjZmYTk0YzgyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDIxLTAyLTIyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAg
VXNlIGFkb3B0TlMoKSBhcyBzb29uIGFzIHdlIFtbT2JqY0NsYXNzIGFsbG9jXSBpbml0XSB0byBh
dm9pZCBsZWFrcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjIyMjM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBNaXNjL1dlYkdlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW06CisgICAgICAgICgrW1dlYkdl
b2xvY2F0aW9uUHJvdmlkZXJJT1Mgc2hhcmVkR2VvbG9jYXRpb25Qcm92aWRlcl0pOgorCiAyMDIx
LTAyLTE3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmVkdWNl
IGV4cGxpY2l0IHVzYWdlIG9mIFtvYmpDIGF1dG9yZWxlYXNlXSBpbiBXZWJLaXQgZXZlbiBmdXJ0
aGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggZGNjNTRlNWQ4MzI0NDU2M2MyODcw
NjljYTNlNDJlMDUyY2YxNTI4MC4uNTc4OTE4YjFmMjE1Njc2MzYzZDM2M2UwZjc3Y2QyZmI1YzIy
MTQ0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDIx
LTAyLTIyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIGFk
b3B0TlMoKSBhcyBzb29uIGFzIHdlIFtbT2JqY0NsYXNzIGFsbG9jXSBpbml0XSB0byBhdm9pZCBs
ZWFrcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIy
MjM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBE
ZWZhdWx0RGVsZWdhdGVzL1dlYkRlZmF1bHRVSURlbGVnYXRlLm1tOgorICAgICAgICAoK1tXZWJE
ZWZhdWx0VUlEZWxlZ2F0ZSBzaGFyZWRVSURlbGVnYXRlXSk6CisgICAgICAgICogSGlzdG9yeS9X
ZWJIaXN0b3J5SXRlbS5tbToKKyAgICAgICAgKC1bV2ViSGlzdG9yeUl0ZW0gY29weVdpdGhab25l
Ol0pOgorICAgICAgICAqIE1pc2MvV2ViSWNvbkRhdGFiYXNlLm1tOgorICAgICAgICAoK1tXZWJJ
Y29uRGF0YWJhc2Ugc2hhcmVkSWNvbkRhdGFiYXNlXSk6CisgICAgICAgICogTWlzYy9XZWJOU1Bh
c3RlYm9hcmRFeHRyYXMubW06CisgICAgICAgIChfd3JpdGFibGVUeXBlc0ZvckltYWdlV2l0aG91
dEFyY2hpdmUpOgorICAgICAgICAqIFBsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5t
bToKKyAgICAgICAgKC1bV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldyBjYWNoZVNuYXBzaG90XSk6
CisgICAgICAgICogUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5tbToKKyAgICAgICAg
KFdlYk5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkZWxpdmVyRGF0YSk6CisgICAgICAgICogUGx1Z2lu
cy9XZWJQbHVnaW5Db250cm9sbGVyLm1tOgorICAgICAgICAocGx1Z2luVmlld3MpOgorICAgICAg
ICAoLVtXZWJQbHVnaW5Db250cm9sbGVyIHBsdWdJblZpZXdXaXRoQXJndW1lbnRzOmZyb21QbHVn
aW5QYWNrYWdlOl0pOgorICAgICAgICAoK1tXZWJQbHVnaW5Db250cm9sbGVyIGFkZFBsdWdJblZp
ZXc6XSk6CisgICAgICAgICgrW1dlYlBsdWdpbkNvbnRyb2xsZXIgaXNQbHVnSW5WaWV3Ol0pOgor
ICAgICAgICAoLVtXZWJQbHVnaW5Db250cm9sbGVyIGRlc3Ryb3lQbHVnaW46XSk6CisgICAgICAg
ICgtW1dlYlBsdWdpbkNvbnRyb2xsZXIgZGVzdHJveUFsbFBsdWdpbnNdKToKKyAgICAgICAgKiBQ
bHVnaW5zL1dlYlBsdWdpbkRhdGFiYXNlLm1tOgorICAgICAgICAoc2hhcmVkRGF0YWJhc2UpOgor
ICAgICAgICAoK1tXZWJQbHVnaW5EYXRhYmFzZSBzaGFyZWREYXRhYmFzZV0pOgorICAgICAgICAo
K1tXZWJQbHVnaW5EYXRhYmFzZSBzaGFyZWREYXRhYmFzZUlmRXhpc3RzXSk6CisgICAgICAgICgr
W1dlYlBsdWdpbkRhdGFiYXNlIGNsb3NlU2hhcmVkRGF0YWJhc2VdKToKKyAgICAgICAgKC1bV2Vi
UGx1Z2luRGF0YWJhc2UgcmVmcmVzaF0pOgorICAgICAgICAoLVtXZWJQbHVnaW5EYXRhYmFzZSBf
cGx1Z0luUGF0aHNdKToKKyAgICAgICAgKC1bV2ViUGx1Z2luRGF0YWJhc2UgX3JlbW92ZVBsdWdp
bjpdKToKKyAgICAgICAgKiBTY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVu
Y2VzRXhwZXJpbWVudGFsRmVhdHVyZXMubW0uZXJiOgorICAgICAgICAqIFNjcmlwdHMvUHJlZmVy
ZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbEZlYXR1cmVzLm1tLmVyYjoKKyAg
ICAgICAgKiBXZWJWaWV3L1dlYkRhdGFTb3VyY2UubW06CisgICAgICAgICgrW1dlYkRhdGFTb3Vy
Y2UgX3JlcFR5cGVzQWxsb3dJbWFnZVR5cGVPbWlzc2lvbjpdKToKKyAgICAgICAgKiBXZWJWaWV3
L1dlYkZyYW1lVmlldy5tbToKKyAgICAgICAgKCtbV2ViRnJhbWVWaWV3IF92aWV3VHlwZXNBbGxv
d0ltYWdlVHlwZU9taXNzaW9uOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViRnVsbFNjcmVlbkNv
bnRyb2xsZXIubW06CisgICAgICAgIChjcmVhdGVCYWNrZ3JvdW5kRnVsbHNjcmVlbldpbmRvdyk6
CisgICAgICAgICogV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW06CisgICAgICAgIChy
ZWdFeHBGb3JMYWJlbHMpOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAg
ICAgICgrW1dlYkhUTUxWaWV3IF9pbnNlcnRhYmxlUGFzdGVib2FyZFR5cGVzXSk6CisgICAgICAg
ICogV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbToKKyAgICAgICAgKHN0YW5kYXJkUHJlZmVyZW5j
ZXMpOgorICAgICAgICAod2ViUHJlZmVyZW5jZXNJbnN0YW5jZXMpOgorICAgICAgICAoK1tXZWJQ
cmVmZXJlbmNlcyBzdGFuZGFyZFByZWZlcmVuY2VzXSk6CisgICAgICAgICgrW1dlYlByZWZlcmVu
Y2VzIF9nZXRJbnN0YW5jZUZvcklkZW50aWZpZXI6XSk6CisgICAgICAgICgrW1dlYlByZWZlcmVu
Y2VzIF9zZXRJbnN0YW5jZTpmb3JJZGVudGlmaWVyOl0pOgorICAgICAgICAoK1tXZWJQcmVmZXJl
bmNlcyBfY2hlY2tMYXN0UmVmZXJlbmNlRm9ySWRlbnRpZmllcjpdKToKKyAgICAgICAgKiBXZWJW
aWV3L1dlYlZpZXcubW06CisgICAgICAgIChzY2hlbWVzV2l0aFJlcHJlc2VudGF0aW9uc1NldCk6
CisgICAgICAgIChvdXRsb29rUXVpcmtzVXNlclNjcmlwdENvbnRlbnRzKToKKyAgICAgICAgKC1b
V2ViVmlldyBfaW5qZWN0T3V0bG9va1F1aXJrc1NjcmlwdF0pOgorICAgICAgICAobGFCYW5xdWVQ
b3N0YWxlUXVpcmtzU2NyaXB0KToKKyAgICAgICAgKC1bV2ViVmlldyBfaW5qZWN0TGFCYW5xdWVQ
b3N0YWxlUXVpcmtzXSk6CisgICAgICAgICgrW1dlYlZpZXcgX3JlZ2lzdGVyVmlld0NsYXNzOnJl
cHJlc2VudGF0aW9uQ2xhc3M6Zm9yVVJMU2NoZW1lOl0pOgorICAgICAgICAoK1tXZWJWaWV3IF9y
ZXByZXNlbnRhdGlvbkV4aXN0c0ZvclVSTFNjaGVtZTpdKToKKyAgICAgICAgKCtbV2ViVmlldyBh
dXRvbWF0aWNhbGx5Tm90aWZpZXNPYnNlcnZlcnNGb3JLZXk6XSk6CisgICAgICAgICgtW1dlYlZp
ZXcgX2RlY2xhcmVkS2V5c10pOgorICAgICAgICAoLVtXZWJWaWV3IGFkZFBsdWdpbkluc3RhbmNl
VmlldzpdKToKKyAgICAgICAgKC1bV2ViVmlldyBfZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudDpd
KToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdEYXRhLmg6CisKIDIwMjEtMDItMTkgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXcgcmVtYWluaW5nIHVz
YWdlIG9mIGF1dG9yZWxlYXNlIHRvIG1ha2Ugc3VyZSBpdCBpcyBuZWNlc3NhcnkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KaW5kZXggMWY3Y2NlNjA3ODczZjQ4Y2RjN2Zj
ZGQ2NDI0ZGU1ZDJkYmFlMzYwMi4uODFhODljZTRhMjJiNmRmZTM1ZjMyMTQxMjAyNWJlMTZkZmRl
MGY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KQEAgLTEyOTgs
MzIgKzEyOTgsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICBp
ZiAoYmFja2luZ09iamVjdC0+aXNBdHRhY2htZW50KCkpCiAgICAgICAgIHJldHVybiBbW3NlbGYg
YXR0YWNobWVudFZpZXddIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVOYW1lc107CiAKLSAgICBzdGF0
aWMgTlNBcnJheSAqYW5jaG9yQXR0cnM7Ci0gICAgc3RhdGljIE5TQXJyYXkgKndlYkFyZWFBdHRy
czsKLSAgICBzdGF0aWMgTlNBcnJheSAqdGV4dEF0dHJzOwotICAgIHN0YXRpYyBOU0FycmF5ICps
aXN0QXR0cnM7Ci0gICAgc3RhdGljIE5TQXJyYXkgKmxpc3RCb3hBdHRyczsKLSAgICBzdGF0aWMg
TlNBcnJheSAqcmFuZ2VBdHRyczsKLSAgICBzdGF0aWMgTlNBcnJheSAqbWVudUF0dHJzOwotICAg
IHN0YXRpYyBOU0FycmF5ICptZW51QmFyQXR0cnM7Ci0gICAgc3RhdGljIE5TQXJyYXkgKm1lbnVJ
dGVtQXR0cnM7Ci0gICAgc3RhdGljIE5TQXJyYXkgKmNvbnRyb2xBdHRyczsKLSAgICBzdGF0aWMg
TlNBcnJheSAqdGFibGVBdHRyczsKLSAgICBzdGF0aWMgTlNBcnJheSAqdGFibGVSb3dBdHRyczsK
LSAgICBzdGF0aWMgTlNBcnJheSAqdGFibGVDb2xBdHRyczsKLSAgICBzdGF0aWMgTlNBcnJheSAq
dGFibGVDZWxsQXR0cnM7Ci0gICAgc3RhdGljIE5TQXJyYXkgKmdyb3VwQXR0cnM7Ci0gICAgc3Rh
dGljIE5TQXJyYXkgKmlucHV0SW1hZ2VBdHRyczsKLSAgICBzdGF0aWMgTlNBcnJheSAqcGFzc3dv
cmRGaWVsZEF0dHJzOwotICAgIHN0YXRpYyBOU0FycmF5ICp0YWJMaXN0QXR0cnM7Ci0gICAgc3Rh
dGljIE5TQXJyYXkgKmNvbWJvQm94QXR0cnM7Ci0gICAgc3RhdGljIE5TQXJyYXkgKm91dGxpbmVB
dHRyczsKLSAgICBzdGF0aWMgTlNBcnJheSAqb3V0bGluZVJvd0F0dHJzOwotICAgIHN0YXRpYyBO
U0FycmF5ICpidXR0b25BdHRyczsKLSAgICBzdGF0aWMgTlNBcnJheSAqc2Nyb2xsVmlld0F0dHJz
OwotICAgIHN0YXRpYyBOU0FycmF5ICppbmNyZW1lbnRvckF0dHJzOwotICAgIHN0YXRpYyBOU0Fy
cmF5ICppbWFnZUF0dHJzOwotICAgIHN0YXRpYyBOU0FycmF5ICphdHRyaWJ1dGVzID0gcmV0YWlu
UHRyKEBbCisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0FycmF5Pj4gYXR0
cmlidXRlcyA9IEBbCiAgICAgICAgIE5TQWNjZXNzaWJpbGl0eVJvbGVBdHRyaWJ1dGUsCiAgICAg
ICAgIE5TQWNjZXNzaWJpbGl0eVN1YnJvbGVBdHRyaWJ1dGUsCiAgICAgICAgIE5TQWNjZXNzaWJp
bGl0eVJvbGVEZXNjcmlwdGlvbkF0dHJpYnV0ZSwKQEAgLTEzNTIsOCArMTMyNywyNCBAQCBBTExP
V19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5
Rm9jdXNhYmxlQW5jZXN0b3JBdHRyaWJ1dGUsCiAgICAgICAgIE5TQWNjZXNzaWJpbGl0eUVkaXRh
YmxlQW5jZXN0b3JBdHRyaWJ1dGUsCiAgICAgICAgIE5TQWNjZXNzaWJpbGl0eUhpZ2hlc3RFZGl0
YWJsZUFuY2VzdG9yQXR0cmlidXRlLAotICAgIF0pLmxlYWtSZWYoKTsKLSAgICBzdGF0aWMgTlNB
cnJheSAqY29tbW9uTWVudUF0dHJzID0gcmV0YWluUHRyKEBbCisgICAgXTsKKyAgICBzdGF0aWMg
YXV0byBpbmNyZW1lbnRvckF0dHJzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICAgICAg
YXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRo
QXJyYXk6YXR0cmlidXRlcy5nZXQoKS5nZXQoKV0pOworICAgICAgICBbdGVtcEFycmF5IGFkZE9i
amVjdDpOU0FjY2Vzc2liaWxpdHlJbmNyZW1lbnRCdXR0b25BdHRyaWJ1dGVdOworICAgICAgICBb
dGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlEZWNyZW1lbnRCdXR0b25BdHRyaWJ1
dGVdOworICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlWYWx1ZURl
c2NyaXB0aW9uQXR0cmlidXRlXTsKKyAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nl
c3NpYmlsaXR5TWluVmFsdWVBdHRyaWJ1dGVdOworICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVj
dDpOU0FjY2Vzc2liaWxpdHlNYXhWYWx1ZUF0dHJpYnV0ZV07CisgICAgICAgIHJldHVybiB0ZW1w
QXJyYXk7CisgICAgfSgpKTsKKyAgICBzdGF0aWMgYXV0byBhbmNob3JBdHRycyA9IG1ha2VOZXZl
ckRlc3Ryb3llZChbXSB7CisgICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0
YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXMuZ2V0KCkuZ2V0KCldKTsK
KyAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VVJMQXR0cmlidXRl
XTsKKyAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5QWNjZXNzS2V5
QXR0cmlidXRlXTsKKyAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5
TGlua1JlbGF0aW9uc2hpcFR5cGVBdHRyaWJ1dGVdOworICAgICAgICByZXR1cm4gdGVtcEFycmF5
OworICAgIH0oKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0FycmF5
Pj4gY29tbW9uTWVudUF0dHJzID0gQFsKICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5Um9sZUF0dHJp
YnV0ZSwKICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5Um9sZURlc2NyaXB0aW9uQXR0cmlidXRlLAog
ICAgICAgICBOU0FjY2Vzc2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0ZSwKQEAgLTEzNjEsMTcgKzEz
NTIsOSBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgTlNB
Y2Nlc3NpYmlsaXR5RW5hYmxlZEF0dHJpYnV0ZSwKICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5UG9z
aXRpb25BdHRyaWJ1dGUsCiAgICAgICAgIE5TQWNjZXNzaWJpbGl0eVNpemVBdHRyaWJ1dGUsCi0g
ICAgXSkubGVha1JlZigpOwotCi0gICAgaWYgKGFuY2hvckF0dHJzID09IG5pbCkgewotICAgICAg
ICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdp
dGhBcnJheTphdHRyaWJ1dGVzXSk7Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNj
ZXNzaWJpbGl0eVVSTEF0dHJpYnV0ZV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5T
QWNjZXNzaWJpbGl0eUFjY2Vzc0tleUF0dHJpYnV0ZV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRk
T2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUxpbmtSZWxhdGlvbnNoaXBUeXBlQXR0cmlidXRlXTsKLSAg
ICAgICAgYW5jaG9yQXR0cnMgPSB0ZW1wQXJyYXkubGVha1JlZigpOwotICAgIH0KLSAgICBpZiAo
d2ViQXJlYUF0dHJzID09IG5pbCkgewotICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMo
W1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzXSk7CisgICAg
XTsKKyAgICBzdGF0aWMgYXV0byB3ZWJBcmVhQXR0cnMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10g
eworICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxv
Y10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzLmdldCgpLmdldCgpXSk7CiAgICAgICAgIC8vIFdl
YkFyZWFzIHNob3VsZCBub3QgZXhwb3NlIEFYU3Vicm9sZS4KICAgICAgICAgW3RlbXBBcnJheSBy
ZW1vdmVPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5U3Vicm9sZUF0dHJpYnV0ZV07CiAgICAgICAgIC8v
IFdlYkFyZWFzIHNob3VsZCBub3QgZXhwb3NlIGFuY2VzdG9yIGF0dHJpYnV0ZXMKQEAgLTEzODYs
MTAgKzEzNjksMTAgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAg
ICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUNhcmV0QnJvd3NpbmdFbmFi
bGVkQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmls
aXR5UHJldmVudEtleWJvYXJkRE9NRXZlbnREaXNwYXRjaEF0dHJpYnV0ZV07CiAgICAgICAgIFt0
ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVdlYlNlc3Npb25JREF0dHJpYnV0ZV07
Ci0gICAgICAgIHdlYkFyZWFBdHRycyA9IHRlbXBBcnJheS5sZWFrUmVmKCk7Ci0gICAgfQotICAg
IGlmICh0ZXh0QXR0cnMgPT0gbmlsKSB7Ci0gICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHRO
UyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXNdKTsKKyAg
ICAgICAgcmV0dXJuIHRlbXBBcnJheTsKKyAgICB9KCkpOworICAgIHN0YXRpYyBhdXRvIHRleHRB
dHRycyA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgICAgIGF1dG8gdGVtcEFycmF5ID0g
YWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXMu
Z2V0KCkuZ2V0KCldKTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmls
aXR5TnVtYmVyT2ZDaGFyYWN0ZXJzQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRP
YmplY3Q6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRUZXh0QXR0cmlidXRlXTsKICAgICAgICAgW3Rl
bXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRUZXh0UmFuZ2VBdHRyaWJ1
dGVdOwpAQCAtMTQwMSw1MSArMTM4NCw1MSBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFU
SU9OU19FTkQKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5SW52
YWxpZEF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJp
bGl0eVBsYWNlaG9sZGVyVmFsdWVBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9i
amVjdDpOU0FjY2Vzc2liaWxpdHlWYWx1ZUF1dG9maWxsZWRBdHRyaWJ1dGVdOwotICAgICAgICB0
ZXh0QXR0cnMgPSB0ZW1wQXJyYXkubGVha1JlZigpOwotICAgIH0KLSAgICBpZiAobGlzdEF0dHJz
ID09IG5pbCkgewotICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVB
cnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzXSk7CisgICAgICAgIHJldHVybiB0
ZW1wQXJyYXk7CisgICAgfSgpKTsKKyAgICBzdGF0aWMgYXV0byBsaXN0QXR0cnMgPSBtYWtlTmV2
ZXJEZXN0cm95ZWQoW10geworICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011
dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzLmdldCgpLmdldCgpXSk7
CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkQ2hp
bGRyZW5BdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2li
aWxpdHlWaXNpYmxlQ2hpbGRyZW5BdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9i
amVjdDpOU0FjY2Vzc2liaWxpdHlPcmllbnRhdGlvbkF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1w
QXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVRpdGxlVUlFbGVtZW50QXR0cmlidXRlXTsK
LSAgICAgICAgbGlzdEF0dHJzID0gdGVtcEFycmF5LmxlYWtSZWYoKTsKLSAgICB9Ci0gICAgaWYg
KGxpc3RCb3hBdHRycyA9PSBuaWwpIHsKLSAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5T
KFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6bGlzdEF0dHJzXSk7CisgICAg
ICAgIHJldHVybiB0ZW1wQXJyYXk7CisgICAgfSgpKTsKKyAgICBzdGF0aWMgYXV0byBsaXN0Qm94
QXR0cnMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgICAgICBhdXRvIHRlbXBBcnJheSA9
IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTpsaXN0QXR0cnMu
Z2V0KCkuZ2V0KCldKTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmls
aXR5QWNjZXNzS2V5QXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNB
Y2Nlc3NpYmlsaXR5UmVxdWlyZWRBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9i
amVjdDpOU0FjY2Vzc2liaWxpdHlJbnZhbGlkQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJh
eSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb25BdHRyaWJ1dGVdOwotICAgICAg
ICBsaXN0Qm94QXR0cnMgPSB0ZW1wQXJyYXkubGVha1JlZigpOwotICAgIH0KLSAgICBpZiAocmFu
Z2VBdHRycyA9PSBuaWwpIHsKLSAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNN
dXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlc10pOworICAgICAgICBy
ZXR1cm4gdGVtcEFycmF5OworICAgIH0oKSk7CisgICAgc3RhdGljIGF1dG8gcmFuZ2VBdHRycyA9
IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHRO
UyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXMuZ2V0KCku
Z2V0KCldKTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5TWlu
VmFsdWVBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2li
aWxpdHlNYXhWYWx1ZUF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5T
QWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBh
ZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VmFsdWVEZXNjcmlwdGlvbkF0dHJpYnV0ZV07CiAgICAg
ICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVRpdGxlVUlFbGVtZW50QXR0
cmlidXRlXTsKLSAgICAgICAgcmFuZ2VBdHRycyA9IHRlbXBBcnJheS5sZWFrUmVmKCk7Ci0gICAg
fQotICAgIGlmIChtZW51QmFyQXR0cnMgPT0gbmlsKSB7Ci0gICAgICAgIGF1dG8gdGVtcEFycmF5
ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmNvbW1vbk1l
bnVBdHRyc10pOworICAgICAgICByZXR1cm4gdGVtcEFycmF5OworICAgIH0oKSk7CisgICAgc3Rh
dGljIGF1dG8gbWVudUJhckF0dHJzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICAgICAg
YXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRo
QXJyYXk6Y29tbW9uTWVudUF0dHJzLmdldCgpLmdldCgpXSk7CiAgICAgICAgIFt0ZW1wQXJyYXkg
YWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkQ2hpbGRyZW5BdHRyaWJ1dGVdOwogICAg
ICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlWaXNpYmxlQ2hpbGRyZW5B
dHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlU
aXRsZVVJRWxlbWVudEF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5T
QWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uQXR0cmlidXRlXTsKLSAgICAgICAgbWVudUJhckF0dHJz
ID0gdGVtcEFycmF5LmxlYWtSZWYoKTsKLSAgICB9Ci0gICAgaWYgKG1lbnVBdHRycyA9PSBuaWwp
IHsKLSAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxs
b2NdIGluaXRXaXRoQXJyYXk6Y29tbW9uTWVudUF0dHJzXSk7CisgICAgICAgIHJldHVybiB0ZW1w
QXJyYXk7CisgICAgfSgpKTsKKyAgICBzdGF0aWMgYXV0byBtZW51QXR0cnMgPSBtYWtlTmV2ZXJE
ZXN0cm95ZWQoW10geworICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFi
bGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTpjb21tb25NZW51QXR0cnMuZ2V0KCkuZ2V0KCld
KTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRD
aGlsZHJlbkF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNz
aWJpbGl0eVZpc2libGVDaGlsZHJlbkF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRk
T2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVRpdGxlVUlFbGVtZW50QXR0cmlidXRlXTsKICAgICAgICAg
W3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb25BdHRyaWJ1dGVd
OwotICAgICAgICBtZW51QXR0cnMgPSB0ZW1wQXJyYXkubGVha1JlZigpOwotICAgIH0KLSAgICBp
ZiAobWVudUl0ZW1BdHRycyA9PSBuaWwpIHsKLSAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9w
dE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6Y29tbW9uTWVudUF0dHJz
XSk7CisgICAgICAgIHJldHVybiB0ZW1wQXJyYXk7CisgICAgfSgpKTsKKyAgICBzdGF0aWMgYXV0
byBtZW51SXRlbUF0dHJzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICAgICAgYXV0byB0
ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6
Y29tbW9uTWVudUF0dHJzLmdldCgpLmdldCgpXSk7CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2Jq
ZWN0Ok5TQWNjZXNzaWJpbGl0eVRpdGxlQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBh
ZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb25BdHRyaWJ1dGVdOwogICAgICAgICBb
dGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlIZWxwQXR0cmlidXRlXTsKQEAgLTE0
NTksOSArMTQ0Miw5IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAg
ICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDooTlNTdHJpbmcqKWtBWE1lbnVJdGVtUHJpbWFyeVVJ
RWxlbWVudEF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNz
aWJpbGl0eVNlcnZlc0FzVGl0bGVGb3JVSUVsZW1lbnRzQXR0cmlidXRlXTsKICAgICAgICAgW3Rl
bXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5Rm9jdXNlZEF0dHJpYnV0ZV07Ci0gICAg
ICAgIG1lbnVJdGVtQXR0cnMgPSB0ZW1wQXJyYXkubGVha1JlZigpOwotICAgIH0KLSAgICBzdGF0
aWMgTlNBcnJheSAqbWVudUJ1dHRvbkF0dHJzID0gcmV0YWluUHRyKEBbCisgICAgICAgIHJldHVy
biB0ZW1wQXJyYXk7CisgICAgfSgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWlu
UHRyPE5TQXJyYXk+PiBtZW51QnV0dG9uQXR0cnMgPSBAWwogICAgICAgICBOU0FjY2Vzc2liaWxp
dHlSb2xlQXR0cmlidXRlLAogICAgICAgICBOU0FjY2Vzc2liaWxpdHlSb2xlRGVzY3JpcHRpb25B
dHRyaWJ1dGUsCiAgICAgICAgIE5TQWNjZXNzaWJpbGl0eVBhcmVudEF0dHJpYnV0ZSwKQEAgLTE0
NzIsNDAgKzE0NTUsMzEgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAg
ICAgICAgIE5TQWNjZXNzaWJpbGl0eUZvY3VzZWRBdHRyaWJ1dGUsCiAgICAgICAgIE5TQWNjZXNz
aWJpbGl0eVRpdGxlQXR0cmlidXRlLAogICAgICAgICBOU0FjY2Vzc2liaWxpdHlDaGlsZHJlbkF0
dHJpYnV0ZSwKLSAgICBdKS5sZWFrUmVmKCk7Ci0gICAgaWYgKGNvbnRyb2xBdHRycyA9PSBuaWwp
IHsKLSAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxs
b2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlc10pOworICAgIF07CisgICAgc3RhdGljIGF1dG8g
Y29udHJvbEF0dHJzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICAgICAgYXV0byB0ZW1w
QXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0
cmlidXRlcy5nZXQoKS5nZXQoKV0pOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0Fj
Y2Vzc2liaWxpdHlUaXRsZVVJRWxlbWVudEF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkg
YWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUFjY2Vzc0tleUF0dHJpYnV0ZV07CiAgICAgICAgIFt0
ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVJlcXVpcmVkQXR0cmlidXRlXTsKICAg
ICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5SW52YWxpZEF0dHJpYnV0
ZV07Ci0gICAgICAgIGNvbnRyb2xBdHRycyA9IHRlbXBBcnJheS5sZWFrUmVmKCk7Ci0gICAgfQot
ICAgIGlmIChpbmNyZW1lbnRvckF0dHJzID09IG5pbCkgewotICAgICAgICBhdXRvIHRlbXBBcnJh
eSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1
dGVzXSk7Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUluY3Jl
bWVudEJ1dHRvbkF0dHJpYnV0ZV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNj
ZXNzaWJpbGl0eURlY3JlbWVudEJ1dHRvbkF0dHJpYnV0ZV07Ci0gICAgICAgIFt0ZW1wQXJyYXkg
YWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVZhbHVlRGVzY3JpcHRpb25BdHRyaWJ1dGVdOwotICAg
ICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlNaW5WYWx1ZUF0dHJpYnV0
ZV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU1heFZhbHVl
QXR0cmlidXRlXTsKLSAgICAgICAgaW5jcmVtZW50b3JBdHRycyA9IHRlbXBBcnJheS5sZWFrUmVm
KCk7Ci0gICAgfQotICAgIGlmIChidXR0b25BdHRycyA9PSBuaWwpIHsKLSAgICAgICAgYXV0byB0
ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6
YXR0cmlidXRlc10pOworICAgICAgICByZXR1cm4gdGVtcEFycmF5OworICAgIH0oKSk7CisgICAg
c3RhdGljIGF1dG8gYnV0dG9uQXR0cnMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgICAg
ICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdp
dGhBcnJheTphdHRyaWJ1dGVzLmdldCgpLmdldCgpXSk7CiAgICAgICAgIC8vIEJ1dHRvbnMgc2hv
dWxkIG5vdCBleHBvc2UgQVhWYWx1ZS4KICAgICAgICAgW3RlbXBBcnJheSByZW1vdmVPYmplY3Q6
TlNBY2Nlc3NpYmlsaXR5VmFsdWVBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9i
amVjdDpOU0FjY2Vzc2liaWxpdHlUaXRsZVVJRWxlbWVudEF0dHJpYnV0ZV07CiAgICAgICAgIFt0
ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUFjY2Vzc0tleUF0dHJpYnV0ZV07Ci0g
ICAgICAgIGJ1dHRvbkF0dHJzID0gdGVtcEFycmF5LmxlYWtSZWYoKTsKLSAgICB9Ci0gICAgaWYg
KGNvbWJvQm94QXR0cnMgPT0gbmlsKSB7Ci0gICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHRO
UyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmNvbnRyb2xBdHRyc10pOwor
ICAgICAgICByZXR1cm4gdGVtcEFycmF5OworICAgIH0oKSk7CisgICAgc3RhdGljIGF1dG8gY29t
Ym9Cb3hBdHRycyA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgICAgIGF1dG8gdGVtcEFy
cmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmNvbnRy
b2xBdHRycy5nZXQoKS5nZXQoKV0pOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0Fj
Y2Vzc2liaWxpdHlFeHBhbmRlZEF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2Jq
ZWN0Ok5TQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uQXR0cmlidXRlXTsKLSAgICAgICAgY29tYm9C
b3hBdHRycyA9IHRlbXBBcnJheS5sZWFrUmVmKCk7Ci0gICAgfQotICAgIGlmICh0YWJsZUF0dHJz
ID09IG5pbCkgewotICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVB
cnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzXSk7CisgICAgICAgIHJldHVybiB0
ZW1wQXJyYXk7CisgICAgfSgpKTsKKyAgICBzdGF0aWMgYXV0byB0YWJsZUF0dHJzID0gbWFrZU5l
dmVyRGVzdHJveWVkKFtdIHsKKyAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNN
dXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlcy5nZXQoKS5nZXQoKV0p
OwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlSb3dzQXR0cmli
dXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VmlzaWJs
ZVJvd3NBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2li
aWxpdHlDb2x1bW5zQXR0cmlidXRlXTsKQEAgLTE1MTgsMTUyICsxNDkyLDE1MiBAQCBBTExPV19E
RVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmpl
Y3Q6TlNBY2Nlc3NpYmlsaXR5Um93Q291bnRBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5
IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlBUklBQ29sdW1uQ291bnRBdHRyaWJ1dGVdOwogICAg
ICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlBUklBUm93Q291bnRBdHRy
aWJ1dGVdOwotICAgICAgICB0YWJsZUF0dHJzID0gdGVtcEFycmF5LmxlYWtSZWYoKTsKLSAgICB9
Ci0gICAgaWYgKHRhYmxlUm93QXR0cnMgPT0gbmlsKSB7Ci0gICAgICAgIGF1dG8gdGVtcEFycmF5
ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0
ZXNdKTsKKyAgICAgICAgcmV0dXJuIHRlbXBBcnJheTsKKyAgICB9KCkpOworICAgIHN0YXRpYyBh
dXRvIHRhYmxlUm93QXR0cnMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgICAgICBhdXRv
IHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJh
eTphdHRyaWJ1dGVzLmdldCgpLmdldCgpXSk7CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0
Ok5TQWNjZXNzaWJpbGl0eUluZGV4QXR0cmlidXRlXTsKLSAgICAgICAgdGFibGVSb3dBdHRycyA9
IHRlbXBBcnJheS5sZWFrUmVmKCk7Ci0gICAgfQotICAgIGlmICh0YWJsZUNvbEF0dHJzID09IG5p
bCkgewotICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBh
bGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzXSk7CisgICAgICAgIHJldHVybiB0ZW1wQXJy
YXk7CisgICAgfSgpKTsKKyAgICBzdGF0aWMgYXV0byB0YWJsZUNvbEF0dHJzID0gbWFrZU5ldmVy
RGVzdHJveWVkKFtdIHsKKyAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRh
YmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlcy5nZXQoKS5nZXQoKV0pOwog
ICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlJbmRleEF0dHJpYnV0
ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUhlYWRlckF0
dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVJv
d3NBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxp
dHlWaXNpYmxlUm93c0F0dHJpYnV0ZV07Ci0gICAgICAgIHRhYmxlQ29sQXR0cnMgPSB0ZW1wQXJy
YXkubGVha1JlZigpOwotICAgIH0KLSAgICBpZiAodGFibGVDZWxsQXR0cnMgPT0gbmlsKSB7Ci0g
ICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBp
bml0V2l0aEFycmF5OmF0dHJpYnV0ZXNdKTsKKyAgICAgICAgcmV0dXJuIHRlbXBBcnJheTsKKyAg
ICB9KCkpOworICAgIHN0YXRpYyBhdXRvIHRhYmxlQ2VsbEF0dHJzID0gbWFrZU5ldmVyRGVzdHJv
eWVkKFtdIHsKKyAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJy
YXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlcy5nZXQoKS5nZXQoKV0pOwogICAgICAg
ICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlSb3dJbmRleFJhbmdlQXR0cmli
dXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5Q29sdW1u
SW5kZXhSYW5nZUF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNj
ZXNzaWJpbGl0eUNvbHVtbkhlYWRlclVJRWxlbWVudHNBdHRyaWJ1dGVdOwogICAgICAgICBbdGVt
cEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlSb3dIZWFkZXJVSUVsZW1lbnRzQXR0cmli
dXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5QVJJQUNv
bHVtbkluZGV4QXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nl
c3NpYmlsaXR5QVJJQVJvd0luZGV4QXR0cmlidXRlXTsKLSAgICAgICAgdGFibGVDZWxsQXR0cnMg
PSB0ZW1wQXJyYXkubGVha1JlZigpOwotICAgIH0KLSAgICBpZiAoZ3JvdXBBdHRycyA9PSBuaWwp
IHsKLSAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxs
b2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlc10pOworICAgICAgICByZXR1cm4gdGVtcEFycmF5
OworICAgIH0oKSk7CisgICAgc3RhdGljIGF1dG8gZ3JvdXBBdHRycyA9IG1ha2VOZXZlckRlc3Ry
b3llZChbXSB7CisgICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFy
cmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXMuZ2V0KCkuZ2V0KCldKTsKICAgICAg
ICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VGl0bGVVSUVsZW1lbnRBdHRy
aWJ1dGVdOwotICAgICAgICBncm91cEF0dHJzID0gdGVtcEFycmF5LmxlYWtSZWYoKTsKLSAgICB9
Ci0gICAgaWYgKGlucHV0SW1hZ2VBdHRycyA9PSBuaWwpIHsKLSAgICAgICAgYXV0byB0ZW1wQXJy
YXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YnV0dG9u
QXR0cnNdKTsKKyAgICAgICAgcmV0dXJuIHRlbXBBcnJheTsKKyAgICB9KCkpOworICAgIHN0YXRp
YyBhdXRvIGlucHV0SW1hZ2VBdHRycyA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgICAg
IGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0
aEFycmF5OmJ1dHRvbkF0dHJzLmdldCgpLmdldCgpXSk7CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRk
T2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVVSTEF0dHJpYnV0ZV07Ci0gICAgICAgIGlucHV0SW1hZ2VB
dHRycyA9IHRlbXBBcnJheS5sZWFrUmVmKCk7Ci0gICAgfQotICAgIGlmIChwYXNzd29yZEZpZWxk
QXR0cnMgPT0gbmlsKSB7Ci0gICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0
YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXNdKTsKKyAgICAgICAgcmV0
dXJuIHRlbXBBcnJheTsKKyAgICB9KCkpOworICAgIHN0YXRpYyBhdXRvIHBhc3N3b3JkRmllbGRB
dHRycyA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgICAgIGF1dG8gdGVtcEFycmF5ID0g
YWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXMu
Z2V0KCkuZ2V0KCldKTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmls
aXR5VGl0bGVVSUVsZW1lbnRBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVj
dDpOU0FjY2Vzc2liaWxpdHlSZXF1aXJlZEF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkg
YWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUludmFsaWRBdHRyaWJ1dGVdOwogICAgICAgICBbdGVt
cEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlQbGFjZWhvbGRlclZhbHVlQXR0cmlidXRl
XTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VmFsdWVBdXRv
ZmlsbGVkQXR0cmlidXRlXTsKLSAgICAgICAgcGFzc3dvcmRGaWVsZEF0dHJzID0gdGVtcEFycmF5
LmxlYWtSZWYoKTsKLSAgICB9Ci0gICAgaWYgKHRhYkxpc3RBdHRycyA9PSBuaWwpIHsKLSAgICAg
ICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRX
aXRoQXJyYXk6YXR0cmlidXRlc10pOworICAgICAgICByZXR1cm4gdGVtcEFycmF5OworICAgIH0o
KSk7CisgICAgc3RhdGljIGF1dG8gdGFiTGlzdEF0dHJzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtd
IHsKKyAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxs
b2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlcy5nZXQoKS5nZXQoKV0pOwogICAgICAgICBbdGVt
cEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlUYWJzQXR0cmlidXRlXTsKICAgICAgICAg
W3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5Q29udGVudHNBdHRyaWJ1dGVdOwog
ICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlPcmllbnRhdGlvbkF0
dHJpYnV0ZV07Ci0gICAgICAgIHRhYkxpc3RBdHRycyA9IHRlbXBBcnJheS5sZWFrUmVmKCk7Ci0g
ICAgfQotICAgIGlmIChvdXRsaW5lQXR0cnMgPT0gbmlsKSB7Ci0gICAgICAgIGF1dG8gdGVtcEFy
cmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJp
YnV0ZXNdKTsKKyAgICAgICAgcmV0dXJuIHRlbXBBcnJheTsKKyAgICB9KCkpOworICAgIHN0YXRp
YyBhdXRvIG91dGxpbmVBdHRycyA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgICAgIGF1
dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFy
cmF5OmF0dHJpYnV0ZXMuZ2V0KCkuZ2V0KCldKTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmpl
Y3Q6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRSb3dzQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBB
cnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5Um93c0F0dHJpYnV0ZV07CiAgICAgICAgIFt0
ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUNvbHVtbnNBdHRyaWJ1dGVdOwogICAg
ICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlPcmllbnRhdGlvbkF0dHJp
YnV0ZV07Ci0gICAgICAgIG91dGxpbmVBdHRycyA9IHRlbXBBcnJheS5sZWFrUmVmKCk7Ci0gICAg
fQotICAgIGlmIChvdXRsaW5lUm93QXR0cnMgPT0gbmlsKSB7Ci0gICAgICAgIGF1dG8gdGVtcEFy
cmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRhYmxl
Um93QXR0cnNdKTsKKyAgICAgICAgcmV0dXJuIHRlbXBBcnJheTsKKyAgICB9KCkpOworICAgIHN0
YXRpYyBhdXRvIG91dGxpbmVSb3dBdHRycyA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAg
ICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0
V2l0aEFycmF5OnRhYmxlUm93QXR0cnMuZ2V0KCkuZ2V0KCldKTsKICAgICAgICAgW3RlbXBBcnJh
eSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5RGlzY2xvc2luZ0F0dHJpYnV0ZV07CiAgICAgICAg
IFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eURpc2Nsb3NlZEJ5Um93QXR0cmli
dXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5RGlzY2xv
c3VyZUxldmVsQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nl
c3NpYmlsaXR5RGlzY2xvc2VkUm93c0F0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgcmVt
b3ZlT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVZhbHVlQXR0cmlidXRlXTsKLSAgICAgICAgb3V0bGlu
ZVJvd0F0dHJzID0gdGVtcEFycmF5LmxlYWtSZWYoKTsKLSAgICB9Ci0gICAgaWYgKHNjcm9sbFZp
ZXdBdHRycyA9PSBuaWwpIHsKLSAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNN
dXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlc10pOworICAgICAgICBy
ZXR1cm4gdGVtcEFycmF5OworICAgIH0oKSk7CisgICAgc3RhdGljIGF1dG8gc2Nyb2xsVmlld0F0
dHJzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBh
ZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlcy5n
ZXQoKS5nZXQoKV0pOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxp
dHlDb250ZW50c0F0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNj
ZXNzaWJpbGl0eUhvcml6b250YWxTY3JvbGxCYXJBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFy
cmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlWZXJ0aWNhbFNjcm9sbEJhckF0dHJpYnV0ZV07
Ci0gICAgICAgIHNjcm9sbFZpZXdBdHRycyA9IHRlbXBBcnJheS5sZWFrUmVmKCk7Ci0gICAgfQot
ICAgIGlmICghaW1hZ2VBdHRycykgewotICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMo
W1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzXSk7CisgICAg
ICAgIHJldHVybiB0ZW1wQXJyYXk7CisgICAgfSgpKTsKKyAgICBzdGF0aWMgYXV0byBpbWFnZUF0
dHJzID0gIG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgICAgIGF1dG8gdGVtcEFycmF5ID0g
YWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXMu
Z2V0KCkuZ2V0KCldKTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmls
aXR5RW1iZWRkZWRJbWFnZURlc2NyaXB0aW9uQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJh
eSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VVJMQXR0cmlidXRlXTsKLSAgICAgICAgaW1hZ2VB
dHRycyA9IHRlbXBBcnJheS5sZWFrUmVmKCk7Ci0gICAgfQorICAgICAgICByZXR1cm4gdGVtcEFy
cmF5OworICAgIH0oKSk7CiAKLSAgICBOU0FycmF5ICpvYmplY3RBdHRyaWJ1dGVzID0gYXR0cmli
dXRlczsKKyAgICBOU0FycmF5ICpvYmplY3RBdHRyaWJ1dGVzID0gYXR0cmlidXRlcy5nZXQoKS5n
ZXQoKTsKIAogICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc1Bhc3N3b3JkRmllbGQoKSkKLSAgICAg
ICAgb2JqZWN0QXR0cmlidXRlcyA9IHBhc3N3b3JkRmllbGRBdHRyczsKKyAgICAgICAgb2JqZWN0
QXR0cmlidXRlcyA9IHBhc3N3b3JkRmllbGRBdHRycy5nZXQoKS5nZXQoKTsKICAgICBlbHNlIGlm
IChiYWNraW5nT2JqZWN0LT5pc1dlYkFyZWEoKSkKLSAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9
IHdlYkFyZWFBdHRyczsKKyAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9IHdlYkFyZWFBdHRycy5n
ZXQoKS5nZXQoKTsKICAgICBlbHNlIGlmIChiYWNraW5nT2JqZWN0LT5pc1RleHRDb250cm9sKCkp
Ci0gICAgICAgIG9iamVjdEF0dHJpYnV0ZXMgPSB0ZXh0QXR0cnM7CisgICAgICAgIG9iamVjdEF0
dHJpYnV0ZXMgPSB0ZXh0QXR0cnMuZ2V0KCkuZ2V0KCk7CiAgICAgZWxzZSBpZiAoYmFja2luZ09i
amVjdC0+aXNMaW5rKCkpCi0gICAgICAgIG9iamVjdEF0dHJpYnV0ZXMgPSBhbmNob3JBdHRyczsK
KyAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9IGFuY2hvckF0dHJzLmdldCgpLmdldCgpOwogICAg
IGVsc2UgaWYgKGJhY2tpbmdPYmplY3QtPmlzSW1hZ2UoKSkKLSAgICAgICAgb2JqZWN0QXR0cmli
dXRlcyA9IGltYWdlQXR0cnM7CisgICAgICAgIG9iamVjdEF0dHJpYnV0ZXMgPSBpbWFnZUF0dHJz
LmdldCgpLmdldCgpOwogICAgIGVsc2UgaWYgKGJhY2tpbmdPYmplY3QtPmlzVGFibGUoKSAmJiBi
YWNraW5nT2JqZWN0LT5pc0V4cG9zYWJsZSgpKQotICAgICAgICBvYmplY3RBdHRyaWJ1dGVzID0g
dGFibGVBdHRyczsKKyAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9IHRhYmxlQXR0cnMuZ2V0KCku
Z2V0KCk7CiAgICAgZWxzZSBpZiAoYmFja2luZ09iamVjdC0+aXNUYWJsZUNvbHVtbigpKQotICAg
ICAgICBvYmplY3RBdHRyaWJ1dGVzID0gdGFibGVDb2xBdHRyczsKKyAgICAgICAgb2JqZWN0QXR0
cmlidXRlcyA9IHRhYmxlQ29sQXR0cnMuZ2V0KCkuZ2V0KCk7CiAgICAgZWxzZSBpZiAoYmFja2lu
Z09iamVjdC0+aXNUYWJsZUNlbGwoKSkKLSAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9IHRhYmxl
Q2VsbEF0dHJzOworICAgICAgICBvYmplY3RBdHRyaWJ1dGVzID0gdGFibGVDZWxsQXR0cnMuZ2V0
KCkuZ2V0KCk7CiAgICAgZWxzZSBpZiAoYmFja2luZ09iamVjdC0+aXNUYWJsZVJvdygpKSB7CiAg
ICAgICAgIC8vIEFuIEFSSUEgdGFibGUgcm93IGNhbiBiZSBjb2xsYXBzZWQgYW5kIGV4cGFuZGVk
LCBzbyBpdCBuZWVkcyB0aGUgZXh0cmEgYXR0cmlidXRlcy4KICAgICAgICAgaWYgKGJhY2tpbmdP
YmplY3QtPmlzQVJJQVRyZWVHcmlkUm93KCkpCi0gICAgICAgICAgICBvYmplY3RBdHRyaWJ1dGVz
ID0gb3V0bGluZVJvd0F0dHJzOworICAgICAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9IG91dGxp
bmVSb3dBdHRycy5nZXQoKS5nZXQoKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgb2JqZWN0
QXR0cmlidXRlcyA9IHRhYmxlUm93QXR0cnM7CisgICAgICAgICAgICBvYmplY3RBdHRyaWJ1dGVz
ID0gdGFibGVSb3dBdHRycy5nZXQoKS5nZXQoKTsKICAgICB9IGVsc2UgaWYgKGJhY2tpbmdPYmpl
Y3QtPmlzVHJlZSgpKQotICAgICAgICBvYmplY3RBdHRyaWJ1dGVzID0gb3V0bGluZUF0dHJzOwor
ICAgICAgICBvYmplY3RBdHRyaWJ1dGVzID0gb3V0bGluZUF0dHJzLmdldCgpLmdldCgpOwogICAg
IGVsc2UgaWYgKGJhY2tpbmdPYmplY3QtPmlzVHJlZUl0ZW0oKSkgewogICAgICAgICBpZiAoYmFj
a2luZ09iamVjdC0+c3VwcG9ydHNDaGVja2VkU3RhdGUoKSkKLSAgICAgICAgICAgIG9iamVjdEF0
dHJpYnV0ZXMgPSBbb3V0bGluZVJvd0F0dHJzIGFycmF5QnlBZGRpbmdPYmplY3Q6TlNBY2Nlc3Np
YmlsaXR5VmFsdWVBdHRyaWJ1dGVdOworICAgICAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9IFtv
dXRsaW5lUm93QXR0cnMuZ2V0KCkgYXJyYXlCeUFkZGluZ09iamVjdDpOU0FjY2Vzc2liaWxpdHlW
YWx1ZUF0dHJpYnV0ZV07CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG9iamVjdEF0dHJpYnV0
ZXMgPSBvdXRsaW5lUm93QXR0cnM7CisgICAgICAgICAgICBvYmplY3RBdHRyaWJ1dGVzID0gb3V0
bGluZVJvd0F0dHJzLmdldCgpLmdldCgpOwogICAgIH0KICAgICBlbHNlIGlmIChiYWNraW5nT2Jq
ZWN0LT5pc0xpc3RCb3goKSkKLSAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9IGxpc3RCb3hBdHRy
czsKKyAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9IGxpc3RCb3hBdHRycy5nZXQoKS5nZXQoKTsK
ICAgICBlbHNlIGlmIChiYWNraW5nT2JqZWN0LT5pc0xpc3QoKSkKLSAgICAgICAgb2JqZWN0QXR0
cmlidXRlcyA9IGxpc3RBdHRyczsKKyAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9IGxpc3RBdHRy
cy5nZXQoKS5nZXQoKTsKICAgICBlbHNlIGlmIChiYWNraW5nT2JqZWN0LT5pc0NvbWJvQm94KCkp
Ci0gICAgICAgIG9iamVjdEF0dHJpYnV0ZXMgPSBjb21ib0JveEF0dHJzOworICAgICAgICBvYmpl
Y3RBdHRyaWJ1dGVzID0gY29tYm9Cb3hBdHRycy5nZXQoKS5nZXQoKTsKICAgICBlbHNlIGlmIChi
YWNraW5nT2JqZWN0LT5pc1Byb2dyZXNzSW5kaWNhdG9yKCkgfHwgYmFja2luZ09iamVjdC0+aXNT
bGlkZXIoKSkKLSAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9IHJhbmdlQXR0cnM7CisgICAgICAg
IG9iamVjdEF0dHJpYnV0ZXMgPSByYW5nZUF0dHJzLmdldCgpLmdldCgpOwogICAgIC8vIFRoZXNl
IGFyZSBwcm9jZXNzZWQgaW4gb3JkZXIgYmVjYXVzZSBhbiBpbnB1dCBpbWFnZSBpcyBhIGJ1dHRv
biwgYW5kIGEgYnV0dG9uIGlzIGEgY29udHJvbC4KICAgICBlbHNlIGlmIChiYWNraW5nT2JqZWN0
LT5pc0lucHV0SW1hZ2UoKSkKLSAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9IGlucHV0SW1hZ2VB
dHRyczsKKyAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9IGlucHV0SW1hZ2VBdHRycy5nZXQoKS5n
ZXQoKTsKICAgICBlbHNlIGlmIChiYWNraW5nT2JqZWN0LT5pc0J1dHRvbigpKQotICAgICAgICBv
YmplY3RBdHRyaWJ1dGVzID0gYnV0dG9uQXR0cnM7CisgICAgICAgIG9iamVjdEF0dHJpYnV0ZXMg
PSBidXR0b25BdHRycy5nZXQoKS5nZXQoKTsKICAgICBlbHNlIGlmIChiYWNraW5nT2JqZWN0LT5p
c0NvbnRyb2woKSkKLSAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9IGNvbnRyb2xBdHRyczsKKyAg
ICAgICAgb2JqZWN0QXR0cmlidXRlcyA9IGNvbnRyb2xBdHRycy5nZXQoKS5nZXQoKTsKIAogICAg
IGVsc2UgaWYgKGJhY2tpbmdPYmplY3QtPmlzR3JvdXAoKSB8fCBiYWNraW5nT2JqZWN0LT5pc0xp
c3RJdGVtKCkpCi0gICAgICAgIG9iamVjdEF0dHJpYnV0ZXMgPSBncm91cEF0dHJzOworICAgICAg
ICBvYmplY3RBdHRyaWJ1dGVzID0gZ3JvdXBBdHRycy5nZXQoKS5nZXQoKTsKICAgICBlbHNlIGlm
IChiYWNraW5nT2JqZWN0LT5pc1RhYkxpc3QoKSkKLSAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9
IHRhYkxpc3RBdHRyczsKKyAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9IHRhYkxpc3RBdHRycy5n
ZXQoKS5nZXQoKTsKICAgICBlbHNlIGlmIChiYWNraW5nT2JqZWN0LT5pc1Njcm9sbFZpZXcoKSkK
LSAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9IHNjcm9sbFZpZXdBdHRyczsKKyAgICAgICAgb2Jq
ZWN0QXR0cmlidXRlcyA9IHNjcm9sbFZpZXdBdHRycy5nZXQoKS5nZXQoKTsKICAgICBlbHNlIGlm
IChiYWNraW5nT2JqZWN0LT5pc1NwaW5CdXR0b24oKSkKLSAgICAgICAgb2JqZWN0QXR0cmlidXRl
cyA9IGluY3JlbWVudG9yQXR0cnM7CisgICAgICAgIG9iamVjdEF0dHJpYnV0ZXMgPSBpbmNyZW1l
bnRvckF0dHJzLmdldCgpLmdldCgpOwogICAgIGVsc2UgaWYgKGJhY2tpbmdPYmplY3QtPmlzTWVu
dSgpKQotICAgICAgICBvYmplY3RBdHRyaWJ1dGVzID0gbWVudUF0dHJzOworICAgICAgICBvYmpl
Y3RBdHRyaWJ1dGVzID0gbWVudUF0dHJzLmdldCgpLmdldCgpOwogICAgIGVsc2UgaWYgKGJhY2tp
bmdPYmplY3QtPmlzTWVudUJhcigpKQotICAgICAgICBvYmplY3RBdHRyaWJ1dGVzID0gbWVudUJh
ckF0dHJzOworICAgICAgICBvYmplY3RBdHRyaWJ1dGVzID0gbWVudUJhckF0dHJzLmdldCgpLmdl
dCgpOwogICAgIGVsc2UgaWYgKGJhY2tpbmdPYmplY3QtPmlzTWVudUJ1dHRvbigpKQotICAgICAg
ICBvYmplY3RBdHRyaWJ1dGVzID0gbWVudUJ1dHRvbkF0dHJzOworICAgICAgICBvYmplY3RBdHRy
aWJ1dGVzID0gbWVudUJ1dHRvbkF0dHJzLmdldCgpLmdldCgpOwogICAgIGVsc2UgaWYgKGJhY2tp
bmdPYmplY3QtPmlzTWVudUl0ZW0oKSkKLSAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9IG1lbnVJ
dGVtQXR0cnM7CisgICAgICAgIG9iamVjdEF0dHJpYnV0ZXMgPSBtZW51SXRlbUF0dHJzLmdldCgp
LmdldCgpOwogCiAgICAgTlNBcnJheSAqYWRkaXRpb25hbEF0dHJpYnV0ZXMgPSBbc2VsZiBhZGRp
dGlvbmFsQWNjZXNzaWJpbGl0eUF0dHJpYnV0ZU5hbWVzXTsKICAgICBpZiAoW2FkZGl0aW9uYWxB
dHRyaWJ1dGVzIGNvdW50XSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS90ZXN0
YmluZGluZ3MubW0gYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvdGVzdGJpbmRpbmdzLm1tCmluZGV4
IDIwYTA2YTNhMWZhMDg2YzAwOGI0ZDk3OWQ2NzQwM2Q1OGNhNmUzMmUuLjFkNjFjM2M0NWYzZmNj
MjY4YWYyMWQxMWM5NWNhNTYxN2NlODRjNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS90ZXN0YmluZGluZ3MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3Rlc3RiaW5k
aW5ncy5tbQpAQCAtMjI3LDUxICsyMjcsNDkgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiph
cmd2KQogICAgIAogICAgIGJvb2wgcmV0ID0gdHJ1ZTsKICAgICB7Ci0gICAgICAgIE5TQXV0b3Jl
bGVhc2VQb29sICpwb29sID0gW1tOU0F1dG9yZWxlYXNlUG9vbCBhbGxvY10gaW5pdF07Ci0gICAg
ICAgIAotICAgICAgICBKU0xvY2sgbG9jazsKLSAgICAgICAgCi0gICAgICAgIC8vIGNyZWF0ZSBp
bnRlcnByZXRlciB3LyBnbG9iYWwgb2JqZWN0Ci0gICAgICAgIE9iamVjdCBnbG9iYWwobmV3IEds
b2JhbEltcCgpKTsKLSAgICAgICAgSW50ZXJwcmV0ZXIgaW50ZXJwOwotICAgICAgICBpbnRlcnAu
c2V0R2xvYmFsT2JqZWN0KGdsb2JhbCk7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0ID0gaW50ZXJwLmdsb2JhbE9iamVjdCgpOwotICAgICAgICAKLSAgICAgICAg
YXV0byBteUludGVyZmFjZSA9IGFkb3B0TlMoW1tNeUZpcnN0SW50ZXJmYWNlIGFsbG9jXSBpbml0
XSk7Ci0gICAgICAgIAotICAgICAgICBnbG9iYWwucHV0KGxleGljYWxHbG9iYWxPYmplY3QsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcobGV4aWNhbEdsb2JhbE9iamVjdCwgIm15SW50ZXJmYWNlIiks
IEluc3RhbmNlOjpjcmVhdGVSdW50aW1lT2JqZWN0KEluc3RhbmNlOjpPYmplY3RpdmVDTGFuZ3Vh
Z2UsICh2b2lkICopbXlJbnRlcmZhY2UuZ2V0KCkpKTsKLSAgICAgICAgCi0gICAgICAgIGZvciAo
aW50IGkgPSAxOyBpIDwgYXJnYzsgaSsrKSB7Ci0gICAgICAgICAgICBjb25zdCBjaGFyICpjb2Rl
ID0gcmVhZEphdmFTY3JpcHRGcm9tRmlsZShhcmd2W2ldKTsKLSAgICAgICAgICAgIAotICAgICAg
ICAgICAgaWYgKGNvZGUpIHsKLSAgICAgICAgICAgICAgICAvLyBydW4KLSAgICAgICAgICAgICAg
ICBDb21wbGV0aW9uIGNvbXAoaW50ZXJwLmV2YWx1YXRlKGNvZGUpKTsKLSAgICAgICAgICAgICAg
ICAKLSAgICAgICAgICAgICAgICBpZiAoY29tcC5jb21wbFR5cGUoKSA9PSBUaHJvdykgewotICAg
ICAgICAgICAgICAgICAgICBWYWx1ZSBleFZhbCA9IGNvbXAudmFsdWUoKTsKLSAgICAgICAgICAg
ICAgICAgICAgY2hhciAqbXNnID0gZXhWYWwudG9TdHJpbmcobGV4aWNhbEdsb2JhbE9iamVjdCku
YXNjaWkoKTsKLSAgICAgICAgICAgICAgICAgICAgaW50IGxpbmVubyA9IC0xOwotICAgICAgICAg
ICAgICAgICAgICBpZiAoZXhWYWwudHlwZSgpID09IE9iamVjdFR5cGUpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIFZhbHVlIGxpbmVWYWwgPSBPYmplY3Q6OmR5bmFtaWNDYXN0KGV4VmFsKS5n
ZXQobGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhsZXhpY2FsR2xv
YmFsT2JqZWN0LCAibGluZSIpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsaW5lVmFs
LnR5cGUoKSA9PSBOdW1iZXJUeXBlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVu
byA9IGludChsaW5lVmFsLnRvTnVtYmVyKGxleGljYWxHbG9iYWxPYmplY3QpKTsKKyAgICAgICAg
QGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgICAgICBKU0xvY2sgbG9jazsKKworICAgICAgICAg
ICAgLy8gY3JlYXRlIGludGVycHJldGVyIHcvIGdsb2JhbCBvYmplY3QKKyAgICAgICAgICAgIE9i
amVjdCBnbG9iYWwobmV3IEdsb2JhbEltcCgpKTsKKyAgICAgICAgICAgIEludGVycHJldGVyIGlu
dGVycDsKKyAgICAgICAgICAgIGludGVycC5zZXRHbG9iYWxPYmplY3QoZ2xvYmFsKTsKKyAgICAg
ICAgICAgIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gaW50ZXJwLmdsb2Jh
bE9iamVjdCgpOworCisgICAgICAgICAgICBhdXRvIG15SW50ZXJmYWNlID0gYWRvcHROUyhbW015
Rmlyc3RJbnRlcmZhY2UgYWxsb2NdIGluaXRdKTsKKworICAgICAgICAgICAgZ2xvYmFsLnB1dChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGxleGljYWxHbG9iYWxP
YmplY3QsICJteUludGVyZmFjZSIpLCBJbnN0YW5jZTo6Y3JlYXRlUnVudGltZU9iamVjdChJbnN0
YW5jZTo6T2JqZWN0aXZlQ0xhbmd1YWdlLCAodm9pZCAqKW15SW50ZXJmYWNlLmdldCgpKSk7CisK
KyAgICAgICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDwgYXJnYzsgaSsrKSB7CisgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciAqY29kZSA9IHJlYWRKYXZhU2NyaXB0RnJvbUZpbGUoYXJndltpXSk7
CisKKyAgICAgICAgICAgICAgICBpZiAoY29kZSkgeworICAgICAgICAgICAgICAgICAgICAvLyBy
dW4KKyAgICAgICAgICAgICAgICAgICAgQ29tcGxldGlvbiBjb21wKGludGVycC5ldmFsdWF0ZShj
b2RlKSk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNvbXAuY29tcGxUeXBlKCkgPT0gVGhy
b3cpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlIGV4VmFsID0gY29tcC52YWx1ZSgp
OworICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqbXNnID0gZXhWYWwudG9TdHJpbmcobGV4
aWNhbEdsb2JhbE9iamVjdCkuYXNjaWkoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBs
aW5lbm8gPSAtMTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChleFZhbC50eXBlKCkgPT0g
T2JqZWN0VHlwZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlIGxpbmVWYWwg
PSBPYmplY3Q6OmR5bmFtaWNDYXN0KGV4VmFsKS5nZXQobGV4aWNhbEdsb2JhbE9iamVjdCwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyhsZXhpY2FsR2xvYmFsT2JqZWN0LCAibGluZSIpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAobGluZVZhbC50eXBlKCkgPT0gTnVtYmVyVHlwZSkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZW5vID0gaW50KGxpbmVWYWwudG9O
dW1iZXIobGV4aWNhbEdsb2JhbE9iamVjdCkpOworICAgICAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxpbmVubyAhPSAtMSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkV4Y2VwdGlvbiwgbGluZSAlZDogJXNcbiIs
IGxpbmVubywgbXNnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkV4Y2VwdGlvbjogJXNcbiIsIG1zZyk7
CisgICAgICAgICAgICAgICAgICAgICAgICByZXQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAg
ICAgfSBlbHNlIGlmIChjb21wLmNvbXBsVHlwZSgpID09IFJldHVyblZhbHVlKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBjaGFyICptc2cgPSBjb21wLnZhbHVlKCkudG9TdHJpbmcoaW50ZXJw
Lmdsb2JhbE9iamVjdCgpKS5hc2NpaSgpOworICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50
ZihzdGRlcnIsICJSZXR1cm4gdmFsdWU6ICVzXG4iLCBtc2cpOwogICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgICAgIGlmIChsaW5lbm8gIT0gLTEpCi0gICAgICAgICAgICAg
ICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwiRXhjZXB0aW9uLCBsaW5lICVkOiAlc1xuIixsaW5l
bm8sbXNnKTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAg
ICAgZnByaW50ZihzdGRlcnIsIkV4Y2VwdGlvbjogJXNcbiIsbXNnKTsKLSAgICAgICAgICAgICAg
ICAgICAgcmV0ID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVs
c2UgaWYgKGNvbXAuY29tcGxUeXBlKCkgPT0gUmV0dXJuVmFsdWUpIHsKLSAgICAgICAgICAgICAg
ICAgICAgY2hhciAqbXNnID0gY29tcC52YWx1ZSgpLnRvU3RyaW5nKGludGVycC5nbG9iYWxPYmpl
Y3QoKSkuYXNjaWkoKTsKLSAgICAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsIlJldHVy
biB2YWx1ZTogJXNcbiIsbXNnKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIG15SW50ZXJmYWNlID0gbmlsOwogICAgICAgICB9Ci0gICAgICAgIAotICAg
ICAgICBteUludGVyZmFjZSA9IG5pbDsKLSAgICAgICAgW3Bvb2wgZHJhaW5dOwogICAgIH0gLy8g
ZW5kIGJsb2NrLCBzbyB0aGF0IEludGVycHJldGVyIGFuZCBnbG9iYWwgZ2V0IGRlbGV0ZWQKICAg
ICAKICAgICByZXR1cm4gcmV0ID8gMCA6IDM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuTW9kZWwuaAppbmRleCAwZmVkNzk1YWNhOWQ5ODZm
ZDE5OGZjZWM4ZGZiNWM1MGE1YWQyZDZlLi5mODFjMjgxMTJiMzFjYmVhNDVlNThhNmFhYmViNmRm
ZDRkODhkN2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRl
b0Z1bGxzY3JlZW5Nb2RlbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Zp
ZGVvRnVsbHNjcmVlbk1vZGVsLmgKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogCiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2aXJ0dWFsIFVJVmlld0NvbnRyb2xsZXIgKnByZXNlbnRp
bmdWaWV3Q29udHJvbGxlcigpIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIFVJVmll
d0NvbnRyb2xsZXIgKmNyZWF0ZVZpZGVvRnVsbHNjcmVlblZpZXdDb250cm9sbGVyKEFWUGxheWVy
Vmlld0NvbnRyb2xsZXIgKikgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIHZpcnR1YWwgUmV0YWlu
UHRyPFVJVmlld0NvbnRyb2xsZXI+IGNyZWF0ZVZpZGVvRnVsbHNjcmVlblZpZXdDb250cm9sbGVy
KEFWUGxheWVyVmlld0NvbnRyb2xsZXIgKikgeyByZXR1cm4gbnVsbHB0cjsgfQogI2VuZGlmCiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9X
ZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVyRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVyRGVsZWdhdGUubW0K
aW5kZXggMzczYTllYTRjNjBhZWEzMTUzMGRjMDUyOTQ3YWMzNTk0OWFjMGNmNS4uMTI2YTViNWUy
YjQ0MGJhMGFjOGVlMzBkMjgzMDQ1N2ExMWI5OGI3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVn
YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkFj
dGlvbkRpc2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZS5tbQpAQCAtMzIsMTIgKzMyLDEyIEBAIEBpbXBs
ZW1lbnRhdGlvbiBXZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVyRGVsZWdhdGUKIAogKyAoaW5zdGFu
Y2V0eXBlKXNoYXJlZAogewotICAgIHN0YXRpYyBXZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVyRGVs
ZWdhdGUgKmNvbnRyb2xsZXI7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxX
ZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVyRGVsZWdhdGU+PiBjb250cm9sbGVyOwogICAgIHN0YXRp
YyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOwogICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tl
biwgXnsKLSAgICAgICAgY29udHJvbGxlciA9IFtbV2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRl
bGVnYXRlIGFsbG9jXSBpbml0XTsKKyAgICAgICAgY29udHJvbGxlci5nZXQoKSA9IGFkb3B0TlMo
W1tXZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVyRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKICAgICB9
KTsKLSAgICByZXR1cm4gY29udHJvbGxlcjsKKyAgICByZXR1cm4gY29udHJvbGxlci5nZXQoKS5n
ZXQoKTsKIH0KIAogLSAoaWQ8Q0FBY3Rpb24+KWFjdGlvbkZvckxheWVyOihDQUxheWVyICopbGF5
ZXIgZm9yS2V5OihOU1N0cmluZyAqKWV2ZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvV2ViQmFja2dyb3VuZFRhc2tDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1dlYkJhY2tncm91bmRUYXNrQ29udHJvbGxlci5tbQppbmRleCAwMDQ4
OGRjMmIxMTA0NGQwNzRmZDY5MDdmN2RiZWUwNzNhMWQ5YjA0Li5iZTE0YjlkZjVjMDE3MjRlMGMw
ZjJmYjVkNWJlOWUwZjE3ZDY3YjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvV2ViQmFja2dyb3VuZFRhc2tDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9XZWJCYWNrZ3JvdW5kVGFza0NvbnRyb2xsZXIubW0KQEAgLTMyLDEwICsz
Miw4IEBAIEBpbXBsZW1lbnRhdGlvbiBXZWJCYWNrZ3JvdW5kVGFza0NvbnRyb2xsZXIKIAogKyAo
V2ViQmFja2dyb3VuZFRhc2tDb250cm9sbGVyICopc2hhcmVkQ29udHJvbGxlcgogewotICAgIHN0
YXRpYyBXZWJCYWNrZ3JvdW5kVGFza0NvbnRyb2xsZXIgKnNoYXJlZENvbnRyb2xsZXI7Ci0gICAg
aWYgKCFzaGFyZWRDb250cm9sbGVyKQotICAgICAgICBzaGFyZWRDb250cm9sbGVyID0gW1tzZWxm
IGFsbG9jXSBpbml0XTsKLSAgICByZXR1cm4gc2hhcmVkQ29udHJvbGxlcjsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPFdlYkJhY2tncm91bmRUYXNrQ29udHJvbGxlcj4+IHNo
YXJlZENvbnRyb2xsZXIgPSBhZG9wdE5TKFtbc2VsZiBhbGxvY10gaW5pdF0pOworICAgIHJldHVy
biBzaGFyZWRDb250cm9sbGVyLmdldCgpLmdldCgpOwogfQogCiAtICh2b2lkKWRlYWxsb2MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0
ZWJvYXJkLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBh
c3RlYm9hcmQubW0KaW5kZXggNDdkNzc3MjYxMDBlZDAzNTlhOWNhNjQ3N2MyZjljM2RhNzIwODY4
ZC4uZDJhMWRiYzNhODlmOTFhZWMyYTMyMjAzODY0YTBjZWYzMTkyMzJkMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9h
cmQubW0KQEAgLTQ3NSwxMiArNDc1LDEyIEBAIEBpbXBsZW1lbnRhdGlvbiBXZWJJdGVtUHJvdmlk
ZXJQYXN0ZWJvYXJkIHsKIAogKyAoaW5zdGFuY2V0eXBlKXNoYXJlZEluc3RhbmNlCiB7Ci0gICAg
c3RhdGljIFdlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQgKnNoYXJlZFBhc3RlYm9hcmQgPSBuaWw7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxXZWJJdGVtUHJvdmlkZXJQYXN0
ZWJvYXJkPj4gc2hhcmVkUGFzdGVib2FyZDsKICAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9u
Y2VUb2tlbjsKICAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF4oKSB7Ci0gICAgICAgIHNo
YXJlZFBhc3RlYm9hcmQgPSBbW1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQgYWxsb2NdIGluaXRd
OworICAgICAgICBzaGFyZWRQYXN0ZWJvYXJkLmdldCgpID0gYWRvcHROUyhbW1dlYkl0ZW1Qcm92
aWRlclBhc3RlYm9hcmQgYWxsb2NdIGluaXRdKTsKICAgICB9KTsKLSAgICByZXR1cm4gc2hhcmVk
UGFzdGVib2FyZDsKKyAgICByZXR1cm4gc2hhcmVkUGFzdGVib2FyZC5nZXQoKS5nZXQoKTsKIH0K
IAogLSAoaW5zdGFuY2V0eXBlKWluaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy93YWsvV2ViQ29yZVRocmVhZC5tbQppbmRleCBmNTQwZGUwNzVjZGZjMGQ5MTAwZmU5YTczMTU3
OGJkYzU1N2VkYzY5Li4xOWQ3YjdlNWMyN2YyNzUxZDNlNWNlNGQzNmNhNWY2NTBhY2E0MjcwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1t
CkBAIC0xNTUsNyArMTU1LDExIEBAIHN0YXRpYyB2b2lkIFdlYkNvcmVPYmpDRGVhbGxvY09uV2Vi
VGhyZWFkSW1wbChpZCBzZWxmLCBTRUwgX2NtZCk7CiBzdGF0aWMgdm9pZCBXZWJDb3JlT2JqQ0Rl
YWxsb2NXaXRoV2ViVGhyZWFkTG9jayhDbGFzcyBjbHMpOwogc3RhdGljIHZvaWQgV2ViQ29yZU9i
akNEZWFsbG9jV2l0aFdlYlRocmVhZExvY2tJbXBsKGlkIHNlbGYsIFNFTCBfY21kKTsKIAotc3Rh
dGljIE5TTXV0YWJsZUFycmF5KiBzQXN5bmNEZWxlZ2F0ZXMgPSBuaWw7CitzdGF0aWMgUmV0YWlu
UHRyPE5TTXV0YWJsZUFycmF5PiYgc0FzeW5jRGVsZWdhdGVzKCkKK3sKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TTXV0YWJsZUFycmF5Pj4gYXN5bmNEZWxlZ2F0ZXM7Cisg
ICAgcmV0dXJuIGFzeW5jRGVsZWdhdGVzOworfQogCiBXRUJDT1JFX0VYUE9SVCB2b2xhdGlsZSB1
bnNpZ25lZCB3ZWJUaHJlYWREZWxlZ2F0ZU1lc3NhZ2VTY29wZUNvdW50ID0gMDsKIApAQCAtNDQw
LDcgKzQ0NCw3IEBAIHZvaWQgV2ViVGhyZWFkQ2FsbERlbGVnYXRlQXN5bmMoTlNJbnZvY2F0aW9u
KiBpbnZvY2F0aW9uKQogewogICAgIEFTU0VSVChpbnZvY2F0aW9uKTsKICAgICBpZiAoV2ViVGhy
ZWFkSXNDdXJyZW50KCkpCi0gICAgICAgIFtzQXN5bmNEZWxlZ2F0ZXMgYWRkT2JqZWN0Omludm9j
YXRpb25dOworICAgICAgICBbc0FzeW5jRGVsZWdhdGVzKCkgYWRkT2JqZWN0Omludm9jYXRpb25d
OwogICAgIGVsc2UKICAgICAgICAgV2ViVGhyZWFkQ2FsbERlbGVnYXRlKGludm9jYXRpb24pOwog
fQpAQCAtNDk4LDExICs1MDIsMTEgQEAgc3RhdGljIHZvaWQgV2ViUnVuTG9vcExvY2tJbnRlcm5h
bChBdXRvcmVsZWFzZVBvb2xPcGVyYXRpb24gcG9vbE9wZXJhdGlvbikKIAogc3RhdGljIHZvaWQg
V2ViUnVuTG9vcFVubG9ja0ludGVybmFsKEF1dG9yZWxlYXNlUG9vbE9wZXJhdGlvbiBwb29sT3Bl
cmF0aW9uKQogewotICAgIEFTU0VSVChzQXN5bmNEZWxlZ2F0ZXMpOwotICAgIGlmIChbc0FzeW5j
RGVsZWdhdGVzIGNvdW50XSkgewotICAgICAgICBmb3IgKE5TSW52b2NhdGlvbiogaW52b2NhdGlv
biBpbiBzQXN5bmNEZWxlZ2F0ZXMpCisgICAgQVNTRVJUKHNBc3luY0RlbGVnYXRlcygpKTsKKyAg
ICBpZiAoW3NBc3luY0RlbGVnYXRlcygpIGNvdW50XSkgeworICAgICAgICBmb3IgKE5TSW52b2Nh
dGlvbiogaW52b2NhdGlvbiBpbiBzQXN5bmNEZWxlZ2F0ZXMoKS5nZXQoKSkKICAgICAgICAgICAg
IFNlbmREZWxlZ2F0ZU1lc3NhZ2UoW2ludm9jYXRpb24gcmV0YWluXSk7Ci0gICAgICAgIFtzQXN5
bmNEZWxlZ2F0ZXMgcmVtb3ZlQWxsT2JqZWN0c107CisgICAgICAgIFtzQXN5bmNEZWxlZ2F0ZXMo
KSByZW1vdmVBbGxPYmplY3RzXTsKICAgICB9CiAKICAgICBpZiAocG9vbE9wZXJhdGlvbiA9PSBQ
dXNoT3JQb3BBdXRvcmVsZWFzZVBvb2wgJiYgIXBlckNhbGxvdXRBdXRvcmVsZWFzZXBvb2xFbmFi
bGVkKQpAQCAtNjg2LDcgKzY5MCw3IEBAIHN0YXRpYyB2b2lkIFN0YXJ0V2ViVGhyZWFkKCkKICAg
ICAvLyBtb2RlcyBzbyB3ZSBkb24ndCBibG9jayB0aGUgd2ViIHRocmVhZCB3aGlsZSBzY3JvbGxp
bmcuCiAgICAgQ0ZSdW5Mb29wQWRkU291cmNlKHJ1bkxvb3AsIGRlbGVnYXRlU291cmNlLCBrQ0ZS
dW5Mb29wQ29tbW9uTW9kZXMpOwogCi0gICAgc0FzeW5jRGVsZWdhdGVzID0gW1tOU011dGFibGVB
cnJheSBhbGxvY10gaW5pdF07CisgICAgc0FzeW5jRGVsZWdhdGVzKCkgPSBhZG9wdE5TKFtbTlNN
dXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKIAogICAgIG1haW5SdW5Mb29wQXV0b1VubG9ja09i
c2VydmVyID0gQ0ZSdW5Mb29wT2JzZXJ2ZXJDcmVhdGUobnVsbHB0ciwga0NGUnVuTG9vcEJlZm9y
ZVdhaXRpbmcgfCBrQ0ZSdW5Mb29wRXhpdCwgWUVTLCAzMDAwMDAxLCBNYWluUnVuTG9vcEF1dG9V
bmxvY2ssIG51bGxwdHIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvVGhlbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0K
aW5kZXggNGEwNDc2N2FlZTk5NTAwN2M1ODM5OGU4NzNlMGYwYWZlMTZiZjBiZi4uYmY4MjAwNDMx
NTNiNGRjNWRmODIzOTQzZjg2YTU5YTQ0MWYwNTJiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9UaGVtZU1hYy5tbQpAQCAtNDkyLDkgKzQ5Miw5IEBAIHN0YXRpYyBjb25zdCBpbnQqIGJ1
dHRvbk1hcmdpbnMoTlNDb250cm9sU2l6ZSBjb250cm9sU2l6ZSkKIAogZW51bSBCdXR0b25DZWxs
VHlwZSB7IE5vcm1hbEJ1dHRvbkNlbGwsIERlZmF1bHRCdXR0b25DZWxsIH07CiAKLXN0YXRpYyBO
U0J1dHRvbkNlbGwgKmxlYWtCdXR0b25DZWxsKEJ1dHRvbkNlbGxUeXBlIHR5cGUpCitzdGF0aWMg
UmV0YWluUHRyPE5TQnV0dG9uQ2VsbD4gYnV0dG9uQ2VsbChCdXR0b25DZWxsVHlwZSB0eXBlKQog
ewotICAgIE5TQnV0dG9uQ2VsbCAqY2VsbCA9IFtbTlNCdXR0b25DZWxsIGFsbG9jXSBpbml0XTsK
KyAgICBhdXRvIGNlbGwgPSBhZG9wdE5TKFtbTlNCdXR0b25DZWxsIGFsbG9jXSBpbml0XSk7CiAg
ICAgW2NlbGwgc2V0VGl0bGU6bmlsXTsKICAgICBbY2VsbCBzZXRCdXR0b25UeXBlOk5TQnV0dG9u
VHlwZU1vbWVudGFyeVB1c2hJbl07CiAgICAgaWYgKHR5cGUgPT0gRGVmYXVsdEJ1dHRvbkNlbGwp
CkBAIC01MzcsMTEgKzUzNywxMSBAQCBzdGF0aWMgTlNCdXR0b25DZWxsICpidXR0b24oQ29udHJv
bFBhcnQgcGFydCwgY29uc3QgQ29udHJvbFN0YXRlcyYgY29udHJvbFN0YXRlcwogICAgIENvbnRy
b2xTdGF0ZXM6OlN0YXRlcyBzdGF0ZXMgPSBjb250cm9sU3RhdGVzLnN0YXRlcygpOwogICAgIE5T
QnV0dG9uQ2VsbCAqY2VsbDsKICAgICBpZiAoc3RhdGVzICYgQ29udHJvbFN0YXRlczo6RGVmYXVs
dFN0YXRlKSB7Ci0gICAgICAgIHN0YXRpYyBOU0J1dHRvbkNlbGwgKmRlZmF1bHRDZWxsID0gbGVh
a0J1dHRvbkNlbGwoRGVmYXVsdEJ1dHRvbkNlbGwpOwotICAgICAgICBjZWxsID0gZGVmYXVsdENl
bGw7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNCdXR0b25DZWxs
Pj4gZGVmYXVsdENlbGwgPSBidXR0b25DZWxsKERlZmF1bHRCdXR0b25DZWxsKTsKKyAgICAgICAg
Y2VsbCA9IGRlZmF1bHRDZWxsLmdldCgpLmdldCgpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHN0
YXRpYyBOU0J1dHRvbkNlbGwgKm5vcm1hbENlbGwgPSBsZWFrQnV0dG9uQ2VsbChOb3JtYWxCdXR0
b25DZWxsKTsKLSAgICAgICAgY2VsbCA9IG5vcm1hbENlbGw7CisgICAgICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNCdXR0b25DZWxsPj4gbm9ybWFsQ2VsbCA9IGJ1dHRvbkNl
bGwoTm9ybWFsQnV0dG9uQ2VsbCk7CisgICAgICAgIGNlbGwgPSBub3JtYWxDZWxsLmdldCgpLmdl
dCgpOwogICAgIH0KICAgICBzZXRVcEJ1dHRvbkNlbGwoY2VsbCwgcGFydCwgY29udHJvbFN0YXRl
cywgem9vbWVkU2l6ZSwgem9vbUZhY3Rvcik7CiAgICAgcmV0dXJuIGNlbGw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViTlNBdHRyaWJ1dGVkU3RyaW5nRXh0cmFz
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYk5TQXR0cmlidXRlZFN0cmluZ0V4
dHJhcy5tbQppbmRleCBkZmYwNjc4MjgwNzQ5OTFjYzM2OGYxM2ViNDk5Mzk4MGI0YjlhOTMzLi42
YjI4NGEwNGJiYzVkY2FjYzY4NDA5Y2YxMDBmZDY2MzFiNzE4MGE5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViTlNBdHRyaWJ1dGVkU3RyaW5nRXh0cmFzLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRy
YXMubW0KQEAgLTQyLDI0ICs0MiwxOCBAQCBOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRT
dHJpbmdCeVN0cmlwcGluZ0F0dGFjaG1lbnRDaGFyYWN0ZXJzKE5TQXR0cmlidXRlZAogewogICAg
IE5TUmFuZ2UgYXR0YWNobWVudFJhbmdlOwogICAgIE5TU3RyaW5nICpvcmlnaW5hbFN0cmluZyA9
IFthdHRyaWJ1dGVkU3RyaW5nIHN0cmluZ107Ci0gICAgc3RhdGljIE5TU3RyaW5nICphdHRhY2ht
ZW50Q2hhclN0cmluZyA9IG5pbDsKKyAgICBzdGF0aWMgYXV0byBhdHRhY2htZW50Q2hhclN0cmlu
ZyA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgICAgIHVuaWNoYXIgY2hhcnNbMl0gPSB7
IE5TQXR0YWNobWVudENoYXJhY3RlciwgMCB9OworICAgICAgICByZXR1cm4gYWRvcHROUyhbW05T
U3RyaW5nIGFsbG9jXSBpbml0V2l0aENoYXJhY3RlcnM6Y2hhcnMgbGVuZ3RoOjFdKTsKKyAgICB9
KCkpOwogICAgIAotICAgIGlmICghYXR0YWNobWVudENoYXJTdHJpbmcpIHsKLSAgICAgICAgdW5p
Y2hhciBjaGFyc1syXTsKLSAgICAgICAgaWYgKCFhdHRhY2htZW50Q2hhclN0cmluZykgewotICAg
ICAgICAgICAgY2hhcnNbMF0gPSBOU0F0dGFjaG1lbnRDaGFyYWN0ZXI7Ci0gICAgICAgICAgICBj
aGFyc1sxXSA9IDA7Ci0gICAgICAgICAgICBhdHRhY2htZW50Q2hhclN0cmluZyA9IFtbTlNTdHJp
bmcgYWxsb2NdIGluaXRXaXRoQ2hhcmFjdGVyczpjaGFycyBsZW5ndGg6MV07Ci0gICAgICAgIH0K
LSAgICB9Ci0gICAgCi0gICAgYXR0YWNobWVudFJhbmdlID0gW29yaWdpbmFsU3RyaW5nIHJhbmdl
T2ZTdHJpbmc6YXR0YWNobWVudENoYXJTdHJpbmddOworICAgIGF0dGFjaG1lbnRSYW5nZSA9IFtv
cmlnaW5hbFN0cmluZyByYW5nZU9mU3RyaW5nOmF0dGFjaG1lbnRDaGFyU3RyaW5nLmdldCgpLmdl
dCgpXTsKICAgICBpZiAoYXR0YWNobWVudFJhbmdlLmxvY2F0aW9uICE9IE5TTm90Rm91bmQgJiYg
YXR0YWNobWVudFJhbmdlLmxlbmd0aCA+IDApIHsKICAgICAgICAgYXV0byBuZXdBdHRyaWJ1dGVk
U3RyaW5nID0gYWRvcHROUyhbYXR0cmlidXRlZFN0cmluZyBtdXRhYmxlQ29weVdpdGhab25lOk5V
TExdKTsKICAgICAgICAgCiAgICAgICAgIHdoaWxlIChhdHRhY2htZW50UmFuZ2UubG9jYXRpb24g
IT0gTlNOb3RGb3VuZCAmJiBhdHRhY2htZW50UmFuZ2UubGVuZ3RoID4gMCkgewogICAgICAgICAg
ICAgW25ld0F0dHJpYnV0ZWRTdHJpbmcgcmVwbGFjZUNoYXJhY3RlcnNJblJhbmdlOmF0dGFjaG1l
bnRSYW5nZSB3aXRoU3RyaW5nOkAiIl07Ci0gICAgICAgICAgICBhdHRhY2htZW50UmFuZ2UgPSBb
W25ld0F0dHJpYnV0ZWRTdHJpbmcgc3RyaW5nXSByYW5nZU9mU3RyaW5nOmF0dGFjaG1lbnRDaGFy
U3RyaW5nXTsKKyAgICAgICAgICAgIGF0dGFjaG1lbnRSYW5nZSA9IFtbbmV3QXR0cmlidXRlZFN0
cmluZyBzdHJpbmddIHJhbmdlT2ZTdHJpbmc6YXR0YWNobWVudENoYXJTdHJpbmcuZ2V0KCkuZ2V0
KCldOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBuZXdBdHRyaWJ1dGVkU3RyaW5nLmF1dG9y
ZWxlYXNlKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQppbmRleCBhNGMxZGRiZTU5MDY3YTQ3NzVl
MzE5NGE0YWI3YTYyMjQyZmEwZTRjLi42NDc3YTFjM2RlOWZkMDQ5ZTg5MTI2Y2EzZWFhOTBkYzI1
NWJlNjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9S
ZXNvdXJjZUhhbmRsZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQpAQCAtNzQsMTMgKzc0LDEzIEBAIHN0YXRpYyB2b2lk
IGFwcGx5QmFzaWNBdXRob3JpemF0aW9uSGVhZGVyKFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgQ3JlZGVuCiAKIHN0YXRpYyBOU09wZXJhdGlvblF1ZXVlICpvcGVyYXRpb25RdWV1ZUZv
ckFzeW5jQ2xpZW50cygpCiB7Ci0gICAgc3RhdGljIE5TT3BlcmF0aW9uUXVldWUgKnF1ZXVlOwot
ICAgIGlmICghcXVldWUpIHsKLSAgICAgICAgcXVldWUgPSBbW05TT3BlcmF0aW9uUXVldWUgYWxs
b2NdIGluaXRdOworICAgIHN0YXRpYyBhdXRvIHF1ZXVlID0gbWFrZU5ldmVyRGVzdHJveWVkKFtd
IHsKKyAgICAgICAgYXV0byBxdWV1ZSA9IGFkb3B0TlMoW1tOU09wZXJhdGlvblF1ZXVlIGFsbG9j
XSBpbml0XSk7CiAgICAgICAgIC8vIERlZmF1bHQgY29uY3VycmVudCBvcGVyYXRpb24gY291bnQg
ZGVwZW5kcyBvbiBjdXJyZW50IHN5c3RlbSB3b3JrbG9hZCwgYnV0IGRlbGVnYXRlIG1ldGhvZHMg
YXJlIG1vc3RseSBpZGxpbmcgaW4gSVBDLCBzbyB3ZSBjYW4gcnVuIGFzIG1hbnkgYXMgbmVlZGVk
LgogICAgICAgICBbcXVldWUgc2V0TWF4Q29uY3VycmVudE9wZXJhdGlvbkNvdW50Ok5TT3BlcmF0
aW9uUXVldWVEZWZhdWx0TWF4Q29uY3VycmVudE9wZXJhdGlvbkNvdW50XTsKLSAgICB9Ci0gICAg
cmV0dXJuIHF1ZXVlOworICAgICAgICByZXR1cm4gcXVldWU7CisgICAgfSgpKTsKKyAgICByZXR1
cm4gcXVldWUuZ2V0KCkuZ2V0KCk7CiB9CiAKIFJlc291cmNlSGFuZGxlSW50ZXJuYWw6On5SZXNv
dXJjZUhhbmRsZUludGVybmFsKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9OU0F0dHJpYnV0ZWRTdHJpbmcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvTlNBdHRyaWJ1dGVkU3RyaW5nLm1tCmluZGV4IDhlMDY4YTcwNDMxYzIyNmM0
NWM1OTE2ZjgwMzNiYmIxOTgzODNlNzMuLjg1YWM5ODY0YmE5YjgxZWQzZTgzM2E1M2VmYTZhMGQ5
Mjg5MzAyNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9O
U0F0dHJpYnV0ZWRTdHJpbmcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL05TQXR0cmlidXRlZFN0cmluZy5tbQpAQCAtMTI3LDM0ICsxMjcsMzggQEAgKyAoTlNNdXRh
YmxlQXJyYXk8V0tXZWJWaWV3ICo+ICopY2FjaGUKICAgICByZXR1cm4gY2FjaGU7CiB9CiAKLXN0
YXRpYyBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uOworc3RhdGljIFJldGFp
blB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiYgZ2xvYmFsQ29uZmlndXJhdGlvbigpCit7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9u
Pj4gY29uZmlndXJhdGlvbjsKKyAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKK30KIAogKyAoV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24KIHsKKyAgICBhdXRvJiBjb25maWd1
cmF0aW9uID0gZ2xvYmFsQ29uZmlndXJhdGlvbigpOwogICAgIGlmICghY29uZmlndXJhdGlvbikg
ewotICAgICAgICBjb25maWd1cmF0aW9uID0gW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9j
XSBpbml0XTsKLSAgICAgICAgY29uZmlndXJhdGlvbi5wcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tX
S1Byb2Nlc3NQb29sIGFsbG9jXSBpbml0XSkuZ2V0KCk7Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24u
d2Vic2l0ZURhdGFTdG9yZSA9IFtXS1dlYnNpdGVEYXRhU3RvcmUgbm9uUGVyc2lzdGVudERhdGFT
dG9yZV07Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24ubWVkaWFUeXBlc1JlcXVpcmluZ1VzZXJBY3Rp
b25Gb3JQbGF5YmFjayA9IFdLQXVkaW92aXN1YWxNZWRpYVR5cGVBbGw7Ci0gICAgICAgIGNvbmZp
Z3VyYXRpb24uX2FsbG93c0phdmFTY3JpcHRNYXJrdXAgPSBOTzsKLSAgICAgICAgY29uZmlndXJh
dGlvbi5fYWxsb3dzTWV0YVJlZnJlc2ggPSBOTzsKLSAgICAgICAgY29uZmlndXJhdGlvbi5fYXR0
YWNobWVudEVsZW1lbnRFbmFibGVkID0gWUVTOwotICAgICAgICBjb25maWd1cmF0aW9uLl9pbnZp
c2libGVBdXRvcGxheU5vdFBlcm1pdHRlZCA9IFlFUzsKLSAgICAgICAgY29uZmlndXJhdGlvbi5f
bWVkaWFEYXRhTG9hZHNBdXRvbWF0aWNhbGx5ID0gTk87Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24u
X25lZWRzU3RvcmFnZUFjY2Vzc0Zyb21GaWxlVVJMc1F1aXJrID0gTk87CisgICAgICAgIGNvbmZp
Z3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0p
OworICAgICAgICBbY29uZmlndXJhdGlvbiBzZXRQcm9jZXNzUG9vbDphZG9wdE5TKFtbV0tQcm9j
ZXNzUG9vbCBhbGxvY10gaW5pdF0pLmdldCgpXTsKKyAgICAgICAgW2NvbmZpZ3VyYXRpb24gc2V0
V2Vic2l0ZURhdGFTdG9yZTpbV0tXZWJzaXRlRGF0YVN0b3JlIG5vblBlcnNpc3RlbnREYXRhU3Rv
cmVdXTsKKyAgICAgICAgW2NvbmZpZ3VyYXRpb24gc2V0TWVkaWFUeXBlc1JlcXVpcmluZ1VzZXJB
Y3Rpb25Gb3JQbGF5YmFjazpXS0F1ZGlvdmlzdWFsTWVkaWFUeXBlQWxsXTsKKyAgICAgICAgW2Nv
bmZpZ3VyYXRpb24gX3NldEFsbG93c0phdmFTY3JpcHRNYXJrdXA6Tk9dOworICAgICAgICBbY29u
ZmlndXJhdGlvbiBfc2V0QWxsb3dzTWV0YVJlZnJlc2g6Tk9dOworICAgICAgICBbY29uZmlndXJh
dGlvbiBfc2V0QXR0YWNobWVudEVsZW1lbnRFbmFibGVkOllFU107CisgICAgICAgIFtjb25maWd1
cmF0aW9uIF9zZXRJbnZpc2libGVBdXRvcGxheU5vdFBlcm1pdHRlZDpZRVNdOworICAgICAgICBb
Y29uZmlndXJhdGlvbiBfc2V0TWVkaWFEYXRhTG9hZHNBdXRvbWF0aWNhbGx5Ok5PXTsKKyAgICAg
ICAgW2NvbmZpZ3VyYXRpb24gX3NldE5lZWRzU3RvcmFnZUFjY2Vzc0Zyb21GaWxlVVJMc1F1aXJr
Ok5PXTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgICAgICBjb25maWd1cmF0aW9uLmFs
bG93c0lubGluZU1lZGlhUGxheWJhY2sgPSBOTzsKLSAgICAgICAgY29uZmlndXJhdGlvbi5fY2xp
ZW50TmF2aWdhdGlvbnNSdW5BdEZvcmVncm91bmRQcmlvcml0eSA9IFlFUzsKKyAgICAgICAgW2Nv
bmZpZ3VyYXRpb24gc2V0QWxsb3dzSW5saW5lTWVkaWFQbGF5YmFjazpOT107CisgICAgICAgIFtj
b25maWd1cmF0aW9uIF9zZXRDbGllbnROYXZpZ2F0aW9uc1J1bkF0Rm9yZWdyb3VuZFByaW9yaXR5
OllFU107CiAjZW5kaWYKICAgICB9CiAKLSAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKKyAgICBy
ZXR1cm4gY29uZmlndXJhdGlvbi5nZXQoKTsKIH0KIAogKyAodm9pZCljbGVhckNvbmZpZ3VyYXRp
b24KIHsKLSAgICBbY29uZmlndXJhdGlvbiByZWxlYXNlXTsKLSAgICBjb25maWd1cmF0aW9uID0g
bmlsOworICAgIGdsb2JhbENvbmZpZ3VyYXRpb24oKSA9IG5pbDsKIH0KIAogKyAoUmV0YWluUHRy
PFdLV2ViVmlldz4pcmV0cmlldmVPckNyZWF0ZVdlYlZpZXcKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOU1VSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLm1tCmluZGV4IGQwOGYxMzA1ZDdhMjk1MTNjODc2MjY5ZjVkOTc2N2Y2ZTdh
ZTdlN2YuLmMzYzMwZWU1ZjJhOGI4ZTcwNzYzNzBlYTEyMWMxN2Q0YWRiYWEwZTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05TVVJMQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
TlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5tbQpAQCAtNDIsMTIgKzQyLDEyIEBAIC0gKE5T
T2JqZWN0ICopX3dlYl9jcmVhdGVUYXJnZXQKICAgICBXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlUHJveHkmIGNoYWxsZW5nZSA9ICpyZWludGVycHJldF9jYXN0PFdlYktpdDo6QXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VQcm94eSo+KCZzZWxmLl9hcGlPYmplY3QpOwogCiAgICAgc3RhdGlj
IGRpc3BhdGNoX29uY2VfdCB0b2tlbjsKLSAgICBzdGF0aWMgV0tOU1VSTEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlU2VuZGVyICpzZW5kZXI7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFp
blB0cjxXS05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXI+PiBzZW5kZXI7CiAgICAg
ZGlzcGF0Y2hfb25jZSgmdG9rZW4sIF57Ci0gICAgICAgIHNlbmRlciA9IFtbV0tOU1VSTEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyIGFsbG9jXSBpbml0XTsKKyAgICAgICAgc2VuZGVyLmdl
dCgpID0gYWRvcHROUyhbW1dLTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlciBhbGxv
Y10gaW5pdF0pOwogICAgIH0pOwogCi0gICAgcmV0dXJuIFtbTlNVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSBhbGxvY10gaW5pdFdpdGhBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTptYWMoY2hhbGxl
bmdlLmNvcmUoKSkgc2VuZGVyOnNlbmRlcl07CisgICAgcmV0dXJuIFtbTlNVUkxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSBhbGxvY10gaW5pdFdpdGhBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTptYWMo
Y2hhbGxlbmdlLmNvcmUoKSkgc2VuZGVyOnNlbmRlci5nZXQoKS5nZXQoKV07CiB9CiAKIC0gKFdl
YktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSYpX3dlYl9hdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVByb3h5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tQcm9jZXNzUG9vbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1Byb2Nlc3NQb29sLm1tCmluZGV4IDgzYTc3Mjk4ZTRjNGRkODJkY2EzNTMzNWZhOWM1OTEzMDll
NDM5M2MuLjg4OGU5ZTZjYjdkYjgxMDJkNTY4ZWM1NGEyOTRlNjJjNjY3NzFiYjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCkBA
IC02NSw3ICs2NSwxMSBAQAogI2ltcG9ydCAiV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLmgiCiAj
ZW5kaWYKIAotc3RhdGljIFdLUHJvY2Vzc1Bvb2wgKnNoYXJlZFByb2Nlc3NQb29sOworc3RhdGlj
IFJldGFpblB0cjxXS1Byb2Nlc3NQb29sPiYgc2hhcmVkUHJvY2Vzc1Bvb2woKQoreworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8V0tQcm9jZXNzUG9vbD4+IF9zaGFyZWRQcm9j
ZXNzUG9vbDsKKyAgICByZXR1cm4gX3NoYXJlZFByb2Nlc3NQb29sOworfQogCiBAaW1wbGVtZW50
YXRpb24gV0tQcm9jZXNzUG9vbCB7CiAgICAgV2Vha09iakNQdHI8aWQgPF9XS0F1dG9tYXRpb25E
ZWxlZ2F0ZT4+IF9hdXRvbWF0aW9uRGVsZWdhdGU7CkBAIC0xMDcsNyArMTExLDcgQEAgKyAoQk9P
TClzdXBwb3J0c1NlY3VyZUNvZGluZwogCiAtICh2b2lkKWVuY29kZVdpdGhDb2RlcjooTlNDb2Rl
ciAqKWNvZGVyCiB7Ci0gICAgaWYgKHNlbGYgPT0gc2hhcmVkUHJvY2Vzc1Bvb2wpIHsKKyAgICBp
ZiAoc2VsZiA9PSBzaGFyZWRQcm9jZXNzUG9vbCgpKSB7CiAgICAgICAgIFtjb2RlciBlbmNvZGVC
b29sOllFUyBmb3JLZXk6QCJpc1NoYXJlZFByb2Nlc3NQb29sIl07CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC0xNTksMTAgKzE2MywxMCBAQCArIChXS1Byb2Nlc3NQb29sICopX3NoYXJlZFBy
b2Nlc3NQb29sCiB7CiAgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47CiAgICAg
ZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeewotICAgICAgICBzaGFyZWRQcm9jZXNzUG9vbCA9
IFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gaW5pdF07CisgICAgICAgIHNoYXJlZFByb2Nlc3NQb29s
KCkgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gaW5pdF0pOwogICAgIH0pOwogCi0g
ICAgcmV0dXJuIHNoYXJlZFByb2Nlc3NQb29sOworICAgIHJldHVybiBzaGFyZWRQcm9jZXNzUG9v
bCgpLmdldCgpOwogfQogCiArIChOU0FycmF5PFdLUHJvY2Vzc1Bvb2wgKj4gKilfYWxsUHJvY2Vz
c1Bvb2xzRm9yVGVzdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXcubW0KaW5kZXggMjYxNDFjZjMyMWFlOTNiZGQ5NDYzMmMwMzllOTFiOTgyNTZiNDE5
OC4uOGE5YmUwYTUxOTMwNGNiNjQ4NWY4ZGUxODM5ZTkyMjI0YjM1ZWNlNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0yMTE3LDkgKzIx
MTcsOSBAQCAtIChXS05hdmlnYXRpb24gKilsb2FkU2ltdWxhdGVkUmVxdWVzdDooTlNVUkxSZXF1
ZXN0ICopcmVxdWVzdCB3aXRoUmVzcG9uc2U6KE5TVQogLSAoV0tOYXZpZ2F0aW9uICopbG9hZFNp
bXVsYXRlZFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3Qgd2l0aFJlc3BvbnNlSFRNTFN0
cmluZzooTlNTdHJpbmcgKilzdHJpbmcKIHsKICAgICBOU0RhdGEgKmRhdGEgPSBbc3RyaW5nIGRh
dGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKLSAgICBOU1VSTFJlc3BvbnNl
ICpyZXNwb25zZSA9IFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6cmVxdWVzdC5V
UkwgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDpzdHJpbmcubGVu
Z3RoIHRleHRFbmNvZGluZ05hbWU6QCJVVEYtOCJdOworICAgIGF1dG8gcmVzcG9uc2UgPSBhZG9w
dE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6cmVxdWVzdC5VUkwgTUlNRVR5
cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDpzdHJpbmcubGVuZ3RoIHRleHRF
bmNvZGluZ05hbWU6QCJVVEYtOCJdKTsKIAotICAgIHJldHVybiBbc2VsZiBsb2FkU2ltdWxhdGVk
UmVxdWVzdDpyZXF1ZXN0IHdpdGhSZXNwb25zZTpyZXNwb25zZSByZXNwb25zZURhdGE6ZGF0YV07
CisgICAgcmV0dXJuIFtzZWxmIGxvYWRTaW11bGF0ZWRSZXF1ZXN0OnJlcXVlc3Qgd2l0aFJlc3Bv
bnNlOnJlc3BvbnNlLmdldCgpIHJlc3BvbnNlRGF0YTpkYXRhXTsKIH0KIAogLSAoV0tOYXZpZ2F0
aW9uICopbG9hZEZpbGVSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IGFsbG93aW5nUmVh
ZEFjY2Vzc1RvVVJMOihOU1VSTCAqKXJlYWRBY2Nlc3NVUkwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCmluZGV4IGQx
ODZiOWUwY2Q3ZDdhNWFhYzRjNTEyZTA3MjNkMjc3M2QzZmE4YmMuLjU1YjVmYzk1NTE2OGU0ODQ1
MmNmYjcxMGNlYmI2YWRmZTlkMDVhOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQpAQCAtMTY2LDEyICsxNjYs
MTIgQEAgLSAoQk9PTClpc1BlcnNpc3RlbnQKICsgKE5TU2V0ICopYWxsV2Vic2l0ZURhdGFUeXBl
cwogewogICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOwotICAgIHN0YXRpYyBO
U1NldCAqYWxsV2Vic2l0ZURhdGFUeXBlczsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0
YWluUHRyPE5TU2V0Pj4gYWxsV2Vic2l0ZURhdGFUeXBlczsKICAgICBkaXNwYXRjaF9vbmNlKCZv
bmNlVG9rZW4sIF57Ci0gICAgICAgIGFsbFdlYnNpdGVEYXRhVHlwZXMgPSBbW05TU2V0IGFsbG9j
XSBpbml0V2l0aEFycmF5OkBbIFdLV2Vic2l0ZURhdGFUeXBlRGlza0NhY2hlLCBXS1dlYnNpdGVE
YXRhVHlwZUZldGNoQ2FjaGUsIFdLV2Vic2l0ZURhdGFUeXBlTWVtb3J5Q2FjaGUsIFdLV2Vic2l0
ZURhdGFUeXBlT2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGUsIFdLV2Vic2l0ZURhdGFUeXBlQ29v
a2llcywgV0tXZWJzaXRlRGF0YVR5cGVTZXNzaW9uU3RvcmFnZSwgV0tXZWJzaXRlRGF0YVR5cGVM
b2NhbFN0b3JhZ2UsIFdLV2Vic2l0ZURhdGFUeXBlSW5kZXhlZERCRGF0YWJhc2VzLCBXS1dlYnNp
dGVEYXRhVHlwZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLCBXS1dlYnNpdGVEYXRhVHlwZVdl
YlNRTERhdGFiYXNlcyBdXTsKKyAgICAgICAgYWxsV2Vic2l0ZURhdGFUeXBlcy5nZXQoKSA9IGFk
b3B0TlMoW1tOU1NldCBhbGxvY10gaW5pdFdpdGhBcnJheTpAWyBXS1dlYnNpdGVEYXRhVHlwZURp
c2tDYWNoZSwgV0tXZWJzaXRlRGF0YVR5cGVGZXRjaENhY2hlLCBXS1dlYnNpdGVEYXRhVHlwZU1l
bW9yeUNhY2hlLCBXS1dlYnNpdGVEYXRhVHlwZU9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlLCBX
S1dlYnNpdGVEYXRhVHlwZUNvb2tpZXMsIFdLV2Vic2l0ZURhdGFUeXBlU2Vzc2lvblN0b3JhZ2Us
IFdLV2Vic2l0ZURhdGFUeXBlTG9jYWxTdG9yYWdlLCBXS1dlYnNpdGVEYXRhVHlwZUluZGV4ZWRE
QkRhdGFiYXNlcywgV0tXZWJzaXRlRGF0YVR5cGVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucywg
V0tXZWJzaXRlRGF0YVR5cGVXZWJTUUxEYXRhYmFzZXMgXV0pOwogICAgIH0pOwogCi0gICAgcmV0
dXJuIGFsbFdlYnNpdGVEYXRhVHlwZXM7CisgICAgcmV0dXJuIGFsbFdlYnNpdGVEYXRhVHlwZXMu
Z2V0KCkuZ2V0KCk7CiB9CiAKIC0gKFdLSFRUUENvb2tpZVN0b3JlICopaHR0cENvb2tpZVN0b3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QcmVmZXJlbmNlT2Jz
ZXJ2ZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QcmVmZXJlbmNlT2JzZXJ2
ZXIubW0KaW5kZXggYzFhMzc3OWU3ZjM4N2Y0NzQwMjhkNDI1N2E2MmEyM2M1M2MxYTlhNS4uZWVm
ZWQxYTA3OWRlNzk5NjgwMWU3YzJmMzcwNmIxYzk2OTY1NzZiMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUHJlZmVyZW5jZU9ic2VydmVyLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ByZWZlcmVuY2VPYnNlcnZlci5tbQpAQCAtMTE4LDEy
ICsxMTgsOCBAQCBAaW1wbGVtZW50YXRpb24gV0tQcmVmZXJlbmNlT2JzZXJ2ZXIKIAogKyAoaWQp
c2hhcmVkSW5zdGFuY2UKIHsKLSAgICBzdGF0aWMgV0tQcmVmZXJlbmNlT2JzZXJ2ZXIgKmluc3Rh
bmNlID0gbmlsOwotCi0gICAgaWYgKCFpbnN0YW5jZSkKLSAgICAgICAgaW5zdGFuY2UgPSBbW1tz
ZWxmIGNsYXNzXSBhbGxvY10gaW5pdF07Ci0KLSAgICByZXR1cm4gaW5zdGFuY2U7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxXS1ByZWZlcmVuY2VPYnNlcnZlcj4+IGluc3Rh
bmNlID0gYWRvcHROUyhbW1tzZWxmIGNsYXNzXSBhbGxvY10gaW5pdF0pOworICAgIHJldHVybiBp
bnN0YW5jZS5nZXQoKS5nZXQoKTsKIH0KIAogLSAoaW5zdGFuY2V0eXBlKWluaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5LmgKaW5kZXggNDBlZjU1MzI4MDYyMjljZDZlZDk0YWMzN2ExMzc0YTMzMmZlMzMx
ZC4uYWE5ZjZiMTM4NGQ5M2I4YjIwZDUwOWVlMzA2NGJhNzUxMGRmMjQ4NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5LmgKQEAgLTk0LDcgKzk0LDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpGbG9h
dFNpemUgdmlkZW9EaW1lbnNpb25zKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV92aWRlb0Rp
bWVuc2lvbnM7IH0KICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFVJVmlld0NvbnRyb2xs
ZXIgKnByZXNlbnRpbmdWaWV3Q29udHJvbGxlcigpIGZpbmFsOwotICAgIFVJVmlld0NvbnRyb2xs
ZXIgKmNyZWF0ZVZpZGVvRnVsbHNjcmVlblZpZXdDb250cm9sbGVyKEFWUGxheWVyVmlld0NvbnRy
b2xsZXIqKSBmaW5hbDsKKyAgICBSZXRhaW5QdHI8VUlWaWV3Q29udHJvbGxlcj4gY3JlYXRlVmlk
ZW9GdWxsc2NyZWVuVmlld0NvbnRyb2xsZXIoQVZQbGF5ZXJWaWV3Q29udHJvbGxlciopIGZpbmFs
OwogI2VuZGlmCiAgICAgdm9pZCB3aWxsRW50ZXJQaWN0dXJlSW5QaWN0dXJlKCkgZmluYWw7CiAg
ICAgdm9pZCBkaWRFbnRlclBpY3R1cmVJblBpY3R1cmUoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eS5tbQppbmRleCAzODFiYjFiMDQ3MmQxNTNiNDhhYWQyOGY0YzAyYjdkZDJiMzk5MzFkLi5l
OTg3NGE1ZDljYWIzYmRjOWU1Y2RjODE1NzBlMDg4N2M2ODUxNWU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5Lm1tCkBAIC0yMjQsOSArMjI0LDkgQEAgVUlWaWV3Q29udHJvbGxlciAqVmlkZW9GdWxs
c2NyZWVuTW9kZWxDb250ZXh0OjpwcmVzZW50aW5nVmlld0NvbnRyb2xsZXIoKQogICAgIHJldHVy
biBudWxscHRyOwogfQogCi1VSVZpZXdDb250cm9sbGVyICpWaWRlb0Z1bGxzY3JlZW5Nb2RlbENv
bnRleHQ6OmNyZWF0ZVZpZGVvRnVsbHNjcmVlblZpZXdDb250cm9sbGVyKEFWUGxheWVyVmlld0Nv
bnRyb2xsZXIgKmF2UGxheWVyVmlld0NvbnRyb2xsZXIpCitSZXRhaW5QdHI8VUlWaWV3Q29udHJv
bGxlcj4gVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpjcmVhdGVWaWRlb0Z1bGxzY3JlZW5W
aWV3Q29udHJvbGxlcihBVlBsYXllclZpZXdDb250cm9sbGVyICphdlBsYXllclZpZXdDb250cm9s
bGVyKQogewotICAgIHJldHVybiBbW1dLVmlkZW9GdWxsU2NyZWVuVmlld0NvbnRyb2xsZXIgYWxs
b2NdIGluaXRXaXRoQVZQbGF5ZXJWaWV3Q29udHJvbGxlcjphdlBsYXllclZpZXdDb250cm9sbGVy
XTsKKyAgICByZXR1cm4gYWRvcHROUyhbW1dLVmlkZW9GdWxsU2NyZWVuVmlld0NvbnRyb2xsZXIg
YWxsb2NdIGluaXRXaXRoQVZQbGF5ZXJWaWV3Q29udHJvbGxlcjphdlBsYXllclZpZXdDb250cm9s
bGVyXSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViSW5zcGVjdG9yUHJlZmVyZW5jZU9ic2VydmVyLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViSW5zcGVjdG9yUHJlZmVyZW5jZU9ic2VydmVyLm1tCmluZGV4IDc3
ZDc0MmUxMDUyNWRmM2E3YThjZDQ2Mjk0NzIyNzgzYjI3N2JmYWEuLmRjZDc3NGZhNDk2ZDNmMzcz
ZGMxZDM3OTU5MjI4MjE1MThkOGJlMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYkluc3BlY3RvclByZWZlcmVuY2VPYnNlcnZlci5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJJbnNwZWN0b3JQcmVmZXJlbmNlT2JzZXJ2ZXIubW0K
QEAgLTQxLDEyICs0MSw4IEBAIEBpbXBsZW1lbnRhdGlvbiBXS1dlYkluc3BlY3RvclByZWZlcmVu
Y2VPYnNlcnZlcgogCiArIChpZClzaGFyZWRJbnN0YW5jZQogewotICAgIHN0YXRpYyBXS1dlYklu
c3BlY3RvclByZWZlcmVuY2VPYnNlcnZlciAqaW5zdGFuY2UgPSBuaWw7Ci0KLSAgICBpZiAoIWlu
c3RhbmNlKQotICAgICAgICBpbnN0YW5jZSA9IFtbW3NlbGYgY2xhc3NdIGFsbG9jXSBpbml0XTsK
LQotICAgIHJldHVybiBpbnN0YW5jZTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWlu
UHRyPFdLV2ViSW5zcGVjdG9yUHJlZmVyZW5jZU9ic2VydmVyPj4gaW5zdGFuY2UgPSBhZG9wdE5T
KFtbW3NlbGYgY2xhc3NdIGFsbG9jXSBpbml0XSk7CisgICAgcmV0dXJuIGluc3RhbmNlLmdldCgp
LmdldCgpOwogfQogCiAtIChpbnN0YW5jZXR5cGUpaW5pdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvQXV0aGVudGljYXRvclByZXNl
bnRlckNvb3JkaW5hdG9yLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQ29jb2EvQXV0aGVudGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9yLm1tCmluZGV4IDMw
YzkxZDdiYWZhMjVhMjA4NTMzMzQ1MTQxZTJlYmJhNGQyYjAyYjMuLmVlNmFhZWU0MWM1M2QxYzkz
YjY0OGMxNGVlYzUxZWRiNTZhNDg1MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0F1dGhlbnRpY2F0b3JQcmVzZW50ZXJDb29yZGlu
YXRvci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9D
b2NvYS9BdXRoZW50aWNhdG9yUHJlc2VudGVyQ29vcmRpbmF0b3IubW0KQEAgLTYwLDggKzYwLDgg
QEAgQXV0aGVudGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9yOjpBdXRoZW50aWNhdG9yUHJlc2Vu
dGVyQ29vcmRpbmF0b3IoY29uc3QgQXV0aGUKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgfQogCi0gICAgbV9wcmVzZW50ZXJEZWxlZ2F0ZSA9IFtbV0tBU0NBdXRob3JpemF0aW9u
UHJlc2VudGVyRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoQ29vcmRpbmF0b3I6KnRoaXNdOwotICAg
IG1fcHJlc2VudGVyID0gW2FsbG9jQVNDQXV0aG9yaXphdGlvblByZXNlbnRlckluc3RhbmNlKCkg
aW5pdF07CisgICAgbV9wcmVzZW50ZXJEZWxlZ2F0ZSA9IGFkb3B0TlMoW1tXS0FTQ0F1dGhvcml6
YXRpb25QcmVzZW50ZXJEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhDb29yZGluYXRvcjoqdGhpc10p
OworICAgIG1fcHJlc2VudGVyID0gYWRvcHROUyhbYWxsb2NBU0NBdXRob3JpemF0aW9uUHJlc2Vu
dGVySW5zdGFuY2UoKSBpbml0XSk7CiAgICAgW21fcHJlc2VudGVyIHNldERlbGVnYXRlOm1fcHJl
c2VudGVyRGVsZWdhdGUuZ2V0KCldOwogCiAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IG1h
a2VCbG9ja1B0cihbbWFuYWdlciA9IG1fbWFuYWdlcl0gKGlkPEFTQ0NyZWRlbnRpYWxQcm90b2Nv
bD4gY3JlZGVudGlhbCwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5k
ZXggOTM3YjY1MjM3MjJhMWY2MzE5NDMxYTljN2E5NTU3MzE0N2U0YWQ5Ny4uYTc1NDM2MDVmZmIw
ZGIzMTY0NjZhY2ZiYjRkOTcxZmI2OWI2YTY0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC0zMTcxLDIz
ICszMTcxLDI0IEBAIC0gKE5TQXJyYXkgKilzdXBwb3J0ZWRQYXN0ZWJvYXJkVHlwZXNGb3JDdXJy
ZW50U2VsZWN0aW9uCiB7CiAgICAgaWYgKF9wYWdlLT5lZGl0b3JTdGF0ZSgpLnNlbGVjdGlvbklz
Tm9uZSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBzdGF0aWMgTlNNdXRhYmxlQXJy
YXkgKnJpY2hUeXBlcyA9IG5pbDsKLSAgICBzdGF0aWMgTlNNdXRhYmxlQXJyYXkgKnBsYWluVGV4
dFR5cGVzID0gbmlsOwotICAgIGlmICghcGxhaW5UZXh0VHlwZXMpIHsKLSAgICAgICAgcGxhaW5U
ZXh0VHlwZXMgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XTsKKworICAgIHN0YXRpYyBh
dXRvIHBsYWluVGV4dFR5cGVzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICAgICAgYXV0
byBwbGFpblRleHRUeXBlcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0p
OwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICAgICAgW3BsYWluVGV4
dFR5cGVzIGFkZE9iamVjdDooaWQpa1VUVHlwZVVSTF07CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19FTkQKICAgICAgICAgW3BsYWluVGV4dFR5cGVzIGFkZE9iamVjdHNGcm9tQXJyYXk6
VUlQYXN0ZWJvYXJkVHlwZUxpc3RTdHJpbmddOwotCi0gICAgICAgIHJpY2hUeXBlcyA9IFtbTlNN
dXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdOworICAgICAgICByZXR1cm4gcGxhaW5UZXh0VHlwZXM7
CisgICAgfSgpKTsKKyAgICBzdGF0aWMgYXV0byByaWNoVHlwZXMgPSBtYWtlTmV2ZXJEZXN0cm95
ZWQoW10geworICAgICAgICBhdXRvIHJpY2hUeXBlcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJh
eSBhbGxvY10gaW5pdF0pOwogICAgICAgICBbcmljaFR5cGVzIGFkZE9iamVjdDpXZWJDb3JlOjpX
ZWJBcmNoaXZlUGJvYXJkVHlwZV07CiAgICAgICAgIFtyaWNoVHlwZXMgYWRkT2JqZWN0c0Zyb21B
cnJheTpVSVBhc3RlYm9hcmRUeXBlTGlzdEltYWdlXTsKLSAgICAgICAgW3JpY2hUeXBlcyBhZGRP
YmplY3RzRnJvbUFycmF5OnBsYWluVGV4dFR5cGVzXTsKLSAgICB9CisgICAgICAgIFtyaWNoVHlw
ZXMgYWRkT2JqZWN0c0Zyb21BcnJheTpwbGFpblRleHRUeXBlcy5nZXQoKS5nZXQoKV07CisgICAg
ICAgIHJldHVybiByaWNoVHlwZXM7CisgICAgfSgpKTsKIAotICAgIHJldHVybiAoX3BhZ2UtPmVk
aXRvclN0YXRlKCkuaXNDb250ZW50UmljaGx5RWRpdGFibGUpID8gcmljaFR5cGVzIDogcGxhaW5U
ZXh0VHlwZXM7CisgICAgcmV0dXJuIChfcGFnZS0+ZWRpdG9yU3RhdGUoKS5pc0NvbnRlbnRSaWNo
bHlFZGl0YWJsZSkgPyByaWNoVHlwZXMuZ2V0KCkuZ2V0KCkgOiBwbGFpblRleHRUeXBlcy5nZXQo
KS5nZXQoKTsKIH0KIAogI2RlZmluZSBGT1JXQVJEX0FDVElPTl9UT19XS1dFQlZJRVcoX2FjdGlv
bikgXApAQCAtOTgyNiw3ICs5ODI3LDcgQEAgLSAodm9pZClhc3NpZ25MZWdhY3lEYXRhRm9yQ29u
dGV4dE1lbnVJbnRlcmFjdGlvbgogCiAgICAgX3BhZ2UtPnN0YXJ0SW50ZXJhY3Rpb25XaXRoUG9z
aXRpb25JbmZvcm1hdGlvbihfcG9zaXRpb25JbmZvcm1hdGlvbik7CiAKLSAgICBVSVZpZXdDb250
cm9sbGVyICpwcmV2aWV3Vmlld0NvbnRyb2xsZXIgPSBuaWw7CisgICAgUmV0YWluUHRyPFVJVmll
d0NvbnRyb2xsZXI+IHByZXZpZXdWaWV3Q29udHJvbGxlcjsKIAogICAgIGF1dG8gZWxlbWVudElu
Zm8gPSBhZG9wdE5TKFtbX1dLQWN0aXZhdGVkRWxlbWVudEluZm8gYWxsb2NdIF9pbml0V2l0aElu
dGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uOl9wb3NpdGlvbkluZm9ybWF0aW9uIHVzZXJJ
bmZvOm5pbF0pOwogCkBAIC05ODY3LDcgKzk4NjgsNyBAQCAtICh2b2lkKWFzc2lnbkxlZ2FjeURh
dGFGb3JDb250ZXh0TWVudUludGVyYWN0aW9uCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIAotICAgICAgICBfY29udGV4dE1lbnVMZWdhY3lNZW51ID0gbWVudUZyb21MZWdhY3lQcmV2
aWV3T3JEZWZhdWx0QWN0aW9ucyhwcmV2aWV3Vmlld0NvbnRyb2xsZXIsIGRlZmF1bHRBY3Rpb25z
RnJvbUFzc2lzdGFudCwgZWxlbWVudEluZm8pOworICAgICAgICBfY29udGV4dE1lbnVMZWdhY3lN
ZW51ID0gbWVudUZyb21MZWdhY3lQcmV2aWV3T3JEZWZhdWx0QWN0aW9ucyhwcmV2aWV3Vmlld0Nv
bnRyb2xsZXIuZ2V0KCksIGRlZmF1bHRBY3Rpb25zRnJvbUFzc2lzdGFudCwgZWxlbWVudEluZm8p
OwogCiAgICAgfSBlbHNlIGlmIChfcG9zaXRpb25JbmZvcm1hdGlvbi5pc0ltYWdlICYmIF9wb3Np
dGlvbkluZm9ybWF0aW9uLmltYWdlKSB7CiAgICAgICAgIE5TVVJMICpuc1VSTCA9IChOU1VSTCAq
KXVybDsKQEAgLTk4OTAsMTMgKzk4OTEsMTMgQEAgLSAodm9pZClhc3NpZ25MZWdhY3lEYXRhRm9y
Q29udGV4dE1lbnVJbnRlcmFjdGlvbgogICAgICAgICBpZiAoaW1hZ2VJbmZvICYmIFt1aURlbGVn
YXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6cHJldmlld1ZpZXdDb250
cm9sbGVyRm9ySW1hZ2U6YWx0ZXJuYXRlVVJMOmRlZmF1bHRBY3Rpb25zOmVsZW1lbnRJbmZvOild
KQogICAgICAgICAgICAgcHJldmlld1ZpZXdDb250cm9sbGVyID0gW3VpRGVsZWdhdGUgX3dlYlZp
ZXc6c2VsZi53ZWJWaWV3IHByZXZpZXdWaWV3Q29udHJvbGxlckZvckltYWdlOnVpSW1hZ2UuZ2V0
KCkgYWx0ZXJuYXRlVVJMOm5zVVJMIGRlZmF1bHRBY3Rpb25zOmRlZmF1bHRBY3Rpb25zRnJvbUFz
c2lzdGFudC5nZXQoKSBlbGVtZW50SW5mbzplbGVtZW50SW5mby5nZXQoKV07CiAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgIHByZXZpZXdWaWV3Q29udHJvbGxlciA9IFtbV0tJbWFnZVByZXZpZXdW
aWV3Q29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmNnSW1hZ2UgZGVmYXVsdEFjdGlv
bnM6ZGVmYXVsdEFjdGlvbnNGcm9tQXNzaXN0YW50LmdldCgpIGVsZW1lbnRJbmZvOmVsZW1lbnRJ
bmZvLmdldCgpXTsKKyAgICAgICAgICAgIHByZXZpZXdWaWV3Q29udHJvbGxlciA9IGFkb3B0TlMo
W1tXS0ltYWdlUHJldmlld1ZpZXdDb250cm9sbGVyIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6Y2dJ
bWFnZSBkZWZhdWx0QWN0aW9uczpkZWZhdWx0QWN0aW9uc0Zyb21Bc3Npc3RhbnQuZ2V0KCkgZWxl
bWVudEluZm86ZWxlbWVudEluZm8uZ2V0KCldKTsKICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9E
RUNMQVJBVElPTlNfRU5ECiAKLSAgICAgICAgX2NvbnRleHRNZW51TGVnYWN5TWVudSA9IG1lbnVG
cm9tTGVnYWN5UHJldmlld09yRGVmYXVsdEFjdGlvbnMocHJldmlld1ZpZXdDb250cm9sbGVyLCBk
ZWZhdWx0QWN0aW9uc0Zyb21Bc3Npc3RhbnQsIGVsZW1lbnRJbmZvLCBfcG9zaXRpb25JbmZvcm1h
dGlvbi50aXRsZSk7CisgICAgICAgIF9jb250ZXh0TWVudUxlZ2FjeU1lbnUgPSBtZW51RnJvbUxl
Z2FjeVByZXZpZXdPckRlZmF1bHRBY3Rpb25zKHByZXZpZXdWaWV3Q29udHJvbGxlci5nZXQoKSwg
ZGVmYXVsdEFjdGlvbnNGcm9tQXNzaXN0YW50LCBlbGVtZW50SW5mbywgX3Bvc2l0aW9uSW5mb3Jt
YXRpb24udGl0bGUpOwogICAgIH0KIAotICAgIF9jb250ZXh0TWVudUxlZ2FjeVByZXZpZXdDb250
cm9sbGVyID0gcHJldmlld1ZpZXdDb250cm9sbGVyOworICAgIF9jb250ZXh0TWVudUxlZ2FjeVBy
ZXZpZXdDb250cm9sbGVyID0gV1RGTW92ZShwcmV2aWV3Vmlld0NvbnRyb2xsZXIpOwogfQogCiAt
IChVSUNvbnRleHRNZW51Q29uZmlndXJhdGlvbiAqKWNvbnRleHRNZW51SW50ZXJhY3Rpb246KFVJ
Q29udGV4dE1lbnVJbnRlcmFjdGlvbiAqKWludGVyYWN0aW9uIGNvbmZpZ3VyYXRpb25Gb3JNZW51
QXRMb2NhdGlvbjooQ0dQb2ludClsb2NhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLTW91c2VEZXZpY2VPYnNlcnZlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS01vdXNlRGV2aWNlT2JzZXJ2ZXIubW0KaW5kZXggNDdhMTI1NDYzZWNhN2Q2
ODg1YjVhOGVmYWMyMWM4OWJlYmQ0ZGMwMS4uZGQwMDkxMmEyMzc4ZWJmZDViMGVlNDc3NjU3NGNl
NDc5MWQwYjE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLTW91
c2VEZXZpY2VPYnNlcnZlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tN
b3VzZURldmljZU9ic2VydmVyLm1tCkBAIC00MiwxMCArNDIsOCBAQCBAaW1wbGVtZW50YXRpb24g
V0tNb3VzZURldmljZU9ic2VydmVyIHsKIAogKyAoV0tNb3VzZURldmljZU9ic2VydmVyICopc2hh
cmVkSW5zdGFuY2UKIHsKLSAgICBzdGF0aWMgV0tNb3VzZURldmljZU9ic2VydmVyICppbnN0YW5j
ZTsKLSAgICBpZiAoIWluc3RhbmNlKQotICAgICAgICBpbnN0YW5jZSA9IFtbV0tNb3VzZURldmlj
ZU9ic2VydmVyIGFsbG9jXSBpbml0XTsKLSAgICByZXR1cm4gaW5zdGFuY2U7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxXS01vdXNlRGV2aWNlT2JzZXJ2ZXI+PiBpbnN0YW5j
ZSA9IGFkb3B0TlMoW1tXS01vdXNlRGV2aWNlT2JzZXJ2ZXIgYWxsb2NdIGluaXRdKTsKKyAgICBy
ZXR1cm4gaW5zdGFuY2UuZ2V0KCkuZ2V0KCk7CiB9CiAKIC0gKGluc3RhbmNldHlwZSlpbml0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tTdHlsdXNEZXZpY2VPYnNl
cnZlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1N0eWx1c0RldmljZU9ic2Vy
dmVyLm1tCmluZGV4IGI4M2RjNjhlNjUzZWMzMTk2MThkMTdhNWIwZTgwZDM2ZGY3NzM1YjEuLjRk
MGQxOWJkZDc0Y2YwMjhjN2QzZTA3YjFkOGE1MjQ1NTA3MWQ4MGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1N0eWx1c0RldmljZU9ic2VydmVyLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1N0eWx1c0RldmljZU9ic2VydmVyLm1tCkBAIC00
NCwxMCArNDQsOCBAQCBAaW1wbGVtZW50YXRpb24gV0tTdHlsdXNEZXZpY2VPYnNlcnZlciB7CiAK
ICsgKFdLU3R5bHVzRGV2aWNlT2JzZXJ2ZXIgKilzaGFyZWRJbnN0YW5jZQogewotICAgIHN0YXRp
YyBXS1N0eWx1c0RldmljZU9ic2VydmVyICppbnN0YW5jZTsKLSAgICBpZiAoIWluc3RhbmNlKQot
ICAgICAgICBpbnN0YW5jZSA9IFtbV0tTdHlsdXNEZXZpY2VPYnNlcnZlciBhbGxvY10gaW5pdF07
Ci0gICAgcmV0dXJuIGluc3RhbmNlOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5Q
dHI8V0tTdHlsdXNEZXZpY2VPYnNlcnZlcj4+IGluc3RhbmNlID0gYWRvcHROUyhbW1dLU3R5bHVz
RGV2aWNlT2JzZXJ2ZXIgYWxsb2NdIGluaXRdKTsKKyAgICByZXR1cm4gaW5zdGFuY2UuZ2V0KCku
Z2V0KCk7CiB9CiAKIC0gKGluc3RhbmNldHlwZSlpbml0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvV0tUZXh0SW5wdXRXaW5kb3dDb250cm9sbGVyLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLVGV4dElucHV0V2luZG93Q29udHJvbGxlci5tbQppbmRl
eCA5YjgxZWJjYjUwMGI3YmRhODRlYTIwMTc2NDMwYzk1Njc0ZmNkNGVhLi4zNjQzNDc4ZjZlYWJk
ZDU3MThiZmM2YWQ4YjcyZWJjNmIyOWI5ZjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvV0tUZXh0SW5wdXRXaW5kb3dDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9XS1RleHRJbnB1dFdpbmRvd0NvbnRyb2xsZXIubW0KQEAgLTE2
NCwxMSArMTY0LDggQEAgQGltcGxlbWVudGF0aW9uIFdLVGV4dElucHV0V2luZG93Q29udHJvbGxl
cgogCiArIChXS1RleHRJbnB1dFdpbmRvd0NvbnRyb2xsZXIgKilzaGFyZWRUZXh0SW5wdXRXaW5k
b3dDb250cm9sbGVyCiB7Ci0gICAgc3RhdGljIFdLVGV4dElucHV0V2luZG93Q29udHJvbGxlciAq
dGV4dElucHV0V2luZG93Q29udHJvbGxlcjsKLSAgICBpZiAoIXRleHRJbnB1dFdpbmRvd0NvbnRy
b2xsZXIpCi0gICAgICAgIHRleHRJbnB1dFdpbmRvd0NvbnRyb2xsZXIgPSBbW1dLVGV4dElucHV0
V2luZG93Q29udHJvbGxlciBhbGxvY10gaW5pdF07Ci0gICAgCi0gICAgcmV0dXJuIHRleHRJbnB1
dFdpbmRvd0NvbnRyb2xsZXI7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxX
S1RleHRJbnB1dFdpbmRvd0NvbnRyb2xsZXI+PiB0ZXh0SW5wdXRXaW5kb3dDb250cm9sbGVyID0g
YWRvcHROUyhbW1dLVGV4dElucHV0V2luZG93Q29udHJvbGxlciBhbGxvY10gaW5pdF0pOworICAg
IHJldHVybiB0ZXh0SW5wdXRXaW5kb3dDb250cm9sbGVyLmdldCgpLmdldCgpOwogfQogCiAtIChp
ZClpbml0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViQ29sb3JQ
aWNrZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViQ29sb3JQaWNrZXJN
YWMubW0KaW5kZXggMzk3MWJhZTEzZjQ0ZmMyNGYzYjgyODBhODk5NmFkYjk3MzJkNjY1Zi4uNmRh
MWY5NjhmZDg1N2FjMzVlZGVhNzc1YTNjNTZkMmM3N2RkMmZmZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkNvbG9yUGlja2VyTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJDb2xvclBpY2tlck1hYy5tbQpAQCAtMTMyLDIwICsxMzIs
MjAgQEAgQGltcGxlbWVudGF0aW9uIFdLUG9wb3ZlckNvbG9yV2VsbAogCiArIChOU1BvcG92ZXIg
KilfY29sb3JQb3BvdmVyQ3JlYXRlSWZOZWNlc3Nhcnk6KEJPT0wpZm9yY2VDcmVhdGlvbgogewot
ICAgIHN0YXRpYyBOU1BvcG92ZXIgKmNvbG9yUG9wb3ZlciA9IG5pbDsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TUG9wb3Zlcj4+IGNvbG9yUG9wb3ZlcjsKICAgICBpZiAo
Zm9yY2VDcmVhdGlvbikgewotICAgICAgICBOU1BvcG92ZXIgKnBvcG92ZXIgPSBbW05TUG9wb3Zl
ciBhbGxvY10gaW5pdF07CisgICAgICAgIGF1dG8gcG9wb3ZlciA9IGFkb3B0TlMoW1tOU1BvcG92
ZXIgYWxsb2NdIGluaXRdKTsKICAgICAgICAgW3BvcG92ZXIgX3NldFJlcXVpcmVzQ29ycmVjdENv
bnRlbnRBcHBlYXJhbmNlOllFU107Ci0gICAgICAgIHBvcG92ZXIuYmVoYXZpb3IgPSBOU1BvcG92
ZXJCZWhhdmlvclRyYW5zaWVudDsKKyAgICAgICAgW3BvcG92ZXIgc2V0QmVoYXZpb3I6TlNQb3Bv
dmVyQmVoYXZpb3JUcmFuc2llbnRdOwogCiAgICAgICAgIGF1dG8gY29udHJvbGxlciA9IGFkb3B0
TlMoW1tOU0NsYXNzRnJvbVN0cmluZyhAIk5TQ29sb3JQb3BvdmVyQ29udHJvbGxlciIpIGFsbG9j
XSBpbml0XSk7Ci0gICAgICAgIHBvcG92ZXIuY29udGVudFZpZXdDb250cm9sbGVyID0gY29udHJv
bGxlci5nZXQoKTsKLSAgICAgICAgW2NvbnRyb2xsZXIgc2V0UG9wb3Zlcjpwb3BvdmVyXTsKKyAg
ICAgICAgW3BvcG92ZXIgc2V0Q29udGVudFZpZXdDb250cm9sbGVyOmNvbnRyb2xsZXIuZ2V0KCld
OworICAgICAgICBbY29udHJvbGxlciBzZXRQb3BvdmVyOnBvcG92ZXIuZ2V0KCldOwogCi0gICAg
ICAgIGNvbG9yUG9wb3ZlciA9IHBvcG92ZXI7CisgICAgICAgIGNvbG9yUG9wb3Zlci5nZXQoKSA9
IFdURk1vdmUocG9wb3Zlcik7CiAgICAgfQogCi0gICAgcmV0dXJuIGNvbG9yUG9wb3ZlcjsKKyAg
ICByZXR1cm4gY29sb3JQb3BvdmVyLmdldCgpLmdldCgpOwogfQogCiAtIChpZCA8V0tQb3BvdmVy
Q29sb3JXZWxsRGVsZWdhdGU+KXdlYkRlbGVnYXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duTWFjLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bk1h
Yy5tbQppbmRleCA0ZDA5M2JhY2Y3NWYyOWU5NGMwOWM4NzM0NTU0ZWM1ZDM1NWFkY2ZlLi5kMWE0
MGFlMDk1ZWJmYmNhOTEyMDk3MWFhOTQ5Yzc5NTRkNTM4ODA5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25z
RHJvcGRvd25NYWMubW0KQEAgLTE0Miw3ICsxNDIsNyBAQCAtIChpZClpbml0V2l0aENvbnRlbnRS
ZWN0OihOU1JlY3QpY29udGVudFJlY3Qgc3R5bGVNYXNrOihOU1VJbnRlZ2VyKXN0eWxlTWFzayBi
YQogCiAgICAgc2VsZi5oYXNTaGFkb3cgPSBZRVM7CiAKLSAgICBfYmFja2Ryb3BWaWV3ID0gW1tO
U1Zpc3VhbEVmZmVjdFZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Y29udGVudFJlY3RdOworICAg
IF9iYWNrZHJvcFZpZXcgPSBhZG9wdE5TKFtbTlNWaXN1YWxFZmZlY3RWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOmNvbnRlbnRSZWN0XSk7CiAgICAgW19iYWNrZHJvcFZpZXcgc2V0QXV0b3Jlc2l6
aW5nTWFzazpOU1ZpZXdXaWR0aFNpemFibGUgfCBOU1ZpZXdIZWlnaHRTaXphYmxlXTsKICAgICBb
X2JhY2tkcm9wVmlldyBzZXRNYXRlcmlhbDpOU1Zpc3VhbEVmZmVjdE1hdGVyaWFsTWVudV07CiAg
ICAgW19iYWNrZHJvcFZpZXcgc2V0U3RhdGU6TlNWaXN1YWxFZmZlY3RTdGF0ZUFjdGl2ZV07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21h
Yy9XS0RPTUludGVybmFscy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvbWFjL1dLRE9NSW50ZXJuYWxzLm1tCmluZGV4IDI0ODY3ZGYzNjFhMmRkOWY5MzFj
NzBhMTdhY2U5MDUwMGJkN2VmMWQuLjMzYWM1YTFhNzhmNjdiNGNmYzc4NjUyZjQwMTNhYmIwZTM3
ZmUwODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvbWFjL1dLRE9NSW50ZXJuYWxzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NSW50ZXJuYWxzLm1tCkBAIC04NCw5ICs4NCw5
IEBAIHN0YXRpYyBDbGFzcyBXS0RPTU5vZGVDbGFzcyhXZWJDb3JlOjpOb2RlKiBpbXBsKQogICAg
IHJldHVybiBuaWw7CiB9CiAKLXN0YXRpYyBXS0RPTU5vZGUgKmluaXRXaXRoSW1wbChXZWJDb3Jl
OjpOb2RlKiBpbXBsKQorc3RhdGljIFJldGFpblB0cjxXS0RPTU5vZGU+IGluaXRXaXRoSW1wbChX
ZWJDb3JlOjpOb2RlKiBpbXBsKQogewotICAgIHJldHVybiBbW1dLRE9NTm9kZUNsYXNzKGltcGwp
IGFsbG9jXSBfaW5pdFdpdGhJbXBsOmltcGxdOworICAgIHJldHVybiBhZG9wdE5TKFtbV0tET01O
b2RlQ2xhc3MoaW1wbCkgYWxsb2NdIF9pbml0V2l0aEltcGw6aW1wbF0pOwogfQogCiBXZWJDb3Jl
OjpOb2RlKiB0b1dlYkNvcmVOb2RlKFdLRE9NTm9kZSAqd3JhcHBlcikKQEAgLTEzMSw5ICsxMzEs
OSBAQCBXS0RPTVRleHQgKnRvV0tET01UZXh0KFdlYkNvcmU6OlRleHQqIGltcGwpCiAKIC8vIC0t
IFJhbmdlLiAtLQogCi1zdGF0aWMgV0tET01SYW5nZSAqaW5pdFdpdGhJbXBsKFdlYkNvcmU6OlJh
bmdlKiBpbXBsKQorc3RhdGljIFJldGFpblB0cjxXS0RPTVJhbmdlPiBpbml0V2l0aEltcGwoV2Vi
Q29yZTo6UmFuZ2UqIGltcGwpCiB7Ci0gICAgcmV0dXJuIFtbV0tET01SYW5nZSBhbGxvY10gX2lu
aXRXaXRoSW1wbDppbXBsXTsKKyAgICByZXR1cm4gYWRvcHROUyhbW1dLRE9NUmFuZ2UgYWxsb2Nd
IF9pbml0V2l0aEltcGw6aW1wbF0pOwogfQogCiBXZWJDb3JlOjpSYW5nZSogdG9XZWJDb3JlUmFu
Z2UoV0tET01SYW5nZSAqIHdyYXBwZXIpCkBAIC0xNTUsNyArMTU1LDcgQEAgc3RhdGljIFdLRE9N
VHlwZSB0b1dLRE9NVHlwZShXZWJDb3JlVHlwZSBpbXBsLCBET01DYWNoZTxXZWJDb3JlVHlwZSwg
V0tET01UeXBlPiYKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBpZiAoV0tET01UeXBlIHdyYXBw
ZXIgPSBjYWNoZS5nZXQoaW1wbCkpCiAgICAgICAgIHJldHVybiByZXRhaW5QdHIod3JhcHBlciku
YXV0b3JlbGVhc2UoKTsKLSAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKGluaXRXaXRoSW1wbChp
bXBsKSk7CisgICAgYXV0byB3cmFwcGVyID0gaW5pdFdpdGhJbXBsKGltcGwpOwogICAgIGlmICgh
d3JhcHBlcikKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICByZXR1cm4gd3JhcHBlci5hdXRvcmVs
ZWFzZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL21hYy9JbmplY3RlZEJ1bmRsZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9tYWMvSW5qZWN0ZWRCdW5kbGVNYWMubW0KaW5kZXggMDM0YmE5NDJmNGEz
YjBlZDI0MTM5NjFiMGE4ZDFlODk2ODM0NjRjYi4uYmQ2ZTM5ZjBmMGZiZDJkNWI1NjBjZTFjMzQ0
Njc0MmI0ZmZlMDg5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL21hYy9JbmplY3RlZEJ1bmRsZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvbWFjL0luamVjdGVkQnVuZGxlTWFjLm1tCkBAIC0yMDMs
MTQgKzIwMywxNCBAQCBib29sIEluamVjdGVkQnVuZGxlOjppbml0aWFsaXplKGNvbnN0IFdlYlBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKLSAgICBpZCA8V0tXZWJQcm9jZXNzUGx1Z0luPiBpbnN0YW5jZSA9IChpZCA8
V0tXZWJQcm9jZXNzUGx1Z0luPilbKE5TT2JqZWN0ICopW3ByaW5jaXBhbENsYXNzIGFsbG9jXSBp
bml0XTsKKyAgICBhdXRvIGluc3RhbmNlID0gYWRvcHROUygoaWQgPFdLV2ViUHJvY2Vzc1BsdWdJ
bj4pWyhOU09iamVjdCAqKVtwcmluY2lwYWxDbGFzcyBhbGxvY10gaW5pdF0pOwogICAgIGlmICgh
aW5zdGFuY2UpIHsKICAgICAgICAgV1RGTG9nQWx3YXlzKCJJbmplY3RlZEJ1bmRsZTo6bG9hZCBm
YWlsZWQgLSBDb3VsZCBub3QgaW5pdGlhbGl6ZSBhbiBpbnN0YW5jZSBvZiB0aGUgcHJpbmNpcGFs
IGNsYXNzLlxuIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBXS1dlYlBy
b2Nlc3NQbHVnSW5Db250cm9sbGVyKiBwbHVnSW5Db250cm9sbGVyID0gV2ViS2l0Ojp3cmFwcGVy
KCp0aGlzKTsKLSAgICBbcGx1Z0luQ29udHJvbGxlciBfc2V0UHJpbmNpcGFsQ2xhc3NJbnN0YW5j
ZTppbnN0YW5jZV07CisgICAgW3BsdWdJbkNvbnRyb2xsZXIgX3NldFByaW5jaXBhbENsYXNzSW5z
dGFuY2U6aW5zdGFuY2UuZ2V0KCldOwogCiAgICAgaWYgKFtpbnN0YW5jZSByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKGFkZGl0aW9uYWxDbGFzc2VzRm9yUGFyYW1ldGVyQ29kZXIpXSkKICAg
ICAgICAgW3BsdWdJbkNvbnRyb2xsZXIgZXh0ZW5kQ2xhc3Nlc0ZvclBhcmFtZXRlckNvZGVyOltp
bnN0YW5jZSBhZGRpdGlvbmFsQ2xhc3Nlc0ZvclBhcmFtZXRlckNvZGVyXV07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9NaXNjL1dlYkdlb2xvY2F0aW9uUHJvdmlkZXJJT1Mu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9NaXNjL1dlYkdlb2xvY2F0aW9uUHJvdmlkZXJJ
T1MubW0KaW5kZXggNjFiY2FjMjY2MmRlMDlmZjZkNTg1NTc2OWY1OTQwMzkyYmM1ZmMzYS4uZGU3
ZTQzOWZiOWQ1ZWZhNGI2MTgxMjAxZTIxYjc3ODA2OTE0ZjlhNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9pb3MvTWlzYy9XZWJHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL01pc2MvV2ViR2VvbG9jYXRpb25Qcm92aWRlcklPUy5t
bQpAQCAtOTgsMTEgKzk4LDExIEBAIC0gKHZvaWQpZGVhbGxvYwogKyAoV2ViR2VvbG9jYXRpb25Q
cm92aWRlcklPUyAqKXNoYXJlZEdlb2xvY2F0aW9uUHJvdmlkZXIKIHsKICAgICBzdGF0aWMgZGlz
cGF0Y2hfb25jZV90IG9uY2U7Ci0gICAgc3RhdGljIFdlYkdlb2xvY2F0aW9uUHJvdmlkZXJJT1Mg
KnNoYXJlZEdlb2xvY2F0aW9uUHJvdmlkZXI7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJl
dGFpblB0cjxXZWJHZW9sb2NhdGlvblByb3ZpZGVySU9TPj4gc2hhcmVkR2VvbG9jYXRpb25Qcm92
aWRlcjsKICAgICBkaXNwYXRjaF9vbmNlKCZvbmNlLCBeewotICAgICAgICBzaGFyZWRHZW9sb2Nh
dGlvblByb3ZpZGVyID0gW1tXZWJHZW9sb2NhdGlvblByb3ZpZGVySU9TIGFsbG9jXSBpbml0XTsK
KyAgICAgICAgc2hhcmVkR2VvbG9jYXRpb25Qcm92aWRlci5nZXQoKSA9IGFkb3B0TlMoW1tXZWJH
ZW9sb2NhdGlvblByb3ZpZGVySU9TIGFsbG9jXSBpbml0XSk7CiAgICAgfSk7Ci0gICAgcmV0dXJu
IHNoYXJlZEdlb2xvY2F0aW9uUHJvdmlkZXI7CisgICAgcmV0dXJuIHNoYXJlZEdlb2xvY2F0aW9u
UHJvdmlkZXIuZ2V0KCkuZ2V0KCk7CiB9CiAKIC0gKHZvaWQpc3VzcGVuZApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRGVmYXVsdERlbGVnYXRlcy9XZWJEZWZhdWx0VUlEZWxl
Z2F0ZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RlZmF1bHREZWxlZ2F0ZXMvV2ViRGVm
YXVsdFVJRGVsZWdhdGUubW0KaW5kZXggZGJlY2VkNTY0OTY3YmZmMWNlNThlMmQ0ZjkwMGRmNGFh
NjQyZTI2ZC4uMTVlMTBjNjA1MzJhMWY1ZjBlZmQ0YzlmYzYyMmExNjA5ODk2OTVkYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRGVmYXVsdERlbGVnYXRlcy9XZWJEZWZhdWx0
VUlEZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9EZWZhdWx0RGVsZWdh
dGVzL1dlYkRlZmF1bHRVSURlbGVnYXRlLm1tCkBAIC0zMSw2ICszMSw3IEBACiAjaW1wb3J0ICJX
ZWJUeXBlc0ludGVybmFsLmgiCiAjaW1wb3J0ICJXZWJVSURlbGVnYXRlUHJpdmF0ZS5oIgogI2lt
cG9ydCAiV2ViVmlldy5oIgorI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW1wb3J0
IDx3dGYvUmV0YWluUHRyLmg+CiAKICNpZiBQTEFURk9STShNQUMpCkBAIC01MSw4ICs1Miw2IEBA
IEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdlYkRlZmF1bHRVSURlbGVnYXRlCiAKLXN0YXRpYyBX
ZWJEZWZhdWx0VUlEZWxlZ2F0ZSAqc2hhcmVkRGVsZWdhdGUgPSBuaWw7Ci0KIC8vIFJldHVybiBh
IG9iamVjdCB3aXRoIHZhbmlsbGEgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBwcm90b2NvbCdzIG1l
dGhvZHMKIC8vIE5vdGUgdGhpcyBmZWF0dXJlIHJlbGllcyBvbiBvdXIgZGVmYXVsdCBkZWxlZ2F0
ZSBiZWluZyBzdGF0ZWxlc3MuIFRoaXMKIC8vIGlzIHByb2JhYmx5IGFuIGludmFsaWQgYXNzdW1w
dGlvbiBmb3IgdGhlIFdlYlVJRGVsZWdhdGUuCkBAIC02MCw5ICs1OSw4IEBAIHN0YXRpYyBXZWJE
ZWZhdWx0VUlEZWxlZ2F0ZSAqc2hhcmVkRGVsZWdhdGUgPSBuaWw7CiAvLyB3b24ndCBiZSBhYmxl
IHRvIHVzZSBhIHNpbmdsZXRvbi4KICsgKFdlYkRlZmF1bHRVSURlbGVnYXRlICopc2hhcmVkVUlE
ZWxlZ2F0ZQogewotICAgIGlmICghc2hhcmVkRGVsZWdhdGUpCi0gICAgICAgIHNoYXJlZERlbGVn
YXRlID0gW1tXZWJEZWZhdWx0VUlEZWxlZ2F0ZSBhbGxvY10gaW5pdF07Ci0gICAgcmV0dXJuIHNo
YXJlZERlbGVnYXRlOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8V2ViRGVm
YXVsdFVJRGVsZWdhdGU+PiBzaGFyZWREZWxlZ2F0ZSA9IGFkb3B0TlMoW1tXZWJEZWZhdWx0VUlE
ZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIHJldHVybiBzaGFyZWREZWxlZ2F0ZS5nZXQoKS5n
ZXQoKTsKIH0KIAogLSAoV2ViVmlldyAqKXdlYlZpZXc6IChXZWJWaWV3ICopd3YgY3JlYXRlV2Vi
Vmlld1dpdGhSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IHdpbmRvd0ZlYXR1cmVzOihO
U0RpY3Rpb25hcnkgKilmZWF0dXJlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hp
c3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW0KaW5kZXggODEwZjY3YjdhODU4Y2Y3YmFkODA4NTIyMGNm
ODliZGMzZDIxMGE2ZC4uMzU2OTc5NjlkNDgwNjA3N2NmZjgzZTIwMDY2MzM5MWY0ZWVhZTk3MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRl
bS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVt
Lm1tCkBAIC0xNjEsMTMgKzE2MSwxMyBAQCAtICh2b2lkKWRlYWxsb2MKIC0gKGlkKWNvcHlXaXRo
Wm9uZTooTlNab25lICopem9uZQogewogICAgIFdlYkNvcmVUaHJlYWRWaW9sYXRpb25DaGVja1Jv
dW5kT25lKCk7Ci0gICAgV2ViSGlzdG9yeUl0ZW0gKmNvcHkgPSBbW1tzZWxmIGNsYXNzXSBhbGxv
Y10gaW5pdFdpdGhXZWJDb3JlSGlzdG9yeUl0ZW06Y29yZShfcHJpdmF0ZSktPmNvcHkoKV07Cisg
ICAgUmV0YWluUHRyPFdlYkhpc3RvcnlJdGVtPiBjb3B5ID0gYWRvcHROUyhbW1tzZWxmIGNsYXNz
XSBhbGxvY10gaW5pdFdpdGhXZWJDb3JlSGlzdG9yeUl0ZW06Y29yZShfcHJpdmF0ZSktPmNvcHko
KV0pOwogCiAgICAgY29weS0+X3ByaXZhdGUtPl9sYXN0VmlzaXRlZFRpbWUgPSBfcHJpdmF0ZS0+
X2xhc3RWaXNpdGVkVGltZTsKIAotICAgIGhpc3RvcnlJdGVtV3JhcHBlcnMoKS5zZXQoY29yZShj
b3B5LT5fcHJpdmF0ZSksIGNvcHkpOworICAgIGhpc3RvcnlJdGVtV3JhcHBlcnMoKS5zZXQoY29y
ZShjb3B5LT5fcHJpdmF0ZSksIGNvcHkuZ2V0KCkpOwogCi0gICAgcmV0dXJuIGNvcHk7CisgICAg
cmV0dXJuIGNvcHkubGVha1JlZigpOwogfQogCiAvLyBGSVhNRTogTmVlZCB0byBkZWNpZGUgaWYg
dGhpcyBjbGFzcyBldmVyIHJldHVybnMgVVJMcyBhbmQgZGVjaWRlIG9uIHRoZSBuYW1lIG9mIHRo
aXMgbWV0aG9kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYklj
b25EYXRhYmFzZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViSWNvbkRhdGFi
YXNlLm1tCmluZGV4IDU5NDUxYWRjZWJkNjBkYzAyOWQ4ZGJjZjNhZDYxNDE1MzJkZGI3NjYuLjdl
YTY3Mzc5NGY3NzhkOGE5ZDk1MGNhYzRkZWM0MDZlNWVmYzVkMmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViSWNvbkRhdGFiYXNlLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViSWNvbkRhdGFiYXNlLm1tCkBAIC0xMDUsMTYgKzEwNSwx
NiBAQCArICh2b2lkKWluaXRpYWxpemUKIAogKyAoV2ViSWNvbkRhdGFiYXNlICopc2hhcmVkSWNv
bkRhdGFiYXNlCiB7Ci0gICAgc3RhdGljIFdlYkljb25EYXRhYmFzZSAqZGF0YWJhc2U7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxXZWJJY29uRGF0YWJhc2U+PiBkYXRhYmFz
ZTsKICAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2U7CiAgICAgZGlzcGF0Y2hfb25jZSgm
b25jZSwgXiB7CiAgICAgICAgIGlmIChsaW5rZWRPbk9yQWZ0ZXIoV2ViQ29yZTo6U0RLVmVyc2lv
bjo6Rmlyc3RXaXRoV2ViSWNvbkRhdGFiYXNlV2FybmluZykpCiAgICAgICAgICAgICBOU0xvZyhA
IitbV2ViSWNvbkRhdGFiYXNlIHNoYXJlZEljb25EYXRhYmFzZV0gaXMgbm90IEFQSSBhbmQgc2hv
dWxkIG5vdCBiZSB1c2VkLiBXZWJJY29uRGF0YWJhc2Ugbm8gbG9uZ2VyIGhhbmRsZXMgaWNvbiBs
b2FkaW5nIGFuZCBpdCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4iKTsKIAot
ICAgICAgICBkYXRhYmFzZSA9IFtbV2ViSWNvbkRhdGFiYXNlIGFsbG9jXSBpbml0XTsKKyAgICAg
ICAgZGF0YWJhc2UuZ2V0KCkgPSBhZG9wdE5TKFtbV2ViSWNvbkRhdGFiYXNlIGFsbG9jXSBpbml0
XSk7CiAgICAgfSk7CiAKLSAgICByZXR1cm4gZGF0YWJhc2U7CisgICAgcmV0dXJuIGRhdGFiYXNl
LmdldCgpLmdldCgpOwogfQogCiAtIChpZClpbml0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9NaXNjL1dlYk5TUGFzdGVib2FyZEV4dHJhcy5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL01pc2MvV2ViTlNQYXN0ZWJvYXJkRXh0cmFzLm1tCmluZGV4IGQ5NjBkMThjYzBl
ZDJlZWNkMGY5MGM4NDVhZTA1Y2Q3NGVmYmQ3MGMuLmZlNmE1Nzc3MzA5YTEwYzI5MjgwNGFmMjYy
MGE3MGQ5Yzc2N2NhMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2Mv
V2ViTlNQYXN0ZWJvYXJkRXh0cmFzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01p
c2MvV2ViTlNQYXN0ZWJvYXJkRXh0cmFzLm1tCkBAIC03MSwxNyArNzEsMTQgQEAgKyAoTlNBcnJh
eSAqKV93ZWJfd3JpdGFibGVUeXBlc0ZvclVSTAogICAgIHJldHVybiB0eXBlczsKIH0KIAotc3Rh
dGljIGlubGluZSBOU0FycmF5ICpfY3JlYXRlV3JpdGFibGVUeXBlc0ZvckltYWdlV2l0aG91dEFy
Y2hpdmUoKQotewotICAgIE5TTXV0YWJsZUFycmF5ICp0eXBlcyA9IFtbTlNNdXRhYmxlQXJyYXkg
YWxsb2NdIGluaXRXaXRoT2JqZWN0czpsZWdhY3lUSUZGUGFzdGVib2FyZFR5cGUoKSwgbmlsXTsK
LSAgICBbdHlwZXMgYWRkT2JqZWN0c0Zyb21BcnJheTpbTlNQYXN0ZWJvYXJkIF93ZWJfd3JpdGFi
bGVUeXBlc0ZvclVSTF1dOwotICAgIHJldHVybiB0eXBlczsKLX0KLQogc3RhdGljIE5TQXJyYXkg
Kl93cml0YWJsZVR5cGVzRm9ySW1hZ2VXaXRob3V0QXJjaGl2ZSAodm9pZCkKIHsKLSAgICBzdGF0
aWMgTlNBcnJheSAqdHlwZXMgPSBfY3JlYXRlV3JpdGFibGVUeXBlc0ZvckltYWdlV2l0aG91dEFy
Y2hpdmUoKTsKLSAgICByZXR1cm4gdHlwZXM7CisgICAgc3RhdGljIGF1dG8gdHlwZXMgPSBtYWtl
TmV2ZXJEZXN0cm95ZWQoW10geworICAgICAgICBhdXRvIHR5cGVzID0gYWRvcHROUyhbW05TTXV0
YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6bGVnYWN5VElGRlBhc3RlYm9hcmRUeXBl
KCksIG5pbF0pOworICAgICAgICBbdHlwZXMgYWRkT2JqZWN0c0Zyb21BcnJheTpbTlNQYXN0ZWJv
YXJkIF93ZWJfd3JpdGFibGVUeXBlc0ZvclVSTF1dOworICAgICAgICByZXR1cm4gdHlwZXM7Cisg
ICAgfSgpKTsKKyAgICByZXR1cm4gdHlwZXMuZ2V0KCkuZ2V0KCk7CiB9CiAKIHN0YXRpYyBpbmxp
bmUgTlNBcnJheSAqX2NyZWF0ZVdyaXRhYmxlVHlwZXNGb3JJbWFnZVdpdGhBcmNoaXZlKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBl
UGx1Z2luVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViQmFzZU5l
dHNjYXBlUGx1Z2luVmlldy5tbQppbmRleCAyZGRhN2I2MzkzY2VjY2RjOWM4MTJjNjM4MzkxODhk
NmE0MzVkMTQ4Li42M2I4NGIyMzQ0ZDE4YjUyNTBiZTBjZDJlZmVkNmJhMmMzZDA5ZTY0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBs
dWdpblZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJCYXNl
TmV0c2NhcGVQbHVnaW5WaWV3Lm1tCkBAIC00MzQsNyArNDM0LDcgQEAgLSAodm9pZCljYWNoZVNu
YXBzaG90CiAgICAgaWYgKCFib3VuZHNTaXplLmhlaWdodCB8fCAhYm91bmRzU2l6ZS53aWR0aCkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgTlNJbWFnZSAqc25hcHNob3QgPSBbW05TSW1hZ2UgYWxs
b2NdIGluaXRXaXRoU2l6ZTpib3VuZHNTaXplXTsKKyAgICBhdXRvIHNuYXBzaG90ID0gYWRvcHRO
UyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoU2l6ZTpib3VuZHNTaXplXSk7CiAgICAgICAgIAog
ICAgIF9zbmFwc2hvdHRpbmcgPSBZRVM7CiAgICAgW3NuYXBzaG90IGxvY2tGb2N1c107CkBAIC00
NDIsNyArNDQyLDcgQEAgLSAodm9pZCljYWNoZVNuYXBzaG90CiAgICAgW3NuYXBzaG90IHVubG9j
a0ZvY3VzXTsKICAgICBfc25hcHNob3R0aW5nID0gTk87CiAgICAgCi0gICAgX2NhY2hlZFNuYXBz
aG90ID0gYWRvcHROUyhzbmFwc2hvdCk7CisgICAgX2NhY2hlZFNuYXBzaG90ID0gV1RGTW92ZShz
bmFwc2hvdCk7CiB9CiAKIC0gKHZvaWQpY2xlYXJDYWNoZWRTbmFwc2hvdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJl
YW0ubW0KaW5kZXggNTU2M2QwOWJkNTZjMGIyNmU2ZDkxZDA3ZmNkNzU4ZGYxODBmMGMwYy4uZjg4
OTBkMDUxNmIyMTJhY2ZlNzY5NjY0MjVkZTU0NDEwNGM5YTY5NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFt
Lm1tCkBAIC01NDgsMTAgKzU0OCwxMCBAQCB2b2lkIFdlYk5ldHNjYXBlUGx1Z2luU3RyZWFtOjpk
ZWxpdmVyRGF0YSgpCiAKICAgICBpZiAodG90YWxCeXRlc0RlbGl2ZXJlZCA+IDApIHsKICAgICAg
ICAgaWYgKHRvdGFsQnl0ZXNEZWxpdmVyZWQgPCB0b3RhbEJ5dGVzKSB7Ci0gICAgICAgICAgICBO
U011dGFibGVEYXRhICpuZXdEZWxpdmVyeURhdGEgPSBbW05TTXV0YWJsZURhdGEgYWxsb2NdIGlu
aXRXaXRoQ2FwYWNpdHk6dG90YWxCeXRlcyAtIHRvdGFsQnl0ZXNEZWxpdmVyZWRdOworICAgICAg
ICAgICAgYXV0byBuZXdEZWxpdmVyeURhdGEgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGF0YSBhbGxv
Y10gaW5pdFdpdGhDYXBhY2l0eTp0b3RhbEJ5dGVzIC0gdG90YWxCeXRlc0RlbGl2ZXJlZF0pOwog
ICAgICAgICAgICAgW25ld0RlbGl2ZXJ5RGF0YSBhcHBlbmRCeXRlczpzdGF0aWNfY2FzdDxjaGFy
Kj4oY29uc3RfY2FzdDx2b2lkKj4oW21fZGVsaXZlcnlEYXRhLmdldCgpIGJ5dGVzXSkpICsgdG90
YWxCeXRlc0RlbGl2ZXJlZCBsZW5ndGg6dG90YWxCeXRlcyAtIHRvdGFsQnl0ZXNEZWxpdmVyZWRd
OwogICAgICAgICAgICAgCi0gICAgICAgICAgICBtX2RlbGl2ZXJ5RGF0YSA9IGFkb3B0TlMobmV3
RGVsaXZlcnlEYXRhKTsKKyAgICAgICAgICAgIG1fZGVsaXZlcnlEYXRhID0gV1RGTW92ZShuZXdE
ZWxpdmVyeURhdGEpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgW21fZGVsaXZlcnlE
YXRhLmdldCgpIHNldExlbmd0aDowXTsKICAgICAgICAgICAgIGlmIChtX3JlYXNvbiAhPSBXRUJf
UkVBU09OX05PTkUpIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lu
cy9XZWJQbHVnaW5Db250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lu
cy9XZWJQbHVnaW5Db250cm9sbGVyLm1tCmluZGV4IDdiODJkZWYwNmFmMGMxMDllMjc4MDhmMmNm
N2I1MGYxMWVjYjBkMjkuLmI4YjRiMWQzOTI1MjJiMWYzM2U3YTg0ZTU2OWY1YzJhMWRiYjE4Mjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViUGx1Z2luQ29u
dHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYlBsdWdp
bkNvbnRyb2xsZXIubW0KQEAgLTk4LDcgKzk4LDExIEBAIHN0YXRpYyB2b2lkIGluc3RhbGxGbGlw
NE1hY1BsdWdJbldvcmthcm91bmRJZk5lY2Vzc2FyeSgpOwogI2VuZGlmCiAKIAotc3RhdGljIE5T
TXV0YWJsZVNldCAqcGx1Z2luVmlld3MgPSBuaWw7CitzdGF0aWMgUmV0YWluUHRyPE5TTXV0YWJs
ZVNldD4mIHBsdWdpblZpZXdzKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWlu
UHRyPE5TTXV0YWJsZVNldD4+IF9wbHVnaW5WaWV3czsKKyAgICByZXR1cm4gX3BsdWdpblZpZXdz
OworfQogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIHN0YXRpYyB2b2lkIGluaXRpYWxpemVB
dWRpb1Nlc3Npb24oKQpAQCAtMTQ4LDEwICsxNTIsMTAgQEAgLSAoTlNWaWV3ICopcGx1Z0luVmll
d1dpdGhBcmd1bWVudHM6KE5TRGljdGlvbmFyeSAqKWFyZ3VtZW50cyBmcm9tUGx1Z2luUGFja2Fn
ZToKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICB9CiAgICAgCi0gICAgaWYgKHBsdWdpblZpZXdz
ID09IG5pbCkgewotICAgICAgICBwbHVnaW5WaWV3cyA9IFtbTlNNdXRhYmxlU2V0IGFsbG9jXSBp
bml0XTsKLSAgICB9Ci0gICAgW3BsdWdpblZpZXdzIGFkZE9iamVjdDp2aWV3XTsKKyAgICBhdXRv
JiB2aWV3cyA9IHBsdWdpblZpZXdzKCk7CisgICAgaWYgKCF2aWV3cykKKyAgICAgICAgdmlld3Mg
PSBhZG9wdE5TKFtbTlNNdXRhYmxlU2V0IGFsbG9jXSBpbml0XSk7CisgICAgW3ZpZXdzIGFkZE9i
amVjdDp2aWV3XTsKIAogICAgIHJldHVybiB2aWV3OwogfQpAQCAtMTU5LDE4ICsxNjMsMTkgQEAg
LSAoTlNWaWV3ICopcGx1Z0luVmlld1dpdGhBcmd1bWVudHM6KE5TRGljdGlvbmFyeSAqKWFyZ3Vt
ZW50cyBmcm9tUGx1Z2luUGFja2FnZToKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogKyAodm9p
ZClhZGRQbHVnSW5WaWV3OihOU1ZpZXcgKil2aWV3CiB7Ci0gICAgaWYgKHBsdWdpblZpZXdzID09
IG5pbCkKLSAgICAgICAgcGx1Z2luVmlld3MgPSBbW05TTXV0YWJsZVNldCBhbGxvY10gaW5pdF07
CisgICAgYXV0byYgdmlld3MgPSBwbHVnaW5WaWV3cygpOworICAgIGlmICghdmlld3MpCisgICAg
ICAgIHZpZXdzID0gYWRvcHROUyhbW05TTXV0YWJsZVNldCBhbGxvY10gaW5pdF0pOwogCiAgICAg
QVNTRVJUKHZpZXcpOwogICAgIGlmICh2aWV3KQotICAgICAgICBbcGx1Z2luVmlld3MgYWRkT2Jq
ZWN0OnZpZXddOworICAgICAgICBbdmlld3MgYWRkT2JqZWN0OnZpZXddOwogfQogI2VuZGlmCiAK
ICsgKEJPT0wpaXNQbHVnSW5WaWV3OihOU1ZpZXcgKil2aWV3CiB7Ci0gICAgcmV0dXJuIFtwbHVn
aW5WaWV3cyBjb250YWluc09iamVjdDp2aWV3XTsKKyAgICByZXR1cm4gW3BsdWdpblZpZXdzKCkg
Y29udGFpbnNPYmplY3Q6dmlld107CiB9CiAKIC0gKGlkKWluaXRXaXRoRG9jdW1lbnRWaWV3OihO
U1ZpZXcgKil2aWV3CkBAIC0zODUsNyArMzkwLDcgQEAgLSAodm9pZClkZXN0cm95UGx1Z2luOihO
U1ZpZXcgKil2aWV3CiAgICAgICAgICAgICBmcmFtZS0+c2NyaXB0KCkuY2xlYW51cFNjcmlwdE9i
amVjdHNGb3JQbHVnaW4oc2VsZik7CiAjZW5kaWYKICAgICAgICAgCi0gICAgICAgIFtwbHVnaW5W
aWV3cyByZW1vdmVPYmplY3Q6dmlld107CisgICAgICAgIFtwbHVnaW5WaWV3cygpIHJlbW92ZU9i
amVjdDp2aWV3XTsKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgW1tfZG9jdW1l
bnRWaWV3IF93ZWJWaWV3XSByZW1vdmVQbHVnaW5JbnN0YW5jZVZpZXc6dmlld107CiAjZW5kaWYK
QEAgLTQzMyw3ICs0MzgsNyBAQCAtICh2b2lkKWRlc3Ryb3lBbGxQbHVnaW5zCiAgICAgICAgICAg
ICBmcmFtZS0+c2NyaXB0KCkuY2xlYW51cFNjcmlwdE9iamVjdHNGb3JQbHVnaW4oc2VsZik7CiAj
ZW5kaWYKICAgICAgICAgCi0gICAgICAgIFtwbHVnaW5WaWV3cyByZW1vdmVPYmplY3Q6YVZpZXdd
OworICAgICAgICBbcGx1Z2luVmlld3MoKSByZW1vdmVPYmplY3Q6YVZpZXddOwogI2lmICFQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgICAgICBbW19kb2N1bWVudFZpZXcgX3dlYlZpZXddIHJlbW92
ZVBsdWdpbkluc3RhbmNlVmlldzphVmlld107CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViUGx1Z2luRGF0YWJhc2UubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYlBsdWdpbkRhdGFiYXNlLm1tCmluZGV4IGI1OWNlNGJj
ZGY4YTUzNzFjMjFmNmYwZjMzODFlZWYzZTBkN2ZlODMuLmU4MzY4ZjlmYWFiYWI5MjIxMjE2N2Ex
NTRiMmEyMDhlMDUxNjBmYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1Bs
dWdpbnMvV2ViUGx1Z2luRGF0YWJhc2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
UGx1Z2lucy9XZWJQbHVnaW5EYXRhYmFzZS5tbQpAQCAtNjEsMjcgKzYxLDMyIEBAIEBlbmQKIAog
QGltcGxlbWVudGF0aW9uIFdlYlBsdWdpbkRhdGFiYXNlCiAKLXN0YXRpYyBXZWJQbHVnaW5EYXRh
YmFzZSAqc2hhcmVkRGF0YWJhc2UgPSBuaWw7CitzdGF0aWMgUmV0YWluUHRyPFdlYlBsdWdpbkRh
dGFiYXNlPiYgc2hhcmVkRGF0YWJhc2UoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxS
ZXRhaW5QdHI8V2ViUGx1Z2luRGF0YWJhc2U+PiBfc2hhcmVkRGF0YWJhc2U7CisgICAgcmV0dXJu
IF9zaGFyZWREYXRhYmFzZTsKK30KIAogKyAoV2ViUGx1Z2luRGF0YWJhc2UgKilzaGFyZWREYXRh
YmFzZSAKIHsKLSAgICBpZiAoIXNoYXJlZERhdGFiYXNlKSB7Ci0gICAgICAgIHNoYXJlZERhdGFi
YXNlID0gW1tXZWJQbHVnaW5EYXRhYmFzZSBhbGxvY10gaW5pdF07Ci0gICAgICAgIFtzaGFyZWRE
YXRhYmFzZSBzZXRQbHVnSW5QYXRoczpbc2VsZiBfZGVmYXVsdFBsdWdJblBhdGhzXV07Ci0gICAg
ICAgIFtzaGFyZWREYXRhYmFzZSByZWZyZXNoXTsKKyAgICBhdXRvJiBkYXRhYmFzZSA9IHNoYXJl
ZERhdGFiYXNlKCk7CisgICAgaWYgKCFkYXRhYmFzZSkgeworICAgICAgICBkYXRhYmFzZSA9IGFk
b3B0TlMoW1tXZWJQbHVnaW5EYXRhYmFzZSBhbGxvY10gaW5pdF0pOworICAgICAgICBbZGF0YWJh
c2Ugc2V0UGx1Z0luUGF0aHM6W3NlbGYgX2RlZmF1bHRQbHVnSW5QYXRoc11dOworICAgICAgICBb
ZGF0YWJhc2UgcmVmcmVzaF07CiAgICAgfQogICAgIAotICAgIHJldHVybiBzaGFyZWREYXRhYmFz
ZTsKKyAgICByZXR1cm4gZGF0YWJhc2UuZ2V0KCk7CiB9CiAKICsgKFdlYlBsdWdpbkRhdGFiYXNl
ICopc2hhcmVkRGF0YWJhc2VJZkV4aXN0cwogewotICAgIHJldHVybiBzaGFyZWREYXRhYmFzZTsK
KyAgICByZXR1cm4gc2hhcmVkRGF0YWJhc2UoKS5nZXQoKTsKIH0KIAogKyAodm9pZCljbG9zZVNo
YXJlZERhdGFiYXNlIAogewotICAgIFtzaGFyZWREYXRhYmFzZSBjbG9zZV07CisgICAgW3NoYXJl
ZERhdGFiYXNlKCkgY2xvc2VdOwogfQogCiBzdGF0aWMgdm9pZCBjaGVja0NhbmRpZGF0ZShXZWJC
YXNlUGx1Z2luUGFja2FnZSAqIF9fc3Ryb25nICpjdXJyZW50UGx1Z2luLCBXZWJCYXNlUGx1Z2lu
UGFja2FnZSAqIF9fc3Ryb25nICpjYW5kaWRhdGVQbHVnaW4pCkBAIC0zMTgsNyArMzIzLDcgQEAg
LSAodm9pZClyZWZyZXNoCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9
CiAKLSAgICAgICAgICAgIGlmIChzZWxmID09IHNoYXJlZERhdGFiYXNlKQorICAgICAgICAgICAg
aWYgKHNlbGYgPT0gc2hhcmVkRGF0YWJhc2UoKSkKICAgICAgICAgICAgICAgICBbV2ViVmlldyBf
cmVnaXN0ZXJQbHVnaW5NSU1FVHlwZTpNSU1FVHlwZV07CiAgICAgICAgIH0KICAgICB9CkBAIC00
MTQsNyArNDE5LDcgQEAgKyAoTlNBcnJheSAqKV9kZWZhdWx0UGx1Z0luUGF0aHMKIAogLSAoTlNB
cnJheSAqKV9wbHVnSW5QYXRocwogewotICAgIGlmIChzZWxmID09IHNoYXJlZERhdGFiYXNlICYm
IGFkZGl0aW9uYWxXZWJQbHVnSW5QYXRocygpKSB7CisgICAgaWYgKHNlbGYgPT0gc2hhcmVkRGF0
YWJhc2UoKSAmJiBhZGRpdGlvbmFsV2ViUGx1Z0luUGF0aHMoKSkgewogICAgICAgICAvLyBBZGQg
YWRkaXRpb25hbFdlYlBsdWdJblBhdGhzIHRvIHRoZSBnbG9iYWwgV2ViUGx1Z2luRGF0YWJhc2Uu
ICBXZSBkbyB0aGlzIGhlcmUgZm9yCiAgICAgICAgIC8vIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkg
d2l0aCBlYXJsaWVyIHZlcnNpb25zIG9mIHRoZSArc2V0QWRkaXRpb25hbFdlYlBsdWdJblBhdGhz
OiBTUEksCiAgICAgICAgIC8vIHdoaWNoIHNpbXBseSBzYXZlZCBhIGNvcHkgb2YgdGhlIGFkZGl0
aW9uYWwgcGF0aHMgYW5kIGRpZCBub3QgY2F1c2UgdGhlIHBsdWdpbiBEQiB0byAKQEAgLTQ0NSw3
ICs0NTAsNyBAQCAtICh2b2lkKV9yZW1vdmVQbHVnaW46KFdlYkJhc2VQbHVnaW5QYWNrYWdlICop
cGx1Z2luCiAgICAgICAgIE5TU3RyaW5nICpNSU1FVHlwZSA9IHBsdWdpbkluZm8ubWltZXNbaV0u
dHlwZTsKIAogICAgICAgICBpZiAoW3JlZ2lzdGVyZWRNSU1FVHlwZXMgY29udGFpbnNPYmplY3Q6
TUlNRVR5cGVdKSB7Ci0gICAgICAgICAgICBpZiAoc2VsZiA9PSBzaGFyZWREYXRhYmFzZSkKKyAg
ICAgICAgICAgIGlmIChzZWxmID09IHNoYXJlZERhdGFiYXNlKCkpCiAgICAgICAgICAgICAgICAg
W1dlYlZpZXcgX3VucmVnaXN0ZXJQbHVnaW5NSU1FVHlwZTpNSU1FVHlwZV07CiAgICAgICAgICAg
ICBbcmVnaXN0ZXJlZE1JTUVUeXBlcyByZW1vdmVPYmplY3Q6TUlNRVR5cGVdOwogICAgICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TY3JpcHRzL1ByZWZlcmVuY2Vz
VGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsRmVhdHVyZXMubW0uZXJiIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJQcmVm
ZXJlbmNlc0V4cGVyaW1lbnRhbEZlYXR1cmVzLm1tLmVyYgppbmRleCAyMjM5Yzc2MzhkY2M4MzEy
OWQ1ZmFhODVkNDc0NjExOTlkNjkxYTg4Li5hYjFlZDI0Y2M0MTc1NjBmZWE2ZGQ4NTA0MmRkOTI3
NThhZjQ4YzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TY3JpcHRzL1By
ZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsRmVhdHVyZXMubW0u
ZXJiCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1w
bGF0ZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWxGZWF0dXJlcy5tbS5lcmIKQEAgLTI5LDYg
KzI5LDggQEAKIAogI2ltcG9ydCAiV2ViRmVhdHVyZUludGVybmFsLmgiCiAjaW1wb3J0ICJXZWJQ
cmVmZXJlbmNlc0RlZmluaXRpb25zLmgiCisjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
KyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIApA
QCAtMzYsMTkgKzM4LDE5IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKICsgKE5TQXJyYXk8
V2ViRmVhdHVyZSAqPiAqKV9leHBlcmltZW50YWxGZWF0dXJlcwogewotICAgIHN0YXRpYyBOU0Fy
cmF5PFdlYkZlYXR1cmUgKj4gKmZlYXR1cmVzID0gQFsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8UmV0YWluUHRyPE5TQXJyYXk8V2ViRmVhdHVyZSAqPj4+IGZlYXR1cmVzID0gQFsKIDwlLSBm
b3IgQHByZWYgaW4gQGV4cG9zZWRFeHBlcmltZW50YWxGZWF0dXJlcyBkbyAtJT4KIDwlLSBpZiBA
cHJlZi5jb25kaXRpb24gLSU+CiAjaWYgPCU9IEBwcmVmLmNvbmRpdGlvbiAlPgogPCUtIGVuZCAt
JT4KLSAgICAgICAgW1tXZWJGZWF0dXJlIGFsbG9jXSBpbml0V2l0aEtleTpAIjwlPSBAcHJlZi5u
YW1lICU+IiBwcmVmZXJlbmNlS2V5OkAiPCU9IEBwcmVmLnByZWZlcmVuY2VLZXkgJT4iIG5hbWU6
QDwlPSBAcHJlZi5odW1hblJlYWRhYmxlTmFtZSAlPiBkZXRhaWxzOkA8JT0gQHByZWYuaHVtYW5S
ZWFkYWJsZURlc2NyaXB0aW9uICU+IGRlZmF1bHRWYWx1ZTpERUZBVUxUX1ZBTFVFX0ZPUl88JT0g
QHByZWYubmFtZSAlPiBoaWRkZW46PCU9IEBwcmVmLmhpZGRlbiAlPl0sCisgICAgICAgIGFkb3B0
TlMoW1tXZWJGZWF0dXJlIGFsbG9jXSBpbml0V2l0aEtleTpAIjwlPSBAcHJlZi5uYW1lICU+IiBw
cmVmZXJlbmNlS2V5OkAiPCU9IEBwcmVmLnByZWZlcmVuY2VLZXkgJT4iIG5hbWU6QDwlPSBAcHJl
Zi5odW1hblJlYWRhYmxlTmFtZSAlPiBkZXRhaWxzOkA8JT0gQHByZWYuaHVtYW5SZWFkYWJsZURl
c2NyaXB0aW9uICU+IGRlZmF1bHRWYWx1ZTpERUZBVUxUX1ZBTFVFX0ZPUl88JT0gQHByZWYubmFt
ZSAlPiBoaWRkZW46PCU9IEBwcmVmLmhpZGRlbiAlPl0pLmdldCgpLAogPCUtIGlmIEBwcmVmLmNv
bmRpdGlvbiAtJT4KICNlbmRpZgogPCUtIGVuZCAtJT4KIDwlLSBlbmQgLSU+CiAgICAgXTsKIAot
ICAgIHJldHVybiBmZWF0dXJlczsKKyAgICByZXR1cm4gZmVhdHVyZXMuZ2V0KCkuZ2V0KCk7CiB9
CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1NjcmlwdHMvUHJl
ZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbEZlYXR1cmVzLm1tLmVyYiBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2Vi
UHJlZmVyZW5jZXNJbnRlcm5hbEZlYXR1cmVzLm1tLmVyYgppbmRleCBlOGYzYmU0YzhkZmNmMDRl
MTkyZDJlYjM5ZWQwYTliZDZkNWI2MDRmLi4wNDIyZGE4Y2E1N2QzZTc1ODdjNDAwZWQ0MjNmOGQ1
MWVhYzBkMTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TY3JpcHRzL1By
ZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWxGZWF0dXJlcy5tbS5lcmIK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRl
cy9XZWJQcmVmZXJlbmNlc0ludGVybmFsRmVhdHVyZXMubW0uZXJiCkBAIC0yOSw2ICsyOSw4IEBA
CiAKICNpbXBvcnQgIldlYkZlYXR1cmVJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViUHJlZmVyZW5j
ZXNEZWZpbml0aW9ucy5oIgorI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW1wb3J0
IDx3dGYvUmV0YWluUHRyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKQEAgLTM2LDE5
ICszOCwxOSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCiArIChOU0FycmF5PFdlYkZlYXR1
cmUgKj4gKilfaW50ZXJuYWxGZWF0dXJlcwogewotICAgIHN0YXRpYyBOU0FycmF5PFdlYkZlYXR1
cmUgKj4gKmZlYXR1cmVzID0gQFsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRy
PE5TQXJyYXk8V2ViRmVhdHVyZSAqPj4+IGZlYXR1cmVzID0gQFsKIDwlLSBmb3IgQHByZWYgaW4g
QGV4cG9zZWRJbnRlcm5hbEZlYXR1cmVzIGRvIC0lPgogPCUtIGlmIEBwcmVmLmNvbmRpdGlvbiAt
JT4KICNpZiA8JT0gQHByZWYuY29uZGl0aW9uICU+CiA8JS0gZW5kIC0lPgotICAgICAgICBbW1dl
YkZlYXR1cmUgYWxsb2NdIGluaXRXaXRoS2V5OkAiPCU9IEBwcmVmLm5hbWUgJT4iIHByZWZlcmVu
Y2VLZXk6QCI8JT0gQHByZWYucHJlZmVyZW5jZUtleSAlPiIgbmFtZTpAPCU9IEBwcmVmLmh1bWFu
UmVhZGFibGVOYW1lICU+IGRldGFpbHM6QDwlPSBAcHJlZi5odW1hblJlYWRhYmxlRGVzY3JpcHRp
b24gJT4gZGVmYXVsdFZhbHVlOkRFRkFVTFRfVkFMVUVfRk9SXzwlPSBAcHJlZi5uYW1lICU+IGhp
ZGRlbjo8JT0gQHByZWYuaGlkZGVuICU+XSwKKyAgICAgICAgYWRvcHROUyhbW1dlYkZlYXR1cmUg
YWxsb2NdIGluaXRXaXRoS2V5OkAiPCU9IEBwcmVmLm5hbWUgJT4iIHByZWZlcmVuY2VLZXk6QCI8
JT0gQHByZWYucHJlZmVyZW5jZUtleSAlPiIgbmFtZTpAPCU9IEBwcmVmLmh1bWFuUmVhZGFibGVO
YW1lICU+IGRldGFpbHM6QDwlPSBAcHJlZi5odW1hblJlYWRhYmxlRGVzY3JpcHRpb24gJT4gZGVm
YXVsdFZhbHVlOkRFRkFVTFRfVkFMVUVfRk9SXzwlPSBAcHJlZi5uYW1lICU+IGhpZGRlbjo8JT0g
QHByZWYuaGlkZGVuICU+XSkuZ2V0KCksCiA8JS0gaWYgQHByZWYuY29uZGl0aW9uIC0lPgogI2Vu
ZGlmCiA8JS0gZW5kIC0lPgogPCUtIGVuZCAtJT4KICAgICBdOwogCi0gICAgcmV0dXJuIGZlYXR1
cmVzOworICAgIHJldHVybiBmZWF0dXJlcy5nZXQoKS5nZXQoKTsKIH0KIAogQGVuZApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCmluZGV4IDBh
YzYwZTk5NDM2YWU3N2VmNzUzMGI2MGJmMmU1Y2I4MGU1OGEyNmQuLjRkZjU0ZDdkNjk3OTlhOTY0
NThmMTIyNDMwYWI1MmU4YjIxMTJhOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KQEAgLTI2OSwzMiArMjY5LDMxIEBAIC0gKHZvaWQp
X3JldmVydFRvUHJvdmlzaW9uYWxTdGF0ZQogCiArIChOU011dGFibGVEaWN0aW9uYXJ5ICopX3Jl
cFR5cGVzQWxsb3dJbWFnZVR5cGVPbWlzc2lvbjooQk9PTClhbGxvd0ltYWdlVHlwZU9taXNzaW9u
CiB7Ci0gICAgc3RhdGljIE5TTXV0YWJsZURpY3Rpb25hcnkgKnJlcFR5cGVzID0gbmlsOwotICAg
IHN0YXRpYyBCT09MIGFkZGVkSW1hZ2VUeXBlcyA9IE5POwotICAgIAotICAgIGlmICghcmVwVHlw
ZXMpIHsKLSAgICAgICAgcmVwVHlwZXMgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGlu
aXRdOwotICAgICAgICBhZGRUeXBlc0Zyb21DbGFzcyhyZXBUeXBlcywgW1dlYkhUTUxSZXByZXNl
bnRhdGlvbiBjbGFzc10sIFtXZWJIVE1MUmVwcmVzZW50YXRpb24gc3VwcG9ydGVkTm9uSW1hZ2VN
SU1FVHlwZXNdKTsKLSAgICAgICAgYWRkVHlwZXNGcm9tQ2xhc3MocmVwVHlwZXMsIFtXZWJIVE1M
UmVwcmVzZW50YXRpb24gY2xhc3NdLCBbV2ViSFRNTFJlcHJlc2VudGF0aW9uIHN1cHBvcnRlZE1l
ZGlhTUlNRVR5cGVzXSk7Ci0gICAgICAgIAorICAgIHN0YXRpYyBhdXRvIHJlcFR5cGVzID0gbWFr
ZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICAgICAgYXV0byB0eXBlcyA9IGFkb3B0TlMoW1tOU011
dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CisgICAgICAgIGFkZFR5cGVzRnJvbUNsYXNz
KHR5cGVzLmdldCgpLCBbV2ViSFRNTFJlcHJlc2VudGF0aW9uIGNsYXNzXSwgW1dlYkhUTUxSZXBy
ZXNlbnRhdGlvbiBzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlc10pOworICAgICAgICBhZGRUeXBl
c0Zyb21DbGFzcyh0eXBlcy5nZXQoKSwgW1dlYkhUTUxSZXByZXNlbnRhdGlvbiBjbGFzc10sIFtX
ZWJIVE1MUmVwcmVzZW50YXRpb24gc3VwcG9ydGVkTWVkaWFNSU1FVHlwZXNdKTsKKwogICAgICAg
ICAvLyBTaW5jZSB0aGlzIGlzIGEgInNlY3JldCBkZWZhdWx0IiB3ZSBkb24ndCBib3RoIHJlZ2lz
dGVyaW5nIGl0LgogICAgICAgICBCT09MIG9taXRQREZTdXBwb3J0ID0gW1tOU1VzZXJEZWZhdWx0
cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gYm9vbEZvcktleTpAIldlYktpdE9taXRQREZTdXBwb3J0
Il07Ci0gICAgICAgIGlmICghb21pdFBERlN1cHBvcnQpCisgICAgICAgIGlmICghb21pdFBERlN1
cHBvcnQpIHsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2RlZmluZSBXZWJQREZSZXByZXNl
bnRhdGlvbiAoW1dlYlZpZXcgX2dldFBERlJlcHJlc2VudGF0aW9uQ2xhc3NdKQogI2VuZGlmCi0g
ICAgICAgICAgICBhZGRUeXBlc0Zyb21DbGFzcyhyZXBUeXBlcywgW1dlYlBERlJlcHJlc2VudGF0
aW9uIGNsYXNzXSwgW1dlYlBERlJlcHJlc2VudGF0aW9uIHN1cHBvcnRlZE1JTUVUeXBlc10pOwor
ICAgICAgICAgICAgYWRkVHlwZXNGcm9tQ2xhc3ModHlwZXMuZ2V0KCksIFtXZWJQREZSZXByZXNl
bnRhdGlvbiBjbGFzc10sIFtXZWJQREZSZXByZXNlbnRhdGlvbiBzdXBwb3J0ZWRNSU1FVHlwZXNd
KTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI3VuZGVmIFdlYlBERlJlcHJlc2VudGF0aW9u
CiAjZW5kaWYKLSAgICB9Ci0gICAgCisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHR5cGVzOwor
ICAgIH0oKSk7CisgICAgc3RhdGljIEJPT0wgYWRkZWRJbWFnZVR5cGVzID0gTk87CiAgICAgaWYg
KCFhZGRlZEltYWdlVHlwZXMgJiYgIWFsbG93SW1hZ2VUeXBlT21pc3Npb24pIHsKLSAgICAgICAg
YWRkVHlwZXNGcm9tQ2xhc3MocmVwVHlwZXMsIFtXZWJIVE1MUmVwcmVzZW50YXRpb24gY2xhc3Nd
LCBbV2ViSFRNTFJlcHJlc2VudGF0aW9uIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzXSk7CisgICAg
ICAgIGFkZFR5cGVzRnJvbUNsYXNzKHJlcFR5cGVzLmdldCgpLmdldCgpLCBbV2ViSFRNTFJlcHJl
c2VudGF0aW9uIGNsYXNzXSwgW1dlYkhUTUxSZXByZXNlbnRhdGlvbiBzdXBwb3J0ZWRJbWFnZU1J
TUVUeXBlc10pOwogICAgICAgICBhZGRlZEltYWdlVHlwZXMgPSBZRVM7CiAgICAgfQogICAgIAot
ICAgIHJldHVybiByZXBUeXBlczsKKyAgICByZXR1cm4gcmVwVHlwZXMuZ2V0KCkuZ2V0KCk7CiB9
CiAKIC0gKHZvaWQpX3JlcGxhY2VTZWxlY3Rpb25XaXRoQXJjaGl2ZTooV2ViQXJjaGl2ZSAqKWFy
Y2hpdmUgc2VsZWN0UmVwbGFjZW1lbnQ6KEJPT0wpc2VsZWN0UmVwbGFjZW1lbnQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZVZpZXcubW0KaW5kZXggYTc4NWU4
YzNkNTY1OTJhYjA5YTZjYjk4MmNkOThhNzVmMDRkMzNlYy4uZTNlOGM3YmFkMDM1ODk5NjMxMmE5
MWVmZGI0ZWZjNzYwZWUyZjM4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJGcmFtZVZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJGcmFtZVZpZXcubW0KQEAgLTIzOSwxMyArMjM5LDEwIEBAIC0gKGZsb2F0KV92ZXJ0
aWNhbFBhZ2VTY3JvbGxEaXN0YW5jZQogCiArIChOU011dGFibGVEaWN0aW9uYXJ5ICopX3ZpZXdU
eXBlc0FsbG93SW1hZ2VUeXBlT21pc3Npb246KEJPT0wpYWxsb3dJbWFnZVR5cGVPbWlzc2lvbgog
ewotICAgIHN0YXRpYyBOU011dGFibGVEaWN0aW9uYXJ5ICp2aWV3VHlwZXMgPSBuaWw7Ci0gICAg
c3RhdGljIEJPT0wgYWRkZWRJbWFnZVR5cGVzID0gTk87Ci0gICAgCi0gICAgaWYgKCF2aWV3VHlw
ZXMpIHsKLSAgICAgICAgdmlld1R5cGVzID0gW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBp
bml0XTsKLSAgICAgICAgYWRkVHlwZXNGcm9tQ2xhc3Modmlld1R5cGVzLCBbV2ViSFRNTFZpZXcg
Y2xhc3NdLCBbV2ViSFRNTFZpZXcgc3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXNdKTsKLSAgICAg
ICAgYWRkVHlwZXNGcm9tQ2xhc3Modmlld1R5cGVzLCBbV2ViSFRNTFZpZXcgY2xhc3NdLCBbV2Vi
SFRNTFZpZXcgc3VwcG9ydGVkTWVkaWFNSU1FVHlwZXNdKTsKKyAgICBzdGF0aWMgYXV0byB2aWV3
VHlwZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgICAgICBhdXRvIHR5cGVzID0gYWRv
cHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKKyAgICAgICAgYWRkVHlw
ZXNGcm9tQ2xhc3ModHlwZXMuZ2V0KCksIFtXZWJIVE1MVmlldyBjbGFzc10sIFtXZWJIVE1MVmll
dyBzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlc10pOworICAgICAgICBhZGRUeXBlc0Zyb21DbGFz
cyh0eXBlcy5nZXQoKSwgW1dlYkhUTUxWaWV3IGNsYXNzXSwgW1dlYkhUTUxWaWV3IHN1cHBvcnRl
ZE1lZGlhTUlNRVR5cGVzXSk7CiAKICAgICAgICAgLy8gU2luY2UgdGhpcyBpcyBhICJzZWNyZXQg
ZGVmYXVsdCIgd2UgZG9uJ3QgYm90aGVyIHJlZ2lzdGVyaW5nIGl0LgogICAgICAgICBCT09MIG9t
aXRQREZTdXBwb3J0ID0gW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gYm9v
bEZvcktleTpAIldlYktpdE9taXRQREZTdXBwb3J0Il07CkBAIC0yNTMsMTkgKzI1MCwyMCBAQCAr
IChOU011dGFibGVEaWN0aW9uYXJ5ICopX3ZpZXdUeXBlc0FsbG93SW1hZ2VUeXBlT21pc3Npb246
KEJPT0wpYWxsb3dJbWFnZVR5cGVPbQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjZGVmaW5l
IFdlYlBERlZpZXcgKFtXZWJWaWV3IF9nZXRQREZWaWV3Q2xhc3NdKQogI2VuZGlmCi0gICAgICAg
ICAgICBhZGRUeXBlc0Zyb21DbGFzcyh2aWV3VHlwZXMsIFtXZWJQREZWaWV3IGNsYXNzXSwgW1dl
YlBERlZpZXcgc3VwcG9ydGVkTUlNRVR5cGVzXSk7CisgICAgICAgICAgICBhZGRUeXBlc0Zyb21D
bGFzcyh0eXBlcy5nZXQoKSwgW1dlYlBERlZpZXcgY2xhc3NdLCBbV2ViUERGVmlldyBzdXBwb3J0
ZWRNSU1FVHlwZXNdKTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI3VuZGVmIFdlYlBERlZp
ZXcKICNlbmRpZgogICAgICAgICB9Ci0gICAgfQotICAgIAorICAgICAgICByZXR1cm4gdHlwZXM7
CisgICAgfSgpKTsKKyAgICBzdGF0aWMgQk9PTCBhZGRlZEltYWdlVHlwZXMgPSBOTzsKICAgICBp
ZiAoIWFkZGVkSW1hZ2VUeXBlcyAmJiAhYWxsb3dJbWFnZVR5cGVPbWlzc2lvbikgewotICAgICAg
ICBhZGRUeXBlc0Zyb21DbGFzcyh2aWV3VHlwZXMsIFtXZWJIVE1MVmlldyBjbGFzc10sIFtXZWJI
VE1MVmlldyBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlc10pOworICAgICAgICBhZGRUeXBlc0Zyb21D
bGFzcyh2aWV3VHlwZXMuZ2V0KCkuZ2V0KCksIFtXZWJIVE1MVmlldyBjbGFzc10sIFtXZWJIVE1M
VmlldyBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlc10pOwogICAgICAgICBhZGRlZEltYWdlVHlwZXMg
PSBZRVM7CiAgICAgfQogICAgIAotICAgIHJldHVybiB2aWV3VHlwZXM7CisgICAgcmV0dXJuIHZp
ZXdUeXBlcy5nZXQoKS5nZXQoKTsKIH0KIAogKyAoQk9PTClfY2FuU2hvd01JTUVUeXBlQXNIVE1M
OihOU1N0cmluZyAqKU1JTUVUeXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkZ1bGxTY3JlZW5Db250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJGdWxsU2NyZWVuQ29udHJvbGxlci5tbQppbmRleCA4NmYyMGQyYmY4
ODI4NDRjOTVmYmRhZjA4YmNlYTllODQyNDkyYjBmLi4xNjUxMzA4ZjExZTU4YTNhMWE5ZWQ4YjA1
NWUzMDFmNGFmZDY2YTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYkZ1bGxTY3JlZW5Db250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIubW0KQEAgLTQ3MywxMSArNDczLDEx
IEBAIC0gKHZvaWQpX3N3YXBWaWV3OihOU1ZpZXcqKXZpZXcgd2l0aDooTlNWaWV3KilvdGhlclZp
ZXcKIAogc3RhdGljIFJldGFpblB0cjxOU1dpbmRvdz4gY3JlYXRlQmFja2dyb3VuZEZ1bGxzY3Jl
ZW5XaW5kb3coTlNSZWN0IGZyYW1lKQogewotICAgIE5TV2luZG93ICp3aW5kb3cgPSBbW05TV2lu
ZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0OmZyYW1lIHN0eWxlTWFzazpOU1dpbmRvd1N0
eWxlTWFza0JvcmRlcmxlc3MgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOk5P
XTsKKyAgICBhdXRvIHdpbmRvdyA9IGFkb3B0TlMoW1tOU1dpbmRvdyBhbGxvY10gaW5pdFdpdGhD
b250ZW50UmVjdDpmcmFtZSBzdHlsZU1hc2s6TlNXaW5kb3dTdHlsZU1hc2tCb3JkZXJsZXNzIGJh
Y2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpOT10pOwogICAgIFt3aW5kb3cgc2V0
T3BhcXVlOllFU107CiAgICAgW3dpbmRvdyBzZXRCYWNrZ3JvdW5kQ29sb3I6W05TQ29sb3IgYmxh
Y2tDb2xvcl1dOwogICAgIFt3aW5kb3cgc2V0UmVsZWFzZWRXaGVuQ2xvc2VkOk5PXTsKLSAgICBy
ZXR1cm4gYWRvcHROUyh3aW5kb3cpOworICAgIHJldHVybiB3aW5kb3c7CiB9CiAKIHN0YXRpYyBO
U1JlY3Qgd2luZG93RnJhbWVGcm9tQXBwYXJlbnRGcmFtZXMoTlNSZWN0IHNjcmVlbkZyYW1lLCBO
U1JlY3QgaW5pdGlhbEZyYW1lLCBOU1JlY3QgZmluYWxGcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KaW5k
ZXggNGU2N2NkYWRjMGUyNGM4ZWNjODA1MjAxZDllYTQ2ZTcyNGE3YmU2Mi4uNDdhM2Q1MzA1ZTc2
MWY2YzZhNDFiY2FkY2Q2M2E1YzMyMjYxODEyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KQEAgLTM1Niwx
NCArMzU2LDEyIEBAIHN0YXRpYyBSZWd1bGFyRXhwcmVzc2lvbiogcmVnRXhwRm9yTGFiZWxzKE5T
QXJyYXkgKmxhYmVscykKICAgICAvLyBQYXJhbGxlbCBhcnJheXMgdGhhdCB3ZSB1c2UgdG8gY2Fj
aGUgcmVnRXhwcy4gIEluIHByYWN0aWNlIHRoZSBudW1iZXIgb2YgZXhwcmVzc2lvbnMKICAgICAv
LyB0aGF0IHRoZSBhcHAgd2lsbCB1c2UgaXMgZXF1YWwgdG8gdGhlIG51bWJlciBvZiBsb2NhbGVz
IGlzIHVzZWQgaW4gc2VhcmNoaW5nLgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgcmVn
RXhwQ2FjaGVTaXplID0gNDsKLSAgICBzdGF0aWMgTlNNdXRhYmxlQXJyYXkqIHJlZ0V4cExhYmVs
cyA9IG5pbDsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TTXV0YWJsZUFy
cmF5Pj4gcmVnRXhwTGFiZWxzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0
V2l0aENhcGFjaXR5OnJlZ0V4cENhY2hlU2l6ZV0pOwogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxWZWN0b3I8UmVndWxhckV4cHJlc3Npb24qPj4gcmVnRXhwczsKICAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8UmVndWxhckV4cHJlc3Npb24+IHdvcmRSZWdFeHAoIlxcdyIpOwogCiAgICAgUmVn
dWxhckV4cHJlc3Npb24qIHJlc3VsdDsKLSAgICBpZiAoIXJlZ0V4cExhYmVscykKLSAgICAgICAg
cmVnRXhwTGFiZWxzID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpy
ZWdFeHBDYWNoZVNpemVdOwotICAgIENGSW5kZXggY2FjaGVIaXQgPSBbcmVnRXhwTGFiZWxzIGlu
ZGV4T2ZPYmplY3Q6bGFiZWxzXTsKKyAgICBDRkluZGV4IGNhY2hlSGl0ID0gW3JlZ0V4cExhYmVs
cy5nZXQoKSBpbmRleE9mT2JqZWN0OmxhYmVsc107CiAgICAgaWYgKGNhY2hlSGl0ICE9IE5TTm90
Rm91bmQpCiAgICAgICAgIHJlc3VsdCA9IHJlZ0V4cHMuZ2V0KCkuYXQoY2FjaGVIaXQpOwogICAg
IGVsc2UgewpAQCAtNDAwLDE1ICszOTgsMTUgQEAgc3RhdGljIFJlZ3VsYXJFeHByZXNzaW9uKiBy
ZWdFeHBGb3JMYWJlbHMoTlNBcnJheSAqbGFiZWxzKQogICAgIGlmIChjYWNoZUhpdCAhPSAwKSB7
CiAgICAgICAgIGlmIChjYWNoZUhpdCAhPSBOU05vdEZvdW5kKSB7CiAgICAgICAgICAgICAvLyBy
ZW1vdmUgZnJvbSBvbGQgc3BvdAotICAgICAgICAgICAgW3JlZ0V4cExhYmVscyByZW1vdmVPYmpl
Y3RBdEluZGV4OmNhY2hlSGl0XTsKKyAgICAgICAgICAgIFtyZWdFeHBMYWJlbHMuZ2V0KCkgcmVt
b3ZlT2JqZWN0QXRJbmRleDpjYWNoZUhpdF07CiAgICAgICAgICAgICByZWdFeHBzLmdldCgpLnJl
bW92ZShjYWNoZUhpdCk7CiAgICAgICAgIH0KICAgICAgICAgLy8gYWRkIHRvIHN0YXJ0Ci0gICAg
ICAgIFtyZWdFeHBMYWJlbHMgaW5zZXJ0T2JqZWN0OmxhYmVscyBhdEluZGV4OjBdOworICAgICAg
ICBbcmVnRXhwTGFiZWxzLmdldCgpIGluc2VydE9iamVjdDpsYWJlbHMgYXRJbmRleDowXTsKICAg
ICAgICAgcmVnRXhwcy5nZXQoKS5pbnNlcnQoMCwgcmVzdWx0KTsKICAgICAgICAgLy8gdHJpbSBp
ZiB0b28gYmlnCi0gICAgICAgIGlmIChbcmVnRXhwTGFiZWxzIGNvdW50XSA+IHJlZ0V4cENhY2hl
U2l6ZSkgewotICAgICAgICAgICAgW3JlZ0V4cExhYmVscyByZW1vdmVPYmplY3RBdEluZGV4OnJl
Z0V4cENhY2hlU2l6ZV07CisgICAgICAgIGlmIChbcmVnRXhwTGFiZWxzLmdldCgpIGNvdW50XSA+
IHJlZ0V4cENhY2hlU2l6ZSkgeworICAgICAgICAgICAgW3JlZ0V4cExhYmVscy5nZXQoKSByZW1v
dmVPYmplY3RBdEluZGV4OnJlZ0V4cENhY2hlU2l6ZV07CiAgICAgICAgICAgICBSZWd1bGFyRXhw
cmVzc2lvbiogbGFzdCA9IHJlZ0V4cHMuZ2V0KCkubGFzdCgpOwogICAgICAgICAgICAgcmVnRXhw
cy5nZXQoKS5yZW1vdmVMYXN0KCk7CiAgICAgICAgICAgICBkZWxldGUgbGFzdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDIwNTRiNjZk
MjAxYWM3ZmI0OGU0Yzg4ODU2MDZiMjI3M2U0OWFmZWEuLmRiOTZiNDA0ODA2MDM4N2E5NDM2MzQ4
ZmQyZDM5MGM0NDg4MWUzODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJIVE1MVmlldy5tbQpAQCAtMTk2MSwxNSArMTk2MSwxMyBAQCArIChOU1N0cmluZyAqKV9k
dW1teVBhc3RlYm9hcmRUeXBlCiAKICsgKE5TQXJyYXkgKilfaW5zZXJ0YWJsZVBhc3RlYm9hcmRU
eXBlcwogewotICAgIHN0YXRpYyBOU0FycmF5ICp0eXBlcyA9IG5pbDsKLSAgICBpZiAoIXR5cGVz
KSB7CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgICAgICB0eXBlcyA9
IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOldlYkFyY2hpdmVQYm9hcmRUeXBlLCBX
ZWJDb3JlOjpsZWdhY3lIVE1MUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5RmlsZW5h
bWVzUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5VElGRlBhc3RlYm9hcmRUeXBlKCks
IFdlYkNvcmU6OmxlZ2FjeVBERlBhc3RlYm9hcmRUeXBlKCksCi0gICAgICAgICAgICBXZWJDb3Jl
OjpsZWdhY3lVUkxQYXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lSVEZEUGFzdGVib2Fy
ZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5UlRGUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVn
YWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5Q29sb3JQYXN0ZWJvYXJk
VHlwZSgpLCBrVVRUeXBlUE5HLCBuaWxdOwotQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
RU5ECi0gICAgICAgIENGUmV0YWluKHR5cGVzKTsKLSAgICB9Ci0gICAgcmV0dXJuIHR5cGVzOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNBcnJheT4+IHR5cGVzID0gQFsK
KyAgICAgICAgV2ViQXJjaGl2ZVBib2FyZFR5cGUsIFdlYkNvcmU6OmxlZ2FjeUhUTUxQYXN0ZWJv
YXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lGaWxlbmFtZXNQYXN0ZWJvYXJkVHlwZSgpLCBXZWJD
b3JlOjpsZWdhY3lUSUZGUGFzdGVib2FyZFR5cGUoKSwKKyAgICAgICAgV2ViQ29yZTo6bGVnYWN5
UERGUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5VVJMUGFzdGVib2FyZFR5cGUoKSwg
V2ViQ29yZTo6bGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVJURlBh
c3RlYm9hcmRUeXBlKCksCisgICAgICAgIFdlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRU
eXBlKCksIFdlYkNvcmU6OmxlZ2FjeUNvbG9yUGFzdGVib2FyZFR5cGUoKSwgKE5TU3RyaW5nICop
a1VUVHlwZVBORywKKyAgICBdOworICAgIHJldHVybiB0eXBlcy5nZXQoKS5nZXQoKTsKIH0KIAog
KyAoTlNBcnJheSAqKV9zZWxlY3Rpb25QYXN0ZWJvYXJkVHlwZXMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCmluZGV4IDMzM2EzMjQ3OTNk
ZGJjOGZhMGEwZWRmNjFkODY4YjQzMWEwYjVhNDYuLjg3Y2RmZDdkMzExYzg0NmFhNDk2YzA3NzIw
ZWM1MmFiMWU1ZGZmNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViUHJlZmVyZW5jZXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJQcmVmZXJlbmNlcy5tbQpAQCAtNzUsOCArNzUsMTcgQEAgTlNTdHJpbmcgKldlYlByZWZl
cmVuY2VzQ2FjaGVNb2RlbENoYW5nZWRJbnRlcm5hbE5vdGlmaWNhdGlvbiA9IEAiV2ViUHJlZmVy
ZW5jZXMKIAogZW51bSB7IFdlYlByZWZlcmVuY2VzVmVyc2lvbiA9IDEgfTsKIAotc3RhdGljIFdl
YlByZWZlcmVuY2VzICpfc3RhbmRhcmRQcmVmZXJlbmNlczsKLXN0YXRpYyBOU011dGFibGVEaWN0
aW9uYXJ5ICp3ZWJQcmVmZXJlbmNlc0luc3RhbmNlczsKK3N0YXRpYyBSZXRhaW5QdHI8V2ViUHJl
ZmVyZW5jZXM+JiBzdGFuZGFyZFByZWZlcmVuY2VzKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8UmV0YWluUHRyPFdlYlByZWZlcmVuY2VzPj4gX3N0YW5kYXJkUHJlZmVyZW5jZXM7Cisg
ICAgcmV0dXJuIF9zdGFuZGFyZFByZWZlcmVuY2VzOworfQorCitzdGF0aWMgUmV0YWluUHRyPE5T
TXV0YWJsZURpY3Rpb25hcnk+JiB3ZWJQcmVmZXJlbmNlc0luc3RhbmNlcygpCit7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5Pj4gX3dlYlBy
ZWZlcmVuY2VzSW5zdGFuY2VzOworICAgIHJldHVybiBfd2ViUHJlZmVyZW5jZXNJbnN0YW5jZXM7
Cit9CiAKIHN0YXRpYyB1bnNpZ25lZCB3ZWJQcmVmZXJlbmNlc0luc3RhbmNlQ291bnRXaXRoUHJp
dmF0ZUJyb3dzaW5nRW5hYmxlZDsKIApAQCAtMzYxLDI0ICszNzAsMjQgQEAgLSAodm9pZCllbmNv
ZGVXaXRoQ29kZXI6KE5TQ29kZXIgKillbmNvZGVyCiArIChXZWJQcmVmZXJlbmNlcyAqKXN0YW5k
YXJkUHJlZmVyZW5jZXMKIHsKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBpZiAoX3N0
YW5kYXJkUHJlZmVyZW5jZXMgPT0gbmlsKSB7Ci0gICAgICAgIF9zdGFuZGFyZFByZWZlcmVuY2Vz
ID0gW1tXZWJQcmVmZXJlbmNlcyBhbGxvY10gaW5pdFdpdGhJZGVudGlmaWVyOm5pbF07Ci0gICAg
ICAgIFtfc3RhbmRhcmRQcmVmZXJlbmNlcyBzZXRBdXRvc2F2ZXM6WUVTXTsKKyAgICBpZiAoIXN0
YW5kYXJkUHJlZmVyZW5jZXMoKSkgeworICAgICAgICBzdGFuZGFyZFByZWZlcmVuY2VzKCkgPSBh
ZG9wdE5TKFtbV2ViUHJlZmVyZW5jZXMgYWxsb2NdIGluaXRXaXRoSWRlbnRpZmllcjpuaWxdKTsK
KyAgICAgICAgW3N0YW5kYXJkUHJlZmVyZW5jZXMoKSBzZXRBdXRvc2F2ZXM6WUVTXTsKICAgICB9
CiAjZWxzZQotICAgIC8vIEZJWE1FOiBUaGlzIGNoZWNrIGlzIG5lY2Vzc2FyeSB0byBhdm9pZCBy
ZWN1cnNpb24gKHNlZSA8cmRhcjovL3Byb2JsZW0vOTU2NDMzNz4pLCBidXQgaXQgYWxzbyBtYWtl
cyBfc3RhbmRhcmRQcmVmZXJlbmNlcyBjb25zdHJ1Y3Rpb24gbm90IHRocmVhZCBzYWZlLgotICAg
IGlmIChfc3RhbmRhcmRQcmVmZXJlbmNlcykKLSAgICAgICAgcmV0dXJuIF9zdGFuZGFyZFByZWZl
cmVuY2VzOworICAgIC8vIEZJWE1FOiBUaGlzIGNoZWNrIGlzIG5lY2Vzc2FyeSB0byBhdm9pZCBy
ZWN1cnNpb24gKHNlZSA8cmRhcjovL3Byb2JsZW0vOTU2NDMzNz4pLCBidXQgaXQgYWxzbyBtYWtl
cyBzdGFuZGFyZFByZWZlcmVuY2VzKCkgY29uc3RydWN0aW9uIG5vdCB0aHJlYWQgc2FmZS4KKyAg
ICBpZiAoYXV0byYgcHJlZmVyZW5jZXMgPSBzdGFuZGFyZFByZWZlcmVuY2VzKCkpCisgICAgICAg
IHJldHVybiBwcmVmZXJlbmNlcy5nZXQoKTsKIAogICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qg
cHJlZDsKICAgICBkaXNwYXRjaF9vbmNlKCZwcmVkLCBeewotICAgICAgICBfc3RhbmRhcmRQcmVm
ZXJlbmNlcyA9IFtbV2ViUHJlZmVyZW5jZXMgYWxsb2NdIGluaXRXaXRoSWRlbnRpZmllcjpuaWwg
c2VuZENoYW5nZU5vdGlmaWNhdGlvbjpOT107Ci0gICAgICAgIFtfc3RhbmRhcmRQcmVmZXJlbmNl
cyBfcG9zdFByZWZlcmVuY2VzQ2hhbmdlZE5vdGlmaWNhdGlvbl07Ci0gICAgICAgIFtfc3RhbmRh
cmRQcmVmZXJlbmNlcyBzZXRBdXRvc2F2ZXM6WUVTXTsKKyAgICAgICAgc3RhbmRhcmRQcmVmZXJl
bmNlcygpID0gYWRvcHROUyhbW1dlYlByZWZlcmVuY2VzIGFsbG9jXSBpbml0V2l0aElkZW50aWZp
ZXI6bmlsIHNlbmRDaGFuZ2VOb3RpZmljYXRpb246Tk9dKTsKKyAgICAgICAgW3N0YW5kYXJkUHJl
ZmVyZW5jZXMoKSBfcG9zdFByZWZlcmVuY2VzQ2hhbmdlZE5vdGlmaWNhdGlvbl07CisgICAgICAg
IFtzdGFuZGFyZFByZWZlcmVuY2VzKCkgc2V0QXV0b3NhdmVzOllFU107CiAgICAgfSk7CiAjZW5k
aWYKIAotICAgIHJldHVybiBfc3RhbmRhcmRQcmVmZXJlbmNlczsKKyAgICByZXR1cm4gc3RhbmRh
cmRQcmVmZXJlbmNlcygpLmdldCgpOwogfQogCiAvLyBpZiB3ZSBldmVyIGhhdmUgbW9yZSB0aGFu
IG9uZSBXZWJQcmVmZXJlbmNlcyBvYmplY3QsIHRoaXMgd291bGQgbW92ZSB0byBpbml0CkBAIC0x
NTgxLDMwICsxNTkwLDMyIEBAICsgKFdlYlByZWZlcmVuY2VzICopX2dldEluc3RhbmNlRm9ySWRl
bnRpZmllcjooTlNTdHJpbmcgKilpZGVudAogICAgIExPRyhFbmNvZGluZywgInJlcXVlc3Rpbmcg
Zm9yICVAXG4iLCBpZGVudCk7CiAKICAgICBpZiAoIWlkZW50KQotICAgICAgICByZXR1cm4gX3N0
YW5kYXJkUHJlZmVyZW5jZXM7CisgICAgICAgIHJldHVybiBzdGFuZGFyZFByZWZlcmVuY2VzKCku
Z2V0KCk7CiAKLSAgICBXZWJQcmVmZXJlbmNlcyAqaW5zdGFuY2UgPSBbd2ViUHJlZmVyZW5jZXNJ
bnN0YW5jZXMgb2JqZWN0Rm9yS2V5OltzZWxmIF9jb25jYXRlbmF0ZUtleVdpdGhJQkNyZWF0b3JJ
RDppZGVudF1dOworICAgIFdlYlByZWZlcmVuY2VzICppbnN0YW5jZSA9IFt3ZWJQcmVmZXJlbmNl
c0luc3RhbmNlcygpIG9iamVjdEZvcktleTpbc2VsZiBfY29uY2F0ZW5hdGVLZXlXaXRoSUJDcmVh
dG9ySUQ6aWRlbnRdXTsKIAogICAgIHJldHVybiBpbnN0YW5jZTsKIH0KIAogKyAodm9pZClfc2V0
SW5zdGFuY2U6KFdlYlByZWZlcmVuY2VzICopaW5zdGFuY2UgZm9ySWRlbnRpZmllcjooTlNTdHJp
bmcgKilpZGVudAogewotICAgIGlmICghd2ViUHJlZmVyZW5jZXNJbnN0YW5jZXMpCi0gICAgICAg
IHdlYlByZWZlcmVuY2VzSW5zdGFuY2VzID0gW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBp
bml0XTsKLSAgICBpZiAoaWRlbnQpIHsKLSAgICAgICAgW3dlYlByZWZlcmVuY2VzSW5zdGFuY2Vz
IHNldE9iamVjdDppbnN0YW5jZSBmb3JLZXk6W3NlbGYgX2NvbmNhdGVuYXRlS2V5V2l0aElCQ3Jl
YXRvcklEOmlkZW50XV07Ci0gICAgICAgIExPRyhFbmNvZGluZywgInJlY29yZGluZyAlcCBmb3Ig
JUBcbiIsIGluc3RhbmNlLCBbc2VsZiBfY29uY2F0ZW5hdGVLZXlXaXRoSUJDcmVhdG9ySUQ6aWRl
bnRdKTsKLSAgICB9CisgICAgaWYgKCFpZGVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0
byYgaW5zdGFuY2VzID0gd2ViUHJlZmVyZW5jZXNJbnN0YW5jZXMoKTsKKyAgICBpZiAoIWluc3Rh
bmNlcykKKyAgICAgICAgaW5zdGFuY2VzID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkg
YWxsb2NdIGluaXRdKTsKKyAgICBbaW5zdGFuY2VzIHNldE9iamVjdDppbnN0YW5jZSBmb3JLZXk6
W3NlbGYgX2NvbmNhdGVuYXRlS2V5V2l0aElCQ3JlYXRvcklEOmlkZW50XV07CisgICAgTE9HKEVu
Y29kaW5nLCAicmVjb3JkaW5nICVwIGZvciAlQFxuIiwgaW5zdGFuY2UsIFtzZWxmIF9jb25jYXRl
bmF0ZUtleVdpdGhJQkNyZWF0b3JJRDppZGVudF0pOwogfQogCiArICh2b2lkKV9jaGVja0xhc3RS
ZWZlcmVuY2VGb3JJZGVudGlmaWVyOihpZClpZGVudGlmaWVyCiB7CiAgICAgLy8gRklYTUU6IFRo
aXMgd29uJ3Qgd29yayBhdCBhbGwgdW5kZXIgZ2FyYmFnZSBjb2xsZWN0aW9uIGJlY2F1c2UgcmV0
YWluQ291bnQgcmV0dXJucyBhIGNvbnN0YW50LgogICAgIC8vIFdlIG1heSBuZWVkIHRvIGNoYW5n
ZSBXZWJQcmVmZXJlbmNlcyBBUEkgc28gdGhlcmUncyBhbiBleHBsaWNpdCB3YXkgdG8gZW5kIHRo
ZSBsaWZldGltZSBvZiBvbmUuCi0gICAgV2ViUHJlZmVyZW5jZXMgKmluc3RhbmNlID0gW3dlYlBy
ZWZlcmVuY2VzSW5zdGFuY2VzIG9iamVjdEZvcktleTppZGVudGlmaWVyXTsKKyAgICBXZWJQcmVm
ZXJlbmNlcyAqaW5zdGFuY2UgPSBbd2ViUHJlZmVyZW5jZXNJbnN0YW5jZXMoKSBvYmplY3RGb3JL
ZXk6aWRlbnRpZmllcl07CiAgICAgaWYgKFtpbnN0YW5jZSByZXRhaW5Db3VudF0gPT0gMSkKLSAg
ICAgICAgW3dlYlByZWZlcmVuY2VzSW5zdGFuY2VzIHJlbW92ZU9iamVjdEZvcktleTppZGVudGlm
aWVyXTsKKyAgICAgICAgW3dlYlByZWZlcmVuY2VzSW5zdGFuY2VzKCkgcmVtb3ZlT2JqZWN0Rm9y
S2V5OmlkZW50aWZpZXJdOwogfQogCiArICh2b2lkKV9yZW1vdmVSZWZlcmVuY2VGb3JJZGVudGlm
aWVyOihOU1N0cmluZyAqKWlkZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YlZpZXcubW0KaW5kZXggNWFjYjVkOWRkOGM0N2ExMDAwMzRiZmE2ZWZhYjY3N2YxYjE1Yzg5Mi4u
OWFmNzBhMzc3OTBiMTUwOTM0ZGY0MjQ2YmU2MjgwOTk2ZWVhZDY3MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtOTE3LDcgKzkxNywxMSBAQCBlbnVt
IHsgV2ViVmlld1ZlcnNpb24gPSA0IH07CiAKICNkZWZpbmUgdGltZWRMYXlvdXRTaXplIDQwOTYK
IAotc3RhdGljIE5TTXV0YWJsZVNldCAqc2NoZW1lc1dpdGhSZXByZXNlbnRhdGlvbnNTZXQ7Citz
dGF0aWMgUmV0YWluUHRyPE5TTXV0YWJsZVNldD4mIHNjaGVtZXNXaXRoUmVwcmVzZW50YXRpb25z
U2V0KCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TTXV0YWJsZVNl
dD4+IF9zY2hlbWVzV2l0aFJlcHJlc2VudGF0aW9uc1NldDsKKyAgICByZXR1cm4gX3NjaGVtZXNX
aXRoUmVwcmVzZW50YXRpb25zU2V0OworfQogCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiBO
U1N0cmluZyAqX1dlYkNhbkdvQmFja0tleSA9ICAgICAgICAgICAgQCJjYW5Hb0JhY2siOwpAQCAt
MTM0NSwxNyArMTM0OSwxNyBAQCBzdGF0aWMgYm9vbCBuZWVkc091dGxvb2tRdWlya3NTY3JpcHQo
KQogICAgIHJldHVybiBpc091dGxvb2tOZWVkaW5nUXVpcmtzU2NyaXB0OwogfQogCi1zdGF0aWMg
TlNTdHJpbmcgKmxlYWtPdXRsb29rUXVpcmtzVXNlclNjcmlwdENvbnRlbnRzKCkKK3N0YXRpYyBS
ZXRhaW5QdHI8TlNTdHJpbmc+IG91dGxvb2tRdWlya3NVc2VyU2NyaXB0Q29udGVudHMoKQogewog
ICAgIE5TU3RyaW5nICpzY3JpcHRQYXRoID0gW1tOU0J1bmRsZSBidW5kbGVGb3JDbGFzczpbV2Vi
VmlldyBjbGFzc11dIHBhdGhGb3JSZXNvdXJjZTpAIk91dGxvb2tRdWlya3NVc2VyU2NyaXB0IiBv
ZlR5cGU6QCJqcyJdOwogICAgIE5TU3RyaW5nRW5jb2RpbmcgZW5jb2Rpbmc7Ci0gICAgcmV0dXJu
IFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoQ29udGVudHNPZkZpbGU6c2NyaXB0UGF0aCB1c2Vk
RW5jb2Rpbmc6JmVuY29kaW5nIGVycm9yOjBdOworICAgIHJldHVybiBhZG9wdE5TKFtbTlNTdHJp
bmcgYWxsb2NdIGluaXRXaXRoQ29udGVudHNPZkZpbGU6c2NyaXB0UGF0aCB1c2VkRW5jb2Rpbmc6
JmVuY29kaW5nIGVycm9yOjBdKTsKIH0KIAogLSh2b2lkKV9pbmplY3RPdXRsb29rUXVpcmtzU2Ny
aXB0CiB7Ci0gICAgc3RhdGljIE5TU3RyaW5nICpvdXRsb29rUXVpcmtzU2NyaXB0Q29udGVudHMg
PSBsZWFrT3V0bG9va1F1aXJrc1VzZXJTY3JpcHRDb250ZW50cygpOwotICAgIF9wcml2YXRlLT5n
cm91cC0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkuYWRkVXNlclNjcmlwdCgqY29yZShbV2ViU2Ny
aXB0V29ybGQgd29ybGRdKSwgbWFrZVVuaXF1ZTxXZWJDb3JlOjpVc2VyU2NyaXB0PihvdXRsb29r
UXVpcmtzU2NyaXB0Q29udGVudHMsIFVSTCgpLCBWZWN0b3I8U3RyaW5nPigpLCBWZWN0b3I8U3Ry
aW5nPigpLCBXZWJDb3JlOjpVc2VyU2NyaXB0SW5qZWN0aW9uVGltZTo6RG9jdW1lbnRFbmQsIFdl
YkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluQWxsRnJhbWVzLCBXZWJD
b3JlOjpXYWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nOjpObykpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNTdHJpbmc+PiBvdXRsb29rUXVpcmtzU2NyaXB0
Q29udGVudHMgPSBvdXRsb29rUXVpcmtzVXNlclNjcmlwdENvbnRlbnRzKCk7CisgICAgX3ByaXZh
dGUtPmdyb3VwLT51c2VyQ29udGVudENvbnRyb2xsZXIoKS5hZGRVc2VyU2NyaXB0KCpjb3JlKFtX
ZWJTY3JpcHRXb3JsZCB3b3JsZF0pLCBtYWtlVW5pcXVlPFdlYkNvcmU6OlVzZXJTY3JpcHQ+KG91
dGxvb2tRdWlya3NTY3JpcHRDb250ZW50cy5nZXQoKS5nZXQoKSwgVVJMKCksIFZlY3RvcjxTdHJp
bmc+KCksIFZlY3RvcjxTdHJpbmc+KCksIFdlYkNvcmU6OlVzZXJTY3JpcHRJbmplY3Rpb25UaW1l
OjpEb2N1bWVudEVuZCwgV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0
SW5BbGxGcmFtZXMsIFdlYkNvcmU6OldhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3Rpbmc6
Ok5vKSk7CiAKIH0KICNlbmRpZgpAQCAtMTM2NywyMCArMTM3MSwyMCBAQCBzdGF0aWMgYm9vbCBu
ZWVkc0xhQmFucXVlUG9zdGFsZVF1aXJrcygpCiAgICAgcmV0dXJuIG5lZWRzUXVpcmtzOwogfQog
Ci1zdGF0aWMgTlNTdHJpbmcgKmxlYWtMYUJhbnF1ZVBvc3RhbGVRdWlya3NTY3JpcHQoKQorc3Rh
dGljIFJldGFpblB0cjxOU1N0cmluZz4gbGFCYW5xdWVQb3N0YWxlUXVpcmtzU2NyaXB0KCkKIHsK
ICAgICBOU1VSTCAqc2NyaXB0VVJMID0gW1tOU0J1bmRsZSBidW5kbGVGb3JDbGFzczpXZWJWaWV3
LmNsYXNzXSBVUkxGb3JSZXNvdXJjZTpAIkxhQmFucXVlUG9zdGFsZVF1aXJrcyIgd2l0aEV4dGVu
c2lvbjpAImpzIl07CiAgICAgTlNTdHJpbmdFbmNvZGluZyBlbmNvZGluZzsKLSAgICByZXR1cm4g
W1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhDb250ZW50c09mVVJMOnNjcmlwdFVSTCB1c2VkRW5j
b2Rpbmc6JmVuY29kaW5nIGVycm9yOm51bGxwdHJdOworICAgIHJldHVybiBhZG9wdE5TKFtbTlNT
dHJpbmcgYWxsb2NdIGluaXRXaXRoQ29udGVudHNPZlVSTDpzY3JpcHRVUkwgdXNlZEVuY29kaW5n
OiZlbmNvZGluZyBlcnJvcjpudWxscHRyXSk7CiB9CiAKIC0gKHZvaWQpX2luamVjdExhQmFucXVl
UG9zdGFsZVF1aXJrcwogewogICAgIEFTU0VSVChuZWVkc0xhQmFucXVlUG9zdGFsZVF1aXJrcygp
KTsKLSAgICBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBxdWlya3NTY3JpcHQgPSBsZWFrTGFCYW5x
dWVQb3N0YWxlUXVpcmtzU2NyaXB0KCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFp
blB0cjxOU1N0cmluZz4+IHF1aXJrc1NjcmlwdCA9IGxhQmFucXVlUG9zdGFsZVF1aXJrc1Njcmlw
dCgpOwogCiAgICAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0gICAgYXV0byB1c2VyU2NyaXB0
ID0gbWFrZVVuaXF1ZTxVc2VyU2NyaXB0PihxdWlya3NTY3JpcHQsIFVSTCgpLCBWZWN0b3I8U3Ry
aW5nPigpLCBWZWN0b3I8U3RyaW5nPigpLCBVc2VyU2NyaXB0SW5qZWN0aW9uVGltZTo6RG9jdW1l
bnRFbmQsIFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluQWxsRnJhbWVzLCBXYWl0
Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nOjpObyk7CisgICAgYXV0byB1c2VyU2NyaXB0
ID0gbWFrZVVuaXF1ZTxVc2VyU2NyaXB0PihxdWlya3NTY3JpcHQuZ2V0KCkuZ2V0KCksIFVSTCgp
LCBWZWN0b3I8U3RyaW5nPigpLCBWZWN0b3I8U3RyaW5nPigpLCBVc2VyU2NyaXB0SW5qZWN0aW9u
VGltZTo6RG9jdW1lbnRFbmQsIFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluQWxs
RnJhbWVzLCBXYWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nOjpObyk7CiAgICAgX3By
aXZhdGUtPmdyb3VwLT51c2VyQ29udGVudENvbnRyb2xsZXIoKS5hZGRVc2VyU2NyaXB0KCpjb3Jl
KFdlYlNjcmlwdFdvcmxkLndvcmxkKSwgV1RGTW92ZSh1c2VyU2NyaXB0KSk7CiB9CiAjZW5kaWYK
QEAgLTMyMTUsMTAgKzMyMTksMTAgQEAgKyAodm9pZClfcmVnaXN0ZXJWaWV3Q2xhc3M6KENsYXNz
KXZpZXdDbGFzcyByZXByZXNlbnRhdGlvbkNsYXNzOihDbGFzcylyZXByZXNlbnQKIAogICAgIC8v
IFRoaXMgaXMgdXNlZCB0byBtYWtlIF9yZXByZXNlbnRhdGlvbkV4aXN0c0ZvclVSTFNjaGVtZSBm
YXN0ZXIuCiAgICAgLy8gV2l0aG91dCB0aGlzIHNldCwgd2UnZCBoYXZlIHRvIGNyZWF0ZSB0aGUg
TUlNRSB0eXBlIGVhY2ggdGltZS4KLSAgICBpZiAoc2NoZW1lc1dpdGhSZXByZXNlbnRhdGlvbnNT
ZXQgPT0gbmlsKSB7Ci0gICAgICAgIHNjaGVtZXNXaXRoUmVwcmVzZW50YXRpb25zU2V0ID0gW1tO
U011dGFibGVTZXQgYWxsb2NdIGluaXRdOwotICAgIH0KLSAgICBbc2NoZW1lc1dpdGhSZXByZXNl
bnRhdGlvbnNTZXQgYWRkT2JqZWN0OmFkb3B0TlMoW1tVUkxTY2hlbWUgbG93ZXJjYXNlU3RyaW5n
XSBjb3B5XSkuZ2V0KCldOworICAgIGF1dG8mIHNjaGVtZXMgPSBzY2hlbWVzV2l0aFJlcHJlc2Vu
dGF0aW9uc1NldCgpOworICAgIGlmICghc2NoZW1lcykKKyAgICAgICAgc2NoZW1lcyA9IGFkb3B0
TlMoW1tOU011dGFibGVTZXQgYWxsb2NdIGluaXRdKTsKKyAgICBbc2NoZW1lcyBhZGRPYmplY3Q6
YWRvcHROUyhbW1VSTFNjaGVtZSBsb3dlcmNhc2VTdHJpbmddIGNvcHldKS5nZXQoKV07CiB9CiAK
ICsgKE5TU3RyaW5nICopX2dlbmVyYXRlZE1JTUVUeXBlRm9yVVJMU2NoZW1lOihOU1N0cmluZyAq
KVVSTFNjaGVtZQpAQCAtMzIyOCw3ICszMjMyLDcgQEAgKyAoTlNTdHJpbmcgKilfZ2VuZXJhdGVk
TUlNRVR5cGVGb3JVUkxTY2hlbWU6KE5TU3RyaW5nICopVVJMU2NoZW1lCiAKICsgKEJPT0wpX3Jl
cHJlc2VudGF0aW9uRXhpc3RzRm9yVVJMU2NoZW1lOihOU1N0cmluZyAqKVVSTFNjaGVtZQogewot
ICAgIHJldHVybiBbc2NoZW1lc1dpdGhSZXByZXNlbnRhdGlvbnNTZXQgY29udGFpbnNPYmplY3Q6
W1VSTFNjaGVtZSBsb3dlcmNhc2VTdHJpbmddXTsKKyAgICByZXR1cm4gW3NjaGVtZXNXaXRoUmVw
cmVzZW50YXRpb25zU2V0KCkgY29udGFpbnNPYmplY3Q6W1VSTFNjaGVtZSBsb3dlcmNhc2VTdHJp
bmddXTsKIH0KIAogKyAoQk9PTClfY2FuSGFuZGxlUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVx
dWVzdCBmb3JNYWluRnJhbWU6KEJPT0wpZm9yTWFpbkZyYW1lCkBAIC0zMjk1LDIyICszMjk5LDIw
IEBAIC0gKHZvaWQpX3dpbGxDaGFuZ2VWYWx1ZUZvcktleTogKE5TU3RyaW5nICopa2V5CiB9CiAK
ICsgKEJPT0wpYXV0b21hdGljYWxseU5vdGlmaWVzT2JzZXJ2ZXJzRm9yS2V5OihOU1N0cmluZyAq
KWtleSB7Ci0gICAgc3RhdGljIE5TU2V0ICptYW51YWxOb3RpZnlLZXlzID0gbmlsOwotICAgIGlm
ICghbWFudWFsTm90aWZ5S2V5cykKLSAgICAgICAgbWFudWFsTm90aWZ5S2V5cyA9IFtbTlNTZXQg
YWxsb2NdIGluaXRXaXRoT2JqZWN0czpfV2ViTWFpbkZyYW1lVVJMS2V5LCBfV2ViSXNMb2FkaW5n
S2V5LCBfV2ViRXN0aW1hdGVkUHJvZ3Jlc3NLZXksCi0gICAgICAgICAgICBfV2ViQ2FuR29CYWNr
S2V5LCBfV2ViQ2FuR29Gb3J3YXJkS2V5LCBfV2ViTWFpbkZyYW1lVGl0bGVLZXksIF9XZWJNYWlu
RnJhbWVJY29uS2V5LCBfV2ViTWFpbkZyYW1lRG9jdW1lbnRLZXksCi0gICAgICAgICAgICBuaWxd
OwotICAgIGlmIChbbWFudWFsTm90aWZ5S2V5cyBjb250YWluc09iamVjdDprZXldKQorICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNTZXQ+PiBtYW51YWxOb3RpZnlLZXlzID0g
YWRvcHROUyhbW05TU2V0IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6X1dlYk1haW5GcmFtZVVSTEtl
eSwgX1dlYklzTG9hZGluZ0tleSwgX1dlYkVzdGltYXRlZFByb2dyZXNzS2V5LAorICAgICAgICBf
V2ViQ2FuR29CYWNrS2V5LCBfV2ViQ2FuR29Gb3J3YXJkS2V5LCBfV2ViTWFpbkZyYW1lVGl0bGVL
ZXksIF9XZWJNYWluRnJhbWVJY29uS2V5LCBfV2ViTWFpbkZyYW1lRG9jdW1lbnRLZXksIG5pbF0p
OworICAgIGlmIChbbWFudWFsTm90aWZ5S2V5cy5nZXQoKSBjb250YWluc09iamVjdDprZXldKQog
ICAgICAgICByZXR1cm4gTk87CiAgICAgcmV0dXJuIFlFUzsKIH0KIAogLSAoTlNBcnJheSAqKV9k
ZWNsYXJlZEtleXMgewotICAgIHN0YXRpYyBOU0FycmF5ICpkZWNsYXJlZEtleXMgPSBuaWw7Ci0g
ICAgaWYgKCFkZWNsYXJlZEtleXMpCi0gICAgICAgIGRlY2xhcmVkS2V5cyA9IFtbTlNBcnJheSBh
bGxvY10gaW5pdFdpdGhPYmplY3RzOl9XZWJNYWluRnJhbWVVUkxLZXksIF9XZWJJc0xvYWRpbmdL
ZXksIF9XZWJFc3RpbWF0ZWRQcm9ncmVzc0tleSwKLSAgICAgICAgICAgIF9XZWJDYW5Hb0JhY2tL
ZXksIF9XZWJDYW5Hb0ZvcndhcmRLZXksIF9XZWJNYWluRnJhbWVUaXRsZUtleSwgX1dlYk1haW5G
cmFtZUljb25LZXksIF9XZWJNYWluRnJhbWVEb2N1bWVudEtleSwgbmlsXTsKLSAgICByZXR1cm4g
ZGVjbGFyZWRLZXlzOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNBcnJh
eT4+IGRlY2xhcmVkS2V5cyA9IEBbCisgICAgICAgIF9XZWJNYWluRnJhbWVVUkxLZXksIF9XZWJJ
c0xvYWRpbmdLZXksIF9XZWJFc3RpbWF0ZWRQcm9ncmVzc0tleSwKKyAgICAgICAgX1dlYkNhbkdv
QmFja0tleSwgX1dlYkNhbkdvRm9yd2FyZEtleSwgX1dlYk1haW5GcmFtZVRpdGxlS2V5LAorICAg
ICAgICBfV2ViTWFpbkZyYW1lSWNvbktleSwgX1dlYk1haW5GcmFtZURvY3VtZW50S2V5CisgICAg
XTsKKyAgICByZXR1cm4gZGVjbGFyZWRLZXlzLmdldCgpLmdldCgpOwogfQogCiAtICh2b2lkKV93
aWxsQ2hhbmdlQmFja0ZvcndhcmRLZXlzCkBAIC01MjEyLDcgKzUyMTQsNyBAQCAtIChXZWJCYXNl
UGx1Z2luUGFja2FnZSAqKV9wbHVnaW5Gb3JFeHRlbnNpb246KE5TU3RyaW5nICopZXh0ZW5zaW9u
CiAtICh2b2lkKWFkZFBsdWdpbkluc3RhbmNlVmlldzooTlNWaWV3ICopdmlldwogewogICAgIGlm
ICghX3ByaXZhdGUtPnBsdWdpbkRhdGFiYXNlKQotICAgICAgICBfcHJpdmF0ZS0+cGx1Z2luRGF0
YWJhc2UgPSBbW1dlYlBsdWdpbkRhdGFiYXNlIGFsbG9jXSBpbml0XTsKKyAgICAgICAgX3ByaXZh
dGUtPnBsdWdpbkRhdGFiYXNlID0gYWRvcHROUyhbW1dlYlBsdWdpbkRhdGFiYXNlIGFsbG9jXSBp
bml0XSk7CiAgICAgW19wcml2YXRlLT5wbHVnaW5EYXRhYmFzZSBhZGRQbHVnaW5JbnN0YW5jZVZp
ZXc6dmlld107CiB9CiAKQEAgLTkwMDQsNyArOTAwNiw3IEBAIC0gKEJPT0wpX3N1cHBvcnRzRnVs
bFNjcmVlbkZvckVsZW1lbnQ6KE5ha2VkUHRyPGNvbnN0IFdlYkNvcmU6OkVsZW1lbnQ+KWVsZW1l
bnQKIC0gKHZvaWQpX2VudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQ6KE5ha2VkUHRyPFdlYkNvcmU6
OkVsZW1lbnQ+KWVsZW1lbnQKIHsKICAgICBpZiAoIV9wcml2YXRlLT5uZXdGdWxsc2NyZWVuQ29u
dHJvbGxlcikKLSAgICAgICAgX3ByaXZhdGUtPm5ld0Z1bGxzY3JlZW5Db250cm9sbGVyID0gW1tX
ZWJGdWxsU2NyZWVuQ29udHJvbGxlciBhbGxvY10gaW5pdF07CisgICAgICAgIF9wcml2YXRlLT5u
ZXdGdWxsc2NyZWVuQ29udHJvbGxlciA9IGFkb3B0TlMoW1tXZWJGdWxsU2NyZWVuQ29udHJvbGxl
ciBhbGxvY10gaW5pdF0pOwogCiAgICAgW19wcml2YXRlLT5uZXdGdWxsc2NyZWVuQ29udHJvbGxl
ciBzZXRFbGVtZW50OmVsZW1lbnQuZ2V0KCldOwogICAgIFtfcHJpdmF0ZS0+bmV3RnVsbHNjcmVl
bkNvbnRyb2xsZXIgc2V0V2ViVmlldzpzZWxmXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViVmlld0RhdGEuaAppbmRleCA0MGI2N2QxZTgzMGM3ZmI4NWM5NDllYjdhOGI2
NGUwMmQwN2I4MzM1Li44M2M2ZDc4MDUwMmVmMmIxOGI1NTNhOGU4OWQ0YzFlZTUwOGFlODg3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmgK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oCkBAIC0z
MzAsNyArMzMwLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgIAogI2lmIEVOQUJMRShGVUxMU0NS
RUVOX0FQSSkKLSAgICBXZWJGdWxsU2NyZWVuQ29udHJvbGxlciAqbmV3RnVsbHNjcmVlbkNvbnRy
b2xsZXI7CisgICAgUmV0YWluUHRyPFdlYkZ1bGxTY3JlZW5Db250cm9sbGVyPiBuZXdGdWxsc2Ny
ZWVuQ29udHJvbGxlcjsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNzI5NDgy
NTU1OGFhMzlkNjlmN2ZmNGRlZDBlZWJjNzM1ZGI2ZmNjNC4uYzJiYmMyOTJkZmY1MzkwMzU1YmRh
M2Q2Njc3ZjdlMjQwOTU2YjY2YyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDIxLTAyLTIyICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIGFkb3B0TlMoKSBhcyBzb29uIGFzIHdl
IFtbT2JqY0NsYXNzIGFsbG9jXSBpbml0XSB0byBhdm9pZCBsZWFrcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyMjM3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0UnVubmVyU2hhcmVkL21hYy9O
U1Bhc3RlYm9hcmRBZGRpdGlvbnMubW06CisgICAgICAgICgrW05TUGFzdGVib2FyZCBfbW9kZXJu
UGFzdGVib2FyZFR5cGU6XSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9XS1VSTFNjaGVtZUhhbmRsZXItMS5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdExlZ2FjeS9tYWMvRGVhbGxvY1dlYlZpZXdJbkV2ZW50TGlzdGVuZXIubW06Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL21hYy9DYW5jZWxMb2FkRnJvbVJlc291cmNlTG9hZERlbGVnYXRlLm1tOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMv
Q2xvc2VOZXdXaW5kb3dJbk5hdmlnYXRpb25Qb2xpY3lEZWxlZ2F0ZS5tbToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL01l
bW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLm1tOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMv
TWVtb3J5Q2FjaGVQcnVuZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLm1tOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMv
U3RvcExvYWRpbmdGcm9tRGlkUmVjZWl2ZVJlc3BvbnNlLm1tOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvV2luZG93bGVz
c1dlYlZpZXdXaXRoTWVkaWEubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL2lvcy9tYWluSU9TLm1tOgorICAgICAgICAobWFpbik6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9tYWMvbWFpbk1hYy5tbToKKyAgICAgICAgKG1haW4pOgor
CiAyMDIxLTAyLTIyICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBbRmxhdHBhayBTREtdIGdkYiB1bnVzYWJsZSBpbiBzYW5kYm94CmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL21hYy9OU1Bhc3RlYm9hcmRBZGRpdGlvbnMubW0gYi9U
b29scy9UZXN0UnVubmVyU2hhcmVkL21hYy9OU1Bhc3RlYm9hcmRBZGRpdGlvbnMubW0KaW5kZXgg
NjkzYWE1ODI4M2ExZjhmMzEwMzNlNWNjYzMxMWJhZDhiOGJiMjUzZS4uMTA2ZjUwMDUzNWFlNjg1
OWRjYTkzY2QzYTQ4YjFlYmI3ODU3YzJiMyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJ1bm5lclNo
YXJlZC9tYWMvTlNQYXN0ZWJvYXJkQWRkaXRpb25zLm1tCisrKyBiL1Rvb2xzL1Rlc3RSdW5uZXJT
aGFyZWQvbWFjL05TUGFzdGVib2FyZEFkZGl0aW9ucy5tbQpAQCAtMzYsMzkgKzM2LDQxIEBAIEBp
bXBsZW1lbnRhdGlvbiBOU1Bhc3RlYm9hcmQgKFRlc3RSdW5uZXJBZGRpdGlvbnMpCiAKICsgKE5T
UGFzdGVib2FyZFR5cGUpX21vZGVyblBhc3RlYm9hcmRUeXBlOihOU1N0cmluZyAqKXR5cGUKIHsK
KyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IHVwZGF0ZWRUeXBlOwogICAgIGlmIChVVFR5cGVJc0R5
bmFtaWMoKF9fYnJpZGdlIENGU3RyaW5nUmVmKXR5cGUpKSB7CiAgICAgICAgIGlmIChhdXRvIGxl
Z2FjeVR5cGUgPSBhZG9wdE5TKChfX2JyaWRnZSBOU1N0cmluZyAqKVVUVHlwZUNvcHlQcmVmZXJy
ZWRUYWdXaXRoQ2xhc3MoKF9fYnJpZGdlIENGU3RyaW5nUmVmKXR5cGUsIGtVVFRhZ0NsYXNzTlNQ
Ym9hcmRUeXBlKSkpCi0gICAgICAgICAgICB0eXBlID0gbGVnYWN5VHlwZS5hdXRvcmVsZWFzZSgp
OwotICAgIH0KKyAgICAgICAgICAgIHVwZGF0ZWRUeXBlID0gV1RGTW92ZShsZWdhY3lUeXBlKTsK
KyAgICB9IGVsc2UKKyAgICAgICAgdXBkYXRlZFR5cGUgPSB0eXBlOwogCi0gICAgaWYgKFt0eXBl
IGlzRXF1YWxUb1N0cmluZzpXZWJDb3JlOjpsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpXSkK
KyAgICBpZiAoW3VwZGF0ZWRUeXBlIGlzRXF1YWxUb1N0cmluZzpXZWJDb3JlOjpsZWdhY3lTdHJp
bmdQYXN0ZWJvYXJkVHlwZSgpXSkKICAgICAgICAgcmV0dXJuIE5TUGFzdGVib2FyZFR5cGVTdHJp
bmc7CiAKLSAgICBpZiAoW3R5cGUgaXNFcXVhbFRvU3RyaW5nOldlYkNvcmU6OmxlZ2FjeUhUTUxQ
YXN0ZWJvYXJkVHlwZSgpXSkKKyAgICBpZiAoW3VwZGF0ZWRUeXBlIGlzRXF1YWxUb1N0cmluZzpX
ZWJDb3JlOjpsZWdhY3lIVE1MUGFzdGVib2FyZFR5cGUoKV0pCiAgICAgICAgIHJldHVybiBOU1Bh
c3RlYm9hcmRUeXBlSFRNTDsKIAotICAgIGlmIChbdHlwZSBpc0VxdWFsVG9TdHJpbmc6V2ViQ29y
ZTo6bGVnYWN5VElGRlBhc3RlYm9hcmRUeXBlKCldKQorICAgIGlmIChbdXBkYXRlZFR5cGUgaXNF
cXVhbFRvU3RyaW5nOldlYkNvcmU6OmxlZ2FjeVRJRkZQYXN0ZWJvYXJkVHlwZSgpXSkKICAgICAg
ICAgcmV0dXJuIE5TUGFzdGVib2FyZFR5cGVUSUZGOwogCi0gICAgaWYgKFt0eXBlIGlzRXF1YWxU
b1N0cmluZzpXZWJDb3JlOjpsZWdhY3lVUkxQYXN0ZWJvYXJkVHlwZSgpXSkKKyAgICBpZiAoW3Vw
ZGF0ZWRUeXBlIGlzRXF1YWxUb1N0cmluZzpXZWJDb3JlOjpsZWdhY3lVUkxQYXN0ZWJvYXJkVHlw
ZSgpXSkKICAgICAgICAgcmV0dXJuIE5TUGFzdGVib2FyZFR5cGVVUkw7CiAKLSAgICBpZiAoW3R5
cGUgaXNFcXVhbFRvU3RyaW5nOldlYkNvcmU6OmxlZ2FjeVBERlBhc3RlYm9hcmRUeXBlKCldKQor
ICAgIGlmIChbdXBkYXRlZFR5cGUgaXNFcXVhbFRvU3RyaW5nOldlYkNvcmU6OmxlZ2FjeVBERlBh
c3RlYm9hcmRUeXBlKCldKQogICAgICAgICByZXR1cm4gTlNQYXN0ZWJvYXJkVHlwZVBERjsKIAot
ICAgIGlmIChbdHlwZSBpc0VxdWFsVG9TdHJpbmc6V2ViQ29yZTo6bGVnYWN5UlRGRFBhc3RlYm9h
cmRUeXBlKCldKQorICAgIGlmIChbdXBkYXRlZFR5cGUgaXNFcXVhbFRvU3RyaW5nOldlYkNvcmU6
OmxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpXSkKICAgICAgICAgcmV0dXJuIE5TUGFzdGVib2Fy
ZFR5cGVSVEZEOwogCi0gICAgaWYgKFt0eXBlIGlzRXF1YWxUb1N0cmluZzpXZWJDb3JlOjpsZWdh
Y3lSVEZQYXN0ZWJvYXJkVHlwZSgpXSkKKyAgICBpZiAoW3VwZGF0ZWRUeXBlIGlzRXF1YWxUb1N0
cmluZzpXZWJDb3JlOjpsZWdhY3lSVEZQYXN0ZWJvYXJkVHlwZSgpXSkKICAgICAgICAgcmV0dXJu
IE5TUGFzdGVib2FyZFR5cGVSVEY7CiAKLSAgICBpZiAoW3R5cGUgaXNFcXVhbFRvU3RyaW5nOldl
YkNvcmU6OmxlZ2FjeUNvbG9yUGFzdGVib2FyZFR5cGUoKV0pCisgICAgaWYgKFt1cGRhdGVkVHlw
ZSBpc0VxdWFsVG9TdHJpbmc6V2ViQ29yZTo6bGVnYWN5Q29sb3JQYXN0ZWJvYXJkVHlwZSgpXSkK
ICAgICAgICAgcmV0dXJuIE5TUGFzdGVib2FyZFR5cGVDb2xvcjsKIAotICAgIGlmIChbdHlwZSBp
c0VxdWFsVG9TdHJpbmc6V2ViQ29yZTo6bGVnYWN5Rm9udFBhc3RlYm9hcmRUeXBlKCldKQorICAg
IGlmIChbdXBkYXRlZFR5cGUgaXNFcXVhbFRvU3RyaW5nOldlYkNvcmU6OmxlZ2FjeUZvbnRQYXN0
ZWJvYXJkVHlwZSgpXSkKICAgICAgICAgcmV0dXJuIE5TUGFzdGVib2FyZFR5cGVGb250OwogCi0g
ICAgcmV0dXJuIHR5cGU7CisgICAgcmV0dXJuIHVwZGF0ZWRUeXBlLmF1dG9yZWxlYXNlKCk7CiB9
CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvV0tVUkxTY2hlbWVIYW5kbGVyLTEubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1dLVVJMU2NoZW1lSGFuZGxlci0xLm1tCmluZGV4IDVjOWIzMDEyMDZiMDU5MWRl
NjdkMjJlMGI4ZDc4MmQ3ZGJmZjI3MmIuLjliYjA0ZTI3MGY3YWVlNGQzMzE4ZTE5YWFiYjc2ZGYy
MTFjMDJjNzUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvV0tVUkxTY2hlbWVIYW5kbGVyLTEubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9XS1VSTFNjaGVtZUhhbmRsZXItMS5tbQpAQCAtNTI4LDM5ICs1MjgsMzgg
QEAgc3RhdGljIGNvbnN0IGNoYXIqIHN5bmNYSFJCeXRlcyA9ICJNeSBYSFIgdGV4dCEiOwogCiBU
RVNUKFVSTFNjaGVtZUhhbmRsZXIsIFN5bmNYSFIpCiB7Ci0gICAgYXV0byAqcG9vbCA9IFtbTlNB
dXRvcmVsZWFzZVBvb2wgYWxsb2NdIGluaXRdOworICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAg
ICAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZp
Z3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICAgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhb
W1N5bmNTY2hlbWUgYWxsb2NdIGluaXRdKTsKKyAgICAgICAgW3dlYlZpZXdDb25maWd1cmF0aW9u
IHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJzeW5jeGhy
Il07CiAKLSAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmll
d0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5T
KFtbU3luY1NjaGVtZSBhbGxvY10gaW5pdF0pOwotICAgIFt3ZWJWaWV3Q29uZmlndXJhdGlvbiBz
ZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAic3luY3hociJd
OwotICAgIAotICAgIGhhbmRsZXIuZ2V0KCktPnJlc291cmNlcy5zZXQoInN5bmN4aHI6Ly9ob3N0
L21haW4uaHRtbCIsIFNjaGVtZVJlc291cmNlSW5mbyB7IEAidGV4dC9odG1sIiwgc3luY01haW5C
eXRlcywgdHJ1ZSB9KTsKLSAgICBoYW5kbGVyLmdldCgpLT5yZXNvdXJjZXMuc2V0KCJzeW5jeGhy
Oi8vaG9zdC90ZXN0LmRhdCIsIFNjaGVtZVJlc291cmNlSW5mbyB7IEAidGV4dC9wbGFpbiIsIHN5
bmNYSFJCeXRlcywgdHJ1ZSB9KTsKKyAgICAgICAgaGFuZGxlci5nZXQoKS0+cmVzb3VyY2VzLnNl
dCgic3luY3hocjovL2hvc3QvbWFpbi5odG1sIiwgU2NoZW1lUmVzb3VyY2VJbmZvIHsgQCJ0ZXh0
L2h0bWwiLCBzeW5jTWFpbkJ5dGVzLCB0cnVlIH0pOworICAgICAgICBoYW5kbGVyLmdldCgpLT5y
ZXNvdXJjZXMuc2V0KCJzeW5jeGhyOi8vaG9zdC90ZXN0LmRhdCIsIFNjaGVtZVJlc291cmNlSW5m
byB7IEAidGV4dC9wbGFpbiIsIHN5bmNYSFJCeXRlcywgdHJ1ZSB9KTsKIAotICAgIGF1dG8gbWVz
c2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbU3luY01lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7
Ci0gICAgW1t3ZWJWaWV3Q29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNj
cmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgpIG5hbWU6QCJzeW5jIl07Ci0g
ICAgCi0gICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOndlYlZpZXdD
b25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgICAgIGF1dG8gbWVzc2FnZUhhbmRsZXIgPSBhZG9w
dE5TKFtbU3luY01lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7CisgICAgICAgIFtbd2ViVmll
d0NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFu
ZGxlcjptZXNzYWdlSGFuZGxlci5nZXQoKSBuYW1lOkAic3luYyJdOwogCi0gICAgTlNVUkxSZXF1
ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0
aFN0cmluZzpAInN5bmN4aHI6Ly9ob3N0L21haW4uaHRtbCJdXTsKLSAgICBbd2ViVmlldyBsb2Fk
UmVxdWVzdDpyZXF1ZXN0XTsKKyAgICAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25m
aWd1cmF0aW9uOndlYlZpZXdDb25maWd1cmF0aW9uLmdldCgpXSk7CiAKLSAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkTWVzc2FnZSk7Ci0gICAgcmVjZWl2ZWRNZXNzYWdlID0g
ZmFsc2U7CisgICAgICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVx
dWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJzeW5jeGhyOi8vaG9zdC9tYWluLmh0
bWwiXV07CisgICAgICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOwogCi0gICAgRVhQ
RUNUX0VRKCh1bnNpZ25lZClyZWNlaXZlZE1lc3NhZ2VzLmdldCgpLmNvdW50LCAodW5zaWduZWQp
MSk7Ci0gICAgRVhQRUNUX1RSVUUoW3JlY2VpdmVkTWVzc2FnZXMuZ2V0KClbMF0gaXNFcXVhbFRv
U3RyaW5nOkAiTXkgWEhSIHRleHQhIl0pOworICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJnJlY2VpdmVkTWVzc2FnZSk7CisgICAgICAgIHJlY2VpdmVkTWVzc2FnZSA9IGZhbHNlOwog
Ci0gICAgLy8gTm93IHRyeSBhZ2FpbiwgYnV0IGhhbmcgdGhlIFdlYlByb2Nlc3MgaW4gdGhlIHJl
cGx5IHRvIHRoZSBYSFIgYnkgdGVsbGluZyB0aGUgc2NoZW1lIGhhbmRsZXIgdG8gbmV2ZXIKLSAg
ICAvLyByZXNwb25kIHRvIGl0LgotICAgIGhhbmRsZXIuZ2V0KCktPnJlc291cmNlcy5maW5kKCJz
eW5jeGhyOi8vaG9zdC90ZXN0LmRhdCIpLT52YWx1ZS5zaG91bGRSZXNwb25kID0gZmFsc2U7Ci0g
ICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CisgICAgICAgIEVYUEVDVF9FUSgodW5z
aWduZWQpcmVjZWl2ZWRNZXNzYWdlcy5nZXQoKS5jb3VudCwgKHVuc2lnbmVkKTEpOworICAgICAg
ICBFWFBFQ1RfVFJVRShbcmVjZWl2ZWRNZXNzYWdlcy5nZXQoKVswXSBpc0VxdWFsVG9TdHJpbmc6
QCJNeSBYSFIgdGV4dCEiXSk7CiAKLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnN0YXJ0
ZWRYSFIpOwotICAgIHJlY2VpdmVkTWVzc2FnZSA9IGZhbHNlOworICAgICAgICAvLyBOb3cgdHJ5
IGFnYWluLCBidXQgaGFuZyB0aGUgV2ViUHJvY2VzcyBpbiB0aGUgcmVwbHkgdG8gdGhlIFhIUiBi
eSB0ZWxsaW5nIHRoZSBzY2hlbWUgaGFuZGxlciB0byBuZXZlcgorICAgICAgICAvLyByZXNwb25k
IHRvIGl0LgorICAgICAgICBoYW5kbGVyLmdldCgpLT5yZXNvdXJjZXMuZmluZCgic3luY3hocjov
L2hvc3QvdGVzdC5kYXQiKS0+dmFsdWUuc2hvdWxkUmVzcG9uZCA9IGZhbHNlOworICAgICAgICBb
d2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKIAotICAgIHdlYlZpZXcgPSBuaWw7Ci0gICAg
W3Bvb2wgZHJhaW5dOworICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnN0YXJ0ZWRY
SFIpOworICAgICAgICByZWNlaXZlZE1lc3NhZ2UgPSBmYWxzZTsKKworICAgICAgICB3ZWJWaWV3
ID0gbmlsOworICAgIH0KICAgICAKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2Vp
dmVkU3RvcCk7CiB9CkBAIC03NDEsMzkgKzc0MCwzNyBAQCBURVNUKFVSTFNjaGVtZUhhbmRsZXIs
IFhIUlBvc3QpCiAKIFRFU1QoVVJMU2NoZW1lSGFuZGxlciwgVGhyZWFkcykKIHsKLSAgICBOU0F1
dG9yZWxlYXNlUG9vbCAqcG9vbCA9IFtbTlNBdXRvcmVsZWFzZVBvb2wgYWxsb2NdIGluaXRdOwot
Ci0gICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbW1Rlc3RVUkxTY2hlbWVIYW5kbGVyIGFsbG9j
XSBpbml0XSk7Ci0gICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hl
bWVIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAidGhyZWFkcyJdOwotICAgIGF1
dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
OkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5n
ZXQoKV0pOwotCiAgICAgc3RhdGljIGJvb2wgZG9uZTsKLSAgICBzdGF0aWMgaWQ8V0tVUkxTY2hl
bWVUYXNrPiB0aGVUYXNrOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8aWQ8
V0tVUkxTY2hlbWVUYXNrPj4+IHRoZVRhc2s7CiAgICAgc3RhdGljIFJlZlB0cjxUaHJlYWQ+IHRo
ZVRocmVhZDsKLSAgICBbaGFuZGxlciBzZXRTdGFydFVSTFNjaGVtZVRhc2tIYW5kbGVyOl4oV0tX
ZWJWaWV3ICosIGlkPFdLVVJMU2NoZW1lVGFzaz4gdGFzaykgewotICAgICAgICB0aGVUYXNrID0g
dGFzazsKLSAgICAgICAgW3Rhc2sgcmV0YWluXTsKLSAgICAgICAgdGhlVGhyZWFkID0gVGhyZWFk
OjpjcmVhdGUoIkEiLCBbdGFza10gewotICAgICAgICAgICAgYXV0byByZXNwb25zZSA9IGFkb3B0
TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1J
TUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6MCB0ZXh0RW5jb2RpbmdO
YW1lOm5pbF0pOwotICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOnJlc3BvbnNl
LmdldCgpXTsKLSAgICAgICAgICAgIFt0YXNrIGRpZEZpbmlzaF07Ci0gICAgICAgICAgICBkb25l
ID0gdHJ1ZTsKLSAgICAgICAgfSk7Ci0gICAgfV07CiAKLSAgICBbd2ViVmlldyBsb2FkUmVxdWVz
dDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAidGhy
ZWFkczovL21haW4uaHRtbCJdXV07CisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIGF1
dG8gaGFuZGxlciA9IGFkb3B0TlMoW1tUZXN0VVJMU2NoZW1lSGFuZGxlciBhbGxvY10gaW5pdF0p
OworICAgICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgICAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hl
bWVIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAidGhyZWFkcyJdOworICAgICAg
ICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRp
b24uZ2V0KCldKTsKKyAgICAgICAgW2hhbmRsZXIgc2V0U3RhcnRVUkxTY2hlbWVUYXNrSGFuZGxl
cjpeKFdLV2ViVmlldyAqLCBpZDxXS1VSTFNjaGVtZVRhc2s+IHRhc2spIHsKKyAgICAgICAgICAg
IHRoZVRhc2suZ2V0KCkgPSByZXRhaW5QdHIodGFzayk7CisgICAgICAgICAgICB0aGVUaHJlYWQg
PSBUaHJlYWQ6OmNyZWF0ZSgiQSIsIFt0YXNrXSB7CisgICAgICAgICAgICAgICAgYXV0byByZXNw
b25zZSA9IGFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJl
cXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6MCB0
ZXh0RW5jb2RpbmdOYW1lOm5pbF0pOworICAgICAgICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVS
ZXNwb25zZTpyZXNwb25zZS5nZXQoKV07CisgICAgICAgICAgICAgICAgW3Rhc2sgZGlkRmluaXNo
XTsKKyAgICAgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgICAgIH0pOworICAgICAg
ICB9XTsKKworICAgICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVl
c3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAidGhyZWFkczovL21haW4uaHRtbCJdXV07
CiAKLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgICAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwogCi0gICAgaGFuZGxlciA9IG5pbDsKLSAgICBjb25m
aWd1cmF0aW9uID0gbmlsOwotICAgIHdlYlZpZXcgPSBuaWw7Ci0gICAgdGhlVGhyZWFkID0gbnVs
bHB0cjsKLSAgICBbcG9vbCBkcmFpbl07CisgICAgICAgIGhhbmRsZXIgPSBuaWw7CisgICAgICAg
IGNvbmZpZ3VyYXRpb24gPSBuaWw7CisgICAgICAgIHdlYlZpZXcgPSBuaWw7CisgICAgICAgIHRo
ZVRocmVhZCA9IG51bGxwdHI7CisgICAgfQogCiAgICAgVGhyZWFkOjpjcmVhdGUoIkIiLCBbXSB7
Ci0gICAgICAgIGF1dG8gb2xkVGFzayA9IGFkb3B0TlMoc3RkOjpleGNoYW5nZSh0aGVUYXNrLCBu
aWwpKTsKKyAgICAgICAgdGhlVGFzay5nZXQoKSA9IG5pbDsKICAgICB9KS0+d2FpdEZvckNvbXBs
ZXRpb24oKTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRMZWdhY3kvbWFjL0RlYWxsb2NXZWJWaWV3SW5FdmVudExpc3RlbmVyLm1tIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRMZWdhY3kvbWFjL0RlYWxsb2NXZWJWaWV3SW5FdmVudExp
c3RlbmVyLm1tCmluZGV4IGY0MjQ5ZGY0Y2FlYWNjZmZlOWI4MGE4OWNjODNkYTI0NmQ2MTMyYmUu
LmRmNjA1MWFkNTkyNDczODg3MjA4ZGZhYjkwMzI0NDJiMzFiMmUwY2MgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0TGVnYWN5L21hYy9EZWFsbG9jV2ViVmlld0lu
RXZlbnRMaXN0ZW5lci5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdExl
Z2FjeS9tYWMvRGVhbGxvY1dlYlZpZXdJbkV2ZW50TGlzdGVuZXIubW0KQEAgLTcwLDggKzcwLDcg
QEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBURVNUKFdlYktpdExlZ2FjeSwgRGVhbGxv
Y1dlYlZpZXdJbkV2ZW50TGlzdGVuZXIpCiB7Ci0gICAgewotICAgICAgICBOU0F1dG9yZWxlYXNl
UG9vbCAqcG9vbCA9IFtbTlNBdXRvcmVsZWFzZVBvb2wgYWxsb2NdIGluaXRdOworICAgIEBhdXRv
cmVsZWFzZXBvb2wgewogICAgICAgICB3ZWJWaWV3ID0gYWRvcHROUyhbW1dlYlZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA0MDAsIDQwMCkgZnJhbWVOYW1lOm5pbCBn
cm91cE5hbWU6bmlsXSk7CiAgICAgICAgIGF1dG8gbG9hZERlbGVnYXRlID0gYWRvcHROUyhbW0Rl
YWxsb2NXZWJWaWV3SW5FdmVudExpc3RlbmVyTG9hZERlbGVnYXRlIGFsbG9jXSBpbml0XSk7CiAg
ICAgICAgIHdlYlZpZXcuZ2V0KCkuZnJhbWVMb2FkRGVsZWdhdGUgPSBsb2FkRGVsZWdhdGUuZ2V0
KCk7CkBAIC04NCw3ICs4Myw2IEBAIFRFU1QoV2ViS2l0TGVnYWN5LCBEZWFsbG9jV2ViVmlld0lu
RXZlbnRMaXN0ZW5lcikKICAgICAgICAgW1tbd2ViVmlldyBtYWluRnJhbWVEb2N1bWVudF0gYm9k
eV0gYWRkRXZlbnRMaXN0ZW5lcjpAImtleXByZXNzIiBsaXN0ZW5lcjpudWxscHRyIHVzZUNhcHR1
cmU6Tk9dOwogICAgICAgICBsaXN0ZW5lciA9IG51bGxwdHI7CiAgICAgICAgIFt3ZWJWaWV3IGNs
b3NlXTsKLSAgICAgICAgW3Bvb2wgZHJhaW5dOwogICAgIH0KICAgICBVdGlsOjpydW4oJmRpZENs
b3NlKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0NhbmNl
bExvYWRGcm9tUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL21hYy9DYW5jZWxMb2FkRnJvbVJlc291cmNlTG9hZERlbGVnYXRlLm1tCmluZGV4IDk4MTk2
YTdmNzVmODEwNjE5NmQ4M2MyNDhlOGJiMzc0YWQyYThlNzcuLjE2NWFlOTU1ZDkzNGEyMzVmYzQ3
MGE0ZjdkYmU5MjBkY2UzZjJkODYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvbWFjL0NhbmNlbExvYWRGcm9tUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0KKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvQ2FuY2VsTG9hZEZyb21SZXNvdXJjZUxvYWREZWxlZ2F0
ZS5tbQpAQCAtNjIsMjAgKzYyLDE4IEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogVEVT
VChXZWJLaXRMZWdhY3ksIENhbmNlbExvYWRGcm9tUmVzb3VyY2VMb2FkRGVsZWdhdGUpCiB7Ci0g
ICAgTlNBdXRvcmVsZWFzZVBvb2wgKnBvb2wgPSBbW05TQXV0b3JlbGVhc2VQb29sIGFsbG9jXSBp
bml0XTsKKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgUmV0YWluUHRyPFdlYlZpZXc+
IHdlYlZpZXcgPSBhZG9wdE5TKFtbV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VS
ZWN0KDAsIDAsIDEyMCwgMjAwKSBmcmFtZU5hbWU6bmlsIGdyb3VwTmFtZTpuaWxdKTsKIAotICAg
IFJldGFpblB0cjxXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAxMjAsIDIwMCkgZnJhbWVOYW1lOm5pbCBncm91
cE5hbWU6bmlsXSk7CisgICAgICAgIFJldGFpblB0cjxDYW5jZWxMb2FkRnJvbVJlc291cmNlTG9h
ZERlbGVnYXRlPiByZXNvdXJjZUxvYWREZWxlZ2F0ZSA9IGFkb3B0TlMoW1tDYW5jZWxMb2FkRnJv
bVJlc291cmNlTG9hZERlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgICAgIHdlYlZpZXcuZ2V0
KCkucmVzb3VyY2VMb2FkRGVsZWdhdGUgPSByZXNvdXJjZUxvYWREZWxlZ2F0ZS5nZXQoKTsKKyAg
ICAgICAgUmV0YWluUHRyPENhbmNlbExvYWRGcm9tUmVzb3VyY2VMb2FkRGVsZWdhdGVGcmFtZUxv
YWREZWxlZ2F0ZT4gZnJhbWVMb2FkRGVsZWdhdGUgPSBhZG9wdE5TKFtbQ2FuY2VsTG9hZEZyb21S
ZXNvdXJjZUxvYWREZWxlZ2F0ZUZyYW1lTG9hZERlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAg
ICAgIHdlYlZpZXcuZ2V0KCkuZnJhbWVMb2FkRGVsZWdhdGUgPSBmcmFtZUxvYWREZWxlZ2F0ZS5n
ZXQoKTsKIAotICAgIFJldGFpblB0cjxDYW5jZWxMb2FkRnJvbVJlc291cmNlTG9hZERlbGVnYXRl
PiByZXNvdXJjZUxvYWREZWxlZ2F0ZSA9IGFkb3B0TlMoW1tDYW5jZWxMb2FkRnJvbVJlc291cmNl
TG9hZERlbGVnYXRlIGFsbG9jXSBpbml0XSk7Ci0gICAgd2ViVmlldy5nZXQoKS5yZXNvdXJjZUxv
YWREZWxlZ2F0ZSA9IHJlc291cmNlTG9hZERlbGVnYXRlLmdldCgpOwotICAgIFJldGFpblB0cjxD
YW5jZWxMb2FkRnJvbVJlc291cmNlTG9hZERlbGVnYXRlRnJhbWVMb2FkRGVsZWdhdGU+IGZyYW1l
TG9hZERlbGVnYXRlID0gYWRvcHROUyhbW0NhbmNlbExvYWRGcm9tUmVzb3VyY2VMb2FkRGVsZWdh
dGVGcmFtZUxvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwotICAgIHdlYlZpZXcuZ2V0KCkuZnJh
bWVMb2FkRGVsZWdhdGUgPSBmcmFtZUxvYWREZWxlZ2F0ZS5nZXQoKTsKKyAgICAgICAgW1t3ZWJW
aWV3LmdldCgpIG1haW5GcmFtZV0gbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0
aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAiQ2FuY2VsTG9hZEZy
b21SZXNvdXJjZUxvYWREZWxlZ2F0ZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9y
eTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dXTsKIAotICAgIFtbd2ViVmlldy5nZXQoKSBt
YWluRnJhbWVdIGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1
bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAIkNhbmNlbExvYWRGcm9tUmVzb3VyY2VM
b2FkRGVsZWdhdGUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2Vi
S2l0QVBJLnJlc291cmNlcyJdXV07Ci0KLSAgICBVdGlsOjpydW4oJmRpZEZpbmlzaExvYWQpOwot
Ci0gICAgW3Bvb2wgZHJhaW5dOworICAgICAgICBVdGlsOjpydW4oJmRpZEZpbmlzaExvYWQpOwor
ICAgIH0KICAgICAvLyBJZiB3ZSBmaW5pc2hlZCB3aXRob3V0IGNyYXNoaW5nLCB0aGUgdGVzdCBw
YXNzZWQuCiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0Ns
b3NlTmV3V2luZG93SW5OYXZpZ2F0aW9uUG9saWN5RGVsZWdhdGUubW0gYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL21hYy9DbG9zZU5ld1dpbmRvd0luTmF2aWdhdGlvblBvbGljeURlbGVnYXRl
Lm1tCmluZGV4IDliNmIyNDE0NTRhMzk3MmI0OWQ2NjA1ZWI5ZDE1YWJlNWUzMzk1MmQuLmMxZGY4
MmI4ZjUwOGI2ZDAyM2NjOTM2Y2I1OGEwMTI3MTg1ZmM0YmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvbWFjL0Nsb3NlTmV3V2luZG93SW5OYXZpZ2F0aW9uUG9saWN5RGVs
ZWdhdGUubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvQ2xvc2VOZXdXaW5k
b3dJbk5hdmlnYXRpb25Qb2xpY3lEZWxlZ2F0ZS5tbQpAQCAtNjksMTYgKzY5LDE0IEBAIG5hbWVz
cGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogVEVTVChXZWJLaXRMZWdhY3ksIENsb3NlTmV3V2luZG93
SW5OYXZpZ2F0aW9uUG9saWN5RGVsZWdhdGUpCiB7Ci0gICAgTlNBdXRvcmVsZWFzZVBvb2wgKnBv
b2wgPSBbW05TQXV0b3JlbGVhc2VQb29sIGFsbG9jXSBpbml0XTsKKyAgICBAYXV0b3JlbGVhc2Vw
b29sIHsKKyAgICAgICAgUmV0YWluUHRyPFdlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV2Vi
VmlldyBhbGxvY10gaW5pdF0pOworICAgICAgICB3ZWJWaWV3LmdldCgpLnByZWZlcmVuY2VzLmph
dmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHkgPSBZRVM7CisgICAgICAgIHdlYlZp
ZXcuZ2V0KCkuVUlEZWxlZ2F0ZSA9IFtUZXN0RGVsZWdhdGUgc2hhcmVkXTsKKyAgICAgICAgW1t3
ZWJWaWV3LmdldCgpIG1haW5GcmFtZV0gbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0
V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAiT3Blbk5ld1dp
bmRvdyIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEku
cmVzb3VyY2VzIl1dXTsKIAotICAgIFJldGFpblB0cjxXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHRO
UyhbW1dlYlZpZXcgYWxsb2NdIGluaXRdKTsKLSAgICB3ZWJWaWV3LmdldCgpLnByZWZlcmVuY2Vz
LmphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHkgPSBZRVM7Ci0gICAgd2ViVmll
dy5nZXQoKS5VSURlbGVnYXRlID0gW1Rlc3REZWxlZ2F0ZSBzaGFyZWRdOwotICAgIFtbd2ViVmll
dy5nZXQoKSBtYWluRnJhbWVdIGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhV
Ukw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAIk9wZW5OZXdXaW5kb3ci
IHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291
cmNlcyJdXV07Ci0gICAgCi0gICAgVXRpbDo6cnVuKCZ0ZXN0RmluaXNoZWQpOwotICAgIAotICAg
IFtwb29sIGRyYWluXTsKKyAgICAgICAgVXRpbDo6cnVuKCZ0ZXN0RmluaXNoZWQpOworICAgIH0K
IH0KICAgICAKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL01lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNl
TG9hZERlbGVnYXRlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTWVtb3J5Q2Fj
aGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0KaW5kZXggZDU2MWRjYjY2Mjk4
N2Q1MzZkN2QzNTc3MTc5NWVkZWFhN2ZhNDAzNy4uZjU0NWRlNDQwNjg3YTkyNTMwOTQ2ZDUyMjk5
ODA1YjIwZGU0M2I3NSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMv
TWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0KKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3Vy
Y2VMb2FkRGVsZWdhdGUubW0KQEAgLTcyLDE4ICs3MiwxNiBAQCBuYW1lc3BhY2UgVGVzdFdlYktp
dEFQSSB7CiAKIFRFU1QoV2ViS2l0TGVnYWN5LCBNZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNv
dXJjZUxvYWREZWxlZ2F0ZSkKIHsKLSAgICBOU0F1dG9yZWxlYXNlUG9vbCAqcG9vbCA9IFtbTlNB
dXRvcmVsZWFzZVBvb2wgYWxsb2NdIGluaXRdOworICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAg
ICAgICBSZXRhaW5QdHI8V2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTIwLCAyMDApIGZyYW1lTmFtZTpuaWwg
Z3JvdXBOYW1lOm5pbF0pOwogCi0gICAgUmV0YWluUHRyPFdlYlZpZXc+IHdlYlZpZXcgPSBhZG9w
dE5TKFtbV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEyMCwg
MjAwKSBmcmFtZU5hbWU6bmlsIGdyb3VwTmFtZTpuaWxdKTsKKyAgICAgICAgUmV0YWluUHRyPE1l
bW9yeUNhY2hlRGlzYWJsZVRlc3RSZXNvdXJjZUxvYWREZWxlZ2F0ZT4gcmVzb3VyY2VMb2FkRGVs
ZWdhdGUgPSBhZG9wdE5TKFtbTWVtb3J5Q2FjaGVEaXNhYmxlVGVzdFJlc291cmNlTG9hZERlbGVn
YXRlIGFsbG9jXSBpbml0XSk7CisgICAgICAgIHdlYlZpZXcuZ2V0KCkucmVzb3VyY2VMb2FkRGVs
ZWdhdGUgPSByZXNvdXJjZUxvYWREZWxlZ2F0ZS5nZXQoKTsKIAotICAgIFJldGFpblB0cjxNZW1v
cnlDYWNoZURpc2FibGVUZXN0UmVzb3VyY2VMb2FkRGVsZWdhdGU+IHJlc291cmNlTG9hZERlbGVn
YXRlID0gYWRvcHROUyhbW01lbW9yeUNhY2hlRGlzYWJsZVRlc3RSZXNvdXJjZUxvYWREZWxlZ2F0
ZSBhbGxvY10gaW5pdF0pOwotICAgIHdlYlZpZXcuZ2V0KCkucmVzb3VyY2VMb2FkRGVsZWdhdGUg
PSByZXNvdXJjZUxvYWREZWxlZ2F0ZS5nZXQoKTsKKyAgICAgICAgW1t3ZWJWaWV3LmdldCgpIG1h
aW5GcmFtZV0gbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVu
ZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAiTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGlu
UmVzb3VyY2VMb2FkRGVsZWdhdGUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6
QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXV07CiAKLSAgICBbW3dlYlZpZXcuZ2V0KCkgbWFp
bkZyYW1lXSBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5k
bGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJNZW1vcnlDYWNoZURpc2FibGVXaXRoaW5S
ZXNvdXJjZUxvYWREZWxlZ2F0ZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpA
IlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dXTsKLQotICAgIFV0aWw6OnJ1bigmZGlkRmluaXNo
TG9hZCk7Ci0gICAgCi0gICAgW3Bvb2wgZHJhaW5dOworICAgICAgICBVdGlsOjpydW4oJmRpZEZp
bmlzaExvYWQpOworICAgIH0KICAgICAvLyBJZiB3ZSBmaW5pc2hlZCB3aXRob3V0IGNyYXNoaW5n
LCB0aGUgdGVzdCBwYXNzZWQuCiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvbWFjL01lbW9yeUNhY2hlUHJ1bmVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbSBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL01lbW9yeUNhY2hlUHJ1bmVXaXRoaW5SZXNv
dXJjZUxvYWREZWxlZ2F0ZS5tbQppbmRleCA3NWM2ZmEzZTgwNDkyMTFlMmU3MGM1M2RjMmFjYjc2
NzdiZTE5YzA5Li4wMWU3NDRmNDhiMDRhYWFjZWI2NDdiOGYxMmI2OTYyNTZkNWU1MzNlIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9NZW1vcnlDYWNoZVBydW5lV2l0
aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9tYWMvTWVtb3J5Q2FjaGVQcnVuZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLm1tCkBAIC03
NywyMyArNzcsMjEgQEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBURVNUKFdlYktpdExl
Z2FjeSwgRElTQUJMRURfTWVtb3J5Q2FjaGVQcnVuZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRl
KQogewotICAgIE5TQXV0b3JlbGVhc2VQb29sICpwb29sID0gW1tOU0F1dG9yZWxlYXNlUG9vbCBh
bGxvY10gaW5pdF07CisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIFJldGFpblB0cjxX
ZWJWaWV3PiB3ZWJWaWV3MSA9IGFkb3B0TlMoW1tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
Ok5TTWFrZVJlY3QoMCwgMCwgMTIwLCAyMDApIGZyYW1lTmFtZTpuaWwgZ3JvdXBOYW1lOm5pbF0p
OworICAgICAgICBSZXRhaW5QdHI8V2ViVmlldz4gd2ViVmlldzIgPSBhZG9wdE5TKFtbV2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEyMCwgMjAwKSBmcmFtZU5h
bWU6bmlsIGdyb3VwTmFtZTpuaWxdKTsKIAotICAgIFJldGFpblB0cjxXZWJWaWV3PiB3ZWJWaWV3
MSA9IGFkb3B0TlMoW1tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwg
MCwgMTIwLCAyMDApIGZyYW1lTmFtZTpuaWwgZ3JvdXBOYW1lOm5pbF0pOwotICAgIFJldGFpblB0
cjxXZWJWaWV3PiB3ZWJWaWV3MiA9IGFkb3B0TlMoW1tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOk5TTWFrZVJlY3QoMCwgMCwgMTIwLCAyMDApIGZyYW1lTmFtZTpuaWwgZ3JvdXBOYW1lOm5p
bF0pOworICAgICAgICBOU1dpbmRvdyogd2luZG93ID0gW1tOU1dpbmRvdyBhbGxvY10gaW5pdFdp
dGhDb250ZW50UmVjdDp3ZWJWaWV3Mi5nZXQoKS5mcmFtZSBzdHlsZU1hc2s6TlNCb3JkZXJsZXNz
V2luZG93TWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6WUVTXTsKKyAg
ICAgICAgW3dpbmRvdy5jb250ZW50VmlldyBhZGRTdWJ2aWV3OndlYlZpZXcyLmdldCgpXTsKIAot
ICAgIE5TV2luZG93KiB3aW5kb3cgPSBbW05TV2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRS
ZWN0OndlYlZpZXcyLmdldCgpLmZyYW1lIHN0eWxlTWFzazpOU0JvcmRlcmxlc3NXaW5kb3dNYXNr
IGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpZRVNdOwotICAgIFt3aW5kb3cu
Y29udGVudFZpZXcgYWRkU3Vidmlldzp3ZWJWaWV3Mi5nZXQoKV07CisgICAgICAgIFJldGFpblB0
cjxNZW1vcnlDYWNoZVBydW5lVGVzdFJlc291cmNlTG9hZERlbGVnYXRlPiByZXNvdXJjZUxvYWRE
ZWxlZ2F0ZSA9IGFkb3B0TlMoW1tNZW1vcnlDYWNoZVBydW5lVGVzdFJlc291cmNlTG9hZERlbGVn
YXRlIGFsbG9jXSBpbml0XSk7CisgICAgICAgIHJlc291cmNlTG9hZERlbGVnYXRlLmdldCgpLT5f
d2luZG93ID0gd2luZG93OworICAgICAgICB3ZWJWaWV3MS5nZXQoKS5yZXNvdXJjZUxvYWREZWxl
Z2F0ZSA9IHJlc291cmNlTG9hZERlbGVnYXRlLmdldCgpOwogCi0gICAgUmV0YWluUHRyPE1lbW9y
eUNhY2hlUHJ1bmVUZXN0UmVzb3VyY2VMb2FkRGVsZWdhdGU+IHJlc291cmNlTG9hZERlbGVnYXRl
ID0gYWRvcHROUyhbW01lbW9yeUNhY2hlUHJ1bmVUZXN0UmVzb3VyY2VMb2FkRGVsZWdhdGUgYWxs
b2NdIGluaXRdKTsKLSAgICByZXNvdXJjZUxvYWREZWxlZ2F0ZS5nZXQoKS0+X3dpbmRvdyA9IHdp
bmRvdzsKLSAgICB3ZWJWaWV3MS5nZXQoKS5yZXNvdXJjZUxvYWREZWxlZ2F0ZSA9IHJlc291cmNl
TG9hZERlbGVnYXRlLmdldCgpOworICAgICAgICBbW3dlYlZpZXcxLmdldCgpIG1haW5GcmFtZV0g
bG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5C
dW5kbGVdIFVSTEZvclJlc291cmNlOkAiTWVtb3J5Q2FjaGVQcnVuZVdpdGhpblJlc291cmNlTG9h
ZERlbGVnYXRlIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktp
dEFQSS5yZXNvdXJjZXMiXV1dOwogCi0gICAgW1t3ZWJWaWV3MS5nZXQoKSBtYWluRnJhbWVdIGxv
YWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVu
ZGxlXSBVUkxGb3JSZXNvdXJjZTpAIk1lbW9yeUNhY2hlUHJ1bmVXaXRoaW5SZXNvdXJjZUxvYWRE
ZWxlZ2F0ZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRB
UEkucmVzb3VyY2VzIl1dXTsKLQotICAgIFV0aWw6OnJ1bigmZGlkRmluaXNoTG9hZCk7Ci0gICAg
Ci0gICAgW3Bvb2wgZHJhaW5dOworICAgICAgICBVdGlsOjpydW4oJmRpZEZpbmlzaExvYWQpOwor
ICAgIH0KICAgICAvLyBJZiB3ZSBmaW5pc2hlZCB3aXRob3V0IGNyYXNoaW5nLCB0aGUgdGVzdCBw
YXNzZWQuCiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1N0
b3BMb2FkaW5nRnJvbURpZFJlY2VpdmVSZXNwb25zZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvbWFjL1N0b3BMb2FkaW5nRnJvbURpZFJlY2VpdmVSZXNwb25zZS5tbQppbmRleCAxMzY5
NmQ2YThlMTU1NjRlNjZlYTQ1MWYwYzBkNTgxY2RlYTUyMGFmLi4wZTgyNWM2MWYzMmVmYTVkZDk3
YzgxZmJhOWUzNzczY2RjNTU1NGYwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL21hYy9TdG9wTG9hZGluZ0Zyb21EaWRSZWNlaXZlUmVzcG9uc2UubW0KKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvU3RvcExvYWRpbmdGcm9tRGlkUmVjZWl2ZVJlc3BvbnNl
Lm1tCkBAIC01NSwxOCArNTUsMTYgQEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBURVNU
KFdlYktpdExlZ2FjeSwgU3RvcExvYWRpbmdGcm9tRGlkUmVjZWl2ZVJlc3BvbnNlKQogewotICAg
IE5TQXV0b3JlbGVhc2VQb29sICpwb29sID0gW1tOU0F1dG9yZWxlYXNlUG9vbCBhbGxvY10gaW5p
dF07CisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIFJldGFpblB0cjxXZWJWaWV3PiB3
ZWJWaWV3ID0gYWRvcHROUyhbW1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVj
dCgwLCAwLCAxMjAsIDIwMCkgZnJhbWVOYW1lOm5pbCBncm91cE5hbWU6bmlsXSk7CiAKLSAgICBS
ZXRhaW5QdHI8V2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTIwLCAyMDApIGZyYW1lTmFtZTpuaWwgZ3JvdXBO
YW1lOm5pbF0pOworICAgICAgICBSZXRhaW5QdHI8U3RvcExvYWRpbmdGcm9tRGlkUmVjZWl2ZVJl
c3BvbnNlPiByZXNvdXJjZUxvYWREZWxlZ2F0ZSA9IGFkb3B0TlMoW1tTdG9wTG9hZGluZ0Zyb21E
aWRSZWNlaXZlUmVzcG9uc2UgYWxsb2NdIGluaXRdKTsKKyAgICAgICAgd2ViVmlldy5nZXQoKS5y
ZXNvdXJjZUxvYWREZWxlZ2F0ZSA9IHJlc291cmNlTG9hZERlbGVnYXRlLmdldCgpOwogCi0gICAg
UmV0YWluUHRyPFN0b3BMb2FkaW5nRnJvbURpZFJlY2VpdmVSZXNwb25zZT4gcmVzb3VyY2VMb2Fk
RGVsZWdhdGUgPSBhZG9wdE5TKFtbU3RvcExvYWRpbmdGcm9tRGlkUmVjZWl2ZVJlc3BvbnNlIGFs
bG9jXSBpbml0XSk7Ci0gICAgd2ViVmlldy5nZXQoKS5yZXNvdXJjZUxvYWREZWxlZ2F0ZSA9IHJl
c291cmNlTG9hZERlbGVnYXRlLmdldCgpOworICAgICAgICBbW3dlYlZpZXcuZ2V0KCkgbWFpbkZy
YW1lXSBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUg
bWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJTdG9wTG9hZGluZ0Zyb21EaWRSZWNlaXZlUmVz
cG9uc2UiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJ
LnJlc291cmNlcyJdXV07CiAKLSAgICBbW3dlYlZpZXcuZ2V0KCkgbWFpbkZyYW1lXSBsb2FkUmVx
dWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0g
VVJMRm9yUmVzb3VyY2U6QCJTdG9wTG9hZGluZ0Zyb21EaWRSZWNlaXZlUmVzcG9uc2UiIHdpdGhF
eHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJd
XV07Ci0KLSAgICBVdGlsOjpydW4oJmRpZEZpbmlzaExvYWQpOwotICAgIAotICAgIFtwb29sIGRy
YWluXTsKKyAgICAgICAgVXRpbDo6cnVuKCZkaWRGaW5pc2hMb2FkKTsKKyAgICB9CiAgICAgLy8g
SWYgd2UgZmluaXNoZWQgd2l0aG91dCBjcmFzaGluZywgdGhlIHRlc3QgcGFzc2VkLgogfQogCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9XaW5kb3dsZXNzV2ViVmll
d1dpdGhNZWRpYS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1dpbmRvd2xlc3NX
ZWJWaWV3V2l0aE1lZGlhLm1tCmluZGV4IDAwZWI3NTYzMGUxNzU3NzMyOThlN2Q4Y2E2YmNlYWU0
YzQyYTg4YzkuLmNhNzEwZjRjZTNjODcyMGQ3OTNiZGNlNTZlYzA0N2U4NzYyY2VkNDMgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1dpbmRvd2xlc3NXZWJWaWV3V2l0
aE1lZGlhLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1dpbmRvd2xlc3NX
ZWJWaWV3V2l0aE1lZGlhLm1tCkBAIC02MywyNCArNjMsMjIgQEAgc3RhdGljIHZvaWQgc3Bpbkxv
b3AoTlNUaW1lSW50ZXJ2YWwgdGltZW91dCwgQk9PTCAoXmJsb2NrKSgpKQogCiBURVNUKFdlYktp
dExlZ2FjeSwgV2luZG93bGVzc1dlYlZpZXdXaXRoTWVkaWEpCiB7Ci0gICAgTlNBdXRvcmVsZWFz
ZVBvb2wgKnBvb2wgPSBbW05TQXV0b3JlbGVhc2VQb29sIGFsbG9jXSBpbml0XTsKKyAgICBAYXV0
b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgUmV0YWluUHRyPFdlYlZpZXc+IHdlYlZpZXcgPSBhZG9w
dE5TKFtbV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEyMCwg
MjAwKSBmcmFtZU5hbWU6bmlsIGdyb3VwTmFtZTpuaWxdKTsKKyAgICAgICAgUmV0YWluUHRyPFdp
bmRvd2xlc3NXZWJWaWV3V2l0aE1lZGlhRnJhbWVMb2FkRGVsZWdhdGU+IHRlc3RDb250cm9sbGVy
ID0gYWRvcHROUyhbV2luZG93bGVzc1dlYlZpZXdXaXRoTWVkaWFGcmFtZUxvYWREZWxlZ2F0ZSBu
ZXddKTsKKyAgICAgICAgd2ViVmlldy5nZXQoKS5mcmFtZUxvYWREZWxlZ2F0ZSA9IHRlc3RDb250
cm9sbGVyLmdldCgpOworICAgICAgICBbW3dlYlZpZXcuZ2V0KCkgbWFpbkZyYW1lXSBsb2FkUmVx
dWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0g
VVJMRm9yUmVzb3VyY2U6QCJXaW5kb3dsZXNzV2ViVmlld1dpdGhNZWRpYSIgd2l0aEV4dGVuc2lv
bjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dXTsKIAot
ICAgIFJldGFpblB0cjxXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dlYlZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAxMjAsIDIwMCkgZnJhbWVOYW1lOm5pbCBn
cm91cE5hbWU6bmlsXSk7Ci0gICAgUmV0YWluUHRyPFdpbmRvd2xlc3NXZWJWaWV3V2l0aE1lZGlh
RnJhbWVMb2FkRGVsZWdhdGU+IHRlc3RDb250cm9sbGVyID0gYWRvcHROUyhbV2luZG93bGVzc1dl
YlZpZXdXaXRoTWVkaWFGcmFtZUxvYWREZWxlZ2F0ZSBuZXddKTsKLSAgICB3ZWJWaWV3LmdldCgp
LmZyYW1lTG9hZERlbGVnYXRlID0gdGVzdENvbnRyb2xsZXIuZ2V0KCk7Ci0gICAgW1t3ZWJWaWV3
LmdldCgpIG1haW5GcmFtZV0gbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVS
TDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAiV2luZG93bGVzc1dlYlZp
ZXdXaXRoTWVkaWEiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2Vi
S2l0QVBJLnJlc291cmNlcyJdXV07CisgICAgICAgIEVYUEVDVF9FUShuaWwsIFt3ZWJWaWV3Lmdl
dCgpIHdpbmRvd10pOwogCi0gICAgRVhQRUNUX0VRKG5pbCwgW3dlYlZpZXcuZ2V0KCkgd2luZG93
XSk7CisgICAgICAgIFV0aWw6OnJ1bigmZGlkRmluaXNoTG9hZCk7CiAKLSAgICBVdGlsOjpydW4o
JmRpZEZpbmlzaExvYWQpOyAgICAKKyAgICAgICAgc3Bpbkxvb3AoMC4yNSwgXnsKKyAgICAgICAg
ICAgIHJldHVybiBbW3dlYlZpZXcuZ2V0KCkgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZy
b21TdHJpbmc6QCJ3aW5kb3cuZGlkVHJpZ2dlckxvYWQiXSBpc0VxdWFsVG9TdHJpbmc6QCJ0cnVl
Il07CisgICAgICAgIH0pOwogCi0gICAgc3Bpbkxvb3AoMC4yNSwgXnsKLSAgICAgICAgcmV0dXJu
IFtbd2ViVmlldy5nZXQoKSBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmluZzpA
IndpbmRvdy5kaWRUcmlnZ2VyTG9hZCJdIGlzRXF1YWxUb1N0cmluZzpAInRydWUiXTsKLSAgICB9
KTsKLQotICAgIEVYUEVDVF9KU19FUSh3ZWJWaWV3LmdldCgpLCAid2luZG93LmRpZFRyaWdnZXJM
b2FkIiwgInRydWUiKTsKLQotICAgIFtwb29sIGRyYWluXTsKKyAgICAgICAgRVhQRUNUX0pTX0VR
KHdlYlZpZXcuZ2V0KCksICJ3aW5kb3cuZGlkVHJpZ2dlckxvYWQiLCAidHJ1ZSIpOworICAgIH0K
IH0KIAogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9pb3MvbWFpbklPUy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL21haW5J
T1MubW0KaW5kZXggNGU2NzIwM2ZmMDY2YTg1NTE2YzYxYzY3YTUyMzJmNDc0OTk5M2NlMS4uMjM4
OTEyMzdlY2M2ZGE2YTBmOTgxYzM5OWZkZjQyNjdkZTY1OTkzYyAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9pb3MvbWFpbklPUy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lv
cy9tYWluSU9TLm1tCkBAIC0zMCwyNCArMzAsMjMgQEAKIAogaW50IG1haW4oaW50IGFyZ2MsIGNo
YXIqKiBhcmd2KQogewotICAgIE5TQXV0b3JlbGVhc2VQb29sICpwb29sID0gW1tOU0F1dG9yZWxl
YXNlUG9vbCBhbGxvY10gaW5pdF07CisgICAgYm9vbCBwYXNzZWQgPSBmYWxzZTsKKyAgICBAYXV0
b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZh
dWx0c10gcmVtb3ZlUGVyc2lzdGVudERvbWFpbkZvck5hbWU6QCJUZXN0V2ViS2l0QVBJIl07CiAK
LSAgICBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSByZW1vdmVQZXJzaXN0
ZW50RG9tYWluRm9yTmFtZTpAIlRlc3RXZWJLaXRBUEkiXTsKKyAgICAgICAgLy8gU2V0IHVwIHVz
ZXIgZGVmYXVsdHMuCisgICAgICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKmFyZ3VtZW50RG9tYWlu
ID0gW1tbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHZvbGF0aWxlRG9tYWlu
Rm9yTmFtZTpOU0FyZ3VtZW50RG9tYWluXSBtdXRhYmxlQ29weV07CisgICAgICAgIGlmICghYXJn
dW1lbnREb21haW4pCisgICAgICAgICAgICBhcmd1bWVudERvbWFpbiA9IFtbTlNNdXRhYmxlRGlj
dGlvbmFyeSBhbGxvY10gaW5pdF07CiAKLSAgICAvLyBTZXQgdXAgdXNlciBkZWZhdWx0cy4KLSAg
ICBOU011dGFibGVEaWN0aW9uYXJ5ICphcmd1bWVudERvbWFpbiA9IFtbW05TVXNlckRlZmF1bHRz
IHN0YW5kYXJkVXNlckRlZmF1bHRzXSB2b2xhdGlsZURvbWFpbkZvck5hbWU6TlNBcmd1bWVudERv
bWFpbl0gbXV0YWJsZUNvcHldOwotICAgIGlmICghYXJndW1lbnREb21haW4pCi0gICAgICAgIGFy
Z3VtZW50RG9tYWluID0gW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XTsKLQotICAg
IFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHNldFZvbGF0aWxlRG9tYWlu
OmFyZ3VtZW50RG9tYWluIGZvck5hbWU6TlNBcmd1bWVudERvbWFpbl07CisgICAgICAgIFtbTlNV
c2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHNldFZvbGF0aWxlRG9tYWluOmFyZ3Vt
ZW50RG9tYWluIGZvck5hbWU6TlNBcmd1bWVudERvbWFpbl07CiAKICNpZm5kZWYgQlVJTERJTkdf
VEVTVF9XVEYKLSAgICBbV0tQcm9jZXNzUG9vbCBfc2V0TGlua2VkT25PckFmdGVyRXZlcnl0aGlu
Z0ZvclRlc3RpbmddOworICAgICAgICBbV0tQcm9jZXNzUG9vbCBfc2V0TGlua2VkT25PckFmdGVy
RXZlcnl0aGluZ0ZvclRlc3RpbmddOwogI2VuZGlmCiAKLSAgICBib29sIHBhc3NlZCA9IFRlc3RX
ZWJLaXRBUEk6OlRlc3RzQ29udHJvbGxlcjo6c2luZ2xldG9uKCkucnVuKGFyZ2MsIGFyZ3YpOwot
Ci0gICAgW3Bvb2wgZHJhaW5dOworICAgICAgICBwYXNzZWQgPSBUZXN0V2ViS2l0QVBJOjpUZXN0
c0NvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnJ1bihhcmdjLCBhcmd2KTsKKyAgICB9CiAKICAgICBy
ZXR1cm4gcGFzc2VkID8gRVhJVF9TVUNDRVNTIDogRVhJVF9GQUlMVVJFOwogfQpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvbWFpbk1hYy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvbWFjL21haW5NYWMubW0KaW5kZXggZTQ4NGUxNWMyMzYyNmRiM2NkZmM5ZjcyNWY3NTM1MDI5
ODU2ODMwZS4uZDlkNmM2MThjMjIyMzU0YjllYTVmODQ0ODI2NzUwYmM1MTIyODdhZiAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvbWFpbk1hYy5tbQorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL21hYy9tYWluTWFjLm1tCkBAIC0zMiwzOCArMzIsMzcgQEAgZXh0ZXJuICJDIiB2
b2lkIF9CZWdpbkV2ZW50UmVjZWlwdE9uVGhyZWFkKHZvaWQpOwogCiBpbnQgbWFpbihpbnQgYXJn
YywgY2hhcioqIGFyZ3YpCiB7Ci0gICAgTlNBdXRvcmVsZWFzZVBvb2wgKnBvb2wgPSBbW05TQXV0
b3JlbGVhc2VQb29sIGFsbG9jXSBpbml0XTsKKyAgICBib29sIHBhc3NlZCA9IGZhbHNlOworICAg
IEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNl
ckRlZmF1bHRzXSByZW1vdmVQZXJzaXN0ZW50RG9tYWluRm9yTmFtZTpAIlRlc3RXZWJLaXRBUEki
XTsKIAotICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHJlbW92ZVBl
cnNpc3RlbnREb21haW5Gb3JOYW1lOkAiVGVzdFdlYktpdEFQSSJdOworICAgICAgICAvLyBTZXQg
YSB1c2VyIGRlZmF1bHQgZm9yIFRlc3RXZWJLaXRBUEkgdG8gYnlwYXNzIGFsbCBsaW5rZWQtb24t
b3ItYWZ0ZXIgY2hlY2tzIGluIFdlYktpdAorICAgICAgICBOU011dGFibGVEaWN0aW9uYXJ5ICph
cmd1bWVudERvbWFpbiA9IFtbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSB2
b2xhdGlsZURvbWFpbkZvck5hbWU6TlNBcmd1bWVudERvbWFpbl0gbXV0YWJsZUNvcHldOworICAg
ICAgICBpZiAoIWFyZ3VtZW50RG9tYWluKQorICAgICAgICAgICAgYXJndW1lbnREb21haW4gPSBb
W05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdOwogCi0gICAgLy8gU2V0IGEgdXNlciBk
ZWZhdWx0IGZvciBUZXN0V2ViS2l0QVBJIHRvIGJ5cGFzcyBhbGwgbGlua2VkLW9uLW9yLWFmdGVy
IGNoZWNrcyBpbiBXZWJLaXQKLSAgICBOU011dGFibGVEaWN0aW9uYXJ5ICphcmd1bWVudERvbWFp
biA9IFtbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSB2b2xhdGlsZURvbWFp
bkZvck5hbWU6TlNBcmd1bWVudERvbWFpbl0gbXV0YWJsZUNvcHldOwotICAgIGlmICghYXJndW1l
bnREb21haW4pCi0gICAgICAgIGFyZ3VtZW50RG9tYWluID0gW1tOU011dGFibGVEaWN0aW9uYXJ5
IGFsbG9jXSBpbml0XTsKKyAgICAgICAgLy8gQ0FVVElPTjogRGVmYXVsdHMgc2V0IGhlcmUgYXJl
IG5vdCBhdXRvbWF0aWNhbGx5IHByb3BhZ2F0ZWQgdG8gdGhlCisgICAgICAgIC8vIFdlYiBDb250
ZW50IHByb2Nlc3MuIFRob3NlIGxpc3RlZCBiZWxvdyBhcmUgcHJvcGFnYXRlZCBtYW51YWxseS4K
KyAgICAgICAgTlNEaWN0aW9uYXJ5ICpkaWN0ID0gQHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgc3dpdGNoIHRoZXNlIGRlZmF1bHRzIHRvIHVzZSBvdmVybGF5CisgICAgICAgICAg
ICAvLyBzY3JvbGxiYXJzLCBzaW5jZSB0aGV5IGFyZSB0aGUgZGVmYXVsdCBvbiB0aGUgcGxhdGZv
cm0sCisgICAgICAgICAgICAvLyBidXQgYSB2YXJpZXR5IG9mIHRlc3RzIHdpbGwgbmVlZCBjaGFu
Z2VzLgorICAgICAgICAgICAgQCJOU092ZXJsYXlTY3JvbGxlcnNFbmFibGVkIjogQE5PLAorICAg
ICAgICAgICAgQCJBcHBsZVNob3dTY3JvbGxCYXJzIjogQCJBbHdheXMiLAorICAgICAgICB9Owog
Ci0gICAgLy8gQ0FVVElPTjogRGVmYXVsdHMgc2V0IGhlcmUgYXJlIG5vdCBhdXRvbWF0aWNhbGx5
IHByb3BhZ2F0ZWQgdG8gdGhlCi0gICAgLy8gV2ViIENvbnRlbnQgcHJvY2Vzcy4gVGhvc2UgbGlz
dGVkIGJlbG93IGFyZSBwcm9wYWdhdGVkIG1hbnVhbGx5LgotICAgIE5TRGljdGlvbmFyeSAqZGlj
dCA9IEB7Ci0gICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgc3dpdGNoIHRoZXNlIGRlZmF1bHRz
IHRvIHVzZSBvdmVybGF5Ci0gICAgICAgIC8vIHNjcm9sbGJhcnMsIHNpbmNlIHRoZXkgYXJlIHRo
ZSBkZWZhdWx0IG9uIHRoZSBwbGF0Zm9ybSwKLSAgICAgICAgLy8gYnV0IGEgdmFyaWV0eSBvZiB0
ZXN0cyB3aWxsIG5lZWQgY2hhbmdlcy4KLSAgICAgICAgQCJOU092ZXJsYXlTY3JvbGxlcnNFbmFi
bGVkIjogQE5PLAotICAgICAgICBAIkFwcGxlU2hvd1Njcm9sbEJhcnMiOiBAIkFsd2F5cyIsCi0g
ICAgfTsKLQotICAgIFthcmd1bWVudERvbWFpbiBhZGRFbnRyaWVzRnJvbURpY3Rpb25hcnk6ZGlj
dF07Ci0gICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gc2V0Vm9sYXRp
bGVEb21haW46YXJndW1lbnREb21haW4gZm9yTmFtZTpOU0FyZ3VtZW50RG9tYWluXTsKKyAgICAg
ICAgW2FyZ3VtZW50RG9tYWluIGFkZEVudHJpZXNGcm9tRGljdGlvbmFyeTpkaWN0XTsKKyAgICAg
ICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gc2V0Vm9sYXRpbGVEb21h
aW46YXJndW1lbnREb21haW4gZm9yTmFtZTpOU0FyZ3VtZW50RG9tYWluXTsKIAogI2lmbmRlZiBC
VUlMRElOR19URVNUX1dURgotICAgIFtXS1Byb2Nlc3NQb29sIF9zZXRMaW5rZWRPbk9yQWZ0ZXJF
dmVyeXRoaW5nRm9yVGVzdGluZ107CisgICAgICAgIFtXS1Byb2Nlc3NQb29sIF9zZXRMaW5rZWRP
bk9yQWZ0ZXJFdmVyeXRoaW5nRm9yVGVzdGluZ107CiAjZW5kaWYKIAotICAgIFtOU0FwcGxpY2F0
aW9uIHNoYXJlZEFwcGxpY2F0aW9uXTsKLSAgICBfQmVnaW5FdmVudFJlY2VpcHRPblRocmVhZCgp
OyAvLyBNYWtlcyB3aW5kb3cgdmlzaWJpbGl0eSBub3RpZmljYXRpb25zIHdvcmsgKGFuZCBwb3Nz
aWJseSBtb3JlKS4KLQotICAgIGJvb2wgcGFzc2VkID0gVGVzdFdlYktpdEFQSTo6VGVzdHNDb250
cm9sbGVyOjpzaW5nbGV0b24oKS5ydW4oYXJnYywgYXJndik7CisgICAgICAgIFtOU0FwcGxpY2F0
aW9uIHNoYXJlZEFwcGxpY2F0aW9uXTsKKyAgICAgICAgX0JlZ2luRXZlbnRSZWNlaXB0T25UaHJl
YWQoKTsgLy8gTWFrZXMgd2luZG93IHZpc2liaWxpdHkgbm90aWZpY2F0aW9ucyB3b3JrIChhbmQg
cG9zc2libHkgbW9yZSkuCiAKLSAgICBbcG9vbCBkcmFpbl07CisgICAgICAgIHBhc3NlZCA9IFRl
c3RXZWJLaXRBUEk6OlRlc3RzQ29udHJvbGxlcjo6c2luZ2xldG9uKCkucnVuKGFyZ2MsIGFyZ3Yp
OworICAgIH0KIAogICAgIHJldHVybiBwYXNzZWQgPyBFWElUX1NVQ0NFU1MgOiBFWElUX0ZBSUxV
UkU7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421215</attachid>
            <date>2021-02-22 11:30:36 -0800</date>
            <delta_ts>2021-02-22 13:59:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222237-20210222113035.patch</filename>
            <type>text/plain</type>
            <size>139084</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMjQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTZjYTEzMjQ2OWM1Mjdl
NjBlYjJjMzZmNmEzNDc3MDg0N2Q2N2NmZi4uNDg0ZTAzZjlmZmM4ZTYxYTIxNmM1OThlNTliOGJj
NWRiYTNjNGJlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDIxLTAyLTIyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIGFkb3B0TlMoKSBhcyBz
b29uIGFzIHdlIFtbT2JqY0NsYXNzIGFsbG9jXSBpbml0XSB0byBhdm9pZCBsZWFrcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyMjM3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21h
Yy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbToKKyAgICAgICAgKC1bV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNf
RU5EXSk6CisgICAgICAgICogYnJpZGdlL3Rlc3RiaW5kaW5ncy5tbToKKyAgICAgICAgKG1haW4p
OgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVsLmg6CisgICAg
ICAgIChXZWJDb3JlOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlbDo6Y3JlYXRlVmlkZW9GdWxsc2NyZWVu
Vmlld0NvbnRyb2xsZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkFj
dGlvbkRpc2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZS5tbToKKyAgICAgICAgKCtbV2ViQWN0aW9uRGlz
YWJsaW5nQ0FMYXllckRlbGVnYXRlIHNoYXJlZF0pOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9X
ZWJCYWNrZ3JvdW5kVGFza0NvbnRyb2xsZXIubW06CisgICAgICAgICgrW1dlYkJhY2tncm91bmRU
YXNrQ29udHJvbGxlciBzaGFyZWRDb250cm9sbGVyXSk6CisgICAgICAgICogcGxhdGZvcm0vaW9z
L1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW06CisgICAgICAgICgrW1dlYkl0ZW1Qcm92aWRl
clBhc3RlYm9hcmQgc2hhcmVkSW5zdGFuY2VdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mvd2Fr
L1dlYkNvcmVUaHJlYWQubW06CisgICAgICAgIChzQXN5bmNEZWxlZ2F0ZXMpOgorICAgICAgICAo
V2ViVGhyZWFkQ2FsbERlbGVnYXRlQXN5bmMpOgorICAgICAgICAoV2ViUnVuTG9vcFVubG9ja0lu
dGVybmFsKToKKyAgICAgICAgKFN0YXJ0V2ViVGhyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9t
YWMvVGhlbWVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpidXR0b25DZWxsKToKKyAgICAgICAg
KFdlYkNvcmU6OmJ1dHRvbik6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYk5TQXR0cmlidXRl
ZFN0cmluZ0V4dHJhcy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmF0dHJpYnV0ZWRTdHJpbmdCeVN0
cmlwcGluZ0F0dGFjaG1lbnRDaGFyYWN0ZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdGlvblF1
ZXVlRm9yQXN5bmNDbGllbnRzKToKKwogMjAyMS0wMi0yMiAgU2FtIFdlaW5pZyAgPHdlaW5pZ0Bh
cHBsZS5jb20+CiAKICAgICAgICAgQWRkIGV4cGVyaW1lbnRhbCBzdXBwb3J0IGZvciBDU1MgQ29s
b3IgNSBjb2xvci1taXgoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA0NGI4Nzg1N2Y0OTFmMTIwNTA1MmJkNDJhNTk1
OWU4MTc1Zjk3ZmFlLi5jNjEyMjNhNmE0ZGE2YTg1YTA2ZjgzYjRlYWViNTExYzBhMDU1ZTc4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDIxLTAyLTIyICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIGFkb3B0TlMoKSBhcyBzb29uIGFzIHdlIFtbT2Jq
Y0NsYXNzIGFsbG9jXSBpbml0XSB0byBhdm9pZCBsZWFrcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyMjM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL05TQXR0cmlidXRl
ZFN0cmluZy5tbToKKyAgICAgICAgKGdsb2JhbENvbmZpZ3VyYXRpb24pOgorICAgICAgICAoK1tf
V0tBdHRyaWJ1dGVkU3RyaW5nV2ViVmlld0NhY2hlIGNvbmZpZ3VyYXRpb25dKToKKyAgICAgICAg
KCtbX1dLQXR0cmlidXRlZFN0cmluZ1dlYlZpZXdDYWNoZSBjbGVhckNvbmZpZ3VyYXRpb25dKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZS5tbToKKyAgICAgICAgKC1bV0tOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIF93ZWJf
Y3JlYXRlVGFyZ2V0XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQ
b29sLm1tOgorICAgICAgICAoc2hhcmVkUHJvY2Vzc1Bvb2wpOgorICAgICAgICAoLVtXS1Byb2Nl
c3NQb29sIGVuY29kZVdpdGhDb2RlcjpdKToKKyAgICAgICAgKCtbV0tQcm9jZXNzUG9vbCBfc2hh
cmVkUHJvY2Vzc1Bvb2xdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IGxvYWRTaW11bGF0ZWRSZXF1ZXN0OndpdGhSZXNw
b25zZUhUTUxTdHJpbmc6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNp
dGVEYXRhU3RvcmUubW06CisgICAgICAgICgrW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxXZWJzaXRl
RGF0YVR5cGVzXSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1ByZWZlcmVuY2VPYnNlcnZl
ci5tbToKKyAgICAgICAgKCtbV0tQcmVmZXJlbmNlT2JzZXJ2ZXIgc2hhcmVkSW5zdGFuY2VdKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5t
bToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpjcmVhdGVW
aWRlb0Z1bGxzY3JlZW5WaWV3Q29udHJvbGxlcik6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29h
L1dlYkluc3BlY3RvclByZWZlcmVuY2VPYnNlcnZlci5tbToKKyAgICAgICAgKCtbV0tXZWJJbnNw
ZWN0b3JQcmVmZXJlbmNlT2JzZXJ2ZXIgc2hhcmVkSW5zdGFuY2VdKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvQXV0aGVudGljYXRvclByZXNlbnRlckNvb3Jk
aW5hdG9yLm1tOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdG9yUHJlc2VudGVyQ29vcmRp
bmF0b3I6OkF1dGhlbnRpY2F0b3JQcmVzZW50ZXJDb29yZGluYXRvcik6CisgICAgICAgICogVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29u
dGVudFZpZXcgc3VwcG9ydGVkUGFzdGVib2FyZFR5cGVzRm9yQ3VycmVudFNlbGVjdGlvbl0pOgor
ICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGFzc2lnbkxlZ2FjeURhdGFGb3JDb250ZXh0TWVudUlu
dGVyYWN0aW9uXSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS01vdXNlRGV2aWNlT2JzZXJ2
ZXIubW06CisgICAgICAgICgrW1dLTW91c2VEZXZpY2VPYnNlcnZlciBzaGFyZWRJbnN0YW5jZV0p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tTdHlsdXNEZXZpY2VPYnNlcnZlci5tbToKKyAg
ICAgICAgKCtbV0tTdHlsdXNEZXZpY2VPYnNlcnZlciBzaGFyZWRJbnN0YW5jZV0pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9tYWMvV0tUZXh0SW5wdXRXaW5kb3dDb250cm9sbGVyLm1tOgorICAgICAg
ICAoK1tXS1RleHRJbnB1dFdpbmRvd0NvbnRyb2xsZXIgc2hhcmVkVGV4dElucHV0V2luZG93Q29u
dHJvbGxlcl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViQ29sb3JQaWNrZXJNYWMubW06
CisgICAgICAgICgrW1dLUG9wb3ZlckNvbG9yV2VsbCBfY29sb3JQb3BvdmVyQ3JlYXRlSWZOZWNl
c3Nhcnk6XSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25z
RHJvcGRvd25NYWMubW06CisgICAgICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9uV2luZG93IGlu
aXRXaXRoQ29udGVudFJlY3Q6c3R5bGVNYXNrOmJhY2tpbmc6ZGVmZXI6XSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NSW50ZXJuYWxzLm1tOgorICAg
ICAgICAoV2ViS2l0Ojppbml0V2l0aEltcGwpOgorICAgICAgICAoV2ViS2l0Ojp0b1dLRE9NVHlw
ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9tYWMvSW5qZWN0ZWRCdW5k
bGVNYWMubW06CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlOjppbml0aWFsaXplKToK
KwogMjAyMS0wMi0yMiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+
CiAKICAgICAgICAgW1NPVVBdIEFkZCBzdXBwb3J0IGZvciBsaWJzb3VwMwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9p
b3MvQ2hhbmdlTG9nCmluZGV4IDA3MzRjMzVmYTUwNzY1NjY4M2VhY2E0NTk3NjZlNmI4OTliZDRh
ZGUuLmNhZDE4OWQwMWVjMjc0MTNmODc1MmY4MDY1Yzk1YTIyZDVjYzM2YjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L2lvcy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0wMi0yMiAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBhZG9wdE5TKCkgYXMgc29vbiBh
cyB3ZSBbW09iamNDbGFzcyBhbGxvY10gaW5pdF0gdG8gYXZvaWQgbGVha3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjIzNworCisgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogTWlzYy9XZWJHZW9sb2NhdGlvblBy
b3ZpZGVySU9TLm1tOgorICAgICAgICAoK1tXZWJHZW9sb2NhdGlvblByb3ZpZGVySU9TIHNoYXJl
ZEdlb2xvY2F0aW9uUHJvdmlkZXJdKToKKwogMjAyMS0wMi0xNyAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJlZHVjZSBleHBsaWNpdCB1c2FnZSBvZiBbb2JqQyBh
dXRvcmVsZWFzZV0gaW4gV2ViS2l0IGV2ZW4gZnVydGhlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nCmluZGV4IGRjYzU0ZTVkODMyNDQ1NjNjMjg3MDY5Y2EzZTQyZTA1MmNmMTUyODAuLjFkNGRk
ZDQ1ZDA1N2Q4NzdjNDViOWZhNTQ2MzdkYzBlOTMwZTgzYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw3MCBAQAorMjAyMS0wMi0yMiAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBhZG9wdE5TKCkgYXMgc29vbiBhcyB3ZSBbW09i
amNDbGFzcyBhbGxvY10gaW5pdF0gdG8gYXZvaWQgbGVha3MKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjIzNworCisgICAgICAgIFJldmlld2VkIGJ5
IERhcmluIEFkbGVyLgorCisgICAgICAgICogRGVmYXVsdERlbGVnYXRlcy9XZWJEZWZhdWx0VUlE
ZWxlZ2F0ZS5tbToKKyAgICAgICAgKCtbV2ViRGVmYXVsdFVJRGVsZWdhdGUgc2hhcmVkVUlEZWxl
Z2F0ZV0pOgorICAgICAgICAqIEhpc3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW06CisgICAgICAgICgt
W1dlYkhpc3RvcnlJdGVtIGNvcHlXaXRoWm9uZTpdKToKKyAgICAgICAgKiBNaXNjL1dlYkljb25E
YXRhYmFzZS5tbToKKyAgICAgICAgKCtbV2ViSWNvbkRhdGFiYXNlIHNoYXJlZEljb25EYXRhYmFz
ZV0pOgorICAgICAgICAqIE1pc2MvV2ViTlNQYXN0ZWJvYXJkRXh0cmFzLm1tOgorICAgICAgICAo
X3dyaXRhYmxlVHlwZXNGb3JJbWFnZVdpdGhvdXRBcmNoaXZlKToKKyAgICAgICAgKiBQbHVnaW5z
L1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcubW06CisgICAgICAgICgtW1dlYkJhc2VOZXRzY2Fw
ZVBsdWdpblZpZXcgY2FjaGVTbmFwc2hvdF0pOgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2Nh
cGVQbHVnaW5TdHJlYW0ubW06CisgICAgICAgIChXZWJOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGVs
aXZlckRhdGEpOgorICAgICAgICAqIFBsdWdpbnMvV2ViUGx1Z2luQ29udHJvbGxlci5tbToKKyAg
ICAgICAgKHBsdWdpblZpZXdzKToKKyAgICAgICAgKC1bV2ViUGx1Z2luQ29udHJvbGxlciBwbHVn
SW5WaWV3V2l0aEFyZ3VtZW50czpmcm9tUGx1Z2luUGFja2FnZTpdKToKKyAgICAgICAgKCtbV2Vi
UGx1Z2luQ29udHJvbGxlciBhZGRQbHVnSW5WaWV3Ol0pOgorICAgICAgICAoK1tXZWJQbHVnaW5D
b250cm9sbGVyIGlzUGx1Z0luVmlldzpdKToKKyAgICAgICAgKC1bV2ViUGx1Z2luQ29udHJvbGxl
ciBkZXN0cm95UGx1Z2luOl0pOgorICAgICAgICAoLVtXZWJQbHVnaW5Db250cm9sbGVyIGRlc3Ry
b3lBbGxQbHVnaW5zXSk6CisgICAgICAgICogUGx1Z2lucy9XZWJQbHVnaW5EYXRhYmFzZS5tbToK
KyAgICAgICAgKHNoYXJlZERhdGFiYXNlKToKKyAgICAgICAgKCtbV2ViUGx1Z2luRGF0YWJhc2Ug
c2hhcmVkRGF0YWJhc2VdKToKKyAgICAgICAgKCtbV2ViUGx1Z2luRGF0YWJhc2Ugc2hhcmVkRGF0
YWJhc2VJZkV4aXN0c10pOgorICAgICAgICAoK1tXZWJQbHVnaW5EYXRhYmFzZSBjbG9zZVNoYXJl
ZERhdGFiYXNlXSk6CisgICAgICAgICgtW1dlYlBsdWdpbkRhdGFiYXNlIHJlZnJlc2hdKToKKyAg
ICAgICAgKC1bV2ViUGx1Z2luRGF0YWJhc2UgX3BsdWdJblBhdGhzXSk6CisgICAgICAgICgtW1dl
YlBsdWdpbkRhdGFiYXNlIF9yZW1vdmVQbHVnaW46XSk6CisgICAgICAgICogU2NyaXB0cy9QcmVm
ZXJlbmNlc1RlbXBsYXRlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbEZlYXR1cmVzLm1tLmVy
YjoKKyAgICAgICAgKiBTY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2Vz
SW50ZXJuYWxGZWF0dXJlcy5tbS5lcmI6CisgICAgICAgICogV2ViVmlldy9XZWJEYXRhU291cmNl
Lm1tOgorICAgICAgICAoK1tXZWJEYXRhU291cmNlIF9yZXBUeXBlc0FsbG93SW1hZ2VUeXBlT21p
c3Npb246XSk6CisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZVZpZXcubW06CisgICAgICAgICgr
W1dlYkZyYW1lVmlldyBfdmlld1R5cGVzQWxsb3dJbWFnZVR5cGVPbWlzc2lvbjpdKToKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYkZ1bGxTY3JlZW5Db250cm9sbGVyLm1tOgorICAgICAgICAoY3JlYXRl
QmFja2dyb3VuZEZ1bGxzY3JlZW5XaW5kb3cpOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFJl
cHJlc2VudGF0aW9uLm1tOgorICAgICAgICAocmVnRXhwRm9yTGFiZWxzKToKKyAgICAgICAgKiBX
ZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoK1tXZWJIVE1MVmlldyBfaW5zZXJ0YWJs
ZVBhc3RlYm9hcmRUeXBlc10pOgorICAgICAgICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW06
CisgICAgICAgIChzdGFuZGFyZFByZWZlcmVuY2VzKToKKyAgICAgICAgKHdlYlByZWZlcmVuY2Vz
SW5zdGFuY2VzKToKKyAgICAgICAgKCtbV2ViUHJlZmVyZW5jZXMgc3RhbmRhcmRQcmVmZXJlbmNl
c10pOgorICAgICAgICAoK1tXZWJQcmVmZXJlbmNlcyBfZ2V0SW5zdGFuY2VGb3JJZGVudGlmaWVy
Ol0pOgorICAgICAgICAoK1tXZWJQcmVmZXJlbmNlcyBfc2V0SW5zdGFuY2U6Zm9ySWRlbnRpZmll
cjpdKToKKyAgICAgICAgKCtbV2ViUHJlZmVyZW5jZXMgX2NoZWNrTGFzdFJlZmVyZW5jZUZvcklk
ZW50aWZpZXI6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoc2No
ZW1lc1dpdGhSZXByZXNlbnRhdGlvbnNTZXQpOgorICAgICAgICAob3V0bG9va1F1aXJrc1VzZXJT
Y3JpcHRDb250ZW50cyk6CisgICAgICAgICgtW1dlYlZpZXcgX2luamVjdE91dGxvb2tRdWlya3NT
Y3JpcHRdKToKKyAgICAgICAgKGxhQmFucXVlUG9zdGFsZVF1aXJrc1NjcmlwdCk6CisgICAgICAg
ICgtW1dlYlZpZXcgX2luamVjdExhQmFucXVlUG9zdGFsZVF1aXJrc10pOgorICAgICAgICAoK1tX
ZWJWaWV3IF9yZWdpc3RlclZpZXdDbGFzczpyZXByZXNlbnRhdGlvbkNsYXNzOmZvclVSTFNjaGVt
ZTpdKToKKyAgICAgICAgKCtbV2ViVmlldyBfcmVwcmVzZW50YXRpb25FeGlzdHNGb3JVUkxTY2hl
bWU6XSk6CisgICAgICAgICgrW1dlYlZpZXcgYXV0b21hdGljYWxseU5vdGlmaWVzT2JzZXJ2ZXJz
Rm9yS2V5Ol0pOgorICAgICAgICAoLVtXZWJWaWV3IF9kZWNsYXJlZEtleXNdKToKKyAgICAgICAg
KC1bV2ViVmlldyBhZGRQbHVnaW5JbnN0YW5jZVZpZXc6XSk6CisgICAgICAgICgtW1dlYlZpZXcg
X2VudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQ6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3
RGF0YS5oOgorCiAyMDIxLTAyLTE5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmV2aWV3IHJlbWFpbmluZyB1c2FnZSBvZiBhdXRvcmVsZWFzZSB0byBtYWtlIHN1
cmUgaXQgaXMgbmVjZXNzYXJ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1t
CmluZGV4IDFmN2NjZTYwNzg3M2Y0OGNkYzdmY2RkNjQyNGRlNWQyZGJhZTM2MDIuLjgxYTg5Y2U0
YTIyYjZkZmUzNWYzMjE0MTIwMjViZTE2ZGZkZTBmNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyTWFjLm1tCkBAIC0xMjk4LDMyICsxMjk4LDcgQEAgQUxMT1dfREVQUkVDQVRF
RF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzQXR0YWNobWVu
dCgpKQogICAgICAgICByZXR1cm4gW1tzZWxmIGF0dGFjaG1lbnRWaWV3XSBhY2Nlc3NpYmlsaXR5
QXR0cmlidXRlTmFtZXNdOwogCi0gICAgc3RhdGljIE5TQXJyYXkgKmFuY2hvckF0dHJzOwotICAg
IHN0YXRpYyBOU0FycmF5ICp3ZWJBcmVhQXR0cnM7Ci0gICAgc3RhdGljIE5TQXJyYXkgKnRleHRB
dHRyczsKLSAgICBzdGF0aWMgTlNBcnJheSAqbGlzdEF0dHJzOwotICAgIHN0YXRpYyBOU0FycmF5
ICpsaXN0Qm94QXR0cnM7Ci0gICAgc3RhdGljIE5TQXJyYXkgKnJhbmdlQXR0cnM7Ci0gICAgc3Rh
dGljIE5TQXJyYXkgKm1lbnVBdHRyczsKLSAgICBzdGF0aWMgTlNBcnJheSAqbWVudUJhckF0dHJz
OwotICAgIHN0YXRpYyBOU0FycmF5ICptZW51SXRlbUF0dHJzOwotICAgIHN0YXRpYyBOU0FycmF5
ICpjb250cm9sQXR0cnM7Ci0gICAgc3RhdGljIE5TQXJyYXkgKnRhYmxlQXR0cnM7Ci0gICAgc3Rh
dGljIE5TQXJyYXkgKnRhYmxlUm93QXR0cnM7Ci0gICAgc3RhdGljIE5TQXJyYXkgKnRhYmxlQ29s
QXR0cnM7Ci0gICAgc3RhdGljIE5TQXJyYXkgKnRhYmxlQ2VsbEF0dHJzOwotICAgIHN0YXRpYyBO
U0FycmF5ICpncm91cEF0dHJzOwotICAgIHN0YXRpYyBOU0FycmF5ICppbnB1dEltYWdlQXR0cnM7
Ci0gICAgc3RhdGljIE5TQXJyYXkgKnBhc3N3b3JkRmllbGRBdHRyczsKLSAgICBzdGF0aWMgTlNB
cnJheSAqdGFiTGlzdEF0dHJzOwotICAgIHN0YXRpYyBOU0FycmF5ICpjb21ib0JveEF0dHJzOwot
ICAgIHN0YXRpYyBOU0FycmF5ICpvdXRsaW5lQXR0cnM7Ci0gICAgc3RhdGljIE5TQXJyYXkgKm91
dGxpbmVSb3dBdHRyczsKLSAgICBzdGF0aWMgTlNBcnJheSAqYnV0dG9uQXR0cnM7Ci0gICAgc3Rh
dGljIE5TQXJyYXkgKnNjcm9sbFZpZXdBdHRyczsKLSAgICBzdGF0aWMgTlNBcnJheSAqaW5jcmVt
ZW50b3JBdHRyczsKLSAgICBzdGF0aWMgTlNBcnJheSAqaW1hZ2VBdHRyczsKLSAgICBzdGF0aWMg
TlNBcnJheSAqYXR0cmlidXRlcyA9IHJldGFpblB0cihAWworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxSZXRhaW5QdHI8TlNBcnJheT4+IGF0dHJpYnV0ZXMgPSBAWwogICAgICAgICBOU0FjY2Vz
c2liaWxpdHlSb2xlQXR0cmlidXRlLAogICAgICAgICBOU0FjY2Vzc2liaWxpdHlTdWJyb2xlQXR0
cmlidXRlLAogICAgICAgICBOU0FjY2Vzc2liaWxpdHlSb2xlRGVzY3JpcHRpb25BdHRyaWJ1dGUs
CkBAIC0xMzUyLDggKzEzMjcsMjQgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNf
RU5ECiAgICAgICAgIE5TQWNjZXNzaWJpbGl0eUZvY3VzYWJsZUFuY2VzdG9yQXR0cmlidXRlLAog
ICAgICAgICBOU0FjY2Vzc2liaWxpdHlFZGl0YWJsZUFuY2VzdG9yQXR0cmlidXRlLAogICAgICAg
ICBOU0FjY2Vzc2liaWxpdHlIaWdoZXN0RWRpdGFibGVBbmNlc3RvckF0dHJpYnV0ZSwKLSAgICBd
KS5sZWFrUmVmKCk7Ci0gICAgc3RhdGljIE5TQXJyYXkgKmNvbW1vbk1lbnVBdHRycyA9IHJldGFp
blB0cihAWworICAgIF07CisgICAgc3RhdGljIGF1dG8gaW5jcmVtZW50b3JBdHRycyA9IG1ha2VO
ZXZlckRlc3Ryb3llZChbXSB7CisgICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05T
TXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXMuZ2V0KCkuZ2V0KCld
KTsKKyAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5SW5jcmVtZW50
QnV0dG9uQXR0cmlidXRlXTsKKyAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3Np
YmlsaXR5RGVjcmVtZW50QnV0dG9uQXR0cmlidXRlXTsKKyAgICAgICAgW3RlbXBBcnJheSBhZGRP
YmplY3Q6TlNBY2Nlc3NpYmlsaXR5VmFsdWVEZXNjcmlwdGlvbkF0dHJpYnV0ZV07CisgICAgICAg
IFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU1pblZhbHVlQXR0cmlidXRlXTsK
KyAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5TWF4VmFsdWVBdHRy
aWJ1dGVdOworICAgICAgICByZXR1cm4gdGVtcEFycmF5OworICAgIH0oKSk7CisgICAgc3RhdGlj
IGF1dG8gYW5jaG9yQXR0cnMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgICAgICBhdXRv
IHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJh
eTphdHRyaWJ1dGVzLmdldCgpLmdldCgpXSk7CisgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0
Ok5TQWNjZXNzaWJpbGl0eVVSTEF0dHJpYnV0ZV07CisgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2Jq
ZWN0Ok5TQWNjZXNzaWJpbGl0eUFjY2Vzc0tleUF0dHJpYnV0ZV07CisgICAgICAgIFt0ZW1wQXJy
YXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUxpbmtSZWxhdGlvbnNoaXBUeXBlQXR0cmlidXRl
XTsKKyAgICAgICAgcmV0dXJuIHRlbXBBcnJheTsKKyAgICB9KCkpOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNBcnJheT4+IGNvbW1vbk1lbnVBdHRycyA9IEBbCiAgICAg
ICAgIE5TQWNjZXNzaWJpbGl0eVJvbGVBdHRyaWJ1dGUsCiAgICAgICAgIE5TQWNjZXNzaWJpbGl0
eVJvbGVEZXNjcmlwdGlvbkF0dHJpYnV0ZSwKICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5BdHRyaWJ1dGUsCkBAIC0xMzYxLDE3ICsxMzUyLDkgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBM
RU1FTlRBVElPTlNfRU5ECiAgICAgICAgIE5TQWNjZXNzaWJpbGl0eUVuYWJsZWRBdHRyaWJ1dGUs
CiAgICAgICAgIE5TQWNjZXNzaWJpbGl0eVBvc2l0aW9uQXR0cmlidXRlLAogICAgICAgICBOU0Fj
Y2Vzc2liaWxpdHlTaXplQXR0cmlidXRlLAotICAgIF0pLmxlYWtSZWYoKTsKLQotICAgIGlmIChh
bmNob3JBdHRycyA9PSBuaWwpIHsKLSAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtb
TlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlc10pOwotICAgICAg
ICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlVUkxBdHRyaWJ1dGVdOwotICAg
ICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlBY2Nlc3NLZXlBdHRyaWJ1
dGVdOwotICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlMaW5rUmVs
YXRpb25zaGlwVHlwZUF0dHJpYnV0ZV07Ci0gICAgICAgIGFuY2hvckF0dHJzID0gdGVtcEFycmF5
LmxlYWtSZWYoKTsKLSAgICB9Ci0gICAgaWYgKHdlYkFyZWFBdHRycyA9PSBuaWwpIHsKLSAgICAg
ICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRX
aXRoQXJyYXk6YXR0cmlidXRlc10pOworICAgIF07CisgICAgc3RhdGljIGF1dG8gd2ViQXJlYUF0
dHJzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBh
ZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlcy5n
ZXQoKS5nZXQoKV0pOwogICAgICAgICAvLyBXZWJBcmVhcyBzaG91bGQgbm90IGV4cG9zZSBBWFN1
YnJvbGUuCiAgICAgICAgIFt0ZW1wQXJyYXkgcmVtb3ZlT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVN1
YnJvbGVBdHRyaWJ1dGVdOwogICAgICAgICAvLyBXZWJBcmVhcyBzaG91bGQgbm90IGV4cG9zZSBh
bmNlc3RvciBhdHRyaWJ1dGVzCkBAIC0xMzg2LDEwICsxMzY5LDEwIEBAIEFMTE9XX0RFUFJFQ0FU
RURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0Fj
Y2Vzc2liaWxpdHlDYXJldEJyb3dzaW5nRW5hYmxlZEF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1w
QXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVByZXZlbnRLZXlib2FyZERPTUV2ZW50RGlz
cGF0Y2hBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2li
aWxpdHlXZWJTZXNzaW9uSURBdHRyaWJ1dGVdOwotICAgICAgICB3ZWJBcmVhQXR0cnMgPSB0ZW1w
QXJyYXkubGVha1JlZigpOwotICAgIH0KLSAgICBpZiAodGV4dEF0dHJzID09IG5pbCkgewotICAg
ICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5p
dFdpdGhBcnJheTphdHRyaWJ1dGVzXSk7CisgICAgICAgIHJldHVybiB0ZW1wQXJyYXk7CisgICAg
fSgpKTsKKyAgICBzdGF0aWMgYXV0byB0ZXh0QXR0cnMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10g
eworICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxv
Y10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzLmdldCgpLmdldCgpXSk7CiAgICAgICAgIFt0ZW1w
QXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU51bWJlck9mQ2hhcmFjdGVyc0F0dHJpYnV0
ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVNlbGVjdGVk
VGV4dEF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJp
bGl0eVNlbGVjdGVkVGV4dFJhbmdlQXR0cmlidXRlXTsKQEAgLTE0MDEsNTEgKzEzODQsNTEgQEAg
QUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIFt0ZW1wQXJyYXkg
YWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUludmFsaWRBdHRyaWJ1dGVdOwogICAgICAgICBbdGVt
cEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlQbGFjZWhvbGRlclZhbHVlQXR0cmlidXRl
XTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VmFsdWVBdXRv
ZmlsbGVkQXR0cmlidXRlXTsKLSAgICAgICAgdGV4dEF0dHJzID0gdGVtcEFycmF5LmxlYWtSZWYo
KTsKLSAgICB9Ci0gICAgaWYgKGxpc3RBdHRycyA9PSBuaWwpIHsKLSAgICAgICAgYXV0byB0ZW1w
QXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0
cmlidXRlc10pOworICAgICAgICByZXR1cm4gdGVtcEFycmF5OworICAgIH0oKSk7CisgICAgc3Rh
dGljIGF1dG8gbGlzdEF0dHJzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICAgICAgYXV0
byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJy
YXk6YXR0cmlidXRlcy5nZXQoKS5nZXQoKV0pOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVj
dDpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZENoaWxkcmVuQXR0cmlidXRlXTsKICAgICAgICAgW3Rl
bXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VmlzaWJsZUNoaWxkcmVuQXR0cmlidXRl
XTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5T3JpZW50YXRp
b25BdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxp
dHlUaXRsZVVJRWxlbWVudEF0dHJpYnV0ZV07Ci0gICAgICAgIGxpc3RBdHRycyA9IHRlbXBBcnJh
eS5sZWFrUmVmKCk7Ci0gICAgfQotICAgIGlmIChsaXN0Qm94QXR0cnMgPT0gbmlsKSB7Ci0gICAg
ICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0
V2l0aEFycmF5Omxpc3RBdHRyc10pOworICAgICAgICByZXR1cm4gdGVtcEFycmF5OworICAgIH0o
KSk7CisgICAgc3RhdGljIGF1dG8gbGlzdEJveEF0dHJzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtd
IHsKKyAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxs
b2NdIGluaXRXaXRoQXJyYXk6bGlzdEF0dHJzLmdldCgpLmdldCgpXSk7CiAgICAgICAgIFt0ZW1w
QXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUFjY2Vzc0tleUF0dHJpYnV0ZV07CiAgICAg
ICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVJlcXVpcmVkQXR0cmlidXRl
XTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5SW52YWxpZEF0
dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU9y
aWVudGF0aW9uQXR0cmlidXRlXTsKLSAgICAgICAgbGlzdEJveEF0dHJzID0gdGVtcEFycmF5Lmxl
YWtSZWYoKTsKLSAgICB9Ci0gICAgaWYgKHJhbmdlQXR0cnMgPT0gbmlsKSB7Ci0gICAgICAgIGF1
dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFy
cmF5OmF0dHJpYnV0ZXNdKTsKKyAgICAgICAgcmV0dXJuIHRlbXBBcnJheTsKKyAgICB9KCkpOwor
ICAgIHN0YXRpYyBhdXRvIHJhbmdlQXR0cnMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAg
ICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5p
dFdpdGhBcnJheTphdHRyaWJ1dGVzLmdldCgpLmdldCgpXSk7CiAgICAgICAgIFt0ZW1wQXJyYXkg
YWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU1pblZhbHVlQXR0cmlidXRlXTsKICAgICAgICAgW3Rl
bXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5TWF4VmFsdWVBdHRyaWJ1dGVdOwogICAg
ICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlPcmllbnRhdGlvbkF0dHJp
YnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVZhbHVl
RGVzY3JpcHRpb25BdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0Fj
Y2Vzc2liaWxpdHlUaXRsZVVJRWxlbWVudEF0dHJpYnV0ZV07Ci0gICAgICAgIHJhbmdlQXR0cnMg
PSB0ZW1wQXJyYXkubGVha1JlZigpOwotICAgIH0KLSAgICBpZiAobWVudUJhckF0dHJzID09IG5p
bCkgewotICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBh
bGxvY10gaW5pdFdpdGhBcnJheTpjb21tb25NZW51QXR0cnNdKTsKKyAgICAgICAgcmV0dXJuIHRl
bXBBcnJheTsKKyAgICB9KCkpOworICAgIHN0YXRpYyBhdXRvIG1lbnVCYXJBdHRycyA9IG1ha2VO
ZXZlckRlc3Ryb3llZChbXSB7CisgICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05T
TXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmNvbW1vbk1lbnVBdHRycy5nZXQoKS5n
ZXQoKV0pOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlTZWxl
Y3RlZENoaWxkcmVuQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNB
Y2Nlc3NpYmlsaXR5VmlzaWJsZUNoaWxkcmVuQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJh
eSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VGl0bGVVSUVsZW1lbnRBdHRyaWJ1dGVdOwogICAg
ICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlPcmllbnRhdGlvbkF0dHJp
YnV0ZV07Ci0gICAgICAgIG1lbnVCYXJBdHRycyA9IHRlbXBBcnJheS5sZWFrUmVmKCk7Ci0gICAg
fQotICAgIGlmIChtZW51QXR0cnMgPT0gbmlsKSB7Ci0gICAgICAgIGF1dG8gdGVtcEFycmF5ID0g
YWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmNvbW1vbk1lbnVB
dHRyc10pOworICAgICAgICByZXR1cm4gdGVtcEFycmF5OworICAgIH0oKSk7CisgICAgc3RhdGlj
IGF1dG8gbWVudUF0dHJzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICAgICAgYXV0byB0
ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6
Y29tbW9uTWVudUF0dHJzLmdldCgpLmdldCgpXSk7CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2Jq
ZWN0Ok5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkQ2hpbGRyZW5BdHRyaWJ1dGVdOwogICAgICAgICBb
dGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlWaXNpYmxlQ2hpbGRyZW5BdHRyaWJ1
dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlUaXRsZVVJ
RWxlbWVudEF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNz
aWJpbGl0eU9yaWVudGF0aW9uQXR0cmlidXRlXTsKLSAgICAgICAgbWVudUF0dHJzID0gdGVtcEFy
cmF5LmxlYWtSZWYoKTsKLSAgICB9Ci0gICAgaWYgKG1lbnVJdGVtQXR0cnMgPT0gbmlsKSB7Ci0g
ICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBp
bml0V2l0aEFycmF5OmNvbW1vbk1lbnVBdHRyc10pOworICAgICAgICByZXR1cm4gdGVtcEFycmF5
OworICAgIH0oKSk7CisgICAgc3RhdGljIGF1dG8gbWVudUl0ZW1BdHRycyA9IG1ha2VOZXZlckRl
c3Ryb3llZChbXSB7CisgICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJs
ZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmNvbW1vbk1lbnVBdHRycy5nZXQoKS5nZXQoKV0p
OwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlUaXRsZUF0dHJp
YnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eURlc2Ny
aXB0aW9uQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3Np
YmlsaXR5SGVscEF0dHJpYnV0ZV07CkBAIC0xNDU5LDkgKzE0NDIsOSBAQCBBTExPV19ERVBSRUNB
VEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6KE5T
U3RyaW5nKilrQVhNZW51SXRlbVByaW1hcnlVSUVsZW1lbnRBdHRyaWJ1dGVdOwogICAgICAgICBb
dGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlTZXJ2ZXNBc1RpdGxlRm9yVUlFbGVt
ZW50c0F0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJp
bGl0eUZvY3VzZWRBdHRyaWJ1dGVdOwotICAgICAgICBtZW51SXRlbUF0dHJzID0gdGVtcEFycmF5
LmxlYWtSZWYoKTsKLSAgICB9Ci0gICAgc3RhdGljIE5TQXJyYXkgKm1lbnVCdXR0b25BdHRycyA9
IHJldGFpblB0cihAWworICAgICAgICByZXR1cm4gdGVtcEFycmF5OworICAgIH0oKSk7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0FycmF5Pj4gbWVudUJ1dHRvbkF0dHJz
ID0gQFsKICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5Um9sZUF0dHJpYnV0ZSwKICAgICAgICAgTlNB
Y2Nlc3NpYmlsaXR5Um9sZURlc2NyaXB0aW9uQXR0cmlidXRlLAogICAgICAgICBOU0FjY2Vzc2li
aWxpdHlQYXJlbnRBdHRyaWJ1dGUsCkBAIC0xNDcyLDQwICsxNDU1LDMxIEBAIEFMTE9XX0RFUFJF
Q0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICBOU0FjY2Vzc2liaWxpdHlGb2N1c2Vk
QXR0cmlidXRlLAogICAgICAgICBOU0FjY2Vzc2liaWxpdHlUaXRsZUF0dHJpYnV0ZSwKICAgICAg
ICAgTlNBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5BdHRyaWJ1dGUsCi0gICAgXSkubGVha1JlZigpOwot
ICAgIGlmIChjb250cm9sQXR0cnMgPT0gbmlsKSB7Ci0gICAgICAgIGF1dG8gdGVtcEFycmF5ID0g
YWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXNd
KTsKKyAgICBdOworICAgIHN0YXRpYyBhdXRvIGNvbnRyb2xBdHRycyA9IG1ha2VOZXZlckRlc3Ry
b3llZChbXSB7CisgICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFy
cmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXMuZ2V0KCkuZ2V0KCldKTsKICAgICAg
ICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VGl0bGVVSUVsZW1lbnRBdHRy
aWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlBY2Nl
c3NLZXlBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2li
aWxpdHlSZXF1aXJlZEF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5T
QWNjZXNzaWJpbGl0eUludmFsaWRBdHRyaWJ1dGVdOwotICAgICAgICBjb250cm9sQXR0cnMgPSB0
ZW1wQXJyYXkubGVha1JlZigpOwotICAgIH0KLSAgICBpZiAoaW5jcmVtZW50b3JBdHRycyA9PSBu
aWwpIHsKLSAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkg
YWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlc10pOwotICAgICAgICBbdGVtcEFycmF5IGFk
ZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlJbmNyZW1lbnRCdXR0b25BdHRyaWJ1dGVdOwotICAgICAg
ICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlEZWNyZW1lbnRCdXR0b25BdHRy
aWJ1dGVdOwotICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlWYWx1
ZURlc2NyaXB0aW9uQXR0cmlidXRlXTsKLSAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNB
Y2Nlc3NpYmlsaXR5TWluVmFsdWVBdHRyaWJ1dGVdOwotICAgICAgICBbdGVtcEFycmF5IGFkZE9i
amVjdDpOU0FjY2Vzc2liaWxpdHlNYXhWYWx1ZUF0dHJpYnV0ZV07Ci0gICAgICAgIGluY3JlbWVu
dG9yQXR0cnMgPSB0ZW1wQXJyYXkubGVha1JlZigpOwotICAgIH0KLSAgICBpZiAoYnV0dG9uQXR0
cnMgPT0gbmlsKSB7Ci0gICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJs
ZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXNdKTsKKyAgICAgICAgcmV0dXJu
IHRlbXBBcnJheTsKKyAgICB9KCkpOworICAgIHN0YXRpYyBhdXRvIGJ1dHRvbkF0dHJzID0gbWFr
ZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtb
TlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlcy5nZXQoKS5nZXQo
KV0pOwogICAgICAgICAvLyBCdXR0b25zIHNob3VsZCBub3QgZXhwb3NlIEFYVmFsdWUuCiAgICAg
ICAgIFt0ZW1wQXJyYXkgcmVtb3ZlT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVZhbHVlQXR0cmlidXRl
XTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VGl0bGVVSUVs
ZW1lbnRBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2li
aWxpdHlBY2Nlc3NLZXlBdHRyaWJ1dGVdOwotICAgICAgICBidXR0b25BdHRycyA9IHRlbXBBcnJh
eS5sZWFrUmVmKCk7Ci0gICAgfQotICAgIGlmIChjb21ib0JveEF0dHJzID09IG5pbCkgewotICAg
ICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5p
dFdpdGhBcnJheTpjb250cm9sQXR0cnNdKTsKKyAgICAgICAgcmV0dXJuIHRlbXBBcnJheTsKKyAg
ICB9KCkpOworICAgIHN0YXRpYyBhdXRvIGNvbWJvQm94QXR0cnMgPSBtYWtlTmV2ZXJEZXN0cm95
ZWQoW10geworICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJh
eSBhbGxvY10gaW5pdFdpdGhBcnJheTpjb250cm9sQXR0cnMuZ2V0KCkuZ2V0KCldKTsKICAgICAg
ICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5RXhwYW5kZWRBdHRyaWJ1dGVd
OwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlPcmllbnRhdGlv
bkF0dHJpYnV0ZV07Ci0gICAgICAgIGNvbWJvQm94QXR0cnMgPSB0ZW1wQXJyYXkubGVha1JlZigp
OwotICAgIH0KLSAgICBpZiAodGFibGVBdHRycyA9PSBuaWwpIHsKLSAgICAgICAgYXV0byB0ZW1w
QXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0
cmlidXRlc10pOworICAgICAgICByZXR1cm4gdGVtcEFycmF5OworICAgIH0oKSk7CisgICAgc3Rh
dGljIGF1dG8gdGFibGVBdHRycyA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgICAgIGF1
dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFy
cmF5OmF0dHJpYnV0ZXMuZ2V0KCkuZ2V0KCldKTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmpl
Y3Q6TlNBY2Nlc3NpYmlsaXR5Um93c0F0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRk
T2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVZpc2libGVSb3dzQXR0cmlidXRlXTsKICAgICAgICAgW3Rl
bXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5Q29sdW1uc0F0dHJpYnV0ZV07CkBAIC0x
NTE4LDE1MiArMTQ5MiwxNTIgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5E
CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVJvd0NvdW50QXR0
cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5QVJJ
QUNvbHVtbkNvdW50QXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNB
Y2Nlc3NpYmlsaXR5QVJJQVJvd0NvdW50QXR0cmlidXRlXTsKLSAgICAgICAgdGFibGVBdHRycyA9
IHRlbXBBcnJheS5sZWFrUmVmKCk7Ci0gICAgfQotICAgIGlmICh0YWJsZVJvd0F0dHJzID09IG5p
bCkgewotICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBh
bGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzXSk7CisgICAgICAgIHJldHVybiB0ZW1wQXJy
YXk7CisgICAgfSgpKTsKKyAgICBzdGF0aWMgYXV0byB0YWJsZVJvd0F0dHJzID0gbWFrZU5ldmVy
RGVzdHJveWVkKFtdIHsKKyAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRh
YmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlcy5nZXQoKS5nZXQoKV0pOwog
ICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlJbmRleEF0dHJpYnV0
ZV07Ci0gICAgICAgIHRhYmxlUm93QXR0cnMgPSB0ZW1wQXJyYXkubGVha1JlZigpOwotICAgIH0K
LSAgICBpZiAodGFibGVDb2xBdHRycyA9PSBuaWwpIHsKLSAgICAgICAgYXV0byB0ZW1wQXJyYXkg
PSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRl
c10pOworICAgICAgICByZXR1cm4gdGVtcEFycmF5OworICAgIH0oKSk7CisgICAgc3RhdGljIGF1
dG8gdGFibGVDb2xBdHRycyA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgICAgIGF1dG8g
dGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5
OmF0dHJpYnV0ZXMuZ2V0KCkuZ2V0KCldKTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6
TlNBY2Nlc3NpYmlsaXR5SW5kZXhBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9i
amVjdDpOU0FjY2Vzc2liaWxpdHlIZWFkZXJBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5
IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlSb3dzQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBB
cnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VmlzaWJsZVJvd3NBdHRyaWJ1dGVdOwotICAg
ICAgICB0YWJsZUNvbEF0dHJzID0gdGVtcEFycmF5LmxlYWtSZWYoKTsKLSAgICB9Ci0gICAgaWYg
KHRhYmxlQ2VsbEF0dHJzID09IG5pbCkgewotICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0
TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzXSk7Cisg
ICAgICAgIHJldHVybiB0ZW1wQXJyYXk7CisgICAgfSgpKTsKKyAgICBzdGF0aWMgYXV0byB0YWJs
ZUNlbGxBdHRycyA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgICAgIGF1dG8gdGVtcEFy
cmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJp
YnV0ZXMuZ2V0KCkuZ2V0KCldKTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nl
c3NpYmlsaXR5Um93SW5kZXhSYW5nZUF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRk
T2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUNvbHVtbkluZGV4UmFuZ2VBdHRyaWJ1dGVdOwogICAgICAg
ICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlDb2x1bW5IZWFkZXJVSUVsZW1l
bnRzQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmls
aXR5Um93SGVhZGVyVUlFbGVtZW50c0F0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRk
T2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUFSSUFDb2x1bW5JbmRleEF0dHJpYnV0ZV07CiAgICAgICAg
IFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUFSSUFSb3dJbmRleEF0dHJpYnV0
ZV07Ci0gICAgICAgIHRhYmxlQ2VsbEF0dHJzID0gdGVtcEFycmF5LmxlYWtSZWYoKTsKLSAgICB9
Ci0gICAgaWYgKGdyb3VwQXR0cnMgPT0gbmlsKSB7Ci0gICAgICAgIGF1dG8gdGVtcEFycmF5ID0g
YWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXNd
KTsKKyAgICAgICAgcmV0dXJuIHRlbXBBcnJheTsKKyAgICB9KCkpOworICAgIHN0YXRpYyBhdXRv
IGdyb3VwQXR0cnMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgICAgICBhdXRvIHRlbXBB
cnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRy
aWJ1dGVzLmdldCgpLmdldCgpXSk7CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNj
ZXNzaWJpbGl0eVRpdGxlVUlFbGVtZW50QXR0cmlidXRlXTsKLSAgICAgICAgZ3JvdXBBdHRycyA9
IHRlbXBBcnJheS5sZWFrUmVmKCk7Ci0gICAgfQotICAgIGlmIChpbnB1dEltYWdlQXR0cnMgPT0g
bmlsKSB7Ci0gICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5
IGFsbG9jXSBpbml0V2l0aEFycmF5OmJ1dHRvbkF0dHJzXSk7CisgICAgICAgIHJldHVybiB0ZW1w
QXJyYXk7CisgICAgfSgpKTsKKyAgICBzdGF0aWMgYXV0byBpbnB1dEltYWdlQXR0cnMgPSBtYWtl
TmV2ZXJEZXN0cm95ZWQoW10geworICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tO
U011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTpidXR0b25BdHRycy5nZXQoKS5nZXQo
KV0pOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlVUkxBdHRy
aWJ1dGVdOwotICAgICAgICBpbnB1dEltYWdlQXR0cnMgPSB0ZW1wQXJyYXkubGVha1JlZigpOwot
ICAgIH0KLSAgICBpZiAocGFzc3dvcmRGaWVsZEF0dHJzID09IG5pbCkgewotICAgICAgICBhdXRv
IHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJh
eTphdHRyaWJ1dGVzXSk7CisgICAgICAgIHJldHVybiB0ZW1wQXJyYXk7CisgICAgfSgpKTsKKyAg
ICBzdGF0aWMgYXV0byBwYXNzd29yZEZpZWxkQXR0cnMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10g
eworICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxv
Y10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzLmdldCgpLmdldCgpXSk7CiAgICAgICAgIFt0ZW1w
QXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVRpdGxlVUlFbGVtZW50QXR0cmlidXRlXTsK
ICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5UmVxdWlyZWRBdHRy
aWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlJbnZh
bGlkQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmls
aXR5UGxhY2Vob2xkZXJWYWx1ZUF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2Jq
ZWN0Ok5TQWNjZXNzaWJpbGl0eVZhbHVlQXV0b2ZpbGxlZEF0dHJpYnV0ZV07Ci0gICAgICAgIHBh
c3N3b3JkRmllbGRBdHRycyA9IHRlbXBBcnJheS5sZWFrUmVmKCk7Ci0gICAgfQotICAgIGlmICh0
YWJMaXN0QXR0cnMgPT0gbmlsKSB7Ci0gICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhb
W05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXNdKTsKKyAgICAg
ICAgcmV0dXJuIHRlbXBBcnJheTsKKyAgICB9KCkpOworICAgIHN0YXRpYyBhdXRvIHRhYkxpc3RB
dHRycyA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgICAgIGF1dG8gdGVtcEFycmF5ID0g
YWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXMu
Z2V0KCkuZ2V0KCldKTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmls
aXR5VGFic0F0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNz
aWJpbGl0eUNvbnRlbnRzQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6
TlNBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb25BdHRyaWJ1dGVdOwotICAgICAgICB0YWJMaXN0QXR0
cnMgPSB0ZW1wQXJyYXkubGVha1JlZigpOwotICAgIH0KLSAgICBpZiAob3V0bGluZUF0dHJzID09
IG5pbCkgewotICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJh
eSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzXSk7CisgICAgICAgIHJldHVybiB0ZW1w
QXJyYXk7CisgICAgfSgpKTsKKyAgICBzdGF0aWMgYXV0byBvdXRsaW5lQXR0cnMgPSBtYWtlTmV2
ZXJEZXN0cm95ZWQoW10geworICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011
dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzLmdldCgpLmdldCgpXSk7
CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkUm93
c0F0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0
eVJvd3NBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2li
aWxpdHlDb2x1bW5zQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNB
Y2Nlc3NpYmlsaXR5T3JpZW50YXRpb25BdHRyaWJ1dGVdOwotICAgICAgICBvdXRsaW5lQXR0cnMg
PSB0ZW1wQXJyYXkubGVha1JlZigpOwotICAgIH0KLSAgICBpZiAob3V0bGluZVJvd0F0dHJzID09
IG5pbCkgewotICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJh
eSBhbGxvY10gaW5pdFdpdGhBcnJheTp0YWJsZVJvd0F0dHJzXSk7CisgICAgICAgIHJldHVybiB0
ZW1wQXJyYXk7CisgICAgfSgpKTsKKyAgICBzdGF0aWMgYXV0byBvdXRsaW5lUm93QXR0cnMgPSBt
YWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMo
W1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0YWJsZVJvd0F0dHJzLmdldCgp
LmdldCgpXSk7CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eURp
c2Nsb3NpbmdBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vz
c2liaWxpdHlEaXNjbG9zZWRCeVJvd0F0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRk
T2JqZWN0Ok5TQWNjZXNzaWJpbGl0eURpc2Nsb3N1cmVMZXZlbEF0dHJpYnV0ZV07CiAgICAgICAg
IFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eURpc2Nsb3NlZFJvd3NBdHRyaWJ1
dGVdOwogICAgICAgICBbdGVtcEFycmF5IHJlbW92ZU9iamVjdDpOU0FjY2Vzc2liaWxpdHlWYWx1
ZUF0dHJpYnV0ZV07Ci0gICAgICAgIG91dGxpbmVSb3dBdHRycyA9IHRlbXBBcnJheS5sZWFrUmVm
KCk7Ci0gICAgfQotICAgIGlmIChzY3JvbGxWaWV3QXR0cnMgPT0gbmlsKSB7Ci0gICAgICAgIGF1
dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFy
cmF5OmF0dHJpYnV0ZXNdKTsKKyAgICAgICAgcmV0dXJuIHRlbXBBcnJheTsKKyAgICB9KCkpOwor
ICAgIHN0YXRpYyBhdXRvIHNjcm9sbFZpZXdBdHRycyA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7
CisgICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9j
XSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXMuZ2V0KCkuZ2V0KCldKTsKICAgICAgICAgW3RlbXBB
cnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5Q29udGVudHNBdHRyaWJ1dGVdOwogICAgICAg
ICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlIb3Jpem9udGFsU2Nyb2xsQmFy
QXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5
VmVydGljYWxTY3JvbGxCYXJBdHRyaWJ1dGVdOwotICAgICAgICBzY3JvbGxWaWV3QXR0cnMgPSB0
ZW1wQXJyYXkubGVha1JlZigpOwotICAgIH0KLSAgICBpZiAoIWltYWdlQXR0cnMpIHsKLSAgICAg
ICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRX
aXRoQXJyYXk6YXR0cmlidXRlc10pOworICAgICAgICByZXR1cm4gdGVtcEFycmF5OworICAgIH0o
KSk7CisgICAgc3RhdGljIGF1dG8gaW1hZ2VBdHRycyA9ICBtYWtlTmV2ZXJEZXN0cm95ZWQoW10g
eworICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxv
Y10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzLmdldCgpLmdldCgpXSk7CiAgICAgICAgIFt0ZW1w
QXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUVtYmVkZGVkSW1hZ2VEZXNjcmlwdGlvbkF0
dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVVS
TEF0dHJpYnV0ZV07Ci0gICAgICAgIGltYWdlQXR0cnMgPSB0ZW1wQXJyYXkubGVha1JlZigpOwot
ICAgIH0KKyAgICAgICAgcmV0dXJuIHRlbXBBcnJheTsKKyAgICB9KCkpOwogCi0gICAgTlNBcnJh
eSAqb2JqZWN0QXR0cmlidXRlcyA9IGF0dHJpYnV0ZXM7CisgICAgTlNBcnJheSAqb2JqZWN0QXR0
cmlidXRlcyA9IGF0dHJpYnV0ZXMuZ2V0KCkuZ2V0KCk7CiAKICAgICBpZiAoYmFja2luZ09iamVj
dC0+aXNQYXNzd29yZEZpZWxkKCkpCi0gICAgICAgIG9iamVjdEF0dHJpYnV0ZXMgPSBwYXNzd29y
ZEZpZWxkQXR0cnM7CisgICAgICAgIG9iamVjdEF0dHJpYnV0ZXMgPSBwYXNzd29yZEZpZWxkQXR0
cnMuZ2V0KCkuZ2V0KCk7CiAgICAgZWxzZSBpZiAoYmFja2luZ09iamVjdC0+aXNXZWJBcmVhKCkp
Ci0gICAgICAgIG9iamVjdEF0dHJpYnV0ZXMgPSB3ZWJBcmVhQXR0cnM7CisgICAgICAgIG9iamVj
dEF0dHJpYnV0ZXMgPSB3ZWJBcmVhQXR0cnMuZ2V0KCkuZ2V0KCk7CiAgICAgZWxzZSBpZiAoYmFj
a2luZ09iamVjdC0+aXNUZXh0Q29udHJvbCgpKQotICAgICAgICBvYmplY3RBdHRyaWJ1dGVzID0g
dGV4dEF0dHJzOworICAgICAgICBvYmplY3RBdHRyaWJ1dGVzID0gdGV4dEF0dHJzLmdldCgpLmdl
dCgpOwogICAgIGVsc2UgaWYgKGJhY2tpbmdPYmplY3QtPmlzTGluaygpKQotICAgICAgICBvYmpl
Y3RBdHRyaWJ1dGVzID0gYW5jaG9yQXR0cnM7CisgICAgICAgIG9iamVjdEF0dHJpYnV0ZXMgPSBh
bmNob3JBdHRycy5nZXQoKS5nZXQoKTsKICAgICBlbHNlIGlmIChiYWNraW5nT2JqZWN0LT5pc0lt
YWdlKCkpCi0gICAgICAgIG9iamVjdEF0dHJpYnV0ZXMgPSBpbWFnZUF0dHJzOworICAgICAgICBv
YmplY3RBdHRyaWJ1dGVzID0gaW1hZ2VBdHRycy5nZXQoKS5nZXQoKTsKICAgICBlbHNlIGlmIChi
YWNraW5nT2JqZWN0LT5pc1RhYmxlKCkgJiYgYmFja2luZ09iamVjdC0+aXNFeHBvc2FibGUoKSkK
LSAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9IHRhYmxlQXR0cnM7CisgICAgICAgIG9iamVjdEF0
dHJpYnV0ZXMgPSB0YWJsZUF0dHJzLmdldCgpLmdldCgpOwogICAgIGVsc2UgaWYgKGJhY2tpbmdP
YmplY3QtPmlzVGFibGVDb2x1bW4oKSkKLSAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9IHRhYmxl
Q29sQXR0cnM7CisgICAgICAgIG9iamVjdEF0dHJpYnV0ZXMgPSB0YWJsZUNvbEF0dHJzLmdldCgp
LmdldCgpOwogICAgIGVsc2UgaWYgKGJhY2tpbmdPYmplY3QtPmlzVGFibGVDZWxsKCkpCi0gICAg
ICAgIG9iamVjdEF0dHJpYnV0ZXMgPSB0YWJsZUNlbGxBdHRyczsKKyAgICAgICAgb2JqZWN0QXR0
cmlidXRlcyA9IHRhYmxlQ2VsbEF0dHJzLmdldCgpLmdldCgpOwogICAgIGVsc2UgaWYgKGJhY2tp
bmdPYmplY3QtPmlzVGFibGVSb3coKSkgewogICAgICAgICAvLyBBbiBBUklBIHRhYmxlIHJvdyBj
YW4gYmUgY29sbGFwc2VkIGFuZCBleHBhbmRlZCwgc28gaXQgbmVlZHMgdGhlIGV4dHJhIGF0dHJp
YnV0ZXMuCiAgICAgICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc0FSSUFUcmVlR3JpZFJvdygpKQot
ICAgICAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9IG91dGxpbmVSb3dBdHRyczsKKyAgICAgICAg
ICAgIG9iamVjdEF0dHJpYnV0ZXMgPSBvdXRsaW5lUm93QXR0cnMuZ2V0KCkuZ2V0KCk7CiAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIG9iamVjdEF0dHJpYnV0ZXMgPSB0YWJsZVJvd0F0dHJzOwor
ICAgICAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9IHRhYmxlUm93QXR0cnMuZ2V0KCkuZ2V0KCk7
CiAgICAgfSBlbHNlIGlmIChiYWNraW5nT2JqZWN0LT5pc1RyZWUoKSkKLSAgICAgICAgb2JqZWN0
QXR0cmlidXRlcyA9IG91dGxpbmVBdHRyczsKKyAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9IG91
dGxpbmVBdHRycy5nZXQoKS5nZXQoKTsKICAgICBlbHNlIGlmIChiYWNraW5nT2JqZWN0LT5pc1Ry
ZWVJdGVtKCkpIHsKICAgICAgICAgaWYgKGJhY2tpbmdPYmplY3QtPnN1cHBvcnRzQ2hlY2tlZFN0
YXRlKCkpCi0gICAgICAgICAgICBvYmplY3RBdHRyaWJ1dGVzID0gW291dGxpbmVSb3dBdHRycyBh
cnJheUJ5QWRkaW5nT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVZhbHVlQXR0cmlidXRlXTsKKyAgICAg
ICAgICAgIG9iamVjdEF0dHJpYnV0ZXMgPSBbb3V0bGluZVJvd0F0dHJzLmdldCgpIGFycmF5QnlB
ZGRpbmdPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VmFsdWVBdHRyaWJ1dGVdOwogICAgICAgICBlbHNl
Ci0gICAgICAgICAgICBvYmplY3RBdHRyaWJ1dGVzID0gb3V0bGluZVJvd0F0dHJzOworICAgICAg
ICAgICAgb2JqZWN0QXR0cmlidXRlcyA9IG91dGxpbmVSb3dBdHRycy5nZXQoKS5nZXQoKTsKICAg
ICB9CiAgICAgZWxzZSBpZiAoYmFja2luZ09iamVjdC0+aXNMaXN0Qm94KCkpCi0gICAgICAgIG9i
amVjdEF0dHJpYnV0ZXMgPSBsaXN0Qm94QXR0cnM7CisgICAgICAgIG9iamVjdEF0dHJpYnV0ZXMg
PSBsaXN0Qm94QXR0cnMuZ2V0KCkuZ2V0KCk7CiAgICAgZWxzZSBpZiAoYmFja2luZ09iamVjdC0+
aXNMaXN0KCkpCi0gICAgICAgIG9iamVjdEF0dHJpYnV0ZXMgPSBsaXN0QXR0cnM7CisgICAgICAg
IG9iamVjdEF0dHJpYnV0ZXMgPSBsaXN0QXR0cnMuZ2V0KCkuZ2V0KCk7CiAgICAgZWxzZSBpZiAo
YmFja2luZ09iamVjdC0+aXNDb21ib0JveCgpKQotICAgICAgICBvYmplY3RBdHRyaWJ1dGVzID0g
Y29tYm9Cb3hBdHRyczsKKyAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9IGNvbWJvQm94QXR0cnMu
Z2V0KCkuZ2V0KCk7CiAgICAgZWxzZSBpZiAoYmFja2luZ09iamVjdC0+aXNQcm9ncmVzc0luZGlj
YXRvcigpIHx8IGJhY2tpbmdPYmplY3QtPmlzU2xpZGVyKCkpCi0gICAgICAgIG9iamVjdEF0dHJp
YnV0ZXMgPSByYW5nZUF0dHJzOworICAgICAgICBvYmplY3RBdHRyaWJ1dGVzID0gcmFuZ2VBdHRy
cy5nZXQoKS5nZXQoKTsKICAgICAvLyBUaGVzZSBhcmUgcHJvY2Vzc2VkIGluIG9yZGVyIGJlY2F1
c2UgYW4gaW5wdXQgaW1hZ2UgaXMgYSBidXR0b24sIGFuZCBhIGJ1dHRvbiBpcyBhIGNvbnRyb2wu
CiAgICAgZWxzZSBpZiAoYmFja2luZ09iamVjdC0+aXNJbnB1dEltYWdlKCkpCi0gICAgICAgIG9i
amVjdEF0dHJpYnV0ZXMgPSBpbnB1dEltYWdlQXR0cnM7CisgICAgICAgIG9iamVjdEF0dHJpYnV0
ZXMgPSBpbnB1dEltYWdlQXR0cnMuZ2V0KCkuZ2V0KCk7CiAgICAgZWxzZSBpZiAoYmFja2luZ09i
amVjdC0+aXNCdXR0b24oKSkKLSAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9IGJ1dHRvbkF0dHJz
OworICAgICAgICBvYmplY3RBdHRyaWJ1dGVzID0gYnV0dG9uQXR0cnMuZ2V0KCkuZ2V0KCk7CiAg
ICAgZWxzZSBpZiAoYmFja2luZ09iamVjdC0+aXNDb250cm9sKCkpCi0gICAgICAgIG9iamVjdEF0
dHJpYnV0ZXMgPSBjb250cm9sQXR0cnM7CisgICAgICAgIG9iamVjdEF0dHJpYnV0ZXMgPSBjb250
cm9sQXR0cnMuZ2V0KCkuZ2V0KCk7CiAKICAgICBlbHNlIGlmIChiYWNraW5nT2JqZWN0LT5pc0dy
b3VwKCkgfHwgYmFja2luZ09iamVjdC0+aXNMaXN0SXRlbSgpKQotICAgICAgICBvYmplY3RBdHRy
aWJ1dGVzID0gZ3JvdXBBdHRyczsKKyAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9IGdyb3VwQXR0
cnMuZ2V0KCkuZ2V0KCk7CiAgICAgZWxzZSBpZiAoYmFja2luZ09iamVjdC0+aXNUYWJMaXN0KCkp
Ci0gICAgICAgIG9iamVjdEF0dHJpYnV0ZXMgPSB0YWJMaXN0QXR0cnM7CisgICAgICAgIG9iamVj
dEF0dHJpYnV0ZXMgPSB0YWJMaXN0QXR0cnMuZ2V0KCkuZ2V0KCk7CiAgICAgZWxzZSBpZiAoYmFj
a2luZ09iamVjdC0+aXNTY3JvbGxWaWV3KCkpCi0gICAgICAgIG9iamVjdEF0dHJpYnV0ZXMgPSBz
Y3JvbGxWaWV3QXR0cnM7CisgICAgICAgIG9iamVjdEF0dHJpYnV0ZXMgPSBzY3JvbGxWaWV3QXR0
cnMuZ2V0KCkuZ2V0KCk7CiAgICAgZWxzZSBpZiAoYmFja2luZ09iamVjdC0+aXNTcGluQnV0dG9u
KCkpCi0gICAgICAgIG9iamVjdEF0dHJpYnV0ZXMgPSBpbmNyZW1lbnRvckF0dHJzOworICAgICAg
ICBvYmplY3RBdHRyaWJ1dGVzID0gaW5jcmVtZW50b3JBdHRycy5nZXQoKS5nZXQoKTsKICAgICBl
bHNlIGlmIChiYWNraW5nT2JqZWN0LT5pc01lbnUoKSkKLSAgICAgICAgb2JqZWN0QXR0cmlidXRl
cyA9IG1lbnVBdHRyczsKKyAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9IG1lbnVBdHRycy5nZXQo
KS5nZXQoKTsKICAgICBlbHNlIGlmIChiYWNraW5nT2JqZWN0LT5pc01lbnVCYXIoKSkKLSAgICAg
ICAgb2JqZWN0QXR0cmlidXRlcyA9IG1lbnVCYXJBdHRyczsKKyAgICAgICAgb2JqZWN0QXR0cmli
dXRlcyA9IG1lbnVCYXJBdHRycy5nZXQoKS5nZXQoKTsKICAgICBlbHNlIGlmIChiYWNraW5nT2Jq
ZWN0LT5pc01lbnVCdXR0b24oKSkKLSAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9IG1lbnVCdXR0
b25BdHRyczsKKyAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9IG1lbnVCdXR0b25BdHRycy5nZXQo
KS5nZXQoKTsKICAgICBlbHNlIGlmIChiYWNraW5nT2JqZWN0LT5pc01lbnVJdGVtKCkpCi0gICAg
ICAgIG9iamVjdEF0dHJpYnV0ZXMgPSBtZW51SXRlbUF0dHJzOworICAgICAgICBvYmplY3RBdHRy
aWJ1dGVzID0gbWVudUl0ZW1BdHRycy5nZXQoKS5nZXQoKTsKIAogICAgIE5TQXJyYXkgKmFkZGl0
aW9uYWxBdHRyaWJ1dGVzID0gW3NlbGYgYWRkaXRpb25hbEFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVO
YW1lc107CiAgICAgaWYgKFthZGRpdGlvbmFsQXR0cmlidXRlcyBjb3VudF0pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvdGVzdGJpbmRpbmdzLm1tIGIvU291cmNlL1dlYkNvcmUv
YnJpZGdlL3Rlc3RiaW5kaW5ncy5tbQppbmRleCAyMGEwNmEzYTFmYTA4NmMwMDhiNGQ5NzlkNjc0
MDNkNThjYTZlMzJlLi4xZDYxYzNjNDVmM2ZjYzI2OGFmMjFkMTFjOTVjYTU2MTdjZTg0YzQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvdGVzdGJpbmRpbmdzLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS90ZXN0YmluZGluZ3MubW0KQEAgLTIyNyw1MSArMjI3LDQ5IEBA
IGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKICAgICAKICAgICBib29sIHJldCA9IHRy
dWU7CiAgICAgewotICAgICAgICBOU0F1dG9yZWxlYXNlUG9vbCAqcG9vbCA9IFtbTlNBdXRvcmVs
ZWFzZVBvb2wgYWxsb2NdIGluaXRdOwotICAgICAgICAKLSAgICAgICAgSlNMb2NrIGxvY2s7Ci0g
ICAgICAgIAotICAgICAgICAvLyBjcmVhdGUgaW50ZXJwcmV0ZXIgdy8gZ2xvYmFsIG9iamVjdAot
ICAgICAgICBPYmplY3QgZ2xvYmFsKG5ldyBHbG9iYWxJbXAoKSk7Ci0gICAgICAgIEludGVycHJl
dGVyIGludGVycDsKLSAgICAgICAgaW50ZXJwLnNldEdsb2JhbE9iamVjdChnbG9iYWwpOwotICAg
ICAgICBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCA9IGludGVycC5nbG9iYWxP
YmplY3QoKTsKLSAgICAgICAgCi0gICAgICAgIGF1dG8gbXlJbnRlcmZhY2UgPSBhZG9wdE5TKFtb
TXlGaXJzdEludGVyZmFjZSBhbGxvY10gaW5pdF0pOwotICAgICAgICAKLSAgICAgICAgZ2xvYmFs
LnB1dChsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGxleGljYWxH
bG9iYWxPYmplY3QsICJteUludGVyZmFjZSIpLCBJbnN0YW5jZTo6Y3JlYXRlUnVudGltZU9iamVj
dChJbnN0YW5jZTo6T2JqZWN0aXZlQ0xhbmd1YWdlLCAodm9pZCAqKW15SW50ZXJmYWNlLmdldCgp
KSk7Ci0gICAgICAgIAotICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8IGFyZ2M7IGkrKykgewot
ICAgICAgICAgICAgY29uc3QgY2hhciAqY29kZSA9IHJlYWRKYXZhU2NyaXB0RnJvbUZpbGUoYXJn
dltpXSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChjb2RlKSB7Ci0gICAgICAgICAg
ICAgICAgLy8gcnVuCi0gICAgICAgICAgICAgICAgQ29tcGxldGlvbiBjb21wKGludGVycC5ldmFs
dWF0ZShjb2RlKSk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgaWYgKGNvbXAu
Y29tcGxUeXBlKCkgPT0gVGhyb3cpIHsKLSAgICAgICAgICAgICAgICAgICAgVmFsdWUgZXhWYWwg
PSBjb21wLnZhbHVlKCk7Ci0gICAgICAgICAgICAgICAgICAgIGNoYXIgKm1zZyA9IGV4VmFsLnRv
U3RyaW5nKGxleGljYWxHbG9iYWxPYmplY3QpLmFzY2lpKCk7Ci0gICAgICAgICAgICAgICAgICAg
IGludCBsaW5lbm8gPSAtMTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGV4VmFsLnR5cGUoKSA9
PSBPYmplY3RUeXBlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSBsaW5lVmFsID0g
T2JqZWN0OjpkeW5hbWljQ2FzdChleFZhbCkuZ2V0KGxleGljYWxHbG9iYWxPYmplY3QsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcobGV4aWNhbEdsb2JhbE9iamVjdCwgImxpbmUiKSk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBpZiAobGluZVZhbC50eXBlKCkgPT0gTnVtYmVyVHlwZSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBsaW5lbm8gPSBpbnQobGluZVZhbC50b051bWJlcihsZXhp
Y2FsR2xvYmFsT2JqZWN0KSk7CisgICAgICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICAg
ICAgSlNMb2NrIGxvY2s7CisKKyAgICAgICAgICAgIC8vIGNyZWF0ZSBpbnRlcnByZXRlciB3LyBn
bG9iYWwgb2JqZWN0CisgICAgICAgICAgICBPYmplY3QgZ2xvYmFsKG5ldyBHbG9iYWxJbXAoKSk7
CisgICAgICAgICAgICBJbnRlcnByZXRlciBpbnRlcnA7CisgICAgICAgICAgICBpbnRlcnAuc2V0
R2xvYmFsT2JqZWN0KGdsb2JhbCk7CisgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCA9IGludGVycC5nbG9iYWxPYmplY3QoKTsKKworICAgICAgICAgICAgYXV0
byBteUludGVyZmFjZSA9IGFkb3B0TlMoW1tNeUZpcnN0SW50ZXJmYWNlIGFsbG9jXSBpbml0XSk7
CisKKyAgICAgICAgICAgIGdsb2JhbC5wdXQobGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyhsZXhpY2FsR2xvYmFsT2JqZWN0LCAibXlJbnRlcmZhY2UiKSwgSW5zdGFu
Y2U6OmNyZWF0ZVJ1bnRpbWVPYmplY3QoSW5zdGFuY2U6Ok9iamVjdGl2ZUNMYW5ndWFnZSwgKHZv
aWQgKilteUludGVyZmFjZS5nZXQoKSkpOworCisgICAgICAgICAgICBmb3IgKGludCBpID0gMTsg
aSA8IGFyZ2M7IGkrKykgeworICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNvZGUgPSByZWFk
SmF2YVNjcmlwdEZyb21GaWxlKGFyZ3ZbaV0pOworCisgICAgICAgICAgICAgICAgaWYgKGNvZGUp
IHsKKyAgICAgICAgICAgICAgICAgICAgLy8gcnVuCisgICAgICAgICAgICAgICAgICAgIENvbXBs
ZXRpb24gY29tcChpbnRlcnAuZXZhbHVhdGUoY29kZSkpOworCisgICAgICAgICAgICAgICAgICAg
IGlmIChjb21wLmNvbXBsVHlwZSgpID09IFRocm93KSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBWYWx1ZSBleFZhbCA9IGNvbXAudmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNo
YXIgKm1zZyA9IGV4VmFsLnRvU3RyaW5nKGxleGljYWxHbG9iYWxPYmplY3QpLmFzY2lpKCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGluZW5vID0gLTE7CisgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoZXhWYWwudHlwZSgpID09IE9iamVjdFR5cGUpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBWYWx1ZSBsaW5lVmFsID0gT2JqZWN0OjpkeW5hbWljQ2FzdChleFZhbCku
Z2V0KGxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcobGV4aWNhbEds
b2JhbE9iamVjdCwgImxpbmUiKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxp
bmVWYWwudHlwZSgpID09IE51bWJlclR5cGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGxpbmVubyA9IGludChsaW5lVmFsLnRvTnVtYmVyKGxleGljYWxHbG9iYWxPYmplY3QpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChs
aW5lbm8gIT0gLTEpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIs
ICJFeGNlcHRpb24sIGxpbmUgJWQ6ICVzXG4iLCBsaW5lbm8sIG1zZyk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRl
cnIsICJFeGNlcHRpb246ICVzXG4iLCBtc2cpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0
ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29tcC5jb21wbFR5cGUo
KSA9PSBSZXR1cm5WYWx1ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqbXNnID0g
Y29tcC52YWx1ZSgpLnRvU3RyaW5nKGludGVycC5nbG9iYWxPYmplY3QoKSkuYXNjaWkoKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiUmV0dXJuIHZhbHVlOiAlc1xu
IiwgbXNnKTsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBpZiAo
bGluZW5vICE9IC0xKQotICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsIkV4
Y2VwdGlvbiwgbGluZSAlZDogJXNcbiIsbGluZW5vLG1zZyk7Ci0gICAgICAgICAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCJFeGNlcHRpb246
ICVzXG4iLG1zZyk7Ci0gICAgICAgICAgICAgICAgICAgIHJldCA9IGZhbHNlOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIGlmIChjb21wLmNvbXBsVHlwZSgpID09IFJl
dHVyblZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNoYXIgKm1zZyA9IGNvbXAudmFsdWUo
KS50b1N0cmluZyhpbnRlcnAuZ2xvYmFsT2JqZWN0KCkpLmFzY2lpKCk7Ci0gICAgICAgICAgICAg
ICAgICAgIGZwcmludGYoc3RkZXJyLCJSZXR1cm4gdmFsdWU6ICVzXG4iLG1zZyk7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfQorCisgICAgICAgICAgICBteUludGVyZmFjZSA9IG5p
bDsKICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgbXlJbnRlcmZhY2UgPSBuaWw7Ci0gICAg
ICAgIFtwb29sIGRyYWluXTsKICAgICB9IC8vIGVuZCBibG9jaywgc28gdGhhdCBJbnRlcnByZXRl
ciBhbmQgZ2xvYmFsIGdldCBkZWxldGVkCiAgICAgCiAgICAgcmV0dXJuIHJldCA/IDAgOiAzOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVu
TW9kZWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1v
ZGVsLmgKaW5kZXggMGZlZDc5NWFjYTlkOTg2ZmQxOThmY2VjOGRmYjVjNTBhNWFkMmQ2ZS4uZjgx
YzI4MTEyYjMxY2JlYTQ1ZTU4YTZhYWJlYjZkZmQ0ZDg4ZDdlNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuTW9kZWwuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oCkBAIC02OSw3
ICs2OSw3IEBAIHB1YmxpYzoKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdmlydHVh
bCBVSVZpZXdDb250cm9sbGVyICpwcmVzZW50aW5nVmlld0NvbnRyb2xsZXIoKSB7IHJldHVybiBu
dWxscHRyOyB9Ci0gICAgdmlydHVhbCBVSVZpZXdDb250cm9sbGVyICpjcmVhdGVWaWRlb0Z1bGxz
Y3JlZW5WaWV3Q29udHJvbGxlcihBVlBsYXllclZpZXdDb250cm9sbGVyICopIHsgcmV0dXJuIG51
bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFJldGFpblB0cjxVSVZpZXdDb250cm9sbGVyPiBjcmVhdGVW
aWRlb0Z1bGxzY3JlZW5WaWV3Q29udHJvbGxlcihBVlBsYXllclZpZXdDb250cm9sbGVyICopIHsg
cmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVn
YXRlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQWN0aW9u
RGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlLm1tCmluZGV4IDM3M2E5ZWE0YzYwYWVhMzE1MzBkYzA1
Mjk0N2FjMzU5NDlhYzBjZjUuLjEyNmE1YjVlMmI0NDBiYTBhYzhlZTMwZDI4MzA0NTdhMTFiOThi
N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dl
YkFjdGlvbkRpc2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVyRGVsZWdhdGUu
bW0KQEAgLTMyLDEyICszMiwxMiBAQCBAaW1wbGVtZW50YXRpb24gV2ViQWN0aW9uRGlzYWJsaW5n
Q0FMYXllckRlbGVnYXRlCiAKICsgKGluc3RhbmNldHlwZSlzaGFyZWQKIHsKLSAgICBzdGF0aWMg
V2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlICpjb250cm9sbGVyOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8V2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVn
YXRlPj4gY29udHJvbGxlcjsKICAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsK
ICAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57Ci0gICAgICAgIGNvbnRyb2xsZXIgPSBb
W1dlYkFjdGlvbkRpc2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZSBhbGxvY10gaW5pdF07CisgICAgICAg
IGNvbnRyb2xsZXIuZ2V0KCkgPSBhZG9wdE5TKFtbV2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRl
bGVnYXRlIGFsbG9jXSBpbml0XSk7CiAgICAgfSk7Ci0gICAgcmV0dXJuIGNvbnRyb2xsZXI7Cisg
ICAgcmV0dXJuIGNvbnRyb2xsZXIuZ2V0KCkuZ2V0KCk7CiB9CiAKIC0gKGlkPENBQWN0aW9uPilh
Y3Rpb25Gb3JMYXllcjooQ0FMYXllciAqKWxheWVyIGZvcktleTooTlNTdHJpbmcgKilldmVudApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkJhY2tncm91bmRUYXNr
Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJCYWNrZ3JvdW5k
VGFza0NvbnRyb2xsZXIubW0KaW5kZXggMDA0ODhkYzJiMTEwNDRkMDc0ZmQ2OTA3ZjdkYmVlMDcz
YTFkOWIwNC4uYmUxNGI5ZGY1YzAxNzI0ZTBjMGYyZmI1ZDViZTllMGYxN2Q2N2IzMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkJhY2tncm91bmRUYXNrQ29udHJv
bGxlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQmFja2dyb3VuZFRh
c2tDb250cm9sbGVyLm1tCkBAIC0zMiwxMCArMzIsOCBAQCBAaW1wbGVtZW50YXRpb24gV2ViQmFj
a2dyb3VuZFRhc2tDb250cm9sbGVyCiAKICsgKFdlYkJhY2tncm91bmRUYXNrQ29udHJvbGxlciAq
KXNoYXJlZENvbnRyb2xsZXIKIHsKLSAgICBzdGF0aWMgV2ViQmFja2dyb3VuZFRhc2tDb250cm9s
bGVyICpzaGFyZWRDb250cm9sbGVyOwotICAgIGlmICghc2hhcmVkQ29udHJvbGxlcikKLSAgICAg
ICAgc2hhcmVkQ29udHJvbGxlciA9IFtbc2VsZiBhbGxvY10gaW5pdF07Ci0gICAgcmV0dXJuIHNo
YXJlZENvbnRyb2xsZXI7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxXZWJC
YWNrZ3JvdW5kVGFza0NvbnRyb2xsZXI+PiBzaGFyZWRDb250cm9sbGVyID0gYWRvcHROUyhbW3Nl
bGYgYWxsb2NdIGluaXRdKTsKKyAgICByZXR1cm4gc2hhcmVkQ29udHJvbGxlci5nZXQoKS5nZXQo
KTsKIH0KIAogLSAodm9pZClkZWFsbG9jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tCmluZGV4IDQ3ZDc3NzI2MTAw
ZWQwMzU5YTljYTY0NzdjMmY5YzNkYTcyMDg2OGQuLmQyYTFkYmMzYTg5ZjkxYWVjMmEzMjIwMzg2
NGEwY2VmMzE5MjMyZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9X
ZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tCkBAIC00NzUsMTIgKzQ3NSwxMiBAQCBA
aW1wbGVtZW50YXRpb24gV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZCB7CiAKICsgKGluc3RhbmNl
dHlwZSlzaGFyZWRJbnN0YW5jZQogewotICAgIHN0YXRpYyBXZWJJdGVtUHJvdmlkZXJQYXN0ZWJv
YXJkICpzaGFyZWRQYXN0ZWJvYXJkID0gbmlsOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxS
ZXRhaW5QdHI8V2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZD4+IHNoYXJlZFBhc3RlYm9hcmQ7CiAg
ICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47CiAgICAgZGlzcGF0Y2hfb25jZSgm
b25jZVRva2VuLCBeKCkgewotICAgICAgICBzaGFyZWRQYXN0ZWJvYXJkID0gW1tXZWJJdGVtUHJv
dmlkZXJQYXN0ZWJvYXJkIGFsbG9jXSBpbml0XTsKKyAgICAgICAgc2hhcmVkUGFzdGVib2FyZC5n
ZXQoKSA9IGFkb3B0TlMoW1tXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIGFsbG9jXSBpbml0XSk7
CiAgICAgfSk7Ci0gICAgcmV0dXJuIHNoYXJlZFBhc3RlYm9hcmQ7CisgICAgcmV0dXJuIHNoYXJl
ZFBhc3RlYm9hcmQuZ2V0KCkuZ2V0KCk7CiB9CiAKIC0gKGluc3RhbmNldHlwZSlpbml0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0KaW5kZXgg
ZjU0MGRlMDc1Y2RmYzBkOTEwMGZlOWE3MzE1NzhiZGM1NTdlZGM2OS4uMTlkN2I3ZTVjMjdmMjc1
MWQzZTVjZTRkMzZjYTVmNjUwYWNhNDI3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbQpAQCAtMTU1LDcgKzE1NSwxMSBAQCBzdGF0aWMg
dm9pZCBXZWJDb3JlT2JqQ0RlYWxsb2NPbldlYlRocmVhZEltcGwoaWQgc2VsZiwgU0VMIF9jbWQp
Owogc3RhdGljIHZvaWQgV2ViQ29yZU9iakNEZWFsbG9jV2l0aFdlYlRocmVhZExvY2soQ2xhc3Mg
Y2xzKTsKIHN0YXRpYyB2b2lkIFdlYkNvcmVPYmpDRGVhbGxvY1dpdGhXZWJUaHJlYWRMb2NrSW1w
bChpZCBzZWxmLCBTRUwgX2NtZCk7CiAKLXN0YXRpYyBOU011dGFibGVBcnJheSogc0FzeW5jRGVs
ZWdhdGVzID0gbmlsOworc3RhdGljIFJldGFpblB0cjxOU011dGFibGVBcnJheT4mIHNBc3luY0Rl
bGVnYXRlcygpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU011dGFi
bGVBcnJheT4+IGFzeW5jRGVsZWdhdGVzOworICAgIHJldHVybiBhc3luY0RlbGVnYXRlczsKK30K
IAogV0VCQ09SRV9FWFBPUlQgdm9sYXRpbGUgdW5zaWduZWQgd2ViVGhyZWFkRGVsZWdhdGVNZXNz
YWdlU2NvcGVDb3VudCA9IDA7CiAKQEAgLTQ0MCw3ICs0NDQsNyBAQCB2b2lkIFdlYlRocmVhZENh
bGxEZWxlZ2F0ZUFzeW5jKE5TSW52b2NhdGlvbiogaW52b2NhdGlvbikKIHsKICAgICBBU1NFUlQo
aW52b2NhdGlvbik7CiAgICAgaWYgKFdlYlRocmVhZElzQ3VycmVudCgpKQotICAgICAgICBbc0Fz
eW5jRGVsZWdhdGVzIGFkZE9iamVjdDppbnZvY2F0aW9uXTsKKyAgICAgICAgW3NBc3luY0RlbGVn
YXRlcygpIGFkZE9iamVjdDppbnZvY2F0aW9uXTsKICAgICBlbHNlCiAgICAgICAgIFdlYlRocmVh
ZENhbGxEZWxlZ2F0ZShpbnZvY2F0aW9uKTsKIH0KQEAgLTQ5OCwxMSArNTAyLDExIEBAIHN0YXRp
YyB2b2lkIFdlYlJ1bkxvb3BMb2NrSW50ZXJuYWwoQXV0b3JlbGVhc2VQb29sT3BlcmF0aW9uIHBv
b2xPcGVyYXRpb24pCiAKIHN0YXRpYyB2b2lkIFdlYlJ1bkxvb3BVbmxvY2tJbnRlcm5hbChBdXRv
cmVsZWFzZVBvb2xPcGVyYXRpb24gcG9vbE9wZXJhdGlvbikKIHsKLSAgICBBU1NFUlQoc0FzeW5j
RGVsZWdhdGVzKTsKLSAgICBpZiAoW3NBc3luY0RlbGVnYXRlcyBjb3VudF0pIHsKLSAgICAgICAg
Zm9yIChOU0ludm9jYXRpb24qIGludm9jYXRpb24gaW4gc0FzeW5jRGVsZWdhdGVzKQorICAgIEFT
U0VSVChzQXN5bmNEZWxlZ2F0ZXMoKSk7CisgICAgaWYgKFtzQXN5bmNEZWxlZ2F0ZXMoKSBjb3Vu
dF0pIHsKKyAgICAgICAgZm9yIChOU0ludm9jYXRpb24qIGludm9jYXRpb24gaW4gc0FzeW5jRGVs
ZWdhdGVzKCkuZ2V0KCkpCiAgICAgICAgICAgICBTZW5kRGVsZWdhdGVNZXNzYWdlKFtpbnZvY2F0
aW9uIHJldGFpbl0pOwotICAgICAgICBbc0FzeW5jRGVsZWdhdGVzIHJlbW92ZUFsbE9iamVjdHNd
OworICAgICAgICBbc0FzeW5jRGVsZWdhdGVzKCkgcmVtb3ZlQWxsT2JqZWN0c107CiAgICAgfQog
CiAgICAgaWYgKHBvb2xPcGVyYXRpb24gPT0gUHVzaE9yUG9wQXV0b3JlbGVhc2VQb29sICYmICFw
ZXJDYWxsb3V0QXV0b3JlbGVhc2Vwb29sRW5hYmxlZCkKQEAgLTY4Niw3ICs2OTAsNyBAQCBzdGF0
aWMgdm9pZCBTdGFydFdlYlRocmVhZCgpCiAgICAgLy8gbW9kZXMgc28gd2UgZG9uJ3QgYmxvY2sg
dGhlIHdlYiB0aHJlYWQgd2hpbGUgc2Nyb2xsaW5nLgogICAgIENGUnVuTG9vcEFkZFNvdXJjZShy
dW5Mb29wLCBkZWxlZ2F0ZVNvdXJjZSwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKIAotICAgIHNB
c3luY0RlbGVnYXRlcyA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdOworICAgIHNBc3lu
Y0RlbGVnYXRlcygpID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CiAK
ICAgICBtYWluUnVuTG9vcEF1dG9VbmxvY2tPYnNlcnZlciA9IENGUnVuTG9vcE9ic2VydmVyQ3Jl
YXRlKG51bGxwdHIsIGtDRlJ1bkxvb3BCZWZvcmVXYWl0aW5nIHwga0NGUnVuTG9vcEV4aXQsIFlF
UywgMzAwMDAwMSwgTWFpblJ1bkxvb3BBdXRvVW5sb2NrLCBudWxscHRyKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCmluZGV4IDRhMDQ3NjdhZWU5OTUwMDdjNTgzOThl
ODczZTBmMGFmZTE2YmYwYmYuLmJmODIwMDQzMTUzYjRkYzVkZjgyMzk0M2Y4NmE1OWE0NDFmMDUy
YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KQEAgLTQ5Miw5ICs0
OTIsOSBAQCBzdGF0aWMgY29uc3QgaW50KiBidXR0b25NYXJnaW5zKE5TQ29udHJvbFNpemUgY29u
dHJvbFNpemUpCiAKIGVudW0gQnV0dG9uQ2VsbFR5cGUgeyBOb3JtYWxCdXR0b25DZWxsLCBEZWZh
dWx0QnV0dG9uQ2VsbCB9OwogCi1zdGF0aWMgTlNCdXR0b25DZWxsICpsZWFrQnV0dG9uQ2VsbChC
dXR0b25DZWxsVHlwZSB0eXBlKQorc3RhdGljIFJldGFpblB0cjxOU0J1dHRvbkNlbGw+IGJ1dHRv
bkNlbGwoQnV0dG9uQ2VsbFR5cGUgdHlwZSkKIHsKLSAgICBOU0J1dHRvbkNlbGwgKmNlbGwgPSBb
W05TQnV0dG9uQ2VsbCBhbGxvY10gaW5pdF07CisgICAgYXV0byBjZWxsID0gYWRvcHROUyhbW05T
QnV0dG9uQ2VsbCBhbGxvY10gaW5pdF0pOwogICAgIFtjZWxsIHNldFRpdGxlOm5pbF07CiAgICAg
W2NlbGwgc2V0QnV0dG9uVHlwZTpOU0J1dHRvblR5cGVNb21lbnRhcnlQdXNoSW5dOwogICAgIGlm
ICh0eXBlID09IERlZmF1bHRCdXR0b25DZWxsKQpAQCAtNTM3LDExICs1MzcsMTEgQEAgc3RhdGlj
IE5TQnV0dG9uQ2VsbCAqYnV0dG9uKENvbnRyb2xQYXJ0IHBhcnQsIGNvbnN0IENvbnRyb2xTdGF0
ZXMmIGNvbnRyb2xTdGF0ZXMKICAgICBDb250cm9sU3RhdGVzOjpTdGF0ZXMgc3RhdGVzID0gY29u
dHJvbFN0YXRlcy5zdGF0ZXMoKTsKICAgICBOU0J1dHRvbkNlbGwgKmNlbGw7CiAgICAgaWYgKHN0
YXRlcyAmIENvbnRyb2xTdGF0ZXM6OkRlZmF1bHRTdGF0ZSkgewotICAgICAgICBzdGF0aWMgTlNC
dXR0b25DZWxsICpkZWZhdWx0Q2VsbCA9IGxlYWtCdXR0b25DZWxsKERlZmF1bHRCdXR0b25DZWxs
KTsKLSAgICAgICAgY2VsbCA9IGRlZmF1bHRDZWxsOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8UmV0YWluUHRyPE5TQnV0dG9uQ2VsbD4+IGRlZmF1bHRDZWxsID0gYnV0dG9uQ2VsbChE
ZWZhdWx0QnV0dG9uQ2VsbCk7CisgICAgICAgIGNlbGwgPSBkZWZhdWx0Q2VsbC5nZXQoKS5nZXQo
KTsKICAgICB9IGVsc2UgewotICAgICAgICBzdGF0aWMgTlNCdXR0b25DZWxsICpub3JtYWxDZWxs
ID0gbGVha0J1dHRvbkNlbGwoTm9ybWFsQnV0dG9uQ2VsbCk7Ci0gICAgICAgIGNlbGwgPSBub3Jt
YWxDZWxsOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQnV0dG9u
Q2VsbD4+IG5vcm1hbENlbGwgPSBidXR0b25DZWxsKE5vcm1hbEJ1dHRvbkNlbGwpOworICAgICAg
ICBjZWxsID0gbm9ybWFsQ2VsbC5nZXQoKS5nZXQoKTsKICAgICB9CiAgICAgc2V0VXBCdXR0b25D
ZWxsKGNlbGwsIHBhcnQsIGNvbnRyb2xTdGF0ZXMsIHpvb21lZFNpemUsIHpvb21GYWN0b3IpOwog
ICAgIHJldHVybiBjZWxsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1dlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9XZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMubW0KaW5kZXggZGZmMDY3ODI4MDc0OTkx
Y2MzNjhmMTNlYjQ5OTM5ODBiNGI5YTkzMy4uNmIyODRhMDRiYmM1ZGNhY2M2ODQwOWNmMTAwZmQ2
NjMxYjcxODBhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYk5T
QXR0cmlidXRlZFN0cmluZ0V4dHJhcy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvV2ViTlNBdHRyaWJ1dGVkU3RyaW5nRXh0cmFzLm1tCkBAIC00MiwyNCArNDIsMTggQEAgTlNB
dHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nQnlTdHJpcHBpbmdBdHRhY2htZW50Q2hh
cmFjdGVycyhOU0F0dHJpYnV0ZWQKIHsKICAgICBOU1JhbmdlIGF0dGFjaG1lbnRSYW5nZTsKICAg
ICBOU1N0cmluZyAqb3JpZ2luYWxTdHJpbmcgPSBbYXR0cmlidXRlZFN0cmluZyBzdHJpbmddOwot
ICAgIHN0YXRpYyBOU1N0cmluZyAqYXR0YWNobWVudENoYXJTdHJpbmcgPSBuaWw7CisgICAgc3Rh
dGljIGF1dG8gYXR0YWNobWVudENoYXJTdHJpbmcgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10gewor
ICAgICAgICB1bmljaGFyIGNoYXJzWzJdID0geyBOU0F0dGFjaG1lbnRDaGFyYWN0ZXIsIDAgfTsK
KyAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhDaGFyYWN0
ZXJzOmNoYXJzIGxlbmd0aDoxXSk7CisgICAgfSgpKTsKICAgICAKLSAgICBpZiAoIWF0dGFjaG1l
bnRDaGFyU3RyaW5nKSB7Ci0gICAgICAgIHVuaWNoYXIgY2hhcnNbMl07Ci0gICAgICAgIGlmICgh
YXR0YWNobWVudENoYXJTdHJpbmcpIHsKLSAgICAgICAgICAgIGNoYXJzWzBdID0gTlNBdHRhY2ht
ZW50Q2hhcmFjdGVyOwotICAgICAgICAgICAgY2hhcnNbMV0gPSAwOwotICAgICAgICAgICAgYXR0
YWNobWVudENoYXJTdHJpbmcgPSBbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aENoYXJhY3RlcnM6
Y2hhcnMgbGVuZ3RoOjFdOwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIGF0dGFjaG1lbnRS
YW5nZSA9IFtvcmlnaW5hbFN0cmluZyByYW5nZU9mU3RyaW5nOmF0dGFjaG1lbnRDaGFyU3RyaW5n
XTsKKyAgICBhdHRhY2htZW50UmFuZ2UgPSBbb3JpZ2luYWxTdHJpbmcgcmFuZ2VPZlN0cmluZzph
dHRhY2htZW50Q2hhclN0cmluZy5nZXQoKS5nZXQoKV07CiAgICAgaWYgKGF0dGFjaG1lbnRSYW5n
ZS5sb2NhdGlvbiAhPSBOU05vdEZvdW5kICYmIGF0dGFjaG1lbnRSYW5nZS5sZW5ndGggPiAwKSB7
CiAgICAgICAgIGF1dG8gbmV3QXR0cmlidXRlZFN0cmluZyA9IGFkb3B0TlMoW2F0dHJpYnV0ZWRT
dHJpbmcgbXV0YWJsZUNvcHlXaXRoWm9uZTpOVUxMXSk7CiAgICAgICAgIAogICAgICAgICB3aGls
ZSAoYXR0YWNobWVudFJhbmdlLmxvY2F0aW9uICE9IE5TTm90Rm91bmQgJiYgYXR0YWNobWVudFJh
bmdlLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgIFtuZXdBdHRyaWJ1dGVkU3RyaW5nIHJlcGxh
Y2VDaGFyYWN0ZXJzSW5SYW5nZTphdHRhY2htZW50UmFuZ2Ugd2l0aFN0cmluZzpAIiJdOwotICAg
ICAgICAgICAgYXR0YWNobWVudFJhbmdlID0gW1tuZXdBdHRyaWJ1dGVkU3RyaW5nIHN0cmluZ10g
cmFuZ2VPZlN0cmluZzphdHRhY2htZW50Q2hhclN0cmluZ107CisgICAgICAgICAgICBhdHRhY2ht
ZW50UmFuZ2UgPSBbW25ld0F0dHJpYnV0ZWRTdHJpbmcgc3RyaW5nXSByYW5nZU9mU3RyaW5nOmF0
dGFjaG1lbnRDaGFyU3RyaW5nLmdldCgpLmdldCgpXTsKICAgICAgICAgfQogICAgICAgICByZXR1
cm4gbmV3QXR0cmlidXRlZFN0cmluZy5hdXRvcmVsZWFzZSgpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMu
bW0KaW5kZXggYTRjMWRkYmU1OTA2N2E0Nzc1ZTMxOTRhNGFiN2E2MjI0MmZhMGU0Yy4uNjQ3N2Ex
YzNkZTlmZDA0OWU4OTEyNmNhM2VhYTkwZGMyNTViZTYyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0KQEAg
LTc0LDEzICs3NCwxMyBAQCBzdGF0aWMgdm9pZCBhcHBseUJhc2ljQXV0aG9yaXphdGlvbkhlYWRl
cihSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IENyZWRlbgogCiBzdGF0aWMgTlNPcGVy
YXRpb25RdWV1ZSAqb3BlcmF0aW9uUXVldWVGb3JBc3luY0NsaWVudHMoKQogewotICAgIHN0YXRp
YyBOU09wZXJhdGlvblF1ZXVlICpxdWV1ZTsKLSAgICBpZiAoIXF1ZXVlKSB7Ci0gICAgICAgIHF1
ZXVlID0gW1tOU09wZXJhdGlvblF1ZXVlIGFsbG9jXSBpbml0XTsKKyAgICBzdGF0aWMgYXV0byBx
dWV1ZSA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgICAgIGF1dG8gcXVldWUgPSBhZG9w
dE5TKFtbTlNPcGVyYXRpb25RdWV1ZSBhbGxvY10gaW5pdF0pOwogICAgICAgICAvLyBEZWZhdWx0
IGNvbmN1cnJlbnQgb3BlcmF0aW9uIGNvdW50IGRlcGVuZHMgb24gY3VycmVudCBzeXN0ZW0gd29y
a2xvYWQsIGJ1dCBkZWxlZ2F0ZSBtZXRob2RzIGFyZSBtb3N0bHkgaWRsaW5nIGluIElQQywgc28g
d2UgY2FuIHJ1biBhcyBtYW55IGFzIG5lZWRlZC4KICAgICAgICAgW3F1ZXVlIHNldE1heENvbmN1
cnJlbnRPcGVyYXRpb25Db3VudDpOU09wZXJhdGlvblF1ZXVlRGVmYXVsdE1heENvbmN1cnJlbnRP
cGVyYXRpb25Db3VudF07Ci0gICAgfQotICAgIHJldHVybiBxdWV1ZTsKKyAgICAgICAgcmV0dXJu
IHF1ZXVlOworICAgIH0oKSk7CisgICAgcmV0dXJuIHF1ZXVlLmdldCgpLmdldCgpOwogfQogCiBS
ZXNvdXJjZUhhbmRsZUludGVybmFsOjp+UmVzb3VyY2VIYW5kbGVJbnRlcm5hbCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvTlNBdHRyaWJ1dGVkU3RyaW5n
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL05TQXR0cmlidXRlZFN0cmlu
Zy5tbQppbmRleCA4ZTA2OGE3MDQzMWMyMjZjNDVjNTkxNmY4MDMzYmJiMTk4MzgzZTczLi44NWFj
OTg2NGJhOWI4MWVkM2U4MzNhNTNlZmE2YTBkOTI4OTMwMjY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvTlNBdHRyaWJ1dGVkU3RyaW5nLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9OU0F0dHJpYnV0ZWRTdHJpbmcubW0KQEAg
LTEyNywzNCArMTI3LDM4IEBAICsgKE5TTXV0YWJsZUFycmF5PFdLV2ViVmlldyAqPiAqKWNhY2hl
CiAgICAgcmV0dXJuIGNhY2hlOwogfQogCi1zdGF0aWMgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAq
Y29uZmlndXJhdGlvbjsKK3N0YXRpYyBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4m
IGdsb2JhbENvbmZpZ3VyYXRpb24oKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRh
aW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4+IGNvbmZpZ3VyYXRpb247CisgICAgcmV0dXJu
IGNvbmZpZ3VyYXRpb247Cit9CiAKICsgKFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKiljb25maWd1
cmF0aW9uCiB7CisgICAgYXV0byYgY29uZmlndXJhdGlvbiA9IGdsb2JhbENvbmZpZ3VyYXRpb24o
KTsKICAgICBpZiAoIWNvbmZpZ3VyYXRpb24pIHsKLSAgICAgICAgY29uZmlndXJhdGlvbiA9IFtb
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF07Ci0gICAgICAgIGNvbmZpZ3VyYXRp
b24ucHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gaW5pdF0pLmdl
dCgpOwotICAgICAgICBjb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgPSBbV0tXZWJzaXRl
RGF0YVN0b3JlIG5vblBlcnNpc3RlbnREYXRhU3RvcmVdOwotICAgICAgICBjb25maWd1cmF0aW9u
Lm1lZGlhVHlwZXNSZXF1aXJpbmdVc2VyQWN0aW9uRm9yUGxheWJhY2sgPSBXS0F1ZGlvdmlzdWFs
TWVkaWFUeXBlQWxsOwotICAgICAgICBjb25maWd1cmF0aW9uLl9hbGxvd3NKYXZhU2NyaXB0TWFy
a3VwID0gTk87Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24uX2FsbG93c01ldGFSZWZyZXNoID0gTk87
Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24uX2F0dGFjaG1lbnRFbGVtZW50RW5hYmxlZCA9IFlFUzsK
LSAgICAgICAgY29uZmlndXJhdGlvbi5faW52aXNpYmxlQXV0b3BsYXlOb3RQZXJtaXR0ZWQgPSBZ
RVM7Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24uX21lZGlhRGF0YUxvYWRzQXV0b21hdGljYWxseSA9
IE5POwotICAgICAgICBjb25maWd1cmF0aW9uLl9uZWVkc1N0b3JhZ2VBY2Nlc3NGcm9tRmlsZVVS
THNRdWlyayA9IE5POworICAgICAgICBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmll
d0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICAgICAgW2NvbmZpZ3VyYXRpb24gc2V0
UHJvY2Vzc1Bvb2w6YWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIGluaXRdKS5nZXQoKV07
CisgICAgICAgIFtjb25maWd1cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6W1dLV2Vic2l0ZURh
dGFTdG9yZSBub25QZXJzaXN0ZW50RGF0YVN0b3JlXV07CisgICAgICAgIFtjb25maWd1cmF0aW9u
IHNldE1lZGlhVHlwZXNSZXF1aXJpbmdVc2VyQWN0aW9uRm9yUGxheWJhY2s6V0tBdWRpb3Zpc3Vh
bE1lZGlhVHlwZUFsbF07CisgICAgICAgIFtjb25maWd1cmF0aW9uIF9zZXRBbGxvd3NKYXZhU2Ny
aXB0TWFya3VwOk5PXTsKKyAgICAgICAgW2NvbmZpZ3VyYXRpb24gX3NldEFsbG93c01ldGFSZWZy
ZXNoOk5PXTsKKyAgICAgICAgW2NvbmZpZ3VyYXRpb24gX3NldEF0dGFjaG1lbnRFbGVtZW50RW5h
YmxlZDpZRVNdOworICAgICAgICBbY29uZmlndXJhdGlvbiBfc2V0SW52aXNpYmxlQXV0b3BsYXlO
b3RQZXJtaXR0ZWQ6WUVTXTsKKyAgICAgICAgW2NvbmZpZ3VyYXRpb24gX3NldE1lZGlhRGF0YUxv
YWRzQXV0b21hdGljYWxseTpOT107CisgICAgICAgIFtjb25maWd1cmF0aW9uIF9zZXROZWVkc1N0
b3JhZ2VBY2Nlc3NGcm9tRmlsZVVSTHNRdWlyazpOT107CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKLSAgICAgICAgY29uZmlndXJhdGlvbi5hbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrID0gTk87
Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24uX2NsaWVudE5hdmlnYXRpb25zUnVuQXRGb3JlZ3JvdW5k
UHJpb3JpdHkgPSBZRVM7CisgICAgICAgIFtjb25maWd1cmF0aW9uIHNldEFsbG93c0lubGluZU1l
ZGlhUGxheWJhY2s6Tk9dOworICAgICAgICBbY29uZmlndXJhdGlvbiBfc2V0Q2xpZW50TmF2aWdh
dGlvbnNSdW5BdEZvcmVncm91bmRQcmlvcml0eTpZRVNdOwogI2VuZGlmCiAgICAgfQogCi0gICAg
cmV0dXJuIGNvbmZpZ3VyYXRpb247CisgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb24uZ2V0KCk7CiB9
CiAKICsgKHZvaWQpY2xlYXJDb25maWd1cmF0aW9uCiB7Ci0gICAgW2NvbmZpZ3VyYXRpb24gcmVs
ZWFzZV07Ci0gICAgY29uZmlndXJhdGlvbiA9IG5pbDsKKyAgICBnbG9iYWxDb25maWd1cmF0aW9u
KCkgPSBuaWw7CiB9CiAKICsgKFJldGFpblB0cjxXS1dlYlZpZXc+KXJldHJpZXZlT3JDcmVhdGVX
ZWJWaWV3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tO
U1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5tbQppbmRleCBkMDhmMTMw
NWQ3YTI5NTEzYzg3NjI2OWY1ZDk3NjdmNmU3YWU3ZTdmLi5jM2MzMGVlNWYyYThiOGU3MDc2Mzcw
ZWExMjFjMTdkNGFkYmFhMGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uu
bW0KQEAgLTQyLDEyICs0MiwxMiBAQCAtIChOU09iamVjdCAqKV93ZWJfY3JlYXRlVGFyZ2V0CiAg
ICAgV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiBjaGFsbGVuZ2UgPSAqcmVp
bnRlcnByZXRfY2FzdDxXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkqPigmc2Vs
Zi5fYXBpT2JqZWN0KTsKIAogICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3QgdG9rZW47Ci0gICAg
c3RhdGljIFdLTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlciAqc2VuZGVyOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8V0tOU1VSTEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlU2VuZGVyPj4gc2VuZGVyOwogICAgIGRpc3BhdGNoX29uY2UoJnRva2VuLCBeewotICAg
ICAgICBzZW5kZXIgPSBbW1dLTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlciBhbGxv
Y10gaW5pdF07CisgICAgICAgIHNlbmRlci5nZXQoKSA9IGFkb3B0TlMoW1tXS05TVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VTZW5kZXIgYWxsb2NdIGluaXRdKTsKICAgICB9KTsKIAotICAgIHJl
dHVybiBbW05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgYWxsb2NdIGluaXRXaXRoQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2U6bWFjKGNoYWxsZW5nZS5jb3JlKCkpIHNlbmRlcjpzZW5kZXJdOwor
ICAgIHJldHVybiBbW05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgYWxsb2NdIGluaXRXaXRo
QXV0aGVudGljYXRpb25DaGFsbGVuZ2U6bWFjKGNoYWxsZW5nZS5jb3JlKCkpIHNlbmRlcjpzZW5k
ZXIuZ2V0KCkuZ2V0KCldOwogfQogCiAtIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
UHJveHkmKV93ZWJfYXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQppbmRleCA4M2E3NzI5
OGU0YzRkZDgyZGNhMzUzMzVmYTljNTkxMzA5ZTQzOTNjLi5iYTI3YTQzZTk0NzM0OWRjYmI1YjYy
N2E2ZGUwNTI2ZDBhMTI5YjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQpAQCAtNjUsNyArNjUsMTEgQEAKICNpbXBvcnQgIldL
R2VvbG9jYXRpb25Qcm92aWRlcklPUy5oIgogI2VuZGlmCiAKLXN0YXRpYyBXS1Byb2Nlc3NQb29s
ICpzaGFyZWRQcm9jZXNzUG9vbDsKK3N0YXRpYyBSZXRhaW5QdHI8V0tQcm9jZXNzUG9vbD4mIHNo
YXJlZFByb2Nlc3NQb29sKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRy
PFdLUHJvY2Vzc1Bvb2w+PiBzaGFyZWRQcm9jZXNzUG9vbDsKKyAgICByZXR1cm4gc2hhcmVkUHJv
Y2Vzc1Bvb2w7Cit9CiAKIEBpbXBsZW1lbnRhdGlvbiBXS1Byb2Nlc3NQb29sIHsKICAgICBXZWFr
T2JqQ1B0cjxpZCA8X1dLQXV0b21hdGlvbkRlbGVnYXRlPj4gX2F1dG9tYXRpb25EZWxlZ2F0ZTsK
QEAgLTEwNyw3ICsxMTEsNyBAQCArIChCT09MKXN1cHBvcnRzU2VjdXJlQ29kaW5nCiAKIC0gKHZv
aWQpZW5jb2RlV2l0aENvZGVyOihOU0NvZGVyICopY29kZXIKIHsKLSAgICBpZiAoc2VsZiA9PSBz
aGFyZWRQcm9jZXNzUG9vbCkgeworICAgIGlmIChzZWxmID09IHNoYXJlZFByb2Nlc3NQb29sKCkp
IHsKICAgICAgICAgW2NvZGVyIGVuY29kZUJvb2w6WUVTIGZvcktleTpAImlzU2hhcmVkUHJvY2Vz
c1Bvb2wiXTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE1OSwxMCArMTYzLDEwIEBAICsg
KFdLUHJvY2Vzc1Bvb2wgKilfc2hhcmVkUHJvY2Vzc1Bvb2wKIHsKICAgICBzdGF0aWMgZGlzcGF0
Y2hfb25jZV90IG9uY2VUb2tlbjsKICAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57Ci0g
ICAgICAgIHNoYXJlZFByb2Nlc3NQb29sID0gW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBpbml0XTsK
KyAgICAgICAgc2hhcmVkUHJvY2Vzc1Bvb2woKSA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFs
bG9jXSBpbml0XSk7CiAgICAgfSk7CiAKLSAgICByZXR1cm4gc2hhcmVkUHJvY2Vzc1Bvb2w7Cisg
ICAgcmV0dXJuIHNoYXJlZFByb2Nlc3NQb29sKCkuZ2V0KCk7CiB9CiAKICsgKE5TQXJyYXk8V0tQ
cm9jZXNzUG9vbCAqPiAqKV9hbGxQcm9jZXNzUG9vbHNGb3JUZXN0aW5nCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCAyNjE0MWNmMzIxYWU5
M2JkZDk0NjMyYzAzOWU5MWI5ODI1NmI0MTk4Li44YTliZTBhNTE5MzA0Y2I2NDg1ZjhkZTE4Mzll
OTIyMjRiMzVlY2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXcubW0KQEAgLTIxMTcsOSArMjExNyw5IEBAIC0gKFdLTmF2aWdhdGlvbiAqKWxvYWRT
aW11bGF0ZWRSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IHdpdGhSZXNwb25zZTooTlNV
CiAtIChXS05hdmlnYXRpb24gKilsb2FkU2ltdWxhdGVkUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICop
cmVxdWVzdCB3aXRoUmVzcG9uc2VIVE1MU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZwogewogICAg
IE5TRGF0YSAqZGF0YSA9IFtzdHJpbmcgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5j
b2RpbmddOwotICAgIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlID0gW1tOU1VSTFJlc3BvbnNlIGFs
bG9jXSBpbml0V2l0aFVSTDpyZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0
ZWRDb250ZW50TGVuZ3RoOnN0cmluZy5sZW5ndGggdGV4dEVuY29kaW5nTmFtZTpAIlVURi04Il07
CisgICAgYXV0byByZXNwb25zZSA9IGFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0
V2l0aFVSTDpyZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50
TGVuZ3RoOnN0cmluZy5sZW5ndGggdGV4dEVuY29kaW5nTmFtZTpAIlVURi04Il0pOwogCi0gICAg
cmV0dXJuIFtzZWxmIGxvYWRTaW11bGF0ZWRSZXF1ZXN0OnJlcXVlc3Qgd2l0aFJlc3BvbnNlOnJl
c3BvbnNlIHJlc3BvbnNlRGF0YTpkYXRhXTsKKyAgICByZXR1cm4gW3NlbGYgbG9hZFNpbXVsYXRl
ZFJlcXVlc3Q6cmVxdWVzdCB3aXRoUmVzcG9uc2U6cmVzcG9uc2UuZ2V0KCkgcmVzcG9uc2VEYXRh
OmRhdGFdOwogfQogCiAtIChXS05hdmlnYXRpb24gKilsb2FkRmlsZVJlcXVlc3Q6KE5TVVJMUmVx
dWVzdCAqKXJlcXVlc3QgYWxsb3dpbmdSZWFkQWNjZXNzVG9VUkw6KE5TVVJMICopcmVhZEFjY2Vz
c1VSTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
c2l0ZURhdGFTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YnNpdGVEYXRhU3RvcmUubW0KaW5kZXggZDE4NmI5ZTBjZDdkN2E1YWFjNGM1MTJlMDcyM2QyNzcz
ZDNmYThiYy4uNTViNWZjOTU1MTY4ZTQ4NDUyY2ZiNzEwY2ViYjZhZGZlOWQwNWE5NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9y
ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0
YVN0b3JlLm1tCkBAIC0xNjYsMTIgKzE2NiwxMiBAQCAtIChCT09MKWlzUGVyc2lzdGVudAogKyAo
TlNTZXQgKilhbGxXZWJzaXRlRGF0YVR5cGVzCiB7CiAgICAgc3RhdGljIGRpc3BhdGNoX29uY2Vf
dCBvbmNlVG9rZW47Ci0gICAgc3RhdGljIE5TU2V0ICphbGxXZWJzaXRlRGF0YVR5cGVzOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNTZXQ+PiBhbGxXZWJzaXRlRGF0YVR5
cGVzOwogICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKLSAgICAgICAgYWxsV2Vic2l0
ZURhdGFUeXBlcyA9IFtbTlNTZXQgYWxsb2NdIGluaXRXaXRoQXJyYXk6QFsgV0tXZWJzaXRlRGF0
YVR5cGVEaXNrQ2FjaGUsIFdLV2Vic2l0ZURhdGFUeXBlRmV0Y2hDYWNoZSwgV0tXZWJzaXRlRGF0
YVR5cGVNZW1vcnlDYWNoZSwgV0tXZWJzaXRlRGF0YVR5cGVPZmZsaW5lV2ViQXBwbGljYXRpb25D
YWNoZSwgV0tXZWJzaXRlRGF0YVR5cGVDb29raWVzLCBXS1dlYnNpdGVEYXRhVHlwZVNlc3Npb25T
dG9yYWdlLCBXS1dlYnNpdGVEYXRhVHlwZUxvY2FsU3RvcmFnZSwgV0tXZWJzaXRlRGF0YVR5cGVJ
bmRleGVkREJEYXRhYmFzZXMsIFdLV2Vic2l0ZURhdGFUeXBlU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbnMsIFdLV2Vic2l0ZURhdGFUeXBlV2ViU1FMRGF0YWJhc2VzIF1dOworICAgICAgICBhbGxX
ZWJzaXRlRGF0YVR5cGVzLmdldCgpID0gYWRvcHROUyhbW05TU2V0IGFsbG9jXSBpbml0V2l0aEFy
cmF5OkBbIFdLV2Vic2l0ZURhdGFUeXBlRGlza0NhY2hlLCBXS1dlYnNpdGVEYXRhVHlwZUZldGNo
Q2FjaGUsIFdLV2Vic2l0ZURhdGFUeXBlTWVtb3J5Q2FjaGUsIFdLV2Vic2l0ZURhdGFUeXBlT2Zm
bGluZVdlYkFwcGxpY2F0aW9uQ2FjaGUsIFdLV2Vic2l0ZURhdGFUeXBlQ29va2llcywgV0tXZWJz
aXRlRGF0YVR5cGVTZXNzaW9uU3RvcmFnZSwgV0tXZWJzaXRlRGF0YVR5cGVMb2NhbFN0b3JhZ2Us
IFdLV2Vic2l0ZURhdGFUeXBlSW5kZXhlZERCRGF0YWJhc2VzLCBXS1dlYnNpdGVEYXRhVHlwZVNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLCBXS1dlYnNpdGVEYXRhVHlwZVdlYlNRTERhdGFiYXNl
cyBdXSk7CiAgICAgfSk7CiAKLSAgICByZXR1cm4gYWxsV2Vic2l0ZURhdGFUeXBlczsKKyAgICBy
ZXR1cm4gYWxsV2Vic2l0ZURhdGFUeXBlcy5nZXQoKS5nZXQoKTsKIH0KIAogLSAoV0tIVFRQQ29v
a2llU3RvcmUgKilodHRwQ29va2llU3RvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1ByZWZlcmVuY2VPYnNlcnZlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1ByZWZlcmVuY2VPYnNlcnZlci5tbQppbmRleCBjMWEzNzc5ZTdmMzg3ZjQ3NDAy
OGQ0MjU3YTYyYTIzYzUzYzFhOWE1Li5lZWZlZDFhMDc5ZGU3OTk2ODAxZTdjMmYzNzA2YjFjOTY5
NjU3NmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QcmVmZXJl
bmNlT2JzZXJ2ZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUHJlZmVy
ZW5jZU9ic2VydmVyLm1tCkBAIC0xMTgsMTIgKzExOCw4IEBAIEBpbXBsZW1lbnRhdGlvbiBXS1By
ZWZlcmVuY2VPYnNlcnZlcgogCiArIChpZClzaGFyZWRJbnN0YW5jZQogewotICAgIHN0YXRpYyBX
S1ByZWZlcmVuY2VPYnNlcnZlciAqaW5zdGFuY2UgPSBuaWw7Ci0KLSAgICBpZiAoIWluc3RhbmNl
KQotICAgICAgICBpbnN0YW5jZSA9IFtbW3NlbGYgY2xhc3NdIGFsbG9jXSBpbml0XTsKLQotICAg
IHJldHVybiBpbnN0YW5jZTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPFdL
UHJlZmVyZW5jZU9ic2VydmVyPj4gaW5zdGFuY2UgPSBhZG9wdE5TKFtbW3NlbGYgY2xhc3NdIGFs
bG9jXSBpbml0XSk7CisgICAgcmV0dXJuIGluc3RhbmNlLmdldCgpLmdldCgpOwogfQogCiAtIChp
bnN0YW5jZXR5cGUpaW5pdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaAppbmRleCA0MGVmNTUzMjgwNjIy
OWNkNmVkOTRhYzM3YTEzNzRhMzMyZmUzMzFkLi5hYTlmNmIxMzg0ZDkzYjhiMjBkNTA5ZWUzMDY0
YmE3NTEwZGYyNDg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9W
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaApAQCAtOTQsNyArOTQsNyBAQCBw
cml2YXRlOgogICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSB2aWRlb0RpbWVuc2lvbnMoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtX3ZpZGVvRGltZW5zaW9uczsgfQogI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgVUlWaWV3Q29udHJvbGxlciAqcHJlc2VudGluZ1ZpZXdDb250cm9sbGVyKCkg
ZmluYWw7Ci0gICAgVUlWaWV3Q29udHJvbGxlciAqY3JlYXRlVmlkZW9GdWxsc2NyZWVuVmlld0Nv
bnRyb2xsZXIoQVZQbGF5ZXJWaWV3Q29udHJvbGxlciopIGZpbmFsOworICAgIFJldGFpblB0cjxV
SVZpZXdDb250cm9sbGVyPiBjcmVhdGVWaWRlb0Z1bGxzY3JlZW5WaWV3Q29udHJvbGxlcihBVlBs
YXllclZpZXdDb250cm9sbGVyKikgZmluYWw7CiAjZW5kaWYKICAgICB2b2lkIHdpbGxFbnRlclBp
Y3R1cmVJblBpY3R1cmUoKSBmaW5hbDsKICAgICB2b2lkIGRpZEVudGVyUGljdHVyZUluUGljdHVy
ZSgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tCmluZGV4IDM4MWJiMWIwNDcyZDE1M2I0
OGFhZDI4ZjRjMDJiN2RkMmIzOTkzMWQuLmU5ODc0YTVkOWNhYjNiZGM5ZTVjZGM4MTU3MGUwODg3
YzY4NTE1ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0KQEAgLTIyNCw5ICsyMjQsOSBAQCBV
SVZpZXdDb250cm9sbGVyICpWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OnByZXNlbnRpbmdW
aWV3Q29udHJvbGxlcigpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVVJVmlld0NvbnRyb2xs
ZXIgKlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6Y3JlYXRlVmlkZW9GdWxsc2NyZWVuVmll
d0NvbnRyb2xsZXIoQVZQbGF5ZXJWaWV3Q29udHJvbGxlciAqYXZQbGF5ZXJWaWV3Q29udHJvbGxl
cikKK1JldGFpblB0cjxVSVZpZXdDb250cm9sbGVyPiBWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRl
eHQ6OmNyZWF0ZVZpZGVvRnVsbHNjcmVlblZpZXdDb250cm9sbGVyKEFWUGxheWVyVmlld0NvbnRy
b2xsZXIgKmF2UGxheWVyVmlld0NvbnRyb2xsZXIpCiB7Ci0gICAgcmV0dXJuIFtbV0tWaWRlb0Z1
bGxTY3JlZW5WaWV3Q29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhBVlBsYXllclZpZXdDb250cm9s
bGVyOmF2UGxheWVyVmlld0NvbnRyb2xsZXJdOworICAgIHJldHVybiBhZG9wdE5TKFtbV0tWaWRl
b0Z1bGxTY3JlZW5WaWV3Q29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhBVlBsYXllclZpZXdDb250
cm9sbGVyOmF2UGxheWVyVmlld0NvbnRyb2xsZXJdKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJJbnNwZWN0b3JQcmVmZXJlbmNlT2Jz
ZXJ2ZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJJbnNwZWN0b3JQcmVm
ZXJlbmNlT2JzZXJ2ZXIubW0KaW5kZXggNzdkNzQyZTEwNTI1ZGYzYTdhOGNkNDYyOTQ3MjI3ODNi
Mjc3YmZhYS4uZGNkNzc0ZmE0OTZkM2YzNzNkYzFkMzc5NTkyMjgyMTUxOGQ4YmUxMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViSW5zcGVjdG9yUHJlZmVyZW5j
ZU9ic2VydmVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYkluc3Bl
Y3RvclByZWZlcmVuY2VPYnNlcnZlci5tbQpAQCAtNDEsMTIgKzQxLDggQEAgQGltcGxlbWVudGF0
aW9uIFdLV2ViSW5zcGVjdG9yUHJlZmVyZW5jZU9ic2VydmVyCiAKICsgKGlkKXNoYXJlZEluc3Rh
bmNlCiB7Ci0gICAgc3RhdGljIFdLV2ViSW5zcGVjdG9yUHJlZmVyZW5jZU9ic2VydmVyICppbnN0
YW5jZSA9IG5pbDsKLQotICAgIGlmICghaW5zdGFuY2UpCi0gICAgICAgIGluc3RhbmNlID0gW1tb
c2VsZiBjbGFzc10gYWxsb2NdIGluaXRdOwotCi0gICAgcmV0dXJuIGluc3RhbmNlOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8V0tXZWJJbnNwZWN0b3JQcmVmZXJlbmNlT2Jz
ZXJ2ZXI+PiBpbnN0YW5jZSA9IGFkb3B0TlMoW1tbc2VsZiBjbGFzc10gYWxsb2NdIGluaXRdKTsK
KyAgICByZXR1cm4gaW5zdGFuY2UuZ2V0KCkuZ2V0KCk7CiB9CiAKIC0gKGluc3RhbmNldHlwZSlp
bml0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Db2NvYS9BdXRoZW50aWNhdG9yUHJlc2VudGVyQ29vcmRpbmF0b3IubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9BdXRoZW50aWNhdG9yUHJlc2Vu
dGVyQ29vcmRpbmF0b3IubW0KaW5kZXggMzBjOTFkN2JhZmEyNWEyMDg1MzMzNDUxNDFlMmViYmE0
ZDJiMDJiMy4uZWU2YWFlZTQxYzUzZDFjOTNiNjQ4YzE0ZWVjNTFlZGI1NmE0ODUyOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvQXV0
aGVudGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0F1dGhlbnRpY2F0b3JQcmVzZW50ZXJDb29y
ZGluYXRvci5tbQpAQCAtNjAsOCArNjAsOCBAQCBBdXRoZW50aWNhdG9yUHJlc2VudGVyQ29vcmRp
bmF0b3I6OkF1dGhlbnRpY2F0b3JQcmVzZW50ZXJDb29yZGluYXRvcihjb25zdCBBdXRoZQogICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKLSAgICBtX3ByZXNlbnRlckRlbGVn
YXRlID0gW1tXS0FTQ0F1dGhvcml6YXRpb25QcmVzZW50ZXJEZWxlZ2F0ZSBhbGxvY10gaW5pdFdp
dGhDb29yZGluYXRvcjoqdGhpc107Ci0gICAgbV9wcmVzZW50ZXIgPSBbYWxsb2NBU0NBdXRob3Jp
emF0aW9uUHJlc2VudGVySW5zdGFuY2UoKSBpbml0XTsKKyAgICBtX3ByZXNlbnRlckRlbGVnYXRl
ID0gYWRvcHROUyhbW1dLQVNDQXV0aG9yaXphdGlvblByZXNlbnRlckRlbGVnYXRlIGFsbG9jXSBp
bml0V2l0aENvb3JkaW5hdG9yOip0aGlzXSk7CisgICAgbV9wcmVzZW50ZXIgPSBhZG9wdE5TKFth
bGxvY0FTQ0F1dGhvcml6YXRpb25QcmVzZW50ZXJJbnN0YW5jZSgpIGluaXRdKTsKICAgICBbbV9w
cmVzZW50ZXIgc2V0RGVsZWdhdGU6bV9wcmVzZW50ZXJEZWxlZ2F0ZS5nZXQoKV07CiAKICAgICBh
dXRvIGNvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKFttYW5hZ2VyID0gbV9tYW5hZ2Vy
XSAoaWQ8QVNDQ3JlZGVudGlhbFByb3RvY29sPiBjcmVkZW50aWFsLCBOU0Vycm9yICplcnJvcikg
bXV0YWJsZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCA5MzdiNjUyMzcyMmExZjYzMTk0MzFhOWM3YTk1
NTczMTQ3ZTRhZDk3Li5hNzU0MzYwNWZmYjBkYjMxNjQ2NmFjZmJiNGQ5NzFmYjY5YjZhNjQ1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24ubW0KQEAgLTMxNzEsMjMgKzMxNzEsMjQgQEAgLSAoTlNBcnJheSAqKXN1cHBv
cnRlZFBhc3RlYm9hcmRUeXBlc0ZvckN1cnJlbnRTZWxlY3Rpb24KIHsKICAgICBpZiAoX3BhZ2Ut
PmVkaXRvclN0YXRlKCkuc2VsZWN0aW9uSXNOb25lKQogICAgICAgICByZXR1cm4gbmlsOwotICAg
IAotICAgIHN0YXRpYyBOU011dGFibGVBcnJheSAqcmljaFR5cGVzID0gbmlsOwotICAgIHN0YXRp
YyBOU011dGFibGVBcnJheSAqcGxhaW5UZXh0VHlwZXMgPSBuaWw7Ci0gICAgaWYgKCFwbGFpblRl
eHRUeXBlcykgewotICAgICAgICBwbGFpblRleHRUeXBlcyA9IFtbTlNNdXRhYmxlQXJyYXkgYWxs
b2NdIGluaXRdOworCisgICAgc3RhdGljIGF1dG8gcGxhaW5UZXh0VHlwZXMgPSBtYWtlTmV2ZXJE
ZXN0cm95ZWQoW10geworICAgICAgICBhdXRvIHBsYWluVGV4dFR5cGVzID0gYWRvcHROUyhbW05T
TXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9O
U19CRUdJTgogICAgICAgICBbcGxhaW5UZXh0VHlwZXMgYWRkT2JqZWN0OihpZClrVVRUeXBlVVJM
XTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgICAgICBbcGxhaW5UZXh0
VHlwZXMgYWRkT2JqZWN0c0Zyb21BcnJheTpVSVBhc3RlYm9hcmRUeXBlTGlzdFN0cmluZ107Ci0K
LSAgICAgICAgcmljaFR5cGVzID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF07CisgICAg
ICAgIHJldHVybiBwbGFpblRleHRUeXBlczsKKyAgICB9KCkpOworICAgIHN0YXRpYyBhdXRvIHJp
Y2hUeXBlcyA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgICAgIGF1dG8gcmljaFR5cGVz
ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CiAgICAgICAgIFtyaWNo
VHlwZXMgYWRkT2JqZWN0OldlYkNvcmU6OldlYkFyY2hpdmVQYm9hcmRUeXBlXTsKICAgICAgICAg
W3JpY2hUeXBlcyBhZGRPYmplY3RzRnJvbUFycmF5OlVJUGFzdGVib2FyZFR5cGVMaXN0SW1hZ2Vd
OwotICAgICAgICBbcmljaFR5cGVzIGFkZE9iamVjdHNGcm9tQXJyYXk6cGxhaW5UZXh0VHlwZXNd
OwotICAgIH0KKyAgICAgICAgW3JpY2hUeXBlcyBhZGRPYmplY3RzRnJvbUFycmF5OnBsYWluVGV4
dFR5cGVzLmdldCgpLmdldCgpXTsKKyAgICAgICAgcmV0dXJuIHJpY2hUeXBlczsKKyAgICB9KCkp
OwogCi0gICAgcmV0dXJuIChfcGFnZS0+ZWRpdG9yU3RhdGUoKS5pc0NvbnRlbnRSaWNobHlFZGl0
YWJsZSkgPyByaWNoVHlwZXMgOiBwbGFpblRleHRUeXBlczsKKyAgICByZXR1cm4gKF9wYWdlLT5l
ZGl0b3JTdGF0ZSgpLmlzQ29udGVudFJpY2hseUVkaXRhYmxlKSA/IHJpY2hUeXBlcy5nZXQoKS5n
ZXQoKSA6IHBsYWluVGV4dFR5cGVzLmdldCgpLmdldCgpOwogfQogCiAjZGVmaW5lIEZPUldBUkRf
QUNUSU9OX1RPX1dLV0VCVklFVyhfYWN0aW9uKSBcCkBAIC05ODI2LDcgKzk4MjcsNyBAQCAtICh2
b2lkKWFzc2lnbkxlZ2FjeURhdGFGb3JDb250ZXh0TWVudUludGVyYWN0aW9uCiAKICAgICBfcGFn
ZS0+c3RhcnRJbnRlcmFjdGlvbldpdGhQb3NpdGlvbkluZm9ybWF0aW9uKF9wb3NpdGlvbkluZm9y
bWF0aW9uKTsKIAotICAgIFVJVmlld0NvbnRyb2xsZXIgKnByZXZpZXdWaWV3Q29udHJvbGxlciA9
IG5pbDsKKyAgICBSZXRhaW5QdHI8VUlWaWV3Q29udHJvbGxlcj4gcHJldmlld1ZpZXdDb250cm9s
bGVyOwogCiAgICAgYXV0byBlbGVtZW50SW5mbyA9IGFkb3B0TlMoW1tfV0tBY3RpdmF0ZWRFbGVt
ZW50SW5mbyBhbGxvY10gX2luaXRXaXRoSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb246
X3Bvc2l0aW9uSW5mb3JtYXRpb24gdXNlckluZm86bmlsXSk7CiAKQEAgLTk4NjcsNyArOTg2OCw3
IEBAIC0gKHZvaWQpYXNzaWduTGVnYWN5RGF0YUZvckNvbnRleHRNZW51SW50ZXJhY3Rpb24KICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIF9jb250ZXh0TWVudUxlZ2Fj
eU1lbnUgPSBtZW51RnJvbUxlZ2FjeVByZXZpZXdPckRlZmF1bHRBY3Rpb25zKHByZXZpZXdWaWV3
Q29udHJvbGxlciwgZGVmYXVsdEFjdGlvbnNGcm9tQXNzaXN0YW50LCBlbGVtZW50SW5mbyk7Cisg
ICAgICAgIF9jb250ZXh0TWVudUxlZ2FjeU1lbnUgPSBtZW51RnJvbUxlZ2FjeVByZXZpZXdPckRl
ZmF1bHRBY3Rpb25zKHByZXZpZXdWaWV3Q29udHJvbGxlci5nZXQoKSwgZGVmYXVsdEFjdGlvbnNG
cm9tQXNzaXN0YW50LCBlbGVtZW50SW5mbyk7CiAKICAgICB9IGVsc2UgaWYgKF9wb3NpdGlvbklu
Zm9ybWF0aW9uLmlzSW1hZ2UgJiYgX3Bvc2l0aW9uSW5mb3JtYXRpb24uaW1hZ2UpIHsKICAgICAg
ICAgTlNVUkwgKm5zVVJMID0gKE5TVVJMICopdXJsOwpAQCAtOTg5MCwxMyArOTg5MSwxMyBAQCAt
ICh2b2lkKWFzc2lnbkxlZ2FjeURhdGFGb3JDb250ZXh0TWVudUludGVyYWN0aW9uCiAgICAgICAg
IGlmIChpbWFnZUluZm8gJiYgW3VpRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rv
cihfd2ViVmlldzpwcmV2aWV3Vmlld0NvbnRyb2xsZXJGb3JJbWFnZTphbHRlcm5hdGVVUkw6ZGVm
YXVsdEFjdGlvbnM6ZWxlbWVudEluZm86KV0pCiAgICAgICAgICAgICBwcmV2aWV3Vmlld0NvbnRy
b2xsZXIgPSBbdWlEZWxlZ2F0ZSBfd2ViVmlldzpzZWxmLndlYlZpZXcgcHJldmlld1ZpZXdDb250
cm9sbGVyRm9ySW1hZ2U6dWlJbWFnZS5nZXQoKSBhbHRlcm5hdGVVUkw6bnNVUkwgZGVmYXVsdEFj
dGlvbnM6ZGVmYXVsdEFjdGlvbnNGcm9tQXNzaXN0YW50LmdldCgpIGVsZW1lbnRJbmZvOmVsZW1l
bnRJbmZvLmdldCgpXTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcHJldmlld1ZpZXdDb250
cm9sbGVyID0gW1tXS0ltYWdlUHJldmlld1ZpZXdDb250cm9sbGVyIGFsbG9jXSBpbml0V2l0aENH
SW1hZ2U6Y2dJbWFnZSBkZWZhdWx0QWN0aW9uczpkZWZhdWx0QWN0aW9uc0Zyb21Bc3Npc3RhbnQu
Z2V0KCkgZWxlbWVudEluZm86ZWxlbWVudEluZm8uZ2V0KCldOworICAgICAgICAgICAgcHJldmll
d1ZpZXdDb250cm9sbGVyID0gYWRvcHROUyhbW1dLSW1hZ2VQcmV2aWV3Vmlld0NvbnRyb2xsZXIg
YWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpjZ0ltYWdlIGRlZmF1bHRBY3Rpb25zOmRlZmF1bHRBY3Rp
b25zRnJvbUFzc2lzdGFudC5nZXQoKSBlbGVtZW50SW5mbzplbGVtZW50SW5mby5nZXQoKV0pOwog
ICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAotICAgICAgICBfY29u
dGV4dE1lbnVMZWdhY3lNZW51ID0gbWVudUZyb21MZWdhY3lQcmV2aWV3T3JEZWZhdWx0QWN0aW9u
cyhwcmV2aWV3Vmlld0NvbnRyb2xsZXIsIGRlZmF1bHRBY3Rpb25zRnJvbUFzc2lzdGFudCwgZWxl
bWVudEluZm8sIF9wb3NpdGlvbkluZm9ybWF0aW9uLnRpdGxlKTsKKyAgICAgICAgX2NvbnRleHRN
ZW51TGVnYWN5TWVudSA9IG1lbnVGcm9tTGVnYWN5UHJldmlld09yRGVmYXVsdEFjdGlvbnMocHJl
dmlld1ZpZXdDb250cm9sbGVyLmdldCgpLCBkZWZhdWx0QWN0aW9uc0Zyb21Bc3Npc3RhbnQsIGVs
ZW1lbnRJbmZvLCBfcG9zaXRpb25JbmZvcm1hdGlvbi50aXRsZSk7CiAgICAgfQogCi0gICAgX2Nv
bnRleHRNZW51TGVnYWN5UHJldmlld0NvbnRyb2xsZXIgPSBwcmV2aWV3Vmlld0NvbnRyb2xsZXI7
CisgICAgX2NvbnRleHRNZW51TGVnYWN5UHJldmlld0NvbnRyb2xsZXIgPSBXVEZNb3ZlKHByZXZp
ZXdWaWV3Q29udHJvbGxlcik7CiB9CiAKIC0gKFVJQ29udGV4dE1lbnVDb25maWd1cmF0aW9uICop
Y29udGV4dE1lbnVJbnRlcmFjdGlvbjooVUlDb250ZXh0TWVudUludGVyYWN0aW9uICopaW50ZXJh
Y3Rpb24gY29uZmlndXJhdGlvbkZvck1lbnVBdExvY2F0aW9uOihDR1BvaW50KWxvY2F0aW9uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tNb3VzZURldmljZU9ic2Vy
dmVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLTW91c2VEZXZpY2VPYnNlcnZl
ci5tbQppbmRleCA0N2ExMjU0NjNlY2E3ZDY4ODViNWE4ZWZhYzIxYzg5YmViZDRkYzAxLi5kZDAw
OTEyYTIzNzhlYmZkNWIwZWU0Nzc2NTc0Y2U0NzkxZDBiMThjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tNb3VzZURldmljZU9ic2VydmVyLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS01vdXNlRGV2aWNlT2JzZXJ2ZXIubW0KQEAgLTQyLDEw
ICs0Miw4IEBAIEBpbXBsZW1lbnRhdGlvbiBXS01vdXNlRGV2aWNlT2JzZXJ2ZXIgewogCiArIChX
S01vdXNlRGV2aWNlT2JzZXJ2ZXIgKilzaGFyZWRJbnN0YW5jZQogewotICAgIHN0YXRpYyBXS01v
dXNlRGV2aWNlT2JzZXJ2ZXIgKmluc3RhbmNlOwotICAgIGlmICghaW5zdGFuY2UpCi0gICAgICAg
IGluc3RhbmNlID0gW1tXS01vdXNlRGV2aWNlT2JzZXJ2ZXIgYWxsb2NdIGluaXRdOwotICAgIHJl
dHVybiBpbnN0YW5jZTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPFdLTW91
c2VEZXZpY2VPYnNlcnZlcj4+IGluc3RhbmNlID0gYWRvcHROUyhbW1dLTW91c2VEZXZpY2VPYnNl
cnZlciBhbGxvY10gaW5pdF0pOworICAgIHJldHVybiBpbnN0YW5jZS5nZXQoKS5nZXQoKTsKIH0K
IAogLSAoaW5zdGFuY2V0eXBlKWluaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS1N0eWx1c0RldmljZU9ic2VydmVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLU3R5bHVzRGV2aWNlT2JzZXJ2ZXIubW0KaW5kZXggYjgzZGM2OGU2NTNlYzMxOTYx
OGQxN2E1YjBlODBkMzZkZjc3MzViMS4uNGQwZDE5YmRkNzRjZjAyOGM3ZDNlMDdiMWQ4YTUyNDU1
MDcxZDgwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLU3R5bHVz
RGV2aWNlT2JzZXJ2ZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLU3R5
bHVzRGV2aWNlT2JzZXJ2ZXIubW0KQEAgLTQ0LDEwICs0NCw4IEBAIEBpbXBsZW1lbnRhdGlvbiBX
S1N0eWx1c0RldmljZU9ic2VydmVyIHsKIAogKyAoV0tTdHlsdXNEZXZpY2VPYnNlcnZlciAqKXNo
YXJlZEluc3RhbmNlCiB7Ci0gICAgc3RhdGljIFdLU3R5bHVzRGV2aWNlT2JzZXJ2ZXIgKmluc3Rh
bmNlOwotICAgIGlmICghaW5zdGFuY2UpCi0gICAgICAgIGluc3RhbmNlID0gW1tXS1N0eWx1c0Rl
dmljZU9ic2VydmVyIGFsbG9jXSBpbml0XTsKLSAgICByZXR1cm4gaW5zdGFuY2U7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxXS1N0eWx1c0RldmljZU9ic2VydmVyPj4gaW5z
dGFuY2UgPSBhZG9wdE5TKFtbV0tTdHlsdXNEZXZpY2VPYnNlcnZlciBhbGxvY10gaW5pdF0pOwor
ICAgIHJldHVybiBpbnN0YW5jZS5nZXQoKS5nZXQoKTsKIH0KIAogLSAoaW5zdGFuY2V0eXBlKWlu
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1RleHRJbnB1dFdp
bmRvd0NvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tUZXh0SW5w
dXRXaW5kb3dDb250cm9sbGVyLm1tCmluZGV4IDliODFlYmNiNTAwYjdiZGE4NGVhMjAxNzY0MzBj
OTU2NzRmY2Q0ZWEuLjM2NDM0NzhmNmVhYmRkNTcxOGJmYzZhZDhiNzJlYmM2YjI5YjlmOWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1RleHRJbnB1dFdpbmRvd0Nv
bnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLVGV4dElucHV0
V2luZG93Q29udHJvbGxlci5tbQpAQCAtMTY0LDExICsxNjQsOCBAQCBAaW1wbGVtZW50YXRpb24g
V0tUZXh0SW5wdXRXaW5kb3dDb250cm9sbGVyCiAKICsgKFdLVGV4dElucHV0V2luZG93Q29udHJv
bGxlciAqKXNoYXJlZFRleHRJbnB1dFdpbmRvd0NvbnRyb2xsZXIKIHsKLSAgICBzdGF0aWMgV0tU
ZXh0SW5wdXRXaW5kb3dDb250cm9sbGVyICp0ZXh0SW5wdXRXaW5kb3dDb250cm9sbGVyOwotICAg
IGlmICghdGV4dElucHV0V2luZG93Q29udHJvbGxlcikKLSAgICAgICAgdGV4dElucHV0V2luZG93
Q29udHJvbGxlciA9IFtbV0tUZXh0SW5wdXRXaW5kb3dDb250cm9sbGVyIGFsbG9jXSBpbml0XTsK
LSAgICAKLSAgICByZXR1cm4gdGV4dElucHV0V2luZG93Q29udHJvbGxlcjsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPFdLVGV4dElucHV0V2luZG93Q29udHJvbGxlcj4+IHRl
eHRJbnB1dFdpbmRvd0NvbnRyb2xsZXIgPSBhZG9wdE5TKFtbV0tUZXh0SW5wdXRXaW5kb3dDb250
cm9sbGVyIGFsbG9jXSBpbml0XSk7CisgICAgcmV0dXJuIHRleHRJbnB1dFdpbmRvd0NvbnRyb2xs
ZXIuZ2V0KCkuZ2V0KCk7CiB9CiAKIC0gKGlkKWluaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9XZWJDb2xvclBpY2tlck1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9XZWJDb2xvclBpY2tlck1hYy5tbQppbmRleCAzOTcxYmFlMTNmNDRmYzI0ZjNi
ODI4MGE4OTk2YWRiOTczMmQ2NjVmLi42ZGExZjk2OGZkODU3YWMzNWVkZWE3NzVhM2M1NmQyYzc3
ZGQyZmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViQ29sb3JQ
aWNrZXJNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkNvbG9yUGlj
a2VyTWFjLm1tCkBAIC0xMzIsMjAgKzEzMiwyMCBAQCBAaW1wbGVtZW50YXRpb24gV0tQb3BvdmVy
Q29sb3JXZWxsCiAKICsgKE5TUG9wb3ZlciAqKV9jb2xvclBvcG92ZXJDcmVhdGVJZk5lY2Vzc2Fy
eTooQk9PTClmb3JjZUNyZWF0aW9uCiB7Ci0gICAgc3RhdGljIE5TUG9wb3ZlciAqY29sb3JQb3Bv
dmVyID0gbmlsOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNQb3BvdmVy
Pj4gY29sb3JQb3BvdmVyOwogICAgIGlmIChmb3JjZUNyZWF0aW9uKSB7Ci0gICAgICAgIE5TUG9w
b3ZlciAqcG9wb3ZlciA9IFtbTlNQb3BvdmVyIGFsbG9jXSBpbml0XTsKKyAgICAgICAgYXV0byBw
b3BvdmVyID0gYWRvcHROUyhbW05TUG9wb3ZlciBhbGxvY10gaW5pdF0pOwogICAgICAgICBbcG9w
b3ZlciBfc2V0UmVxdWlyZXNDb3JyZWN0Q29udGVudEFwcGVhcmFuY2U6WUVTXTsKLSAgICAgICAg
cG9wb3Zlci5iZWhhdmlvciA9IE5TUG9wb3ZlckJlaGF2aW9yVHJhbnNpZW50OworICAgICAgICBb
cG9wb3ZlciBzZXRCZWhhdmlvcjpOU1BvcG92ZXJCZWhhdmlvclRyYW5zaWVudF07CiAKICAgICAg
ICAgYXV0byBjb250cm9sbGVyID0gYWRvcHROUyhbW05TQ2xhc3NGcm9tU3RyaW5nKEAiTlNDb2xv
clBvcG92ZXJDb250cm9sbGVyIikgYWxsb2NdIGluaXRdKTsKLSAgICAgICAgcG9wb3Zlci5jb250
ZW50Vmlld0NvbnRyb2xsZXIgPSBjb250cm9sbGVyLmdldCgpOwotICAgICAgICBbY29udHJvbGxl
ciBzZXRQb3BvdmVyOnBvcG92ZXJdOworICAgICAgICBbcG9wb3ZlciBzZXRDb250ZW50Vmlld0Nv
bnRyb2xsZXI6Y29udHJvbGxlci5nZXQoKV07CisgICAgICAgIFtjb250cm9sbGVyIHNldFBvcG92
ZXI6cG9wb3Zlci5nZXQoKV07CiAKLSAgICAgICAgY29sb3JQb3BvdmVyID0gcG9wb3ZlcjsKKyAg
ICAgICAgY29sb3JQb3BvdmVyLmdldCgpID0gV1RGTW92ZShwb3BvdmVyKTsKICAgICB9CiAKLSAg
ICByZXR1cm4gY29sb3JQb3BvdmVyOworICAgIHJldHVybiBjb2xvclBvcG92ZXIuZ2V0KCkuZ2V0
KCk7CiB9CiAKIC0gKGlkIDxXS1BvcG92ZXJDb2xvcldlbGxEZWxlZ2F0ZT4pd2ViRGVsZWdhdGUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJEYXRhTGlzdFN1Z2dl
c3Rpb25zRHJvcGRvd25NYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViRGF0
YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duTWFjLm1tCmluZGV4IDRkMDkzYmFjZjc1ZjI5ZTk0YzA5
Yzg3MzQ1NTRlYzVkMzU1YWRjZmUuLmQxYTQwYWUwOTVlYmZiY2E5MTIwOTcxYWE5NDljNzk1NGQ1
Mzg4MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJEYXRhTGlz
dFN1Z2dlc3Rpb25zRHJvcGRvd25NYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1dlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bk1hYy5tbQpAQCAtMTQyLDcgKzE0Miw3
IEBAIC0gKGlkKWluaXRXaXRoQ29udGVudFJlY3Q6KE5TUmVjdCljb250ZW50UmVjdCBzdHlsZU1h
c2s6KE5TVUludGVnZXIpc3R5bGVNYXNrIGJhCiAKICAgICBzZWxmLmhhc1NoYWRvdyA9IFlFUzsK
IAotICAgIF9iYWNrZHJvcFZpZXcgPSBbW05TVmlzdWFsRWZmZWN0VmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpjb250ZW50UmVjdF07CisgICAgX2JhY2tkcm9wVmlldyA9IGFkb3B0TlMoW1tOU1Zp
c3VhbEVmZmVjdFZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Y29udGVudFJlY3RdKTsKICAgICBb
X2JhY2tkcm9wVmlldyBzZXRBdXRvcmVzaXppbmdNYXNrOk5TVmlld1dpZHRoU2l6YWJsZSB8IE5T
Vmlld0hlaWdodFNpemFibGVdOwogICAgIFtfYmFja2Ryb3BWaWV3IHNldE1hdGVyaWFsOk5TVmlz
dWFsRWZmZWN0TWF0ZXJpYWxNZW51XTsKICAgICBbX2JhY2tkcm9wVmlldyBzZXRTdGF0ZTpOU1Zp
c3VhbEVmZmVjdFN0YXRlQWN0aXZlXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NSW50ZXJuYWxzLm1tIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01JbnRlcm5hbHMubW0K
aW5kZXggMjQ4NjdkZjM2MWEyZGQ5ZjkzMWM3MGExN2FjZTkwNTAwYmQ3ZWYxZC4uMzZkMWUxMjY2
MWJlMGY4YzUwMjA3OTIyYmY1NThhNzViMTExZWVhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01JbnRlcm5hbHMubW0KKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01J
bnRlcm5hbHMubW0KQEAgLTg0LDkgKzg0LDkgQEAgc3RhdGljIENsYXNzIFdLRE9NTm9kZUNsYXNz
KFdlYkNvcmU6Ok5vZGUqIGltcGwpCiAgICAgcmV0dXJuIG5pbDsKIH0KIAotc3RhdGljIFdLRE9N
Tm9kZSAqaW5pdFdpdGhJbXBsKFdlYkNvcmU6Ok5vZGUqIGltcGwpCitzdGF0aWMgUmV0YWluUHRy
PFdLRE9NTm9kZT4gY3JlYXRlV3JhcHBlcihXZWJDb3JlOjpOb2RlKiBpbXBsKQogewotICAgIHJl
dHVybiBbW1dLRE9NTm9kZUNsYXNzKGltcGwpIGFsbG9jXSBfaW5pdFdpdGhJbXBsOmltcGxdOwor
ICAgIHJldHVybiBhZG9wdE5TKFtbV0tET01Ob2RlQ2xhc3MoaW1wbCkgYWxsb2NdIF9pbml0V2l0
aEltcGw6aW1wbF0pOwogfQogCiBXZWJDb3JlOjpOb2RlKiB0b1dlYkNvcmVOb2RlKFdLRE9NTm9k
ZSAqd3JhcHBlcikKQEAgLTEzMSw5ICsxMzEsOSBAQCBXS0RPTVRleHQgKnRvV0tET01UZXh0KFdl
YkNvcmU6OlRleHQqIGltcGwpCiAKIC8vIC0tIFJhbmdlLiAtLQogCi1zdGF0aWMgV0tET01SYW5n
ZSAqaW5pdFdpdGhJbXBsKFdlYkNvcmU6OlJhbmdlKiBpbXBsKQorc3RhdGljIFJldGFpblB0cjxX
S0RPTVJhbmdlPiBjcmVhdGVXcmFwcGVyKFdlYkNvcmU6OlJhbmdlKiBpbXBsKQogewotICAgIHJl
dHVybiBbW1dLRE9NUmFuZ2UgYWxsb2NdIF9pbml0V2l0aEltcGw6aW1wbF07CisgICAgcmV0dXJu
IGFkb3B0TlMoW1tXS0RPTVJhbmdlIGFsbG9jXSBfaW5pdFdpdGhJbXBsOmltcGxdKTsKIH0KIAog
V2ViQ29yZTo6UmFuZ2UqIHRvV2ViQ29yZVJhbmdlKFdLRE9NUmFuZ2UgKiB3cmFwcGVyKQpAQCAt
MTU1LDcgKzE1NSw3IEBAIHN0YXRpYyBXS0RPTVR5cGUgdG9XS0RPTVR5cGUoV2ViQ29yZVR5cGUg
aW1wbCwgRE9NQ2FjaGU8V2ViQ29yZVR5cGUsIFdLRE9NVHlwZT4mCiAgICAgICAgIHJldHVybiBu
aWw7CiAgICAgaWYgKFdLRE9NVHlwZSB3cmFwcGVyID0gY2FjaGUuZ2V0KGltcGwpKQogICAgICAg
ICByZXR1cm4gcmV0YWluUHRyKHdyYXBwZXIpLmF1dG9yZWxlYXNlKCk7Ci0gICAgYXV0byB3cmFw
cGVyID0gYWRvcHROUyhpbml0V2l0aEltcGwoaW1wbCkpOworICAgIGF1dG8gd3JhcHBlciA9IGNy
ZWF0ZVdyYXBwZXIoaW1wbCk7CiAgICAgaWYgKCF3cmFwcGVyKQogICAgICAgICByZXR1cm4gbmls
OwogICAgIHJldHVybiB3cmFwcGVyLmF1dG9yZWxlYXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvbWFjL0luamVjdGVkQnVuZGxlTWFjLm1t
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL21hYy9JbmplY3RlZEJ1
bmRsZU1hYy5tbQppbmRleCAwMzRiYTk0MmY0YTNiMGVkMjQxMzk2MWIwYThkMWU4OTY4MzQ2NGNi
Li5iZDZlMzlmMGYwZmJkMmQ1YjU2MGNlMWMzNDQ2NzQyYjRmZmUwODlmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvbWFjL0luamVjdGVkQnVuZGxl
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9tYWMv
SW5qZWN0ZWRCdW5kbGVNYWMubW0KQEAgLTIwMywxNCArMjAzLDE0IEBAIGJvb2wgSW5qZWN0ZWRC
dW5kbGU6OmluaXRpYWxpemUoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFy
YW1ldGVycywKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlkIDxXS1dlYlBy
b2Nlc3NQbHVnSW4+IGluc3RhbmNlID0gKGlkIDxXS1dlYlByb2Nlc3NQbHVnSW4+KVsoTlNPYmpl
Y3QgKilbcHJpbmNpcGFsQ2xhc3MgYWxsb2NdIGluaXRdOworICAgIGF1dG8gaW5zdGFuY2UgPSBh
ZG9wdE5TKChpZCA8V0tXZWJQcm9jZXNzUGx1Z0luPilbKE5TT2JqZWN0ICopW3ByaW5jaXBhbENs
YXNzIGFsbG9jXSBpbml0XSk7CiAgICAgaWYgKCFpbnN0YW5jZSkgewogICAgICAgICBXVEZMb2dB
bHdheXMoIkluamVjdGVkQnVuZGxlOjpsb2FkIGZhaWxlZCAtIENvdWxkIG5vdCBpbml0aWFsaXpl
IGFuIGluc3RhbmNlIG9mIHRoZSBwcmluY2lwYWwgY2xhc3MuXG4iKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIAogICAgIFdLV2ViUHJvY2Vzc1BsdWdJbkNvbnRyb2xsZXIqIHBsdWdJ
bkNvbnRyb2xsZXIgPSBXZWJLaXQ6OndyYXBwZXIoKnRoaXMpOwotICAgIFtwbHVnSW5Db250cm9s
bGVyIF9zZXRQcmluY2lwYWxDbGFzc0luc3RhbmNlOmluc3RhbmNlXTsKKyAgICBbcGx1Z0luQ29u
dHJvbGxlciBfc2V0UHJpbmNpcGFsQ2xhc3NJbnN0YW5jZTppbnN0YW5jZS5nZXQoKV07CiAKICAg
ICBpZiAoW2luc3RhbmNlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoYWRkaXRpb25hbENs
YXNzZXNGb3JQYXJhbWV0ZXJDb2RlcildKQogICAgICAgICBbcGx1Z0luQ29udHJvbGxlciBleHRl
bmRDbGFzc2VzRm9yUGFyYW1ldGVyQ29kZXI6W2luc3RhbmNlIGFkZGl0aW9uYWxDbGFzc2VzRm9y
UGFyYW1ldGVyQ29kZXJdXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL01p
c2MvV2ViR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9z
L01pc2MvV2ViR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbQppbmRleCA2MWJjYWMyNjYyZGUwOWZm
NmQ1ODU1NzY5ZjU5NDAzOTJiYzVmYzNhLi5kZTdlNDM5ZmI5ZDVlZmE0YjYxODEyMDFlMjFiNzc4
MDY5MTRmOWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9NaXNjL1dlYkdl
b2xvY2F0aW9uUHJvdmlkZXJJT1MubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvTWlz
Yy9XZWJHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCkBAIC05OCwxMSArOTgsMTEgQEAgLSAodm9p
ZClkZWFsbG9jCiArIChXZWJHZW9sb2NhdGlvblByb3ZpZGVySU9TICopc2hhcmVkR2VvbG9jYXRp
b25Qcm92aWRlcgogewogICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZTsKLSAgICBzdGF0
aWMgV2ViR2VvbG9jYXRpb25Qcm92aWRlcklPUyAqc2hhcmVkR2VvbG9jYXRpb25Qcm92aWRlcjsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPFdlYkdlb2xvY2F0aW9uUHJvdmlk
ZXJJT1M+PiBzaGFyZWRHZW9sb2NhdGlvblByb3ZpZGVyOwogICAgIGRpc3BhdGNoX29uY2UoJm9u
Y2UsIF57Ci0gICAgICAgIHNoYXJlZEdlb2xvY2F0aW9uUHJvdmlkZXIgPSBbW1dlYkdlb2xvY2F0
aW9uUHJvdmlkZXJJT1MgYWxsb2NdIGluaXRdOworICAgICAgICBzaGFyZWRHZW9sb2NhdGlvblBy
b3ZpZGVyLmdldCgpID0gYWRvcHROUyhbW1dlYkdlb2xvY2F0aW9uUHJvdmlkZXJJT1MgYWxsb2Nd
IGluaXRdKTsKICAgICB9KTsKLSAgICByZXR1cm4gc2hhcmVkR2VvbG9jYXRpb25Qcm92aWRlcjsK
KyAgICByZXR1cm4gc2hhcmVkR2VvbG9jYXRpb25Qcm92aWRlci5nZXQoKS5nZXQoKTsKIH0KIAog
LSAodm9pZClzdXNwZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9EZWZh
dWx0RGVsZWdhdGVzL1dlYkRlZmF1bHRVSURlbGVnYXRlLm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRGVmYXVsdERlbGVnYXRlcy9XZWJEZWZhdWx0VUlEZWxlZ2F0ZS5tbQppbmRleCBkYmVj
ZWQ1NjQ5NjdiZmYxY2U1OGUyZDRmOTAwZGY0YWE2NDJlMjZkLi4xNWUxMGM2MDUzMmExZjVmMGVm
ZDRjOWZjNjIyYTE2MDk4OTY5NWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9EZWZhdWx0RGVsZWdhdGVzL1dlYkRlZmF1bHRVSURlbGVnYXRlLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RlZmF1bHREZWxlZ2F0ZXMvV2ViRGVmYXVsdFVJRGVsZWdhdGUubW0K
QEAgLTMxLDYgKzMxLDcgQEAKICNpbXBvcnQgIldlYlR5cGVzSW50ZXJuYWwuaCIKICNpbXBvcnQg
IldlYlVJRGVsZWdhdGVQcml2YXRlLmgiCiAjaW1wb3J0ICJXZWJWaWV3LmgiCisjaW1wb3J0IDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogI2lmIFBM
QVRGT1JNKE1BQykKQEAgLTUxLDggKzUyLDYgQEAgQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV2Vi
RGVmYXVsdFVJRGVsZWdhdGUKIAotc3RhdGljIFdlYkRlZmF1bHRVSURlbGVnYXRlICpzaGFyZWRE
ZWxlZ2F0ZSA9IG5pbDsKLQogLy8gUmV0dXJuIGEgb2JqZWN0IHdpdGggdmFuaWxsYSBpbXBsZW1l
bnRhdGlvbnMgb2YgdGhlIHByb3RvY29sJ3MgbWV0aG9kcwogLy8gTm90ZSB0aGlzIGZlYXR1cmUg
cmVsaWVzIG9uIG91ciBkZWZhdWx0IGRlbGVnYXRlIGJlaW5nIHN0YXRlbGVzcy4gVGhpcwogLy8g
aXMgcHJvYmFibHkgYW4gaW52YWxpZCBhc3N1bXB0aW9uIGZvciB0aGUgV2ViVUlEZWxlZ2F0ZS4K
QEAgLTYwLDkgKzU5LDggQEAgc3RhdGljIFdlYkRlZmF1bHRVSURlbGVnYXRlICpzaGFyZWREZWxl
Z2F0ZSA9IG5pbDsKIC8vIHdvbid0IGJlIGFibGUgdG8gdXNlIGEgc2luZ2xldG9uLgogKyAoV2Vi
RGVmYXVsdFVJRGVsZWdhdGUgKilzaGFyZWRVSURlbGVnYXRlCiB7Ci0gICAgaWYgKCFzaGFyZWRE
ZWxlZ2F0ZSkKLSAgICAgICAgc2hhcmVkRGVsZWdhdGUgPSBbW1dlYkRlZmF1bHRVSURlbGVnYXRl
IGFsbG9jXSBpbml0XTsKLSAgICByZXR1cm4gc2hhcmVkRGVsZWdhdGU7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFJldGFpblB0cjxXZWJEZWZhdWx0VUlEZWxlZ2F0ZT4+IHNoYXJlZERlbGVn
YXRlID0gYWRvcHROUyhbW1dlYkRlZmF1bHRVSURlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAg
cmV0dXJuIHNoYXJlZERlbGVnYXRlLmdldCgpLmdldCgpOwogfQogCiAtIChXZWJWaWV3ICopd2Vi
VmlldzogKFdlYlZpZXcgKil3diBjcmVhdGVXZWJWaWV3V2l0aFJlcXVlc3Q6KE5TVVJMUmVxdWVz
dCAqKXJlcXVlc3Qgd2luZG93RmVhdHVyZXM6KE5TRGljdGlvbmFyeSAqKWZlYXR1cmVzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbQppbmRl
eCA4MTBmNjdiN2E4NThjZjdiYWQ4MDg1MjIwY2Y4OWJkYzNkMjEwYTZkLi4zNTY5Nzk2OWQ0ODA2
MDc3Y2ZmODNlMjAwNjYzMzkxZjRlZWFlOTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW0KQEAgLTE2MSwxMyArMTYxLDEzIEBAIC0g
KHZvaWQpZGVhbGxvYwogLSAoaWQpY29weVdpdGhab25lOihOU1pvbmUgKil6b25lCiB7CiAgICAg
V2ViQ29yZVRocmVhZFZpb2xhdGlvbkNoZWNrUm91bmRPbmUoKTsKLSAgICBXZWJIaXN0b3J5SXRl
bSAqY29weSA9IFtbW3NlbGYgY2xhc3NdIGFsbG9jXSBpbml0V2l0aFdlYkNvcmVIaXN0b3J5SXRl
bTpjb3JlKF9wcml2YXRlKS0+Y29weSgpXTsKKyAgICBSZXRhaW5QdHI8V2ViSGlzdG9yeUl0ZW0+
IGNvcHkgPSBhZG9wdE5TKFtbW3NlbGYgY2xhc3NdIGFsbG9jXSBpbml0V2l0aFdlYkNvcmVIaXN0
b3J5SXRlbTpjb3JlKF9wcml2YXRlKS0+Y29weSgpXSk7CiAKICAgICBjb3B5LT5fcHJpdmF0ZS0+
X2xhc3RWaXNpdGVkVGltZSA9IF9wcml2YXRlLT5fbGFzdFZpc2l0ZWRUaW1lOwogCi0gICAgaGlz
dG9yeUl0ZW1XcmFwcGVycygpLnNldChjb3JlKGNvcHktPl9wcml2YXRlKSwgY29weSk7CisgICAg
aGlzdG9yeUl0ZW1XcmFwcGVycygpLnNldChjb3JlKGNvcHktPl9wcml2YXRlKSwgY29weS5nZXQo
KSk7CiAKLSAgICByZXR1cm4gY29weTsKKyAgICByZXR1cm4gY29weS5sZWFrUmVmKCk7CiB9CiAK
IC8vIEZJWE1FOiBOZWVkIHRvIGRlY2lkZSBpZiB0aGlzIGNsYXNzIGV2ZXIgcmV0dXJucyBVUkxz
IGFuZCBkZWNpZGUgb24gdGhlIG5hbWUgb2YgdGhpcyBtZXRob2QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViSWNvbkRhdGFiYXNlLm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvTWlzYy9XZWJJY29uRGF0YWJhc2UubW0KaW5kZXggNTk0NTFhZGNlYmQ2MGRj
MDI5ZDhkYmNmM2FkNjE0MTUzMmRkYjc2Ni4uN2VhNjczNzk0Zjc3OGQ4YTlkOTUwY2FjNGRlYzQw
NmU1ZWZjNWQyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJJ
Y29uRGF0YWJhc2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJJY29u
RGF0YWJhc2UubW0KQEAgLTEwNSwxNiArMTA1LDE2IEBAICsgKHZvaWQpaW5pdGlhbGl6ZQogCiAr
IChXZWJJY29uRGF0YWJhc2UgKilzaGFyZWRJY29uRGF0YWJhc2UKIHsKLSAgICBzdGF0aWMgV2Vi
SWNvbkRhdGFiYXNlICpkYXRhYmFzZTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWlu
UHRyPFdlYkljb25EYXRhYmFzZT4+IGRhdGFiYXNlOwogICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNl
X3Qgb25jZTsKICAgICBkaXNwYXRjaF9vbmNlKCZvbmNlLCBeIHsKICAgICAgICAgaWYgKGxpbmtl
ZE9uT3JBZnRlcihXZWJDb3JlOjpTREtWZXJzaW9uOjpGaXJzdFdpdGhXZWJJY29uRGF0YWJhc2VX
YXJuaW5nKSkKICAgICAgICAgICAgIE5TTG9nKEAiK1tXZWJJY29uRGF0YWJhc2Ugc2hhcmVkSWNv
bkRhdGFiYXNlXSBpcyBub3QgQVBJIGFuZCBzaG91bGQgbm90IGJlIHVzZWQuIFdlYkljb25EYXRh
YmFzZSBubyBsb25nZXIgaGFuZGxlcyBpY29uIGxvYWRpbmcgYW5kIGl0IHdpbGwgYmUgcmVtb3Zl
ZCBpbiBhIGZ1dHVyZSByZWxlYXNlLiIpOwogCi0gICAgICAgIGRhdGFiYXNlID0gW1tXZWJJY29u
RGF0YWJhc2UgYWxsb2NdIGluaXRdOworICAgICAgICBkYXRhYmFzZS5nZXQoKSA9IGFkb3B0TlMo
W1tXZWJJY29uRGF0YWJhc2UgYWxsb2NdIGluaXRdKTsKICAgICB9KTsKIAotICAgIHJldHVybiBk
YXRhYmFzZTsKKyAgICByZXR1cm4gZGF0YWJhc2UuZ2V0KCkuZ2V0KCk7CiB9CiAKIC0gKGlkKWlu
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNQYXN0ZWJv
YXJkRXh0cmFzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU1Bhc3RlYm9h
cmRFeHRyYXMubW0KaW5kZXggZDk2MGQxOGNjMGVkMmVlY2QwZjkwYzg0NWFlMDVjZDc0ZWZiZDcw
Yy4uZmU2YTU3NzczMDlhMTBjMjkyODA0YWYyNjIwYTcwZDljNzY3Y2EyMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU1Bhc3RlYm9hcmRFeHRyYXMubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU1Bhc3RlYm9hcmRFeHRyYXMubW0K
QEAgLTcxLDE3ICs3MSwxNCBAQCArIChOU0FycmF5ICopX3dlYl93cml0YWJsZVR5cGVzRm9yVVJM
CiAgICAgcmV0dXJuIHR5cGVzOwogfQogCi1zdGF0aWMgaW5saW5lIE5TQXJyYXkgKl9jcmVhdGVX
cml0YWJsZVR5cGVzRm9ySW1hZ2VXaXRob3V0QXJjaGl2ZSgpCi17Ci0gICAgTlNNdXRhYmxlQXJy
YXkgKnR5cGVzID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOmxlZ2Fj
eVRJRkZQYXN0ZWJvYXJkVHlwZSgpLCBuaWxdOwotICAgIFt0eXBlcyBhZGRPYmplY3RzRnJvbUFy
cmF5OltOU1Bhc3RlYm9hcmQgX3dlYl93cml0YWJsZVR5cGVzRm9yVVJMXV07Ci0gICAgcmV0dXJu
IHR5cGVzOwotfQotCiBzdGF0aWMgTlNBcnJheSAqX3dyaXRhYmxlVHlwZXNGb3JJbWFnZVdpdGhv
dXRBcmNoaXZlICh2b2lkKQogewotICAgIHN0YXRpYyBOU0FycmF5ICp0eXBlcyA9IF9jcmVhdGVX
cml0YWJsZVR5cGVzRm9ySW1hZ2VXaXRob3V0QXJjaGl2ZSgpOwotICAgIHJldHVybiB0eXBlczsK
KyAgICBzdGF0aWMgYXV0byB0eXBlcyA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgICAg
IGF1dG8gdHlwZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoT2Jq
ZWN0czpsZWdhY3lUSUZGUGFzdGVib2FyZFR5cGUoKSwgbmlsXSk7CisgICAgICAgIFt0eXBlcyBh
ZGRPYmplY3RzRnJvbUFycmF5OltOU1Bhc3RlYm9hcmQgX3dlYl93cml0YWJsZVR5cGVzRm9yVVJM
XV07CisgICAgICAgIHJldHVybiB0eXBlczsKKyAgICB9KCkpOworICAgIHJldHVybiB0eXBlcy5n
ZXQoKS5nZXQoKTsKIH0KIAogc3RhdGljIGlubGluZSBOU0FycmF5ICpfY3JlYXRlV3JpdGFibGVU
eXBlc0ZvckltYWdlV2l0aEFyY2hpdmUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCmluZGV4IDJk
ZGE3YjYzOTNjZWNjZGM5YzgxMmM2MzgzOTE4OGQ2YTQzNWQxNDguLjYzYjg0YjIzNDRkMThiNTI1
MGJlMGNkMmVmZWQ2YmEyYzNkMDllNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcubW0KQEAgLTQz
NCw3ICs0MzQsNyBAQCAtICh2b2lkKWNhY2hlU25hcHNob3QKICAgICBpZiAoIWJvdW5kc1NpemUu
aGVpZ2h0IHx8ICFib3VuZHNTaXplLndpZHRoKQogICAgICAgICByZXR1cm47CiAKLSAgICBOU0lt
YWdlICpzbmFwc2hvdCA9IFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhTaXplOmJvdW5kc1NpemVd
OworICAgIGF1dG8gc25hcHNob3QgPSBhZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhT
aXplOmJvdW5kc1NpemVdKTsKICAgICAgICAgCiAgICAgX3NuYXBzaG90dGluZyA9IFlFUzsKICAg
ICBbc25hcHNob3QgbG9ja0ZvY3VzXTsKQEAgLTQ0Miw3ICs0NDIsNyBAQCAtICh2b2lkKWNhY2hl
U25hcHNob3QKICAgICBbc25hcHNob3QgdW5sb2NrRm9jdXNdOwogICAgIF9zbmFwc2hvdHRpbmcg
PSBOTzsKICAgICAKLSAgICBfY2FjaGVkU25hcHNob3QgPSBhZG9wdE5TKHNuYXBzaG90KTsKKyAg
ICBfY2FjaGVkU25hcHNob3QgPSBXVEZNb3ZlKHNuYXBzaG90KTsKIH0KIAogLSAodm9pZCljbGVh
ckNhY2hlZFNuYXBzaG90CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVn
aW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
UGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5tbQppbmRleCA1NTYzZDA5YmQ1NmMwYjI2
ZTZkOTFkMDdmY2Q3NThkZjE4MGYwYzBjLi5mODg5MGQwNTE2YjIxMmFjZmU3Njk2NjQyNWRlNTQ0
MTA0YzlhNjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dl
Yk5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1Bs
dWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0KQEAgLTU0OCwxMCArNTQ4LDEwIEBAIHZv
aWQgV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRlbGl2ZXJEYXRhKCkKIAogICAgIGlmICh0b3Rh
bEJ5dGVzRGVsaXZlcmVkID4gMCkgewogICAgICAgICBpZiAodG90YWxCeXRlc0RlbGl2ZXJlZCA8
IHRvdGFsQnl0ZXMpIHsKLSAgICAgICAgICAgIE5TTXV0YWJsZURhdGEgKm5ld0RlbGl2ZXJ5RGF0
YSA9IFtbTlNNdXRhYmxlRGF0YSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTp0b3RhbEJ5dGVzIC0g
dG90YWxCeXRlc0RlbGl2ZXJlZF07CisgICAgICAgICAgICBhdXRvIG5ld0RlbGl2ZXJ5RGF0YSA9
IGFkb3B0TlMoW1tOU011dGFibGVEYXRhIGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OnRvdGFsQnl0
ZXMgLSB0b3RhbEJ5dGVzRGVsaXZlcmVkXSk7CiAgICAgICAgICAgICBbbmV3RGVsaXZlcnlEYXRh
IGFwcGVuZEJ5dGVzOnN0YXRpY19jYXN0PGNoYXIqPihjb25zdF9jYXN0PHZvaWQqPihbbV9kZWxp
dmVyeURhdGEuZ2V0KCkgYnl0ZXNdKSkgKyB0b3RhbEJ5dGVzRGVsaXZlcmVkIGxlbmd0aDp0b3Rh
bEJ5dGVzIC0gdG90YWxCeXRlc0RlbGl2ZXJlZF07CiAgICAgICAgICAgICAKLSAgICAgICAgICAg
IG1fZGVsaXZlcnlEYXRhID0gYWRvcHROUyhuZXdEZWxpdmVyeURhdGEpOworICAgICAgICAgICAg
bV9kZWxpdmVyeURhdGEgPSBXVEZNb3ZlKG5ld0RlbGl2ZXJ5RGF0YSk7CiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICBbbV9kZWxpdmVyeURhdGEuZ2V0KCkgc2V0TGVuZ3RoOjBdOwogICAg
ICAgICAgICAgaWYgKG1fcmVhc29uICE9IFdFQl9SRUFTT05fTk9ORSkgCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYlBsdWdpbkNvbnRyb2xsZXIubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYlBsdWdpbkNvbnRyb2xsZXIubW0KaW5k
ZXggN2I4MmRlZjA2YWYwYzEwOWUyNzgwOGYyY2Y3YjUwZjExZWNiMGQyOS4uYTM3NGVkYWFhN2Vj
MzAzNjM0OWZkNzJkNTdiNjFkZTZjZTdlNDRjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvUGx1Z2lucy9XZWJQbHVnaW5Db250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViUGx1Z2luQ29udHJvbGxlci5tbQpAQCAtOTgsNyArOTgs
MTEgQEAgc3RhdGljIHZvaWQgaW5zdGFsbEZsaXA0TWFjUGx1Z0luV29ya2Fyb3VuZElmTmVjZXNz
YXJ5KCk7CiAjZW5kaWYKIAogCi1zdGF0aWMgTlNNdXRhYmxlU2V0ICpwbHVnaW5WaWV3cyA9IG5p
bDsKK3N0YXRpYyBSZXRhaW5QdHI8TlNNdXRhYmxlU2V0PiYgcGx1Z2luVmlld3MoKQoreworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNNdXRhYmxlU2V0Pj4gcGx1Z2luVmll
d3M7CisgICAgcmV0dXJuIHBsdWdpblZpZXdzOworfQogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKIHN0YXRpYyB2b2lkIGluaXRpYWxpemVBdWRpb1Nlc3Npb24oKQpAQCAtMTQ4LDEwICsxNTIs
MTAgQEAgLSAoTlNWaWV3ICopcGx1Z0luVmlld1dpdGhBcmd1bWVudHM6KE5TRGljdGlvbmFyeSAq
KWFyZ3VtZW50cyBmcm9tUGx1Z2luUGFja2FnZToKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICB9
CiAgICAgCi0gICAgaWYgKHBsdWdpblZpZXdzID09IG5pbCkgewotICAgICAgICBwbHVnaW5WaWV3
cyA9IFtbTlNNdXRhYmxlU2V0IGFsbG9jXSBpbml0XTsKLSAgICB9Ci0gICAgW3BsdWdpblZpZXdz
IGFkZE9iamVjdDp2aWV3XTsKKyAgICBhdXRvJiB2aWV3cyA9IHBsdWdpblZpZXdzKCk7CisgICAg
aWYgKCF2aWV3cykKKyAgICAgICAgdmlld3MgPSBhZG9wdE5TKFtbTlNNdXRhYmxlU2V0IGFsbG9j
XSBpbml0XSk7CisgICAgW3ZpZXdzIGFkZE9iamVjdDp2aWV3XTsKIAogICAgIHJldHVybiB2aWV3
OwogfQpAQCAtMTU5LDE4ICsxNjMsMTkgQEAgLSAoTlNWaWV3ICopcGx1Z0luVmlld1dpdGhBcmd1
bWVudHM6KE5TRGljdGlvbmFyeSAqKWFyZ3VtZW50cyBmcm9tUGx1Z2luUGFja2FnZToKICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogKyAodm9pZClhZGRQbHVnSW5WaWV3OihOU1ZpZXcgKil2aWV3
CiB7Ci0gICAgaWYgKHBsdWdpblZpZXdzID09IG5pbCkKLSAgICAgICAgcGx1Z2luVmlld3MgPSBb
W05TTXV0YWJsZVNldCBhbGxvY10gaW5pdF07CisgICAgYXV0byYgdmlld3MgPSBwbHVnaW5WaWV3
cygpOworICAgIGlmICghdmlld3MpCisgICAgICAgIHZpZXdzID0gYWRvcHROUyhbW05TTXV0YWJs
ZVNldCBhbGxvY10gaW5pdF0pOwogCiAgICAgQVNTRVJUKHZpZXcpOwogICAgIGlmICh2aWV3KQot
ICAgICAgICBbcGx1Z2luVmlld3MgYWRkT2JqZWN0OnZpZXddOworICAgICAgICBbdmlld3MgYWRk
T2JqZWN0OnZpZXddOwogfQogI2VuZGlmCiAKICsgKEJPT0wpaXNQbHVnSW5WaWV3OihOU1ZpZXcg
Kil2aWV3CiB7Ci0gICAgcmV0dXJuIFtwbHVnaW5WaWV3cyBjb250YWluc09iamVjdDp2aWV3XTsK
KyAgICByZXR1cm4gW3BsdWdpblZpZXdzKCkgY29udGFpbnNPYmplY3Q6dmlld107CiB9CiAKIC0g
KGlkKWluaXRXaXRoRG9jdW1lbnRWaWV3OihOU1ZpZXcgKil2aWV3CkBAIC0zODUsNyArMzkwLDcg
QEAgLSAodm9pZClkZXN0cm95UGx1Z2luOihOU1ZpZXcgKil2aWV3CiAgICAgICAgICAgICBmcmFt
ZS0+c2NyaXB0KCkuY2xlYW51cFNjcmlwdE9iamVjdHNGb3JQbHVnaW4oc2VsZik7CiAjZW5kaWYK
ICAgICAgICAgCi0gICAgICAgIFtwbHVnaW5WaWV3cyByZW1vdmVPYmplY3Q6dmlld107CisgICAg
ICAgIFtwbHVnaW5WaWV3cygpIHJlbW92ZU9iamVjdDp2aWV3XTsKICNpZiAhUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICAgICAgW1tfZG9jdW1lbnRWaWV3IF93ZWJWaWV3XSByZW1vdmVQbHVnaW5J
bnN0YW5jZVZpZXc6dmlld107CiAjZW5kaWYKQEAgLTQzMyw3ICs0MzgsNyBAQCAtICh2b2lkKWRl
c3Ryb3lBbGxQbHVnaW5zCiAgICAgICAgICAgICBmcmFtZS0+c2NyaXB0KCkuY2xlYW51cFNjcmlw
dE9iamVjdHNGb3JQbHVnaW4oc2VsZik7CiAjZW5kaWYKICAgICAgICAgCi0gICAgICAgIFtwbHVn
aW5WaWV3cyByZW1vdmVPYmplY3Q6YVZpZXddOworICAgICAgICBbcGx1Z2luVmlld3MoKSByZW1v
dmVPYmplY3Q6YVZpZXddOwogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBbW19k
b2N1bWVudFZpZXcgX3dlYlZpZXddIHJlbW92ZVBsdWdpbkluc3RhbmNlVmlldzphVmlld107CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViUGx1
Z2luRGF0YWJhc2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYlBsdWdp
bkRhdGFiYXNlLm1tCmluZGV4IGI1OWNlNGJjZGY4YTUzNzFjMjFmNmYwZjMzODFlZWYzZTBkN2Zl
ODMuLjAxYzNkZmI4NDA3NDY5OWMwMjU0MDVkODg0N2FjZGZlNjNlMmM2ODUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViUGx1Z2luRGF0YWJhc2UubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJQbHVnaW5EYXRhYmFzZS5tbQpA
QCAtNjEsMjcgKzYxLDMyIEBAIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdlYlBsdWdpbkRhdGFi
YXNlCiAKLXN0YXRpYyBXZWJQbHVnaW5EYXRhYmFzZSAqc2hhcmVkRGF0YWJhc2UgPSBuaWw7Citz
dGF0aWMgUmV0YWluUHRyPFdlYlBsdWdpbkRhdGFiYXNlPiYgc2hhcmVkRGF0YWJhc2UoKQorewor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8V2ViUGx1Z2luRGF0YWJhc2U+PiBz
aGFyZWREYXRhYmFzZTsKKyAgICByZXR1cm4gc2hhcmVkRGF0YWJhc2U7Cit9CiAKICsgKFdlYlBs
dWdpbkRhdGFiYXNlICopc2hhcmVkRGF0YWJhc2UgCiB7Ci0gICAgaWYgKCFzaGFyZWREYXRhYmFz
ZSkgewotICAgICAgICBzaGFyZWREYXRhYmFzZSA9IFtbV2ViUGx1Z2luRGF0YWJhc2UgYWxsb2Nd
IGluaXRdOwotICAgICAgICBbc2hhcmVkRGF0YWJhc2Ugc2V0UGx1Z0luUGF0aHM6W3NlbGYgX2Rl
ZmF1bHRQbHVnSW5QYXRoc11dOwotICAgICAgICBbc2hhcmVkRGF0YWJhc2UgcmVmcmVzaF07Cisg
ICAgYXV0byYgZGF0YWJhc2UgPSBzaGFyZWREYXRhYmFzZSgpOworICAgIGlmICghZGF0YWJhc2Up
IHsKKyAgICAgICAgZGF0YWJhc2UgPSBhZG9wdE5TKFtbV2ViUGx1Z2luRGF0YWJhc2UgYWxsb2Nd
IGluaXRdKTsKKyAgICAgICAgW2RhdGFiYXNlIHNldFBsdWdJblBhdGhzOltzZWxmIF9kZWZhdWx0
UGx1Z0luUGF0aHNdXTsKKyAgICAgICAgW2RhdGFiYXNlIHJlZnJlc2hdOwogICAgIH0KICAgICAK
LSAgICByZXR1cm4gc2hhcmVkRGF0YWJhc2U7CisgICAgcmV0dXJuIGRhdGFiYXNlLmdldCgpOwog
fQogCiArIChXZWJQbHVnaW5EYXRhYmFzZSAqKXNoYXJlZERhdGFiYXNlSWZFeGlzdHMKIHsKLSAg
ICByZXR1cm4gc2hhcmVkRGF0YWJhc2U7CisgICAgcmV0dXJuIHNoYXJlZERhdGFiYXNlKCkuZ2V0
KCk7CiB9CiAKICsgKHZvaWQpY2xvc2VTaGFyZWREYXRhYmFzZSAKIHsKLSAgICBbc2hhcmVkRGF0
YWJhc2UgY2xvc2VdOworICAgIFtzaGFyZWREYXRhYmFzZSgpIGNsb3NlXTsKIH0KIAogc3RhdGlj
IHZvaWQgY2hlY2tDYW5kaWRhdGUoV2ViQmFzZVBsdWdpblBhY2thZ2UgKiBfX3N0cm9uZyAqY3Vy
cmVudFBsdWdpbiwgV2ViQmFzZVBsdWdpblBhY2thZ2UgKiBfX3N0cm9uZyAqY2FuZGlkYXRlUGx1
Z2luKQpAQCAtMzE4LDcgKzMyMyw3IEBAIC0gKHZvaWQpcmVmcmVzaAogICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAoc2VsZiA9PSBzaGFy
ZWREYXRhYmFzZSkKKyAgICAgICAgICAgIGlmIChzZWxmID09IHNoYXJlZERhdGFiYXNlKCkpCiAg
ICAgICAgICAgICAgICAgW1dlYlZpZXcgX3JlZ2lzdGVyUGx1Z2luTUlNRVR5cGU6TUlNRVR5cGVd
OwogICAgICAgICB9CiAgICAgfQpAQCAtNDE0LDcgKzQxOSw3IEBAICsgKE5TQXJyYXkgKilfZGVm
YXVsdFBsdWdJblBhdGhzCiAKIC0gKE5TQXJyYXkgKilfcGx1Z0luUGF0aHMKIHsKLSAgICBpZiAo
c2VsZiA9PSBzaGFyZWREYXRhYmFzZSAmJiBhZGRpdGlvbmFsV2ViUGx1Z0luUGF0aHMoKSkgewor
ICAgIGlmIChzZWxmID09IHNoYXJlZERhdGFiYXNlKCkgJiYgYWRkaXRpb25hbFdlYlBsdWdJblBh
dGhzKCkpIHsKICAgICAgICAgLy8gQWRkIGFkZGl0aW9uYWxXZWJQbHVnSW5QYXRocyB0byB0aGUg
Z2xvYmFsIFdlYlBsdWdpbkRhdGFiYXNlLiAgV2UgZG8gdGhpcyBoZXJlIGZvcgogICAgICAgICAv
LyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGggZWFybGllciB2ZXJzaW9ucyBvZiB0aGUgK3Nl
dEFkZGl0aW9uYWxXZWJQbHVnSW5QYXRoczogU1BJLAogICAgICAgICAvLyB3aGljaCBzaW1wbHkg
c2F2ZWQgYSBjb3B5IG9mIHRoZSBhZGRpdGlvbmFsIHBhdGhzIGFuZCBkaWQgbm90IGNhdXNlIHRo
ZSBwbHVnaW4gREIgdG8gCkBAIC00NDUsNyArNDUwLDcgQEAgLSAodm9pZClfcmVtb3ZlUGx1Z2lu
OihXZWJCYXNlUGx1Z2luUGFja2FnZSAqKXBsdWdpbgogICAgICAgICBOU1N0cmluZyAqTUlNRVR5
cGUgPSBwbHVnaW5JbmZvLm1pbWVzW2ldLnR5cGU7CiAKICAgICAgICAgaWYgKFtyZWdpc3RlcmVk
TUlNRVR5cGVzIGNvbnRhaW5zT2JqZWN0Ok1JTUVUeXBlXSkgewotICAgICAgICAgICAgaWYgKHNl
bGYgPT0gc2hhcmVkRGF0YWJhc2UpCisgICAgICAgICAgICBpZiAoc2VsZiA9PSBzaGFyZWREYXRh
YmFzZSgpKQogICAgICAgICAgICAgICAgIFtXZWJWaWV3IF91bnJlZ2lzdGVyUGx1Z2luTUlNRVR5
cGU6TUlNRVR5cGVdOwogICAgICAgICAgICAgW3JlZ2lzdGVyZWRNSU1FVHlwZXMgcmVtb3ZlT2Jq
ZWN0Ok1JTUVUeXBlXTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1l
bnRhbEZlYXR1cmVzLm1tLmVyYiBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1NjcmlwdHMvUHJl
ZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWxGZWF0dXJlcy5tbS5l
cmIKaW5kZXggMjIzOWM3NjM4ZGNjODMxMjlkNWZhYTg1ZDQ3NDYxMTk5ZDY5MWE4OC4uYWIxZWQy
NGNjNDE3NTYwZmVhNmRkODUwNDJkZDkyNzU4YWY0OGM2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJQcmVmZXJlbmNl
c0V4cGVyaW1lbnRhbEZlYXR1cmVzLm1tLmVyYgorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFs
RmVhdHVyZXMubW0uZXJiCkBAIC0yOSw2ICsyOSw4IEBACiAKICNpbXBvcnQgIldlYkZlYXR1cmVJ
bnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViUHJlZmVyZW5jZXNEZWZpbml0aW9ucy5oIgorI2ltcG9y
dCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKIHVz
aW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKQEAgLTM2LDE5ICszOCwxOSBAQCB1c2luZyBuYW1lc3Bh
Y2UgV2ViS2l0OwogCiArIChOU0FycmF5PFdlYkZlYXR1cmUgKj4gKilfZXhwZXJpbWVudGFsRmVh
dHVyZXMKIHsKLSAgICBzdGF0aWMgTlNBcnJheTxXZWJGZWF0dXJlICo+ICpmZWF0dXJlcyA9IEBb
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0FycmF5PFdlYkZlYXR1cmUg
Kj4+PiBmZWF0dXJlcyA9IEBbCiA8JS0gZm9yIEBwcmVmIGluIEBleHBvc2VkRXhwZXJpbWVudGFs
RmVhdHVyZXMgZG8gLSU+CiA8JS0gaWYgQHByZWYuY29uZGl0aW9uIC0lPgogI2lmIDwlPSBAcHJl
Zi5jb25kaXRpb24gJT4KIDwlLSBlbmQgLSU+Ci0gICAgICAgIFtbV2ViRmVhdHVyZSBhbGxvY10g
aW5pdFdpdGhLZXk6QCI8JT0gQHByZWYubmFtZSAlPiIgcHJlZmVyZW5jZUtleTpAIjwlPSBAcHJl
Zi5wcmVmZXJlbmNlS2V5ICU+IiBuYW1lOkA8JT0gQHByZWYuaHVtYW5SZWFkYWJsZU5hbWUgJT4g
ZGV0YWlsczpAPCU9IEBwcmVmLmh1bWFuUmVhZGFibGVEZXNjcmlwdGlvbiAlPiBkZWZhdWx0VmFs
dWU6REVGQVVMVF9WQUxVRV9GT1JfPCU9IEBwcmVmLm5hbWUgJT4gaGlkZGVuOjwlPSBAcHJlZi5o
aWRkZW4gJT5dLAorICAgICAgICBhZG9wdE5TKFtbV2ViRmVhdHVyZSBhbGxvY10gaW5pdFdpdGhL
ZXk6QCI8JT0gQHByZWYubmFtZSAlPiIgcHJlZmVyZW5jZUtleTpAIjwlPSBAcHJlZi5wcmVmZXJl
bmNlS2V5ICU+IiBuYW1lOkA8JT0gQHByZWYuaHVtYW5SZWFkYWJsZU5hbWUgJT4gZGV0YWlsczpA
PCU9IEBwcmVmLmh1bWFuUmVhZGFibGVEZXNjcmlwdGlvbiAlPiBkZWZhdWx0VmFsdWU6REVGQVVM
VF9WQUxVRV9GT1JfPCU9IEBwcmVmLm5hbWUgJT4gaGlkZGVuOjwlPSBAcHJlZi5oaWRkZW4gJT5d
KS5nZXQoKSwKIDwlLSBpZiBAcHJlZi5jb25kaXRpb24gLSU+CiAjZW5kaWYKIDwlLSBlbmQgLSU+
CiA8JS0gZW5kIC0lPgogICAgIF07CiAKLSAgICByZXR1cm4gZmVhdHVyZXM7CisgICAgcmV0dXJu
IGZlYXR1cmVzLmdldCgpLmdldCgpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2Vz
SW50ZXJuYWxGZWF0dXJlcy5tbS5lcmIgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TY3JpcHRz
L1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWxGZWF0dXJlcy5tbS5l
cmIKaW5kZXggZThmM2JlNGM4ZGZjZjA0ZTE5MmQyZWIzOWVkMGE5YmQ2ZDViNjA0Zi4uMDQyMmRh
OGNhNTdkM2U3NTg3YzQwMGVkNDIzZjhkNTFlYWMwZDExYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJQcmVmZXJlbmNl
c0ludGVybmFsRmVhdHVyZXMubW0uZXJiCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1Nj
cmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbEZlYXR1cmVz
Lm1tLmVyYgpAQCAtMjksNiArMjksOCBAQAogCiAjaW1wb3J0ICJXZWJGZWF0dXJlSW50ZXJuYWwu
aCIKICNpbXBvcnQgIldlYlByZWZlcmVuY2VzRGVmaW5pdGlvbnMuaCIKKyNpbXBvcnQgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiB1c2luZyBuYW1l
c3BhY2UgV2ViS2l0OwogCkBAIC0zNiwxOSArMzgsMTkgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktp
dDsKIAogKyAoTlNBcnJheTxXZWJGZWF0dXJlICo+ICopX2ludGVybmFsRmVhdHVyZXMKIHsKLSAg
ICBzdGF0aWMgTlNBcnJheTxXZWJGZWF0dXJlICo+ICpmZWF0dXJlcyA9IEBbCisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0FycmF5PFdlYkZlYXR1cmUgKj4+PiBmZWF0dXJl
cyA9IEBbCiA8JS0gZm9yIEBwcmVmIGluIEBleHBvc2VkSW50ZXJuYWxGZWF0dXJlcyBkbyAtJT4K
IDwlLSBpZiBAcHJlZi5jb25kaXRpb24gLSU+CiAjaWYgPCU9IEBwcmVmLmNvbmRpdGlvbiAlPgog
PCUtIGVuZCAtJT4KLSAgICAgICAgW1tXZWJGZWF0dXJlIGFsbG9jXSBpbml0V2l0aEtleTpAIjwl
PSBAcHJlZi5uYW1lICU+IiBwcmVmZXJlbmNlS2V5OkAiPCU9IEBwcmVmLnByZWZlcmVuY2VLZXkg
JT4iIG5hbWU6QDwlPSBAcHJlZi5odW1hblJlYWRhYmxlTmFtZSAlPiBkZXRhaWxzOkA8JT0gQHBy
ZWYuaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uICU+IGRlZmF1bHRWYWx1ZTpERUZBVUxUX1ZBTFVF
X0ZPUl88JT0gQHByZWYubmFtZSAlPiBoaWRkZW46PCU9IEBwcmVmLmhpZGRlbiAlPl0sCisgICAg
ICAgIGFkb3B0TlMoW1tXZWJGZWF0dXJlIGFsbG9jXSBpbml0V2l0aEtleTpAIjwlPSBAcHJlZi5u
YW1lICU+IiBwcmVmZXJlbmNlS2V5OkAiPCU9IEBwcmVmLnByZWZlcmVuY2VLZXkgJT4iIG5hbWU6
QDwlPSBAcHJlZi5odW1hblJlYWRhYmxlTmFtZSAlPiBkZXRhaWxzOkA8JT0gQHByZWYuaHVtYW5S
ZWFkYWJsZURlc2NyaXB0aW9uICU+IGRlZmF1bHRWYWx1ZTpERUZBVUxUX1ZBTFVFX0ZPUl88JT0g
QHByZWYubmFtZSAlPiBoaWRkZW46PCU9IEBwcmVmLmhpZGRlbiAlPl0pLmdldCgpLAogPCUtIGlm
IEBwcmVmLmNvbmRpdGlvbiAtJT4KICNlbmRpZgogPCUtIGVuZCAtJT4KIDwlLSBlbmQgLSU+CiAg
ICAgXTsKIAotICAgIHJldHVybiBmZWF0dXJlczsKKyAgICByZXR1cm4gZmVhdHVyZXMuZ2V0KCku
Z2V0KCk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViRGF0YVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViRGF0YVNvdXJjZS5tbQppbmRleCAwYWM2MGU5OTQzNmFlNzdlZjc1MzBiNjBiZjJlNWNiODBl
NThhMjZkLi40ZGY1NGQ3ZDY5Nzk5YTk2NDU4ZjEyMjQzMGFiNTJlOGIyMTEyYTk5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCkBAIC0y
NjksMzIgKzI2OSwzMSBAQCAtICh2b2lkKV9yZXZlcnRUb1Byb3Zpc2lvbmFsU3RhdGUKIAogKyAo
TlNNdXRhYmxlRGljdGlvbmFyeSAqKV9yZXBUeXBlc0FsbG93SW1hZ2VUeXBlT21pc3Npb246KEJP
T0wpYWxsb3dJbWFnZVR5cGVPbWlzc2lvbgogewotICAgIHN0YXRpYyBOU011dGFibGVEaWN0aW9u
YXJ5ICpyZXBUeXBlcyA9IG5pbDsKLSAgICBzdGF0aWMgQk9PTCBhZGRlZEltYWdlVHlwZXMgPSBO
TzsKLSAgICAKLSAgICBpZiAoIXJlcFR5cGVzKSB7Ci0gICAgICAgIHJlcFR5cGVzID0gW1tOU011
dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XTsKLSAgICAgICAgYWRkVHlwZXNGcm9tQ2xhc3Mo
cmVwVHlwZXMsIFtXZWJIVE1MUmVwcmVzZW50YXRpb24gY2xhc3NdLCBbV2ViSFRNTFJlcHJlc2Vu
dGF0aW9uIHN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzXSk7Ci0gICAgICAgIGFkZFR5cGVzRnJv
bUNsYXNzKHJlcFR5cGVzLCBbV2ViSFRNTFJlcHJlc2VudGF0aW9uIGNsYXNzXSwgW1dlYkhUTUxS
ZXByZXNlbnRhdGlvbiBzdXBwb3J0ZWRNZWRpYU1JTUVUeXBlc10pOwotICAgICAgICAKKyAgICBz
dGF0aWMgYXV0byByZXBUeXBlcyA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgICAgIGF1
dG8gdHlwZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOwor
ICAgICAgICBhZGRUeXBlc0Zyb21DbGFzcyh0eXBlcy5nZXQoKSwgW1dlYkhUTUxSZXByZXNlbnRh
dGlvbiBjbGFzc10sIFtXZWJIVE1MUmVwcmVzZW50YXRpb24gc3VwcG9ydGVkTm9uSW1hZ2VNSU1F
VHlwZXNdKTsKKyAgICAgICAgYWRkVHlwZXNGcm9tQ2xhc3ModHlwZXMuZ2V0KCksIFtXZWJIVE1M
UmVwcmVzZW50YXRpb24gY2xhc3NdLCBbV2ViSFRNTFJlcHJlc2VudGF0aW9uIHN1cHBvcnRlZE1l
ZGlhTUlNRVR5cGVzXSk7CisKICAgICAgICAgLy8gU2luY2UgdGhpcyBpcyBhICJzZWNyZXQgZGVm
YXVsdCIgd2UgZG9uJ3QgYm90aCByZWdpc3RlcmluZyBpdC4KICAgICAgICAgQk9PTCBvbWl0UERG
U3VwcG9ydCA9IFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIGJvb2xGb3JL
ZXk6QCJXZWJLaXRPbWl0UERGU3VwcG9ydCJdOwotICAgICAgICBpZiAoIW9taXRQREZTdXBwb3J0
KQorICAgICAgICBpZiAoIW9taXRQREZTdXBwb3J0KSB7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICNkZWZpbmUgV2ViUERGUmVwcmVzZW50YXRpb24gKFtXZWJWaWV3IF9nZXRQREZSZXByZXNl
bnRhdGlvbkNsYXNzXSkKICNlbmRpZgotICAgICAgICAgICAgYWRkVHlwZXNGcm9tQ2xhc3MocmVw
VHlwZXMsIFtXZWJQREZSZXByZXNlbnRhdGlvbiBjbGFzc10sIFtXZWJQREZSZXByZXNlbnRhdGlv
biBzdXBwb3J0ZWRNSU1FVHlwZXNdKTsKKyAgICAgICAgICAgIGFkZFR5cGVzRnJvbUNsYXNzKHR5
cGVzLmdldCgpLCBbV2ViUERGUmVwcmVzZW50YXRpb24gY2xhc3NdLCBbV2ViUERGUmVwcmVzZW50
YXRpb24gc3VwcG9ydGVkTUlNRVR5cGVzXSk7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICN1
bmRlZiBXZWJQREZSZXByZXNlbnRhdGlvbgogI2VuZGlmCi0gICAgfQotICAgIAorICAgICAgICB9
CisgICAgICAgIHJldHVybiB0eXBlczsKKyAgICB9KCkpOworICAgIHN0YXRpYyBCT09MIGFkZGVk
SW1hZ2VUeXBlcyA9IE5POwogICAgIGlmICghYWRkZWRJbWFnZVR5cGVzICYmICFhbGxvd0ltYWdl
VHlwZU9taXNzaW9uKSB7Ci0gICAgICAgIGFkZFR5cGVzRnJvbUNsYXNzKHJlcFR5cGVzLCBbV2Vi
SFRNTFJlcHJlc2VudGF0aW9uIGNsYXNzXSwgW1dlYkhUTUxSZXByZXNlbnRhdGlvbiBzdXBwb3J0
ZWRJbWFnZU1JTUVUeXBlc10pOworICAgICAgICBhZGRUeXBlc0Zyb21DbGFzcyhyZXBUeXBlcy5n
ZXQoKS5nZXQoKSwgW1dlYkhUTUxSZXByZXNlbnRhdGlvbiBjbGFzc10sIFtXZWJIVE1MUmVwcmVz
ZW50YXRpb24gc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNdKTsKICAgICAgICAgYWRkZWRJbWFnZVR5
cGVzID0gWUVTOwogICAgIH0KICAgICAKLSAgICByZXR1cm4gcmVwVHlwZXM7CisgICAgcmV0dXJu
IHJlcFR5cGVzLmdldCgpLmdldCgpOwogfQogCiAtICh2b2lkKV9yZXBsYWNlU2VsZWN0aW9uV2l0
aEFyY2hpdmU6KFdlYkFyY2hpdmUgKilhcmNoaXZlIHNlbGVjdFJlcGxhY2VtZW50OihCT09MKXNl
bGVjdFJlcGxhY2VtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYkZyYW1lVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
RnJhbWVWaWV3Lm1tCmluZGV4IGE3ODVlOGMzZDU2NTkyYWIwOWE2Y2I5ODJjZDk4YTc1ZjA0ZDMz
ZWMuLmUzZThjN2JhZDAzNTg5OTYzMTJhOTFlZmRiNGVmYzc2MGVlMmYzOGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tCkBAIC0yMzksMTMg
KzIzOSwxMCBAQCAtIChmbG9hdClfdmVydGljYWxQYWdlU2Nyb2xsRGlzdGFuY2UKIAogKyAoTlNN
dXRhYmxlRGljdGlvbmFyeSAqKV92aWV3VHlwZXNBbGxvd0ltYWdlVHlwZU9taXNzaW9uOihCT09M
KWFsbG93SW1hZ2VUeXBlT21pc3Npb24KIHsKLSAgICBzdGF0aWMgTlNNdXRhYmxlRGljdGlvbmFy
eSAqdmlld1R5cGVzID0gbmlsOwotICAgIHN0YXRpYyBCT09MIGFkZGVkSW1hZ2VUeXBlcyA9IE5P
OwotICAgIAotICAgIGlmICghdmlld1R5cGVzKSB7Ci0gICAgICAgIHZpZXdUeXBlcyA9IFtbTlNN
dXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF07Ci0gICAgICAgIGFkZFR5cGVzRnJvbUNsYXNz
KHZpZXdUeXBlcywgW1dlYkhUTUxWaWV3IGNsYXNzXSwgW1dlYkhUTUxWaWV3IHN1cHBvcnRlZE5v
bkltYWdlTUlNRVR5cGVzXSk7Ci0gICAgICAgIGFkZFR5cGVzRnJvbUNsYXNzKHZpZXdUeXBlcywg
W1dlYkhUTUxWaWV3IGNsYXNzXSwgW1dlYkhUTUxWaWV3IHN1cHBvcnRlZE1lZGlhTUlNRVR5cGVz
XSk7CisgICAgc3RhdGljIGF1dG8gdmlld1R5cGVzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsK
KyAgICAgICAgYXV0byB0eXBlcyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9j
XSBpbml0XSk7CisgICAgICAgIGFkZFR5cGVzRnJvbUNsYXNzKHR5cGVzLmdldCgpLCBbV2ViSFRN
TFZpZXcgY2xhc3NdLCBbV2ViSFRNTFZpZXcgc3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXNdKTsK
KyAgICAgICAgYWRkVHlwZXNGcm9tQ2xhc3ModHlwZXMuZ2V0KCksIFtXZWJIVE1MVmlldyBjbGFz
c10sIFtXZWJIVE1MVmlldyBzdXBwb3J0ZWRNZWRpYU1JTUVUeXBlc10pOwogCiAgICAgICAgIC8v
IFNpbmNlIHRoaXMgaXMgYSAic2VjcmV0IGRlZmF1bHQiIHdlIGRvbid0IGJvdGhlciByZWdpc3Rl
cmluZyBpdC4KICAgICAgICAgQk9PTCBvbWl0UERGU3VwcG9ydCA9IFtbTlNVc2VyRGVmYXVsdHMg
c3RhbmRhcmRVc2VyRGVmYXVsdHNdIGJvb2xGb3JLZXk6QCJXZWJLaXRPbWl0UERGU3VwcG9ydCJd
OwpAQCAtMjUzLDE5ICsyNTAsMjAgQEAgKyAoTlNNdXRhYmxlRGljdGlvbmFyeSAqKV92aWV3VHlw
ZXNBbGxvd0ltYWdlVHlwZU9taXNzaW9uOihCT09MKWFsbG93SW1hZ2VUeXBlT20KICNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogI2RlZmluZSBXZWJQREZWaWV3IChbV2ViVmlldyBfZ2V0UERGVmll
d0NsYXNzXSkKICNlbmRpZgotICAgICAgICAgICAgYWRkVHlwZXNGcm9tQ2xhc3Modmlld1R5cGVz
LCBbV2ViUERGVmlldyBjbGFzc10sIFtXZWJQREZWaWV3IHN1cHBvcnRlZE1JTUVUeXBlc10pOwor
ICAgICAgICAgICAgYWRkVHlwZXNGcm9tQ2xhc3ModHlwZXMuZ2V0KCksIFtXZWJQREZWaWV3IGNs
YXNzXSwgW1dlYlBERlZpZXcgc3VwcG9ydGVkTUlNRVR5cGVzXSk7CiAjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICN1bmRlZiBXZWJQREZWaWV3CiAjZW5kaWYKICAgICAgICAgfQotICAgIH0KLSAg
ICAKKyAgICAgICAgcmV0dXJuIHR5cGVzOworICAgIH0oKSk7CisgICAgc3RhdGljIEJPT0wgYWRk
ZWRJbWFnZVR5cGVzID0gTk87CiAgICAgaWYgKCFhZGRlZEltYWdlVHlwZXMgJiYgIWFsbG93SW1h
Z2VUeXBlT21pc3Npb24pIHsKLSAgICAgICAgYWRkVHlwZXNGcm9tQ2xhc3Modmlld1R5cGVzLCBb
V2ViSFRNTFZpZXcgY2xhc3NdLCBbV2ViSFRNTFZpZXcgc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNd
KTsKKyAgICAgICAgYWRkVHlwZXNGcm9tQ2xhc3Modmlld1R5cGVzLmdldCgpLmdldCgpLCBbV2Vi
SFRNTFZpZXcgY2xhc3NdLCBbV2ViSFRNTFZpZXcgc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNdKTsK
ICAgICAgICAgYWRkZWRJbWFnZVR5cGVzID0gWUVTOwogICAgIH0KICAgICAKLSAgICByZXR1cm4g
dmlld1R5cGVzOworICAgIHJldHVybiB2aWV3VHlwZXMuZ2V0KCkuZ2V0KCk7CiB9CiAKICsgKEJP
T0wpX2NhblNob3dNSU1FVHlwZUFzSFRNTDooTlNTdHJpbmcgKilNSU1FVHlwZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGdWxsU2NyZWVuQ29udHJvbGxl
ci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnVsbFNjcmVlbkNvbnRy
b2xsZXIubW0KaW5kZXggODZmMjBkMmJmODgyODQ0Yzk1ZmJkYWYwOGJjZWE5ZTg0MjQ5MmIwZi4u
MTY1MTMwOGYxMWU1OGEzYTFhOWVkOGIwNTVlMzAxZjRhZmQ2NmE0NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGdWxsU2NyZWVuQ29udHJvbGxlci5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZ1bGxTY3JlZW5Db250cm9s
bGVyLm1tCkBAIC00NzMsMTEgKzQ3MywxMSBAQCAtICh2b2lkKV9zd2FwVmlldzooTlNWaWV3Kil2
aWV3IHdpdGg6KE5TVmlldyopb3RoZXJWaWV3CiAKIHN0YXRpYyBSZXRhaW5QdHI8TlNXaW5kb3c+
IGNyZWF0ZUJhY2tncm91bmRGdWxsc2NyZWVuV2luZG93KE5TUmVjdCBmcmFtZSkKIHsKLSAgICBO
U1dpbmRvdyAqd2luZG93ID0gW1tOU1dpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDpm
cmFtZSBzdHlsZU1hc2s6TlNXaW5kb3dTdHlsZU1hc2tCb3JkZXJsZXNzIGJhY2tpbmc6TlNCYWNr
aW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpOT107CisgICAgYXV0byB3aW5kb3cgPSBhZG9wdE5TKFtb
TlNXaW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6ZnJhbWUgc3R5bGVNYXNrOk5TV2lu
ZG93U3R5bGVNYXNrQm9yZGVybGVzcyBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVm
ZXI6Tk9dKTsKICAgICBbd2luZG93IHNldE9wYXF1ZTpZRVNdOwogICAgIFt3aW5kb3cgc2V0QmFj
a2dyb3VuZENvbG9yOltOU0NvbG9yIGJsYWNrQ29sb3JdXTsKICAgICBbd2luZG93IHNldFJlbGVh
c2VkV2hlbkNsb3NlZDpOT107Ci0gICAgcmV0dXJuIGFkb3B0TlMod2luZG93KTsKKyAgICByZXR1
cm4gd2luZG93OwogfQogCiBzdGF0aWMgTlNSZWN0IHdpbmRvd0ZyYW1lRnJvbUFwcGFyZW50RnJh
bWVzKE5TUmVjdCBzY3JlZW5GcmFtZSwgTlNSZWN0IGluaXRpYWxGcmFtZSwgTlNSZWN0IGZpbmFs
RnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhU
TUxSZXByZXNlbnRhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
SFRNTFJlcHJlc2VudGF0aW9uLm1tCmluZGV4IDRlNjdjZGFkYzBlMjRjOGVjYzgwNTIwMWQ5ZWE0
NmU3MjRhN2JlNjIuLjQ3YTNkNTMwNWU3NjFmNmM2YTQxYmNhZGNkNjNhNWMzMjI2MTgxMjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2Vu
dGF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJl
cHJlc2VudGF0aW9uLm1tCkBAIC0zNTYsMTQgKzM1NiwxMiBAQCBzdGF0aWMgUmVndWxhckV4cHJl
c3Npb24qIHJlZ0V4cEZvckxhYmVscyhOU0FycmF5ICpsYWJlbHMpCiAgICAgLy8gUGFyYWxsZWwg
YXJyYXlzIHRoYXQgd2UgdXNlIHRvIGNhY2hlIHJlZ0V4cHMuICBJbiBwcmFjdGljZSB0aGUgbnVt
YmVyIG9mIGV4cHJlc3Npb25zCiAgICAgLy8gdGhhdCB0aGUgYXBwIHdpbGwgdXNlIGlzIGVxdWFs
IHRvIHRoZSBudW1iZXIgb2YgbG9jYWxlcyBpcyB1c2VkIGluIHNlYXJjaGluZy4KICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgaW50IHJlZ0V4cENhY2hlU2l6ZSA9IDQ7Ci0gICAgc3RhdGljIE5T
TXV0YWJsZUFycmF5KiByZWdFeHBMYWJlbHMgPSBuaWw7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFJldGFpblB0cjxOU011dGFibGVBcnJheT4+IHJlZ0V4cExhYmVscyA9IGFkb3B0TlMoW1tO
U011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpyZWdFeHBDYWNoZVNpemVdKTsK
ICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VmVjdG9yPFJlZ3VsYXJFeHByZXNzaW9uKj4+IHJl
Z0V4cHM7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZ3VsYXJFeHByZXNzaW9uPiB3b3Jk
UmVnRXhwKCJcXHciKTsKIAogICAgIFJlZ3VsYXJFeHByZXNzaW9uKiByZXN1bHQ7Ci0gICAgaWYg
KCFyZWdFeHBMYWJlbHMpCi0gICAgICAgIHJlZ0V4cExhYmVscyA9IFtbTlNNdXRhYmxlQXJyYXkg
YWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6cmVnRXhwQ2FjaGVTaXplXTsKLSAgICBDRkluZGV4IGNh
Y2hlSGl0ID0gW3JlZ0V4cExhYmVscyBpbmRleE9mT2JqZWN0OmxhYmVsc107CisgICAgQ0ZJbmRl
eCBjYWNoZUhpdCA9IFtyZWdFeHBMYWJlbHMuZ2V0KCkgaW5kZXhPZk9iamVjdDpsYWJlbHNdOwog
ICAgIGlmIChjYWNoZUhpdCAhPSBOU05vdEZvdW5kKQogICAgICAgICByZXN1bHQgPSByZWdFeHBz
LmdldCgpLmF0KGNhY2hlSGl0KTsKICAgICBlbHNlIHsKQEAgLTQwMCwxNSArMzk4LDE1IEBAIHN0
YXRpYyBSZWd1bGFyRXhwcmVzc2lvbiogcmVnRXhwRm9yTGFiZWxzKE5TQXJyYXkgKmxhYmVscykK
ICAgICBpZiAoY2FjaGVIaXQgIT0gMCkgewogICAgICAgICBpZiAoY2FjaGVIaXQgIT0gTlNOb3RG
b3VuZCkgewogICAgICAgICAgICAgLy8gcmVtb3ZlIGZyb20gb2xkIHNwb3QKLSAgICAgICAgICAg
IFtyZWdFeHBMYWJlbHMgcmVtb3ZlT2JqZWN0QXRJbmRleDpjYWNoZUhpdF07CisgICAgICAgICAg
ICBbcmVnRXhwTGFiZWxzLmdldCgpIHJlbW92ZU9iamVjdEF0SW5kZXg6Y2FjaGVIaXRdOwogICAg
ICAgICAgICAgcmVnRXhwcy5nZXQoKS5yZW1vdmUoY2FjaGVIaXQpOwogICAgICAgICB9CiAgICAg
ICAgIC8vIGFkZCB0byBzdGFydAotICAgICAgICBbcmVnRXhwTGFiZWxzIGluc2VydE9iamVjdDps
YWJlbHMgYXRJbmRleDowXTsKKyAgICAgICAgW3JlZ0V4cExhYmVscy5nZXQoKSBpbnNlcnRPYmpl
Y3Q6bGFiZWxzIGF0SW5kZXg6MF07CiAgICAgICAgIHJlZ0V4cHMuZ2V0KCkuaW5zZXJ0KDAsIHJl
c3VsdCk7CiAgICAgICAgIC8vIHRyaW0gaWYgdG9vIGJpZwotICAgICAgICBpZiAoW3JlZ0V4cExh
YmVscyBjb3VudF0gPiByZWdFeHBDYWNoZVNpemUpIHsKLSAgICAgICAgICAgIFtyZWdFeHBMYWJl
bHMgcmVtb3ZlT2JqZWN0QXRJbmRleDpyZWdFeHBDYWNoZVNpemVdOworICAgICAgICBpZiAoW3Jl
Z0V4cExhYmVscy5nZXQoKSBjb3VudF0gPiByZWdFeHBDYWNoZVNpemUpIHsKKyAgICAgICAgICAg
IFtyZWdFeHBMYWJlbHMuZ2V0KCkgcmVtb3ZlT2JqZWN0QXRJbmRleDpyZWdFeHBDYWNoZVNpemVd
OwogICAgICAgICAgICAgUmVndWxhckV4cHJlc3Npb24qIGxhc3QgPSByZWdFeHBzLmdldCgpLmxh
c3QoKTsKICAgICAgICAgICAgIHJlZ0V4cHMuZ2V0KCkucmVtb3ZlTGFzdCgpOwogICAgICAgICAg
ICAgZGVsZXRlIGxhc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJI
VE1MVmlldy5tbQppbmRleCAyMDU0YjY2ZDIwMWFjN2ZiNDhlNGM4ODg1NjA2YjIyNzNlNDlhZmVh
Li5kYjk2YjQwNDgwNjAzODdhOTQzNjM0OGZkMmQzOTBjNDQ4ODFlMzgxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTE5NjEsMTUgKzE5
NjEsMTMgQEAgKyAoTlNTdHJpbmcgKilfZHVtbXlQYXN0ZWJvYXJkVHlwZQogCiArIChOU0FycmF5
ICopX2luc2VydGFibGVQYXN0ZWJvYXJkVHlwZXMKIHsKLSAgICBzdGF0aWMgTlNBcnJheSAqdHlw
ZXMgPSBuaWw7Ci0gICAgaWYgKCF0eXBlcykgewogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElP
TlNfQkVHSU4KLSAgICAgICAgdHlwZXMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0
czpXZWJBcmNoaXZlUGJvYXJkVHlwZSwgV2ViQ29yZTo6bGVnYWN5SFRNTFBhc3RlYm9hcmRUeXBl
KCksIFdlYkNvcmU6OmxlZ2FjeUZpbGVuYW1lc1Bhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6Omxl
Z2FjeVRJRkZQYXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lQREZQYXN0ZWJvYXJkVHlw
ZSgpLAotICAgICAgICAgICAgV2ViQ29yZTo6bGVnYWN5VVJMUGFzdGVib2FyZFR5cGUoKSwgV2Vi
Q29yZTo6bGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVJURlBhc3Rl
Ym9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCksIFdlYkNv
cmU6OmxlZ2FjeUNvbG9yUGFzdGVib2FyZFR5cGUoKSwga1VUVHlwZVBORywgbmlsXTsKLUFMTE9X
X0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAotICAgICAgICBDRlJldGFpbih0eXBlcyk7Ci0g
ICAgfQotICAgIHJldHVybiB0eXBlczsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWlu
UHRyPE5TQXJyYXk+PiB0eXBlcyA9IEBbCisgICAgICAgIFdlYkFyY2hpdmVQYm9hcmRUeXBlLCBX
ZWJDb3JlOjpsZWdhY3lIVE1MUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5RmlsZW5h
bWVzUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5VElGRlBhc3RlYm9hcmRUeXBlKCks
CisgICAgICAgIFdlYkNvcmU6OmxlZ2FjeVBERlBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6Omxl
Z2FjeVVSTFBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlw
ZSgpLCBXZWJDb3JlOjpsZWdhY3lSVEZQYXN0ZWJvYXJkVHlwZSgpLAorICAgICAgICBXZWJDb3Jl
OjpsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lDb2xvclBhc3Rl
Ym9hcmRUeXBlKCksIChOU1N0cmluZyAqKWtVVFR5cGVQTkcsCisgICAgXTsKKyAgICByZXR1cm4g
dHlwZXMuZ2V0KCkuZ2V0KCk7CiB9CiAKICsgKE5TQXJyYXkgKilfc2VsZWN0aW9uUGFzdGVib2Fy
ZFR5cGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBy
ZWZlcmVuY2VzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJl
bmNlcy5tbQppbmRleCAzMzNhMzI0NzkzZGRiYzhmYTBhMGVkZjYxZDg2OGI0MzFhMGI1YTQ2Li5m
YjkyYzE2MTUyNGZkOWU3NGRmNmU0Yzk2NGZjZDcyMWQ1ZDUwYjZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KQEAgLTc1LDggKzc1
LDE3IEBAIE5TU3RyaW5nICpXZWJQcmVmZXJlbmNlc0NhY2hlTW9kZWxDaGFuZ2VkSW50ZXJuYWxO
b3RpZmljYXRpb24gPSBAIldlYlByZWZlcmVuY2VzCiAKIGVudW0geyBXZWJQcmVmZXJlbmNlc1Zl
cnNpb24gPSAxIH07CiAKLXN0YXRpYyBXZWJQcmVmZXJlbmNlcyAqX3N0YW5kYXJkUHJlZmVyZW5j
ZXM7Ci1zdGF0aWMgTlNNdXRhYmxlRGljdGlvbmFyeSAqd2ViUHJlZmVyZW5jZXNJbnN0YW5jZXM7
CitzdGF0aWMgUmV0YWluUHRyPFdlYlByZWZlcmVuY2VzPiYgc3RhbmRhcmRQcmVmZXJlbmNlcygp
Cit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxXZWJQcmVmZXJlbmNlcz4+
IHN0YW5kYXJkUHJlZmVyZW5jZXM7CisgICAgcmV0dXJuIHN0YW5kYXJkUHJlZmVyZW5jZXM7Cit9
CisKK3N0YXRpYyBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4mIHdlYlByZWZlcmVuY2Vz
SW5zdGFuY2VzKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TTXV0
YWJsZURpY3Rpb25hcnk+PiB3ZWJQcmVmZXJlbmNlc0luc3RhbmNlczsKKyAgICByZXR1cm4gd2Vi
UHJlZmVyZW5jZXNJbnN0YW5jZXM7Cit9CiAKIHN0YXRpYyB1bnNpZ25lZCB3ZWJQcmVmZXJlbmNl
c0luc3RhbmNlQ291bnRXaXRoUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZDsKIApAQCAtMzYxLDI0ICsz
NzAsMjAgQEAgLSAodm9pZCllbmNvZGVXaXRoQ29kZXI6KE5TQ29kZXIgKillbmNvZGVyCiArIChX
ZWJQcmVmZXJlbmNlcyAqKXN0YW5kYXJkUHJlZmVyZW5jZXMKIHsKICNpZiAhUExBVEZPUk0oSU9T
X0ZBTUlMWSkKLSAgICBpZiAoX3N0YW5kYXJkUHJlZmVyZW5jZXMgPT0gbmlsKSB7Ci0gICAgICAg
IF9zdGFuZGFyZFByZWZlcmVuY2VzID0gW1tXZWJQcmVmZXJlbmNlcyBhbGxvY10gaW5pdFdpdGhJ
ZGVudGlmaWVyOm5pbF07Ci0gICAgICAgIFtfc3RhbmRhcmRQcmVmZXJlbmNlcyBzZXRBdXRvc2F2
ZXM6WUVTXTsKKyAgICBpZiAoIXN0YW5kYXJkUHJlZmVyZW5jZXMoKSkgeworICAgICAgICBzdGFu
ZGFyZFByZWZlcmVuY2VzKCkgPSBhZG9wdE5TKFtbV2ViUHJlZmVyZW5jZXMgYWxsb2NdIGluaXRX
aXRoSWRlbnRpZmllcjpuaWxdKTsKKyAgICAgICAgW3N0YW5kYXJkUHJlZmVyZW5jZXMoKSBzZXRB
dXRvc2F2ZXM6WUVTXTsKICAgICB9CiAjZWxzZQotICAgIC8vIEZJWE1FOiBUaGlzIGNoZWNrIGlz
IG5lY2Vzc2FyeSB0byBhdm9pZCByZWN1cnNpb24gKHNlZSA8cmRhcjovL3Byb2JsZW0vOTU2NDMz
Nz4pLCBidXQgaXQgYWxzbyBtYWtlcyBfc3RhbmRhcmRQcmVmZXJlbmNlcyBjb25zdHJ1Y3Rpb24g
bm90IHRocmVhZCBzYWZlLgotICAgIGlmIChfc3RhbmRhcmRQcmVmZXJlbmNlcykKLSAgICAgICAg
cmV0dXJuIF9zdGFuZGFyZFByZWZlcmVuY2VzOwotCiAgICAgc3RhdGljIGRpc3BhdGNoX29uY2Vf
dCBwcmVkOwogICAgIGRpc3BhdGNoX29uY2UoJnByZWQsIF57Ci0gICAgICAgIF9zdGFuZGFyZFBy
ZWZlcmVuY2VzID0gW1tXZWJQcmVmZXJlbmNlcyBhbGxvY10gaW5pdFdpdGhJZGVudGlmaWVyOm5p
bCBzZW5kQ2hhbmdlTm90aWZpY2F0aW9uOk5PXTsKLSAgICAgICAgW19zdGFuZGFyZFByZWZlcmVu
Y2VzIF9wb3N0UHJlZmVyZW5jZXNDaGFuZ2VkTm90aWZpY2F0aW9uXTsKLSAgICAgICAgW19zdGFu
ZGFyZFByZWZlcmVuY2VzIHNldEF1dG9zYXZlczpZRVNdOworICAgICAgICBzdGFuZGFyZFByZWZl
cmVuY2VzKCkgPSBhZG9wdE5TKFtbV2ViUHJlZmVyZW5jZXMgYWxsb2NdIGluaXRXaXRoSWRlbnRp
ZmllcjpuaWwgc2VuZENoYW5nZU5vdGlmaWNhdGlvbjpOT10pOworICAgICAgICBbc3RhbmRhcmRQ
cmVmZXJlbmNlcygpIF9wb3N0UHJlZmVyZW5jZXNDaGFuZ2VkTm90aWZpY2F0aW9uXTsKKyAgICAg
ICAgW3N0YW5kYXJkUHJlZmVyZW5jZXMoKSBzZXRBdXRvc2F2ZXM6WUVTXTsKICAgICB9KTsKICNl
bmRpZgogCi0gICAgcmV0dXJuIF9zdGFuZGFyZFByZWZlcmVuY2VzOworICAgIHJldHVybiBzdGFu
ZGFyZFByZWZlcmVuY2VzKCkuZ2V0KCk7CiB9CiAKIC8vIGlmIHdlIGV2ZXIgaGF2ZSBtb3JlIHRo
YW4gb25lIFdlYlByZWZlcmVuY2VzIG9iamVjdCwgdGhpcyB3b3VsZCBtb3ZlIHRvIGluaXQKQEAg
LTE1ODEsMzAgKzE1ODYsMzIgQEAgKyAoV2ViUHJlZmVyZW5jZXMgKilfZ2V0SW5zdGFuY2VGb3JJ
ZGVudGlmaWVyOihOU1N0cmluZyAqKWlkZW50CiAgICAgTE9HKEVuY29kaW5nLCAicmVxdWVzdGlu
ZyBmb3IgJUBcbiIsIGlkZW50KTsKIAogICAgIGlmICghaWRlbnQpCi0gICAgICAgIHJldHVybiBf
c3RhbmRhcmRQcmVmZXJlbmNlczsKKyAgICAgICAgcmV0dXJuIHN0YW5kYXJkUHJlZmVyZW5jZXMo
KS5nZXQoKTsKIAotICAgIFdlYlByZWZlcmVuY2VzICppbnN0YW5jZSA9IFt3ZWJQcmVmZXJlbmNl
c0luc3RhbmNlcyBvYmplY3RGb3JLZXk6W3NlbGYgX2NvbmNhdGVuYXRlS2V5V2l0aElCQ3JlYXRv
cklEOmlkZW50XV07CisgICAgV2ViUHJlZmVyZW5jZXMgKmluc3RhbmNlID0gW3dlYlByZWZlcmVu
Y2VzSW5zdGFuY2VzKCkgb2JqZWN0Rm9yS2V5OltzZWxmIF9jb25jYXRlbmF0ZUtleVdpdGhJQkNy
ZWF0b3JJRDppZGVudF1dOwogCiAgICAgcmV0dXJuIGluc3RhbmNlOwogfQogCiArICh2b2lkKV9z
ZXRJbnN0YW5jZTooV2ViUHJlZmVyZW5jZXMgKilpbnN0YW5jZSBmb3JJZGVudGlmaWVyOihOU1N0
cmluZyAqKWlkZW50CiB7Ci0gICAgaWYgKCF3ZWJQcmVmZXJlbmNlc0luc3RhbmNlcykKLSAgICAg
ICAgd2ViUHJlZmVyZW5jZXNJbnN0YW5jZXMgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2Nd
IGluaXRdOwotICAgIGlmIChpZGVudCkgewotICAgICAgICBbd2ViUHJlZmVyZW5jZXNJbnN0YW5j
ZXMgc2V0T2JqZWN0Omluc3RhbmNlIGZvcktleTpbc2VsZiBfY29uY2F0ZW5hdGVLZXlXaXRoSUJD
cmVhdG9ySUQ6aWRlbnRdXTsKLSAgICAgICAgTE9HKEVuY29kaW5nLCAicmVjb3JkaW5nICVwIGZv
ciAlQFxuIiwgaW5zdGFuY2UsIFtzZWxmIF9jb25jYXRlbmF0ZUtleVdpdGhJQkNyZWF0b3JJRDpp
ZGVudF0pOwotICAgIH0KKyAgICBpZiAoIWlkZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBh
dXRvJiBpbnN0YW5jZXMgPSB3ZWJQcmVmZXJlbmNlc0luc3RhbmNlcygpOworICAgIGlmICghaW5z
dGFuY2VzKQorICAgICAgICBpbnN0YW5jZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFy
eSBhbGxvY10gaW5pdF0pOworICAgIFtpbnN0YW5jZXMgc2V0T2JqZWN0Omluc3RhbmNlIGZvcktl
eTpbc2VsZiBfY29uY2F0ZW5hdGVLZXlXaXRoSUJDcmVhdG9ySUQ6aWRlbnRdXTsKKyAgICBMT0co
RW5jb2RpbmcsICJyZWNvcmRpbmcgJXAgZm9yICVAXG4iLCBpbnN0YW5jZSwgW3NlbGYgX2NvbmNh
dGVuYXRlS2V5V2l0aElCQ3JlYXRvcklEOmlkZW50XSk7CiB9CiAKICsgKHZvaWQpX2NoZWNrTGFz
dFJlZmVyZW5jZUZvcklkZW50aWZpZXI6KGlkKWlkZW50aWZpZXIKIHsKICAgICAvLyBGSVhNRTog
VGhpcyB3b24ndCB3b3JrIGF0IGFsbCB1bmRlciBnYXJiYWdlIGNvbGxlY3Rpb24gYmVjYXVzZSBy
ZXRhaW5Db3VudCByZXR1cm5zIGEgY29uc3RhbnQuCiAgICAgLy8gV2UgbWF5IG5lZWQgdG8gY2hh
bmdlIFdlYlByZWZlcmVuY2VzIEFQSSBzbyB0aGVyZSdzIGFuIGV4cGxpY2l0IHdheSB0byBlbmQg
dGhlIGxpZmV0aW1lIG9mIG9uZS4KLSAgICBXZWJQcmVmZXJlbmNlcyAqaW5zdGFuY2UgPSBbd2Vi
UHJlZmVyZW5jZXNJbnN0YW5jZXMgb2JqZWN0Rm9yS2V5OmlkZW50aWZpZXJdOworICAgIFdlYlBy
ZWZlcmVuY2VzICppbnN0YW5jZSA9IFt3ZWJQcmVmZXJlbmNlc0luc3RhbmNlcygpIG9iamVjdEZv
cktleTppZGVudGlmaWVyXTsKICAgICBpZiAoW2luc3RhbmNlIHJldGFpbkNvdW50XSA9PSAxKQot
ICAgICAgICBbd2ViUHJlZmVyZW5jZXNJbnN0YW5jZXMgcmVtb3ZlT2JqZWN0Rm9yS2V5OmlkZW50
aWZpZXJdOworICAgICAgICBbd2ViUHJlZmVyZW5jZXNJbnN0YW5jZXMoKSByZW1vdmVPYmplY3RG
b3JLZXk6aWRlbnRpZmllcl07CiB9CiAKICsgKHZvaWQpX3JlbW92ZVJlZmVyZW5jZUZvcklkZW50
aWZpZXI6KE5TU3RyaW5nICopaWRlbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbQppbmRleCA1YWNiNWQ5ZGQ4YzQ3YTEwMDAzNGJmYTZlZmFiNjc3ZjFiMTVjODky
Li45MTdhMDVkODkxMDcyOWY0MmRhZTA2ZjU5ZmI1MWEzNmI3ODFlY2JhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC05MTcsNyArOTE3LDExIEBAIGVu
dW0geyBXZWJWaWV3VmVyc2lvbiA9IDQgfTsKIAogI2RlZmluZSB0aW1lZExheW91dFNpemUgNDA5
NgogCi1zdGF0aWMgTlNNdXRhYmxlU2V0ICpzY2hlbWVzV2l0aFJlcHJlc2VudGF0aW9uc1NldDsK
K3N0YXRpYyBSZXRhaW5QdHI8TlNNdXRhYmxlU2V0PiYgc2NoZW1lc1dpdGhSZXByZXNlbnRhdGlv
bnNTZXQoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNNdXRhYmxl
U2V0Pj4gc2NoZW1lc1dpdGhSZXByZXNlbnRhdGlvbnNTZXQ7CisgICAgcmV0dXJuIHNjaGVtZXNX
aXRoUmVwcmVzZW50YXRpb25zU2V0OworfQogCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiBO
U1N0cmluZyAqX1dlYkNhbkdvQmFja0tleSA9ICAgICAgICAgICAgQCJjYW5Hb0JhY2siOwpAQCAt
MTM0NSwxNyArMTM0OSwxNyBAQCBzdGF0aWMgYm9vbCBuZWVkc091dGxvb2tRdWlya3NTY3JpcHQo
KQogICAgIHJldHVybiBpc091dGxvb2tOZWVkaW5nUXVpcmtzU2NyaXB0OwogfQogCi1zdGF0aWMg
TlNTdHJpbmcgKmxlYWtPdXRsb29rUXVpcmtzVXNlclNjcmlwdENvbnRlbnRzKCkKK3N0YXRpYyBS
ZXRhaW5QdHI8TlNTdHJpbmc+IGNyZWF0ZU91dGxvb2tRdWlya3NVc2VyU2NyaXB0Q29udGVudHMo
KQogewogICAgIE5TU3RyaW5nICpzY3JpcHRQYXRoID0gW1tOU0J1bmRsZSBidW5kbGVGb3JDbGFz
czpbV2ViVmlldyBjbGFzc11dIHBhdGhGb3JSZXNvdXJjZTpAIk91dGxvb2tRdWlya3NVc2VyU2Ny
aXB0IiBvZlR5cGU6QCJqcyJdOwogICAgIE5TU3RyaW5nRW5jb2RpbmcgZW5jb2Rpbmc7Ci0gICAg
cmV0dXJuIFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoQ29udGVudHNPZkZpbGU6c2NyaXB0UGF0
aCB1c2VkRW5jb2Rpbmc6JmVuY29kaW5nIGVycm9yOjBdOworICAgIHJldHVybiBhZG9wdE5TKFtb
TlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoQ29udGVudHNPZkZpbGU6c2NyaXB0UGF0aCB1c2VkRW5j
b2Rpbmc6JmVuY29kaW5nIGVycm9yOjBdKTsKIH0KIAogLSh2b2lkKV9pbmplY3RPdXRsb29rUXVp
cmtzU2NyaXB0CiB7Ci0gICAgc3RhdGljIE5TU3RyaW5nICpvdXRsb29rUXVpcmtzU2NyaXB0Q29u
dGVudHMgPSBsZWFrT3V0bG9va1F1aXJrc1VzZXJTY3JpcHRDb250ZW50cygpOwotICAgIF9wcml2
YXRlLT5ncm91cC0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkuYWRkVXNlclNjcmlwdCgqY29yZShb
V2ViU2NyaXB0V29ybGQgd29ybGRdKSwgbWFrZVVuaXF1ZTxXZWJDb3JlOjpVc2VyU2NyaXB0Pihv
dXRsb29rUXVpcmtzU2NyaXB0Q29udGVudHMsIFVSTCgpLCBWZWN0b3I8U3RyaW5nPigpLCBWZWN0
b3I8U3RyaW5nPigpLCBXZWJDb3JlOjpVc2VyU2NyaXB0SW5qZWN0aW9uVGltZTo6RG9jdW1lbnRF
bmQsIFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluQWxsRnJhbWVz
LCBXZWJDb3JlOjpXYWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nOjpObykpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNTdHJpbmc+PiBvdXRsb29rUXVpcmtz
U2NyaXB0Q29udGVudHMgPSBjcmVhdGVPdXRsb29rUXVpcmtzVXNlclNjcmlwdENvbnRlbnRzKCk7
CisgICAgX3ByaXZhdGUtPmdyb3VwLT51c2VyQ29udGVudENvbnRyb2xsZXIoKS5hZGRVc2VyU2Ny
aXB0KCpjb3JlKFtXZWJTY3JpcHRXb3JsZCB3b3JsZF0pLCBtYWtlVW5pcXVlPFdlYkNvcmU6OlVz
ZXJTY3JpcHQ+KG91dGxvb2tRdWlya3NTY3JpcHRDb250ZW50cy5nZXQoKS5nZXQoKSwgVVJMKCks
IFZlY3RvcjxTdHJpbmc+KCksIFZlY3RvcjxTdHJpbmc+KCksIFdlYkNvcmU6OlVzZXJTY3JpcHRJ
bmplY3Rpb25UaW1lOjpEb2N1bWVudEVuZCwgV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZy
YW1lczo6SW5qZWN0SW5BbGxGcmFtZXMsIFdlYkNvcmU6OldhaXRGb3JOb3RpZmljYXRpb25CZWZv
cmVJbmplY3Rpbmc6Ok5vKSk7CiAKIH0KICNlbmRpZgpAQCAtMTM2NywyMCArMTM3MSwyMCBAQCBz
dGF0aWMgYm9vbCBuZWVkc0xhQmFucXVlUG9zdGFsZVF1aXJrcygpCiAgICAgcmV0dXJuIG5lZWRz
UXVpcmtzOwogfQogCi1zdGF0aWMgTlNTdHJpbmcgKmxlYWtMYUJhbnF1ZVBvc3RhbGVRdWlya3NT
Y3JpcHQoKQorc3RhdGljIFJldGFpblB0cjxOU1N0cmluZz4gY3JlYXRlTGFCYW5xdWVQb3N0YWxl
UXVpcmtzU2NyaXB0KCkKIHsKICAgICBOU1VSTCAqc2NyaXB0VVJMID0gW1tOU0J1bmRsZSBidW5k
bGVGb3JDbGFzczpXZWJWaWV3LmNsYXNzXSBVUkxGb3JSZXNvdXJjZTpAIkxhQmFucXVlUG9zdGFs
ZVF1aXJrcyIgd2l0aEV4dGVuc2lvbjpAImpzIl07CiAgICAgTlNTdHJpbmdFbmNvZGluZyBlbmNv
ZGluZzsKLSAgICByZXR1cm4gW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhDb250ZW50c09mVVJM
OnNjcmlwdFVSTCB1c2VkRW5jb2Rpbmc6JmVuY29kaW5nIGVycm9yOm51bGxwdHJdOworICAgIHJl
dHVybiBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoQ29udGVudHNPZlVSTDpzY3Jp
cHRVUkwgdXNlZEVuY29kaW5nOiZlbmNvZGluZyBlcnJvcjpudWxscHRyXSk7CiB9CiAKIC0gKHZv
aWQpX2luamVjdExhQmFucXVlUG9zdGFsZVF1aXJrcwogewogICAgIEFTU0VSVChuZWVkc0xhQmFu
cXVlUG9zdGFsZVF1aXJrcygpKTsKLSAgICBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBxdWlya3NT
Y3JpcHQgPSBsZWFrTGFCYW5xdWVQb3N0YWxlUXVpcmtzU2NyaXB0KCk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFJldGFpblB0cjxOU1N0cmluZz4+IHF1aXJrc1NjcmlwdCA9IGNyZWF0ZUxh
QmFucXVlUG9zdGFsZVF1aXJrc1NjcmlwdCgpOwogCiAgICAgdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7Ci0gICAgYXV0byB1c2VyU2NyaXB0ID0gbWFrZVVuaXF1ZTxVc2VyU2NyaXB0PihxdWlya3NT
Y3JpcHQsIFVSTCgpLCBWZWN0b3I8U3RyaW5nPigpLCBWZWN0b3I8U3RyaW5nPigpLCBVc2VyU2Ny
aXB0SW5qZWN0aW9uVGltZTo6RG9jdW1lbnRFbmQsIFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6
OkluamVjdEluQWxsRnJhbWVzLCBXYWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nOjpO
byk7CisgICAgYXV0byB1c2VyU2NyaXB0ID0gbWFrZVVuaXF1ZTxVc2VyU2NyaXB0PihxdWlya3NT
Y3JpcHQuZ2V0KCkuZ2V0KCksIFVSTCgpLCBWZWN0b3I8U3RyaW5nPigpLCBWZWN0b3I8U3RyaW5n
PigpLCBVc2VyU2NyaXB0SW5qZWN0aW9uVGltZTo6RG9jdW1lbnRFbmQsIFVzZXJDb250ZW50SW5q
ZWN0ZWRGcmFtZXM6OkluamVjdEluQWxsRnJhbWVzLCBXYWl0Rm9yTm90aWZpY2F0aW9uQmVmb3Jl
SW5qZWN0aW5nOjpObyk7CiAgICAgX3ByaXZhdGUtPmdyb3VwLT51c2VyQ29udGVudENvbnRyb2xs
ZXIoKS5hZGRVc2VyU2NyaXB0KCpjb3JlKFdlYlNjcmlwdFdvcmxkLndvcmxkKSwgV1RGTW92ZSh1
c2VyU2NyaXB0KSk7CiB9CiAjZW5kaWYKQEAgLTMyMTUsMTAgKzMyMTksMTAgQEAgKyAodm9pZClf
cmVnaXN0ZXJWaWV3Q2xhc3M6KENsYXNzKXZpZXdDbGFzcyByZXByZXNlbnRhdGlvbkNsYXNzOihD
bGFzcylyZXByZXNlbnQKIAogICAgIC8vIFRoaXMgaXMgdXNlZCB0byBtYWtlIF9yZXByZXNlbnRh
dGlvbkV4aXN0c0ZvclVSTFNjaGVtZSBmYXN0ZXIuCiAgICAgLy8gV2l0aG91dCB0aGlzIHNldCwg
d2UnZCBoYXZlIHRvIGNyZWF0ZSB0aGUgTUlNRSB0eXBlIGVhY2ggdGltZS4KLSAgICBpZiAoc2No
ZW1lc1dpdGhSZXByZXNlbnRhdGlvbnNTZXQgPT0gbmlsKSB7Ci0gICAgICAgIHNjaGVtZXNXaXRo
UmVwcmVzZW50YXRpb25zU2V0ID0gW1tOU011dGFibGVTZXQgYWxsb2NdIGluaXRdOwotICAgIH0K
LSAgICBbc2NoZW1lc1dpdGhSZXByZXNlbnRhdGlvbnNTZXQgYWRkT2JqZWN0OmFkb3B0TlMoW1tV
UkxTY2hlbWUgbG93ZXJjYXNlU3RyaW5nXSBjb3B5XSkuZ2V0KCldOworICAgIGF1dG8mIHNjaGVt
ZXMgPSBzY2hlbWVzV2l0aFJlcHJlc2VudGF0aW9uc1NldCgpOworICAgIGlmICghc2NoZW1lcykK
KyAgICAgICAgc2NoZW1lcyA9IGFkb3B0TlMoW1tOU011dGFibGVTZXQgYWxsb2NdIGluaXRdKTsK
KyAgICBbc2NoZW1lcyBhZGRPYmplY3Q6YWRvcHROUyhbW1VSTFNjaGVtZSBsb3dlcmNhc2VTdHJp
bmddIGNvcHldKS5nZXQoKV07CiB9CiAKICsgKE5TU3RyaW5nICopX2dlbmVyYXRlZE1JTUVUeXBl
Rm9yVVJMU2NoZW1lOihOU1N0cmluZyAqKVVSTFNjaGVtZQpAQCAtMzIyOCw3ICszMjMyLDcgQEAg
KyAoTlNTdHJpbmcgKilfZ2VuZXJhdGVkTUlNRVR5cGVGb3JVUkxTY2hlbWU6KE5TU3RyaW5nICop
VVJMU2NoZW1lCiAKICsgKEJPT0wpX3JlcHJlc2VudGF0aW9uRXhpc3RzRm9yVVJMU2NoZW1lOihO
U1N0cmluZyAqKVVSTFNjaGVtZQogewotICAgIHJldHVybiBbc2NoZW1lc1dpdGhSZXByZXNlbnRh
dGlvbnNTZXQgY29udGFpbnNPYmplY3Q6W1VSTFNjaGVtZSBsb3dlcmNhc2VTdHJpbmddXTsKKyAg
ICByZXR1cm4gW3NjaGVtZXNXaXRoUmVwcmVzZW50YXRpb25zU2V0KCkgY29udGFpbnNPYmplY3Q6
W1VSTFNjaGVtZSBsb3dlcmNhc2VTdHJpbmddXTsKIH0KIAogKyAoQk9PTClfY2FuSGFuZGxlUmVx
dWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBmb3JNYWluRnJhbWU6KEJPT0wpZm9yTWFpbkZy
YW1lCkBAIC0zMjk1LDIyICszMjk5LDIwIEBAIC0gKHZvaWQpX3dpbGxDaGFuZ2VWYWx1ZUZvcktl
eTogKE5TU3RyaW5nICopa2V5CiB9CiAKICsgKEJPT0wpYXV0b21hdGljYWxseU5vdGlmaWVzT2Jz
ZXJ2ZXJzRm9yS2V5OihOU1N0cmluZyAqKWtleSB7Ci0gICAgc3RhdGljIE5TU2V0ICptYW51YWxO
b3RpZnlLZXlzID0gbmlsOwotICAgIGlmICghbWFudWFsTm90aWZ5S2V5cykKLSAgICAgICAgbWFu
dWFsTm90aWZ5S2V5cyA9IFtbTlNTZXQgYWxsb2NdIGluaXRXaXRoT2JqZWN0czpfV2ViTWFpbkZy
YW1lVVJMS2V5LCBfV2ViSXNMb2FkaW5nS2V5LCBfV2ViRXN0aW1hdGVkUHJvZ3Jlc3NLZXksCi0g
ICAgICAgICAgICBfV2ViQ2FuR29CYWNrS2V5LCBfV2ViQ2FuR29Gb3J3YXJkS2V5LCBfV2ViTWFp
bkZyYW1lVGl0bGVLZXksIF9XZWJNYWluRnJhbWVJY29uS2V5LCBfV2ViTWFpbkZyYW1lRG9jdW1l
bnRLZXksCi0gICAgICAgICAgICBuaWxdOwotICAgIGlmIChbbWFudWFsTm90aWZ5S2V5cyBjb250
YWluc09iamVjdDprZXldKQorICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNT
ZXQ+PiBtYW51YWxOb3RpZnlLZXlzID0gYWRvcHROUyhbW05TU2V0IGFsbG9jXSBpbml0V2l0aE9i
amVjdHM6X1dlYk1haW5GcmFtZVVSTEtleSwgX1dlYklzTG9hZGluZ0tleSwgX1dlYkVzdGltYXRl
ZFByb2dyZXNzS2V5LAorICAgICAgICBfV2ViQ2FuR29CYWNrS2V5LCBfV2ViQ2FuR29Gb3J3YXJk
S2V5LCBfV2ViTWFpbkZyYW1lVGl0bGVLZXksIF9XZWJNYWluRnJhbWVJY29uS2V5LCBfV2ViTWFp
bkZyYW1lRG9jdW1lbnRLZXksIG5pbF0pOworICAgIGlmIChbbWFudWFsTm90aWZ5S2V5cy5nZXQo
KSBjb250YWluc09iamVjdDprZXldKQogICAgICAgICByZXR1cm4gTk87CiAgICAgcmV0dXJuIFlF
UzsKIH0KIAogLSAoTlNBcnJheSAqKV9kZWNsYXJlZEtleXMgewotICAgIHN0YXRpYyBOU0FycmF5
ICpkZWNsYXJlZEtleXMgPSBuaWw7Ci0gICAgaWYgKCFkZWNsYXJlZEtleXMpCi0gICAgICAgIGRl
Y2xhcmVkS2V5cyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOl9XZWJNYWluRnJh
bWVVUkxLZXksIF9XZWJJc0xvYWRpbmdLZXksIF9XZWJFc3RpbWF0ZWRQcm9ncmVzc0tleSwKLSAg
ICAgICAgICAgIF9XZWJDYW5Hb0JhY2tLZXksIF9XZWJDYW5Hb0ZvcndhcmRLZXksIF9XZWJNYWlu
RnJhbWVUaXRsZUtleSwgX1dlYk1haW5GcmFtZUljb25LZXksIF9XZWJNYWluRnJhbWVEb2N1bWVu
dEtleSwgbmlsXTsKLSAgICByZXR1cm4gZGVjbGFyZWRLZXlzOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxSZXRhaW5QdHI8TlNBcnJheT4+IGRlY2xhcmVkS2V5cyA9IEBbCisgICAgICAgIF9X
ZWJNYWluRnJhbWVVUkxLZXksIF9XZWJJc0xvYWRpbmdLZXksIF9XZWJFc3RpbWF0ZWRQcm9ncmVz
c0tleSwKKyAgICAgICAgX1dlYkNhbkdvQmFja0tleSwgX1dlYkNhbkdvRm9yd2FyZEtleSwgX1dl
Yk1haW5GcmFtZVRpdGxlS2V5LAorICAgICAgICBfV2ViTWFpbkZyYW1lSWNvbktleSwgX1dlYk1h
aW5GcmFtZURvY3VtZW50S2V5CisgICAgXTsKKyAgICByZXR1cm4gZGVjbGFyZWRLZXlzLmdldCgp
LmdldCgpOwogfQogCiAtICh2b2lkKV93aWxsQ2hhbmdlQmFja0ZvcndhcmRLZXlzCkBAIC01MjEy
LDcgKzUyMTQsNyBAQCAtIChXZWJCYXNlUGx1Z2luUGFja2FnZSAqKV9wbHVnaW5Gb3JFeHRlbnNp
b246KE5TU3RyaW5nICopZXh0ZW5zaW9uCiAtICh2b2lkKWFkZFBsdWdpbkluc3RhbmNlVmlldzoo
TlNWaWV3ICopdmlldwogewogICAgIGlmICghX3ByaXZhdGUtPnBsdWdpbkRhdGFiYXNlKQotICAg
ICAgICBfcHJpdmF0ZS0+cGx1Z2luRGF0YWJhc2UgPSBbW1dlYlBsdWdpbkRhdGFiYXNlIGFsbG9j
XSBpbml0XTsKKyAgICAgICAgX3ByaXZhdGUtPnBsdWdpbkRhdGFiYXNlID0gYWRvcHROUyhbW1dl
YlBsdWdpbkRhdGFiYXNlIGFsbG9jXSBpbml0XSk7CiAgICAgW19wcml2YXRlLT5wbHVnaW5EYXRh
YmFzZSBhZGRQbHVnaW5JbnN0YW5jZVZpZXc6dmlld107CiB9CiAKQEAgLTkwMDQsNyArOTAwNiw3
IEBAIC0gKEJPT0wpX3N1cHBvcnRzRnVsbFNjcmVlbkZvckVsZW1lbnQ6KE5ha2VkUHRyPGNvbnN0
IFdlYkNvcmU6OkVsZW1lbnQ+KWVsZW1lbnQKIC0gKHZvaWQpX2VudGVyRnVsbFNjcmVlbkZvckVs
ZW1lbnQ6KE5ha2VkUHRyPFdlYkNvcmU6OkVsZW1lbnQ+KWVsZW1lbnQKIHsKICAgICBpZiAoIV9w
cml2YXRlLT5uZXdGdWxsc2NyZWVuQ29udHJvbGxlcikKLSAgICAgICAgX3ByaXZhdGUtPm5ld0Z1
bGxzY3JlZW5Db250cm9sbGVyID0gW1tXZWJGdWxsU2NyZWVuQ29udHJvbGxlciBhbGxvY10gaW5p
dF07CisgICAgICAgIF9wcml2YXRlLT5uZXdGdWxsc2NyZWVuQ29udHJvbGxlciA9IGFkb3B0TlMo
W1tXZWJGdWxsU2NyZWVuQ29udHJvbGxlciBhbGxvY10gaW5pdF0pOwogCiAgICAgW19wcml2YXRl
LT5uZXdGdWxsc2NyZWVuQ29udHJvbGxlciBzZXRFbGVtZW50OmVsZW1lbnQuZ2V0KCldOwogICAg
IFtfcHJpdmF0ZS0+bmV3RnVsbHNjcmVlbkNvbnRyb2xsZXIgc2V0V2ViVmlldzpzZWxmXTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaAppbmRleCA0MGI2
N2QxZTgzMGM3ZmI4NWM5NDllYjdhOGI2NGUwMmQwN2I4MzM1Li44M2M2ZDc4MDUwMmVmMmIxOGI1
NTNhOGU4OWQ0YzFlZTUwOGFlODg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYlZpZXdEYXRhLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJWaWV3RGF0YS5oCkBAIC0zMzAsNyArMzMwLDcgQEAgcHJpdmF0ZToKICNlbmRpZgog
ICAgIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLSAgICBXZWJGdWxsU2NyZWVuQ29udHJv
bGxlciAqbmV3RnVsbHNjcmVlbkNvbnRyb2xsZXI7CisgICAgUmV0YWluUHRyPFdlYkZ1bGxTY3Jl
ZW5Db250cm9sbGVyPiBuZXdGdWxsc2NyZWVuQ29udHJvbGxlcjsKICNlbmRpZgogCiAjaWYgRU5B
QkxFKFJFTU9URV9JTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggNzI5NDgyNTU1OGFhMzlkNjlmN2ZmNGRlZDBlZWJjNzM1ZGI2ZmNj
NC4uZDRlOGU5N2MxMTkzM2QzMzI5NDAzNzNlNTgzOWJhNGZhMDlhMTkwMiAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisy
MDIxLTAyLTIyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNl
IGFkb3B0TlMoKSBhcyBzb29uIGFzIHdlIFtbT2JqY0NsYXNzIGFsbG9jXSBpbml0XSB0byBhdm9p
ZCBsZWFrcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjIyMjM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBU
ZXN0UnVubmVyU2hhcmVkL21hYy9OU1Bhc3RlYm9hcmRBZGRpdGlvbnMubW06CisgICAgICAgICgr
W05TUGFzdGVib2FyZCBfbW9kZXJuUGFzdGVib2FyZFR5cGU6XSk6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1VSTFNjaGVtZUhhbmRsZXItMS5tbToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdExlZ2FjeS9tYWMvRGVhbGxvY1dlYlZpZXdJ
bkV2ZW50TGlzdGVuZXIubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9DYW5jZWxMb2FkRnJvbVJlc291cmNlTG9hZERl
bGVnYXRlLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9tYWMvQ2xvc2VOZXdXaW5kb3dJbk5hdmlnYXRpb25Qb2xpY3lEZWxl
Z2F0ZS5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvbWFjL01lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERl
bGVnYXRlLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9tYWMvTWVtb3J5Q2FjaGVQcnVuZVdpdGhpblJlc291cmNlTG9hZERl
bGVnYXRlLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9tYWMvU3RvcExvYWRpbmdGcm9tRGlkUmVjZWl2ZVJlc3BvbnNlLm1t
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9tYWMvV2luZG93bGVzc1dlYlZpZXdXaXRoTWVkaWEubW06CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2lvcy9tYWluSU9TLm1t
OgorICAgICAgICAobWFpbik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9tYWMvbWFpbk1hYy5t
bToKKyAgICAgICAgKG1haW4pOgorCiAyMDIxLTAyLTIyICBQaGlsaXBwZSBOb3JtYW5kICA8cG5v
cm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBbRmxhdHBhayBTREtdIGdkYiB1bnVzYWJsZSBp
biBzYW5kYm94CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL21hYy9OU1Bhc3Rl
Ym9hcmRBZGRpdGlvbnMubW0gYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL21hYy9OU1Bhc3RlYm9h
cmRBZGRpdGlvbnMubW0KaW5kZXggNjkzYWE1ODI4M2ExZjhmMzEwMzNlNWNjYzMxMWJhZDhiOGJi
MjUzZS4uNmI0ZGI1ODkwY2YxN2M5YzVjODFmMmIxYTNmYjM1ZTE1NGVjOWQ5NyAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9tYWMvTlNQYXN0ZWJvYXJkQWRkaXRpb25zLm1tCisr
KyBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvbWFjL05TUGFzdGVib2FyZEFkZGl0aW9ucy5tbQpA
QCAtMzcsOCArMzcsOCBAQCBAaW1wbGVtZW50YXRpb24gTlNQYXN0ZWJvYXJkIChUZXN0UnVubmVy
QWRkaXRpb25zKQogKyAoTlNQYXN0ZWJvYXJkVHlwZSlfbW9kZXJuUGFzdGVib2FyZFR5cGU6KE5T
U3RyaW5nICopdHlwZQogewogICAgIGlmIChVVFR5cGVJc0R5bmFtaWMoKF9fYnJpZGdlIENGU3Ry
aW5nUmVmKXR5cGUpKSB7Ci0gICAgICAgIGlmIChhdXRvIGxlZ2FjeVR5cGUgPSBhZG9wdE5TKChf
X2JyaWRnZSBOU1N0cmluZyAqKVVUVHlwZUNvcHlQcmVmZXJyZWRUYWdXaXRoQ2xhc3MoKF9fYnJp
ZGdlIENGU3RyaW5nUmVmKXR5cGUsIGtVVFRhZ0NsYXNzTlNQYm9hcmRUeXBlKSkpCi0gICAgICAg
ICAgICB0eXBlID0gbGVnYWN5VHlwZS5hdXRvcmVsZWFzZSgpOworICAgICAgICBpZiAoYXV0byBs
ZWdhY3lUeXBlID0gYWRvcHRDRihVVFR5cGVDb3B5UHJlZmVycmVkVGFnV2l0aENsYXNzKChfX2Jy
aWRnZSBDRlN0cmluZ1JlZil0eXBlLCBrVVRUYWdDbGFzc05TUGJvYXJkVHlwZSkpKQorICAgICAg
ICAgICAgdHlwZSA9IGxlZ2FjeVR5cGUuYnJpZGdpbmdBdXRvcmVsZWFzZSgpOwogICAgIH0KIAog
ICAgIGlmIChbdHlwZSBpc0VxdWFsVG9TdHJpbmc6V2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVi
b2FyZFR5cGUoKV0pCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1dLVVJMU2NoZW1lSGFuZGxlci0xLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9XS1VSTFNjaGVtZUhhbmRsZXItMS5tbQppbmRleCA1YzliMzAxMjA2YjA1
OTFkZTY3ZDIyZTBiOGQ3ODJkN2RiZmYyNzJiLi45YmIwNGUyNzBmN2FlZTRkMzMxOGUxOWFhYmI3
NmRmMjExYzAyYzc1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1dLVVJMU2NoZW1lSGFuZGxlci0xLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyLTEubW0KQEAgLTUyOCwzOSArNTI4
LDM4IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzeW5jWEhSQnl0ZXMgPSAiTXkgWEhSIHRleHQhIjsK
IAogVEVTVChVUkxTY2hlbWVIYW5kbGVyLCBTeW5jWEhSKQogewotICAgIGF1dG8gKnBvb2wgPSBb
W05TQXV0b3JlbGVhc2VQb29sIGFsbG9jXSBpbml0XTsKKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsK
KyAgICAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdD
b25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0
TlMoW1tTeW5jU2NoZW1lIGFsbG9jXSBpbml0XSk7CisgICAgICAgIFt3ZWJWaWV3Q29uZmlndXJh
dGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAic3lu
Y3hociJdOwogCi0gICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dl
YlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgYXV0byBoYW5kbGVyID0gYWRv
cHROUyhbW1N5bmNTY2hlbWUgYWxsb2NdIGluaXRdKTsKLSAgICBbd2ViVmlld0NvbmZpZ3VyYXRp
b24gc2V0VVJMU2NoZW1lSGFuZGxlcjpoYW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpAInN5bmN4
aHIiXTsKLSAgICAKLSAgICBoYW5kbGVyLmdldCgpLT5yZXNvdXJjZXMuc2V0KCJzeW5jeGhyOi8v
aG9zdC9tYWluLmh0bWwiLCBTY2hlbWVSZXNvdXJjZUluZm8geyBAInRleHQvaHRtbCIsIHN5bmNN
YWluQnl0ZXMsIHRydWUgfSk7Ci0gICAgaGFuZGxlci5nZXQoKS0+cmVzb3VyY2VzLnNldCgic3lu
Y3hocjovL2hvc3QvdGVzdC5kYXQiLCBTY2hlbWVSZXNvdXJjZUluZm8geyBAInRleHQvcGxhaW4i
LCBzeW5jWEhSQnl0ZXMsIHRydWUgfSk7CisgICAgICAgIGhhbmRsZXIuZ2V0KCktPnJlc291cmNl
cy5zZXQoInN5bmN4aHI6Ly9ob3N0L21haW4uaHRtbCIsIFNjaGVtZVJlc291cmNlSW5mbyB7IEAi
dGV4dC9odG1sIiwgc3luY01haW5CeXRlcywgdHJ1ZSB9KTsKKyAgICAgICAgaGFuZGxlci5nZXQo
KS0+cmVzb3VyY2VzLnNldCgic3luY3hocjovL2hvc3QvdGVzdC5kYXQiLCBTY2hlbWVSZXNvdXJj
ZUluZm8geyBAInRleHQvcGxhaW4iLCBzeW5jWEhSQnl0ZXMsIHRydWUgfSk7CiAKLSAgICBhdXRv
IG1lc3NhZ2VIYW5kbGVyID0gYWRvcHROUyhbW1N5bmNNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5p
dF0pOwotICAgIFtbd2ViVmlld0NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBh
ZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjptZXNzYWdlSGFuZGxlci5nZXQoKSBuYW1lOkAic3luYyJd
OwotICAgIAotICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjp3ZWJW
aWV3Q29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgICAgICBhdXRvIG1lc3NhZ2VIYW5kbGVyID0g
YWRvcHROUyhbW1N5bmNNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOworICAgICAgICBbW3dl
YlZpZXdDb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2Fn
ZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkgbmFtZTpAInN5bmMiXTsKIAotICAgIE5TVVJM
UmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVS
TFdpdGhTdHJpbmc6QCJzeW5jeGhyOi8vaG9zdC9tYWluLmh0bWwiXV07Ci0gICAgW3dlYlZpZXcg
bG9hZFJlcXVlc3Q6cmVxdWVzdF07CisgICAgICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tX
S1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkg
Y29uZmlndXJhdGlvbjp3ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQoKV0pOwogCi0gICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZE1lc3NhZ2UpOwotICAgIHJlY2VpdmVkTWVzc2Fn
ZSA9IGZhbHNlOworICAgICAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0
IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAic3luY3hocjovL2hvc3QvbWFp
bi5odG1sIl1dOworICAgICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKIAotICAg
IEVYUEVDVF9FUSgodW5zaWduZWQpcmVjZWl2ZWRNZXNzYWdlcy5nZXQoKS5jb3VudCwgKHVuc2ln
bmVkKTEpOwotICAgIEVYUEVDVF9UUlVFKFtyZWNlaXZlZE1lc3NhZ2VzLmdldCgpWzBdIGlzRXF1
YWxUb1N0cmluZzpAIk15IFhIUiB0ZXh0ISJdKTsKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZyZWNlaXZlZE1lc3NhZ2UpOworICAgICAgICByZWNlaXZlZE1lc3NhZ2UgPSBmYWxz
ZTsKIAotICAgIC8vIE5vdyB0cnkgYWdhaW4sIGJ1dCBoYW5nIHRoZSBXZWJQcm9jZXNzIGluIHRo
ZSByZXBseSB0byB0aGUgWEhSIGJ5IHRlbGxpbmcgdGhlIHNjaGVtZSBoYW5kbGVyIHRvIG5ldmVy
Ci0gICAgLy8gcmVzcG9uZCB0byBpdC4KLSAgICBoYW5kbGVyLmdldCgpLT5yZXNvdXJjZXMuZmlu
ZCgic3luY3hocjovL2hvc3QvdGVzdC5kYXQiKS0+dmFsdWUuc2hvdWxkUmVzcG9uZCA9IGZhbHNl
OwotICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOworICAgICAgICBFWFBFQ1RfRVEo
KHVuc2lnbmVkKXJlY2VpdmVkTWVzc2FnZXMuZ2V0KCkuY291bnQsICh1bnNpZ25lZCkxKTsKKyAg
ICAgICAgRVhQRUNUX1RSVUUoW3JlY2VpdmVkTWVzc2FnZXMuZ2V0KClbMF0gaXNFcXVhbFRvU3Ry
aW5nOkAiTXkgWEhSIHRleHQhIl0pOwogCi0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZz
dGFydGVkWEhSKTsKLSAgICByZWNlaXZlZE1lc3NhZ2UgPSBmYWxzZTsKKyAgICAgICAgLy8gTm93
IHRyeSBhZ2FpbiwgYnV0IGhhbmcgdGhlIFdlYlByb2Nlc3MgaW4gdGhlIHJlcGx5IHRvIHRoZSBY
SFIgYnkgdGVsbGluZyB0aGUgc2NoZW1lIGhhbmRsZXIgdG8gbmV2ZXIKKyAgICAgICAgLy8gcmVz
cG9uZCB0byBpdC4KKyAgICAgICAgaGFuZGxlci5nZXQoKS0+cmVzb3VyY2VzLmZpbmQoInN5bmN4
aHI6Ly9ob3N0L3Rlc3QuZGF0IiktPnZhbHVlLnNob3VsZFJlc3BvbmQgPSBmYWxzZTsKKyAgICAg
ICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CiAKLSAgICB3ZWJWaWV3ID0gbmlsOwot
ICAgIFtwb29sIGRyYWluXTsKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZzdGFy
dGVkWEhSKTsKKyAgICAgICAgcmVjZWl2ZWRNZXNzYWdlID0gZmFsc2U7CisKKyAgICAgICAgd2Vi
VmlldyA9IG5pbDsKKyAgICB9CiAgICAgCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZy
ZWNlaXZlZFN0b3ApOwogfQpAQCAtNzQxLDM5ICs3NDAsMzcgQEAgVEVTVChVUkxTY2hlbWVIYW5k
bGVyLCBYSFJQb3N0KQogCiBURVNUKFVSTFNjaGVtZUhhbmRsZXIsIFRocmVhZHMpCiB7Ci0gICAg
TlNBdXRvcmVsZWFzZVBvb2wgKnBvb2wgPSBbW05TQXV0b3JlbGVhc2VQb29sIGFsbG9jXSBpbml0
XTsKLQotICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0TlMoW1tUZXN0VVJMU2NoZW1lSGFuZGxlciBh
bGxvY10gaW5pdF0pOwotICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZp
ZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJM
U2NoZW1lSGFuZGxlcjpoYW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpAInRocmVhZHMiXTsKLSAg
ICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRp
b24uZ2V0KCldKTsKLQogICAgIHN0YXRpYyBib29sIGRvbmU7Ci0gICAgc3RhdGljIGlkPFdLVVJM
U2NoZW1lVGFzaz4gdGhlVGFzazsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRy
PGlkPFdLVVJMU2NoZW1lVGFzaz4+PiB0aGVUYXNrOwogICAgIHN0YXRpYyBSZWZQdHI8VGhyZWFk
PiB0aGVUaHJlYWQ7Ci0gICAgW2hhbmRsZXIgc2V0U3RhcnRVUkxTY2hlbWVUYXNrSGFuZGxlcjpe
KFdLV2ViVmlldyAqLCBpZDxXS1VSTFNjaGVtZVRhc2s+IHRhc2spIHsKLSAgICAgICAgdGhlVGFz
ayA9IHRhc2s7Ci0gICAgICAgIFt0YXNrIHJldGFpbl07Ci0gICAgICAgIHRoZVRocmVhZCA9IFRo
cmVhZDo6Y3JlYXRlKCJBIiwgW3Rhc2tdIHsKLSAgICAgICAgICAgIGF1dG8gcmVzcG9uc2UgPSBh
ZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVS
TCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOjAgdGV4dEVuY29k
aW5nTmFtZTpuaWxdKTsKLSAgICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpyZXNw
b25zZS5nZXQoKV07Ci0gICAgICAgICAgICBbdGFzayBkaWRGaW5pc2hdOwotICAgICAgICAgICAg
ZG9uZSA9IHRydWU7Ci0gICAgICAgIH0pOwotICAgIH1dOwogCi0gICAgW3dlYlZpZXcgbG9hZFJl
cXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpA
InRocmVhZHM6Ly9tYWluLmh0bWwiXV1dOworICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAg
ICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtbVGVzdFVSTFNjaGVtZUhhbmRsZXIgYWxsb2NdIGlu
aXRdKTsKKyAgICAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICAgICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJM
U2NoZW1lSGFuZGxlcjpoYW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpAInRocmVhZHMiXTsKKyAg
ICAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1
cmF0aW9uLmdldCgpXSk7CisgICAgICAgIFtoYW5kbGVyIHNldFN0YXJ0VVJMU2NoZW1lVGFza0hh
bmRsZXI6XihXS1dlYlZpZXcgKiwgaWQ8V0tVUkxTY2hlbWVUYXNrPiB0YXNrKSB7CisgICAgICAg
ICAgICB0aGVUYXNrLmdldCgpID0gcmV0YWluUHRyKHRhc2spOworICAgICAgICAgICAgdGhlVGhy
ZWFkID0gVGhyZWFkOjpjcmVhdGUoIkEiLCBbdGFza10geworICAgICAgICAgICAgICAgIGF1dG8g
cmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFz
ay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
OjAgdGV4dEVuY29kaW5nTmFtZTpuaWxdKTsKKyAgICAgICAgICAgICAgICBbdGFzayBkaWRSZWNl
aXZlUmVzcG9uc2U6cmVzcG9uc2UuZ2V0KCldOworICAgICAgICAgICAgICAgIFt0YXNrIGRpZEZp
bmlzaF07CisgICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgICAgICB9KTsKKyAg
ICAgICAgfV07CisKKyAgICAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCBy
ZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAInRocmVhZHM6Ly9tYWluLmh0bWwi
XV1dOwogCi0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICAgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKIAotICAgIGhhbmRsZXIgPSBuaWw7Ci0gICAg
Y29uZmlndXJhdGlvbiA9IG5pbDsKLSAgICB3ZWJWaWV3ID0gbmlsOwotICAgIHRoZVRocmVhZCA9
IG51bGxwdHI7Ci0gICAgW3Bvb2wgZHJhaW5dOworICAgICAgICBoYW5kbGVyID0gbmlsOworICAg
ICAgICBjb25maWd1cmF0aW9uID0gbmlsOworICAgICAgICB3ZWJWaWV3ID0gbmlsOworICAgICAg
ICB0aGVUaHJlYWQgPSBudWxscHRyOworICAgIH0KIAogICAgIFRocmVhZDo6Y3JlYXRlKCJCIiwg
W10gewotICAgICAgICBhdXRvIG9sZFRhc2sgPSBhZG9wdE5TKHN0ZDo6ZXhjaGFuZ2UodGhlVGFz
aywgbmlsKSk7CisgICAgICAgIHRoZVRhc2suZ2V0KCkgPSBuaWw7CiAgICAgfSktPndhaXRGb3JD
b21wbGV0aW9uKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0TGVnYWN5L21hYy9EZWFsbG9jV2ViVmlld0luRXZlbnRMaXN0ZW5lci5tbSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0TGVnYWN5L21hYy9EZWFsbG9jV2ViVmlld0luRXZl
bnRMaXN0ZW5lci5tbQppbmRleCBmNDI0OWRmNGNhZWFjY2ZmZTliODBhODljYzgzZGEyNDZkNjEz
MmJlLi5kZjYwNTFhZDU5MjQ3Mzg4NzIwOGRmYWI5MDMyNDQyYjMxYjJlMGNjIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdExlZ2FjeS9tYWMvRGVhbGxvY1dlYlZp
ZXdJbkV2ZW50TGlzdGVuZXIubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRMZWdhY3kvbWFjL0RlYWxsb2NXZWJWaWV3SW5FdmVudExpc3RlbmVyLm1tCkBAIC03MCw4ICs3
MCw3IEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogVEVTVChXZWJLaXRMZWdhY3ksIERl
YWxsb2NXZWJWaWV3SW5FdmVudExpc3RlbmVyKQogewotICAgIHsKLSAgICAgICAgTlNBdXRvcmVs
ZWFzZVBvb2wgKnBvb2wgPSBbW05TQXV0b3JlbGVhc2VQb29sIGFsbG9jXSBpbml0XTsKKyAgICBA
YXV0b3JlbGVhc2Vwb29sIHsKICAgICAgICAgd2ViVmlldyA9IGFkb3B0TlMoW1tXZWJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgNDAwLCA0MDApIGZyYW1lTmFtZTpu
aWwgZ3JvdXBOYW1lOm5pbF0pOwogICAgICAgICBhdXRvIGxvYWREZWxlZ2F0ZSA9IGFkb3B0TlMo
W1tEZWFsbG9jV2ViVmlld0luRXZlbnRMaXN0ZW5lckxvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdF0p
OwogICAgICAgICB3ZWJWaWV3LmdldCgpLmZyYW1lTG9hZERlbGVnYXRlID0gbG9hZERlbGVnYXRl
LmdldCgpOwpAQCAtODQsNyArODMsNiBAQCBURVNUKFdlYktpdExlZ2FjeSwgRGVhbGxvY1dlYlZp
ZXdJbkV2ZW50TGlzdGVuZXIpCiAgICAgICAgIFtbW3dlYlZpZXcgbWFpbkZyYW1lRG9jdW1lbnRd
IGJvZHldIGFkZEV2ZW50TGlzdGVuZXI6QCJrZXlwcmVzcyIgbGlzdGVuZXI6bnVsbHB0ciB1c2VD
YXB0dXJlOk5PXTsKICAgICAgICAgbGlzdGVuZXIgPSBudWxscHRyOwogICAgICAgICBbd2ViVmll
dyBjbG9zZV07Ci0gICAgICAgIFtwb29sIGRyYWluXTsKICAgICB9CiAgICAgVXRpbDo6cnVuKCZk
aWRDbG9zZSk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9D
YW5jZWxMb2FkRnJvbVJlc291cmNlTG9hZERlbGVnYXRlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9tYWMvQ2FuY2VsTG9hZEZyb21SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbQppbmRleCA5
ODE5NmE3Zjc1ZjgxMDYxOTZkODNjMjQ4ZThiYjM3NGFkMmE4ZTc3Li4xNjVhZTk1NWQ5MzRhMjM1
ZmM0NzBhNGY3ZGJlOTIwZGNlM2YyZDg2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL21hYy9DYW5jZWxMb2FkRnJvbVJlc291cmNlTG9hZERlbGVnYXRlLm1tCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0NhbmNlbExvYWRGcm9tUmVzb3VyY2VMb2FkRGVs
ZWdhdGUubW0KQEAgLTYyLDIwICs2MiwxOCBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAK
IFRFU1QoV2ViS2l0TGVnYWN5LCBDYW5jZWxMb2FkRnJvbVJlc291cmNlTG9hZERlbGVnYXRlKQog
ewotICAgIE5TQXV0b3JlbGVhc2VQb29sICpwb29sID0gW1tOU0F1dG9yZWxlYXNlUG9vbCBhbGxv
Y10gaW5pdF07CisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIFJldGFpblB0cjxXZWJW
aWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNN
YWtlUmVjdCgwLCAwLCAxMjAsIDIwMCkgZnJhbWVOYW1lOm5pbCBncm91cE5hbWU6bmlsXSk7CiAK
LSAgICBSZXRhaW5QdHI8V2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTIwLCAyMDApIGZyYW1lTmFtZTpuaWwg
Z3JvdXBOYW1lOm5pbF0pOworICAgICAgICBSZXRhaW5QdHI8Q2FuY2VsTG9hZEZyb21SZXNvdXJj
ZUxvYWREZWxlZ2F0ZT4gcmVzb3VyY2VMb2FkRGVsZWdhdGUgPSBhZG9wdE5TKFtbQ2FuY2VsTG9h
ZEZyb21SZXNvdXJjZUxvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgICAgICB3ZWJWaWV3
LmdldCgpLnJlc291cmNlTG9hZERlbGVnYXRlID0gcmVzb3VyY2VMb2FkRGVsZWdhdGUuZ2V0KCk7
CisgICAgICAgIFJldGFpblB0cjxDYW5jZWxMb2FkRnJvbVJlc291cmNlTG9hZERlbGVnYXRlRnJh
bWVMb2FkRGVsZWdhdGU+IGZyYW1lTG9hZERlbGVnYXRlID0gYWRvcHROUyhbW0NhbmNlbExvYWRG
cm9tUmVzb3VyY2VMb2FkRGVsZWdhdGVGcmFtZUxvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwor
ICAgICAgICB3ZWJWaWV3LmdldCgpLmZyYW1lTG9hZERlbGVnYXRlID0gZnJhbWVMb2FkRGVsZWdh
dGUuZ2V0KCk7CiAKLSAgICBSZXRhaW5QdHI8Q2FuY2VsTG9hZEZyb21SZXNvdXJjZUxvYWREZWxl
Z2F0ZT4gcmVzb3VyY2VMb2FkRGVsZWdhdGUgPSBhZG9wdE5TKFtbQ2FuY2VsTG9hZEZyb21SZXNv
dXJjZUxvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwotICAgIHdlYlZpZXcuZ2V0KCkucmVzb3Vy
Y2VMb2FkRGVsZWdhdGUgPSByZXNvdXJjZUxvYWREZWxlZ2F0ZS5nZXQoKTsKLSAgICBSZXRhaW5Q
dHI8Q2FuY2VsTG9hZEZyb21SZXNvdXJjZUxvYWREZWxlZ2F0ZUZyYW1lTG9hZERlbGVnYXRlPiBm
cmFtZUxvYWREZWxlZ2F0ZSA9IGFkb3B0TlMoW1tDYW5jZWxMb2FkRnJvbVJlc291cmNlTG9hZERl
bGVnYXRlRnJhbWVMb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKLSAgICB3ZWJWaWV3LmdldCgp
LmZyYW1lTG9hZERlbGVnYXRlID0gZnJhbWVMb2FkRGVsZWdhdGUuZ2V0KCk7CisgICAgICAgIFtb
d2ViVmlldy5nZXQoKSBtYWluRnJhbWVdIGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVz
dFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAIkNhbmNlbExv
YWRGcm9tUmVzb3VyY2VMb2FkRGVsZWdhdGUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJl
Y3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXV07CiAKLSAgICBbW3dlYlZpZXcuZ2V0
KCkgbWFpbkZyYW1lXSBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltb
TlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJDYW5jZWxMb2FkRnJvbVJlc291
cmNlTG9hZERlbGVnYXRlIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVz
dFdlYktpdEFQSS5yZXNvdXJjZXMiXV1dOwotCi0gICAgVXRpbDo6cnVuKCZkaWRGaW5pc2hMb2Fk
KTsKLQotICAgIFtwb29sIGRyYWluXTsKKyAgICAgICAgVXRpbDo6cnVuKCZkaWRGaW5pc2hMb2Fk
KTsKKyAgICB9CiAgICAgLy8gSWYgd2UgZmluaXNoZWQgd2l0aG91dCBjcmFzaGluZywgdGhlIHRl
c3QgcGFzc2VkLgogfQogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21h
Yy9DbG9zZU5ld1dpbmRvd0luTmF2aWdhdGlvblBvbGljeURlbGVnYXRlLm1tIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9tYWMvQ2xvc2VOZXdXaW5kb3dJbk5hdmlnYXRpb25Qb2xpY3lEZWxl
Z2F0ZS5tbQppbmRleCA5YjZiMjQxNDU0YTM5NzJiNDlkNjYwNWViOWQxNWFiZTVlMzM5NTJkLi5j
MWRmODJiOGY1MDhiNmQwMjNjYzkzNmNiNThhMDEyNzE4NWZjNGJhIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9DbG9zZU5ld1dpbmRvd0luTmF2aWdhdGlvblBvbGlj
eURlbGVnYXRlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0Nsb3NlTmV3
V2luZG93SW5OYXZpZ2F0aW9uUG9saWN5RGVsZWdhdGUubW0KQEAgLTY5LDE2ICs2OSwxNCBAQCBu
YW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIFRFU1QoV2ViS2l0TGVnYWN5LCBDbG9zZU5ld1dp
bmRvd0luTmF2aWdhdGlvblBvbGljeURlbGVnYXRlKQogewotICAgIE5TQXV0b3JlbGVhc2VQb29s
ICpwb29sID0gW1tOU0F1dG9yZWxlYXNlUG9vbCBhbGxvY10gaW5pdF07CisgICAgQGF1dG9yZWxl
YXNlcG9vbCB7CisgICAgICAgIFJldGFpblB0cjxXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhb
W1dlYlZpZXcgYWxsb2NdIGluaXRdKTsKKyAgICAgICAgd2ViVmlldy5nZXQoKS5wcmVmZXJlbmNl
cy5qYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5ID0gWUVTOworICAgICAgICB3
ZWJWaWV3LmdldCgpLlVJRGVsZWdhdGUgPSBbVGVzdERlbGVnYXRlIHNoYXJlZF07CisgICAgICAg
IFtbd2ViVmlldy5nZXQoKSBtYWluRnJhbWVdIGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVx
dWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAIk9wZW5O
ZXdXaW5kb3ciIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0
QVBJLnJlc291cmNlcyJdXV07CiAKLSAgICBSZXRhaW5QdHI8V2ViVmlldz4gd2ViVmlldyA9IGFk
b3B0TlMoW1tXZWJWaWV3IGFsbG9jXSBpbml0XSk7Ci0gICAgd2ViVmlldy5nZXQoKS5wcmVmZXJl
bmNlcy5qYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5ID0gWUVTOwotICAgIHdl
YlZpZXcuZ2V0KCkuVUlEZWxlZ2F0ZSA9IFtUZXN0RGVsZWdhdGUgc2hhcmVkXTsKLSAgICBbW3dl
YlZpZXcuZ2V0KCkgbWFpbkZyYW1lXSBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RX
aXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJPcGVuTmV3V2lu
ZG93IiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5y
ZXNvdXJjZXMiXV1dOwotICAgIAotICAgIFV0aWw6OnJ1bigmdGVzdEZpbmlzaGVkKTsKLSAgICAK
LSAgICBbcG9vbCBkcmFpbl07CisgICAgICAgIFV0aWw6OnJ1bigmdGVzdEZpbmlzaGVkKTsKKyAg
ICB9CiB9CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9NZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNv
dXJjZUxvYWREZWxlZ2F0ZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL01lbW9y
eUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLm1tCmluZGV4IGQ1NjFkY2I2
NjI5ODdkNTM2ZDdkMzU3NzE3OTVlZGVhYTdmYTQwMzcuLmY1NDVkZTQ0MDY4N2E5MjUzMDk0NmQ1
MjI5OTgwNWIyMGRlNDNiNzUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
bWFjL01lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLm1tCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL01lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJl
c291cmNlTG9hZERlbGVnYXRlLm1tCkBAIC03MiwxOCArNzIsMTYgQEAgbmFtZXNwYWNlIFRlc3RX
ZWJLaXRBUEkgewogCiBURVNUKFdlYktpdExlZ2FjeSwgTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGlu
UmVzb3VyY2VMb2FkRGVsZWdhdGUpCiB7Ci0gICAgTlNBdXRvcmVsZWFzZVBvb2wgKnBvb2wgPSBb
W05TQXV0b3JlbGVhc2VQb29sIGFsbG9jXSBpbml0XTsKKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsK
KyAgICAgICAgUmV0YWluUHRyPFdlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEyMCwgMjAwKSBmcmFtZU5hbWU6
bmlsIGdyb3VwTmFtZTpuaWxdKTsKIAotICAgIFJldGFpblB0cjxXZWJWaWV3PiB3ZWJWaWV3ID0g
YWRvcHROUyhbW1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAx
MjAsIDIwMCkgZnJhbWVOYW1lOm5pbCBncm91cE5hbWU6bmlsXSk7CisgICAgICAgIFJldGFpblB0
cjxNZW1vcnlDYWNoZURpc2FibGVUZXN0UmVzb3VyY2VMb2FkRGVsZWdhdGU+IHJlc291cmNlTG9h
ZERlbGVnYXRlID0gYWRvcHROUyhbW01lbW9yeUNhY2hlRGlzYWJsZVRlc3RSZXNvdXJjZUxvYWRE
ZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgICAgICB3ZWJWaWV3LmdldCgpLnJlc291cmNlTG9h
ZERlbGVnYXRlID0gcmVzb3VyY2VMb2FkRGVsZWdhdGUuZ2V0KCk7CiAKLSAgICBSZXRhaW5QdHI8
TWVtb3J5Q2FjaGVEaXNhYmxlVGVzdFJlc291cmNlTG9hZERlbGVnYXRlPiByZXNvdXJjZUxvYWRE
ZWxlZ2F0ZSA9IGFkb3B0TlMoW1tNZW1vcnlDYWNoZURpc2FibGVUZXN0UmVzb3VyY2VMb2FkRGVs
ZWdhdGUgYWxsb2NdIGluaXRdKTsKLSAgICB3ZWJWaWV3LmdldCgpLnJlc291cmNlTG9hZERlbGVn
YXRlID0gcmVzb3VyY2VMb2FkRGVsZWdhdGUuZ2V0KCk7CisgICAgICAgIFtbd2ViVmlldy5nZXQo
KSBtYWluRnJhbWVdIGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tO
U0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAIk1lbW9yeUNhY2hlRGlzYWJsZVdp
dGhpblJlc291cmNlTG9hZERlbGVnYXRlIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0
b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV1dOwogCi0gICAgW1t3ZWJWaWV3LmdldCgp
IG1haW5GcmFtZV0gbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05T
QnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAiTWVtb3J5Q2FjaGVEaXNhYmxlV2l0
aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rv
cnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXV07Ci0KLSAgICBVdGlsOjpydW4oJmRpZEZp
bmlzaExvYWQpOwotICAgIAotICAgIFtwb29sIGRyYWluXTsKKyAgICAgICAgVXRpbDo6cnVuKCZk
aWRGaW5pc2hMb2FkKTsKKyAgICB9CiAgICAgLy8gSWYgd2UgZmluaXNoZWQgd2l0aG91dCBjcmFz
aGluZywgdGhlIHRlc3QgcGFzc2VkLgogfQogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL21hYy9NZW1vcnlDYWNoZVBydW5lV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUu
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9NZW1vcnlDYWNoZVBydW5lV2l0aGlu
UmVzb3VyY2VMb2FkRGVsZWdhdGUubW0KaW5kZXggNzVjNmZhM2U4MDQ5MjExZTJlNzBjNTNkYzJh
Y2I3Njc3YmUxOWMwOS4uMDFlNzQ0ZjQ4YjA0YWFhY2ViNjQ3YjhmMTJiNjk2MjU2ZDVlNTMzZSAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTWVtb3J5Q2FjaGVQcnVu
ZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvbWFjL01lbW9yeUNhY2hlUHJ1bmVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbQpA
QCAtNzcsMjMgKzc3LDIxIEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogVEVTVChXZWJL
aXRMZWdhY3ksIERJU0FCTEVEX01lbW9yeUNhY2hlUHJ1bmVXaXRoaW5SZXNvdXJjZUxvYWREZWxl
Z2F0ZSkKIHsKLSAgICBOU0F1dG9yZWxlYXNlUG9vbCAqcG9vbCA9IFtbTlNBdXRvcmVsZWFzZVBv
b2wgYWxsb2NdIGluaXRdOworICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBSZXRhaW5Q
dHI8V2ViVmlldz4gd2ViVmlldzEgPSBhZG9wdE5TKFtbV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpOU01ha2VSZWN0KDAsIDAsIDEyMCwgMjAwKSBmcmFtZU5hbWU6bmlsIGdyb3VwTmFtZTpu
aWxdKTsKKyAgICAgICAgUmV0YWluUHRyPFdlYlZpZXc+IHdlYlZpZXcyID0gYWRvcHROUyhbW1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAxMjAsIDIwMCkgZnJh
bWVOYW1lOm5pbCBncm91cE5hbWU6bmlsXSk7CiAKLSAgICBSZXRhaW5QdHI8V2ViVmlldz4gd2Vi
VmlldzEgPSBhZG9wdE5TKFtbV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0
KDAsIDAsIDEyMCwgMjAwKSBmcmFtZU5hbWU6bmlsIGdyb3VwTmFtZTpuaWxdKTsKLSAgICBSZXRh
aW5QdHI8V2ViVmlldz4gd2ViVmlldzIgPSBhZG9wdE5TKFtbV2ViVmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEyMCwgMjAwKSBmcmFtZU5hbWU6bmlsIGdyb3VwTmFt
ZTpuaWxdKTsKKyAgICAgICAgTlNXaW5kb3cqIHdpbmRvdyA9IFtbTlNXaW5kb3cgYWxsb2NdIGlu
aXRXaXRoQ29udGVudFJlY3Q6d2ViVmlldzIuZ2V0KCkuZnJhbWUgc3R5bGVNYXNrOk5TQm9yZGVy
bGVzc1dpbmRvd01hc2sgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOllFU107
CisgICAgICAgIFt3aW5kb3cuY29udGVudFZpZXcgYWRkU3Vidmlldzp3ZWJWaWV3Mi5nZXQoKV07
CiAKLSAgICBOU1dpbmRvdyogd2luZG93ID0gW1tOU1dpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250
ZW50UmVjdDp3ZWJWaWV3Mi5nZXQoKS5mcmFtZSBzdHlsZU1hc2s6TlNCb3JkZXJsZXNzV2luZG93
TWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6WUVTXTsKLSAgICBbd2lu
ZG93LmNvbnRlbnRWaWV3IGFkZFN1YnZpZXc6d2ViVmlldzIuZ2V0KCldOworICAgICAgICBSZXRh
aW5QdHI8TWVtb3J5Q2FjaGVQcnVuZVRlc3RSZXNvdXJjZUxvYWREZWxlZ2F0ZT4gcmVzb3VyY2VM
b2FkRGVsZWdhdGUgPSBhZG9wdE5TKFtbTWVtb3J5Q2FjaGVQcnVuZVRlc3RSZXNvdXJjZUxvYWRE
ZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgICAgICByZXNvdXJjZUxvYWREZWxlZ2F0ZS5nZXQo
KS0+X3dpbmRvdyA9IHdpbmRvdzsKKyAgICAgICAgd2ViVmlldzEuZ2V0KCkucmVzb3VyY2VMb2Fk
RGVsZWdhdGUgPSByZXNvdXJjZUxvYWREZWxlZ2F0ZS5nZXQoKTsKIAotICAgIFJldGFpblB0cjxN
ZW1vcnlDYWNoZVBydW5lVGVzdFJlc291cmNlTG9hZERlbGVnYXRlPiByZXNvdXJjZUxvYWREZWxl
Z2F0ZSA9IGFkb3B0TlMoW1tNZW1vcnlDYWNoZVBydW5lVGVzdFJlc291cmNlTG9hZERlbGVnYXRl
IGFsbG9jXSBpbml0XSk7Ci0gICAgcmVzb3VyY2VMb2FkRGVsZWdhdGUuZ2V0KCktPl93aW5kb3cg
PSB3aW5kb3c7Ci0gICAgd2ViVmlldzEuZ2V0KCkucmVzb3VyY2VMb2FkRGVsZWdhdGUgPSByZXNv
dXJjZUxvYWREZWxlZ2F0ZS5nZXQoKTsKKyAgICAgICAgW1t3ZWJWaWV3MS5nZXQoKSBtYWluRnJh
bWVdIGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBt
YWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAIk1lbW9yeUNhY2hlUHJ1bmVXaXRoaW5SZXNvdXJj
ZUxvYWREZWxlZ2F0ZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RX
ZWJLaXRBUEkucmVzb3VyY2VzIl1dXTsKIAotICAgIFtbd2ViVmlldzEuZ2V0KCkgbWFpbkZyYW1l
XSBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFp
bkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJNZW1vcnlDYWNoZVBydW5lV2l0aGluUmVzb3VyY2VM
b2FkRGVsZWdhdGUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2Vi
S2l0QVBJLnJlc291cmNlcyJdXV07Ci0KLSAgICBVdGlsOjpydW4oJmRpZEZpbmlzaExvYWQpOwot
ICAgIAotICAgIFtwb29sIGRyYWluXTsKKyAgICAgICAgVXRpbDo6cnVuKCZkaWRGaW5pc2hMb2Fk
KTsKKyAgICB9CiAgICAgLy8gSWYgd2UgZmluaXNoZWQgd2l0aG91dCBjcmFzaGluZywgdGhlIHRl
c3QgcGFzc2VkLgogfQogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21h
Yy9TdG9wTG9hZGluZ0Zyb21EaWRSZWNlaXZlUmVzcG9uc2UubW0gYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL21hYy9TdG9wTG9hZGluZ0Zyb21EaWRSZWNlaXZlUmVzcG9uc2UubW0KaW5kZXgg
MTM2OTZkNmE4ZTE1NTY0ZTY2ZWE0NTFmMGMwZDU4MWNkZWE1MjBhZi4uMGU4MjVjNjFmMzJlZmE1
ZGQ5N2M4MWZiYTllMzc3M2NkYzU1NTRmMCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9tYWMvU3RvcExvYWRpbmdGcm9tRGlkUmVjZWl2ZVJlc3BvbnNlLm1tCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1N0b3BMb2FkaW5nRnJvbURpZFJlY2VpdmVSZXNw
b25zZS5tbQpAQCAtNTUsMTggKzU1LDE2IEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAog
VEVTVChXZWJLaXRMZWdhY3ksIFN0b3BMb2FkaW5nRnJvbURpZFJlY2VpdmVSZXNwb25zZSkKIHsK
LSAgICBOU0F1dG9yZWxlYXNlUG9vbCAqcG9vbCA9IFtbTlNBdXRvcmVsZWFzZVBvb2wgYWxsb2Nd
IGluaXRdOworICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBSZXRhaW5QdHI8V2ViVmll
dz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFr
ZVJlY3QoMCwgMCwgMTIwLCAyMDApIGZyYW1lTmFtZTpuaWwgZ3JvdXBOYW1lOm5pbF0pOwogCi0g
ICAgUmV0YWluUHRyPFdlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEyMCwgMjAwKSBmcmFtZU5hbWU6bmlsIGdy
b3VwTmFtZTpuaWxdKTsKKyAgICAgICAgUmV0YWluUHRyPFN0b3BMb2FkaW5nRnJvbURpZFJlY2Vp
dmVSZXNwb25zZT4gcmVzb3VyY2VMb2FkRGVsZWdhdGUgPSBhZG9wdE5TKFtbU3RvcExvYWRpbmdG
cm9tRGlkUmVjZWl2ZVJlc3BvbnNlIGFsbG9jXSBpbml0XSk7CisgICAgICAgIHdlYlZpZXcuZ2V0
KCkucmVzb3VyY2VMb2FkRGVsZWdhdGUgPSByZXNvdXJjZUxvYWREZWxlZ2F0ZS5nZXQoKTsKIAot
ICAgIFJldGFpblB0cjxTdG9wTG9hZGluZ0Zyb21EaWRSZWNlaXZlUmVzcG9uc2U+IHJlc291cmNl
TG9hZERlbGVnYXRlID0gYWRvcHROUyhbW1N0b3BMb2FkaW5nRnJvbURpZFJlY2VpdmVSZXNwb25z
ZSBhbGxvY10gaW5pdF0pOwotICAgIHdlYlZpZXcuZ2V0KCkucmVzb3VyY2VMb2FkRGVsZWdhdGUg
PSByZXNvdXJjZUxvYWREZWxlZ2F0ZS5nZXQoKTsKKyAgICAgICAgW1t3ZWJWaWV3LmdldCgpIG1h
aW5GcmFtZV0gbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVu
ZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAiU3RvcExvYWRpbmdGcm9tRGlkUmVjZWl2
ZVJlc3BvbnNlIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktp
dEFQSS5yZXNvdXJjZXMiXV1dOwogCi0gICAgW1t3ZWJWaWV3LmdldCgpIG1haW5GcmFtZV0gbG9h
ZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5k
bGVdIFVSTEZvclJlc291cmNlOkAiU3RvcExvYWRpbmdGcm9tRGlkUmVjZWl2ZVJlc3BvbnNlIiB3
aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJj
ZXMiXV1dOwotCi0gICAgVXRpbDo6cnVuKCZkaWRGaW5pc2hMb2FkKTsKLSAgICAKLSAgICBbcG9v
bCBkcmFpbl07CisgICAgICAgIFV0aWw6OnJ1bigmZGlkRmluaXNoTG9hZCk7CisgICAgfQogICAg
IC8vIElmIHdlIGZpbmlzaGVkIHdpdGhvdXQgY3Jhc2hpbmcsIHRoZSB0ZXN0IHBhc3NlZC4KIH0K
IApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvV2luZG93bGVzc1dl
YlZpZXdXaXRoTWVkaWEubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9XaW5kb3ds
ZXNzV2ViVmlld1dpdGhNZWRpYS5tbQppbmRleCAwMGViNzU2MzBlMTc1NzczMjk4ZTdkOGNhNmJj
ZWFlNGM0MmE4OGM5Li44ZmIxZGJiMjllM2E3N2VmMjQ5YjVhNGZiYWJjNGE3ZmIyNWNhMThkIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9XaW5kb3dsZXNzV2ViVmll
d1dpdGhNZWRpYS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9XaW5kb3ds
ZXNzV2ViVmlld1dpdGhNZWRpYS5tbQpAQCAtNjMsMjQgKzYzLDIyIEBAIHN0YXRpYyB2b2lkIHNw
aW5Mb29wKE5TVGltZUludGVydmFsIHRpbWVvdXQsIEJPT0wgKF5ibG9jaykoKSkKIAogVEVTVChX
ZWJLaXRMZWdhY3ksIFdpbmRvd2xlc3NXZWJWaWV3V2l0aE1lZGlhKQogewotICAgIE5TQXV0b3Jl
bGVhc2VQb29sICpwb29sID0gW1tOU0F1dG9yZWxlYXNlUG9vbCBhbGxvY10gaW5pdF07CisgICAg
QGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTIwLCAyMDApIGZyYW1l
TmFtZTpuaWwgZ3JvdXBOYW1lOm5pbF0pOworICAgICAgICBhdXRvIHRlc3RDb250cm9sbGVyID0g
YWRvcHROUyhbV2luZG93bGVzc1dlYlZpZXdXaXRoTWVkaWFGcmFtZUxvYWREZWxlZ2F0ZSBuZXdd
KTsKKyAgICAgICAgd2ViVmlldy5nZXQoKS5mcmFtZUxvYWREZWxlZ2F0ZSA9IHRlc3RDb250cm9s
bGVyLmdldCgpOworICAgICAgICBbW3dlYlZpZXcuZ2V0KCkgbWFpbkZyYW1lXSBsb2FkUmVxdWVz
dDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJM
Rm9yUmVzb3VyY2U6QCJXaW5kb3dsZXNzV2ViVmlld1dpdGhNZWRpYSIgd2l0aEV4dGVuc2lvbjpA
Imh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dXTsKIAotICAg
IFJldGFpblB0cjxXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAxMjAsIDIwMCkgZnJhbWVOYW1lOm5pbCBncm91
cE5hbWU6bmlsXSk7Ci0gICAgUmV0YWluUHRyPFdpbmRvd2xlc3NXZWJWaWV3V2l0aE1lZGlhRnJh
bWVMb2FkRGVsZWdhdGU+IHRlc3RDb250cm9sbGVyID0gYWRvcHROUyhbV2luZG93bGVzc1dlYlZp
ZXdXaXRoTWVkaWFGcmFtZUxvYWREZWxlZ2F0ZSBuZXddKTsKLSAgICB3ZWJWaWV3LmdldCgpLmZy
YW1lTG9hZERlbGVnYXRlID0gdGVzdENvbnRyb2xsZXIuZ2V0KCk7Ci0gICAgW1t3ZWJWaWV3Lmdl
dCgpIG1haW5GcmFtZV0gbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpb
W05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAiV2luZG93bGVzc1dlYlZpZXdX
aXRoTWVkaWEiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0
QVBJLnJlc291cmNlcyJdXV07CisgICAgICAgIEVYUEVDVF9FUShuaWwsIFt3ZWJWaWV3LmdldCgp
IHdpbmRvd10pOwogCi0gICAgRVhQRUNUX0VRKG5pbCwgW3dlYlZpZXcuZ2V0KCkgd2luZG93XSk7
CisgICAgICAgIFV0aWw6OnJ1bigmZGlkRmluaXNoTG9hZCk7CiAKLSAgICBVdGlsOjpydW4oJmRp
ZEZpbmlzaExvYWQpOyAgICAKKyAgICAgICAgc3Bpbkxvb3AoMC4yNSwgXnsKKyAgICAgICAgICAg
IHJldHVybiBbW3dlYlZpZXcuZ2V0KCkgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZyb21T
dHJpbmc6QCJ3aW5kb3cuZGlkVHJpZ2dlckxvYWQiXSBpc0VxdWFsVG9TdHJpbmc6QCJ0cnVlIl07
CisgICAgICAgIH0pOwogCi0gICAgc3Bpbkxvb3AoMC4yNSwgXnsKLSAgICAgICAgcmV0dXJuIFtb
d2ViVmlldy5nZXQoKSBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmluZzpAIndp
bmRvdy5kaWRUcmlnZ2VyTG9hZCJdIGlzRXF1YWxUb1N0cmluZzpAInRydWUiXTsKLSAgICB9KTsK
LQotICAgIEVYUEVDVF9KU19FUSh3ZWJWaWV3LmdldCgpLCAid2luZG93LmRpZFRyaWdnZXJMb2Fk
IiwgInRydWUiKTsKLQotICAgIFtwb29sIGRyYWluXTsKKyAgICAgICAgRVhQRUNUX0pTX0VRKHdl
YlZpZXcuZ2V0KCksICJ3aW5kb3cuZGlkVHJpZ2dlckxvYWQiLCAidHJ1ZSIpOworICAgIH0KIH0K
IAogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9pb3MvbWFpbklPUy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL21haW5JT1Mu
bW0KaW5kZXggNGU2NzIwM2ZmMDY2YTg1NTE2YzYxYzY3YTUyMzJmNDc0OTk5M2NlMS4uMjM4OTEy
MzdlY2M2ZGE2YTBmOTgxYzM5OWZkZjQyNjdkZTY1OTkzYyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9pb3MvbWFpbklPUy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9t
YWluSU9TLm1tCkBAIC0zMCwyNCArMzAsMjMgQEAKIAogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIq
KiBhcmd2KQogewotICAgIE5TQXV0b3JlbGVhc2VQb29sICpwb29sID0gW1tOU0F1dG9yZWxlYXNl
UG9vbCBhbGxvY10gaW5pdF07CisgICAgYm9vbCBwYXNzZWQgPSBmYWxzZTsKKyAgICBAYXV0b3Jl
bGVhc2Vwb29sIHsKKyAgICAgICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0
c10gcmVtb3ZlUGVyc2lzdGVudERvbWFpbkZvck5hbWU6QCJUZXN0V2ViS2l0QVBJIl07CiAKLSAg
ICBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSByZW1vdmVQZXJzaXN0ZW50
RG9tYWluRm9yTmFtZTpAIlRlc3RXZWJLaXRBUEkiXTsKKyAgICAgICAgLy8gU2V0IHVwIHVzZXIg
ZGVmYXVsdHMuCisgICAgICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKmFyZ3VtZW50RG9tYWluID0g
W1tbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHZvbGF0aWxlRG9tYWluRm9y
TmFtZTpOU0FyZ3VtZW50RG9tYWluXSBtdXRhYmxlQ29weV07CisgICAgICAgIGlmICghYXJndW1l
bnREb21haW4pCisgICAgICAgICAgICBhcmd1bWVudERvbWFpbiA9IFtbTlNNdXRhYmxlRGljdGlv
bmFyeSBhbGxvY10gaW5pdF07CiAKLSAgICAvLyBTZXQgdXAgdXNlciBkZWZhdWx0cy4KLSAgICBO
U011dGFibGVEaWN0aW9uYXJ5ICphcmd1bWVudERvbWFpbiA9IFtbW05TVXNlckRlZmF1bHRzIHN0
YW5kYXJkVXNlckRlZmF1bHRzXSB2b2xhdGlsZURvbWFpbkZvck5hbWU6TlNBcmd1bWVudERvbWFp
bl0gbXV0YWJsZUNvcHldOwotICAgIGlmICghYXJndW1lbnREb21haW4pCi0gICAgICAgIGFyZ3Vt
ZW50RG9tYWluID0gW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XTsKLQotICAgIFtb
TlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHNldFZvbGF0aWxlRG9tYWluOmFy
Z3VtZW50RG9tYWluIGZvck5hbWU6TlNBcmd1bWVudERvbWFpbl07CisgICAgICAgIFtbTlNVc2Vy
RGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHNldFZvbGF0aWxlRG9tYWluOmFyZ3VtZW50
RG9tYWluIGZvck5hbWU6TlNBcmd1bWVudERvbWFpbl07CiAKICNpZm5kZWYgQlVJTERJTkdfVEVT
VF9XVEYKLSAgICBbV0tQcm9jZXNzUG9vbCBfc2V0TGlua2VkT25PckFmdGVyRXZlcnl0aGluZ0Zv
clRlc3RpbmddOworICAgICAgICBbV0tQcm9jZXNzUG9vbCBfc2V0TGlua2VkT25PckFmdGVyRXZl
cnl0aGluZ0ZvclRlc3RpbmddOwogI2VuZGlmCiAKLSAgICBib29sIHBhc3NlZCA9IFRlc3RXZWJL
aXRBUEk6OlRlc3RzQ29udHJvbGxlcjo6c2luZ2xldG9uKCkucnVuKGFyZ2MsIGFyZ3YpOwotCi0g
ICAgW3Bvb2wgZHJhaW5dOworICAgICAgICBwYXNzZWQgPSBUZXN0V2ViS2l0QVBJOjpUZXN0c0Nv
bnRyb2xsZXI6OnNpbmdsZXRvbigpLnJ1bihhcmdjLCBhcmd2KTsKKyAgICB9CiAKICAgICByZXR1
cm4gcGFzc2VkID8gRVhJVF9TVUNDRVNTIDogRVhJVF9GQUlMVVJFOwogfQpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvbWFpbk1hYy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
bWFjL21haW5NYWMubW0KaW5kZXggZTQ4NGUxNWMyMzYyNmRiM2NkZmM5ZjcyNWY3NTM1MDI5ODU2
ODMwZS4uZDlkNmM2MThjMjIyMzU0YjllYTVmODQ0ODI2NzUwYmM1MTIyODdhZiAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvbWFpbk1hYy5tbQorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL21hYy9tYWluTWFjLm1tCkBAIC0zMiwzOCArMzIsMzcgQEAgZXh0ZXJuICJDIiB2b2lk
IF9CZWdpbkV2ZW50UmVjZWlwdE9uVGhyZWFkKHZvaWQpOwogCiBpbnQgbWFpbihpbnQgYXJnYywg
Y2hhcioqIGFyZ3YpCiB7Ci0gICAgTlNBdXRvcmVsZWFzZVBvb2wgKnBvb2wgPSBbW05TQXV0b3Jl
bGVhc2VQb29sIGFsbG9jXSBpbml0XTsKKyAgICBib29sIHBhc3NlZCA9IGZhbHNlOworICAgIEBh
dXRvcmVsZWFzZXBvb2wgeworICAgICAgICBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRl
ZmF1bHRzXSByZW1vdmVQZXJzaXN0ZW50RG9tYWluRm9yTmFtZTpAIlRlc3RXZWJLaXRBUEkiXTsK
IAotICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHJlbW92ZVBlcnNp
c3RlbnREb21haW5Gb3JOYW1lOkAiVGVzdFdlYktpdEFQSSJdOworICAgICAgICAvLyBTZXQgYSB1
c2VyIGRlZmF1bHQgZm9yIFRlc3RXZWJLaXRBUEkgdG8gYnlwYXNzIGFsbCBsaW5rZWQtb24tb3It
YWZ0ZXIgY2hlY2tzIGluIFdlYktpdAorICAgICAgICBOU011dGFibGVEaWN0aW9uYXJ5ICphcmd1
bWVudERvbWFpbiA9IFtbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSB2b2xh
dGlsZURvbWFpbkZvck5hbWU6TlNBcmd1bWVudERvbWFpbl0gbXV0YWJsZUNvcHldOworICAgICAg
ICBpZiAoIWFyZ3VtZW50RG9tYWluKQorICAgICAgICAgICAgYXJndW1lbnREb21haW4gPSBbW05T
TXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdOwogCi0gICAgLy8gU2V0IGEgdXNlciBkZWZh
dWx0IGZvciBUZXN0V2ViS2l0QVBJIHRvIGJ5cGFzcyBhbGwgbGlua2VkLW9uLW9yLWFmdGVyIGNo
ZWNrcyBpbiBXZWJLaXQKLSAgICBOU011dGFibGVEaWN0aW9uYXJ5ICphcmd1bWVudERvbWFpbiA9
IFtbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSB2b2xhdGlsZURvbWFpbkZv
ck5hbWU6TlNBcmd1bWVudERvbWFpbl0gbXV0YWJsZUNvcHldOwotICAgIGlmICghYXJndW1lbnRE
b21haW4pCi0gICAgICAgIGFyZ3VtZW50RG9tYWluID0gW1tOU011dGFibGVEaWN0aW9uYXJ5IGFs
bG9jXSBpbml0XTsKKyAgICAgICAgLy8gQ0FVVElPTjogRGVmYXVsdHMgc2V0IGhlcmUgYXJlIG5v
dCBhdXRvbWF0aWNhbGx5IHByb3BhZ2F0ZWQgdG8gdGhlCisgICAgICAgIC8vIFdlYiBDb250ZW50
IHByb2Nlc3MuIFRob3NlIGxpc3RlZCBiZWxvdyBhcmUgcHJvcGFnYXRlZCBtYW51YWxseS4KKyAg
ICAgICAgTlNEaWN0aW9uYXJ5ICpkaWN0ID0gQHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgc3dpdGNoIHRoZXNlIGRlZmF1bHRzIHRvIHVzZSBvdmVybGF5CisgICAgICAgICAgICAv
LyBzY3JvbGxiYXJzLCBzaW5jZSB0aGV5IGFyZSB0aGUgZGVmYXVsdCBvbiB0aGUgcGxhdGZvcm0s
CisgICAgICAgICAgICAvLyBidXQgYSB2YXJpZXR5IG9mIHRlc3RzIHdpbGwgbmVlZCBjaGFuZ2Vz
LgorICAgICAgICAgICAgQCJOU092ZXJsYXlTY3JvbGxlcnNFbmFibGVkIjogQE5PLAorICAgICAg
ICAgICAgQCJBcHBsZVNob3dTY3JvbGxCYXJzIjogQCJBbHdheXMiLAorICAgICAgICB9OwogCi0g
ICAgLy8gQ0FVVElPTjogRGVmYXVsdHMgc2V0IGhlcmUgYXJlIG5vdCBhdXRvbWF0aWNhbGx5IHBy
b3BhZ2F0ZWQgdG8gdGhlCi0gICAgLy8gV2ViIENvbnRlbnQgcHJvY2Vzcy4gVGhvc2UgbGlzdGVk
IGJlbG93IGFyZSBwcm9wYWdhdGVkIG1hbnVhbGx5LgotICAgIE5TRGljdGlvbmFyeSAqZGljdCA9
IEB7Ci0gICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgc3dpdGNoIHRoZXNlIGRlZmF1bHRzIHRv
IHVzZSBvdmVybGF5Ci0gICAgICAgIC8vIHNjcm9sbGJhcnMsIHNpbmNlIHRoZXkgYXJlIHRoZSBk
ZWZhdWx0IG9uIHRoZSBwbGF0Zm9ybSwKLSAgICAgICAgLy8gYnV0IGEgdmFyaWV0eSBvZiB0ZXN0
cyB3aWxsIG5lZWQgY2hhbmdlcy4KLSAgICAgICAgQCJOU092ZXJsYXlTY3JvbGxlcnNFbmFibGVk
IjogQE5PLAotICAgICAgICBAIkFwcGxlU2hvd1Njcm9sbEJhcnMiOiBAIkFsd2F5cyIsCi0gICAg
fTsKLQotICAgIFthcmd1bWVudERvbWFpbiBhZGRFbnRyaWVzRnJvbURpY3Rpb25hcnk6ZGljdF07
Ci0gICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gc2V0Vm9sYXRpbGVE
b21haW46YXJndW1lbnREb21haW4gZm9yTmFtZTpOU0FyZ3VtZW50RG9tYWluXTsKKyAgICAgICAg
W2FyZ3VtZW50RG9tYWluIGFkZEVudHJpZXNGcm9tRGljdGlvbmFyeTpkaWN0XTsKKyAgICAgICAg
W1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gc2V0Vm9sYXRpbGVEb21haW46
YXJndW1lbnREb21haW4gZm9yTmFtZTpOU0FyZ3VtZW50RG9tYWluXTsKIAogI2lmbmRlZiBCVUlM
RElOR19URVNUX1dURgotICAgIFtXS1Byb2Nlc3NQb29sIF9zZXRMaW5rZWRPbk9yQWZ0ZXJFdmVy
eXRoaW5nRm9yVGVzdGluZ107CisgICAgICAgIFtXS1Byb2Nlc3NQb29sIF9zZXRMaW5rZWRPbk9y
QWZ0ZXJFdmVyeXRoaW5nRm9yVGVzdGluZ107CiAjZW5kaWYKIAotICAgIFtOU0FwcGxpY2F0aW9u
IHNoYXJlZEFwcGxpY2F0aW9uXTsKLSAgICBfQmVnaW5FdmVudFJlY2VpcHRPblRocmVhZCgpOyAv
LyBNYWtlcyB3aW5kb3cgdmlzaWJpbGl0eSBub3RpZmljYXRpb25zIHdvcmsgKGFuZCBwb3NzaWJs
eSBtb3JlKS4KLQotICAgIGJvb2wgcGFzc2VkID0gVGVzdFdlYktpdEFQSTo6VGVzdHNDb250cm9s
bGVyOjpzaW5nbGV0b24oKS5ydW4oYXJnYywgYXJndik7CisgICAgICAgIFtOU0FwcGxpY2F0aW9u
IHNoYXJlZEFwcGxpY2F0aW9uXTsKKyAgICAgICAgX0JlZ2luRXZlbnRSZWNlaXB0T25UaHJlYWQo
KTsgLy8gTWFrZXMgd2luZG93IHZpc2liaWxpdHkgbm90aWZpY2F0aW9ucyB3b3JrIChhbmQgcG9z
c2libHkgbW9yZSkuCiAKLSAgICBbcG9vbCBkcmFpbl07CisgICAgICAgIHBhc3NlZCA9IFRlc3RX
ZWJLaXRBUEk6OlRlc3RzQ29udHJvbGxlcjo6c2luZ2xldG9uKCkucnVuKGFyZ2MsIGFyZ3YpOwor
ICAgIH0KIAogICAgIHJldHVybiBwYXNzZWQgPyBFWElUX1NVQ0NFU1MgOiBFWElUX0ZBSUxVUkU7
CiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>